@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,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SIF-to-Graph Converter — maps parsed Siebel objects to mcp-graph nodes and edges.
|
|
3
|
+
*
|
|
4
|
+
* Mapping strategy:
|
|
5
|
+
* - SIF Project → epic node
|
|
6
|
+
* - BC, BO, Workflow, Business Service → task nodes (core logic)
|
|
7
|
+
* - Applets, Views, Screens, Web Templates, Integration Objects → subtask nodes (UI/integration)
|
|
8
|
+
* - Dependencies → depends_on / related_to edges
|
|
9
|
+
*/
|
|
10
|
+
import { generateId } from "../utils/id.js";
|
|
11
|
+
import { now } from "../utils/time.js";
|
|
12
|
+
import { logger } from "../utils/logger.js";
|
|
13
|
+
/** Siebel types mapped to task nodes (core/backend objects). */
|
|
14
|
+
const TASK_TYPES = new Set([
|
|
15
|
+
"business_component",
|
|
16
|
+
"business_object",
|
|
17
|
+
"workflow",
|
|
18
|
+
"business_service",
|
|
19
|
+
]);
|
|
20
|
+
/** Siebel types mapped to subtask nodes (UI/integration objects). */
|
|
21
|
+
const SUBTASK_TYPES = new Set([
|
|
22
|
+
"applet",
|
|
23
|
+
"view",
|
|
24
|
+
"screen",
|
|
25
|
+
"web_template",
|
|
26
|
+
"integration_object",
|
|
27
|
+
"pick_list",
|
|
28
|
+
"table",
|
|
29
|
+
]);
|
|
30
|
+
/**
|
|
31
|
+
* Convert a parsed SIF result into graph nodes and edges.
|
|
32
|
+
*/
|
|
33
|
+
export function convertSifToGraph(parseResult) {
|
|
34
|
+
const { metadata, objects, dependencies } = parseResult;
|
|
35
|
+
if (objects.length === 0) {
|
|
36
|
+
return { nodes: [], edges: [] };
|
|
37
|
+
}
|
|
38
|
+
const timestamp = now();
|
|
39
|
+
const nodes = [];
|
|
40
|
+
const edges = [];
|
|
41
|
+
// Lookup: siebelType:siebelName → graphNodeId
|
|
42
|
+
const siebelToNodeId = new Map();
|
|
43
|
+
// Create epic node for the project
|
|
44
|
+
const epicId = generateId("siebel");
|
|
45
|
+
const epic = {
|
|
46
|
+
id: epicId,
|
|
47
|
+
type: "epic",
|
|
48
|
+
title: `Siebel: ${metadata.projectName ?? metadata.fileName}`,
|
|
49
|
+
description: `Siebel project imported from ${metadata.fileName}. ${metadata.objectCount} objects, ${dependencies.length} dependencies.`,
|
|
50
|
+
status: "backlog",
|
|
51
|
+
priority: 2,
|
|
52
|
+
tags: ["siebel", "project"],
|
|
53
|
+
sourceRef: { file: metadata.fileName },
|
|
54
|
+
metadata: {
|
|
55
|
+
siebelType: "project",
|
|
56
|
+
siebelProject: metadata.projectName,
|
|
57
|
+
origin: "sif_import",
|
|
58
|
+
},
|
|
59
|
+
createdAt: timestamp,
|
|
60
|
+
updatedAt: timestamp,
|
|
61
|
+
};
|
|
62
|
+
nodes.push(epic);
|
|
63
|
+
// Convert each Siebel object to a graph node
|
|
64
|
+
for (const obj of objects) {
|
|
65
|
+
const nodeType = getGraphNodeType(obj.type);
|
|
66
|
+
const nodeId = generateId("siebel");
|
|
67
|
+
siebelToNodeId.set(`${obj.type}:${obj.name}`, nodeId);
|
|
68
|
+
const description = buildDescription(obj);
|
|
69
|
+
const node = {
|
|
70
|
+
id: nodeId,
|
|
71
|
+
type: nodeType,
|
|
72
|
+
title: obj.name,
|
|
73
|
+
description,
|
|
74
|
+
status: "backlog",
|
|
75
|
+
priority: getPriority(obj.type),
|
|
76
|
+
tags: ["siebel", obj.type],
|
|
77
|
+
parentId: epicId,
|
|
78
|
+
sourceRef: { file: metadata.fileName },
|
|
79
|
+
metadata: {
|
|
80
|
+
siebelType: obj.type,
|
|
81
|
+
siebelProject: obj.project,
|
|
82
|
+
siebelProperties: obj.properties.reduce((acc, p) => ({ ...acc, [p.name]: p.value }), {}),
|
|
83
|
+
childCount: obj.children.length,
|
|
84
|
+
origin: "sif_import",
|
|
85
|
+
},
|
|
86
|
+
createdAt: timestamp,
|
|
87
|
+
updatedAt: timestamp,
|
|
88
|
+
};
|
|
89
|
+
nodes.push(node);
|
|
90
|
+
}
|
|
91
|
+
// Convert dependencies to edges
|
|
92
|
+
for (const dep of dependencies) {
|
|
93
|
+
const fromKey = `${dep.from.type}:${dep.from.name}`;
|
|
94
|
+
const toKey = `${dep.to.type}:${dep.to.name}`;
|
|
95
|
+
const fromId = siebelToNodeId.get(fromKey);
|
|
96
|
+
const toId = siebelToNodeId.get(toKey);
|
|
97
|
+
if (fromId && toId) {
|
|
98
|
+
edges.push({
|
|
99
|
+
id: generateId("edge"),
|
|
100
|
+
from: fromId,
|
|
101
|
+
to: toId,
|
|
102
|
+
relationType: mapDependencyRelation(dep),
|
|
103
|
+
reason: `Siebel ${dep.relationType}: ${dep.from.name} → ${dep.to.name}`,
|
|
104
|
+
metadata: {
|
|
105
|
+
inferred: dep.inferred ?? true,
|
|
106
|
+
siebelRelationType: dep.relationType,
|
|
107
|
+
},
|
|
108
|
+
createdAt: timestamp,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
logger.info("SIF converted to graph", {
|
|
113
|
+
nodes: String(nodes.length),
|
|
114
|
+
edges: String(edges.length),
|
|
115
|
+
epicId,
|
|
116
|
+
});
|
|
117
|
+
return { nodes, edges };
|
|
118
|
+
}
|
|
119
|
+
function getGraphNodeType(siebelType) {
|
|
120
|
+
if (TASK_TYPES.has(siebelType))
|
|
121
|
+
return "task";
|
|
122
|
+
if (SUBTASK_TYPES.has(siebelType))
|
|
123
|
+
return "subtask";
|
|
124
|
+
return "task";
|
|
125
|
+
}
|
|
126
|
+
function getPriority(siebelType) {
|
|
127
|
+
switch (siebelType) {
|
|
128
|
+
case "business_component":
|
|
129
|
+
case "business_object":
|
|
130
|
+
return 2;
|
|
131
|
+
case "workflow":
|
|
132
|
+
case "business_service":
|
|
133
|
+
return 3;
|
|
134
|
+
case "applet":
|
|
135
|
+
case "view":
|
|
136
|
+
return 3;
|
|
137
|
+
case "screen":
|
|
138
|
+
case "web_template":
|
|
139
|
+
case "integration_object":
|
|
140
|
+
return 4;
|
|
141
|
+
default:
|
|
142
|
+
return 3;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
function buildDescription(obj) {
|
|
146
|
+
const parts = [`Siebel ${obj.type.replace(/_/g, " ")} — ${obj.name}`];
|
|
147
|
+
const table = obj.properties.find((p) => p.name === "TABLE");
|
|
148
|
+
if (table)
|
|
149
|
+
parts.push(`Table: ${table.value}`);
|
|
150
|
+
const busComp = obj.properties.find((p) => p.name === "BUS_COMP");
|
|
151
|
+
if (busComp)
|
|
152
|
+
parts.push(`BC: ${busComp.value}`);
|
|
153
|
+
const busObject = obj.properties.find((p) => p.name === "BUS_OBJECT");
|
|
154
|
+
if (busObject)
|
|
155
|
+
parts.push(`BO: ${busObject.value}`);
|
|
156
|
+
if (obj.children.length > 0) {
|
|
157
|
+
parts.push(`Children: ${obj.children.length}`);
|
|
158
|
+
}
|
|
159
|
+
return parts.join(". ");
|
|
160
|
+
}
|
|
161
|
+
function mapDependencyRelation(dep) {
|
|
162
|
+
switch (dep.relationType) {
|
|
163
|
+
case "uses":
|
|
164
|
+
case "references":
|
|
165
|
+
case "based_on":
|
|
166
|
+
return "depends_on";
|
|
167
|
+
case "contains":
|
|
168
|
+
case "extends":
|
|
169
|
+
case "linked_to":
|
|
170
|
+
case "parent_of":
|
|
171
|
+
return "related_to";
|
|
172
|
+
default:
|
|
173
|
+
return "related_to";
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=sif-to-graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sif-to-graph.js","sourceRoot":"","sources":["../../../src/core/siebel/sif-to-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -77,5 +77,30 @@ export declare class KnowledgeStore {
|
|
|
77
77
|
* Get all documents for a given source ID (all chunks).
|
|
78
78
|
*/
|
|
79
79
|
getBySourceId(sourceId: string): KnowledgeDocument[];
|
|
80
|
+
/**
|
|
81
|
+
* Update the quality score for a document.
|
|
82
|
+
*/
|
|
83
|
+
updateQualityScore(id: string, score: number): void;
|
|
84
|
+
/**
|
|
85
|
+
* Record access on a document — update last_accessed_at + increment usage_count.
|
|
86
|
+
*/
|
|
87
|
+
recordAccess(id: string): void;
|
|
88
|
+
/**
|
|
89
|
+
* Batch update staleness_days for all documents.
|
|
90
|
+
*/
|
|
91
|
+
batchUpdateStaleness(): number;
|
|
92
|
+
/**
|
|
93
|
+
* Search with quality score weighting applied to BM25 results.
|
|
94
|
+
*/
|
|
95
|
+
searchWithQuality(query: string, limit?: number, options?: {
|
|
96
|
+
minQuality?: number;
|
|
97
|
+
}): Array<KnowledgeDocument & {
|
|
98
|
+
score: number;
|
|
99
|
+
qualityScore: number;
|
|
100
|
+
}>;
|
|
101
|
+
/**
|
|
102
|
+
* Get related documents via knowledge_relations table.
|
|
103
|
+
*/
|
|
104
|
+
getRelated(docId: string, limit?: number): KnowledgeDocument[];
|
|
80
105
|
}
|
|
81
106
|
//# sourceMappingURL=knowledge-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-store.d.ts","sourceRoot":"","sources":["../../../src/core/store/knowledge-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAKhG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,mBAAmB,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AA8BD;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAoB;gBAElB,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAIjC;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,kBAAkB,GAAG,iBAAiB;IAqClD;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,iBAAiB,EAAE;IAY7D;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAO7C;;OAEG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,mBAAmB,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,iBAAiB,EAAE;IAqB1G;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,KAAK,CAAC,iBAAiB,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAkBvF;;;OAGG;IACH,oBAAoB,CAClB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,cAAc,EAC5B,KAAK,GAAE,MAAW,GACjB,KAAK,CAAC,iBAAiB,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAqBnE;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAO3B;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAQzE;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,EAAE,mBAAmB,GAAG,MAAM;IAc/C;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAOnC;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,EAAE;
|
|
1
|
+
{"version":3,"file":"knowledge-store.d.ts","sourceRoot":"","sources":["../../../src/core/store/knowledge-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAKhG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,mBAAmB,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AA8BD;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAoB;gBAElB,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAIjC;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,kBAAkB,GAAG,iBAAiB;IAqClD;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,iBAAiB,EAAE;IAY7D;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAO7C;;OAEG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,mBAAmB,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,iBAAiB,EAAE;IAqB1G;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,KAAK,CAAC,iBAAiB,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAkBvF;;;OAGG;IACH,oBAAoB,CAClB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,cAAc,EAC5B,KAAK,GAAE,MAAW,GACjB,KAAK,CAAC,iBAAiB,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAqBnE;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAO3B;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAQzE;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,EAAE,mBAAmB,GAAG,MAAM;IAc/C;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAOnC;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAOpD;;OAEG;IACH,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAMnD;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAO9B;;OAEG;IACH,oBAAoB,IAAI,MAAM;IAoB9B;;OAEG;IACH,iBAAiB,CACf,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAW,EAClB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAChC,KAAK,CAAC,iBAAiB,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAqBrE;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,iBAAiB,EAAE;CAenE"}
|
|
@@ -108,7 +108,7 @@ export class KnowledgeStore {
|
|
|
108
108
|
.all(query, limit);
|
|
109
109
|
return rows.map((row) => ({
|
|
110
110
|
...rowToDoc(row),
|
|
111
|
-
score:
|
|
111
|
+
score: Math.abs(row.score),
|
|
112
112
|
}));
|
|
113
113
|
}
|
|
114
114
|
/**
|
|
@@ -184,5 +184,77 @@ export class KnowledgeStore {
|
|
|
184
184
|
.all(sourceId);
|
|
185
185
|
return rows.map(rowToDoc);
|
|
186
186
|
}
|
|
187
|
+
/**
|
|
188
|
+
* Update the quality score for a document.
|
|
189
|
+
*/
|
|
190
|
+
updateQualityScore(id, score) {
|
|
191
|
+
this.db
|
|
192
|
+
.prepare("UPDATE knowledge_documents SET quality_score = ? WHERE id = ?")
|
|
193
|
+
.run(score, id);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Record access on a document — update last_accessed_at + increment usage_count.
|
|
197
|
+
*/
|
|
198
|
+
recordAccess(id) {
|
|
199
|
+
const timestamp = now();
|
|
200
|
+
this.db
|
|
201
|
+
.prepare("UPDATE knowledge_documents SET last_accessed_at = ?, usage_count = usage_count + 1 WHERE id = ?")
|
|
202
|
+
.run(timestamp, id);
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Batch update staleness_days for all documents.
|
|
206
|
+
*/
|
|
207
|
+
batchUpdateStaleness() {
|
|
208
|
+
const rows = this.db
|
|
209
|
+
.prepare("SELECT id, created_at FROM knowledge_documents")
|
|
210
|
+
.all();
|
|
211
|
+
const update = this.db.prepare("UPDATE knowledge_documents SET staleness_days = ? WHERE id = ?");
|
|
212
|
+
let updated = 0;
|
|
213
|
+
this.db.transaction(() => {
|
|
214
|
+
for (const row of rows) {
|
|
215
|
+
const ageMs = Date.now() - new Date(row.created_at).getTime();
|
|
216
|
+
const days = Math.max(0, Math.floor(ageMs / (24 * 60 * 60 * 1000)));
|
|
217
|
+
update.run(days, row.id);
|
|
218
|
+
updated++;
|
|
219
|
+
}
|
|
220
|
+
})();
|
|
221
|
+
return updated;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Search with quality score weighting applied to BM25 results.
|
|
225
|
+
*/
|
|
226
|
+
searchWithQuality(query, limit = 20, options) {
|
|
227
|
+
const minQuality = options?.minQuality ?? 0;
|
|
228
|
+
const rows = this.db
|
|
229
|
+
.prepare(`SELECT kd.*, bm25(knowledge_fts) AS bm25_score, COALESCE(kd.quality_score, 0.5) AS q_score
|
|
230
|
+
FROM knowledge_fts fts
|
|
231
|
+
JOIN knowledge_documents kd ON kd.rowid = fts.rowid
|
|
232
|
+
WHERE knowledge_fts MATCH ?
|
|
233
|
+
AND COALESCE(kd.quality_score, 0.5) >= ?
|
|
234
|
+
ORDER BY (bm25(knowledge_fts) * COALESCE(kd.quality_score, 0.5))
|
|
235
|
+
LIMIT ?`)
|
|
236
|
+
.all(query, minQuality, limit);
|
|
237
|
+
return rows.map((row) => ({
|
|
238
|
+
...rowToDoc(row),
|
|
239
|
+
score: Math.abs(row.bm25_score) * row.q_score,
|
|
240
|
+
qualityScore: row.q_score,
|
|
241
|
+
}));
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Get related documents via knowledge_relations table.
|
|
245
|
+
*/
|
|
246
|
+
getRelated(docId, limit = 10) {
|
|
247
|
+
const rows = this.db
|
|
248
|
+
.prepare(`SELECT kd.* FROM knowledge_relations kr
|
|
249
|
+
JOIN knowledge_documents kd ON kd.id = kr.to_doc_id
|
|
250
|
+
WHERE kr.from_doc_id = ?
|
|
251
|
+
UNION
|
|
252
|
+
SELECT kd.* FROM knowledge_relations kr
|
|
253
|
+
JOIN knowledge_documents kd ON kd.id = kr.from_doc_id
|
|
254
|
+
WHERE kr.to_doc_id = ?
|
|
255
|
+
LIMIT ?`)
|
|
256
|
+
.all(docId, docId, limit);
|
|
257
|
+
return rows.map(rowToDoc);
|
|
258
|
+
}
|
|
187
259
|
}
|
|
188
260
|
//# sourceMappingURL=knowledge-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-store.js","sourceRoot":"","sources":["../../../src/core/store/knowledge-store.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"knowledge-store.js","sourceRoot":"","sources":["../../../src/core/store/knowledge-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../../src/core/store/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../../src/core/store/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAmc3C,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CA6BzD;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAGvD"}
|
|
@@ -332,6 +332,113 @@ const migrations = [
|
|
|
332
332
|
CREATE INDEX IF NOT EXISTS idx_custom_skills_project ON custom_skills(project_id);
|
|
333
333
|
`,
|
|
334
334
|
},
|
|
335
|
+
{
|
|
336
|
+
version: 10,
|
|
337
|
+
description: "Edge deduplication — remove duplicates, add UNIQUE constraint",
|
|
338
|
+
sql: `
|
|
339
|
+
DELETE FROM edges WHERE rowid NOT IN (
|
|
340
|
+
SELECT MIN(rowid) FROM edges GROUP BY project_id, from_node, to_node, relation_type
|
|
341
|
+
);
|
|
342
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_edges_unique
|
|
343
|
+
ON edges(project_id, from_node, to_node, relation_type);
|
|
344
|
+
`,
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
version: 11,
|
|
348
|
+
description: "Journey maps + Knowledge quality scoring, usage tracking, and cross-source relations",
|
|
349
|
+
sql: `
|
|
350
|
+
CREATE TABLE IF NOT EXISTS journey_maps (
|
|
351
|
+
id TEXT PRIMARY KEY,
|
|
352
|
+
project_id TEXT NOT NULL REFERENCES projects(id),
|
|
353
|
+
name TEXT NOT NULL,
|
|
354
|
+
url TEXT,
|
|
355
|
+
description TEXT,
|
|
356
|
+
metadata TEXT, -- JSON object
|
|
357
|
+
created_at TEXT NOT NULL,
|
|
358
|
+
updated_at TEXT NOT NULL
|
|
359
|
+
);
|
|
360
|
+
|
|
361
|
+
CREATE TABLE IF NOT EXISTS journey_screens (
|
|
362
|
+
id TEXT PRIMARY KEY,
|
|
363
|
+
map_id TEXT NOT NULL REFERENCES journey_maps(id) ON DELETE CASCADE,
|
|
364
|
+
project_id TEXT NOT NULL REFERENCES projects(id),
|
|
365
|
+
title TEXT NOT NULL,
|
|
366
|
+
description TEXT,
|
|
367
|
+
screenshot TEXT, -- filename relative to journey-screenshots/
|
|
368
|
+
url TEXT,
|
|
369
|
+
screen_type TEXT NOT NULL DEFAULT 'page',
|
|
370
|
+
fields TEXT, -- JSON array
|
|
371
|
+
ctas TEXT, -- JSON array
|
|
372
|
+
metadata TEXT, -- JSON object
|
|
373
|
+
position_x REAL DEFAULT 0,
|
|
374
|
+
position_y REAL DEFAULT 0,
|
|
375
|
+
created_at TEXT NOT NULL,
|
|
376
|
+
updated_at TEXT NOT NULL
|
|
377
|
+
);
|
|
378
|
+
|
|
379
|
+
CREATE TABLE IF NOT EXISTS journey_edges (
|
|
380
|
+
id TEXT PRIMARY KEY,
|
|
381
|
+
map_id TEXT NOT NULL REFERENCES journey_maps(id) ON DELETE CASCADE,
|
|
382
|
+
project_id TEXT NOT NULL REFERENCES projects(id),
|
|
383
|
+
from_screen TEXT NOT NULL REFERENCES journey_screens(id) ON DELETE CASCADE,
|
|
384
|
+
to_screen TEXT NOT NULL REFERENCES journey_screens(id) ON DELETE CASCADE,
|
|
385
|
+
label TEXT,
|
|
386
|
+
edge_type TEXT NOT NULL DEFAULT 'navigation',
|
|
387
|
+
metadata TEXT, -- JSON object
|
|
388
|
+
created_at TEXT NOT NULL
|
|
389
|
+
);
|
|
390
|
+
|
|
391
|
+
CREATE TABLE IF NOT EXISTS journey_variants (
|
|
392
|
+
id TEXT PRIMARY KEY,
|
|
393
|
+
map_id TEXT NOT NULL REFERENCES journey_maps(id) ON DELETE CASCADE,
|
|
394
|
+
project_id TEXT NOT NULL REFERENCES projects(id),
|
|
395
|
+
name TEXT NOT NULL,
|
|
396
|
+
description TEXT,
|
|
397
|
+
path TEXT NOT NULL, -- JSON array of screen IDs
|
|
398
|
+
created_at TEXT NOT NULL
|
|
399
|
+
);
|
|
400
|
+
|
|
401
|
+
CREATE INDEX IF NOT EXISTS idx_journey_maps_project ON journey_maps(project_id);
|
|
402
|
+
CREATE INDEX IF NOT EXISTS idx_journey_screens_map ON journey_screens(map_id);
|
|
403
|
+
CREATE INDEX IF NOT EXISTS idx_journey_edges_map ON journey_edges(map_id);
|
|
404
|
+
CREATE INDEX IF NOT EXISTS idx_journey_edges_from ON journey_edges(from_screen);
|
|
405
|
+
CREATE INDEX IF NOT EXISTS idx_journey_edges_to ON journey_edges(to_screen);
|
|
406
|
+
CREATE INDEX IF NOT EXISTS idx_journey_variants_map ON journey_variants(map_id);
|
|
407
|
+
|
|
408
|
+
ALTER TABLE knowledge_documents ADD COLUMN quality_score REAL DEFAULT 0.5;
|
|
409
|
+
ALTER TABLE knowledge_documents ADD COLUMN usage_count INTEGER DEFAULT 0;
|
|
410
|
+
ALTER TABLE knowledge_documents ADD COLUMN last_accessed_at TEXT;
|
|
411
|
+
ALTER TABLE knowledge_documents ADD COLUMN staleness_days INTEGER DEFAULT 0;
|
|
412
|
+
|
|
413
|
+
CREATE INDEX IF NOT EXISTS idx_knowledge_quality ON knowledge_documents(quality_score);
|
|
414
|
+
CREATE INDEX IF NOT EXISTS idx_knowledge_usage ON knowledge_documents(usage_count);
|
|
415
|
+
|
|
416
|
+
CREATE TABLE IF NOT EXISTS knowledge_relations (
|
|
417
|
+
id TEXT PRIMARY KEY,
|
|
418
|
+
from_doc_id TEXT NOT NULL,
|
|
419
|
+
to_doc_id TEXT NOT NULL,
|
|
420
|
+
relation TEXT NOT NULL,
|
|
421
|
+
score REAL DEFAULT 1.0,
|
|
422
|
+
created_at TEXT NOT NULL,
|
|
423
|
+
UNIQUE(from_doc_id, to_doc_id, relation)
|
|
424
|
+
);
|
|
425
|
+
|
|
426
|
+
CREATE INDEX IF NOT EXISTS idx_krel_from ON knowledge_relations(from_doc_id);
|
|
427
|
+
CREATE INDEX IF NOT EXISTS idx_krel_to ON knowledge_relations(to_doc_id);
|
|
428
|
+
|
|
429
|
+
CREATE TABLE IF NOT EXISTS knowledge_usage_log (
|
|
430
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
431
|
+
doc_id TEXT NOT NULL,
|
|
432
|
+
query TEXT NOT NULL,
|
|
433
|
+
action TEXT NOT NULL,
|
|
434
|
+
context TEXT,
|
|
435
|
+
created_at TEXT NOT NULL
|
|
436
|
+
);
|
|
437
|
+
|
|
438
|
+
CREATE INDEX IF NOT EXISTS idx_kusage_doc ON knowledge_usage_log(doc_id);
|
|
439
|
+
CREATE INDEX IF NOT EXISTS idx_kusage_action ON knowledge_usage_log(action);
|
|
440
|
+
`,
|
|
441
|
+
},
|
|
335
442
|
];
|
|
336
443
|
export function runMigrations(db) {
|
|
337
444
|
// Create migrations tracking table
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../../src/core/store/migrations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAQ5C,MAAM,UAAU,GAAgB;IAC9B;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,oEAAoE;QACjF,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsEJ;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,sCAAsC;QACnD,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4BJ;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,6DAA6D;QAC1E,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAiCJ;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,uEAAuE;QACpF,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwCJ;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,0DAA0D;QACvE,GAAG,EAAE;;;;;;;;KAQJ;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,oEAAoE;QACjF,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkEJ;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,mDAAmD;QAChE,GAAG,EAAE;;;;;;;;;;;;;KAaJ;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,sEAAsE;QACnF,GAAG,EAAE;;;;;;KAMJ;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,4CAA4C;QACzD,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;KAuBJ;KACF;CACF,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,EAAqB;IACjD,mCAAmC;IACnC,EAAE,CAAC,IAAI,CAAC;;;;;;GAMP,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,EAAE;SACC,OAAO,CAAC,iCAAiC,CAAC;SAC1C,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAE,GAA2B,CAAC,OAAO,CAAC,CACtD,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;YAAE,SAAS;QAE7C,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;QACjG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClB,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACvB,EAAE,CAAC,OAAO,CACR,6EAA6E,CAC9E,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5E,CAAC,CAAC,EAAE,CAAC;QACL,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAqB;IAC/C,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACjC,CAAC"}
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../../src/core/store/migrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-store.d.ts","sourceRoot":"","sources":["../../../src/core/store/sqlite-store.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAGtC,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,UAAU,EAEX,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"sqlite-store.d.ts","sourceRoot":"","sources":["../../../src/core/store/sqlite-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ import { GraphNodeSchema } from "../../schemas/node.schema.js";
|
|
|
11
11
|
import { GraphEdgeSchema } from "../../schemas/edge.schema.js";
|
|
12
12
|
import { z } from "zod/v4";
|
|
13
13
|
import { STORE_DIR, LEGACY_STORE_DIR, DB_FILE } from "../utils/constants.js";
|
|
14
|
+
import { normalizeNewlines } from "../utils/text.js";
|
|
14
15
|
// ── Mapping helpers ──────────────────────────────────────
|
|
15
16
|
function nodeToRow(node, projectId) {
|
|
16
17
|
return {
|
|
@@ -352,7 +353,8 @@ export class SqliteStore {
|
|
|
352
353
|
throw err;
|
|
353
354
|
}
|
|
354
355
|
const pid = this.ensureProject();
|
|
355
|
-
const
|
|
356
|
+
const normalized = { ...node, description: normalizeNewlines(node.description) };
|
|
357
|
+
const row = nodeToRow(normalized, pid);
|
|
356
358
|
this.db
|
|
357
359
|
.prepare(`INSERT INTO nodes
|
|
358
360
|
(id, project_id, type, title, description, status, priority,
|
|
@@ -426,7 +428,7 @@ export class SqliteStore {
|
|
|
426
428
|
}
|
|
427
429
|
if (fields.description !== undefined) {
|
|
428
430
|
setClauses.push("description = ?");
|
|
429
|
-
params.push(fields.description ?? null);
|
|
431
|
+
params.push(normalizeNewlines(fields.description) ?? null);
|
|
430
432
|
}
|
|
431
433
|
if (fields.type !== undefined) {
|
|
432
434
|
setClauses.push("type = ?");
|
|
@@ -540,13 +542,15 @@ export class SqliteStore {
|
|
|
540
542
|
}
|
|
541
543
|
const pid = this.ensureProject();
|
|
542
544
|
const row = edgeToRow(edge, pid);
|
|
543
|
-
this.db
|
|
544
|
-
.prepare(`INSERT INTO edges
|
|
545
|
+
const result = this.db
|
|
546
|
+
.prepare(`INSERT OR IGNORE INTO edges
|
|
545
547
|
(id, project_id, from_node, to_node, relation_type, weight, reason, metadata, created_at)
|
|
546
548
|
VALUES
|
|
547
549
|
(@id, @project_id, @from_node, @to_node, @relation_type, @weight, @reason, @metadata, @created_at)`)
|
|
548
550
|
.run(row);
|
|
549
|
-
|
|
551
|
+
if (result.changes > 0) {
|
|
552
|
+
this._eventBus?.emitTyped("edge:created", { edgeId: edge.id, from: edge.from, to: edge.to, relationType: edge.relationType });
|
|
553
|
+
}
|
|
550
554
|
}
|
|
551
555
|
getEdgesFrom(nodeId) {
|
|
552
556
|
const pid = this.ensureProject();
|
|
@@ -635,7 +639,7 @@ export class SqliteStore {
|
|
|
635
639
|
for (const edge of edges) {
|
|
636
640
|
const row = edgeToRow(edge, pid);
|
|
637
641
|
this.db
|
|
638
|
-
.prepare(`INSERT INTO edges
|
|
642
|
+
.prepare(`INSERT OR IGNORE INTO edges
|
|
639
643
|
(id, project_id, from_node, to_node, relation_type, weight, reason, metadata, created_at)
|
|
640
644
|
VALUES
|
|
641
645
|
(@id, @project_id, @from_node, @to_node, @relation_type, @weight, @reason, @metadata, @created_at)`)
|
|
@@ -721,7 +725,7 @@ export class SqliteStore {
|
|
|
721
725
|
.all(query, pid, limit);
|
|
722
726
|
return rows.map((row) => ({
|
|
723
727
|
...rowToNode(row),
|
|
724
|
-
score:
|
|
728
|
+
score: Math.abs(row.score),
|
|
725
729
|
}));
|
|
726
730
|
}
|
|
727
731
|
// ── Bulk status update ─────────────────────────
|