@ironbackend/prompts 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +115 -0
- package/dist/builders/context-builder.js +13 -21
- package/dist/builders/context-builder.js.map +1 -1
- package/dist/builders/index.js +2 -17
- package/dist/builders/index.js.map +1 -1
- package/dist/builders/prompt-builder.js +16 -24
- package/dist/builders/prompt-builder.js.map +1 -1
- package/dist/index.js +5 -32
- package/dist/index.js.map +1 -1
- package/dist/templates/index.js +4 -18
- package/dist/templates/index.js.map +1 -1
- package/dist/templates/rule-enforcement.js +9 -15
- package/dist/templates/rule-enforcement.js.map +1 -1
- package/dist/templates/stack-selection.js +3 -8
- package/dist/templates/stack-selection.js.map +1 -1
- package/dist/templates/style-selection.js +4 -8
- package/dist/templates/style-selection.js.map +1 -1
- package/dist/templates/system.js +9 -13
- package/dist/templates/system.js.map +1 -1
- package/package.json +3 -2
package/README.md
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# @ironbackend/prompts
|
|
2
|
+
|
|
3
|
+
AI prompt builders for IronBackend architecture knowledge.
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@ironbackend/prompts)
|
|
6
|
+
[](../../LICENSE)
|
|
7
|
+
|
|
8
|
+
## What's Inside
|
|
9
|
+
|
|
10
|
+
Transform architecture knowledge from `@ironbackend/core` into AI-consumable prompts.
|
|
11
|
+
|
|
12
|
+
- **System Prompt Builder** - Generate complete system prompts for AI assistants
|
|
13
|
+
- **Context Builder** - Build context-aware prompts with style + stack + rules
|
|
14
|
+
- **Rule Formatter** - Format design rules for LLM consumption
|
|
15
|
+
|
|
16
|
+
## Installation
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install @ironbackend/prompts @ironbackend/core
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Usage
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
import { buildSystemPrompt } from '@ironbackend/prompts';
|
|
26
|
+
import { getStyle, getStack, allRules } from '@ironbackend/core';
|
|
27
|
+
|
|
28
|
+
// Build a complete system prompt
|
|
29
|
+
const prompt = buildSystemPrompt({
|
|
30
|
+
style: getStyle('hexagonal'),
|
|
31
|
+
stack: getStack('node-nestjs'),
|
|
32
|
+
rules: allRules,
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
console.log(prompt);
|
|
36
|
+
// Output:
|
|
37
|
+
// # IronBackend System Prompt
|
|
38
|
+
//
|
|
39
|
+
// You are a senior backend engineer with 10+ years of experience
|
|
40
|
+
// in Hexagonal Architecture using Node.js/NestJS.
|
|
41
|
+
//
|
|
42
|
+
// ## Core Principles
|
|
43
|
+
// 1. Domain and application core have no external dependencies
|
|
44
|
+
// 2. Ports define what the application needs or provides
|
|
45
|
+
// ...
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## API Reference
|
|
49
|
+
|
|
50
|
+
### buildSystemPrompt
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
interface BuildSystemPromptOptions {
|
|
54
|
+
style: ArchitectureStyle;
|
|
55
|
+
stack: TechStack;
|
|
56
|
+
rules: DesignRule[];
|
|
57
|
+
includeSecurityPlaybook?: boolean;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function buildSystemPrompt(options: BuildSystemPromptOptions): string;
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### buildContext
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
interface BuildContextOptions {
|
|
67
|
+
style?: ArchitectureStyle;
|
|
68
|
+
stack?: TechStack;
|
|
69
|
+
rules?: DesignRule[];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function buildContext(options: BuildContextOptions): string;
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### formatRulesForPrompt
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
function formatRulesForPrompt(rules: DesignRule[]): string;
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Example Output
|
|
82
|
+
|
|
83
|
+
The generated prompt includes:
|
|
84
|
+
|
|
85
|
+
1. **Role Definition** - Senior engineer persona with chosen style/stack
|
|
86
|
+
2. **Core Principles** - Architecture fundamentals
|
|
87
|
+
3. **Folder Structure** - Recommended project layout
|
|
88
|
+
4. **Enforced Rules** - Design rules with severity levels
|
|
89
|
+
5. **Code Generation Guidelines** - Best practices for the AI
|
|
90
|
+
|
|
91
|
+
```markdown
|
|
92
|
+
# IronBackend System Prompt
|
|
93
|
+
|
|
94
|
+
You are a senior backend engineer specializing in
|
|
95
|
+
Hexagonal Architecture with Node.js/NestJS.
|
|
96
|
+
|
|
97
|
+
## Enforced Rules
|
|
98
|
+
[ERROR] API-001: All endpoints must have explicit request/response schemas
|
|
99
|
+
[ERROR] DOM-005: Domain logic must not depend on framework code
|
|
100
|
+
[WARN] ERR-003: Log errors with correlation IDs
|
|
101
|
+
|
|
102
|
+
## When Generating Code
|
|
103
|
+
- Controllers handle HTTP only, delegate to services
|
|
104
|
+
- All external dependencies injected via interfaces
|
|
105
|
+
- Include proper error handling per ERR-* rules
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Related Packages
|
|
109
|
+
|
|
110
|
+
- [`ironbackend`](https://www.npmjs.com/package/ironbackend) - CLI tool
|
|
111
|
+
- [`@ironbackend/core`](https://www.npmjs.com/package/@ironbackend/core) - Knowledge base
|
|
112
|
+
|
|
113
|
+
## License
|
|
114
|
+
|
|
115
|
+
MIT
|
|
@@ -1,23 +1,15 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Context Builder
|
|
4
3
|
* Build context objects for prompt generation
|
|
5
4
|
*/
|
|
6
|
-
|
|
7
|
-
exports.buildContextFromConfig = buildContextFromConfig;
|
|
8
|
-
exports.buildContext = buildContext;
|
|
9
|
-
exports.validateContext = validateContext;
|
|
10
|
-
exports.getContextSummary = getContextSummary;
|
|
11
|
-
exports.serializeContext = serializeContext;
|
|
12
|
-
exports.deserializeContext = deserializeContext;
|
|
13
|
-
const core_1 = require("@ironbackend/core");
|
|
5
|
+
import { getStyle, getStack } from '@ironbackend/core';
|
|
14
6
|
/**
|
|
15
7
|
* Build context from IronBackend config file
|
|
16
8
|
*/
|
|
17
|
-
function buildContextFromConfig(config) {
|
|
9
|
+
export function buildContextFromConfig(config) {
|
|
18
10
|
return {
|
|
19
|
-
style: config.style ?
|
|
20
|
-
stack: config.stack ?
|
|
11
|
+
style: config.style ? getStyle(config.style) ?? null : null,
|
|
12
|
+
stack: config.stack ? getStack(config.stack) ?? null : null,
|
|
21
13
|
enabledRules: config.rules.enabled,
|
|
22
14
|
securityEnabled: true,
|
|
23
15
|
metadata: {}
|
|
@@ -26,14 +18,14 @@ function buildContextFromConfig(config) {
|
|
|
26
18
|
/**
|
|
27
19
|
* Build context interactively
|
|
28
20
|
*/
|
|
29
|
-
function buildContext(options) {
|
|
21
|
+
export function buildContext(options) {
|
|
30
22
|
const allCategories = [
|
|
31
23
|
'API', 'DOMAIN', 'ERROR_HANDLING', 'TRANSACTIONS',
|
|
32
24
|
'DATA_ACCESS', 'NAMING', 'VALIDATION', 'ASYNC'
|
|
33
25
|
];
|
|
34
26
|
return {
|
|
35
|
-
style: options.styleId ?
|
|
36
|
-
stack: options.stackId ?
|
|
27
|
+
style: options.styleId ? getStyle(options.styleId) ?? null : null,
|
|
28
|
+
stack: options.stackId ? getStack(options.stackId) ?? null : null,
|
|
37
29
|
enabledRules: options.ruleCategories ?? allCategories,
|
|
38
30
|
securityEnabled: true,
|
|
39
31
|
metadata: {}
|
|
@@ -42,7 +34,7 @@ function buildContext(options) {
|
|
|
42
34
|
/**
|
|
43
35
|
* Validate context completeness
|
|
44
36
|
*/
|
|
45
|
-
function validateContext(context) {
|
|
37
|
+
export function validateContext(context) {
|
|
46
38
|
const errors = [];
|
|
47
39
|
if (!context.style) {
|
|
48
40
|
errors.push('No architecture style selected');
|
|
@@ -61,7 +53,7 @@ function validateContext(context) {
|
|
|
61
53
|
/**
|
|
62
54
|
* Get context summary for display
|
|
63
55
|
*/
|
|
64
|
-
function getContextSummary(context) {
|
|
56
|
+
export function getContextSummary(context) {
|
|
65
57
|
const lines = [];
|
|
66
58
|
if (context.style) {
|
|
67
59
|
lines.push(`Style: ${context.style.name}`);
|
|
@@ -76,7 +68,7 @@ function getContextSummary(context) {
|
|
|
76
68
|
/**
|
|
77
69
|
* Serialize context for storage
|
|
78
70
|
*/
|
|
79
|
-
function serializeContext(context) {
|
|
71
|
+
export function serializeContext(context) {
|
|
80
72
|
return JSON.stringify({
|
|
81
73
|
styleId: context.style?.id,
|
|
82
74
|
stackId: context.stack?.id,
|
|
@@ -88,11 +80,11 @@ function serializeContext(context) {
|
|
|
88
80
|
/**
|
|
89
81
|
* Deserialize context from storage
|
|
90
82
|
*/
|
|
91
|
-
function deserializeContext(json) {
|
|
83
|
+
export function deserializeContext(json) {
|
|
92
84
|
const data = JSON.parse(json);
|
|
93
85
|
return {
|
|
94
|
-
style: data.styleId ?
|
|
95
|
-
stack: data.stackId ?
|
|
86
|
+
style: data.styleId ? getStyle(data.styleId) ?? null : null,
|
|
87
|
+
stack: data.stackId ? getStack(data.stackId) ?? null : null,
|
|
96
88
|
enabledRules: data.enabledRules ?? [],
|
|
97
89
|
securityEnabled: data.securityEnabled ?? true,
|
|
98
90
|
metadata: data.metadata ?? {}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-builder.js","sourceRoot":"","sources":["../../src/builders/context-builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context-builder.js","sourceRoot":"","sources":["../../src/builders/context-builder.ts"],"names":[],"mappings":"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"}
|
package/dist/builders/index.js
CHANGED
|
@@ -1,21 +1,6 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Builders Export
|
|
4
3
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
var prompt_builder_js_1 = require("./prompt-builder.js");
|
|
8
|
-
Object.defineProperty(exports, "formatFolderStructure", { enumerable: true, get: function () { return prompt_builder_js_1.formatFolderStructure; } });
|
|
9
|
-
Object.defineProperty(exports, "formatFolderTree", { enumerable: true, get: function () { return prompt_builder_js_1.formatFolderTree; } });
|
|
10
|
-
Object.defineProperty(exports, "buildPrompt", { enumerable: true, get: function () { return prompt_builder_js_1.buildPrompt; } });
|
|
11
|
-
Object.defineProperty(exports, "buildPromptSections", { enumerable: true, get: function () { return prompt_builder_js_1.buildPromptSections; } });
|
|
12
|
-
Object.defineProperty(exports, "estimateTokenCount", { enumerable: true, get: function () { return prompt_builder_js_1.estimateTokenCount; } });
|
|
13
|
-
Object.defineProperty(exports, "truncatePrompt", { enumerable: true, get: function () { return prompt_builder_js_1.truncatePrompt; } });
|
|
14
|
-
var context_builder_js_1 = require("./context-builder.js");
|
|
15
|
-
Object.defineProperty(exports, "buildContextFromConfig", { enumerable: true, get: function () { return context_builder_js_1.buildContextFromConfig; } });
|
|
16
|
-
Object.defineProperty(exports, "buildContext", { enumerable: true, get: function () { return context_builder_js_1.buildContext; } });
|
|
17
|
-
Object.defineProperty(exports, "validateContext", { enumerable: true, get: function () { return context_builder_js_1.validateContext; } });
|
|
18
|
-
Object.defineProperty(exports, "getContextSummary", { enumerable: true, get: function () { return context_builder_js_1.getContextSummary; } });
|
|
19
|
-
Object.defineProperty(exports, "serializeContext", { enumerable: true, get: function () { return context_builder_js_1.serializeContext; } });
|
|
20
|
-
Object.defineProperty(exports, "deserializeContext", { enumerable: true, get: function () { return context_builder_js_1.deserializeContext; } });
|
|
4
|
+
export { formatFolderStructure, formatFolderTree, buildPrompt, buildPromptSections, estimateTokenCount, truncatePrompt } from './prompt-builder.js';
|
|
5
|
+
export { buildContextFromConfig, buildContext, validateContext, getContextSummary, serializeContext, deserializeContext } from './context-builder.js';
|
|
21
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/builders/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/builders/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACH,qBAAqB,EACrB,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACjB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACH,sBAAsB,EACtB,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EACrB,MAAM,sBAAsB,CAAC"}
|
|
@@ -1,21 +1,13 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Prompt Builder
|
|
4
3
|
* Utilities for building and composing prompts
|
|
5
4
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
exports.formatFolderTree = formatFolderTree;
|
|
9
|
-
exports.buildPrompt = buildPrompt;
|
|
10
|
-
exports.buildPromptSections = buildPromptSections;
|
|
11
|
-
exports.estimateTokenCount = estimateTokenCount;
|
|
12
|
-
exports.truncatePrompt = truncatePrompt;
|
|
13
|
-
const core_1 = require("@ironbackend/core");
|
|
14
|
-
const index_js_1 = require("../templates/index.js");
|
|
5
|
+
import { getStyle, getStack } from '@ironbackend/core';
|
|
6
|
+
import { generateSystemPrompt, generateStylePrompt, generateStackPrompt, generateRuleEnforcementPrompt } from '../templates/index.js';
|
|
15
7
|
/**
|
|
16
8
|
* Format folder structure for display in prompts
|
|
17
9
|
*/
|
|
18
|
-
function formatFolderStructure(node, indent = 0) {
|
|
10
|
+
export function formatFolderStructure(node, indent = 0) {
|
|
19
11
|
const prefix = ' '.repeat(indent);
|
|
20
12
|
const icon = node.type === 'folder' ? '📁' : '📄';
|
|
21
13
|
const desc = node.description ? ` # ${node.description}` : '';
|
|
@@ -30,7 +22,7 @@ function formatFolderStructure(node, indent = 0) {
|
|
|
30
22
|
/**
|
|
31
23
|
* Format folder structure as tree (without emojis)
|
|
32
24
|
*/
|
|
33
|
-
function formatFolderTree(node, indent = 0, isLast = true) {
|
|
25
|
+
export function formatFolderTree(node, indent = 0, isLast = true) {
|
|
34
26
|
const prefix = indent === 0 ? '' : (isLast ? '└── ' : '├── ');
|
|
35
27
|
const linePrefix = indent === 0 ? '' : '│ '.repeat(indent - 1) + prefix;
|
|
36
28
|
let result = `${linePrefix}${node.name}/`;
|
|
@@ -46,15 +38,15 @@ function formatFolderTree(node, indent = 0, isLast = true) {
|
|
|
46
38
|
/**
|
|
47
39
|
* Build a complete prompt from configuration
|
|
48
40
|
*/
|
|
49
|
-
function buildPrompt(config) {
|
|
50
|
-
const style =
|
|
51
|
-
const stack =
|
|
41
|
+
export function buildPrompt(config) {
|
|
42
|
+
const style = getStyle(config.styleId);
|
|
43
|
+
const stack = getStack(config.stackId);
|
|
52
44
|
if (!style || !stack) {
|
|
53
45
|
throw new Error(`Invalid style (${config.styleId}) or stack (${config.stackId})`);
|
|
54
46
|
}
|
|
55
47
|
const sections = [];
|
|
56
48
|
// System prompt
|
|
57
|
-
sections.push(
|
|
49
|
+
sections.push(generateSystemPrompt({
|
|
58
50
|
style,
|
|
59
51
|
stack,
|
|
60
52
|
includeRules: config.includeRules ?? true,
|
|
@@ -65,30 +57,30 @@ function buildPrompt(config) {
|
|
|
65
57
|
/**
|
|
66
58
|
* Build modular prompt sections (for composability)
|
|
67
59
|
*/
|
|
68
|
-
function buildPromptSections(config) {
|
|
69
|
-
const style =
|
|
70
|
-
const stack =
|
|
60
|
+
export function buildPromptSections(config) {
|
|
61
|
+
const style = getStyle(config.styleId);
|
|
62
|
+
const stack = getStack(config.stackId);
|
|
71
63
|
if (!style || !stack) {
|
|
72
64
|
throw new Error(`Invalid style (${config.styleId}) or stack (${config.stackId})`);
|
|
73
65
|
}
|
|
74
66
|
return {
|
|
75
|
-
style:
|
|
76
|
-
stack:
|
|
77
|
-
rules:
|
|
67
|
+
style: generateStylePrompt(style),
|
|
68
|
+
stack: generateStackPrompt(stack),
|
|
69
|
+
rules: generateRuleEnforcementPrompt(config.ruleCategories),
|
|
78
70
|
combined: buildPrompt(config)
|
|
79
71
|
};
|
|
80
72
|
}
|
|
81
73
|
/**
|
|
82
74
|
* Count tokens (rough estimate)
|
|
83
75
|
*/
|
|
84
|
-
function estimateTokenCount(text) {
|
|
76
|
+
export function estimateTokenCount(text) {
|
|
85
77
|
// Rough estimate: 1 token ≈ 4 characters
|
|
86
78
|
return Math.ceil(text.length / 4);
|
|
87
79
|
}
|
|
88
80
|
/**
|
|
89
81
|
* Truncate prompt to fit token limit
|
|
90
82
|
*/
|
|
91
|
-
function truncatePrompt(prompt, maxTokens) {
|
|
83
|
+
export function truncatePrompt(prompt, maxTokens) {
|
|
92
84
|
const currentTokens = estimateTokenCount(prompt);
|
|
93
85
|
if (currentTokens <= maxTokens) {
|
|
94
86
|
return prompt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../src/builders/prompt-builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../src/builders/prompt-builder.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,43 +1,16 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @ironbackend/prompts
|
|
4
3
|
* AI Prompt Templates for IronBackend
|
|
5
4
|
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.deserializeContext = exports.serializeContext = exports.getContextSummary = exports.validateContext = exports.buildContext = exports.buildContextFromConfig = exports.truncatePrompt = exports.estimateTokenCount = exports.buildPromptSections = exports.buildPrompt = exports.formatFolderTree = exports.formatFolderStructure = exports.generateRuleExamplesPrompt = exports.generateCompactRulesPrompt = exports.generateCategoryEnforcementPrompt = exports.generateRuleEnforcementPrompt = exports.generateStackComparisonPrompt = exports.generateStackCodeStyle = exports.generateStackPrompt = exports.generateStyleComparisonPrompt = exports.generateStylePrompt = exports.generateMinimalSystemPrompt = exports.generateSystemPrompt = void 0;
|
|
8
|
-
exports.quickPrompt = quickPrompt;
|
|
9
5
|
// Templates
|
|
10
|
-
|
|
11
|
-
Object.defineProperty(exports, "generateSystemPrompt", { enumerable: true, get: function () { return index_js_1.generateSystemPrompt; } });
|
|
12
|
-
Object.defineProperty(exports, "generateMinimalSystemPrompt", { enumerable: true, get: function () { return index_js_1.generateMinimalSystemPrompt; } });
|
|
13
|
-
Object.defineProperty(exports, "generateStylePrompt", { enumerable: true, get: function () { return index_js_1.generateStylePrompt; } });
|
|
14
|
-
Object.defineProperty(exports, "generateStyleComparisonPrompt", { enumerable: true, get: function () { return index_js_1.generateStyleComparisonPrompt; } });
|
|
15
|
-
Object.defineProperty(exports, "generateStackPrompt", { enumerable: true, get: function () { return index_js_1.generateStackPrompt; } });
|
|
16
|
-
Object.defineProperty(exports, "generateStackCodeStyle", { enumerable: true, get: function () { return index_js_1.generateStackCodeStyle; } });
|
|
17
|
-
Object.defineProperty(exports, "generateStackComparisonPrompt", { enumerable: true, get: function () { return index_js_1.generateStackComparisonPrompt; } });
|
|
18
|
-
Object.defineProperty(exports, "generateRuleEnforcementPrompt", { enumerable: true, get: function () { return index_js_1.generateRuleEnforcementPrompt; } });
|
|
19
|
-
Object.defineProperty(exports, "generateCategoryEnforcementPrompt", { enumerable: true, get: function () { return index_js_1.generateCategoryEnforcementPrompt; } });
|
|
20
|
-
Object.defineProperty(exports, "generateCompactRulesPrompt", { enumerable: true, get: function () { return index_js_1.generateCompactRulesPrompt; } });
|
|
21
|
-
Object.defineProperty(exports, "generateRuleExamplesPrompt", { enumerable: true, get: function () { return index_js_1.generateRuleExamplesPrompt; } });
|
|
6
|
+
export { generateSystemPrompt, generateMinimalSystemPrompt, generateStylePrompt, generateStyleComparisonPrompt, generateStackPrompt, generateStackCodeStyle, generateStackComparisonPrompt, generateRuleEnforcementPrompt, generateCategoryEnforcementPrompt, generateCompactRulesPrompt, generateRuleExamplesPrompt } from './templates/index.js';
|
|
22
7
|
// Builders
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
Object.defineProperty(exports, "formatFolderTree", { enumerable: true, get: function () { return index_js_2.formatFolderTree; } });
|
|
26
|
-
Object.defineProperty(exports, "buildPrompt", { enumerable: true, get: function () { return index_js_2.buildPrompt; } });
|
|
27
|
-
Object.defineProperty(exports, "buildPromptSections", { enumerable: true, get: function () { return index_js_2.buildPromptSections; } });
|
|
28
|
-
Object.defineProperty(exports, "estimateTokenCount", { enumerable: true, get: function () { return index_js_2.estimateTokenCount; } });
|
|
29
|
-
Object.defineProperty(exports, "truncatePrompt", { enumerable: true, get: function () { return index_js_2.truncatePrompt; } });
|
|
30
|
-
Object.defineProperty(exports, "buildContextFromConfig", { enumerable: true, get: function () { return index_js_2.buildContextFromConfig; } });
|
|
31
|
-
Object.defineProperty(exports, "buildContext", { enumerable: true, get: function () { return index_js_2.buildContext; } });
|
|
32
|
-
Object.defineProperty(exports, "validateContext", { enumerable: true, get: function () { return index_js_2.validateContext; } });
|
|
33
|
-
Object.defineProperty(exports, "getContextSummary", { enumerable: true, get: function () { return index_js_2.getContextSummary; } });
|
|
34
|
-
Object.defineProperty(exports, "serializeContext", { enumerable: true, get: function () { return index_js_2.serializeContext; } });
|
|
35
|
-
Object.defineProperty(exports, "deserializeContext", { enumerable: true, get: function () { return index_js_2.deserializeContext; } });
|
|
36
|
-
const index_js_3 = require("./builders/index.js");
|
|
8
|
+
export { formatFolderStructure, formatFolderTree, buildPrompt, buildPromptSections, estimateTokenCount, truncatePrompt, buildContextFromConfig, buildContext, validateContext, getContextSummary, serializeContext, deserializeContext } from './builders/index.js';
|
|
9
|
+
import { buildPrompt as _buildPrompt } from './builders/index.js';
|
|
37
10
|
/**
|
|
38
11
|
* Quick prompt generation
|
|
39
12
|
*/
|
|
40
|
-
function quickPrompt(styleId, stackId) {
|
|
41
|
-
return (
|
|
13
|
+
export function quickPrompt(styleId, stackId) {
|
|
14
|
+
return _buildPrompt({ styleId, stackId });
|
|
42
15
|
}
|
|
43
16
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY;AACZ,OAAO,EACH,oBAAoB,EACpB,2BAA2B,EAC3B,mBAAmB,EACnB,6BAA6B,EAC7B,mBAAmB,EACnB,sBAAsB,EACtB,6BAA6B,EAC7B,6BAA6B,EAC7B,iCAAiC,EACjC,0BAA0B,EAC1B,0BAA0B,EAC7B,MAAM,sBAAsB,CAAC;AAG9B,WAAW;AACX,OAAO,EACH,qBAAqB,EACrB,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EACrB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAElE;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,OAAe;IACxD,OAAO,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAC9C,CAAC"}
|
package/dist/templates/index.js
CHANGED
|
@@ -1,22 +1,8 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Prompt Templates Export
|
|
4
3
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
Object.defineProperty(exports, "generateMinimalSystemPrompt", { enumerable: true, get: function () { return system_js_1.generateMinimalSystemPrompt; } });
|
|
10
|
-
var style_selection_js_1 = require("./style-selection.js");
|
|
11
|
-
Object.defineProperty(exports, "generateStylePrompt", { enumerable: true, get: function () { return style_selection_js_1.generateStylePrompt; } });
|
|
12
|
-
Object.defineProperty(exports, "generateStyleComparisonPrompt", { enumerable: true, get: function () { return style_selection_js_1.generateStyleComparisonPrompt; } });
|
|
13
|
-
var stack_selection_js_1 = require("./stack-selection.js");
|
|
14
|
-
Object.defineProperty(exports, "generateStackPrompt", { enumerable: true, get: function () { return stack_selection_js_1.generateStackPrompt; } });
|
|
15
|
-
Object.defineProperty(exports, "generateStackCodeStyle", { enumerable: true, get: function () { return stack_selection_js_1.generateStackCodeStyle; } });
|
|
16
|
-
Object.defineProperty(exports, "generateStackComparisonPrompt", { enumerable: true, get: function () { return stack_selection_js_1.generateStackComparisonPrompt; } });
|
|
17
|
-
var rule_enforcement_js_1 = require("./rule-enforcement.js");
|
|
18
|
-
Object.defineProperty(exports, "generateRuleEnforcementPrompt", { enumerable: true, get: function () { return rule_enforcement_js_1.generateRuleEnforcementPrompt; } });
|
|
19
|
-
Object.defineProperty(exports, "generateCategoryEnforcementPrompt", { enumerable: true, get: function () { return rule_enforcement_js_1.generateCategoryEnforcementPrompt; } });
|
|
20
|
-
Object.defineProperty(exports, "generateCompactRulesPrompt", { enumerable: true, get: function () { return rule_enforcement_js_1.generateCompactRulesPrompt; } });
|
|
21
|
-
Object.defineProperty(exports, "generateRuleExamplesPrompt", { enumerable: true, get: function () { return rule_enforcement_js_1.generateRuleExamplesPrompt; } });
|
|
4
|
+
export { generateSystemPrompt, generateMinimalSystemPrompt } from './system.js';
|
|
5
|
+
export { generateStylePrompt, generateStyleComparisonPrompt } from './style-selection.js';
|
|
6
|
+
export { generateStackPrompt, generateStackCodeStyle, generateStackComparisonPrompt } from './stack-selection.js';
|
|
7
|
+
export { generateRuleEnforcementPrompt, generateCategoryEnforcementPrompt, generateCompactRulesPrompt, generateRuleExamplesPrompt } from './rule-enforcement.js';
|
|
22
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAGhF,OAAO,EAAE,mBAAmB,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAE1F,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAElH,OAAO,EACH,6BAA6B,EAC7B,iCAAiC,EACjC,0BAA0B,EAC1B,0BAA0B,EAC7B,MAAM,uBAAuB,CAAC"}
|
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Rule Enforcement Prompt Template
|
|
4
3
|
* Prompts for enforcing design rules
|
|
5
4
|
*/
|
|
6
|
-
|
|
7
|
-
exports.generateRuleEnforcementPrompt = generateRuleEnforcementPrompt;
|
|
8
|
-
exports.generateCategoryEnforcementPrompt = generateCategoryEnforcementPrompt;
|
|
9
|
-
exports.generateCompactRulesPrompt = generateCompactRulesPrompt;
|
|
10
|
-
exports.generateRuleExamplesPrompt = generateRuleExamplesPrompt;
|
|
11
|
-
const core_1 = require("@ironbackend/core");
|
|
5
|
+
import { rulesByCategory, formatRulesForPrompt, getErrorRules } from '@ironbackend/core';
|
|
12
6
|
/**
|
|
13
7
|
* Generate rule enforcement prompt
|
|
14
8
|
*/
|
|
15
|
-
function generateRuleEnforcementPrompt(categories = ['API', 'DOMAIN', 'ERROR_HANDLING', 'DATA_ACCESS']) {
|
|
9
|
+
export function generateRuleEnforcementPrompt(categories = ['API', 'DOMAIN', 'ERROR_HANDLING', 'DATA_ACCESS']) {
|
|
16
10
|
const sections = [];
|
|
17
11
|
sections.push(`# Design Rules Enforcement
|
|
18
12
|
|
|
@@ -24,11 +18,11 @@ function generateRuleEnforcementPrompt(categories = ['API', 'DOMAIN', 'ERROR_HAN
|
|
|
24
18
|
---`);
|
|
25
19
|
// Add rules by category
|
|
26
20
|
for (const category of categories) {
|
|
27
|
-
const rules =
|
|
21
|
+
const rules = rulesByCategory[category];
|
|
28
22
|
if (rules && rules.length > 0) {
|
|
29
23
|
sections.push(`## ${formatCategoryName(category)} Rules
|
|
30
24
|
|
|
31
|
-
${
|
|
25
|
+
${formatRulesForPrompt(rules)}
|
|
32
26
|
`);
|
|
33
27
|
}
|
|
34
28
|
}
|
|
@@ -51,8 +45,8 @@ Before completing any code generation, verify:
|
|
|
51
45
|
/**
|
|
52
46
|
* Generate a focused enforcement prompt for specific categories
|
|
53
47
|
*/
|
|
54
|
-
function generateCategoryEnforcementPrompt(category) {
|
|
55
|
-
const rules =
|
|
48
|
+
export function generateCategoryEnforcementPrompt(category) {
|
|
49
|
+
const rules = rulesByCategory[category] || [];
|
|
56
50
|
const errorRules = rules.filter(r => r.severity === 'ERROR');
|
|
57
51
|
const warnRules = rules.filter(r => r.severity === 'WARN');
|
|
58
52
|
return `# ${formatCategoryName(category)} Rules
|
|
@@ -70,8 +64,8 @@ ${r.rationale ? `*Rationale: ${r.rationale}*` : ''}`).join('\n\n')}`;
|
|
|
70
64
|
/**
|
|
71
65
|
* Generate a compact rules summary for limited context
|
|
72
66
|
*/
|
|
73
|
-
function generateCompactRulesPrompt() {
|
|
74
|
-
const errorRules =
|
|
67
|
+
export function generateCompactRulesPrompt() {
|
|
68
|
+
const errorRules = getErrorRules();
|
|
75
69
|
return `# Critical Design Rules (Must Follow)
|
|
76
70
|
|
|
77
71
|
${errorRules.map(r => `- ${r.id}: ${r.rule}`).join('\n')}`;
|
|
@@ -79,7 +73,7 @@ ${errorRules.map(r => `- ${r.id}: ${r.rule}`).join('\n')}`;
|
|
|
79
73
|
/**
|
|
80
74
|
* Generate rule violation examples
|
|
81
75
|
*/
|
|
82
|
-
function generateRuleExamplesPrompt(rules) {
|
|
76
|
+
export function generateRuleExamplesPrompt(rules) {
|
|
83
77
|
const sections = rules.map(rule => {
|
|
84
78
|
if (!rule.examples || rule.examples.length === 0) {
|
|
85
79
|
return '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-enforcement.js","sourceRoot":"","sources":["../../src/templates/rule-enforcement.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rule-enforcement.js","sourceRoot":"","sources":["../../src/templates/rule-enforcement.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,11 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Stack Selection Prompt Template
|
|
4
3
|
* Prompt for when a tech stack is selected
|
|
5
4
|
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.generateStackPrompt = generateStackPrompt;
|
|
8
|
-
exports.generateStackCodeStyle = generateStackCodeStyle;
|
|
9
|
-
exports.generateStackComparisonPrompt = generateStackComparisonPrompt;
|
|
10
5
|
/**
|
|
11
6
|
* Generate a stack-specific prompt section
|
|
12
7
|
*/
|
|
13
|
-
function generateStackPrompt(stack) {
|
|
8
|
+
export function generateStackPrompt(stack) {
|
|
14
9
|
return `# Technology Stack: ${stack.name}
|
|
15
10
|
|
|
16
11
|
## Language & Framework
|
|
@@ -65,7 +60,7 @@ Handle HTTP concerns only, delegate to services.`;
|
|
|
65
60
|
/**
|
|
66
61
|
* Generate stack-specific code style hints
|
|
67
62
|
*/
|
|
68
|
-
function generateStackCodeStyle(stack) {
|
|
63
|
+
export function generateStackCodeStyle(stack) {
|
|
69
64
|
const codeStyles = {
|
|
70
65
|
'node-nestjs': `// NestJS Style
|
|
71
66
|
@Injectable()
|
|
@@ -117,7 +112,7 @@ class UserService:
|
|
|
117
112
|
/**
|
|
118
113
|
* Generate stack comparison for selection
|
|
119
114
|
*/
|
|
120
|
-
function generateStackComparisonPrompt(stacks) {
|
|
115
|
+
export function generateStackComparisonPrompt(stacks) {
|
|
121
116
|
const header = `# Technology Stack Selection Guide
|
|
122
117
|
|
|
123
118
|
Choose the right stack based on your requirements:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack-selection.js","sourceRoot":"","sources":["../../src/templates/stack-selection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stack-selection.js","sourceRoot":"","sources":["../../src/templates/stack-selection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAgB;IAChD,OAAO,uBAAuB,KAAK,CAAC,IAAI;;;kBAG1B,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,eAAe;mBACtC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,gBAAgB;;;cAG9C,KAAK,CAAC,QAAQ,CAAC,IAAI;aACpB,KAAK,CAAC,QAAQ,CAAC,GAAG;EAC7B,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;;;cAGzD,KAAK,CAAC,SAAS,CAAC,IAAI;kBAChB,KAAK,CAAC,SAAS,CAAC,QAAQ;;;EAGxC,KAAK,CAAC,cAAc;;;EAGpB,KAAK,CAAC,OAAO;;;;;WAKJ,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,KAAK,CAAC,OAAO,CAAC,cAAc;kBAC7C,KAAK,CAAC,OAAO,CAAC,WAAW;EACzC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,OAAO,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE;;;EAG1E,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;EAM9C,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;MAKxD,KAAK,CAAC,QAAQ,CAAC,GAAG;;;wCAGgB,KAAK,CAAC,QAAQ,CAAC,GAAG;;;;;;iDAMT,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAgB;IACnD,MAAM,UAAU,GAA2B;QACvC,aAAa,EAAE;;;;;;;;EAQrB;QACM,aAAa,EAAE;;;;;;;;;;;;EAYrB;QACM,mBAAmB,EAAE;;;;;;;;;;;;;;EAc3B;QACM,gBAAgB,EAAE;;;;;;yDAM+B;KACpD,CAAC;IAEF,OAAO,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,6BAA6B,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAAC,MAAmB;IAC7D,MAAM,MAAM,GAAG;;;;CAIlB,CAAC;IAEE,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;KACtC,KAAK,CAAC,IAAI;kBACG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,eAAe;mBACtC,KAAK,CAAC,SAAS;kBAChB,iBAAiB,CAAC,KAAK,CAAC;CACzC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEV,OAAO,MAAM,GAAG,UAAU,CAAC;AAC/B,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAgB;IACvC,MAAM,SAAS,GAA2B;QACtC,aAAa,EAAE,wDAAwD;QACvE,aAAa,EAAE,kDAAkD;QACjE,mBAAmB,EAAE,wDAAwD;QAC7E,gBAAgB,EAAE,iDAAiD;KACtE,CAAC;IACF,OAAO,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,qCAAqC,CAAC;AACxE,CAAC"}
|
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Style Selection Prompt Template
|
|
4
3
|
* Prompt for when an architecture style is selected
|
|
5
4
|
*/
|
|
6
|
-
|
|
7
|
-
exports.generateStylePrompt = generateStylePrompt;
|
|
8
|
-
exports.generateStyleComparisonPrompt = generateStyleComparisonPrompt;
|
|
9
|
-
const prompt_builder_js_1 = require("../builders/prompt-builder.js");
|
|
5
|
+
import { formatFolderStructure } from '../builders/prompt-builder.js';
|
|
10
6
|
/**
|
|
11
7
|
* Generate a style-specific prompt section
|
|
12
8
|
*/
|
|
13
|
-
function generateStylePrompt(style) {
|
|
9
|
+
export function generateStylePrompt(style) {
|
|
14
10
|
return `# Architecture Style: ${style.name}
|
|
15
11
|
|
|
16
12
|
## Description
|
|
@@ -29,7 +25,7 @@ ${style.corePrinciples.map((p, i) => `${i + 1}. ${p}`).join('\n')}
|
|
|
29
25
|
Every file you create MUST follow this structure:
|
|
30
26
|
|
|
31
27
|
\`\`\`
|
|
32
|
-
${
|
|
28
|
+
${formatFolderStructure(style.folderStructure)}
|
|
33
29
|
\`\`\`
|
|
34
30
|
|
|
35
31
|
## AI Behavior Instructions
|
|
@@ -52,7 +48,7 @@ When asked where to put new code:
|
|
|
52
48
|
/**
|
|
53
49
|
* Generate a comparison prompt for style selection
|
|
54
50
|
*/
|
|
55
|
-
function generateStyleComparisonPrompt(styles) {
|
|
51
|
+
export function generateStyleComparisonPrompt(styles) {
|
|
56
52
|
const header = `# Architecture Style Selection Guide
|
|
57
53
|
|
|
58
54
|
Choose the right style based on your project needs:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style-selection.js","sourceRoot":"","sources":["../../src/templates/style-selection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"style-selection.js","sourceRoot":"","sources":["../../src/templates/style-selection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAwB;IACxD,OAAO,yBAAyB,KAAK,CAAC,IAAI;;;EAG5C,KAAK,CAAC,WAAW;;;EAGjB,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;EAG7C,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;EAGhD,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;EAM/D,qBAAqB,CAAC,KAAK,CAAC,eAAe,CAAC;;;;;EAK5C,KAAK,CAAC,cAAc;;;;;EAKpB,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;mDAQF,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAAC,MAA2B;IACrE,MAAM,MAAM,GAAG;;;;CAIlB,CAAC;IAEE,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;KACvC,KAAK,CAAC,IAAI;gBACC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;kBACpC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;kBACzC,kBAAkB,CAAC,KAAK,CAAC;CAC1C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEV,OAAO,MAAM,GAAG,WAAW,CAAC;AAChC,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAwB;IAChD,MAAM,YAAY,GAAG,CAAC,gBAAgB,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IACpE,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAEnF,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAAE,OAAO,QAAQ,CAAC;IACrD,IAAI,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAAE,OAAO,SAAS,CAAC;IACvD,OAAO,WAAW,CAAC;AACvB,CAAC"}
|
package/dist/templates/system.js
CHANGED
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* System Prompt Template
|
|
4
3
|
* Main prompt that establishes the AI's role and context
|
|
5
4
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const core_1 = require("@ironbackend/core");
|
|
10
|
-
const core_2 = require("@ironbackend/core");
|
|
11
|
-
const prompt_builder_js_1 = require("../builders/prompt-builder.js");
|
|
5
|
+
import { formatRulesForPrompt, getErrorRules } from '@ironbackend/core';
|
|
6
|
+
import { formatSecurityForPrompt } from '@ironbackend/core';
|
|
7
|
+
import { formatFolderStructure } from '../builders/prompt-builder.js';
|
|
12
8
|
/**
|
|
13
9
|
* Generate the main system prompt
|
|
14
10
|
*/
|
|
15
|
-
function generateSystemPrompt(context) {
|
|
11
|
+
export function generateSystemPrompt(context) {
|
|
16
12
|
const { style, stack, includeRules = true, includeSecurity = true } = context;
|
|
17
13
|
const sections = [];
|
|
18
14
|
// Header
|
|
@@ -32,7 +28,7 @@ ${style.corePrinciples.map((p, i) => `${i + 1}. ${p}`).join('\n')}
|
|
|
32
28
|
|
|
33
29
|
### Project Structure
|
|
34
30
|
\`\`\`
|
|
35
|
-
${
|
|
31
|
+
${formatFolderStructure(style.folderStructure)}
|
|
36
32
|
\`\`\`
|
|
37
33
|
|
|
38
34
|
### Anti-Patterns to Avoid
|
|
@@ -64,10 +60,10 @@ ${style.aiInstructions}
|
|
|
64
60
|
---`);
|
|
65
61
|
// Rules
|
|
66
62
|
if (includeRules) {
|
|
67
|
-
const errorRules =
|
|
63
|
+
const errorRules = getErrorRules();
|
|
68
64
|
sections.push(`## Enforced Design Rules (ERROR severity = must follow)
|
|
69
65
|
|
|
70
|
-
${
|
|
66
|
+
${formatRulesForPrompt(errorRules)}
|
|
71
67
|
|
|
72
68
|
---`);
|
|
73
69
|
}
|
|
@@ -75,7 +71,7 @@ ${(0, core_1.formatRulesForPrompt)(errorRules)}
|
|
|
75
71
|
if (includeSecurity) {
|
|
76
72
|
sections.push(`## Security Requirements
|
|
77
73
|
|
|
78
|
-
${
|
|
74
|
+
${formatSecurityForPrompt()}
|
|
79
75
|
|
|
80
76
|
---`);
|
|
81
77
|
}
|
|
@@ -102,7 +98,7 @@ When asked to create a new feature:
|
|
|
102
98
|
/**
|
|
103
99
|
* Generate a minimal system prompt (for limited context windows)
|
|
104
100
|
*/
|
|
105
|
-
function generateMinimalSystemPrompt(context) {
|
|
101
|
+
export function generateMinimalSystemPrompt(context) {
|
|
106
102
|
const { style, stack } = context;
|
|
107
103
|
return `# IronBackend v1.0
|
|
108
104
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.js","sourceRoot":"","sources":["../../src/templates/system.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"system.js","sourceRoot":"","sources":["../../src/templates/system.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ironbackend/prompts",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"type": "module",
|
|
4
5
|
"description": "AI prompt templates for IronBackend",
|
|
5
6
|
"main": "./dist/index.js",
|
|
6
7
|
"types": "./dist/index.d.ts",
|
|
@@ -31,7 +32,7 @@
|
|
|
31
32
|
"directory": "packages/prompts"
|
|
32
33
|
},
|
|
33
34
|
"dependencies": {
|
|
34
|
-
"@ironbackend/core": "1.0.
|
|
35
|
+
"@ironbackend/core": "1.0.1"
|
|
35
36
|
},
|
|
36
37
|
"devDependencies": {
|
|
37
38
|
"typescript": "^5.3.0"
|