@mcp-graph-workflow/mcp-graph 5.5.2 → 5.6.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/api/router.d.ts.map +1 -1
- package/dist/api/router.js +4 -0
- package/dist/api/router.js.map +1 -1
- package/dist/api/routes/journey.d.ts +4 -0
- package/dist/api/routes/journey.d.ts.map +1 -0
- package/dist/api/routes/journey.js +263 -0
- package/dist/api/routes/journey.js.map +1 -0
- package/dist/api/routes/siebel.d.ts +7 -0
- package/dist/api/routes/siebel.d.ts.map +1 -0
- package/dist/api/routes/siebel.js +305 -0
- package/dist/api/routes/siebel.js.map +1 -0
- package/dist/core/context/compact-context.d.ts.map +1 -1
- package/dist/core/context/compact-context.js +6 -28
- package/dist/core/context/compact-context.js.map +1 -1
- package/dist/core/context/rag-context.d.ts.map +1 -1
- package/dist/core/context/rag-context.js +34 -5
- package/dist/core/context/rag-context.js.map +1 -1
- package/dist/core/designer/traceability-matrix.js +1 -1
- package/dist/core/designer/traceability-matrix.js.map +1 -1
- package/dist/core/events/event-types.d.ts +63 -1
- package/dist/core/events/event-types.d.ts.map +1 -1
- package/dist/core/graph/mermaid-export.d.ts.map +1 -1
- package/dist/core/graph/mermaid-export.js +1 -5
- package/dist/core/graph/mermaid-export.js.map +1 -1
- package/dist/core/implementer/tdd-checker.d.ts +1 -1
- package/dist/core/implementer/tdd-checker.d.ts.map +1 -1
- package/dist/core/implementer/tdd-checker.js +2 -2
- package/dist/core/implementer/tdd-checker.js.map +1 -1
- package/dist/core/importer/prd-to-graph.d.ts.map +1 -1
- package/dist/core/importer/prd-to-graph.js +28 -2
- package/dist/core/importer/prd-to-graph.js.map +1 -1
- package/dist/core/integrations/integration-orchestrator.d.ts +12 -0
- package/dist/core/integrations/integration-orchestrator.d.ts.map +1 -1
- package/dist/core/integrations/integration-orchestrator.js +36 -2
- package/dist/core/integrations/integration-orchestrator.js.map +1 -1
- package/dist/core/journey/journey-store.d.ts +137 -0
- package/dist/core/journey/journey-store.d.ts.map +1 -0
- package/dist/core/journey/journey-store.js +210 -0
- package/dist/core/journey/journey-store.js.map +1 -0
- package/dist/core/listener/backlog-health.d.ts.map +1 -1
- package/dist/core/listener/backlog-health.js +10 -2
- package/dist/core/listener/backlog-health.js.map +1 -1
- package/dist/core/listener/feedback-readiness.d.ts.map +1 -1
- package/dist/core/listener/feedback-readiness.js +2 -5
- package/dist/core/listener/feedback-readiness.js.map +1 -1
- package/dist/core/parser/classify.d.ts +1 -0
- package/dist/core/parser/classify.d.ts.map +1 -1
- package/dist/core/parser/classify.js +13 -0
- package/dist/core/parser/classify.js.map +1 -1
- package/dist/core/parser/extract.d.ts.map +1 -1
- package/dist/core/parser/extract.js +8 -2
- package/dist/core/parser/extract.js.map +1 -1
- package/dist/core/parser/file-reader.d.ts.map +1 -1
- package/dist/core/parser/file-reader.js +16 -1
- package/dist/core/parser/file-reader.js.map +1 -1
- package/dist/core/parser/read-docx.d.ts +17 -0
- package/dist/core/parser/read-docx.d.ts.map +1 -0
- package/dist/core/parser/read-docx.js +79 -0
- package/dist/core/parser/read-docx.js.map +1 -0
- package/dist/core/parser/read-swagger.d.ts +49 -0
- package/dist/core/parser/read-swagger.d.ts.map +1 -0
- package/dist/core/parser/read-swagger.js +332 -0
- package/dist/core/parser/read-swagger.js.map +1 -0
- package/dist/core/planner/decompose.d.ts.map +1 -1
- package/dist/core/planner/decompose.js +5 -4
- package/dist/core/planner/decompose.js.map +1 -1
- package/dist/core/planner/dependency-chain.d.ts.map +1 -1
- package/dist/core/planner/dependency-chain.js +3 -0
- package/dist/core/planner/dependency-chain.js.map +1 -1
- package/dist/core/planner/lifecycle-phase.d.ts.map +1 -1
- package/dist/core/planner/lifecycle-phase.js +3 -5
- package/dist/core/planner/lifecycle-phase.js.map +1 -1
- package/dist/core/planner/next-task.d.ts.map +1 -1
- package/dist/core/planner/next-task.js +7 -6
- package/dist/core/planner/next-task.js.map +1 -1
- package/dist/core/rag/chunk-text.d.ts +5 -0
- package/dist/core/rag/chunk-text.d.ts.map +1 -1
- package/dist/core/rag/chunk-text.js +135 -0
- package/dist/core/rag/chunk-text.js.map +1 -1
- package/dist/core/rag/code-context-indexer.d.ts +27 -0
- package/dist/core/rag/code-context-indexer.d.ts.map +1 -0
- package/dist/core/rag/code-context-indexer.js +53 -0
- package/dist/core/rag/code-context-indexer.js.map +1 -0
- package/dist/core/rag/decision-indexer.d.ts +20 -0
- package/dist/core/rag/decision-indexer.d.ts.map +1 -0
- package/dist/core/rag/decision-indexer.js +32 -0
- package/dist/core/rag/decision-indexer.js.map +1 -0
- package/dist/core/rag/journey-indexer.d.ts +16 -0
- package/dist/core/rag/journey-indexer.d.ts.map +1 -0
- package/dist/core/rag/journey-indexer.js +182 -0
- package/dist/core/rag/journey-indexer.js.map +1 -0
- package/dist/core/rag/knowledge-feedback.d.ts +15 -0
- package/dist/core/rag/knowledge-feedback.d.ts.map +1 -0
- package/dist/core/rag/knowledge-feedback.js +46 -0
- package/dist/core/rag/knowledge-feedback.js.map +1 -0
- package/dist/core/rag/knowledge-linker.d.ts +20 -0
- package/dist/core/rag/knowledge-linker.d.ts.map +1 -0
- package/dist/core/rag/knowledge-linker.js +107 -0
- package/dist/core/rag/knowledge-linker.js.map +1 -0
- package/dist/core/rag/knowledge-quality.d.ts +31 -0
- package/dist/core/rag/knowledge-quality.d.ts.map +1 -0
- package/dist/core/rag/knowledge-quality.js +127 -0
- package/dist/core/rag/knowledge-quality.js.map +1 -0
- package/dist/core/rag/knowledge-synthesizer.d.ts +17 -0
- package/dist/core/rag/knowledge-synthesizer.d.ts.map +1 -0
- package/dist/core/rag/knowledge-synthesizer.js +115 -0
- package/dist/core/rag/knowledge-synthesizer.js.map +1 -0
- package/dist/core/rag/memory-rag-query.d.ts +3 -3
- package/dist/core/rag/memory-rag-query.d.ts.map +1 -1
- package/dist/core/rag/memory-rag-query.js +18 -0
- package/dist/core/rag/memory-rag-query.js.map +1 -1
- package/dist/core/rag/multi-strategy-retrieval.d.ts +46 -0
- package/dist/core/rag/multi-strategy-retrieval.d.ts.map +1 -0
- package/dist/core/rag/multi-strategy-retrieval.js +140 -0
- package/dist/core/rag/multi-strategy-retrieval.js.map +1 -0
- package/dist/core/rag/rag-pipeline.d.ts +11 -0
- package/dist/core/rag/rag-pipeline.d.ts.map +1 -1
- package/dist/core/rag/rag-pipeline.js +39 -0
- package/dist/core/rag/rag-pipeline.js.map +1 -1
- package/dist/core/rag/siebel-indexer.d.ts +16 -0
- package/dist/core/rag/siebel-indexer.d.ts.map +1 -0
- package/dist/core/rag/siebel-indexer.js +75 -0
- package/dist/core/rag/siebel-indexer.js.map +1 -0
- package/dist/core/rag/swagger-indexer.d.ts +16 -0
- package/dist/core/rag/swagger-indexer.d.ts.map +1 -0
- package/dist/core/rag/swagger-indexer.js +119 -0
- package/dist/core/rag/swagger-indexer.js.map +1 -0
- package/dist/core/rag/validation-indexer.d.ts +23 -0
- package/dist/core/rag/validation-indexer.d.ts.map +1 -0
- package/dist/core/rag/validation-indexer.js +35 -0
- package/dist/core/rag/validation-indexer.js.map +1 -0
- package/dist/core/siebel/composer-automation.d.ts +77 -0
- package/dist/core/siebel/composer-automation.d.ts.map +1 -0
- package/dist/core/siebel/composer-automation.js +110 -0
- package/dist/core/siebel/composer-automation.js.map +1 -0
- package/dist/core/siebel/dependency-analyzer.d.ts +24 -0
- package/dist/core/siebel/dependency-analyzer.d.ts.map +1 -0
- package/dist/core/siebel/dependency-analyzer.js +174 -0
- package/dist/core/siebel/dependency-analyzer.js.map +1 -0
- package/dist/core/siebel/siebel-config.d.ts +28 -0
- package/dist/core/siebel/siebel-config.d.ts.map +1 -0
- package/dist/core/siebel/siebel-config.js +86 -0
- package/dist/core/siebel/siebel-config.js.map +1 -0
- package/dist/core/siebel/sif-context-assembler.d.ts +37 -0
- package/dist/core/siebel/sif-context-assembler.d.ts.map +1 -0
- package/dist/core/siebel/sif-context-assembler.js +259 -0
- package/dist/core/siebel/sif-context-assembler.js.map +1 -0
- package/dist/core/siebel/sif-generator.d.ts +26 -0
- package/dist/core/siebel/sif-generator.d.ts.map +1 -0
- package/dist/core/siebel/sif-generator.js +232 -0
- package/dist/core/siebel/sif-generator.js.map +1 -0
- package/dist/core/siebel/sif-parser.d.ts +16 -0
- package/dist/core/siebel/sif-parser.d.ts.map +1 -0
- package/dist/core/siebel/sif-parser.js +355 -0
- package/dist/core/siebel/sif-parser.js.map +1 -0
- package/dist/core/siebel/sif-templates.d.ts +45 -0
- package/dist/core/siebel/sif-templates.d.ts.map +1 -0
- package/dist/core/siebel/sif-templates.js +179 -0
- package/dist/core/siebel/sif-templates.js.map +1 -0
- package/dist/core/siebel/sif-to-graph.d.ts +20 -0
- package/dist/core/siebel/sif-to-graph.d.ts.map +1 -0
- package/dist/core/siebel/sif-to-graph.js +176 -0
- package/dist/core/siebel/sif-to-graph.js.map +1 -0
- package/dist/core/store/knowledge-store.d.ts +25 -0
- package/dist/core/store/knowledge-store.d.ts.map +1 -1
- package/dist/core/store/knowledge-store.js +73 -1
- package/dist/core/store/knowledge-store.js.map +1 -1
- package/dist/core/store/migrations.d.ts.map +1 -1
- package/dist/core/store/migrations.js +107 -0
- package/dist/core/store/migrations.js.map +1 -1
- package/dist/core/store/sqlite-store.d.ts.map +1 -1
- package/dist/core/store/sqlite-store.js +11 -7
- package/dist/core/store/sqlite-store.js.map +1 -1
- package/dist/core/utils/blocked-helpers.d.ts +14 -0
- package/dist/core/utils/blocked-helpers.d.ts.map +1 -0
- package/dist/core/utils/blocked-helpers.js +19 -0
- package/dist/core/utils/blocked-helpers.js.map +1 -0
- package/dist/core/utils/text.d.ts +9 -0
- package/dist/core/utils/text.d.ts.map +1 -0
- package/dist/core/utils/text.js +13 -0
- package/dist/core/utils/text.js.map +1 -0
- package/dist/mcp/lifecycle-wrapper.d.ts.map +1 -1
- package/dist/mcp/lifecycle-wrapper.js +1 -0
- package/dist/mcp/lifecycle-wrapper.js.map +1 -1
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +26 -0
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/journey.d.ts +4 -0
- package/dist/mcp/tools/journey.d.ts.map +1 -0
- package/dist/mcp/tools/journey.js +154 -0
- package/dist/mcp/tools/journey.js.map +1 -0
- package/dist/mcp/tools/knowledge-feedback.d.ts +8 -0
- package/dist/mcp/tools/knowledge-feedback.d.ts.map +1 -0
- package/dist/mcp/tools/knowledge-feedback.js +35 -0
- package/dist/mcp/tools/knowledge-feedback.js.map +1 -0
- package/dist/mcp/tools/knowledge-stats.d.ts +9 -0
- package/dist/mcp/tools/knowledge-stats.d.ts.map +1 -0
- package/dist/mcp/tools/knowledge-stats.js +83 -0
- package/dist/mcp/tools/knowledge-stats.js.map +1 -0
- package/dist/mcp/tools/plan-sprint.d.ts.map +1 -1
- package/dist/mcp/tools/plan-sprint.js +7 -1
- package/dist/mcp/tools/plan-sprint.js.map +1 -1
- package/dist/mcp/tools/rag-context.d.ts.map +1 -1
- package/dist/mcp/tools/rag-context.js +43 -2
- package/dist/mcp/tools/rag-context.js.map +1 -1
- package/dist/mcp/tools/reindex-knowledge.d.ts.map +1 -1
- package/dist/mcp/tools/reindex-knowledge.js +23 -2
- package/dist/mcp/tools/reindex-knowledge.js.map +1 -1
- package/dist/mcp/tools/siebel-analyze.d.ts +8 -0
- package/dist/mcp/tools/siebel-analyze.d.ts.map +1 -0
- package/dist/mcp/tools/siebel-analyze.js +107 -0
- package/dist/mcp/tools/siebel-analyze.js.map +1 -0
- package/dist/mcp/tools/siebel-composer.d.ts +12 -0
- package/dist/mcp/tools/siebel-composer.d.ts.map +1 -0
- package/dist/mcp/tools/siebel-composer.js +59 -0
- package/dist/mcp/tools/siebel-composer.js.map +1 -0
- package/dist/mcp/tools/siebel-env.d.ts +8 -0
- package/dist/mcp/tools/siebel-env.d.ts.map +1 -0
- package/dist/mcp/tools/siebel-env.js +60 -0
- package/dist/mcp/tools/siebel-env.js.map +1 -0
- package/dist/mcp/tools/siebel-generate-sif.d.ts +8 -0
- package/dist/mcp/tools/siebel-generate-sif.d.ts.map +1 -0
- package/dist/mcp/tools/siebel-generate-sif.js +91 -0
- package/dist/mcp/tools/siebel-generate-sif.js.map +1 -0
- package/dist/mcp/tools/siebel-import-docs.d.ts +9 -0
- package/dist/mcp/tools/siebel-import-docs.d.ts.map +1 -0
- package/dist/mcp/tools/siebel-import-docs.js +106 -0
- package/dist/mcp/tools/siebel-import-docs.js.map +1 -0
- package/dist/mcp/tools/siebel-import-sif.d.ts +8 -0
- package/dist/mcp/tools/siebel-import-sif.d.ts.map +1 -0
- package/dist/mcp/tools/siebel-import-sif.js +68 -0
- package/dist/mcp/tools/siebel-import-sif.js.map +1 -0
- package/dist/mcp/tools/siebel-search.d.ts +8 -0
- package/dist/mcp/tools/siebel-search.d.ts.map +1 -0
- package/dist/mcp/tools/siebel-search.js +47 -0
- package/dist/mcp/tools/siebel-search.js.map +1 -0
- package/dist/mcp/tools/siebel-validate.d.ts +8 -0
- package/dist/mcp/tools/siebel-validate.d.ts.map +1 -0
- package/dist/mcp/tools/siebel-validate.js +107 -0
- package/dist/mcp/tools/siebel-validate.js.map +1 -0
- package/dist/mcp/tools/update-status.d.ts.map +1 -1
- package/dist/mcp/tools/update-status.js +34 -9
- package/dist/mcp/tools/update-status.js.map +1 -1
- package/dist/mcp/tools/validate.d.ts.map +1 -1
- package/dist/mcp/tools/validate.js +21 -0
- package/dist/mcp/tools/validate.js.map +1 -1
- package/dist/schemas/designer-schema.d.ts +3 -3
- package/dist/schemas/knowledge.schema.d.ts +66 -0
- package/dist/schemas/knowledge.schema.d.ts.map +1 -1
- package/dist/schemas/knowledge.schema.js +28 -0
- package/dist/schemas/knowledge.schema.js.map +1 -1
- package/dist/schemas/listener-schema.d.ts +9 -0
- package/dist/schemas/listener-schema.d.ts.map +1 -1
- package/dist/schemas/listener-schema.js +5 -0
- package/dist/schemas/listener-schema.js.map +1 -1
- package/dist/schemas/siebel.schema.d.ts +564 -0
- package/dist/schemas/siebel.schema.d.ts.map +1 -0
- package/dist/schemas/siebel.schema.js +197 -0
- package/dist/schemas/siebel.schema.js.map +1 -0
- package/dist/web/dashboard/dist/assets/{benchmark-tab-C5fwIqgM.js → benchmark-tab-WCcv55oB.js} +1 -1
- package/dist/web/dashboard/dist/assets/{context-tab-ChCyrRlr.js → context-tab-CYnMjkHN.js} +1 -1
- package/dist/web/dashboard/dist/assets/{gitnexus-tab-DnlGT63w.js → gitnexus-tab-Dj0DERUy.js} +1 -1
- package/dist/web/dashboard/dist/assets/graph-tab-tI93ZxxW.js +1 -0
- package/dist/web/dashboard/dist/assets/graph-utils-DeQEwmsr.js +1 -0
- package/dist/web/dashboard/dist/assets/index-B1PLsGu1.js +55 -0
- package/dist/web/dashboard/dist/assets/index-DKvjo_C5.css +1 -0
- package/dist/web/dashboard/dist/assets/{index-DlZhNCGR.js → index-NmopQGmQ.js} +1 -1
- package/dist/web/dashboard/dist/assets/{insights-tab-Cj4f85vS.js → insights-tab-X7u4J-xv.js} +1 -1
- package/dist/web/dashboard/dist/assets/journey-tab-Cpz6_3mB.js +1 -0
- package/dist/web/dashboard/dist/assets/{logs-tab-C4C2Vn8-.js → logs-tab-QB__4Xdl.js} +1 -1
- package/dist/web/dashboard/dist/assets/{memories-tab-NtNwoxbT.js → memories-tab-Dry9wz7q.js} +1 -1
- package/dist/web/dashboard/dist/assets/prd-backlog-tab-OXTksZKv.js +1 -0
- package/dist/web/dashboard/dist/assets/siebel-tab-x7OCuCmb.js +3 -0
- package/dist/web/dashboard/dist/assets/{skills-tab-CIj4z1Ol.js → skills-tab-DeUEKmpZ.js} +1 -1
- package/dist/web/dashboard/dist/assets/style-C-e8BTyP.js +7 -0
- package/dist/web/dashboard/dist/index.html +2 -2
- package/package.json +3 -1
- package/dist/web/dashboard/dist/assets/graph-tab-DjV9RD41.js +0 -1
- package/dist/web/dashboard/dist/assets/graph-utils-C6bvcT4d.js +0 -7
- package/dist/web/dashboard/dist/assets/index-DQqYFXms.css +0 -1
- package/dist/web/dashboard/dist/assets/index-dCyMex_p.js +0 -53
- package/dist/web/dashboard/dist/assets/prd-backlog-tab-Bxt7qiVG.js +0 -1
- /package/dist/web/dashboard/dist/assets/{graph-utils-BZV40eAE.css → style-BZV40eAE.css} +0 -0
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SIF Context Assembler — builds RAG-optimized context for SIF generation.
|
|
3
|
+
*
|
|
4
|
+
* Queries the knowledge store for existing Siebel objects, documentation,
|
|
5
|
+
* and Swagger specs to assemble a rich context payload for the LLM.
|
|
6
|
+
*/
|
|
7
|
+
import { logger } from "../utils/logger.js";
|
|
8
|
+
import { getTemplate } from "./sif-templates.js";
|
|
9
|
+
/** Validation rules that apply to all generated SIF. */
|
|
10
|
+
const BASE_VALIDATION_RULES = [
|
|
11
|
+
"Every object must have a NAME attribute",
|
|
12
|
+
"XML must follow REPOSITORY > PROJECT > Objects hierarchy",
|
|
13
|
+
"Use valid Siebel object tags: APPLET, BUSINESS_COMPONENT, BUSINESS_OBJECT, VIEW, SCREEN, WORKFLOW, BUSINESS_SERVICE, INTEGRATION_OBJECT",
|
|
14
|
+
"Business Components must have a TABLE attribute referencing a valid Siebel table",
|
|
15
|
+
"Applets must have a BUS_COMP attribute referencing a Business Component",
|
|
16
|
+
"Views must have a BUS_OBJECT attribute referencing a Business Object",
|
|
17
|
+
"Field names must be unique within a Business Component",
|
|
18
|
+
"Control names must be unique within an Applet",
|
|
19
|
+
];
|
|
20
|
+
/**
|
|
21
|
+
* Assemble a SIF generation context from the knowledge store.
|
|
22
|
+
*
|
|
23
|
+
* Pipeline:
|
|
24
|
+
* 1. Search existing Siebel objects by type/project
|
|
25
|
+
* 2. Select relevant templates
|
|
26
|
+
* 3. Search for example SIF content
|
|
27
|
+
* 4. Search related documentation and swagger specs
|
|
28
|
+
* 5. Build structured prompt
|
|
29
|
+
*/
|
|
30
|
+
export function assembleSifContext(knowledgeStore, request) {
|
|
31
|
+
logger.info("Assembling SIF generation context", {
|
|
32
|
+
types: request.objectTypes.join(","),
|
|
33
|
+
project: request.basedOnProject ?? "none",
|
|
34
|
+
});
|
|
35
|
+
// 1. Search existing Siebel objects
|
|
36
|
+
const existingObjects = searchExistingObjects(knowledgeStore, request);
|
|
37
|
+
// 2. Select templates for requested types (only for generatable types)
|
|
38
|
+
const templates = request.objectTypes
|
|
39
|
+
.map((type) => getTemplate(type))
|
|
40
|
+
.filter((t) => t !== undefined);
|
|
41
|
+
// 3. Search for example SIF content
|
|
42
|
+
const exampleSif = searchExampleSif(knowledgeStore, request);
|
|
43
|
+
// 4. Search related docs (documentation, swagger)
|
|
44
|
+
const relatedDocs = searchRelatedDocs(knowledgeStore, request);
|
|
45
|
+
// 5. Build validation rules
|
|
46
|
+
const validationRules = buildValidationRules(request);
|
|
47
|
+
// 6. Build structured prompt
|
|
48
|
+
const prompt = buildPrompt(request, templates, existingObjects, relatedDocs, exampleSif, validationRules);
|
|
49
|
+
logger.debug("SIF context assembled", {
|
|
50
|
+
existingObjects: String(existingObjects.length),
|
|
51
|
+
templates: String(templates.length),
|
|
52
|
+
relatedDocs: String(relatedDocs.length),
|
|
53
|
+
promptLength: String(prompt.length),
|
|
54
|
+
});
|
|
55
|
+
return {
|
|
56
|
+
existingObjects,
|
|
57
|
+
templates,
|
|
58
|
+
exampleSif,
|
|
59
|
+
relatedDocs,
|
|
60
|
+
validationRules,
|
|
61
|
+
prompt,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function searchExistingObjects(knowledgeStore, request) {
|
|
65
|
+
const summaries = [];
|
|
66
|
+
// Search by each object type separately for better FTS5 matching
|
|
67
|
+
for (const type of request.objectTypes) {
|
|
68
|
+
try {
|
|
69
|
+
const results = knowledgeStore.search(type.replace(/_/g, " "), 5);
|
|
70
|
+
for (const r of results) {
|
|
71
|
+
if (r.sourceType === "siebel_sif" || r.sourceType === "siebel_generated") {
|
|
72
|
+
summaries.push(docToSummary(r));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
// FTS5 may throw on empty index — safe to ignore
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Also search by key words from description
|
|
81
|
+
const descWords = request.description
|
|
82
|
+
.split(/\s+/)
|
|
83
|
+
.filter((w) => w.length > 3)
|
|
84
|
+
.slice(0, 3);
|
|
85
|
+
for (const word of descWords) {
|
|
86
|
+
try {
|
|
87
|
+
const results = knowledgeStore.search(word, 5);
|
|
88
|
+
for (const r of results) {
|
|
89
|
+
if (r.sourceType === "siebel_sif" || r.sourceType === "siebel_generated") {
|
|
90
|
+
if (!summaries.some((s) => s.title === r.title)) {
|
|
91
|
+
summaries.push(docToSummary(r));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
// Ignore FTS5 errors
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
logger.debug("Existing objects search", { found: String(summaries.length) });
|
|
101
|
+
return summaries;
|
|
102
|
+
}
|
|
103
|
+
function searchExampleSif(knowledgeStore, request) {
|
|
104
|
+
try {
|
|
105
|
+
const type = request.objectTypes[0].replace(/_/g, " ");
|
|
106
|
+
const results = knowledgeStore.search(type, 3);
|
|
107
|
+
const sifDoc = results.find((r) => r.sourceType === "siebel_sif");
|
|
108
|
+
return sifDoc?.content ?? "";
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
return "";
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
function searchRelatedDocs(knowledgeStore, request) {
|
|
115
|
+
const docTypes = new Set(["siebel_docs", "swagger", "docs", "prd"]);
|
|
116
|
+
const summaries = [];
|
|
117
|
+
// Search by key words from description
|
|
118
|
+
const words = request.description
|
|
119
|
+
.split(/\s+/)
|
|
120
|
+
.filter((w) => w.length > 3)
|
|
121
|
+
.slice(0, 5);
|
|
122
|
+
for (const word of words) {
|
|
123
|
+
try {
|
|
124
|
+
const results = knowledgeStore.search(word, 5);
|
|
125
|
+
for (const r of results) {
|
|
126
|
+
if (docTypes.has(r.sourceType) && !summaries.some((s) => s.title === r.title)) {
|
|
127
|
+
summaries.push(docToSummary(r));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
// Ignore FTS5 errors
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Also search by object types
|
|
136
|
+
for (const type of request.objectTypes) {
|
|
137
|
+
try {
|
|
138
|
+
const results = knowledgeStore.search(type.replace(/_/g, " "), 5);
|
|
139
|
+
for (const r of results) {
|
|
140
|
+
if (docTypes.has(r.sourceType) && !summaries.some((s) => s.title === r.title)) {
|
|
141
|
+
summaries.push(docToSummary(r));
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
// Ignore
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return summaries;
|
|
150
|
+
}
|
|
151
|
+
function docToSummary(doc) {
|
|
152
|
+
return {
|
|
153
|
+
title: doc.title,
|
|
154
|
+
content: doc.content,
|
|
155
|
+
sourceType: doc.sourceType,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
function buildValidationRules(request) {
|
|
159
|
+
const rules = [...BASE_VALIDATION_RULES];
|
|
160
|
+
// Add type-specific rules
|
|
161
|
+
for (const type of request.objectTypes) {
|
|
162
|
+
const template = getTemplate(type);
|
|
163
|
+
if (template) {
|
|
164
|
+
for (const attr of template.requiredAttrs) {
|
|
165
|
+
if (attr !== "NAME") {
|
|
166
|
+
rules.push(`${template.xmlTag} must have a ${attr} attribute`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return rules;
|
|
172
|
+
}
|
|
173
|
+
function buildPrompt(request, templates, existingObjects, relatedDocs, exampleSif, validationRules) {
|
|
174
|
+
const parts = [];
|
|
175
|
+
// Header
|
|
176
|
+
parts.push("# SIF Generation Request");
|
|
177
|
+
parts.push("");
|
|
178
|
+
parts.push(`**Description:** ${request.description}`);
|
|
179
|
+
parts.push(`**Object types:** ${request.objectTypes.join(", ")}`);
|
|
180
|
+
if (request.basedOnProject) {
|
|
181
|
+
parts.push(`**Project:** ${request.basedOnProject}`);
|
|
182
|
+
}
|
|
183
|
+
if (request.properties) {
|
|
184
|
+
parts.push(`**Properties:** ${JSON.stringify(request.properties)}`);
|
|
185
|
+
}
|
|
186
|
+
// Templates
|
|
187
|
+
parts.push("");
|
|
188
|
+
parts.push("## Available Templates");
|
|
189
|
+
parts.push("");
|
|
190
|
+
for (const template of templates) {
|
|
191
|
+
parts.push(`### ${template.xmlTag}`);
|
|
192
|
+
parts.push(`- Required attributes: ${template.requiredAttrs.join(", ")}`);
|
|
193
|
+
parts.push(`- Optional attributes: ${template.optionalAttrs.join(", ")}`);
|
|
194
|
+
parts.push(`- Child elements: ${template.childTags.join(", ") || "none"}`);
|
|
195
|
+
parts.push("");
|
|
196
|
+
}
|
|
197
|
+
// Expected XML structure
|
|
198
|
+
parts.push("## Expected SIF XML Structure");
|
|
199
|
+
parts.push("");
|
|
200
|
+
parts.push("```xml");
|
|
201
|
+
parts.push('<?xml version="1.0" encoding="UTF-8"?>');
|
|
202
|
+
parts.push('<REPOSITORY NAME="Siebel Repository">');
|
|
203
|
+
parts.push(` <PROJECT NAME="${request.basedOnProject ?? "Generated Project"}">`);
|
|
204
|
+
for (const template of templates) {
|
|
205
|
+
parts.push(` <${template.xmlTag} NAME="..." ${template.requiredAttrs.filter((a) => a !== "NAME").map((a) => `${a}="..."`).join(" ")}>`);
|
|
206
|
+
if (template.childTags.length > 0) {
|
|
207
|
+
parts.push(` <${template.childTags[0]} NAME="..." />`);
|
|
208
|
+
}
|
|
209
|
+
parts.push(` </${template.xmlTag}>`);
|
|
210
|
+
}
|
|
211
|
+
parts.push(" </PROJECT>");
|
|
212
|
+
parts.push("</REPOSITORY>");
|
|
213
|
+
parts.push("```");
|
|
214
|
+
// Existing objects context
|
|
215
|
+
if (existingObjects.length > 0) {
|
|
216
|
+
parts.push("");
|
|
217
|
+
parts.push("## Existing Siebel Objects (for reference)");
|
|
218
|
+
parts.push("");
|
|
219
|
+
for (const obj of existingObjects.slice(0, 5)) {
|
|
220
|
+
parts.push(`### ${obj.title}`);
|
|
221
|
+
parts.push(obj.content.slice(0, 500));
|
|
222
|
+
parts.push("");
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
// Related documentation
|
|
226
|
+
if (relatedDocs.length > 0) {
|
|
227
|
+
parts.push("");
|
|
228
|
+
parts.push("## Related Documentation");
|
|
229
|
+
parts.push("");
|
|
230
|
+
for (const doc of relatedDocs.slice(0, 5)) {
|
|
231
|
+
parts.push(`### ${doc.title} (${doc.sourceType})`);
|
|
232
|
+
parts.push(doc.content.slice(0, 500));
|
|
233
|
+
parts.push("");
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
// Example SIF
|
|
237
|
+
if (exampleSif) {
|
|
238
|
+
parts.push("");
|
|
239
|
+
parts.push("## Example SIF Content");
|
|
240
|
+
parts.push("");
|
|
241
|
+
parts.push(exampleSif.slice(0, 1000));
|
|
242
|
+
}
|
|
243
|
+
// Validation rules
|
|
244
|
+
parts.push("");
|
|
245
|
+
parts.push("## Validation Rules");
|
|
246
|
+
parts.push("");
|
|
247
|
+
for (const rule of validationRules) {
|
|
248
|
+
parts.push(`- ${rule}`);
|
|
249
|
+
}
|
|
250
|
+
// Instructions
|
|
251
|
+
parts.push("");
|
|
252
|
+
parts.push("## Instructions");
|
|
253
|
+
parts.push("");
|
|
254
|
+
parts.push("Generate a valid Siebel SIF XML file following the structure above.");
|
|
255
|
+
parts.push("Return ONLY the XML content, no markdown code blocks or explanations.");
|
|
256
|
+
parts.push("Ensure all required attributes are present for each object type.");
|
|
257
|
+
return parts.join("\n");
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=sif-context-assembler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sif-context-assembler.js","sourceRoot":"","sources":["../../../src/core/siebel/sif-context-assembler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAoB,MAAM,oBAAoB,CAAC;AAsBnE,wDAAwD;AACxD,MAAM,qBAAqB,GAAa;IACtC,yCAAyC;IACzC,0DAA0D;IAC1D,yIAAyI;IACzI,kFAAkF;IAClF,yEAAyE;IACzE,sEAAsE;IACtE,wDAAwD;IACxD,+CAA+C;CAChD,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,cAA8B,EAC9B,OAA6B;IAE7B,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE;QAC/C,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;QACpC,OAAO,EAAE,OAAO,CAAC,cAAc,IAAI,MAAM;KAC1C,CAAC,CAAC;IAEH,oCAAoC;IACpC,MAAM,eAAe,GAAG,qBAAqB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAEvE,uEAAuE;IACvE,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW;SAClC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAuB,CAAC,CAAC;SACnD,MAAM,CAAC,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IAEpD,oCAAoC;IACpC,MAAM,UAAU,GAAG,gBAAgB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAE7D,kDAAkD;IAClD,MAAM,WAAW,GAAG,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAE/D,4BAA4B;IAC5B,MAAM,eAAe,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAEtD,6BAA6B;IAC7B,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;IAE1G,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE;QACpC,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;QAC/C,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;QACnC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;QACvC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;KACpC,CAAC,CAAC;IAEH,OAAO;QACL,eAAe;QACf,SAAS;QACT,UAAU;QACV,WAAW;QACX,eAAe;QACf,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,cAA8B,EAC9B,OAA6B;IAE7B,MAAM,SAAS,GAAuB,EAAE,CAAC;IAEzC,iEAAiE;IACjE,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAClE,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC,CAAC,UAAU,KAAK,YAAY,IAAI,CAAC,CAAC,UAAU,KAAK,kBAAkB,EAAE,CAAC;oBACzE,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,iDAAiD;QACnD,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW;SAClC,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SAC3B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC/C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC,CAAC,UAAU,KAAK,YAAY,IAAI,CAAC,CAAC,UAAU,KAAK,kBAAkB,EAAE,CAAC;oBACzE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;wBAChD,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB;QACvB,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC7E,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CACvB,cAA8B,EAC9B,OAA6B;IAE7B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,YAAY,CAAC,CAAC;QAClE,OAAO,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CACxB,cAA8B,EAC9B,OAA6B;IAE7B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACpE,MAAM,SAAS,GAAuB,EAAE,CAAC;IAEzC,uCAAuC;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW;SAC9B,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SAC3B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC/C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC9E,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB;QACvB,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAClE,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC9E,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,YAAY,CAAC,GAAsB;IAC1C,OAAO;QACL,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,UAAU,EAAE,GAAG,CAAC,UAAU;KAC3B,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,OAA6B;IACzD,MAAM,KAAK,GAAG,CAAC,GAAG,qBAAqB,CAAC,CAAC;IAEzC,0BAA0B;IAC1B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAuB,CAAC,CAAC;QACtD,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;gBAC1C,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;oBACpB,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,gBAAgB,IAAI,YAAY,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAClB,OAA6B,EAC7B,SAAwB,EACxB,eAAmC,EACnC,WAA+B,EAC/B,UAAkB,EAClB,eAAyB;IAEzB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,SAAS;IACT,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACvC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,KAAK,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClE,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,YAAY;IACZ,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,0BAA0B,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1E,KAAK,CAAC,IAAI,CAAC,0BAA0B,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1E,KAAK,CAAC,IAAI,CAAC,qBAAqB,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;QAC3E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,yBAAyB;IACzB,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC5C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACrD,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,cAAc,IAAI,mBAAmB,IAAI,CAAC,CAAC;IAClF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,QAAQ,QAAQ,CAAC,MAAM,eAAe,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3I,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,UAAU,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1C,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAElB,2BAA2B;IAC3B,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC9C,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;YACnD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,cAAc;IACd,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,mBAAmB;IACnB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,eAAe;IACf,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;IAClF,KAAK,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;IACpF,KAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;IAE/E,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SIF Generator — two-phase SIF generation pipeline.
|
|
3
|
+
*
|
|
4
|
+
* Phase 1 (prepare): Assembles RAG context + prompt for the LLM.
|
|
5
|
+
* Phase 2 (finalize): Validates LLM output, indexes into knowledge store.
|
|
6
|
+
*
|
|
7
|
+
* The module does NOT call any LLM — it stays pure and testable.
|
|
8
|
+
*/
|
|
9
|
+
import { KnowledgeStore } from "../store/knowledge-store.js";
|
|
10
|
+
import { type SifGenerationContext } from "./sif-context-assembler.js";
|
|
11
|
+
import type { SifGenerationRequest, SifGenerationResult } from "../../schemas/siebel.schema.js";
|
|
12
|
+
/**
|
|
13
|
+
* Phase 1: Prepare SIF generation context.
|
|
14
|
+
*
|
|
15
|
+
* Returns a structured context with prompt, templates, existing objects,
|
|
16
|
+
* and validation rules for the LLM to use.
|
|
17
|
+
*/
|
|
18
|
+
export declare function prepareSifGeneration(knowledgeStore: KnowledgeStore, request: SifGenerationRequest): SifGenerationContext;
|
|
19
|
+
/**
|
|
20
|
+
* Phase 2: Finalize SIF generation.
|
|
21
|
+
*
|
|
22
|
+
* Validates the LLM-generated XML, checks for collisions with existing objects,
|
|
23
|
+
* runs best-practice checks, and indexes the result into the knowledge store.
|
|
24
|
+
*/
|
|
25
|
+
export declare function finalizeSifGeneration(knowledgeStore: KnowledgeStore, generatedXml: string, request: SifGenerationRequest): SifGenerationResult;
|
|
26
|
+
//# sourceMappingURL=sif-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sif-generator.d.ts","sourceRoot":"","sources":["../../../src/core/siebel/sif-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAI7D,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EAGpB,MAAM,gCAAgC,CAAC;AAExC;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,oBAAoB,GAC5B,oBAAoB,CAOtB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,oBAAoB,GAC5B,mBAAmB,CAsFrB"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SIF Generator — two-phase SIF generation pipeline.
|
|
3
|
+
*
|
|
4
|
+
* Phase 1 (prepare): Assembles RAG context + prompt for the LLM.
|
|
5
|
+
* Phase 2 (finalize): Validates LLM output, indexes into knowledge store.
|
|
6
|
+
*
|
|
7
|
+
* The module does NOT call any LLM — it stays pure and testable.
|
|
8
|
+
*/
|
|
9
|
+
import { logger } from "../utils/logger.js";
|
|
10
|
+
import { parseSifContent } from "./sif-parser.js";
|
|
11
|
+
import { indexSifContent } from "../../core/rag/siebel-indexer.js";
|
|
12
|
+
import { assembleSifContext, } from "./sif-context-assembler.js";
|
|
13
|
+
/**
|
|
14
|
+
* Phase 1: Prepare SIF generation context.
|
|
15
|
+
*
|
|
16
|
+
* Returns a structured context with prompt, templates, existing objects,
|
|
17
|
+
* and validation rules for the LLM to use.
|
|
18
|
+
*/
|
|
19
|
+
export function prepareSifGeneration(knowledgeStore, request) {
|
|
20
|
+
logger.info("Preparing SIF generation", {
|
|
21
|
+
types: request.objectTypes.join(","),
|
|
22
|
+
description: request.description.slice(0, 100),
|
|
23
|
+
});
|
|
24
|
+
return assembleSifContext(knowledgeStore, request);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Phase 2: Finalize SIF generation.
|
|
28
|
+
*
|
|
29
|
+
* Validates the LLM-generated XML, checks for collisions with existing objects,
|
|
30
|
+
* runs best-practice checks, and indexes the result into the knowledge store.
|
|
31
|
+
*/
|
|
32
|
+
export function finalizeSifGeneration(knowledgeStore, generatedXml, request) {
|
|
33
|
+
logger.info("Finalizing SIF generation", {
|
|
34
|
+
xmlLength: String(generatedXml.length),
|
|
35
|
+
requestTypes: request.objectTypes.join(","),
|
|
36
|
+
});
|
|
37
|
+
const messages = [];
|
|
38
|
+
// 1. Parse the generated XML
|
|
39
|
+
let parseResult;
|
|
40
|
+
try {
|
|
41
|
+
parseResult = parseSifContent(generatedXml, "generated.sif");
|
|
42
|
+
messages.push({
|
|
43
|
+
level: "info",
|
|
44
|
+
message: `Parsed ${parseResult.objects.length} objects, ${parseResult.dependencies.length} dependencies`,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
const errMsg = err instanceof Error ? err.message : String(err);
|
|
49
|
+
logger.error("SIF generation validation failed: invalid XML", { error: errMsg });
|
|
50
|
+
messages.push({
|
|
51
|
+
level: "error",
|
|
52
|
+
message: `Invalid SIF XML: ${errMsg}`,
|
|
53
|
+
});
|
|
54
|
+
return {
|
|
55
|
+
sifContent: generatedXml,
|
|
56
|
+
objects: [],
|
|
57
|
+
validation: {
|
|
58
|
+
status: "invalid",
|
|
59
|
+
messages,
|
|
60
|
+
score: 0,
|
|
61
|
+
},
|
|
62
|
+
metadata: {
|
|
63
|
+
generatedAt: new Date().toISOString(),
|
|
64
|
+
requestDescription: request.description,
|
|
65
|
+
objectCount: 0,
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
// 2. Check for name collisions with existing objects
|
|
70
|
+
checkNameCollisions(knowledgeStore, parseResult, messages);
|
|
71
|
+
// 3. Run best-practice checks
|
|
72
|
+
runBestPracticeChecks(parseResult, messages);
|
|
73
|
+
// 4. Calculate score
|
|
74
|
+
const score = calculateScore(parseResult, messages);
|
|
75
|
+
// 5. Determine status
|
|
76
|
+
const hasErrors = messages.some((m) => m.level === "error");
|
|
77
|
+
const hasWarnings = messages.some((m) => m.level === "warning");
|
|
78
|
+
const status = hasErrors ? "invalid" : hasWarnings ? "warnings" : "valid";
|
|
79
|
+
// 6. Index into knowledge store (only if valid or warnings)
|
|
80
|
+
if (!hasErrors) {
|
|
81
|
+
try {
|
|
82
|
+
indexSifContent(knowledgeStore, parseResult);
|
|
83
|
+
logger.info("Generated SIF indexed into knowledge store", {
|
|
84
|
+
objectCount: String(parseResult.objects.length),
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
logger.error("Failed to index generated SIF", {
|
|
89
|
+
error: err instanceof Error ? err.message : String(err),
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const result = {
|
|
94
|
+
sifContent: generatedXml,
|
|
95
|
+
objects: parseResult.objects.map((o) => ({ name: o.name, type: o.type })),
|
|
96
|
+
validation: { status, messages, score },
|
|
97
|
+
metadata: {
|
|
98
|
+
generatedAt: new Date().toISOString(),
|
|
99
|
+
requestDescription: request.description,
|
|
100
|
+
objectCount: parseResult.objects.length,
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
logger.info("SIF generation finalized", {
|
|
104
|
+
status,
|
|
105
|
+
score: String(score),
|
|
106
|
+
objectCount: String(parseResult.objects.length),
|
|
107
|
+
});
|
|
108
|
+
return result;
|
|
109
|
+
}
|
|
110
|
+
function checkNameCollisions(knowledgeStore, parseResult, messages) {
|
|
111
|
+
for (const obj of parseResult.objects) {
|
|
112
|
+
try {
|
|
113
|
+
// Search by object name — simpler query for better FTS5 matching
|
|
114
|
+
const existing = knowledgeStore.search(obj.name, 10);
|
|
115
|
+
const collision = existing.find((doc) => doc.sourceType === "siebel_sif" &&
|
|
116
|
+
doc.title.toLowerCase().includes(obj.name.toLowerCase()) &&
|
|
117
|
+
(doc.title.toLowerCase().includes(obj.type) ||
|
|
118
|
+
doc.title.toLowerCase().includes(obj.type.replace(/_/g, " "))));
|
|
119
|
+
if (collision) {
|
|
120
|
+
messages.push({
|
|
121
|
+
level: "warning",
|
|
122
|
+
message: `Name collision: ${obj.type} "${obj.name}" already exists in indexed objects`,
|
|
123
|
+
objectName: obj.name,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
// Search might fail on empty knowledge store — that's OK
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
function runBestPracticeChecks(parseResult, messages) {
|
|
133
|
+
for (const obj of parseResult.objects) {
|
|
134
|
+
// BCs without TABLE
|
|
135
|
+
if (obj.type === "business_component") {
|
|
136
|
+
const hasTable = obj.properties.some((p) => p.name === "TABLE");
|
|
137
|
+
if (!hasTable) {
|
|
138
|
+
messages.push({
|
|
139
|
+
level: "warning",
|
|
140
|
+
message: `Business Component "${obj.name}" is missing TABLE attribute`,
|
|
141
|
+
objectName: obj.name,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Applets without BUS_COMP
|
|
146
|
+
if (obj.type === "applet") {
|
|
147
|
+
const hasBusComp = obj.properties.some((p) => p.name === "BUS_COMP");
|
|
148
|
+
if (!hasBusComp) {
|
|
149
|
+
messages.push({
|
|
150
|
+
level: "warning",
|
|
151
|
+
message: `Applet "${obj.name}" is missing BUS_COMP attribute`,
|
|
152
|
+
objectName: obj.name,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// Views without BUS_OBJECT
|
|
157
|
+
if (obj.type === "view") {
|
|
158
|
+
const hasBusObject = obj.properties.some((p) => p.name === "BUS_OBJECT");
|
|
159
|
+
if (!hasBusObject) {
|
|
160
|
+
messages.push({
|
|
161
|
+
level: "warning",
|
|
162
|
+
message: `View "${obj.name}" is missing BUS_OBJECT attribute`,
|
|
163
|
+
objectName: obj.name,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
// Objects without name (shouldn't happen but defensive)
|
|
168
|
+
if (!obj.name || obj.name.trim() === "") {
|
|
169
|
+
messages.push({
|
|
170
|
+
level: "error",
|
|
171
|
+
message: "Object found without a NAME attribute",
|
|
172
|
+
objectName: "unknown",
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// Check circular dependencies
|
|
177
|
+
if (parseResult.dependencies.length > 0) {
|
|
178
|
+
// Build adjacency map for cycle detection
|
|
179
|
+
const adjMap = new Map();
|
|
180
|
+
for (const dep of parseResult.dependencies) {
|
|
181
|
+
const fromKey = `${dep.from.type}:${dep.from.name}`;
|
|
182
|
+
const toKey = `${dep.to.type}:${dep.to.name}`;
|
|
183
|
+
const existing = adjMap.get(fromKey) ?? [];
|
|
184
|
+
existing.push(toKey);
|
|
185
|
+
adjMap.set(fromKey, existing);
|
|
186
|
+
}
|
|
187
|
+
// Simple DFS cycle detection
|
|
188
|
+
const visited = new Set();
|
|
189
|
+
const inStack = new Set();
|
|
190
|
+
function hasCycle(node) {
|
|
191
|
+
visited.add(node);
|
|
192
|
+
inStack.add(node);
|
|
193
|
+
for (const neighbor of adjMap.get(node) ?? []) {
|
|
194
|
+
if (inStack.has(neighbor))
|
|
195
|
+
return true;
|
|
196
|
+
if (!visited.has(neighbor) && hasCycle(neighbor))
|
|
197
|
+
return true;
|
|
198
|
+
}
|
|
199
|
+
inStack.delete(node);
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
for (const key of adjMap.keys()) {
|
|
203
|
+
if (!visited.has(key) && hasCycle(key)) {
|
|
204
|
+
messages.push({
|
|
205
|
+
level: "warning",
|
|
206
|
+
message: "Circular dependency detected in generated objects",
|
|
207
|
+
});
|
|
208
|
+
break;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
function calculateScore(parseResult, messages) {
|
|
214
|
+
let score = 100;
|
|
215
|
+
const errors = messages.filter((m) => m.level === "error").length;
|
|
216
|
+
const warnings = messages.filter((m) => m.level === "warning").length;
|
|
217
|
+
// Deduct for errors
|
|
218
|
+
score -= errors * 30;
|
|
219
|
+
// Deduct for warnings
|
|
220
|
+
score -= warnings * 10;
|
|
221
|
+
// Bonus for having dependencies (well-connected objects)
|
|
222
|
+
if (parseResult.dependencies.length > 0) {
|
|
223
|
+
score = Math.min(score + 5, 100);
|
|
224
|
+
}
|
|
225
|
+
// Bonus for having children (detailed objects)
|
|
226
|
+
const hasChildren = parseResult.objects.some((o) => o.children.length > 0);
|
|
227
|
+
if (hasChildren) {
|
|
228
|
+
score = Math.min(score + 5, 100);
|
|
229
|
+
}
|
|
230
|
+
return Math.max(0, Math.min(100, score));
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=sif-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sif-generator.js","sourceRoot":"","sources":["../../../src/core/siebel/sif-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SIF Parser — parses Siebel Import Files (.sif) into typed Siebel objects.
|
|
3
|
+
*
|
|
4
|
+
* SIF files are XML-based archives following the hierarchy:
|
|
5
|
+
* Repository → Project → Object Types (Applet, BC, BO, etc.) → Child Elements
|
|
6
|
+
*/
|
|
7
|
+
import type { SiebelSifParseResult } from "../../schemas/siebel.schema.js";
|
|
8
|
+
/**
|
|
9
|
+
* Parse SIF XML content string into typed Siebel objects.
|
|
10
|
+
*/
|
|
11
|
+
export declare function parseSifContent(content: string, fileName: string): SiebelSifParseResult;
|
|
12
|
+
/**
|
|
13
|
+
* Parse SIF from a file path.
|
|
14
|
+
*/
|
|
15
|
+
export declare function parseSifFile(filePath: string): Promise<SiebelSifParseResult>;
|
|
16
|
+
//# sourceMappingURL=sif-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sif-parser.d.ts","sourceRoot":"","sources":["../../../src/core/siebel/sif-parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAKV,oBAAoB,EAErB,MAAM,gCAAgC,CAAC;AA0CxC;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,oBAAoB,CAqEvF;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CASlF"}
|