@mcp-graph-workflow/mcp-graph 5.5.3 → 5.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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/code-graph.d.ts.map +1 -1
- package/dist/api/routes/code-graph.js +4 -1
- package/dist/api/routes/code-graph.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/code/code-indexer.d.ts.map +1 -1
- package/dist/core/code/code-indexer.js +17 -2
- package/dist/core/code/code-indexer.js.map +1 -1
- package/dist/core/code/code-types.d.ts +1 -0
- package/dist/core/code/code-types.d.ts.map +1 -1
- package/dist/core/code/code-types.js.map +1 -1
- package/dist/core/code/ts-analyzer.d.ts +6 -0
- package/dist/core/code/ts-analyzer.d.ts.map +1 -1
- package/dist/core/code/ts-analyzer.js +9 -0
- package/dist/core/code/ts-analyzer.js.map +1 -1
- package/dist/core/context/rag-context.d.ts.map +1 -1
- package/dist/core/context/rag-context.js +21 -5
- package/dist/core/context/rag-context.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/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/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/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 +72 -0
- 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 +96 -0
- package/dist/core/store/migrations.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 +22 -1
- 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/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/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-BoMsoQjO.js} +1 -1
- package/dist/web/dashboard/dist/assets/{context-tab-ChCyrRlr.js → context-tab-BLT4qQ77.js} +1 -1
- package/dist/web/dashboard/dist/assets/{gitnexus-tab-DnlGT63w.js → gitnexus-tab-DDw7DUED.js} +4 -4
- package/dist/web/dashboard/dist/assets/graph-tab-DG9Q6nko.js +1 -0
- package/dist/web/dashboard/dist/assets/graph-utils-BpYHKE87.js +1 -0
- package/dist/web/dashboard/dist/assets/index-Cu23WCcu.css +1 -0
- package/dist/web/dashboard/dist/assets/index-DtkPX5ZZ.js +55 -0
- package/dist/web/dashboard/dist/assets/{index-DlZhNCGR.js → index-F9dY4AG_.js} +1 -1
- package/dist/web/dashboard/dist/assets/{insights-tab-Cj4f85vS.js → insights-tab-YN7G6mjm.js} +1 -1
- package/dist/web/dashboard/dist/assets/journey-tab-BcweuR82.js +1 -0
- package/dist/web/dashboard/dist/assets/{logs-tab-C4C2Vn8-.js → logs-tab-BjdAURdy.js} +1 -1
- package/dist/web/dashboard/dist/assets/{memories-tab-NtNwoxbT.js → memories-tab-CQ2xM2aw.js} +1 -1
- package/dist/web/dashboard/dist/assets/prd-backlog-tab-CIeCpE1a.js +1 -0
- package/dist/web/dashboard/dist/assets/siebel-tab-bj5CT4-Z.js +3 -0
- package/dist/web/dashboard/dist/assets/{skills-tab-CIj4z1Ol.js → skills-tab-Bgk72mKO.js} +1 -1
- package/dist/web/dashboard/dist/assets/style-Da3qWU01.js +7 -0
- package/dist/web/dashboard/dist/index.html +2 -2
- package/package.json +15 -3
- 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,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Siebel Dependency Analyzer — impact analysis, dependency chains, and circular dep detection.
|
|
3
|
+
*/
|
|
4
|
+
import type { SiebelDependency, SiebelObjectRef, SiebelImpactResult } from "../../schemas/siebel.schema.js";
|
|
5
|
+
export interface DependencyPath {
|
|
6
|
+
path: SiebelObjectRef[];
|
|
7
|
+
}
|
|
8
|
+
export interface CircularDep {
|
|
9
|
+
cycle: SiebelObjectRef[];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Analyze blast radius of modifying a Siebel object.
|
|
13
|
+
* Finds all direct and transitive dependents.
|
|
14
|
+
*/
|
|
15
|
+
export declare function analyzeSiebelImpact(dependencies: SiebelDependency[], target: SiebelObjectRef): SiebelImpactResult;
|
|
16
|
+
/**
|
|
17
|
+
* Find dependency chain(s) from one object to another.
|
|
18
|
+
*/
|
|
19
|
+
export declare function findDependencyChain(dependencies: SiebelDependency[], from: SiebelObjectRef, to: SiebelObjectRef): DependencyPath[];
|
|
20
|
+
/**
|
|
21
|
+
* Detect circular dependencies in the dependency graph.
|
|
22
|
+
*/
|
|
23
|
+
export declare function detectCircularDeps(dependencies: SiebelDependency[]): CircularDep[];
|
|
24
|
+
//# sourceMappingURL=dependency-analyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-analyzer.d.ts","sourceRoot":"","sources":["../../../src/core/siebel/dependency-analyzer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EACnB,MAAM,gCAAgC,CAAC;AAGxC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,eAAe,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,gBAAgB,EAAE,EAChC,MAAM,EAAE,eAAe,GACtB,kBAAkB,CA+DpB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,gBAAgB,EAAE,EAChC,IAAI,EAAE,eAAe,EACrB,EAAE,EAAE,eAAe,GAClB,cAAc,EAAE,CAqClB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,WAAW,EAAE,CAmDlF"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Siebel Dependency Analyzer — impact analysis, dependency chains, and circular dep detection.
|
|
3
|
+
*/
|
|
4
|
+
import { logger } from "../utils/logger.js";
|
|
5
|
+
/**
|
|
6
|
+
* Analyze blast radius of modifying a Siebel object.
|
|
7
|
+
* Finds all direct and transitive dependents.
|
|
8
|
+
*/
|
|
9
|
+
export function analyzeSiebelImpact(dependencies, target) {
|
|
10
|
+
const targetKey = refKey(target);
|
|
11
|
+
// Build reverse adjacency: target → objects that depend ON target
|
|
12
|
+
const reverseDeps = new Map();
|
|
13
|
+
for (const dep of dependencies) {
|
|
14
|
+
const toKey = refKey(dep.to);
|
|
15
|
+
if (!reverseDeps.has(toKey)) {
|
|
16
|
+
reverseDeps.set(toKey, []);
|
|
17
|
+
}
|
|
18
|
+
const arr = reverseDeps.get(toKey);
|
|
19
|
+
if (arr)
|
|
20
|
+
arr.push(dep.from);
|
|
21
|
+
}
|
|
22
|
+
// BFS for direct dependents
|
|
23
|
+
const directDependents = reverseDeps.get(targetKey) ?? [];
|
|
24
|
+
// BFS for transitive dependents
|
|
25
|
+
const visited = new Set([targetKey]);
|
|
26
|
+
const allDependents = [];
|
|
27
|
+
const queue = [...directDependents];
|
|
28
|
+
for (const dep of directDependents) {
|
|
29
|
+
visited.add(refKey(dep));
|
|
30
|
+
}
|
|
31
|
+
while (queue.length > 0) {
|
|
32
|
+
const current = queue.shift();
|
|
33
|
+
if (!current)
|
|
34
|
+
continue;
|
|
35
|
+
allDependents.push(current);
|
|
36
|
+
const currentKey = refKey(current);
|
|
37
|
+
const nextDeps = reverseDeps.get(currentKey) ?? [];
|
|
38
|
+
for (const next of nextDeps) {
|
|
39
|
+
const nextKey = refKey(next);
|
|
40
|
+
if (!visited.has(nextKey)) {
|
|
41
|
+
visited.add(nextKey);
|
|
42
|
+
queue.push(next);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// Transitive = all minus direct
|
|
47
|
+
const directKeys = new Set(directDependents.map(refKey));
|
|
48
|
+
const transitiveDependents = allDependents.filter((d) => !directKeys.has(refKey(d)));
|
|
49
|
+
const totalAffected = allDependents.length;
|
|
50
|
+
const riskLevel = calculateRisk(totalAffected);
|
|
51
|
+
logger.debug("Siebel impact analysis", {
|
|
52
|
+
target: targetKey,
|
|
53
|
+
direct: String(directDependents.length),
|
|
54
|
+
transitive: String(transitiveDependents.length),
|
|
55
|
+
risk: riskLevel,
|
|
56
|
+
});
|
|
57
|
+
return {
|
|
58
|
+
targetObject: target,
|
|
59
|
+
directDependents: deduplicateRefs(directDependents),
|
|
60
|
+
transitiveDependents: deduplicateRefs(transitiveDependents),
|
|
61
|
+
totalAffected,
|
|
62
|
+
riskLevel,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Find dependency chain(s) from one object to another.
|
|
67
|
+
*/
|
|
68
|
+
export function findDependencyChain(dependencies, from, to) {
|
|
69
|
+
// Build forward adjacency: from → to
|
|
70
|
+
const forwardDeps = new Map();
|
|
71
|
+
for (const dep of dependencies) {
|
|
72
|
+
const fromKey = refKey(dep.from);
|
|
73
|
+
if (!forwardDeps.has(fromKey)) {
|
|
74
|
+
forwardDeps.set(fromKey, []);
|
|
75
|
+
}
|
|
76
|
+
const fArr = forwardDeps.get(fromKey);
|
|
77
|
+
if (fArr)
|
|
78
|
+
fArr.push(dep.to);
|
|
79
|
+
}
|
|
80
|
+
const targetKey = refKey(to);
|
|
81
|
+
const paths = [];
|
|
82
|
+
// DFS to find all paths
|
|
83
|
+
function dfs(current, path, visited) {
|
|
84
|
+
if (refKey(current) === targetKey) {
|
|
85
|
+
paths.push({ path: [...path, current] });
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const neighbors = forwardDeps.get(refKey(current)) ?? [];
|
|
89
|
+
for (const neighbor of neighbors) {
|
|
90
|
+
const nKey = refKey(neighbor);
|
|
91
|
+
if (!visited.has(nKey)) {
|
|
92
|
+
visited.add(nKey);
|
|
93
|
+
dfs(neighbor, [...path, current], visited);
|
|
94
|
+
visited.delete(nKey);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const visited = new Set([refKey(from)]);
|
|
99
|
+
dfs(from, [], visited);
|
|
100
|
+
return paths;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Detect circular dependencies in the dependency graph.
|
|
104
|
+
*/
|
|
105
|
+
export function detectCircularDeps(dependencies) {
|
|
106
|
+
const forwardDeps = new Map();
|
|
107
|
+
const allRefs = new Map();
|
|
108
|
+
for (const dep of dependencies) {
|
|
109
|
+
const fromKey = refKey(dep.from);
|
|
110
|
+
if (!forwardDeps.has(fromKey)) {
|
|
111
|
+
forwardDeps.set(fromKey, []);
|
|
112
|
+
}
|
|
113
|
+
const cArr = forwardDeps.get(fromKey);
|
|
114
|
+
if (cArr)
|
|
115
|
+
cArr.push(dep.to);
|
|
116
|
+
allRefs.set(fromKey, dep.from);
|
|
117
|
+
allRefs.set(refKey(dep.to), dep.to);
|
|
118
|
+
}
|
|
119
|
+
const cycles = [];
|
|
120
|
+
const visited = new Set();
|
|
121
|
+
const inStack = new Set();
|
|
122
|
+
function dfs(nodeKey, path) {
|
|
123
|
+
if (inStack.has(nodeKey)) {
|
|
124
|
+
// Found a cycle — extract it
|
|
125
|
+
const cycleStart = path.indexOf(nodeKey);
|
|
126
|
+
if (cycleStart !== -1) {
|
|
127
|
+
const cyclePath = path.slice(cycleStart).map((k) => allRefs.get(k)).filter((r) => r !== undefined);
|
|
128
|
+
cycles.push({ cycle: cyclePath });
|
|
129
|
+
}
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
if (visited.has(nodeKey))
|
|
133
|
+
return;
|
|
134
|
+
visited.add(nodeKey);
|
|
135
|
+
inStack.add(nodeKey);
|
|
136
|
+
path.push(nodeKey);
|
|
137
|
+
const neighbors = forwardDeps.get(nodeKey) ?? [];
|
|
138
|
+
for (const neighbor of neighbors) {
|
|
139
|
+
dfs(refKey(neighbor), [...path]);
|
|
140
|
+
}
|
|
141
|
+
inStack.delete(nodeKey);
|
|
142
|
+
}
|
|
143
|
+
for (const key of allRefs.keys()) {
|
|
144
|
+
if (!visited.has(key)) {
|
|
145
|
+
dfs(key, []);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return cycles;
|
|
149
|
+
}
|
|
150
|
+
function refKey(ref) {
|
|
151
|
+
return `${ref.type}:${ref.name}`;
|
|
152
|
+
}
|
|
153
|
+
function calculateRisk(affected) {
|
|
154
|
+
if (affected === 0)
|
|
155
|
+
return "low";
|
|
156
|
+
if (affected <= 2)
|
|
157
|
+
return "low";
|
|
158
|
+
if (affected <= 5)
|
|
159
|
+
return "medium";
|
|
160
|
+
if (affected <= 10)
|
|
161
|
+
return "high";
|
|
162
|
+
return "critical";
|
|
163
|
+
}
|
|
164
|
+
function deduplicateRefs(refs) {
|
|
165
|
+
const seen = new Set();
|
|
166
|
+
return refs.filter((r) => {
|
|
167
|
+
const key = refKey(r);
|
|
168
|
+
if (seen.has(key))
|
|
169
|
+
return false;
|
|
170
|
+
seen.add(key);
|
|
171
|
+
return true;
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=dependency-analyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-analyzer.js","sourceRoot":"","sources":["../../../src/core/siebel/dependency-analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Siebel Environment Configuration Manager.
|
|
3
|
+
* Persists Siebel environment settings to workflow-graph/siebel-envs.json.
|
|
4
|
+
*/
|
|
5
|
+
import type { SiebelEnvironment } from "../../schemas/siebel.schema.js";
|
|
6
|
+
/**
|
|
7
|
+
* Load Siebel environment configurations from disk.
|
|
8
|
+
*/
|
|
9
|
+
export declare function loadSiebelConfig(graphDir: string): SiebelEnvironment[];
|
|
10
|
+
/**
|
|
11
|
+
* Save Siebel environment configurations to disk.
|
|
12
|
+
*/
|
|
13
|
+
export declare function saveSiebelConfig(graphDir: string, environments: SiebelEnvironment[]): void;
|
|
14
|
+
/**
|
|
15
|
+
* Add a new Siebel environment.
|
|
16
|
+
* @throws ValidationError if name already exists.
|
|
17
|
+
*/
|
|
18
|
+
export declare function addEnvironment(graphDir: string, env: SiebelEnvironment): SiebelEnvironment[];
|
|
19
|
+
/**
|
|
20
|
+
* Remove a Siebel environment by name.
|
|
21
|
+
* @throws ValidationError if name not found.
|
|
22
|
+
*/
|
|
23
|
+
export declare function removeEnvironment(graphDir: string, name: string): SiebelEnvironment[];
|
|
24
|
+
/**
|
|
25
|
+
* Find an environment by name.
|
|
26
|
+
*/
|
|
27
|
+
export declare function findEnvironment(graphDir: string, name: string): SiebelEnvironment | undefined;
|
|
28
|
+
//# sourceMappingURL=siebel-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"siebel-config.d.ts","sourceRoot":"","sources":["../../../src/core/siebel/siebel-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AASxE;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAetE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAa1F;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,CAiB5F;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAerF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAG7F"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Siebel Environment Configuration Manager.
|
|
3
|
+
* Persists Siebel environment settings to workflow-graph/siebel-envs.json.
|
|
4
|
+
*/
|
|
5
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync } from "node:fs";
|
|
6
|
+
import { join } from "node:path";
|
|
7
|
+
import { logger } from "../utils/logger.js";
|
|
8
|
+
import { ValidationError } from "../utils/errors.js";
|
|
9
|
+
import { SiebelEnvironmentSchema } from "../../schemas/siebel.schema.js";
|
|
10
|
+
const CONFIG_FILE = "siebel-envs.json";
|
|
11
|
+
/**
|
|
12
|
+
* Load Siebel environment configurations from disk.
|
|
13
|
+
*/
|
|
14
|
+
export function loadSiebelConfig(graphDir) {
|
|
15
|
+
const filePath = join(graphDir, CONFIG_FILE);
|
|
16
|
+
if (!existsSync(filePath)) {
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
19
|
+
try {
|
|
20
|
+
const raw = readFileSync(filePath, "utf-8");
|
|
21
|
+
const data = JSON.parse(raw);
|
|
22
|
+
return data.environments ?? [];
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
logger.warn("Failed to load Siebel config", { path: filePath, error: String(err) });
|
|
26
|
+
return [];
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Save Siebel environment configurations to disk.
|
|
31
|
+
*/
|
|
32
|
+
export function saveSiebelConfig(graphDir, environments) {
|
|
33
|
+
if (!existsSync(graphDir)) {
|
|
34
|
+
mkdirSync(graphDir, { recursive: true });
|
|
35
|
+
}
|
|
36
|
+
const filePath = join(graphDir, CONFIG_FILE);
|
|
37
|
+
const config = {
|
|
38
|
+
version: "1.0",
|
|
39
|
+
environments,
|
|
40
|
+
};
|
|
41
|
+
writeFileSync(filePath, JSON.stringify(config, null, 2), "utf-8");
|
|
42
|
+
logger.info("Siebel config saved", { path: filePath, envCount: String(environments.length) });
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Add a new Siebel environment.
|
|
46
|
+
* @throws ValidationError if name already exists.
|
|
47
|
+
*/
|
|
48
|
+
export function addEnvironment(graphDir, env) {
|
|
49
|
+
// Validate schema
|
|
50
|
+
SiebelEnvironmentSchema.parse(env);
|
|
51
|
+
const environments = loadSiebelConfig(graphDir);
|
|
52
|
+
if (environments.some((e) => e.name === env.name)) {
|
|
53
|
+
throw new ValidationError(`Environment "${env.name}" already exists`, [
|
|
54
|
+
{ field: "name", message: "duplicate" },
|
|
55
|
+
]);
|
|
56
|
+
}
|
|
57
|
+
environments.push(env);
|
|
58
|
+
saveSiebelConfig(graphDir, environments);
|
|
59
|
+
logger.info("Siebel environment added", { name: env.name, type: env.type });
|
|
60
|
+
return environments;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Remove a Siebel environment by name.
|
|
64
|
+
* @throws ValidationError if name not found.
|
|
65
|
+
*/
|
|
66
|
+
export function removeEnvironment(graphDir, name) {
|
|
67
|
+
const environments = loadSiebelConfig(graphDir);
|
|
68
|
+
const idx = environments.findIndex((e) => e.name === name);
|
|
69
|
+
if (idx === -1) {
|
|
70
|
+
throw new ValidationError(`Environment "${name}" not found`, [
|
|
71
|
+
{ field: "name", message: "not found" },
|
|
72
|
+
]);
|
|
73
|
+
}
|
|
74
|
+
environments.splice(idx, 1);
|
|
75
|
+
saveSiebelConfig(graphDir, environments);
|
|
76
|
+
logger.info("Siebel environment removed", { name });
|
|
77
|
+
return environments;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Find an environment by name.
|
|
81
|
+
*/
|
|
82
|
+
export function findEnvironment(graphDir, name) {
|
|
83
|
+
const environments = loadSiebelConfig(graphDir);
|
|
84
|
+
return environments.find((e) => e.name === name);
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=siebel-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"siebel-config.js","sourceRoot":"","sources":["../../../src/core/siebel/siebel-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
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 { KnowledgeStore } from "../store/knowledge-store.js";
|
|
8
|
+
import { type SifTemplate } from "./sif-templates.js";
|
|
9
|
+
import type { SifGenerationRequest } from "../../schemas/siebel.schema.js";
|
|
10
|
+
/** Summary of a knowledge document for context assembly. */
|
|
11
|
+
export interface KnowledgeSummary {
|
|
12
|
+
title: string;
|
|
13
|
+
content: string;
|
|
14
|
+
sourceType: string;
|
|
15
|
+
score?: number;
|
|
16
|
+
}
|
|
17
|
+
/** Assembled context for SIF generation. */
|
|
18
|
+
export interface SifGenerationContext {
|
|
19
|
+
existingObjects: KnowledgeSummary[];
|
|
20
|
+
templates: SifTemplate[];
|
|
21
|
+
exampleSif: string;
|
|
22
|
+
relatedDocs: KnowledgeSummary[];
|
|
23
|
+
validationRules: string[];
|
|
24
|
+
prompt: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Assemble a SIF generation context from the knowledge store.
|
|
28
|
+
*
|
|
29
|
+
* Pipeline:
|
|
30
|
+
* 1. Search existing Siebel objects by type/project
|
|
31
|
+
* 2. Select relevant templates
|
|
32
|
+
* 3. Search for example SIF content
|
|
33
|
+
* 4. Search related documentation and swagger specs
|
|
34
|
+
* 5. Build structured prompt
|
|
35
|
+
*/
|
|
36
|
+
export declare function assembleSifContext(knowledgeStore: KnowledgeStore, request: SifGenerationRequest): SifGenerationContext;
|
|
37
|
+
//# sourceMappingURL=sif-context-assembler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sif-context-assembler.d.ts","sourceRoot":"","sources":["../../../src/core/siebel/sif-context-assembler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAmB,MAAM,gCAAgC,CAAC;AAG5F,4DAA4D;AAC5D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,4CAA4C;AAC5C,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,gBAAgB,EAAE,CAAC;IACpC,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB;AAcD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,oBAAoB,GAC5B,oBAAoB,CAyCtB"}
|
|
@@ -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":"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"}
|