gherkin-ai 2.0.0-beta.1 ā 2.0.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 +49 -17
- package/dist/commands/create.d.ts +1 -0
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +39 -0
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/detect.d.ts.map +1 -1
- package/dist/commands/detect.js +31 -0
- package/dist/commands/detect.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 +2 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/patterns-suggester.d.ts +5 -0
- package/dist/core/patterns-suggester.d.ts.map +1 -0
- package/dist/core/patterns-suggester.js +57 -0
- package/dist/core/patterns-suggester.js.map +1 -0
- package/dist/generators/prompts.d.ts.map +1 -1
- package/dist/generators/prompts.js +5 -3
- package/dist/generators/prompts.js.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/docs/USAGE_GUIDE.md +19 -0
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -22,39 +22,71 @@ While basic AI spec tools only generate text prompts, `gherkin-ai` acts as an **
|
|
|
22
22
|
|
|
23
23
|
---
|
|
24
24
|
|
|
25
|
-
##
|
|
25
|
+
## š„ Installation & Execution (`v2.0.0-beta.1`)
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
You can use `gherkin-ai` via global `npm` installation, on-demand zero-install `npx`, or as a project local dev dependency:
|
|
28
28
|
|
|
29
|
+
### Option 1: Global Installation (`npm`)
|
|
29
30
|
```bash
|
|
30
|
-
|
|
31
|
+
npm install -g gherkin-ai@beta
|
|
31
32
|
```
|
|
32
|
-
|
|
33
|
-
### 2. Closed-Loop Test Verification with Auto-Fix Loop
|
|
34
|
-
|
|
33
|
+
Once installed globally, you can use `ghk` or `gherkin-ai` CLI commands directly:
|
|
35
34
|
```bash
|
|
36
|
-
|
|
35
|
+
ghk mcp install
|
|
37
36
|
ghk verify --auto-fix
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
ghk verify --auto-fix --docker
|
|
37
|
+
ghk context build
|
|
38
|
+
ghk quality
|
|
41
39
|
```
|
|
42
40
|
|
|
43
|
-
###
|
|
44
|
-
|
|
41
|
+
### Option 2: Zero-Install On-Demand (`npx`)
|
|
42
|
+
Run any `gherkin-ai` command instantly without global installation:
|
|
45
43
|
```bash
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
# Auto-install MCP server for Cursor & Claude Desktop
|
|
45
|
+
npx -y gherkin-ai@beta mcp install
|
|
46
|
+
|
|
47
|
+
# Run closed-loop verification test harness
|
|
48
|
+
npx -y gherkin-ai@beta verify --auto-fix
|
|
48
49
|
|
|
49
|
-
|
|
50
|
+
# Build project context & guardrails (.ghe/)
|
|
51
|
+
npx -y gherkin-ai@beta context build
|
|
50
52
|
|
|
53
|
+
# Calculate feature quality score index
|
|
54
|
+
npx -y gherkin-ai@beta quality
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Option 3: Local Project Dev Dependency
|
|
58
|
+
Add to your project's `devDependencies`:
|
|
51
59
|
```bash
|
|
52
|
-
|
|
60
|
+
npm install --save-dev gherkin-ai@beta
|
|
61
|
+
```
|
|
62
|
+
Then invoke via `npx` or add scripts to your `package.json`:
|
|
63
|
+
```json
|
|
64
|
+
{
|
|
65
|
+
"scripts": {
|
|
66
|
+
"test:verify": "ghk verify --auto-fix",
|
|
67
|
+
"quality:check": "ghk quality"
|
|
68
|
+
}
|
|
69
|
+
}
|
|
53
70
|
```
|
|
54
71
|
|
|
55
|
-
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## š Quick Start Commands
|
|
56
75
|
|
|
57
76
|
```bash
|
|
77
|
+
# 1. Setup MCP Server for Cursor & Claude Desktop
|
|
78
|
+
ghk mcp install # (or: npx -y gherkin-ai@beta mcp install)
|
|
79
|
+
|
|
80
|
+
# 2. Closed-Loop Test Verification with Auto-Fix Loop
|
|
81
|
+
ghk verify --auto-fix
|
|
82
|
+
|
|
83
|
+
# 3. Run inside an isolated Docker sandbox container
|
|
84
|
+
ghk verify --auto-fix --docker
|
|
85
|
+
|
|
86
|
+
# 4. Build Project Context & Policy Engine (.ghe/)
|
|
87
|
+
ghk context build
|
|
88
|
+
|
|
89
|
+
# 5. Calculate Feature Quality Score & PR Gate Compliance
|
|
58
90
|
ghk quality
|
|
59
91
|
```
|
|
60
92
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAWA,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAWA,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiLxI"}
|
package/dist/commands/create.js
CHANGED
|
@@ -18,6 +18,45 @@ async function handleCreateCommand(options) {
|
|
|
18
18
|
const locale = await (0, i18n_cli_1.ensureCliLanguage)(options.lang);
|
|
19
19
|
const isEs = locale === 'es';
|
|
20
20
|
logger_1.logger.info(isEs ? 'Asistente Interactivo Gherkin - Creación paso a paso' : 'Interactive Gherkin Spec Wizard - Step-by-step feature creator');
|
|
21
|
+
if (options.caveman) {
|
|
22
|
+
logger_1.logger.info(isEs ? 'Modo Caveman Activado - Ingreso RƔpido' : 'Caveman Mode Activated - Quick Input');
|
|
23
|
+
const { quickDesc } = await inquirer_1.default.prompt([{
|
|
24
|
+
type: 'input',
|
|
25
|
+
name: 'quickDesc',
|
|
26
|
+
message: isEs ? 'Describe lo que quieres construir con tus propias palabras:' : 'Describe what you want to build in your own words:',
|
|
27
|
+
validate: (input) => input.trim().length > 0 || 'Description cannot be empty.'
|
|
28
|
+
}]);
|
|
29
|
+
const featureKw = isEs ? 'CaracterĆstica:' : 'Feature:';
|
|
30
|
+
const scKw = isEs ? 'Escenario:' : 'Scenario:';
|
|
31
|
+
const givenKw = isEs ? 'Dado' : 'Given';
|
|
32
|
+
let gherkinContent = `${featureKw} Requirement generated from Caveman Mode\n`;
|
|
33
|
+
gherkinContent += ` ${scKw} Main implementation flow\n`;
|
|
34
|
+
gherkinContent += ` ${givenKw} the following requirement:\n """\n ${quickDesc}\n """\n`;
|
|
35
|
+
const defaultFileName = 'caveman_' + Date.now() + '.feature';
|
|
36
|
+
const targetSpecPath = options.output
|
|
37
|
+
? path_1.default.resolve(process.cwd(), options.output)
|
|
38
|
+
: path_1.default.resolve(process.cwd(), 'specs', defaultFileName);
|
|
39
|
+
(0, file_system_1.writeFileSync)(targetSpecPath, gherkinContent);
|
|
40
|
+
logger_1.logger.success(`${(0, i18n_cli_1.t)('specCreated', locale)} ${targetSpecPath}`);
|
|
41
|
+
console.log('\n------------------------------------------------------------');
|
|
42
|
+
console.log(gherkinContent);
|
|
43
|
+
console.log('------------------------------------------------------------\n');
|
|
44
|
+
const injectAnswer = await inquirer_1.default.prompt([
|
|
45
|
+
{
|
|
46
|
+
type: 'confirm',
|
|
47
|
+
name: 'inject',
|
|
48
|
+
message: (0, i18n_cli_1.t)('injectPrompt', locale),
|
|
49
|
+
default: true
|
|
50
|
+
}
|
|
51
|
+
]);
|
|
52
|
+
if (injectAnswer.inject) {
|
|
53
|
+
await (0, add_1.handleAddCommand)({
|
|
54
|
+
feature: targetSpecPath,
|
|
55
|
+
target: options.target
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
21
60
|
const answers = await inquirer_1.default.prompt([
|
|
22
61
|
{
|
|
23
62
|
type: 'input',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":";AAAA;;gFAEgF;;;;;AAShF,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/commands/detect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/commands/detect.ts"],"names":[],"mappings":"AAWA,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CA0DzD"}
|
package/dist/commands/detect.js
CHANGED
|
@@ -8,9 +8,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.handleDetectCommand = handleDetectCommand;
|
|
10
10
|
const path_1 = __importDefault(require("path"));
|
|
11
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
11
12
|
const stack_detector_1 = require("../core/stack-detector");
|
|
12
13
|
const config_1 = require("../core/config");
|
|
13
14
|
const logger_1 = require("../utils/logger");
|
|
15
|
+
const patterns_suggester_1 = require("../core/patterns-suggester");
|
|
14
16
|
async function handleDetectCommand() {
|
|
15
17
|
logger_1.logger.banner();
|
|
16
18
|
logger_1.logger.info('Scanning project directory for existing stack & architecture...');
|
|
@@ -27,6 +29,35 @@ async function handleDetectCommand() {
|
|
|
27
29
|
console.log(`- Validation Library: ${detectedConfig.stack.validation}`);
|
|
28
30
|
console.log(`- Testing Framework: ${detectedConfig.stack.testing}`);
|
|
29
31
|
console.log('------------------------------------------------------------\n');
|
|
32
|
+
const { confirmStack } = await inquirer_1.default.prompt([{
|
|
33
|
+
type: 'confirm',
|
|
34
|
+
name: 'confirmStack',
|
|
35
|
+
message: 'Is the detected stack correct?',
|
|
36
|
+
default: true
|
|
37
|
+
}]);
|
|
38
|
+
if (!confirmStack) {
|
|
39
|
+
logger_1.logger.warn('You can manually edit the generated gherkin-ai.config.json to reflect your actual stack.');
|
|
40
|
+
}
|
|
41
|
+
const suggestions = (0, patterns_suggester_1.suggestPatterns)(detectedConfig.stack, detectedConfig.architecture);
|
|
42
|
+
if (suggestions.designPatterns.length > 0 || suggestions.codingRules.length > 0) {
|
|
43
|
+
console.log('\nš” Suggested Patterns & Rules based on your stack:');
|
|
44
|
+
if (suggestions.designPatterns.length > 0) {
|
|
45
|
+
console.log(`- Design Patterns: ${suggestions.designPatterns.join(', ')}`);
|
|
46
|
+
}
|
|
47
|
+
if (suggestions.codingRules.length > 0) {
|
|
48
|
+
console.log(`- Coding Rules: ${suggestions.codingRules.join(' | ')}`);
|
|
49
|
+
}
|
|
50
|
+
const { applySuggestions } = await inquirer_1.default.prompt([{
|
|
51
|
+
type: 'confirm',
|
|
52
|
+
name: 'applySuggestions',
|
|
53
|
+
message: 'Do you want to apply these design patterns and coding rules to your configuration?',
|
|
54
|
+
default: true
|
|
55
|
+
}]);
|
|
56
|
+
if (applySuggestions) {
|
|
57
|
+
detectedConfig.designPatterns = suggestions.designPatterns;
|
|
58
|
+
detectedConfig.codingRules = suggestions.codingRules;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
30
61
|
const targetPath = path_1.default.join(process.cwd(), 'gherkin-ai.config.json');
|
|
31
62
|
(0, config_1.saveConfig)(detectedConfig, targetPath);
|
|
32
63
|
logger_1.logger.success(`Saved detected project configuration to: ${targetPath}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/commands/detect.ts"],"names":[],"mappings":";AAAA;;gFAEgF;;;;;
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/commands/detect.ts"],"names":[],"mappings":"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"}
|
package/dist/core/config.d.ts
CHANGED
|
@@ -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,CAAC;IAC1C,YAAY,EAAE,KAAK,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,cAAc,CAAC;IAC7I,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;KACjB,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,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,aAAa,EAAE,
|
|
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,CAAC;IAC1C,YAAY,EAAE,KAAK,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,cAAc,CAAC;IAC7I,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;KACjB,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;CACnB;AAED,eAAO,MAAM,aAAa,EAAE,eAuB3B,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
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;;;;;;AAuDhF,gCAcC;AAED,gCAGC;AAxED,gDAAwB;AACxB,sDAAmF;AA2BtE,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;CAC/B,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patterns-suggester.d.ts","sourceRoot":"","sources":["../../src/core/patterns-suggester.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM;;;EAkD/D"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.suggestPatterns = suggestPatterns;
|
|
4
|
+
function suggestPatterns(stack, architecture) {
|
|
5
|
+
const designPatterns = [];
|
|
6
|
+
const codingRules = [
|
|
7
|
+
'Write clean, self-documenting code',
|
|
8
|
+
'Follow DRY and SOLID principles',
|
|
9
|
+
'Ensure proper error handling and logging'
|
|
10
|
+
];
|
|
11
|
+
// Patterns based on architecture
|
|
12
|
+
if (architecture === 'hexagonal' || architecture === 'clean') {
|
|
13
|
+
designPatterns.push('Ports and Adapters', 'Repository Pattern', 'Dependency Injection');
|
|
14
|
+
codingRules.push('Core domain must not depend on external frameworks');
|
|
15
|
+
}
|
|
16
|
+
else if (architecture === 'cqrs') {
|
|
17
|
+
designPatterns.push('Command Query Responsibility Segregation (CQRS)', 'Event Sourcing (Optional)', 'Mediator Pattern');
|
|
18
|
+
}
|
|
19
|
+
// Patterns based on framework
|
|
20
|
+
const framework = stack.framework?.toLowerCase() || '';
|
|
21
|
+
const language = stack.language?.toLowerCase() || '';
|
|
22
|
+
if (framework.includes('react') || framework.includes('next')) {
|
|
23
|
+
designPatterns.push('Hooks Pattern', 'Atomic Design', 'Component-Based Architecture');
|
|
24
|
+
codingRules.push('Use functional components and hooks', 'Avoid prop drilling, use context or state management');
|
|
25
|
+
}
|
|
26
|
+
else if (framework.includes('angular')) {
|
|
27
|
+
designPatterns.push('Observable Pattern (RxJS)', 'Dependency Injection', 'Singleton Services');
|
|
28
|
+
codingRules.push('Use strict TypeScript', 'Unsubscribe from observables to prevent memory leaks');
|
|
29
|
+
}
|
|
30
|
+
else if (framework.includes('spring')) {
|
|
31
|
+
designPatterns.push('MVC Pattern', 'Repository Pattern', 'Factory Pattern');
|
|
32
|
+
codingRules.push('Use constructor injection over field injection (@Autowired)', 'Use Lombok for boilerplate reduction if applicable');
|
|
33
|
+
}
|
|
34
|
+
else if (framework.includes('nestjs')) {
|
|
35
|
+
designPatterns.push('Module Pattern', 'Dependency Injection', 'Decorators');
|
|
36
|
+
codingRules.push('Keep controllers thin, delegate logic to services', 'Use DTOs with validation pipes');
|
|
37
|
+
}
|
|
38
|
+
else if (framework.includes('laravel')) {
|
|
39
|
+
designPatterns.push('MVC Pattern', 'Active Record (Eloquent)', 'Facade Pattern');
|
|
40
|
+
codingRules.push('Use Form Requests for validation', 'Fat models, skinny controllers');
|
|
41
|
+
}
|
|
42
|
+
// Language specific rules
|
|
43
|
+
if (language === 'typescript') {
|
|
44
|
+
codingRules.push('Use strict typings, avoid "any"', 'Prefer interfaces over types for object shapes');
|
|
45
|
+
}
|
|
46
|
+
else if (language === 'python') {
|
|
47
|
+
codingRules.push('Follow PEP-8 style guide', 'Use type hints (PEP 484)');
|
|
48
|
+
}
|
|
49
|
+
else if (language === 'go') {
|
|
50
|
+
codingRules.push('Handle errors explicitly (if err != nil)', 'Prefer composition over inheritance');
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
designPatterns: Array.from(new Set(designPatterns)),
|
|
54
|
+
codingRules: Array.from(new Set(codingRules))
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=patterns-suggester.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patterns-suggester.js","sourceRoot":"","sources":["../../src/core/patterns-suggester.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/generators/prompts.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAIjD,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/generators/prompts.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAIjD,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAuEtG"}
|
|
@@ -9,6 +9,8 @@ const stack_specs_1 = require("../core/stack-specs");
|
|
|
9
9
|
function generatePrompts(parsed, config) {
|
|
10
10
|
const arch = (0, arch_rules_1.getArchRule)(config.architecture);
|
|
11
11
|
const spec = (0, stack_specs_1.getStackSpec)(config.stack);
|
|
12
|
+
const extraPatterns = config.designPatterns && config.designPatterns.length > 0 ? `\n\nš§© Additional Design Patterns:\n${config.designPatterns.map(p => `- ${p}`).join('\n')}` : '';
|
|
13
|
+
const extraRules = config.codingRules && config.codingRules.length > 0 ? `\n\nš Coding Rules:\n${config.codingRules.map(r => `- ${r}`).join('\n')}` : '';
|
|
12
14
|
const domainPrompt = `š¤ ROLE: DOMAIN ARCHITECT AGENT
|
|
13
15
|
Objective: Implement domain entities, value objects, aggregates, and domain event ports according to ${arch.name}.
|
|
14
16
|
|
|
@@ -21,7 +23,7 @@ ${arch.patterns.map(p => `- ${p}`).join('\n')}
|
|
|
21
23
|
š ļø Technical Rails:
|
|
22
24
|
- Language: ${config.stack.language} (ES2022 / Strict TypeScript)
|
|
23
25
|
- Layer Boundary Rule: Core domain must NEVER import framework libraries.
|
|
24
|
-
- Prohibited Core Imports: ${arch.prohibitedImports.join(', ')}
|
|
26
|
+
- Prohibited Core Imports: ${arch.prohibitedImports.join(', ')}${extraPatterns}${extraRules}
|
|
25
27
|
|
|
26
28
|
š Folder Structure Target:
|
|
27
29
|
${arch.folderStructure}
|
|
@@ -41,7 +43,7 @@ Objective: Implement Use Cases, Handlers, Controllers, DTOs, and ORM Persistence
|
|
|
41
43
|
- ORM / Persistence: ${config.stack.orm} (${spec.ormPackage})
|
|
42
44
|
- Validation: ${config.stack.validation} (${spec.validationPackage})
|
|
43
45
|
- Auth & Hash: ${config.stack.auth} (${spec.authPackages.join(', ')}, bcrypt cost ${spec.bcryptCostFactor})
|
|
44
|
-
- Messaging: ${config.stack.messaging} (${spec.messagingPackage})
|
|
46
|
+
- Messaging: ${config.stack.messaging} (${spec.messagingPackage})${extraPatterns}${extraRules}
|
|
45
47
|
|
|
46
48
|
š Contract References:
|
|
47
49
|
- Read interfaces from ./contracts.ts
|
|
@@ -54,7 +56,7 @@ Objective: Implement Use Cases, Handlers, Controllers, DTOs, and ORM Persistence
|
|
|
54
56
|
${parsed.scenarios.map(sc => ` - Endpoint for: "${sc.name}"`).join('\n')}
|
|
55
57
|
`;
|
|
56
58
|
const qaPrompt = `š¤ ROLE: QA & AUTOMATION ENGINEER AGENT
|
|
57
|
-
Objective: Implement automated tests (Unit, Integration, BDD) using ${config.stack.testing} (${spec.testPackages.join(', ')})
|
|
59
|
+
Objective: Implement automated tests (Unit, Integration, BDD) using ${config.stack.testing} (${spec.testPackages.join(', ')}).${extraRules}
|
|
58
60
|
|
|
59
61
|
š Fixture Reference:
|
|
60
62
|
- Use test fixture setup from ./fixtures.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/generators/prompts.ts"],"names":[],"mappings":";AAAA;;gFAEgF;;AAOhF,
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/generators/prompts.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -23,7 +23,7 @@ const program = new commander_1.Command();
|
|
|
23
23
|
program
|
|
24
24
|
.name('gherkin-ai')
|
|
25
25
|
.description('Enterprise-Grade Closed-Loop Agentic Orchestration Engine & Spec-Driven Verification Framework for AI Coding Agents.')
|
|
26
|
-
.version(pkg.version || '2.0.0
|
|
26
|
+
.version(pkg.version || '2.0.0')
|
|
27
27
|
.option('--init', 'Alias for init command')
|
|
28
28
|
.option('--create', 'Alias for create command')
|
|
29
29
|
.option('--generate', 'Alias for generate command')
|
|
@@ -92,6 +92,7 @@ program
|
|
|
92
92
|
.option('-o, --output <file>', 'Output destination for .feature file')
|
|
93
93
|
.option('-t, --target <directory>', 'Target directory to inject contracts')
|
|
94
94
|
.option('-l, --lang <locale>', 'Override CLI interaction language for this run (en or es)')
|
|
95
|
+
.option('-C, --caveman', 'Enable simple prompt creation mode (skip step-by-step wizard)')
|
|
95
96
|
.action(async (options) => {
|
|
96
97
|
await (0, create_1.handleCreateCommand)(options);
|
|
97
98
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;gFAEgF;;AAEhF,yCAAoC;AACpC,0CAAoD;AACpD,kDAA4D;AAC5D,kDAA4D;AAC5D,8CAAwD;AACxD,8CAAwD;AACxD,wCAAkD;AAClD,8CAAwD;AACxD,0CAAoD;AACpD,wCAAkD;AAClD,8CAAwD;AACxD,gDAA0D;AAC1D,gDAA0D;AAC1D,oDAA8D;AAE9D,oCAAoC;AACpC,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEvC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,sHAAsH,CAAC;KACnI,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/docs/USAGE_GUIDE.md
CHANGED
|
@@ -4,6 +4,25 @@ Comprehensive reference guide for using `gherkin-ai` closed-loop verification, c
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## š„ Installation & Execution Guide (`v2.0.0-beta.1`)
|
|
8
|
+
|
|
9
|
+
### 1. Global Installation via `npm`
|
|
10
|
+
```bash
|
|
11
|
+
npm install -g gherkin-ai@beta
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
### 2. On-Demand Zero-Install via `npx`
|
|
15
|
+
```bash
|
|
16
|
+
npx -y gherkin-ai@beta <command>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### 3. Project Dev Dependency via `npm`
|
|
20
|
+
```bash
|
|
21
|
+
npm install --save-dev gherkin-ai@beta
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
7
26
|
## š Command Summary
|
|
8
27
|
|
|
9
28
|
| Command | Alias | Description |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gherkin-ai",
|
|
3
|
-
"version": "2.0.0
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Enterprise-Grade Closed-Loop Agentic Orchestration Engine & Spec-Driven Verification Framework for AI Coding Agents.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
],
|
|
47
47
|
"author": "Fenner Eduardo <contact@fennereduardo.com> (https://fennereduardo.com)",
|
|
48
48
|
"license": "MIT",
|
|
49
|
-
"homepage": "https://fennereduardo.com/pages/
|
|
49
|
+
"homepage": "https://fennereduardo.com/pages/gherkin-ai-agent-architect",
|
|
50
50
|
"repository": {
|
|
51
51
|
"type": "git",
|
|
52
52
|
"url": "git+https://github.com/FennerEduardo/gherkin-ai-cli.git"
|
|
@@ -60,7 +60,8 @@
|
|
|
60
60
|
"dev": "npx tsc --watch",
|
|
61
61
|
"test": "npx ts-node tests/parser.test.ts",
|
|
62
62
|
"prepublishOnly": "npm run build",
|
|
63
|
-
"publish:beta": "npm run build && npm publish --tag beta"
|
|
63
|
+
"publish:beta": "npm run build && npm publish --tag beta",
|
|
64
|
+
"publish:prod": "npm run build && npm publish"
|
|
64
65
|
},
|
|
65
66
|
"engines": {
|
|
66
67
|
"node": ">=18.0.0"
|