@planu/cli 0.28.0 → 0.30.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/dist/config/model-routing-rules.json +98 -0
- package/dist/engine/ai-cost-estimator/core.d.ts.map +1 -1
- package/dist/engine/ai-cost-estimator/core.js +2 -202
- package/dist/engine/ai-cost-estimator/core.js.map +1 -1
- package/dist/engine/ai-cost-estimator/recommender.d.ts +8 -0
- package/dist/engine/ai-cost-estimator/recommender.d.ts.map +1 -0
- package/dist/engine/ai-cost-estimator/recommender.js +94 -0
- package/dist/engine/ai-cost-estimator/recommender.js.map +1 -0
- package/dist/engine/ai-cost-estimator/spec-loader.d.ts +13 -0
- package/dist/engine/ai-cost-estimator/spec-loader.d.ts.map +1 -0
- package/dist/engine/ai-cost-estimator/spec-loader.js +102 -0
- package/dist/engine/ai-cost-estimator/spec-loader.js.map +1 -0
- package/dist/engine/ci-generator/planu-config.d.ts +7 -0
- package/dist/engine/ci-generator/planu-config.d.ts.map +1 -0
- package/dist/engine/ci-generator/planu-config.js +40 -0
- package/dist/engine/ci-generator/planu-config.js.map +1 -0
- package/dist/engine/ci-generator/planu-steps.d.ts +11 -0
- package/dist/engine/ci-generator/planu-steps.d.ts.map +1 -0
- package/dist/engine/ci-generator/planu-steps.js +292 -0
- package/dist/engine/ci-generator/planu-steps.js.map +1 -0
- package/dist/engine/code-transforms/transform-engine.d.ts +7 -0
- package/dist/engine/code-transforms/transform-engine.d.ts.map +1 -0
- package/dist/engine/code-transforms/transform-engine.js +67 -0
- package/dist/engine/code-transforms/transform-engine.js.map +1 -0
- package/dist/engine/code-transforms/typescript/add-error-handling.d.ts +6 -0
- package/dist/engine/code-transforms/typescript/add-error-handling.d.ts.map +1 -0
- package/dist/engine/code-transforms/typescript/add-error-handling.js +92 -0
- package/dist/engine/code-transforms/typescript/add-error-handling.js.map +1 -0
- package/dist/engine/code-transforms/typescript/add-jsdoc.d.ts +6 -0
- package/dist/engine/code-transforms/typescript/add-jsdoc.d.ts.map +1 -0
- package/dist/engine/code-transforms/typescript/add-jsdoc.js +83 -0
- package/dist/engine/code-transforms/typescript/add-jsdoc.js.map +1 -0
- package/dist/engine/code-transforms/typescript/add-types.d.ts +3 -0
- package/dist/engine/code-transforms/typescript/add-types.d.ts.map +1 -0
- package/dist/engine/code-transforms/typescript/add-types.js +182 -0
- package/dist/engine/code-transforms/typescript/add-types.js.map +1 -0
- package/dist/engine/code-transforms/typescript/ast-utils.d.ts +38 -0
- package/dist/engine/code-transforms/typescript/ast-utils.d.ts.map +1 -0
- package/dist/engine/code-transforms/typescript/ast-utils.js +90 -0
- package/dist/engine/code-transforms/typescript/ast-utils.js.map +1 -0
- package/dist/engine/code-transforms/typescript/extract-interface.d.ts +6 -0
- package/dist/engine/code-transforms/typescript/extract-interface.d.ts.map +1 -0
- package/dist/engine/code-transforms/typescript/extract-interface.js +103 -0
- package/dist/engine/code-transforms/typescript/extract-interface.js.map +1 -0
- package/dist/engine/code-transforms/typescript/modernize-syntax.d.ts +3 -0
- package/dist/engine/code-transforms/typescript/modernize-syntax.d.ts.map +1 -0
- package/dist/engine/code-transforms/typescript/modernize-syntax.js +213 -0
- package/dist/engine/code-transforms/typescript/modernize-syntax.js.map +1 -0
- package/dist/engine/code-transforms/typescript/rename-symbol.d.ts +8 -0
- package/dist/engine/code-transforms/typescript/rename-symbol.d.ts.map +1 -0
- package/dist/engine/code-transforms/typescript/rename-symbol.js +40 -0
- package/dist/engine/code-transforms/typescript/rename-symbol.js.map +1 -0
- package/dist/engine/mermaid/core.d.ts +18 -0
- package/dist/engine/mermaid/core.d.ts.map +1 -0
- package/dist/engine/mermaid/core.js +88 -0
- package/dist/engine/mermaid/core.js.map +1 -0
- package/dist/engine/mermaid/diagram-generators.d.ts +22 -0
- package/dist/engine/mermaid/diagram-generators.d.ts.map +1 -0
- package/dist/engine/mermaid/diagram-generators.js +139 -0
- package/dist/engine/mermaid/diagram-generators.js.map +1 -0
- package/dist/engine/mermaid/helpers.d.ts +8 -0
- package/dist/engine/mermaid/helpers.d.ts.map +1 -0
- package/dist/engine/mermaid/helpers.js +61 -0
- package/dist/engine/mermaid/helpers.js.map +1 -0
- package/dist/engine/mermaid-generator.d.ts +2 -37
- package/dist/engine/mermaid-generator.d.ts.map +1 -1
- package/dist/engine/mermaid-generator.js +4 -276
- package/dist/engine/mermaid-generator.js.map +1 -1
- package/dist/engine/model-router/complexity-analyzer.d.ts +26 -0
- package/dist/engine/model-router/complexity-analyzer.d.ts.map +1 -0
- package/dist/engine/model-router/complexity-analyzer.js +182 -0
- package/dist/engine/model-router/complexity-analyzer.js.map +1 -0
- package/dist/engine/model-router/cost-estimator.d.ts +6 -0
- package/dist/engine/model-router/cost-estimator.d.ts.map +1 -0
- package/dist/engine/model-router/cost-estimator.js +60 -0
- package/dist/engine/model-router/cost-estimator.js.map +1 -0
- package/dist/engine/model-router/historical-learner.d.ts +26 -0
- package/dist/engine/model-router/historical-learner.d.ts.map +1 -0
- package/dist/engine/model-router/historical-learner.js +91 -0
- package/dist/engine/model-router/historical-learner.js.map +1 -0
- package/dist/engine/model-router/rules-engine.d.ts +13 -0
- package/dist/engine/model-router/rules-engine.d.ts.map +1 -0
- package/dist/engine/model-router/rules-engine.js +142 -0
- package/dist/engine/model-router/rules-engine.js.map +1 -0
- package/dist/engine/spec-coverage/criteria-mapper.d.ts +1 -2
- package/dist/engine/spec-coverage/criteria-mapper.d.ts.map +1 -1
- package/dist/engine/spec-coverage/criteria-mapper.js +4 -203
- package/dist/engine/spec-coverage/criteria-mapper.js.map +1 -1
- package/dist/engine/spec-coverage/keyword-extractor.d.ts +10 -0
- package/dist/engine/spec-coverage/keyword-extractor.d.ts.map +1 -0
- package/dist/engine/spec-coverage/keyword-extractor.js +147 -0
- package/dist/engine/spec-coverage/keyword-extractor.js.map +1 -0
- package/dist/engine/spec-coverage/test-matchers.d.ts +9 -0
- package/dist/engine/spec-coverage/test-matchers.d.ts.map +1 -0
- package/dist/engine/spec-coverage/test-matchers.js +59 -0
- package/dist/engine/spec-coverage/test-matchers.js.map +1 -0
- package/dist/engine/spec-templates/catalog-extra.d.ts +1 -1
- package/dist/engine/spec-templates/catalog-extra.d.ts.map +1 -1
- package/dist/engine/spec-templates/catalog-extra.js +8 -363
- package/dist/engine/spec-templates/catalog-extra.js.map +1 -1
- package/dist/engine/spec-templates/catalog-industry.d.ts +4 -0
- package/dist/engine/spec-templates/catalog-industry.d.ts.map +1 -0
- package/dist/engine/spec-templates/catalog-industry.js +19 -0
- package/dist/engine/spec-templates/catalog-industry.js.map +1 -0
- package/dist/engine/spec-templates/catalog.d.ts +1 -1
- package/dist/engine/spec-templates/catalog.d.ts.map +1 -1
- package/dist/engine/spec-templates/catalog.js +12 -381
- package/dist/engine/spec-templates/catalog.js.map +1 -1
- package/dist/engine/spec-templates/custom-loader.d.ts +12 -0
- package/dist/engine/spec-templates/custom-loader.d.ts.map +1 -0
- package/dist/engine/spec-templates/custom-loader.js +99 -0
- package/dist/engine/spec-templates/custom-loader.js.map +1 -0
- package/dist/engine/spec-templates/index.d.ts +4 -2
- package/dist/engine/spec-templates/index.d.ts.map +1 -1
- package/dist/engine/spec-templates/index.js +4 -2
- package/dist/engine/spec-templates/index.js.map +1 -1
- package/dist/engine/spec-templates/query.d.ts +12 -4
- package/dist/engine/spec-templates/query.d.ts.map +1 -1
- package/dist/engine/spec-templates/query.js +29 -7
- package/dist/engine/spec-templates/query.js.map +1 -1
- package/dist/engine/spec-templates/renderer.d.ts +27 -2
- package/dist/engine/spec-templates/renderer.d.ts.map +1 -1
- package/dist/engine/spec-templates/renderer.js +119 -4
- package/dist/engine/spec-templates/renderer.js.map +1 -1
- package/dist/engine/spec-templates/templates-api-ui.d.ts +6 -0
- package/dist/engine/spec-templates/templates-api-ui.d.ts.map +1 -0
- package/dist/engine/spec-templates/templates-api-ui.js +215 -0
- package/dist/engine/spec-templates/templates-api-ui.js.map +1 -0
- package/dist/engine/spec-templates/templates-auth-crud.d.ts +6 -0
- package/dist/engine/spec-templates/templates-auth-crud.d.ts.map +1 -0
- package/dist/engine/spec-templates/templates-auth-crud.js +225 -0
- package/dist/engine/spec-templates/templates-auth-crud.js.map +1 -0
- package/dist/engine/spec-templates/templates-data-security.d.ts +6 -0
- package/dist/engine/spec-templates/templates-data-security.d.ts.map +1 -0
- package/dist/engine/spec-templates/templates-data-security.js +198 -0
- package/dist/engine/spec-templates/templates-data-security.js.map +1 -0
- package/dist/engine/spec-templates/templates-industry-ecom.d.ts +6 -0
- package/dist/engine/spec-templates/templates-industry-ecom.d.ts.map +1 -0
- package/dist/engine/spec-templates/templates-industry-ecom.js +209 -0
- package/dist/engine/spec-templates/templates-industry-ecom.js.map +1 -0
- package/dist/engine/spec-templates/templates-industry-fintech.d.ts +8 -0
- package/dist/engine/spec-templates/templates-industry-fintech.d.ts.map +1 -0
- package/dist/engine/spec-templates/templates-industry-fintech.js +350 -0
- package/dist/engine/spec-templates/templates-industry-fintech.js.map +1 -0
- package/dist/engine/spec-templates/templates-industry-health-ecom.d.ts +3 -0
- package/dist/engine/spec-templates/templates-industry-health-ecom.d.ts.map +1 -0
- package/dist/engine/spec-templates/templates-industry-health-ecom.js +5 -0
- package/dist/engine/spec-templates/templates-industry-health-ecom.js.map +1 -0
- package/dist/engine/spec-templates/templates-industry-health.d.ts +6 -0
- package/dist/engine/spec-templates/templates-industry-health.d.ts.map +1 -0
- package/dist/engine/spec-templates/templates-industry-health.js +208 -0
- package/dist/engine/spec-templates/templates-industry-health.js.map +1 -0
- package/dist/engine/spec-templates/templates-industry-saas.d.ts +8 -0
- package/dist/engine/spec-templates/templates-industry-saas.d.ts.map +1 -0
- package/dist/engine/spec-templates/templates-industry-saas.js +323 -0
- package/dist/engine/spec-templates/templates-industry-saas.js.map +1 -0
- package/dist/engine/spec-templates/templates-perf-integration.d.ts +6 -0
- package/dist/engine/spec-templates/templates-perf-integration.d.ts.map +1 -0
- package/dist/engine/spec-templates/templates-perf-integration.js +226 -0
- package/dist/engine/spec-templates/templates-perf-integration.js.map +1 -0
- package/dist/engine/vector-store/hnsw.d.ts +37 -0
- package/dist/engine/vector-store/hnsw.d.ts.map +1 -0
- package/dist/engine/vector-store/hnsw.js +294 -0
- package/dist/engine/vector-store/hnsw.js.map +1 -0
- package/dist/engine/vector-store/similarity.d.ts +21 -0
- package/dist/engine/vector-store/similarity.d.ts.map +1 -0
- package/dist/engine/vector-store/similarity.js +86 -0
- package/dist/engine/vector-store/similarity.js.map +1 -0
- package/dist/engine/vector-store/tfidf.d.ts +35 -0
- package/dist/engine/vector-store/tfidf.d.ts.map +1 -0
- package/dist/engine/vector-store/tfidf.js +255 -0
- package/dist/engine/vector-store/tfidf.js.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/storage/vector-store/backend-factory.d.ts +9 -0
- package/dist/storage/vector-store/backend-factory.d.ts.map +1 -0
- package/dist/storage/vector-store/backend-factory.js +33 -0
- package/dist/storage/vector-store/backend-factory.js.map +1 -0
- package/dist/storage/vector-store/json-fallback.d.ts +21 -0
- package/dist/storage/vector-store/json-fallback.d.ts.map +1 -0
- package/dist/storage/vector-store/json-fallback.js +85 -0
- package/dist/storage/vector-store/json-fallback.js.map +1 -0
- package/dist/storage/vector-store/migrator.d.ts +10 -0
- package/dist/storage/vector-store/migrator.d.ts.map +1 -0
- package/dist/storage/vector-store/migrator.js +139 -0
- package/dist/storage/vector-store/migrator.js.map +1 -0
- package/dist/storage/vector-store/sqlite-adapter.d.ts +28 -0
- package/dist/storage/vector-store/sqlite-adapter.d.ts.map +1 -0
- package/dist/storage/vector-store/sqlite-adapter.js +142 -0
- package/dist/storage/vector-store/sqlite-adapter.js.map +1 -0
- package/dist/tools/ci-planu-handler.d.ts +8 -0
- package/dist/tools/ci-planu-handler.d.ts.map +1 -0
- package/dist/tools/ci-planu-handler.js +44 -0
- package/dist/tools/ci-planu-handler.js.map +1 -0
- package/dist/tools/create-spec/constitution-validator.d.ts +4 -0
- package/dist/tools/create-spec/constitution-validator.d.ts.map +1 -0
- package/dist/tools/create-spec/constitution-validator.js +37 -0
- package/dist/tools/create-spec/constitution-validator.js.map +1 -0
- package/dist/tools/create-spec/post-creation.d.ts +11 -0
- package/dist/tools/create-spec/post-creation.d.ts.map +1 -0
- package/dist/tools/create-spec/post-creation.js +48 -0
- package/dist/tools/create-spec/post-creation.js.map +1 -0
- package/dist/tools/create-spec/spec-builder.d.ts +14 -0
- package/dist/tools/create-spec/spec-builder.d.ts.map +1 -0
- package/dist/tools/create-spec/spec-builder.js +131 -0
- package/dist/tools/create-spec/spec-builder.js.map +1 -0
- package/dist/tools/create-spec.d.ts.map +1 -1
- package/dist/tools/create-spec.js +42 -172
- package/dist/tools/create-spec.js.map +1 -1
- package/dist/tools/init-project/handler.d.ts.map +1 -1
- package/dist/tools/init-project/handler.js +24 -159
- package/dist/tools/init-project/handler.js.map +1 -1
- package/dist/tools/init-project/result-builder.d.ts +4 -0
- package/dist/tools/init-project/result-builder.d.ts.map +1 -0
- package/dist/tools/init-project/result-builder.js +150 -0
- package/dist/tools/init-project/result-builder.js.map +1 -0
- package/dist/tools/learn.d.ts.map +1 -1
- package/dist/tools/learn.js +67 -14
- package/dist/tools/learn.js.map +1 -1
- package/dist/tools/recommend-model-handler.d.ts +8 -0
- package/dist/tools/recommend-model-handler.d.ts.map +1 -0
- package/dist/tools/recommend-model-handler.js +65 -0
- package/dist/tools/recommend-model-handler.js.map +1 -0
- package/dist/tools/register-ci-tools.d.ts.map +1 -1
- package/dist/tools/register-ci-tools.js +36 -0
- package/dist/tools/register-ci-tools.js.map +1 -1
- package/dist/tools/register-model-tools.d.ts +3 -0
- package/dist/tools/register-model-tools.d.ts.map +1 -0
- package/dist/tools/register-model-tools.js +50 -0
- package/dist/tools/register-model-tools.js.map +1 -0
- package/dist/tools/register-search-tools.d.ts +7 -0
- package/dist/tools/register-search-tools.d.ts.map +1 -0
- package/dist/tools/register-search-tools.js +34 -0
- package/dist/tools/register-search-tools.js.map +1 -0
- package/dist/tools/register-template-tools.d.ts.map +1 -1
- package/dist/tools/register-template-tools.js +21 -8
- package/dist/tools/register-template-tools.js.map +1 -1
- package/dist/tools/register-transform-tools.d.ts +3 -0
- package/dist/tools/register-transform-tools.d.ts.map +1 -0
- package/dist/tools/register-transform-tools.js +29 -0
- package/dist/tools/register-transform-tools.js.map +1 -0
- package/dist/tools/semantic-search-handler.d.ts +7 -0
- package/dist/tools/semantic-search-handler.d.ts.map +1 -0
- package/dist/tools/semantic-search-handler.js +72 -0
- package/dist/tools/semantic-search-handler.js.map +1 -0
- package/dist/tools/spec-templates.d.ts +1 -1
- package/dist/tools/spec-templates.d.ts.map +1 -1
- package/dist/tools/spec-templates.js +20 -6
- package/dist/tools/spec-templates.js.map +1 -1
- package/dist/tools/transform-code-handler.d.ts +7 -0
- package/dist/tools/transform-code-handler.d.ts.map +1 -0
- package/dist/tools/transform-code-handler.js +58 -0
- package/dist/tools/transform-code-handler.js.map +1 -0
- package/dist/types/advanced-framework.d.ts +47 -0
- package/dist/types/advanced-framework.d.ts.map +1 -0
- package/dist/types/advanced-framework.js +3 -0
- package/dist/types/advanced-framework.js.map +1 -0
- package/dist/types/ci.d.ts +51 -0
- package/dist/types/ci.d.ts.map +1 -1
- package/dist/types/code-transforms.d.ts +114 -0
- package/dist/types/code-transforms.d.ts.map +1 -0
- package/dist/types/code-transforms.js +11 -0
- package/dist/types/code-transforms.js.map +1 -0
- package/dist/types/css-framework.d.ts +110 -0
- package/dist/types/css-framework.d.ts.map +1 -0
- package/dist/types/css-framework.js +3 -0
- package/dist/types/css-framework.js.map +1 -0
- package/dist/types/dashboard.d.ts +77 -0
- package/dist/types/dashboard.d.ts.map +1 -0
- package/dist/types/dashboard.js +2 -0
- package/dist/types/dashboard.js.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/model-routing.d.ts +127 -0
- package/dist/types/model-routing.d.ts.map +1 -0
- package/dist/types/model-routing.js +3 -0
- package/dist/types/model-routing.js.map +1 -0
- package/dist/types/project/core.d.ts +46 -5
- package/dist/types/project/core.d.ts.map +1 -1
- package/dist/types/spec/core.d.ts +28 -1
- package/dist/types/spec/core.d.ts.map +1 -1
- package/dist/types/spec/inputs.d.ts +1 -6
- package/dist/types/spec/inputs.d.ts.map +1 -1
- package/dist/types/spec-templates.d.ts +51 -1
- package/dist/types/spec-templates.d.ts.map +1 -1
- package/dist/types/ui.d.ts +3 -231
- package/dist/types/ui.d.ts.map +1 -1
- package/dist/types/ui.js +7 -1
- package/dist/types/ui.js.map +1 -1
- package/dist/types/vector-store.d.ts +144 -0
- package/dist/types/vector-store.d.ts.map +1 -0
- package/dist/types/vector-store.js +3 -0
- package/dist/types/vector-store.js.map +1 -0
- package/package.json +1 -1
- package/src/config/model-routing-rules.json +98 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// engine/spec-templates/query.ts — Catalog querying: list and find templates.
|
|
2
2
|
import { BUILT_IN_TEMPLATES } from './catalog.js';
|
|
3
|
+
import { loadCustomTemplates, mergeTemplates } from './custom-loader.js';
|
|
3
4
|
/**
|
|
4
5
|
* Converts a full SpecTemplateEntry to a summary TemplateListItem.
|
|
5
6
|
*/
|
|
@@ -8,20 +9,29 @@ function toListItem(template) {
|
|
|
8
9
|
id: template.id,
|
|
9
10
|
name: template.name,
|
|
10
11
|
category: template.category,
|
|
12
|
+
subcategory: template.subcategory,
|
|
11
13
|
description: template.description,
|
|
12
14
|
tags: template.tags,
|
|
15
|
+
complexityScore: template.complexityScore,
|
|
16
|
+
criteriaCount: template.criteria.length,
|
|
13
17
|
variableCount: template.variables.length,
|
|
14
18
|
requiredVariableCount: template.variables.filter((v) => v.required).length,
|
|
15
19
|
};
|
|
16
20
|
}
|
|
17
21
|
/**
|
|
18
|
-
* Lists templates from the catalog, optionally filtered by category and
|
|
22
|
+
* Lists templates from the catalog, optionally filtered by category, search, and complexity.
|
|
23
|
+
* Includes custom user templates from data/global/spec-templates/custom/.
|
|
19
24
|
*/
|
|
20
|
-
export function listTemplates(category, search) {
|
|
21
|
-
|
|
25
|
+
export async function listTemplates(category, search, complexityScore, customDir) {
|
|
26
|
+
const customResult = await loadCustomTemplates(customDir);
|
|
27
|
+
const allTemplates = mergeTemplates(BUILT_IN_TEMPLATES, customResult.templates);
|
|
28
|
+
let templates = [...allTemplates];
|
|
22
29
|
if (category !== undefined) {
|
|
23
30
|
templates = templates.filter((t) => t.category === category);
|
|
24
31
|
}
|
|
32
|
+
if (complexityScore !== undefined) {
|
|
33
|
+
templates = templates.filter((t) => t.complexityScore === complexityScore);
|
|
34
|
+
}
|
|
25
35
|
if (search !== undefined && search.trim().length > 0) {
|
|
26
36
|
const term = search.trim().toLowerCase();
|
|
27
37
|
templates = templates.filter((t) => t.name.toLowerCase().includes(term) ||
|
|
@@ -30,22 +40,34 @@ export function listTemplates(category, search) {
|
|
|
30
40
|
}
|
|
31
41
|
const filterLabel = [
|
|
32
42
|
category !== undefined ? `category=${category}` : '',
|
|
43
|
+
complexityScore !== undefined ? `complexity=${complexityScore}` : '',
|
|
33
44
|
search !== undefined && search.trim().length > 0 ? `search="${search.trim()}"` : '',
|
|
34
45
|
]
|
|
35
46
|
.filter(Boolean)
|
|
36
47
|
.join(', ');
|
|
37
48
|
return {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
49
|
+
result: {
|
|
50
|
+
templates: templates.map(toListItem),
|
|
51
|
+
total: templates.length,
|
|
52
|
+
filteredBy: filterLabel.length > 0 ? filterLabel : undefined,
|
|
53
|
+
},
|
|
54
|
+
warnings: customResult.warnings,
|
|
41
55
|
};
|
|
42
56
|
}
|
|
43
57
|
/**
|
|
44
|
-
* Returns a single template by ID
|
|
58
|
+
* Returns a single template by ID (built-in only, sync).
|
|
45
59
|
*/
|
|
46
60
|
export function findTemplate(templateId) {
|
|
47
61
|
return BUILT_IN_TEMPLATES.find((t) => t.id === templateId);
|
|
48
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Returns a single template by ID, searching built-in and custom templates.
|
|
65
|
+
*/
|
|
66
|
+
export async function findTemplateWithCustom(templateId, customDir) {
|
|
67
|
+
const customResult = await loadCustomTemplates(customDir);
|
|
68
|
+
const allTemplates = mergeTemplates(BUILT_IN_TEMPLATES, customResult.templates);
|
|
69
|
+
return allTemplates.find((t) => t.id === templateId);
|
|
70
|
+
}
|
|
49
71
|
/**
|
|
50
72
|
* Returns all available categories that have at least one template.
|
|
51
73
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/engine/spec-templates/query.ts"],"names":[],"mappings":"AAAA,8EAA8E;
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/engine/spec-templates/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SpecTemplateEntry, TemplateVariableValue, TemplateVariable } from '../../types/spec-templates.js';
|
|
1
|
+
import type { SpecTemplateEntry, TemplateVariableValue, TemplateVariable, TemplateCriterion } from '../../types/spec-templates.js';
|
|
2
2
|
/**
|
|
3
3
|
* Interpolates all {{Key}} placeholders in a template string with provided values.
|
|
4
4
|
* Falls back to defaultValue if a variable is optional and not provided.
|
|
@@ -8,12 +8,37 @@ export declare function interpolate(template: string, variables: TemplateVariabl
|
|
|
8
8
|
* Returns the keys of required variables that are missing from the provided values.
|
|
9
9
|
*/
|
|
10
10
|
export declare function findMissingRequired(template: SpecTemplateEntry, variables: TemplateVariableValue[]): string[];
|
|
11
|
+
/**
|
|
12
|
+
* Resolves which criteria to include and generates warnings for forced-required criteria.
|
|
13
|
+
* AC-07: Required criteria cannot be omitted.
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveCriteria(allCriteria: TemplateCriterion[], includeCriteria?: string[]): {
|
|
16
|
+
included: TemplateCriterion[];
|
|
17
|
+
warnings: string[];
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Filters HU template content to include only the selected criteria sections.
|
|
21
|
+
* Renumbers criteria sequentially (AC-01, AC-02, ...) to avoid gaps.
|
|
22
|
+
*/
|
|
23
|
+
export declare function filterHuByCriteria(huContent: string, allCriteria: TemplateCriterion[], includedCriteria: TemplateCriterion[]): string;
|
|
24
|
+
/**
|
|
25
|
+
* Filters PROGRESS template to include only selected criteria.
|
|
26
|
+
*/
|
|
27
|
+
export declare function filterProgressByCriteria(progressContent: string, allCriteria: TemplateCriterion[], includedCriteria: TemplateCriterion[]): string;
|
|
28
|
+
/**
|
|
29
|
+
* Builds the estimation section to inject into the HU.md (AC-09).
|
|
30
|
+
*/
|
|
31
|
+
export declare function buildEstimationSection(template: SpecTemplateEntry): string;
|
|
11
32
|
/**
|
|
12
33
|
* Renders all three template files (HU, FICHA-TECNICA, PROGRESS) with the provided values.
|
|
34
|
+
* Supports partial criteria selection and estimation injection.
|
|
13
35
|
*/
|
|
14
|
-
export declare function renderTemplate(template: SpecTemplateEntry, variables: TemplateVariableValue[]): {
|
|
36
|
+
export declare function renderTemplate(template: SpecTemplateEntry, variables: TemplateVariableValue[], includeCriteria?: string[]): {
|
|
15
37
|
hu: string;
|
|
16
38
|
fichaTecnica: string;
|
|
17
39
|
progress: string;
|
|
40
|
+
criteriaIncluded: number;
|
|
41
|
+
criteriaTotal: number;
|
|
42
|
+
warnings: string[];
|
|
18
43
|
};
|
|
19
44
|
//# sourceMappingURL=renderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/engine/spec-templates/renderer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/engine/spec-templates/renderer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AAEvC;;;GAGG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,qBAAqB,EAAE,EAClC,WAAW,EAAE,gBAAgB,EAAE,GAC9B,MAAM,CAiBR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAE,qBAAqB,EAAE,GACjC,MAAM,EAAE,CAWV;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,iBAAiB,EAAE,EAChC,eAAe,CAAC,EAAE,MAAM,EAAE,GACzB;IAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAyBvD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,iBAAiB,EAAE,EAChC,gBAAgB,EAAE,iBAAiB,EAAE,GACpC,MAAM,CA+BR;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,iBAAiB,EAAE,EAChC,gBAAgB,EAAE,iBAAiB,EAAE,GACpC,MAAM,CAwBR;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAW1E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAE,qBAAqB,EAAE,EAClC,eAAe,CAAC,EAAE,MAAM,EAAE,GACzB;IACD,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CA0BA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// engine/spec-templates/renderer.ts — Template variable substitution engine.
|
|
2
2
|
// Replaces {{VariableKey}} placeholders with user-provided values.
|
|
3
|
+
// Supports partial criteria selection (AC-07) and estimation injection (AC-09).
|
|
3
4
|
/**
|
|
4
5
|
* Interpolates all {{Key}} placeholders in a template string with provided values.
|
|
5
6
|
* Falls back to defaultValue if a variable is optional and not provided.
|
|
@@ -31,15 +32,129 @@ export function findMissingRequired(template, variables) {
|
|
|
31
32
|
}));
|
|
32
33
|
return template.variables.filter((v) => v.required && !providedKeys.has(v.key)).map((v) => v.key);
|
|
33
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Resolves which criteria to include and generates warnings for forced-required criteria.
|
|
37
|
+
* AC-07: Required criteria cannot be omitted.
|
|
38
|
+
*/
|
|
39
|
+
export function resolveCriteria(allCriteria, includeCriteria) {
|
|
40
|
+
if (includeCriteria === undefined || includeCriteria.length === 0) {
|
|
41
|
+
return { included: allCriteria, warnings: [] };
|
|
42
|
+
}
|
|
43
|
+
const requestedIds = new Set(includeCriteria);
|
|
44
|
+
const warnings = [];
|
|
45
|
+
const included = [];
|
|
46
|
+
for (const criterion of allCriteria) {
|
|
47
|
+
const isRequested = requestedIds.has(criterion.id);
|
|
48
|
+
if (isRequested) {
|
|
49
|
+
included.push(criterion);
|
|
50
|
+
}
|
|
51
|
+
else if (criterion.required) {
|
|
52
|
+
// Required criterion was excluded — force-include with warning
|
|
53
|
+
included.push(criterion);
|
|
54
|
+
warnings.push(`Criterion "${criterion.id}: ${criterion.title}" is required and was included automatically.`);
|
|
55
|
+
}
|
|
56
|
+
// Optional, not requested → omit
|
|
57
|
+
}
|
|
58
|
+
return { included, warnings };
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Filters HU template content to include only the selected criteria sections.
|
|
62
|
+
* Renumbers criteria sequentially (AC-01, AC-02, ...) to avoid gaps.
|
|
63
|
+
*/
|
|
64
|
+
export function filterHuByCriteria(huContent, allCriteria, includedCriteria) {
|
|
65
|
+
if (includedCriteria.length === allCriteria.length) {
|
|
66
|
+
return huContent;
|
|
67
|
+
}
|
|
68
|
+
const includedIds = new Set(includedCriteria.map((c) => c.id));
|
|
69
|
+
const lines = huContent.split('\n');
|
|
70
|
+
const outputLines = [];
|
|
71
|
+
let currentCriterionId;
|
|
72
|
+
let isIncluded = true;
|
|
73
|
+
let renumberIndex = 0;
|
|
74
|
+
// Map from old AC IDs to which ones are included
|
|
75
|
+
const criterionIdPattern = /^### (AC-\d+)/;
|
|
76
|
+
for (const line of lines) {
|
|
77
|
+
const match = criterionIdPattern.exec(line);
|
|
78
|
+
if (match?.[1] !== undefined) {
|
|
79
|
+
currentCriterionId = match[1];
|
|
80
|
+
isIncluded = includedIds.has(currentCriterionId);
|
|
81
|
+
if (isIncluded) {
|
|
82
|
+
renumberIndex++;
|
|
83
|
+
const renumbered = line.replace(/^### AC-\d+/, `### AC-${renumberIndex}`);
|
|
84
|
+
outputLines.push(renumbered);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else if (isIncluded) {
|
|
88
|
+
outputLines.push(line);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return outputLines.join('\n');
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Filters PROGRESS template to include only selected criteria.
|
|
95
|
+
*/
|
|
96
|
+
export function filterProgressByCriteria(progressContent, allCriteria, includedCriteria) {
|
|
97
|
+
if (includedCriteria.length === allCriteria.length) {
|
|
98
|
+
return progressContent;
|
|
99
|
+
}
|
|
100
|
+
const includedIds = new Set(includedCriteria.map((c) => c.id));
|
|
101
|
+
const lines = progressContent.split('\n');
|
|
102
|
+
const outputLines = [];
|
|
103
|
+
let renumberIndex = 0;
|
|
104
|
+
for (const line of lines) {
|
|
105
|
+
const criterionMatch = /^- \[ \] (AC-\d+):/.exec(line);
|
|
106
|
+
if (criterionMatch?.[1] !== undefined) {
|
|
107
|
+
if (includedIds.has(criterionMatch[1])) {
|
|
108
|
+
renumberIndex++;
|
|
109
|
+
const renumbered = line.replace(/AC-\d+/, `AC-${renumberIndex}`);
|
|
110
|
+
outputLines.push(renumbered);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
outputLines.push(line);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return outputLines.join('\n');
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Builds the estimation section to inject into the HU.md (AC-09).
|
|
121
|
+
*/
|
|
122
|
+
export function buildEstimationSection(template) {
|
|
123
|
+
const { complexityScore, estimationBase } = template;
|
|
124
|
+
return [
|
|
125
|
+
'',
|
|
126
|
+
'## Estimacion Inicial',
|
|
127
|
+
'',
|
|
128
|
+
`- **Complejidad:** ${complexityScore}`,
|
|
129
|
+
`- **Horas estimadas:** ${estimationBase.hoursMin}–${estimationBase.hoursMax}h`,
|
|
130
|
+
`- **Notas:** ${estimationBase.notes}`,
|
|
131
|
+
'',
|
|
132
|
+
].join('\n');
|
|
133
|
+
}
|
|
34
134
|
/**
|
|
35
135
|
* Renders all three template files (HU, FICHA-TECNICA, PROGRESS) with the provided values.
|
|
136
|
+
* Supports partial criteria selection and estimation injection.
|
|
36
137
|
*/
|
|
37
|
-
export function renderTemplate(template, variables) {
|
|
138
|
+
export function renderTemplate(template, variables, includeCriteria) {
|
|
38
139
|
const defs = template.variables;
|
|
140
|
+
// Resolve criteria selection
|
|
141
|
+
const { included, warnings } = resolveCriteria(template.criteria, includeCriteria);
|
|
142
|
+
// Interpolate variables first
|
|
143
|
+
let hu = interpolate(template.huTemplate, variables, defs);
|
|
144
|
+
const fichaTecnica = interpolate(template.fichaTecnicaTemplate, variables, defs);
|
|
145
|
+
let progress = interpolate(template.progressTemplate, variables, defs);
|
|
146
|
+
// Filter criteria if partial selection
|
|
147
|
+
hu = filterHuByCriteria(hu, template.criteria, included);
|
|
148
|
+
progress = filterProgressByCriteria(progress, template.criteria, included);
|
|
149
|
+
// Inject estimation section into HU (AC-09)
|
|
150
|
+
hu += buildEstimationSection(template);
|
|
39
151
|
return {
|
|
40
|
-
hu
|
|
41
|
-
fichaTecnica
|
|
42
|
-
progress
|
|
152
|
+
hu,
|
|
153
|
+
fichaTecnica,
|
|
154
|
+
progress,
|
|
155
|
+
criteriaIncluded: included.length,
|
|
156
|
+
criteriaTotal: template.criteria.length,
|
|
157
|
+
warnings,
|
|
43
158
|
};
|
|
44
159
|
}
|
|
45
160
|
//# sourceMappingURL=renderer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../../src/engine/spec-templates/renderer.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,mEAAmE;
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../../src/engine/spec-templates/renderer.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,mEAAmE;AACnE,gFAAgF;AAShF;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,QAAgB,EAChB,SAAkC,EAClC,WAA+B;IAE/B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAiB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEjF,OAAO,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,GAAW,EAAE,EAAE;QAC/D,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAC1D,IAAI,UAAU,EAAE,YAAY,KAAK,SAAS,EAAE,CAAC;YAC3C,OAAO,UAAU,CAAC,YAAY,CAAC;QACjC,CAAC;QAED,qFAAqF;QACrF,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAA2B,EAC3B,SAAkC;IAElC,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B,SAAS;SACN,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;SACjB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACZ,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACjD,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACvD,CAAC,CAAC,CACL,CAAC;IAEF,OAAO,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACpG,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,WAAgC,EAChC,eAA0B;IAE1B,IAAI,eAAe,KAAK,SAAS,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACjD,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAwB,EAAE,CAAC;IAEzC,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE,CAAC;QACpC,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAEnD,IAAI,WAAW,EAAE,CAAC;YAChB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC;aAAM,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC9B,+DAA+D;YAC/D,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACzB,QAAQ,CAAC,IAAI,CACX,cAAc,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,KAAK,+CAA+C,CAC9F,CAAC;QACJ,CAAC;QACD,iCAAiC;IACnC,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,SAAiB,EACjB,WAAgC,EAChC,gBAAqC;IAErC,IAAI,gBAAgB,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;QACnD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,kBAAsC,CAAC;IAC3C,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,iDAAiD;IACjD,MAAM,kBAAkB,GAAG,eAAe,CAAC;IAE3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAC7B,kBAAkB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9B,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YACjD,IAAI,UAAU,EAAE,CAAC;gBACf,aAAa,EAAE,CAAC;gBAChB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,aAAa,EAAE,CAAC,CAAC;gBAC1E,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;aAAM,IAAI,UAAU,EAAE,CAAC;YACtB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,eAAuB,EACvB,WAAgC,EAChC,gBAAqC;IAErC,IAAI,gBAAgB,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;QACnD,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,cAAc,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,cAAc,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvC,aAAa,EAAE,CAAC;gBAChB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,aAAa,EAAE,CAAC,CAAC;gBACjE,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAA2B;IAChE,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,QAAQ,CAAC;IACrD,OAAO;QACL,EAAE;QACF,uBAAuB;QACvB,EAAE;QACF,sBAAsB,eAAe,EAAE;QACvC,0BAA0B,cAAc,CAAC,QAAQ,IAAI,cAAc,CAAC,QAAQ,GAAG;QAC/E,gBAAgB,cAAc,CAAC,KAAK,EAAE;QACtC,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,QAA2B,EAC3B,SAAkC,EAClC,eAA0B;IAS1B,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC;IAEhC,6BAA6B;IAC7B,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAEnF,8BAA8B;IAC9B,IAAI,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,oBAAoB,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IACjF,IAAI,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,gBAAgB,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAEvE,uCAAuC;IACvC,EAAE,GAAG,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACzD,QAAQ,GAAG,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE3E,4CAA4C;IAC5C,EAAE,IAAI,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAEvC,OAAO;QACL,EAAE;QACF,YAAY;QACZ,QAAQ;QACR,gBAAgB,EAAE,QAAQ,CAAC,MAAM;QACjC,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;QACvC,QAAQ;KACT,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SpecTemplateEntry } from '../../types/spec-templates.js';
|
|
2
|
+
/** REST API endpoint spec template. */
|
|
3
|
+
export declare const REST_API_ENDPOINT_TEMPLATE: SpecTemplateEntry;
|
|
4
|
+
/** UI Form spec template. */
|
|
5
|
+
export declare const UI_FORM_TEMPLATE: SpecTemplateEntry;
|
|
6
|
+
//# sourceMappingURL=templates-api-ui.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates-api-ui.d.ts","sourceRoot":"","sources":["../../../src/engine/spec-templates/templates-api-ui.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,uCAAuC;AACvC,eAAO,MAAM,0BAA0B,EAAE,iBAiHxC,CAAC;AAEF,6BAA6B;AAC7B,eAAO,MAAM,gBAAgB,EAAE,iBA+F9B,CAAC"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
// engine/spec-templates/templates-api-ui.ts — REST API endpoint + UI form templates.
|
|
2
|
+
// Extracted from catalog.ts to keep file sizes within limits.
|
|
3
|
+
/** REST API endpoint spec template. */
|
|
4
|
+
export const REST_API_ENDPOINT_TEMPLATE = {
|
|
5
|
+
id: 'rest-api-endpoint',
|
|
6
|
+
name: 'REST API Endpoint',
|
|
7
|
+
category: 'api',
|
|
8
|
+
description: 'A single REST endpoint with validation, error handling, and documentation.',
|
|
9
|
+
tags: ['api', 'rest', 'endpoint', 'openapi'],
|
|
10
|
+
complexityScore: 'S',
|
|
11
|
+
estimationBase: {
|
|
12
|
+
hoursMin: 4,
|
|
13
|
+
hoursMax: 8,
|
|
14
|
+
notes: 'Single endpoint with validation and error handling',
|
|
15
|
+
},
|
|
16
|
+
criteria: [
|
|
17
|
+
{ id: 'AC-1', title: 'Request validation', required: true },
|
|
18
|
+
{ id: 'AC-2', title: 'Core business logic', required: true },
|
|
19
|
+
{ id: 'AC-3', title: 'Response contract', required: true },
|
|
20
|
+
{ id: 'AC-4', title: 'Error handling', required: true },
|
|
21
|
+
{ id: 'AC-5', title: 'Idempotency', required: false },
|
|
22
|
+
{ id: 'AC-6', title: 'Observability', required: false },
|
|
23
|
+
],
|
|
24
|
+
variables: [
|
|
25
|
+
{
|
|
26
|
+
key: 'EndpointName',
|
|
27
|
+
label: 'Endpoint name',
|
|
28
|
+
description: 'Short descriptive name for this endpoint',
|
|
29
|
+
example: 'Submit Order',
|
|
30
|
+
required: true,
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
key: 'HttpMethod',
|
|
34
|
+
label: 'HTTP Method',
|
|
35
|
+
description: 'HTTP method: GET, POST, PUT, PATCH, DELETE',
|
|
36
|
+
example: 'POST',
|
|
37
|
+
required: true,
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
key: 'Path',
|
|
41
|
+
label: 'URL path',
|
|
42
|
+
description: 'The URL path for this endpoint',
|
|
43
|
+
example: '/orders/submit',
|
|
44
|
+
required: true,
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
huTemplate: `# HU: REST API Endpoint — {{EndpointName}}
|
|
48
|
+
|
|
49
|
+
## User Story
|
|
50
|
+
As an API consumer, I want a reliable {{HttpMethod}} {{Path}} endpoint so that I can {{EndpointName}} without client-side workarounds.
|
|
51
|
+
|
|
52
|
+
## Acceptance Criteria
|
|
53
|
+
|
|
54
|
+
### AC-1: Request validation
|
|
55
|
+
- [ ] Input schema validated at the boundary
|
|
56
|
+
- [ ] Invalid requests return 422 with structured error messages
|
|
57
|
+
- [ ] Content-Type header checked when applicable
|
|
58
|
+
|
|
59
|
+
### AC-2: Core business logic
|
|
60
|
+
- [ ] {{EndpointName}} logic is encapsulated in a dedicated use-case function
|
|
61
|
+
- [ ] Side effects (emails, notifications, jobs) are isolated and testable
|
|
62
|
+
|
|
63
|
+
### AC-3: Response contract
|
|
64
|
+
- [ ] Success response follows the API response envelope convention
|
|
65
|
+
- [ ] HTTP status codes match the operation semantics
|
|
66
|
+
- [ ] Response schema is documented (OpenAPI or equivalent)
|
|
67
|
+
|
|
68
|
+
### AC-4: Error handling
|
|
69
|
+
- [ ] All error paths return structured JSON (not stack traces)
|
|
70
|
+
- [ ] 404 returned for missing resources
|
|
71
|
+
- [ ] 409 returned for conflicts
|
|
72
|
+
- [ ] 500 never leaks internal details
|
|
73
|
+
|
|
74
|
+
### AC-5: Idempotency (if applicable)
|
|
75
|
+
- [ ] Idempotency key header supported for non-idempotent operations
|
|
76
|
+
- [ ] Duplicate requests handled gracefully
|
|
77
|
+
|
|
78
|
+
### AC-6: Observability
|
|
79
|
+
- [ ] Endpoint logged with method, path, status, latency
|
|
80
|
+
- [ ] Errors reported to the monitoring system
|
|
81
|
+
`,
|
|
82
|
+
fichaTecnicaTemplate: `# FICHA TÉCNICA: REST API Endpoint — {{EndpointName}}
|
|
83
|
+
|
|
84
|
+
## Affected Files
|
|
85
|
+
- handlers/{{Path}} (route handler)
|
|
86
|
+
- use-cases/{{EndpointName}} (business logic)
|
|
87
|
+
- validators/{{EndpointName}}-input
|
|
88
|
+
- openapi/paths/{{Path}} (documentation)
|
|
89
|
+
|
|
90
|
+
## Types / Entities
|
|
91
|
+
- \`{{EndpointName}}Input\`: validated request payload
|
|
92
|
+
- \`{{EndpointName}}Output\`: response body shape
|
|
93
|
+
- \`ApiError\`: code, message, details[]
|
|
94
|
+
|
|
95
|
+
## Risks
|
|
96
|
+
- Missing idempotency for mutation → duplicate side effects
|
|
97
|
+
- Unbounded response size → add pagination or field projection
|
|
98
|
+
- Missing auth guard → unauthorized access
|
|
99
|
+
|
|
100
|
+
## Estimation (rough)
|
|
101
|
+
- Dev: 4–8 hours
|
|
102
|
+
- Review: 1–2 hours
|
|
103
|
+
- Difficulty: 2/5
|
|
104
|
+
`,
|
|
105
|
+
progressTemplate: `# PROGRESS: REST API Endpoint — {{EndpointName}}
|
|
106
|
+
|
|
107
|
+
## Status: draft
|
|
108
|
+
|
|
109
|
+
## Criteria
|
|
110
|
+
- [ ] AC-1: Request validation
|
|
111
|
+
- [ ] AC-2: Core business logic
|
|
112
|
+
- [ ] AC-3: Response contract
|
|
113
|
+
- [ ] AC-4: Error handling
|
|
114
|
+
- [ ] AC-5: Idempotency
|
|
115
|
+
- [ ] AC-6: Observability
|
|
116
|
+
`,
|
|
117
|
+
};
|
|
118
|
+
/** UI Form spec template. */
|
|
119
|
+
export const UI_FORM_TEMPLATE = {
|
|
120
|
+
id: 'ui-form',
|
|
121
|
+
name: 'UI Form',
|
|
122
|
+
category: 'ui',
|
|
123
|
+
description: 'Interactive form with validation, error display, and accessibility.',
|
|
124
|
+
tags: ['ui', 'form', 'ux', 'accessibility', 'validation'],
|
|
125
|
+
complexityScore: 'S',
|
|
126
|
+
estimationBase: {
|
|
127
|
+
hoursMin: 4,
|
|
128
|
+
hoursMax: 10,
|
|
129
|
+
notes: 'Form with client-side validation and accessibility',
|
|
130
|
+
},
|
|
131
|
+
criteria: [
|
|
132
|
+
{ id: 'AC-1', title: 'Field validation', required: true },
|
|
133
|
+
{ id: 'AC-2', title: 'Submit behavior', required: true },
|
|
134
|
+
{ id: 'AC-3', title: 'Accessibility', required: true },
|
|
135
|
+
{ id: 'AC-4', title: 'Responsive design', required: false },
|
|
136
|
+
{ id: 'AC-5', title: 'Reset and cancel', required: false },
|
|
137
|
+
],
|
|
138
|
+
variables: [
|
|
139
|
+
{
|
|
140
|
+
key: 'FormName',
|
|
141
|
+
label: 'Form name',
|
|
142
|
+
description: 'Name of the form (e.g. Registration, Checkout, Contact)',
|
|
143
|
+
example: 'Registration',
|
|
144
|
+
required: true,
|
|
145
|
+
},
|
|
146
|
+
],
|
|
147
|
+
huTemplate: `# HU: {{FormName}} Form
|
|
148
|
+
|
|
149
|
+
## User Story
|
|
150
|
+
As a user, I want to fill out the {{FormName}} form with clear guidance so that I can complete the action without confusion.
|
|
151
|
+
|
|
152
|
+
## Acceptance Criteria
|
|
153
|
+
|
|
154
|
+
### AC-1: Field validation
|
|
155
|
+
- [ ] Required fields marked visually
|
|
156
|
+
- [ ] Validation runs on blur and on submit
|
|
157
|
+
- [ ] Error messages appear adjacent to invalid fields
|
|
158
|
+
- [ ] Valid fields show positive feedback
|
|
159
|
+
|
|
160
|
+
### AC-2: Submit behavior
|
|
161
|
+
- [ ] Form is disabled (loading state) during submission
|
|
162
|
+
- [ ] Success state shown after successful submission
|
|
163
|
+
- [ ] Errors from the API are displayed inline
|
|
164
|
+
|
|
165
|
+
### AC-3: Accessibility
|
|
166
|
+
- [ ] All inputs have visible labels
|
|
167
|
+
- [ ] Error messages linked via aria-describedby
|
|
168
|
+
- [ ] Form navigable via keyboard (Tab, Enter, Escape)
|
|
169
|
+
- [ ] Screen reader announces validation errors
|
|
170
|
+
|
|
171
|
+
### AC-4: Responsive design
|
|
172
|
+
- [ ] Form renders correctly on mobile, tablet, and desktop
|
|
173
|
+
- [ ] Touch targets meet minimum size (44x44 px)
|
|
174
|
+
|
|
175
|
+
### AC-5: Reset and cancel
|
|
176
|
+
- [ ] Reset clears all fields and removes error state
|
|
177
|
+
- [ ] Cancel navigates away without data loss warning if form is pristine
|
|
178
|
+
- [ ] Cancel shows confirmation dialog if form has unsaved changes
|
|
179
|
+
`,
|
|
180
|
+
fichaTecnicaTemplate: `# FICHA TÉCNICA: {{FormName}} Form
|
|
181
|
+
|
|
182
|
+
## Affected Files
|
|
183
|
+
- components/{{FormName}}Form
|
|
184
|
+
- hooks/use{{FormName}}Form (form state, validation)
|
|
185
|
+
- api/{{FormName}}-client (submission)
|
|
186
|
+
- i18n/{{FormName}}-form.json (strings)
|
|
187
|
+
|
|
188
|
+
## Types / Entities
|
|
189
|
+
- \`{{FormName}}FormValues\`: all field values
|
|
190
|
+
- \`{{FormName}}FormErrors\`: per-field error messages
|
|
191
|
+
- \`{{FormName}}FormState\`: idle | submitting | success | error
|
|
192
|
+
|
|
193
|
+
## Risks
|
|
194
|
+
- Missing server-side validation mirror → inconsistent UX
|
|
195
|
+
- Missing loading state → double submissions
|
|
196
|
+
- Missing ARIA attributes → accessibility failures
|
|
197
|
+
|
|
198
|
+
## Estimation (rough)
|
|
199
|
+
- Dev: 4–10 hours
|
|
200
|
+
- Review: 1–2 hours
|
|
201
|
+
- Difficulty: 2/5
|
|
202
|
+
`,
|
|
203
|
+
progressTemplate: `# PROGRESS: {{FormName}} Form
|
|
204
|
+
|
|
205
|
+
## Status: draft
|
|
206
|
+
|
|
207
|
+
## Criteria
|
|
208
|
+
- [ ] AC-1: Field validation
|
|
209
|
+
- [ ] AC-2: Submit behavior
|
|
210
|
+
- [ ] AC-3: Accessibility
|
|
211
|
+
- [ ] AC-4: Responsive design
|
|
212
|
+
- [ ] AC-5: Reset and cancel
|
|
213
|
+
`,
|
|
214
|
+
};
|
|
215
|
+
//# sourceMappingURL=templates-api-ui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates-api-ui.js","sourceRoot":"","sources":["../../../src/engine/spec-templates/templates-api-ui.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SpecTemplateEntry } from '../../types/spec-templates.js';
|
|
2
|
+
/** JWT Authentication spec template. */
|
|
3
|
+
export declare const AUTH_JWT_TEMPLATE: SpecTemplateEntry;
|
|
4
|
+
/** CRUD Entity spec template. */
|
|
5
|
+
export declare const CRUD_ENTITY_TEMPLATE: SpecTemplateEntry;
|
|
6
|
+
//# sourceMappingURL=templates-auth-crud.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates-auth-crud.d.ts","sourceRoot":"","sources":["../../../src/engine/spec-templates/templates-auth-crud.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,wCAAwC;AACxC,eAAO,MAAM,iBAAiB,EAAE,iBA4G/B,CAAC;AAEF,iCAAiC;AACjC,eAAO,MAAM,oBAAoB,EAAE,iBA8GlC,CAAC"}
|