@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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcp-graph-workflow/mcp-graph",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.6.0",
|
|
4
4
|
"description": "MCP local-first PRD to task graph — transforms text into executable structure",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -84,6 +84,8 @@
|
|
|
84
84
|
"cheerio": "^1.2.0",
|
|
85
85
|
"commander": "^14.0.3",
|
|
86
86
|
"express": "^5.2.1",
|
|
87
|
+
"fast-xml-parser": "^5.5.8",
|
|
88
|
+
"mammoth": "^1.12.0",
|
|
87
89
|
"multer": "^2.1.1",
|
|
88
90
|
"pdf-parse": "^2.4.5",
|
|
89
91
|
"playwright": "^1.58.2",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as t,j as e,a as le}from"./index-dCyMex_p.js";import{u as ne,a as ce,b as de,c as ie,g as W,t as xe,s as ue,d as pe,e as me,i as be,W as he,f as ve,B as fe,C as ge,N as ye}from"./graph-utils-C6bvcT4d.js";import{A as je,S as L,a as Ne,N as _,E as Ce}from"./constants-z0QkAiYv.js";import"./index-DlZhNCGR.js";const ke=t.memo(function({statuses:b,types:h,direction:j,onStatusToggle:v,onTypeToggle:m,onDirectionChange:n,onClear:u,visibleNodeCount:d,totalNodeCount:i,onExpandAll:N,onCollapseAll:p}){return e.jsxs("div",{className:"flex flex-wrap items-center gap-3 px-4 py-2 border-b border-[var(--color-border)] bg-[var(--color-bg-secondary)] text-xs",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"font-medium text-[var(--color-text-muted)]",children:"Status:"}),je.map(l=>e.jsxs("label",{className:"flex items-center gap-1 cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:b.has(l),onChange:()=>v(l),className:"w-3 h-3"}),e.jsx("span",{className:"w-2 h-2 rounded-full inline-block",style:{background:L[l]}}),e.jsx("span",{children:l.replace("_"," ")})]},l))]}),e.jsx("div",{className:"w-px h-4 bg-[var(--color-border)]"}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"font-medium text-[var(--color-text-muted)]",children:"Type:"}),Ne.map(l=>e.jsxs("label",{className:"flex items-center gap-1 cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:h.has(l),onChange:()=>m(l),className:"w-3 h-3"}),e.jsx("span",{className:"w-2 h-2 rounded-full inline-block",style:{background:_[l]}}),e.jsx("span",{children:l.replace("_"," ")})]},l))]}),e.jsx("div",{className:"w-px h-4 bg-[var(--color-border)]"}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"font-medium text-[var(--color-text-muted)]",children:"Layout:"}),e.jsxs("select",{value:j,onChange:l=>n(l.target.value),className:"bg-[var(--color-bg)] border border-[var(--color-border)] rounded px-1 py-0.5 text-xs",children:[e.jsx("option",{value:"TB",children:"Top → Down"}),e.jsx("option",{value:"LR",children:"Left → Right"})]})]}),e.jsx("div",{className:"w-px h-4 bg-[var(--color-border)]"}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("button",{onClick:N,className:"px-2 py-0.5 rounded border border-[var(--color-border)] hover:bg-[var(--color-bg-tertiary)] transition-colors",title:i>100?`Warning: ${i} nodes — may be slow`:"Expand all nodes",children:"Expand All"}),e.jsx("button",{onClick:p,className:"px-2 py-0.5 rounded border border-[var(--color-border)] hover:bg-[var(--color-bg-tertiary)] transition-colors",children:"Collapse All"})]}),e.jsx("div",{className:"w-px h-4 bg-[var(--color-border)]"}),e.jsxs("span",{className:"text-[var(--color-text-muted)]",children:["Showing ",d," of ",i]}),e.jsx("button",{onClick:u,className:"text-[var(--color-text-muted)] hover:text-[var(--color-text)] underline",children:"Clear"})]})}),Se=t.memo(function({tree:b,expandedIds:h,selectedNodeId:j,onToggleExpand:v,onSelectNode:m}){const[n,u]=t.useState(!1),d=t.useCallback(()=>u(i=>!i),[]);return n?e.jsx("div",{className:"w-8 border-r border-[var(--color-border)] bg-[var(--color-bg-secondary)] flex flex-col items-center pt-2",children:e.jsx("button",{onClick:d,className:"text-xs text-[var(--color-text-muted)] hover:text-[var(--color-text)] p-1",title:"Show tree panel",children:"▸"})}):e.jsxs("div",{className:"w-64 border-r border-[var(--color-border)] bg-[var(--color-bg-secondary)] flex flex-col min-h-0",children:[e.jsxs("div",{className:"flex items-center justify-between px-3 py-2 border-b border-[var(--color-border)]",children:[e.jsx("span",{className:"text-xs font-medium text-[var(--color-text-muted)]",children:"Hierarchy"}),e.jsx("button",{onClick:d,className:"text-xs text-[var(--color-text-muted)] hover:text-[var(--color-text)]",title:"Collapse panel",children:"◂"})]}),e.jsx("div",{className:"overflow-y-auto flex-1 py-1",children:b.length===0?e.jsx("div",{className:"px-3 py-4 text-xs text-[var(--color-text-muted)] text-center",children:"No nodes"}):b.map(i=>e.jsx($,{item:i,depth:0,expandedIds:h,selectedNodeId:j,onToggleExpand:v,onSelectNode:m},i.node.id))})]})});function $({item:o,depth:b,expandedIds:h,selectedNodeId:j,onToggleExpand:v,onSelectNode:m}){const{node:n,children:u}=o,d=h.has(n.id),i=j===n.id,N=u.length>0,p=L[n.status]||"#9e9e9e",l=_[n.type]||"#6c757d",g=t.useCallback(a=>{a.stopPropagation(),v(n.id)},[n.id,v]),C=t.useCallback(()=>{m(n.id)},[n.id,m]);return e.jsxs(e.Fragment,{children:[e.jsxs("button",{onClick:C,className:`w-full text-left flex items-center gap-1 px-2 py-1 text-xs hover:bg-[var(--color-bg-tertiary)] transition-colors ${i?"bg-[var(--color-bg-tertiary)] font-semibold":""}`,style:{paddingLeft:`${b*16+8}px`},children:[N?e.jsx("span",{onClick:g,className:"w-4 text-center text-[var(--color-text-muted)] hover:text-[var(--color-text)] cursor-pointer shrink-0",children:d?"▾":"▸"}):e.jsx("span",{className:"w-4 shrink-0"}),e.jsx("span",{className:"w-2 h-2 rounded-full shrink-0",style:{background:p},title:n.status.replace("_"," ")}),e.jsx("span",{className:"text-[9px] px-1 rounded shrink-0",style:{background:`${l}20`,color:l},children:n.type.slice(0,3)}),e.jsx("span",{className:"truncate",children:n.title}),N&&e.jsx("span",{className:"text-[9px] text-[var(--color-text-muted)] ml-auto shrink-0",children:u.length})]}),d&&u.map(a=>e.jsx($,{item:a,depth:b+1,expandedIds:h,selectedNodeId:j,onToggleExpand:v,onSelectNode:m},a.node.id))]})}const I=50,we=t.memo(function({nodes:b,allNodes:h=[],onNodeClick:j}){const v=t.useMemo(()=>{const s=new Map;for(const f of h)s.set(f.id,f.title);return s},[h]),[m,n]=t.useState("priority"),[u,d]=t.useState("asc"),[i,N]=t.useState(""),[p,l]=t.useState(0),g=t.useMemo(()=>{if(!i)return b;const s=i.toLowerCase();return b.filter(f=>f.title.toLowerCase().includes(s)||f.type.toLowerCase().includes(s)||f.status.toLowerCase().includes(s)||(f.sprint||"").toLowerCase().includes(s))},[b,i]),C=t.useMemo(()=>[...g].sort((s,f)=>{const w=s[m]??"",E=f[m]??"",y=typeof w=="number"?w-E:String(w).localeCompare(String(E));return u==="asc"?y:-y}),[g,m,u]),a=Math.max(1,Math.ceil(C.length/I)),S=t.useMemo(()=>C.slice(p*I,(p+1)*I),[C,p]),k=s=>{m===s?d(f=>f==="asc"?"desc":"asc"):(n(s),d("asc"))},T=[{key:"title",label:"Title"},{key:"type",label:"Type"},{key:"status",label:"Status"},{key:"priority",label:"Priority"},{key:"xpSize",label:"Size"},{key:"sprint",label:"Sprint"},{key:"parentId",label:"Parent"}];return e.jsxs("div",{className:"border-t border-[var(--color-border)]",children:[e.jsx("div",{className:"px-4 py-2 bg-[var(--color-bg-secondary)]",children:e.jsx("input",{type:"text",placeholder:"Search nodes...",value:i,onChange:s=>N(s.target.value),className:"w-full max-w-xs px-2 py-1 text-sm border border-[var(--color-border)] rounded bg-[var(--color-bg)]"})}),e.jsx("div",{className:"overflow-x-auto max-h-64",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsx("tr",{className:"bg-[var(--color-bg-tertiary)]",children:T.map(s=>e.jsxs("th",{onClick:()=>k(s.key),className:"px-3 py-1.5 text-left text-xs font-medium text-[var(--color-text-muted)] cursor-pointer hover:text-[var(--color-text)]",children:[s.label,m===s.key&&(u==="asc"?" ↑":" ↓")]},s.key))})}),e.jsx("tbody",{children:S.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:7,className:"px-3 py-4 text-center text-[var(--color-text-muted)]",children:"No nodes found"})}):S.map(s=>e.jsxs("tr",{onClick:()=>j(s),className:"border-t border-[var(--color-border)] hover:bg-[var(--color-bg-secondary)] cursor-pointer",children:[e.jsx("td",{className:"px-3 py-1.5 max-w-[200px] truncate",children:s.title}),e.jsx("td",{className:"px-3 py-1.5",children:e.jsx("span",{className:"text-[10px] px-1.5 py-0.5 rounded font-medium",style:{background:`${_[s.type]}20`,color:_[s.type]},children:s.type})}),e.jsx("td",{className:"px-3 py-1.5",children:e.jsx("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full font-medium",style:{background:`${L[s.status]}20`,color:L[s.status]},children:s.status.replace("_"," ")})}),e.jsx("td",{className:"px-3 py-1.5 text-center",children:s.priority}),e.jsx("td",{className:"px-3 py-1.5 text-center",children:s.xpSize||"-"}),e.jsx("td",{className:"px-3 py-1.5",children:s.sprint||"-"}),e.jsx("td",{className:"px-3 py-1.5 max-w-[150px] truncate text-[var(--color-text-muted)]",children:s.parentId?v.get(s.parentId)??"-":"-"})]},s.id))})]})}),a>1&&e.jsxs("div",{className:"flex items-center justify-between px-4 py-1.5 bg-[var(--color-bg-secondary)] border-t border-[var(--color-border)] text-xs text-[var(--color-text-muted)]",children:[e.jsxs("span",{children:[C.length," nodes"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{disabled:p===0,onClick:()=>l(s=>Math.max(0,s-1)),className:"px-2 py-0.5 rounded border border-[var(--color-border)] disabled:opacity-30",children:"Prev"}),e.jsxs("span",{children:[p+1,"/",a]}),e.jsx("button",{disabled:p>=a-1,onClick:()=>l(s=>Math.min(a-1,s+1)),className:"px-2 py-0.5 rounded border border-[var(--color-border)] disabled:opacity-30",children:"Next"})]})]})]})}),Te=["depends_on","blocks","parent_of","child_of","related_to","priority_over","implements","derived_from"];function Ee({fromId:o,toId:b,fromTitle:h,toTitle:j,onCreated:v,onCancel:m}){const[n,u]=t.useState("depends_on"),[d,i]=t.useState(""),[N,p]=t.useState(!1),[l,g]=t.useState(null),C=t.useCallback(async()=>{p(!0),g(null);try{await le.createEdge({from:o,to:b,relationType:n,reason:d.trim()||void 0}),v()}catch(a){g(a instanceof Error?a.message:"Failed to create edge")}finally{p(!1)}},[o,b,n,d,v]);return e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50",children:e.jsxs("div",{className:"bg-[var(--color-bg)] border border-[var(--color-border)] rounded-lg shadow-xl w-96 p-4",children:[e.jsx("h3",{className:"text-sm font-bold mb-3",children:"Create Relationship"}),e.jsxs("div",{className:"space-y-3 text-sm",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-[var(--color-text-muted)] block mb-1",children:"From"}),e.jsx("div",{className:"text-xs bg-[var(--color-bg-tertiary)] px-2 py-1.5 rounded truncate",children:h??o})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-[var(--color-text-muted)] block mb-1",children:"To"}),e.jsx("div",{className:"text-xs bg-[var(--color-bg-tertiary)] px-2 py-1.5 rounded truncate",children:j??b})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-[var(--color-text-muted)] block mb-1",children:"Relation Type"}),e.jsx("select",{value:n,onChange:a=>u(a.target.value),className:"w-full text-xs px-2 py-1.5 rounded bg-[var(--color-bg-tertiary)] border border-[var(--color-border)] focus:outline-none focus:border-[var(--color-accent)]",children:Te.map(a=>{const S=Ce[a];return e.jsx("option",{value:a,children:S.label},a)})})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-[var(--color-text-muted)] block mb-1",children:"Reason (optional)"}),e.jsx("input",{type:"text",value:d,onChange:a=>i(a.target.value),placeholder:"Why this relationship exists...",className:"w-full text-xs px-2 py-1.5 rounded bg-[var(--color-bg-tertiary)] border border-[var(--color-border)] focus:outline-none focus:border-[var(--color-accent)]"})]}),l&&e.jsx("div",{className:"text-xs text-[var(--color-danger)] bg-[var(--color-bg-tertiary)] px-2 py-1.5 rounded",children:l})]}),e.jsxs("div",{className:"flex justify-end gap-2 mt-4",children:[e.jsx("button",{onClick:m,className:"text-xs px-3 py-1.5 rounded bg-[var(--color-bg-tertiary)] hover:bg-[var(--color-border)] transition-colors",children:"Cancel"}),e.jsx("button",{onClick:C,disabled:N,className:"text-xs px-3 py-1.5 rounded bg-[var(--color-accent)] text-white font-medium disabled:opacity-50 hover:opacity-90 transition-opacity",children:N?"Creating...":"Create"})]})]})})}const Le={workflowNode:ve},_e={workflowEdge:he},Pe={hideAttribution:!0};function De({graph:o}){var R,F;const[b,h,j]=ne([]),[v,m,n]=ce([]),[u,d]=t.useState(null),[i,N]=t.useState("TB"),[p,l]=t.useState(new Set),[g,C]=t.useState(new Set),[a,S]=t.useState(new Set),[k,T]=t.useState(null),s=t.useDeferredValue(p),f=t.useDeferredValue(g),w=t.useDeferredValue(i),E=t.useRef(null),y=t.useMemo(()=>de(o.nodes,o.edges),[o.nodes,o.edges]),G=t.useMemo(()=>ie(o.nodes,y),[o.nodes,y]),P=t.useCallback(r=>{S(x=>{const c=new Set(x);return c.has(r)?c.delete(r):c.add(r),c})},[]),V=t.useCallback(()=>{const r=new Set;for(const[x]of y)r.add(x);S(r)},[y]),B=t.useCallback(()=>{S(new Set)},[]),M=t.useCallback((r,x,c)=>{const se=W(o.nodes,a,y),z=xe(se,{statuses:r,types:x},y,a,P),D=z.map(ae=>ae.id);if(ue(E.current,D)&&c===w)return;E.current=D;const re=new Set(D),oe=pe(o.edges,re),O=me(z,oe,c);h(O.nodes),m(O.edges)},[o,h,m,w,a,y,P]);t.useEffect(()=>{M(s,f,w)},[o,M,s,f,w]);const H=t.useCallback((r,x)=>{d(x.data.sourceNode)},[]),Y=t.useCallback(r=>{d(r)},[]),Z=t.useCallback(r=>{const x=o.nodes.find(c=>c.id===r);x&&d(x)},[o.nodes]),K=t.useCallback(r=>{const x=o.nodes.find(c=>c.id===r);x&&d(x)},[o.nodes]),U=t.useCallback(r=>{r.source&&r.target&&r.source!==r.target&&T({fromId:r.source,toId:r.target})},[]),q=t.useCallback(()=>{T(null)},[]),J=t.useCallback(r=>{l(x=>{const c=new Set(x);return c.has(r)?c.delete(r):c.add(r),c})},[]),Q=t.useCallback(r=>{C(x=>{const c=new Set(x);return c.has(r)?c.delete(r):c.add(r),c})},[]),X=t.useCallback(()=>{l(new Set),C(new Set)},[]),A=t.useMemo(()=>W(o.nodes,a,y).filter(x=>!(p.size&&!p.has(x.status)||g.size&&!g.has(x.type))),[o.nodes,a,y,p,g]),ee=k?(R=o.nodes.find(r=>r.id===k.fromId))==null?void 0:R.title:void 0,te=k?(F=o.nodes.find(r=>r.id===k.toId))==null?void 0:F.title:void 0;return e.jsxs("div",{className:"flex flex-col h-full",children:[e.jsx(ke,{statuses:p,types:g,direction:i,onStatusToggle:J,onTypeToggle:Q,onDirectionChange:N,onClear:X,visibleNodeCount:A.length,totalNodeCount:o.nodes.length,onExpandAll:V,onCollapseAll:B}),e.jsxs("div",{className:"flex flex-1 min-h-0",children:[e.jsx(Se,{tree:G,expandedIds:a,selectedNodeId:(u==null?void 0:u.id)??null,onToggleExpand:P,onSelectNode:K}),e.jsx("div",{className:"flex-1 relative",children:o.nodes.length===0?e.jsx("div",{className:"flex items-center justify-center h-full text-[var(--color-text-muted)]",children:e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-lg mb-2",children:"No nodes in graph"}),e.jsx("p",{className:"text-sm",children:"Import a PRD to get started"})]})}):e.jsxs(be,{nodes:b,edges:v,onNodesChange:j,onEdgesChange:n,onNodeClick:H,onConnect:U,nodeTypes:Le,edgeTypes:_e,nodesDraggable:!1,nodesConnectable:!0,fitView:!0,minZoom:.1,maxZoom:2,proOptions:Pe,children:[e.jsx(fe,{gap:16,size:1}),e.jsx(ge,{showInteractive:!1})]})}),u&&e.jsx(ye,{node:u,edges:o.edges,allNodes:o.nodes,childrenMap:y,onClose:()=>d(null),onNodeNavigate:Z})]}),e.jsx(we,{nodes:A,allNodes:o.nodes,onNodeClick:Y}),k&&e.jsx(Ee,{fromId:k.fromId,toId:k.toId,fromTitle:ee,toTitle:te,onCreated:q,onCancel:()=>T(null)})]})}function ze({graph:o}){return e.jsx("div",{className:"h-full",children:e.jsx(De,{graph:o})})}export{ze as GraphTab};
|