gherkin-ai 2.4.0 → 2.5.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 +5 -4
- package/dist/commands/autopilot.d.ts.map +1 -1
- package/dist/commands/autopilot.js +38 -3
- package/dist/commands/autopilot.js.map +1 -1
- package/dist/commands/diff.d.ts +16 -0
- package/dist/commands/diff.d.ts.map +1 -1
- package/dist/commands/diff.js +24 -2
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/generate.d.ts +1 -0
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +20 -12
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/quality.d.ts.map +1 -1
- package/dist/commands/quality.js +3 -1
- package/dist/commands/quality.js.map +1 -1
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +3 -0
- package/dist/commands/verify.js.map +1 -1
- package/dist/core/config.d.ts +2 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +3 -1
- package/dist/core/config.js.map +1 -1
- package/dist/core/error-parser.d.ts +3 -1
- package/dist/core/error-parser.d.ts.map +1 -1
- package/dist/core/error-parser.js +8 -2
- package/dist/core/error-parser.js.map +1 -1
- package/dist/core/execution-sandbox.d.ts +1 -0
- package/dist/core/execution-sandbox.d.ts.map +1 -1
- package/dist/core/execution-sandbox.js +1 -1
- package/dist/core/execution-sandbox.js.map +1 -1
- package/dist/core/quality-score.d.ts +1 -1
- package/dist/core/quality-score.d.ts.map +1 -1
- package/dist/core/quality-score.js +9 -4
- package/dist/core/quality-score.js.map +1 -1
- package/dist/core/requirement-validator.d.ts +12 -0
- package/dist/core/requirement-validator.d.ts.map +1 -0
- package/dist/core/requirement-validator.js +29 -0
- package/dist/core/requirement-validator.js.map +1 -0
- package/dist/generators/fixtures.d.ts.map +1 -1
- package/dist/generators/fixtures.js +22 -27
- package/dist/generators/fixtures.js.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/ui/server.d.ts.map +1 -1
- package/dist/ui/server.js +43 -8
- package/dist/ui/server.js.map +1 -1
- package/dist/utils/logger.d.ts +10 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +26 -4
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/spec-dir-resolver.d.ts +6 -0
- package/dist/utils/spec-dir-resolver.d.ts.map +1 -0
- package/dist/utils/spec-dir-resolver.js +31 -0
- package/dist/utils/spec-dir-resolver.js.map +1 -0
- package/dist/utils/workspace-detector.d.ts +4 -1
- package/dist/utils/workspace-detector.d.ts.map +1 -1
- package/dist/utils/workspace-detector.js +14 -1
- package/dist/utils/workspace-detector.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
## 🌟 Strategic Capabilities (`v2.
|
|
11
|
+
## 🌟 Strategic Capabilities (`v2.5.0`)
|
|
12
12
|
|
|
13
13
|
While basic AI spec tools only generate text prompts, `gherkin-ai` acts as an **executable contract and verification harness** between Product Intent, AI Agents (Cursor, Claude Code, Windsurf, Antigravity), Code Implementation, and CI/CD Quality Gates:
|
|
14
14
|
|
|
@@ -17,7 +17,8 @@ While basic AI spec tools only generate text prompts, `gherkin-ai` acts as an **
|
|
|
17
17
|
- 🌳 **Official Cucumber AST Parser**: 100% compliant with the Gherkin standard using the official `@cucumber/gherkin` package. Flawlessly parses DataTables, DocStrings, and advanced scenarios for semantic extraction.
|
|
18
18
|
- 🔗 **AST Step Definitions Indexer**: Prevents AI hallucinations by statically analyzing your E2E project (Cypress/Playwright/Cucumber-JS) via `ts-morph`, extracting existing `Given/When/Then` steps, and forcing the LLM to reuse them.
|
|
19
19
|
- 🛡️ **Semantically Typed Contracts**: Extracts variables straight from your Gherkin data tables (like `@validate:email`) and outputs strictly typed Zod DTOs instead of generic objects.
|
|
20
|
-
- ⚙️ **Headless CI/CD Mode**: Fully decoupled non-interactive mode (
|
|
20
|
+
- ⚙️ **Headless CI/CD Mode**: Fully decoupled non-interactive mode (`--yes`, `--non-interactive`, `--project <dir>`) designed for frictionless integration into GitHub Actions, Azure DevOps, and automated pipelines.
|
|
21
|
+
- 📋 **Pre-flight Requirement Validation**: Built-in semantic validator inside `ghk autopilot` that analyzes requirements before triggering LLM agents, preventing token waste on vague features.
|
|
21
22
|
- 🔌 **Native MCP Server & Cursor Skills (`ghk mcp install` & `ghk skill`)**: Zero-config Model Context Protocol (MCP) server. The new `ghk skill` command injects native Cursor and Windsurf `.cursorrules` to let your IDE automatically invoke Gherkin AI as an internal skill.
|
|
22
23
|
- 📦 **Context Engineering & Guardrails Engine (`ghk context`)**: Structurally packages project architecture, conventions, and security policies into `.ghe/`, enforcing strict path protection and agent change limits.
|
|
23
24
|
- 🏗️ **DOM & Data Model Anchor**: Automatically extracts `schema.prisma` models and Page Object Model (POM) `data-test` selectors, injecting them into the agent's context to ensure generated tests are grounded in technical reality.
|
|
@@ -25,11 +26,11 @@ While basic AI spec tools only generate text prompts, `gherkin-ai` acts as an **
|
|
|
25
26
|
- ☕ **Enterprise Java, React, Rust & Go Templates**: Extensive boilerplate support. Scaffolds Spring Boot, Next.js, Rust Axum, Go Fiber, and mobile (Flutter/React Native) architectures out-of-the-box.
|
|
26
27
|
- 🕵️ **Interactive Stack & Pattern Detection (`ghk detect`)**: Auto-detects existing brownfield architectures and intelligently injects industry-standard design patterns (e.g., Hooks, CQRS, MVC) into Agent prompts.
|
|
27
28
|
- 📡 **Event-Driven & AsyncAPI Support**: Automatically extracts domain events from Gherkin and scaffolds standard `asyncapi.json` contracts.
|
|
28
|
-
- 🔍 **
|
|
29
|
+
- 🔍 **Deep AST Drift Detection (`ghk diff`)**: Validates in CI/CD pipelines if the implemented DTOs and code have drifted from the `.feature` file. Now cross-references semantic fields, HTTP status codes, and API Endpoints.
|
|
29
30
|
|
|
30
31
|
---
|
|
31
32
|
|
|
32
|
-
## 📥 Installation & Execution (`v2.
|
|
33
|
+
## 📥 Installation & Execution (`v2.5.0`)
|
|
33
34
|
|
|
34
35
|
You can use `gherkin-ai` via global `npm` installation, on-demand zero-install `npx`, or as a project local dev dependency:
|
|
35
36
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autopilot.d.ts","sourceRoot":"","sources":["../../src/commands/autopilot.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"autopilot.d.ts","sourceRoot":"","sources":["../../src/commands/autopilot.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAsB,sBAAsB,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuG1F"}
|
|
@@ -14,10 +14,32 @@ const context_builder_1 = require("../core/context-builder");
|
|
|
14
14
|
const quality_score_1 = require("../core/quality-score");
|
|
15
15
|
const agent_adapter_1 = require("../core/agent-adapter");
|
|
16
16
|
const verify_1 = require("./verify");
|
|
17
|
+
const config_1 = require("../core/config");
|
|
18
|
+
const spec_dir_resolver_1 = require("../utils/spec-dir-resolver");
|
|
19
|
+
const requirement_validator_1 = require("../core/requirement-validator");
|
|
17
20
|
async function handleAutopilotCommand(options = {}) {
|
|
18
21
|
console.log(chalk_1.default.bold.cyan('\n🚀 Launching gherkin-ai Autopilot Autonomous Delivery Orchestrator...\n'));
|
|
19
22
|
const reqFile = options.requirement || 'requirement.md';
|
|
20
|
-
|
|
23
|
+
if (!fs_1.default.existsSync(reqFile)) {
|
|
24
|
+
console.log(chalk_1.default.red(`\n✖ Requirement file not found: ${reqFile}`));
|
|
25
|
+
console.log(chalk_1.default.yellow(` → Fix: Provide a valid path with --requirement <file>`));
|
|
26
|
+
console.log(chalk_1.default.yellow(` → Example: ghk autopilot --requirement docs/user-crud.md\n`));
|
|
27
|
+
process.exitCode = 1;
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const reqContent = fs_1.default.readFileSync(reqFile, 'utf8');
|
|
31
|
+
// Validate requirement before proceeding with agents
|
|
32
|
+
const validation = (0, requirement_validator_1.validateRequirement)(reqContent);
|
|
33
|
+
if (!validation.isValid) {
|
|
34
|
+
console.log(chalk_1.default.red('\n✖ Requirement validation failed:'));
|
|
35
|
+
for (const issue of validation.issues) {
|
|
36
|
+
console.log(chalk_1.default.yellow(` ⚠ ${issue.message}`));
|
|
37
|
+
console.log(chalk_1.default.gray(` → ${issue.suggestion}`));
|
|
38
|
+
}
|
|
39
|
+
process.exitCode = 1;
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const configInstance = (0, config_1.loadConfig)();
|
|
21
43
|
console.log(chalk_1.default.blue(`1. Analyzing repository & building context package...`));
|
|
22
44
|
const context = (0, context_builder_1.buildProjectContext)();
|
|
23
45
|
const config = {
|
|
@@ -36,8 +58,21 @@ async function handleAutopilotCommand(options = {}) {
|
|
|
36
58
|
});
|
|
37
59
|
let specContent = 'Feature: Auto-generated feature...';
|
|
38
60
|
if (specRes.codeModifications && specRes.codeModifications.length > 0) {
|
|
61
|
+
let specDirPath = 'specs';
|
|
62
|
+
try {
|
|
63
|
+
specDirPath = (0, spec_dir_resolver_1.resolveSpecDir)(configInstance.specDir);
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// Use fallback if none found
|
|
67
|
+
}
|
|
39
68
|
for (const mod of specRes.codeModifications) {
|
|
40
|
-
|
|
69
|
+
let p = mod.filePath;
|
|
70
|
+
if (!p.endsWith('.feature')) {
|
|
71
|
+
p = path_1.default.join(specDirPath, p);
|
|
72
|
+
}
|
|
73
|
+
else if (!p.includes('/') && !p.includes('\\')) {
|
|
74
|
+
p = path_1.default.join(specDirPath, p);
|
|
75
|
+
}
|
|
41
76
|
const fullPath = path_1.default.resolve(p);
|
|
42
77
|
fs_1.default.mkdirSync(path_1.default.dirname(fullPath), { recursive: true });
|
|
43
78
|
fs_1.default.writeFileSync(fullPath, mod.content);
|
|
@@ -73,7 +108,7 @@ async function handleAutopilotCommand(options = {}) {
|
|
|
73
108
|
console.log(chalk_1.default.blue(`4. Invoking Verification Agent & Closed-Loop Repair...`));
|
|
74
109
|
await (0, verify_1.handleVerifyCommand)({ autoFix: true, maxRetries: 2 });
|
|
75
110
|
console.log(chalk_1.default.blue(`5. Evaluating Enterprise Quality Score Gate...`));
|
|
76
|
-
const scorecard = (0, quality_score_1.calculateQualityScorecard)();
|
|
111
|
+
const scorecard = (0, quality_score_1.calculateQualityScorecard)(process.cwd(), configInstance.specDir);
|
|
77
112
|
console.log(chalk_1.default.bold.green(`\n✅ Autopilot Execution Complete! Quality Score: ${scorecard.overallScore}%`));
|
|
78
113
|
console.log(chalk_1.default.bold.cyan(` Ready for PR Review & Human Approval.\n`));
|
|
79
114
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autopilot.js","sourceRoot":"","sources":["../../src/commands/autopilot.ts"],"names":[],"mappings":";AAAA;;gFAEgF;;;;;
|
|
1
|
+
{"version":3,"file":"autopilot.js","sourceRoot":"","sources":["../../src/commands/autopilot.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/diff.d.ts
CHANGED
|
@@ -2,5 +2,21 @@ export interface DiffCommandOptions {
|
|
|
2
2
|
feature?: string;
|
|
3
3
|
target?: string;
|
|
4
4
|
}
|
|
5
|
+
export interface DriftReport {
|
|
6
|
+
fieldsSync: {
|
|
7
|
+
field: string;
|
|
8
|
+
status: 'synced' | 'missing' | 'extra';
|
|
9
|
+
}[];
|
|
10
|
+
endpointsSync: {
|
|
11
|
+
endpoint: string;
|
|
12
|
+
status: 'synced' | 'missing';
|
|
13
|
+
}[];
|
|
14
|
+
httpCodesSync: {
|
|
15
|
+
code: string;
|
|
16
|
+
status: 'synced' | 'missing';
|
|
17
|
+
}[];
|
|
18
|
+
scenariosWithoutTests: string[];
|
|
19
|
+
hasDrift: boolean;
|
|
20
|
+
}
|
|
5
21
|
export declare function handleDiffCommand(options?: DiffCommandOptions): Promise<void>;
|
|
6
22
|
//# sourceMappingURL=diff.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAA;KAAE,EAAE,CAAC;IACxE,aAAa,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAA;KAAE,EAAE,CAAC;IACpE,aAAa,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAA;KAAE,EAAE,CAAC;IAChE,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmGvF"}
|
package/dist/commands/diff.js
CHANGED
|
@@ -32,8 +32,8 @@ async function handleDiffCommand(options = {}) {
|
|
|
32
32
|
const targetContent = fs_1.default.readFileSync(options.target, 'utf8');
|
|
33
33
|
const parsed = (0, gherkin_parser_1.parseGherkinText)(featureContent);
|
|
34
34
|
const fields = parsed.domainAnalysis.fields;
|
|
35
|
-
if (fields.length === 0) {
|
|
36
|
-
console.log(chalk_1.default.yellow(`⚠ No semantic fields found in ${options.feature}
|
|
35
|
+
if (fields.length === 0 && parsed.scenarios.length === 0) {
|
|
36
|
+
console.log(chalk_1.default.yellow(`⚠ No semantic fields or scenarios found in ${options.feature}.`));
|
|
37
37
|
return;
|
|
38
38
|
}
|
|
39
39
|
let driftFound = false;
|
|
@@ -69,6 +69,28 @@ async function handleDiffCommand(options = {}) {
|
|
|
69
69
|
console.log(chalk_1.default.green(` ✓ Field '${field.name}' is synchronized.`));
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
+
console.log(chalk_1.default.blue(`\nChecking HTTP Codes and Endpoints...\n`));
|
|
73
|
+
const httpCodes = featureContent.match(/HTTP (?:status )?(\d{3})/gi) || [];
|
|
74
|
+
for (const codeMatch of httpCodes) {
|
|
75
|
+
const code = codeMatch.replace(/[^\d]/g, '');
|
|
76
|
+
if (!targetContent.includes(code)) {
|
|
77
|
+
console.log(chalk_1.default.red(` ✖ Drift Detected! Expected HTTP code ${code} from feature is not explicitly handled in ${options.target}`));
|
|
78
|
+
driftFound = true;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
console.log(chalk_1.default.green(` ✓ HTTP code ${code} is synchronized.`));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
const endpoints = featureContent.match(/(?:\/api\/[\w/-]+)/gi) || [];
|
|
85
|
+
for (const endpoint of endpoints) {
|
|
86
|
+
if (!targetContent.includes(endpoint)) {
|
|
87
|
+
console.log(chalk_1.default.red(` ✖ Drift Detected! Endpoint ${endpoint} from feature is not explicitly found in ${options.target}`));
|
|
88
|
+
driftFound = true;
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
console.log(chalk_1.default.green(` ✓ Endpoint ${endpoint} is synchronized.`));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
72
94
|
if (driftFound) {
|
|
73
95
|
console.log(chalk_1.default.bold.red('\n❌ Drift Detection Failed: The source of truth (.feature) does not match the implementation.'));
|
|
74
96
|
process.exitCode = 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":";AAAA;;gFAEgF;;;;;
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAmCA,wBAAsB,qBAAqB,CAAC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAmCA,wBAAsB,qBAAqB,CAAC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsHxH"}
|
|
@@ -82,12 +82,16 @@ async function handleGenerateCommand(options) {
|
|
|
82
82
|
if (config.stack.aiEngine) {
|
|
83
83
|
console.log(`- AI Tools: ${config.stack.aiEngine}`);
|
|
84
84
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
85
|
+
let confirmContext = true;
|
|
86
|
+
if (!options.yes && !process.env.CI) {
|
|
87
|
+
const answer = await inquirer_1.default.prompt([{
|
|
88
|
+
type: 'confirm',
|
|
89
|
+
name: 'confirmContext',
|
|
90
|
+
message: 'Is this technical context correct for the agent prompts?',
|
|
91
|
+
default: true
|
|
92
|
+
}]);
|
|
93
|
+
confirmContext = answer.confirmContext;
|
|
94
|
+
}
|
|
91
95
|
if (!confirmContext) {
|
|
92
96
|
logger_1.logger.warn('Context rejected. Please update gherkin-ai.config.json or run `ghk detect` and run again.');
|
|
93
97
|
process.exit(1);
|
|
@@ -100,12 +104,16 @@ async function handleGenerateCommand(options) {
|
|
|
100
104
|
if (config.stack.aiEngine) {
|
|
101
105
|
agentChoices.push({ name: 'AI Engineer Agent (RAG/VectorDB)', value: 'ai-engineer-agent.md', checked: true });
|
|
102
106
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
107
|
+
let selectedAgents = agentChoices.map(c => c.value);
|
|
108
|
+
if (!options.yes && !process.env.CI) {
|
|
109
|
+
const answer = await inquirer_1.default.prompt([{
|
|
110
|
+
type: 'checkbox',
|
|
111
|
+
name: 'selectedAgents',
|
|
112
|
+
message: 'Which Agent Prompts do you want to generate?',
|
|
113
|
+
choices: agentChoices
|
|
114
|
+
}]);
|
|
115
|
+
selectedAgents = answer.selectedAgents;
|
|
116
|
+
}
|
|
109
117
|
if (selectedAgents.length > 0) {
|
|
110
118
|
// 3. Generate Agent Prompts
|
|
111
119
|
const prompts = (0, prompts_1.generatePrompts)(parsed, config);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":";AAAA;;gFAEgF;;;;;AAiChF,
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quality.d.ts","sourceRoot":"","sources":["../../src/commands/quality.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"quality.d.ts","sourceRoot":"","sources":["../../src/commands/quality.ts"],"names":[],"mappings":"AAQA,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAqB1D"}
|
package/dist/commands/quality.js
CHANGED
|
@@ -9,9 +9,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.handleQualityCommand = handleQualityCommand;
|
|
10
10
|
const chalk_1 = __importDefault(require("chalk"));
|
|
11
11
|
const quality_score_1 = require("../core/quality-score");
|
|
12
|
+
const config_1 = require("../core/config");
|
|
12
13
|
async function handleQualityCommand() {
|
|
13
14
|
console.log(chalk_1.default.bold.cyan('\n📊 Calculating Feature Quality Index Score...\n'));
|
|
14
|
-
const
|
|
15
|
+
const config = (0, config_1.loadConfig)();
|
|
16
|
+
const scorecard = (0, quality_score_1.calculateQualityScorecard)(process.cwd(), config.specDir);
|
|
15
17
|
console.log(` Specification Score : ${chalk_1.default.bold.green(scorecard.specificationScore + '%')}`);
|
|
16
18
|
console.log(` Unit Tests Score : ${chalk_1.default.bold.green(scorecard.unitTestsScore + '%')}`);
|
|
17
19
|
console.log(` Integration Tests : ${chalk_1.default.bold.green(scorecard.integrationTestsScore + '%')}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quality.js","sourceRoot":"","sources":["../../src/commands/quality.ts"],"names":[],"mappings":";AAAA;;gFAEgF;;;;;
|
|
1
|
+
{"version":3,"file":"quality.js","sourceRoot":"","sources":["../../src/commands/quality.ts"],"names":[],"mappings":";AAAA;;gFAEgF;;;;;AAMhF,oDAqBC;AAzBD,kDAA0B;AAC1B,yDAAkE;AAClE,2CAA4C;AAErC,KAAK,UAAU,oBAAoB;IACxC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,CAAC;IAElF,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,IAAA,yCAAyB,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAE3E,OAAO,CAAC,GAAG,CAAC,2BAA2B,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,kBAAkB,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/F,OAAO,CAAC,GAAG,CAAC,2BAA2B,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3F,OAAO,CAAC,GAAG,CAAC,2BAA2B,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,qBAAqB,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IAClG,OAAO,CAAC,GAAG,CAAC,2BAA2B,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,2BAA2B,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5F,OAAO,CAAC,GAAG,CAAC,2BAA2B,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IAE1G,IAAI,SAAS,CAAC,iBAAiB,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,wEAAwE,CAAC,CAAC,CAAC;IAC1G,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC,CAAC;QAC7F,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,mBAAmB,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+G3F"}
|
package/dist/commands/verify.js
CHANGED
|
@@ -11,11 +11,14 @@ const chalk_1 = __importDefault(require("chalk"));
|
|
|
11
11
|
const execution_sandbox_1 = require("../core/execution-sandbox");
|
|
12
12
|
const error_parser_1 = require("../core/error-parser");
|
|
13
13
|
const agent_adapter_1 = require("../core/agent-adapter");
|
|
14
|
+
const config_1 = require("../core/config");
|
|
14
15
|
async function handleVerifyCommand(options = {}) {
|
|
15
16
|
console.log(chalk_1.default.bold.cyan('\n🔁 Executing Closed-Loop Verification Pipeline...\n'));
|
|
16
17
|
const maxRetries = parseInt(String(options.maxRetries || '3'), 10);
|
|
18
|
+
const config = (0, config_1.loadConfig)();
|
|
17
19
|
const sandboxOpts = {
|
|
18
20
|
command: options.command,
|
|
21
|
+
configCommand: config.testCommand,
|
|
19
22
|
docker: options.docker || false
|
|
20
23
|
};
|
|
21
24
|
let iteration = 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":";AAAA;;gFAEgF;;;;;
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"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"}
|
package/dist/core/config.d.ts
CHANGED
|
@@ -22,6 +22,8 @@ export interface GherkinAIConfig {
|
|
|
22
22
|
designPatterns?: string[];
|
|
23
23
|
codingRules?: string[];
|
|
24
24
|
outputDir: string;
|
|
25
|
+
specDir?: string;
|
|
26
|
+
testCommand?: string;
|
|
25
27
|
}
|
|
26
28
|
export declare const defaultConfig: GherkinAIConfig;
|
|
27
29
|
export declare function loadConfig(configPath?: string): GherkinAIConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,YAAY,GAAG,YAAY,GAAG,UAAU,CAAC;IACvD,YAAY,EAAE,KAAK,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,cAAc,GAAG,qBAAqB,GAAG,SAAS,CAAC;IACjL,KAAK,EAAE;QACL,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,KAAK,EAAE;QACL,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,qBAAqB,CAAC,EAAE,OAAO,CAAC;QAChC,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,YAAY,GAAG,YAAY,GAAG,UAAU,CAAC;IACvD,YAAY,EAAE,KAAK,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,cAAc,GAAG,qBAAqB,GAAG,SAAS,CAAC;IACjL,KAAK,EAAE;QACL,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,KAAK,EAAE;QACL,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,qBAAqB,CAAC,EAAE,OAAO,CAAC;QAChC,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,aAAa,EAAE,eAyB3B,CAAC;AAEF,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,eAAe,CAc/D;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAG7E"}
|
package/dist/core/config.js
CHANGED
|
@@ -33,7 +33,9 @@ exports.defaultConfig = {
|
|
|
33
33
|
},
|
|
34
34
|
designPatterns: [],
|
|
35
35
|
codingRules: [],
|
|
36
|
-
outputDir: './generated-specs'
|
|
36
|
+
outputDir: './generated-specs',
|
|
37
|
+
specDir: undefined,
|
|
38
|
+
testCommand: undefined
|
|
37
39
|
};
|
|
38
40
|
function loadConfig(configPath) {
|
|
39
41
|
const targetPath = configPath || path_1.default.join(process.cwd(), 'gherkin-ai.config.json');
|
package/dist/core/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":";AAAA;;gFAEgF;;;;;;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":";AAAA;;gFAEgF;;;;;;AA4DhF,gCAcC;AAED,gCAGC;AA7ED,gDAAwB;AACxB,sDAAmF;AA8BtE,QAAA,aAAa,GAAoB;IAC5C,WAAW,EAAE,oBAAoB;IACjC,WAAW,EAAE,YAAY;IACzB,YAAY,EAAE,WAAW;IACzB,KAAK,EAAE;QACL,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,QAAQ;QACnB,GAAG,EAAE,QAAQ;QACb,QAAQ,EAAE,YAAY;QACtB,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE,UAAU;QACrB,OAAO,EAAE,MAAM;KAChB;IACD,KAAK,EAAE;QACL,gBAAgB,EAAE,EAAE;QACpB,aAAa,EAAE,IAAI;QACnB,qBAAqB,EAAE,IAAI;QAC3B,cAAc,EAAE,EAAE;KACnB;IACD,cAAc,EAAE,EAAE;IAClB,WAAW,EAAE,EAAE;IACf,SAAS,EAAE,mBAAmB;IAC9B,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,SAAS;CACvB,CAAC;AAEF,SAAgB,UAAU,CAAC,UAAmB;IAC5C,MAAM,UAAU,GAAG,UAAU,IAAI,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,wBAAwB,CAAC,CAAC;IAEpF,IAAI,CAAC,IAAA,4BAAc,EAAC,UAAU,CAAC,EAAE,CAAC;QAChC,OAAO,qBAAa,CAAC;IACvB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAA,0BAAY,EAAC,UAAU,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,EAAE,GAAG,qBAAa,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,qBAAa,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;IACrG,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kCAAkC,UAAU,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7F,CAAC;AACH,CAAC;AAED,SAAgB,UAAU,CAAC,MAAuB,EAAE,UAAmB;IACrE,MAAM,UAAU,GAAG,UAAU,IAAI,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,wBAAwB,CAAC,CAAC;IACpF,IAAA,2BAAa,EAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC"}
|
|
@@ -6,6 +6,8 @@ export interface FailureDiagnosis {
|
|
|
6
6
|
cleanedStackTrace: string;
|
|
7
7
|
suggestedFixContext: string;
|
|
8
8
|
confidenceScore: number;
|
|
9
|
+
suggestedActions: string[];
|
|
10
|
+
agentName?: string;
|
|
9
11
|
}
|
|
10
|
-
export declare function parseExecutionFailure(result: SandboxResult): FailureDiagnosis;
|
|
12
|
+
export declare function parseExecutionFailure(result: SandboxResult, agentName?: string): FailureDiagnosis;
|
|
11
13
|
//# sourceMappingURL=error-parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-parser.d.ts","sourceRoot":"","sources":["../../src/core/error-parser.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"error-parser.d.ts","sourceRoot":"","sources":["../../src/core/error-parser.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,gBAAgB,CA6CjG"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
========================================================================== */
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.parseExecutionFailure = parseExecutionFailure;
|
|
7
|
-
function parseExecutionFailure(result) {
|
|
7
|
+
function parseExecutionFailure(result, agentName) {
|
|
8
8
|
const combinedLog = `${result.stdout}\n${result.stderr}`;
|
|
9
9
|
const lines = combinedLog.split('\n');
|
|
10
10
|
const failedTestCases = [];
|
|
@@ -35,7 +35,13 @@ function parseExecutionFailure(result) {
|
|
|
35
35
|
affectedFiles,
|
|
36
36
|
cleanedStackTrace,
|
|
37
37
|
suggestedFixContext: `Fix the underlying code in [${affectedFiles.join(', ')}] to resolve:\n${cleanedStackTrace}`,
|
|
38
|
-
confidenceScore: affectedFiles.length > 0 ? 0.92 : 0.75
|
|
38
|
+
confidenceScore: affectedFiles.length > 0 ? 0.92 : 0.75,
|
|
39
|
+
suggestedActions: [
|
|
40
|
+
'Check if the test command matches your project structure.',
|
|
41
|
+
'Review the modified files for compilation or logical errors.',
|
|
42
|
+
'Consider running the tests manually to get more details.'
|
|
43
|
+
],
|
|
44
|
+
agentName
|
|
39
45
|
};
|
|
40
46
|
}
|
|
41
47
|
//# sourceMappingURL=error-parser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-parser.js","sourceRoot":"","sources":["../../src/core/error-parser.ts"],"names":[],"mappings":";AAAA;;gFAEgF;;
|
|
1
|
+
{"version":3,"file":"error-parser.js","sourceRoot":"","sources":["../../src/core/error-parser.ts"],"names":[],"mappings":";AAAA;;gFAEgF;;AAehF,sDA6CC;AA7CD,SAAgB,qBAAqB,CAAC,MAAqB,EAAE,SAAkB;IAC7E,MAAM,WAAW,GAAG,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;IACzD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEtC,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,6EAA6E;IAC7E,MAAM,aAAa,GAAG,wEAAwE,CAAC;IAC/F,MAAM,YAAY,GAAG,iGAAiG,CAAC;IAEvH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC;QACV,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAClD,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBACnD,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACnD,MAAM,iBAAiB,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAE9F,OAAO;QACL,OAAO,EAAE,yCAAyC,MAAM,CAAC,QAAQ,WAAW,eAAe,CAAC,MAAM,IAAI,CAAC,kBAAkB;QACzH,eAAe,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC;QAChG,aAAa;QACb,iBAAiB;QACjB,mBAAmB,EAAE,+BAA+B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,iBAAiB,EAAE;QACjH,eAAe,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;QACvD,gBAAgB,EAAE;YAChB,2DAA2D;YAC3D,8DAA8D;YAC9D,0DAA0D;SAC3D;QACD,SAAS;KACV,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-sandbox.d.ts","sourceRoot":"","sources":["../../src/core/execution-sandbox.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,cAAc,CAAC,OAAO,GAAE,uBAA4B,GAAG,aAAa,CAwCnF;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAgDnE"}
|
|
1
|
+
{"version":3,"file":"execution-sandbox.d.ts","sourceRoot":"","sources":["../../src/core/execution-sandbox.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,cAAc,CAAC,OAAO,GAAE,uBAA4B,GAAG,aAAa,CAwCnF;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAgDnE"}
|
|
@@ -16,7 +16,7 @@ function executeSandbox(options = {}) {
|
|
|
16
16
|
// Use a longer default timeout for large projects (300000 = 5 mins)
|
|
17
17
|
const timeout = options.timeoutMs || 300000;
|
|
18
18
|
const startTime = Date.now();
|
|
19
|
-
let commandToRun = options.command || detectDefaultTestCommand(cwd);
|
|
19
|
+
let commandToRun = options.command || options.configCommand || detectDefaultTestCommand(cwd);
|
|
20
20
|
if (options.docker) {
|
|
21
21
|
const imageName = options.dockerImage || 'node:20-alpine';
|
|
22
22
|
commandToRun = `docker run --rm -v "${cwd}:/app" -w /app ${imageName} ${commandToRun}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-sandbox.js","sourceRoot":"","sources":["../../src/core/execution-sandbox.ts"],"names":[],"mappings":";AAAA;;gFAEgF;;;;;
|
|
1
|
+
{"version":3,"file":"execution-sandbox.js","sourceRoot":"","sources":["../../src/core/execution-sandbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,5 +8,5 @@ export interface FeatureQualityScorecard {
|
|
|
8
8
|
overallScore: number;
|
|
9
9
|
passedQualityGate: boolean;
|
|
10
10
|
}
|
|
11
|
-
export declare function calculateQualityScorecard(cwd?: string): FeatureQualityScorecard;
|
|
11
|
+
export declare function calculateQualityScorecard(cwd?: string, specDirOverride?: string): FeatureQualityScorecard;
|
|
12
12
|
//# sourceMappingURL=quality-score.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quality-score.d.ts","sourceRoot":"","sources":["../../src/core/quality-score.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,uBAAuB;IACtC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,yBAAyB,CAAC,GAAG,GAAE,MAAsB,GAAG,uBAAuB,
|
|
1
|
+
{"version":3,"file":"quality-score.d.ts","sourceRoot":"","sources":["../../src/core/quality-score.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,uBAAuB;IACtC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,yBAAyB,CAAC,GAAG,GAAE,MAAsB,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,uBAAuB,CAyExH"}
|
|
@@ -10,7 +10,7 @@ exports.calculateQualityScorecard = calculateQualityScorecard;
|
|
|
10
10
|
const fs_1 = __importDefault(require("fs"));
|
|
11
11
|
const path_1 = __importDefault(require("path"));
|
|
12
12
|
const child_process_1 = require("child_process");
|
|
13
|
-
function calculateQualityScorecard(cwd = process.cwd()) {
|
|
13
|
+
function calculateQualityScorecard(cwd = process.cwd(), specDirOverride) {
|
|
14
14
|
let unitTestsScore = 0;
|
|
15
15
|
try {
|
|
16
16
|
const covPath = path_1.default.join(cwd, 'coverage', 'coverage-summary.json');
|
|
@@ -54,12 +54,17 @@ function calculateQualityScorecard(cwd = process.cwd()) {
|
|
|
54
54
|
}
|
|
55
55
|
catch { }
|
|
56
56
|
}
|
|
57
|
-
// Specification Score:
|
|
57
|
+
// Specification Score: Use resolved spec directory
|
|
58
58
|
let specificationScore = 0;
|
|
59
|
-
|
|
60
|
-
const
|
|
59
|
+
try {
|
|
60
|
+
const { resolveSpecDir } = require('../utils/spec-dir-resolver');
|
|
61
|
+
const specDirPath = resolveSpecDir(specDirOverride, cwd);
|
|
62
|
+
const specFiles = fs_1.default.readdirSync(specDirPath).filter((f) => f.endsWith('.feature'));
|
|
61
63
|
specificationScore = specFiles.length > 0 ? 95 : 40;
|
|
62
64
|
}
|
|
65
|
+
catch {
|
|
66
|
+
specificationScore = 0;
|
|
67
|
+
}
|
|
63
68
|
const integrationTestsScore = unitTestsScore > 0 ? Math.round(unitTestsScore * 0.8) : 0;
|
|
64
69
|
const overallScore = Math.round((specificationScore + unitTestsScore + integrationTestsScore + e2eTestsScore + typeSafetyScore + securityScore) / 6);
|
|
65
70
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quality-score.js","sourceRoot":"","sources":["../../src/core/quality-score.ts"],"names":[],"mappings":";AAAA;;gFAEgF;;;;;AAiBhF,
|
|
1
|
+
{"version":3,"file":"quality-score.js","sourceRoot":"","sources":["../../src/core/quality-score.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface RequirementValidation {
|
|
2
|
+
isValid: boolean;
|
|
3
|
+
issues: RequirementIssue[];
|
|
4
|
+
estimatedComplexity: 'low' | 'medium' | 'high';
|
|
5
|
+
}
|
|
6
|
+
export interface RequirementIssue {
|
|
7
|
+
type: 'missing_acceptance_criteria' | 'ambiguous_requirement' | 'no_actionable_blocks' | 'too_broad';
|
|
8
|
+
message: string;
|
|
9
|
+
suggestion: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function validateRequirement(content: string): RequirementValidation;
|
|
12
|
+
//# sourceMappingURL=requirement-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requirement-validator.d.ts","sourceRoot":"","sources":["../../src/core/requirement-validator.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,mBAAmB,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CAChD;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,6BAA6B,GAAG,uBAAuB,GAAG,sBAAsB,GAAG,WAAW,CAAC;IACrG,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,CA4B1E"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateRequirement = validateRequirement;
|
|
4
|
+
function validateRequirement(content) {
|
|
5
|
+
const issues = [];
|
|
6
|
+
// Detect acceptance criteria or gherkin keywords
|
|
7
|
+
if (!content.match(/(?:acceptance|criteria|given|when|then|scenario|feature)/i)) {
|
|
8
|
+
issues.push({
|
|
9
|
+
type: 'missing_acceptance_criteria',
|
|
10
|
+
message: 'No acceptance criteria or Gherkin keywords found',
|
|
11
|
+
suggestion: 'Add "Given/When/Then" or "Acceptance Criteria" sections to the document'
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
// Detect vague requirements
|
|
15
|
+
if (content.length < 100) {
|
|
16
|
+
issues.push({
|
|
17
|
+
type: 'too_broad',
|
|
18
|
+
message: 'Requirement is too short to generate meaningful specs',
|
|
19
|
+
suggestion: 'Provide detailed functional requirements with specific behaviors and edge cases'
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
const estimatedComplexity = content.length > 2000 ? 'high' : (content.length > 500 ? 'medium' : 'low');
|
|
23
|
+
return {
|
|
24
|
+
isValid: issues.length === 0,
|
|
25
|
+
issues,
|
|
26
|
+
estimatedComplexity
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=requirement-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requirement-validator.js","sourceRoot":"","sources":["../../src/core/requirement-validator.ts"],"names":[],"mappings":";;AAYA,kDA4BC;AA5BD,SAAgB,mBAAmB,CAAC,OAAe;IACjD,MAAM,MAAM,GAAuB,EAAE,CAAC;IAEtC,iDAAiD;IACjD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,EAAE,CAAC;QAChF,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,6BAA6B;YACnC,OAAO,EAAE,kDAAkD;YAC3D,UAAU,EAAE,yEAAyE;SACtF,CAAC,CAAC;IACL,CAAC;IAED,4BAA4B;IAC5B,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,uDAAuD;YAChE,UAAU,EAAE,iFAAiF;SAC9F,CAAC,CAAC;IACL,CAAC;IAED,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAEvG,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC5B,MAAM;QACN,mBAAmB;KACpB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/generators/fixtures.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/generators/fixtures.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAqDxH"}
|
|
@@ -7,35 +7,32 @@ exports.generateFixtures = generateFixtures;
|
|
|
7
7
|
const stack_specs_1 = require("../core/stack-specs");
|
|
8
8
|
function generateFixtures(parsed, config) {
|
|
9
9
|
const spec = (0, stack_specs_1.getStackSpec)(config.stack);
|
|
10
|
+
const fixtureName = parsed.featureName.replace(/[^a-zA-Z0-9]/g, '') + 'Fixture';
|
|
11
|
+
const properties = parsed.domainAnalysis.fields.map(f => {
|
|
12
|
+
let type = f.type === 'number' ? 'number' : 'string';
|
|
13
|
+
return ` ${f.name}: ${type};`;
|
|
14
|
+
}).join('\n');
|
|
15
|
+
const defaults = parsed.domainAnalysis.fields.map(f => {
|
|
16
|
+
let val = f.type === 'number' ? '0' : "'test_value'";
|
|
17
|
+
if (f.name.toLowerCase().includes('email'))
|
|
18
|
+
val = "'test@example.com'";
|
|
19
|
+
return ` ${f.name}: ${val},`;
|
|
20
|
+
}).join('\n');
|
|
10
21
|
const fixturesTs = `/* ==========================================================================
|
|
11
22
|
Generated Test Fixtures & Seed Setup
|
|
12
23
|
Feature: ${parsed.featureName}
|
|
13
|
-
Generated by gherkin-ai CLI
|
|
24
|
+
Generated by gherkin-ai CLI
|
|
14
25
|
========================================================================== */
|
|
15
26
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
export interface TestUserFixture {
|
|
27
|
+
export interface ${fixtureName} {
|
|
19
28
|
id: string;
|
|
20
|
-
|
|
21
|
-
passwordRaw: string;
|
|
22
|
-
passwordHash: string;
|
|
23
|
-
role: string;
|
|
24
|
-
isActive: boolean;
|
|
29
|
+
${properties}
|
|
25
30
|
}
|
|
26
31
|
|
|
27
|
-
export
|
|
28
|
-
const saltRounds = ${spec.bcryptCostFactor};
|
|
29
|
-
const passwordRaw = 'Pass123!';
|
|
30
|
-
const passwordHash = await bcrypt.hash(passwordRaw, saltRounds);
|
|
31
|
-
|
|
32
|
+
export function create${fixtureName}(): ${fixtureName} {
|
|
32
33
|
return {
|
|
33
34
|
id: 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
|
|
34
|
-
|
|
35
|
-
passwordRaw,
|
|
36
|
-
passwordHash,
|
|
37
|
-
role: 'ADMIN',
|
|
38
|
-
isActive: true
|
|
35
|
+
${defaults}
|
|
39
36
|
};
|
|
40
37
|
}
|
|
41
38
|
|
|
@@ -43,18 +40,16 @@ export const GHERKIN_GIVEN_PRECONDITIONS = [
|
|
|
43
40
|
${parsed.domainAnalysis.fixtures.map(f => ` ${JSON.stringify(f)}`).join(',\n')}
|
|
44
41
|
];
|
|
45
42
|
`;
|
|
43
|
+
const columns = ['id', ...parsed.domainAnalysis.fields.map(f => f.name)].join(', ');
|
|
44
|
+
const values = ["'f47ac10b-58cc-4372-a567-0e02b2c3d479'", ...parsed.domainAnalysis.fields.map(f => f.type === 'number' ? '0' : "'test'")].join(', ');
|
|
45
|
+
const tableName = parsed.featureName.replace(/[^a-zA-Z0-9]/g, '_').toLowerCase();
|
|
46
46
|
const seedSql = `-- Generated Seed SQL Fixtures for PostgreSQL / MySQL
|
|
47
47
|
-- Feature: ${parsed.featureName}
|
|
48
48
|
|
|
49
|
-
INSERT INTO
|
|
49
|
+
INSERT INTO ${tableName} (${columns})
|
|
50
50
|
VALUES (
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
'$2b$12$eImiTXuWVxfM37uY4JANjO5E.y5bXm8A8fK0iE8zK4aM4iO2oU7pS', -- 'Pass123!' hashed with bcrypt cost 12
|
|
54
|
-
'ADMIN',
|
|
55
|
-
true,
|
|
56
|
-
NOW()
|
|
57
|
-
) ON CONFLICT (email) DO NOTHING;
|
|
51
|
+
${values}
|
|
52
|
+
) ON CONFLICT (id) DO NOTHING;
|
|
58
53
|
`;
|
|
59
54
|
return { fixturesTs, seedSql };
|
|
60
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../src/generators/fixtures.ts"],"names":[],"mappings":";AAAA;;gFAEgF;;AAMhF,
|
|
1
|
+
{"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../src/generators/fixtures.ts"],"names":[],"mappings":";AAAA;;gFAEgF;;AAMhF,4CAqDC;AAvDD,qDAAmD;AAEnD,SAAgB,gBAAgB,CAAC,MAAqB,EAAE,MAAuB;IAC7E,MAAM,IAAI,GAAG,IAAA,0BAAY,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAExC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC;IAEhF,MAAM,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACtD,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QACrD,OAAO,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC;IACjC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACpD,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC;QACrD,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,GAAG,GAAG,oBAAoB,CAAC;QACvE,OAAO,OAAO,CAAC,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC;IAClC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,UAAU,GAAG;;cAEP,MAAM,CAAC,WAAW;;;;mBAIb,WAAW;;EAE5B,UAAU;;;wBAGY,WAAW,OAAO,WAAW;;;EAGnD,QAAQ;;;;;EAKR,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;;CAE9E,CAAC;IAEA,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpF,MAAM,MAAM,GAAG,CAAC,wCAAwC,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrJ,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAEjF,MAAM,OAAO,GAAG;cACJ,MAAM,CAAC,WAAW;;cAElB,SAAS,KAAK,OAAO;;IAE/B,MAAM;;CAET,CAAC;IAEA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACjC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -61,6 +61,9 @@ program
|
|
|
61
61
|
.name('gherkin-ai')
|
|
62
62
|
.description('Enterprise-Grade Closed-Loop Agentic Orchestration Engine & Spec-Driven Verification Framework for AI Coding Agents.')
|
|
63
63
|
.version(pkg.version || '2.0.0')
|
|
64
|
+
.option('--project <dir>', 'Target project directory (skip interactive selector)')
|
|
65
|
+
.option('--yes', 'Accept all defaults without prompting (non-interactive mode)')
|
|
66
|
+
.option('--non-interactive', 'Alias for --yes')
|
|
64
67
|
.option('--init', 'Alias for init command')
|
|
65
68
|
.option('--create', 'Alias for create command')
|
|
66
69
|
.option('--generate', 'Alias for generate command')
|
|
@@ -234,7 +237,12 @@ program.action(async (options) => {
|
|
|
234
237
|
});
|
|
235
238
|
async function bootstrap() {
|
|
236
239
|
const { resolveWorkspaceDirectory } = await Promise.resolve().then(() => __importStar(require('./utils/workspace-detector')));
|
|
237
|
-
|
|
240
|
+
// Extract global options manually before parsing because we need to know the workspace first
|
|
241
|
+
const argv = process.argv;
|
|
242
|
+
const projectIdx = argv.findIndex(arg => arg === '--project');
|
|
243
|
+
const project = projectIdx > -1 ? argv[projectIdx + 1] : undefined;
|
|
244
|
+
const nonInteractive = argv.includes('--yes') || argv.includes('--non-interactive');
|
|
245
|
+
await resolveWorkspaceDirectory({ project, nonInteractive });
|
|
238
246
|
program.parse(process.argv);
|
|
239
247
|
}
|
|
240
248
|
bootstrap();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/ui/server.ts"],"names":[],"mappings":"AAiBA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/ui/server.ts"],"names":[],"mappings":"AAiBA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAsOjD"}
|
package/dist/ui/server.js
CHANGED
|
@@ -146,19 +146,54 @@ function startWebServer(port) {
|
|
|
146
146
|
// API: Get Directory Tree
|
|
147
147
|
app.get('/api/tree', (req, res) => {
|
|
148
148
|
try {
|
|
149
|
-
const buildTree = (dirPath) => {
|
|
149
|
+
const buildTree = (dirPath, depth = 0) => {
|
|
150
150
|
const result = { name: path_1.default.basename(dirPath), type: 'dir', children: [] };
|
|
151
|
-
|
|
151
|
+
// Prevent infinite recursion on deep trees
|
|
152
|
+
if (depth > 10)
|
|
153
|
+
return result;
|
|
154
|
+
let items;
|
|
155
|
+
try {
|
|
156
|
+
items = fs_1.default.readdirSync(dirPath);
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
// Directory not readable (permissions, etc.)
|
|
160
|
+
return result;
|
|
161
|
+
}
|
|
152
162
|
for (const item of items) {
|
|
153
|
-
if (['node_modules', '.git', 'dist'].includes(item))
|
|
163
|
+
if (['node_modules', '.git', 'dist', '.cache', '.next', 'vendor', '__pycache__'].includes(item))
|
|
164
|
+
continue;
|
|
165
|
+
if (item.startsWith('.'))
|
|
154
166
|
continue;
|
|
155
167
|
const fullPath = path_1.default.join(dirPath, item);
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
168
|
+
try {
|
|
169
|
+
// Use lstatSync to avoid following broken symlinks
|
|
170
|
+
const stat = fs_1.default.lstatSync(fullPath);
|
|
171
|
+
if (stat.isSymbolicLink()) {
|
|
172
|
+
// Check if symlink target exists before following
|
|
173
|
+
try {
|
|
174
|
+
const realStat = fs_1.default.statSync(fullPath);
|
|
175
|
+
if (realStat.isDirectory()) {
|
|
176
|
+
result.children.push(buildTree(fullPath, depth + 1));
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
result.children.push({ name: item, type: 'file', symlink: true });
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
// Broken symlink — include it as a marker but don't crash
|
|
184
|
+
result.children.push({ name: item, type: 'symlink-broken' });
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
else if (stat.isDirectory()) {
|
|
188
|
+
result.children.push(buildTree(fullPath, depth + 1));
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
result.children.push({ name: item, type: 'file' });
|
|
192
|
+
}
|
|
159
193
|
}
|
|
160
|
-
|
|
161
|
-
|
|
194
|
+
catch {
|
|
195
|
+
// Skip entries we can't stat at all (race condition, permissions, etc.)
|
|
196
|
+
continue;
|
|
162
197
|
}
|
|
163
198
|
}
|
|
164
199
|
return result;
|
package/dist/ui/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/ui/server.ts"],"names":[],"mappings":";AAAA;;gFAEgF;;;;;AAehF,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/ui/server.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/logger.d.ts
CHANGED
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
export declare const logger: {
|
|
2
|
+
verboseMode: boolean;
|
|
3
|
+
debugMode: boolean;
|
|
4
|
+
jsonMode: boolean;
|
|
5
|
+
configure(opts: {
|
|
6
|
+
verbose?: boolean;
|
|
7
|
+
debug?: boolean;
|
|
8
|
+
json?: boolean;
|
|
9
|
+
}): void;
|
|
10
|
+
verbose(message: string): void;
|
|
11
|
+
debug(message: string): void;
|
|
2
12
|
info(message: string): void;
|
|
3
13
|
success(message: string): void;
|
|
4
14
|
warn(message: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,MAAM;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,MAAM;;;;oBAKD;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE;qBAMrD,MAAM,GAAG,IAAI;mBAIf,MAAM,GAAG,IAAI;kBAId,MAAM,GAAG,IAAI;qBAIV,MAAM,GAAG,IAAI;kBAIhB,MAAM,GAAG,IAAI;mBAIZ,MAAM,GAAG,IAAI;cAIlB,IAAI;CAQf,CAAC"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -6,19 +6,41 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.logger = void 0;
|
|
7
7
|
const pkg = require('../../package.json');
|
|
8
8
|
exports.logger = {
|
|
9
|
+
verboseMode: false,
|
|
10
|
+
debugMode: false,
|
|
11
|
+
jsonMode: false,
|
|
12
|
+
configure(opts) {
|
|
13
|
+
this.verboseMode = opts.verbose || false;
|
|
14
|
+
this.debugMode = opts.debug || false;
|
|
15
|
+
this.jsonMode = opts.json || false;
|
|
16
|
+
},
|
|
17
|
+
verbose(message) {
|
|
18
|
+
if (this.verboseMode && !this.jsonMode)
|
|
19
|
+
console.log(`\x1b[90m[VERBOSE] ${message}\x1b[0m`);
|
|
20
|
+
},
|
|
21
|
+
debug(message) {
|
|
22
|
+
if (this.debugMode && !this.jsonMode)
|
|
23
|
+
console.log(`\x1b[90m[DEBUG] ${message}\x1b[0m`);
|
|
24
|
+
},
|
|
9
25
|
info(message) {
|
|
10
|
-
|
|
26
|
+
if (!this.jsonMode)
|
|
27
|
+
console.log(`\x1b[36mℹ\x1b[0m ${message}`);
|
|
11
28
|
},
|
|
12
29
|
success(message) {
|
|
13
|
-
|
|
30
|
+
if (!this.jsonMode)
|
|
31
|
+
console.log(`\x1b[32m✔\x1b[0m ${message}`);
|
|
14
32
|
},
|
|
15
33
|
warn(message) {
|
|
16
|
-
|
|
34
|
+
if (!this.jsonMode)
|
|
35
|
+
console.warn(`\x1b[33m⚠\x1b[0m ${message}`);
|
|
17
36
|
},
|
|
18
37
|
error(message) {
|
|
19
|
-
|
|
38
|
+
if (!this.jsonMode)
|
|
39
|
+
console.error(`\x1b[31m✖\x1b[0m ${message}`);
|
|
20
40
|
},
|
|
21
41
|
banner() {
|
|
42
|
+
if (this.jsonMode)
|
|
43
|
+
return;
|
|
22
44
|
console.log(`
|
|
23
45
|
\x1b[35m🥒 gherkin-ai CLI v${pkg.version || '1.1.0'}\x1b[0m
|
|
24
46
|
\x1b[90mExecutable Prompt & Contract Generator for AI Coding Agents\x1b[0m
|
package/dist/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";AAAA;;gFAEgF;;;AAEhF,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAE7B,QAAA,MAAM,GAAG;IACpB,IAAI,CAAC,OAAe;QAClB,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";AAAA;;gFAEgF;;;AAEhF,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAE7B,QAAA,MAAM,GAAG;IACpB,WAAW,EAAE,KAAK;IAClB,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,KAAK;IAEf,SAAS,CAAC,IAA4D;QACpE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,SAAS,CAAC,CAAC;IAC7F,CAAC;IAED,KAAK,CAAC,OAAe;QACnB,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,SAAS,CAAC,CAAC;IACzF,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,CAAC,IAAI,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,OAAe;QACnB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,OAAO,CAAC,GAAG,CAAC;6BACa,GAAG,CAAC,OAAO,IAAI,OAAO;;;CAGlD,CAAC,CAAC;IACD,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-dir-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/spec-dir-resolver.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,MAAM,CAsB1F"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.resolveSpecDir = resolveSpecDir;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
/**
|
|
10
|
+
* Resuelve el directorio de especificaciones Gherkin.
|
|
11
|
+
* Prioridad: config.specDir > features/ > specs/ > error
|
|
12
|
+
*/
|
|
13
|
+
function resolveSpecDir(configSpecDir, cwd = process.cwd()) {
|
|
14
|
+
if (configSpecDir) {
|
|
15
|
+
const resolved = path_1.default.resolve(cwd, configSpecDir);
|
|
16
|
+
if (!fs_1.default.existsSync(resolved)) {
|
|
17
|
+
throw new Error(`Spec directory "${configSpecDir}" not found at ${resolved}.\n` +
|
|
18
|
+
` → Fix: Create the directory or update "specDir" in gherkin-ai.config.json`);
|
|
19
|
+
}
|
|
20
|
+
return resolved;
|
|
21
|
+
}
|
|
22
|
+
const candidates = ['features', 'specs', 'spec'];
|
|
23
|
+
for (const dir of candidates) {
|
|
24
|
+
const candidate = path_1.default.join(cwd, dir);
|
|
25
|
+
if (fs_1.default.existsSync(candidate))
|
|
26
|
+
return candidate;
|
|
27
|
+
}
|
|
28
|
+
throw new Error(`No spec directory found. Looked for: ${candidates.join(', ')}\n` +
|
|
29
|
+
` → Fix: Create a "features/" directory or set "specDir" in gherkin-ai.config.json`);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=spec-dir-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-dir-resolver.js","sourceRoot":"","sources":["../../src/utils/spec-dir-resolver.ts"],"names":[],"mappings":";;;;;AAOA,wCAsBC;AA7BD,4CAAoB;AACpB,gDAAwB;AAExB;;;GAGG;AACH,SAAgB,cAAc,CAAC,aAAsB,EAAE,MAAc,OAAO,CAAC,GAAG,EAAE;IAChF,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAClD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,mBAAmB,aAAa,kBAAkB,QAAQ,KAAK;gBAC/D,6EAA6E,CAC9E,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACjD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IACjD,CAAC;IAED,MAAM,IAAI,KAAK,CACb,wCAAwC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QACjE,oFAAoF,CACrF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-detector.d.ts","sourceRoot":"","sources":["../../src/utils/workspace-detector.ts"],"names":[],"mappings":"AAKA,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"workspace-detector.d.ts","sourceRoot":"","sources":["../../src/utils/workspace-detector.ts"],"names":[],"mappings":"AAKA,wBAAsB,yBAAyB,CAAC,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwEpH"}
|
|
@@ -8,7 +8,20 @@ const fs_1 = __importDefault(require("fs"));
|
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
const inquirer_1 = __importDefault(require("inquirer"));
|
|
10
10
|
const i18n_cli_1 = require("./i18n-cli");
|
|
11
|
-
async function resolveWorkspaceDirectory() {
|
|
11
|
+
async function resolveWorkspaceDirectory(opts) {
|
|
12
|
+
// If --project is provided, skip interactive selector and switch directly
|
|
13
|
+
if (opts?.project) {
|
|
14
|
+
const target = path_1.default.resolve(process.cwd(), opts.project);
|
|
15
|
+
if (!fs_1.default.existsSync(target)) {
|
|
16
|
+
throw new Error(`Project directory not found: ${target}`);
|
|
17
|
+
}
|
|
18
|
+
process.chdir(target);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
// If non-interactive mode or CI, don't show prompts
|
|
22
|
+
if (opts?.nonInteractive || process.env.CI === 'true') {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
12
25
|
const cwd = process.cwd();
|
|
13
26
|
const subProjects = [];
|
|
14
27
|
// Look for subdirectories with .git
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-detector.js","sourceRoot":"","sources":["../../src/utils/workspace-detector.ts"],"names":[],"mappings":";;;;;AAKA,
|
|
1
|
+
{"version":3,"file":"workspace-detector.js","sourceRoot":"","sources":["../../src/utils/workspace-detector.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED