@mcp-graph-workflow/mcp-graph 5.16.0 → 5.18.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.
Files changed (351) hide show
  1. package/dist/api/router.d.ts.map +1 -1
  2. package/dist/api/router.js +2 -0
  3. package/dist/api/router.js.map +1 -1
  4. package/dist/api/routes/translation.d.ts +8 -0
  5. package/dist/api/routes/translation.d.ts.map +1 -0
  6. package/dist/api/routes/translation.js +174 -0
  7. package/dist/api/routes/translation.js.map +1 -0
  8. package/dist/cli/commands/import-cmd.d.ts.map +1 -1
  9. package/dist/cli/commands/import-cmd.js +2 -0
  10. package/dist/cli/commands/import-cmd.js.map +1 -1
  11. package/dist/core/analyzer/definition-of-ready.d.ts.map +1 -1
  12. package/dist/core/analyzer/definition-of-ready.js +12 -7
  13. package/dist/core/analyzer/definition-of-ready.js.map +1 -1
  14. package/dist/core/analyzer/risk-assessment.d.ts.map +1 -1
  15. package/dist/core/analyzer/risk-assessment.js +2 -0
  16. package/dist/core/analyzer/risk-assessment.js.map +1 -1
  17. package/dist/core/analyzer/scope-analyzer.d.ts.map +1 -1
  18. package/dist/core/analyzer/scope-analyzer.js +6 -3
  19. package/dist/core/analyzer/scope-analyzer.js.map +1 -1
  20. package/dist/core/config/ai-memory-generator.js +3 -3
  21. package/dist/core/context/bm25-compressor.d.ts.map +1 -1
  22. package/dist/core/context/bm25-compressor.js +5 -3
  23. package/dist/core/context/bm25-compressor.js.map +1 -1
  24. package/dist/core/context/compact-context.d.ts +2 -0
  25. package/dist/core/context/compact-context.d.ts.map +1 -1
  26. package/dist/core/context/compact-context.js +12 -12
  27. package/dist/core/context/compact-context.js.map +1 -1
  28. package/dist/core/designer/coupling-analyzer.d.ts.map +1 -1
  29. package/dist/core/designer/coupling-analyzer.js +2 -1
  30. package/dist/core/designer/coupling-analyzer.js.map +1 -1
  31. package/dist/core/events/event-types.d.ts +32 -1
  32. package/dist/core/events/event-types.d.ts.map +1 -1
  33. package/dist/core/handoff/delivery-checklist.d.ts.map +1 -1
  34. package/dist/core/handoff/delivery-checklist.js +6 -6
  35. package/dist/core/handoff/delivery-checklist.js.map +1 -1
  36. package/dist/core/implementer/sprint-progress.d.ts.map +1 -1
  37. package/dist/core/implementer/sprint-progress.js +3 -1
  38. package/dist/core/implementer/sprint-progress.js.map +1 -1
  39. package/dist/core/importer/prd-to-graph.d.ts.map +1 -1
  40. package/dist/core/importer/prd-to-graph.js +18 -6
  41. package/dist/core/importer/prd-to-graph.js.map +1 -1
  42. package/dist/core/insights/skill-recommender.d.ts.map +1 -1
  43. package/dist/core/insights/skill-recommender.js +3 -0
  44. package/dist/core/insights/skill-recommender.js.map +1 -1
  45. package/dist/core/listener/backlog-health.d.ts.map +1 -1
  46. package/dist/core/listener/backlog-health.js +3 -1
  47. package/dist/core/listener/backlog-health.js.map +1 -1
  48. package/dist/core/listener/feedback-readiness.d.ts.map +1 -1
  49. package/dist/core/listener/feedback-readiness.js +4 -5
  50. package/dist/core/listener/feedback-readiness.js.map +1 -1
  51. package/dist/core/lsp/lsp-bridge.d.ts +12 -2
  52. package/dist/core/lsp/lsp-bridge.d.ts.map +1 -1
  53. package/dist/core/lsp/lsp-bridge.js +139 -3
  54. package/dist/core/lsp/lsp-bridge.js.map +1 -1
  55. package/dist/core/lsp/lsp-edit-applier.d.ts +23 -0
  56. package/dist/core/lsp/lsp-edit-applier.d.ts.map +1 -0
  57. package/dist/core/lsp/lsp-edit-applier.js +204 -0
  58. package/dist/core/lsp/lsp-edit-applier.js.map +1 -0
  59. package/dist/core/lsp/lsp-server-manager.d.ts.map +1 -1
  60. package/dist/core/lsp/lsp-server-manager.js +18 -0
  61. package/dist/core/lsp/lsp-server-manager.js.map +1 -1
  62. package/dist/core/lsp/lsp-types.d.ts +35 -0
  63. package/dist/core/lsp/lsp-types.d.ts.map +1 -1
  64. package/dist/core/lsp/lsp-types.js +20 -0
  65. package/dist/core/lsp/lsp-types.js.map +1 -1
  66. package/dist/core/memory/memory-reader.d.ts.map +1 -1
  67. package/dist/core/memory/memory-reader.js +18 -3
  68. package/dist/core/memory/memory-reader.js.map +1 -1
  69. package/dist/core/parser/read-file.d.ts.map +1 -1
  70. package/dist/core/parser/read-file.js +11 -0
  71. package/dist/core/parser/read-file.js.map +1 -1
  72. package/dist/core/planner/decompose.d.ts.map +1 -1
  73. package/dist/core/planner/decompose.js +8 -3
  74. package/dist/core/planner/decompose.js.map +1 -1
  75. package/dist/core/planner/lifecycle-phase.d.ts +18 -0
  76. package/dist/core/planner/lifecycle-phase.d.ts.map +1 -1
  77. package/dist/core/planner/lifecycle-phase.js +112 -0
  78. package/dist/core/planner/lifecycle-phase.js.map +1 -1
  79. package/dist/core/planner/next-task.js +3 -3
  80. package/dist/core/planner/next-task.js.map +1 -1
  81. package/dist/core/planner/planning-report.js +3 -2
  82. package/dist/core/planner/planning-report.js.map +1 -1
  83. package/dist/core/planner/velocity.js +3 -0
  84. package/dist/core/planner/velocity.js.map +1 -1
  85. package/dist/core/rag/query-cache.js +2 -2
  86. package/dist/core/rag/query-cache.js.map +1 -1
  87. package/dist/core/rag/response-cache.d.ts +38 -0
  88. package/dist/core/rag/response-cache.d.ts.map +1 -0
  89. package/dist/core/rag/response-cache.js +84 -0
  90. package/dist/core/rag/response-cache.js.map +1 -0
  91. package/dist/core/rag/translation-indexer.d.ts +35 -0
  92. package/dist/core/rag/translation-indexer.d.ts.map +1 -0
  93. package/dist/core/rag/translation-indexer.js +70 -0
  94. package/dist/core/rag/translation-indexer.js.map +1 -0
  95. package/dist/core/reviewer/review-readiness.d.ts.map +1 -1
  96. package/dist/core/reviewer/review-readiness.js +4 -3
  97. package/dist/core/reviewer/review-readiness.js.map +1 -1
  98. package/dist/core/search/fts-search.d.ts.map +1 -1
  99. package/dist/core/search/fts-search.js +12 -6
  100. package/dist/core/search/fts-search.js.map +1 -1
  101. package/dist/core/siebel/wsdl-contract-validator.d.ts +25 -0
  102. package/dist/core/siebel/wsdl-contract-validator.d.ts.map +1 -0
  103. package/dist/core/siebel/wsdl-contract-validator.js +80 -0
  104. package/dist/core/siebel/wsdl-contract-validator.js.map +1 -0
  105. package/dist/core/siebel/wsdl-correlation.d.ts.map +1 -1
  106. package/dist/core/siebel/wsdl-correlation.js +2 -13
  107. package/dist/core/siebel/wsdl-correlation.js.map +1 -1
  108. package/dist/core/siebel/wsdl-doc-generator.d.ts +10 -0
  109. package/dist/core/siebel/wsdl-doc-generator.d.ts.map +1 -0
  110. package/dist/core/siebel/wsdl-doc-generator.js +95 -0
  111. package/dist/core/siebel/wsdl-doc-generator.js.map +1 -0
  112. package/dist/core/store/knowledge-store.d.ts +1 -0
  113. package/dist/core/store/knowledge-store.d.ts.map +1 -1
  114. package/dist/core/store/knowledge-store.js +28 -13
  115. package/dist/core/store/knowledge-store.js.map +1 -1
  116. package/dist/core/store/migrations.d.ts.map +1 -1
  117. package/dist/core/store/migrations.js +97 -0
  118. package/dist/core/store/migrations.js.map +1 -1
  119. package/dist/core/store/path-resolver.d.ts.map +1 -1
  120. package/dist/core/store/path-resolver.js +8 -3
  121. package/dist/core/store/path-resolver.js.map +1 -1
  122. package/dist/core/store/sqlite-store.d.ts.map +1 -1
  123. package/dist/core/store/sqlite-store.js +37 -12
  124. package/dist/core/store/sqlite-store.js.map +1 -1
  125. package/dist/core/store/store-manager.d.ts.map +1 -1
  126. package/dist/core/store/store-manager.js +3 -1
  127. package/dist/core/store/store-manager.js.map +1 -1
  128. package/dist/core/store/tool-call-log.d.ts +26 -0
  129. package/dist/core/store/tool-call-log.d.ts.map +1 -0
  130. package/dist/core/store/tool-call-log.js +70 -0
  131. package/dist/core/store/tool-call-log.js.map +1 -0
  132. package/dist/core/translation/confidence/ambiguity-detector.d.ts +18 -0
  133. package/dist/core/translation/confidence/ambiguity-detector.d.ts.map +1 -0
  134. package/dist/core/translation/confidence/ambiguity-detector.js +80 -0
  135. package/dist/core/translation/confidence/ambiguity-detector.js.map +1 -0
  136. package/dist/core/translation/confidence/equivalence-scorer.d.ts +22 -0
  137. package/dist/core/translation/confidence/equivalence-scorer.d.ts.map +1 -0
  138. package/dist/core/translation/confidence/equivalence-scorer.js +72 -0
  139. package/dist/core/translation/confidence/equivalence-scorer.js.map +1 -0
  140. package/dist/core/translation/generators/generator-adapter.d.ts +22 -0
  141. package/dist/core/translation/generators/generator-adapter.d.ts.map +1 -0
  142. package/dist/core/translation/generators/generator-adapter.js +6 -0
  143. package/dist/core/translation/generators/generator-adapter.js.map +1 -0
  144. package/dist/core/translation/generators/python-generator.d.ts +15 -0
  145. package/dist/core/translation/generators/python-generator.d.ts.map +1 -0
  146. package/dist/core/translation/generators/python-generator.js +74 -0
  147. package/dist/core/translation/generators/python-generator.js.map +1 -0
  148. package/dist/core/translation/generators/ts-generator.d.ts +14 -0
  149. package/dist/core/translation/generators/ts-generator.d.ts.map +1 -0
  150. package/dist/core/translation/generators/ts-generator.js +56 -0
  151. package/dist/core/translation/generators/ts-generator.js.map +1 -0
  152. package/dist/core/translation/language-detect.d.ts +12 -0
  153. package/dist/core/translation/language-detect.d.ts.map +1 -0
  154. package/dist/core/translation/language-detect.js +140 -0
  155. package/dist/core/translation/language-detect.js.map +1 -0
  156. package/dist/core/translation/parsers/parser-adapter.d.ts +23 -0
  157. package/dist/core/translation/parsers/parser-adapter.d.ts.map +1 -0
  158. package/dist/core/translation/parsers/parser-adapter.js +6 -0
  159. package/dist/core/translation/parsers/parser-adapter.js.map +1 -0
  160. package/dist/core/translation/parsers/python-parser-adapter.d.ts +10 -0
  161. package/dist/core/translation/parsers/python-parser-adapter.d.ts.map +1 -0
  162. package/dist/core/translation/parsers/python-parser-adapter.js +85 -0
  163. package/dist/core/translation/parsers/python-parser-adapter.js.map +1 -0
  164. package/dist/core/translation/parsers/ts-parser-adapter.d.ts +10 -0
  165. package/dist/core/translation/parsers/ts-parser-adapter.d.ts.map +1 -0
  166. package/dist/core/translation/parsers/ts-parser-adapter.js +145 -0
  167. package/dist/core/translation/parsers/ts-parser-adapter.js.map +1 -0
  168. package/dist/core/translation/prompt-builder.d.ts +34 -0
  169. package/dist/core/translation/prompt-builder.d.ts.map +1 -0
  170. package/dist/core/translation/prompt-builder.js +137 -0
  171. package/dist/core/translation/prompt-builder.js.map +1 -0
  172. package/dist/core/translation/translation-orchestrator.d.ts +67 -0
  173. package/dist/core/translation/translation-orchestrator.d.ts.map +1 -0
  174. package/dist/core/translation/translation-orchestrator.js +204 -0
  175. package/dist/core/translation/translation-orchestrator.js.map +1 -0
  176. package/dist/core/translation/translation-store.d.ts +35 -0
  177. package/dist/core/translation/translation-store.d.ts.map +1 -0
  178. package/dist/core/translation/translation-store.js +96 -0
  179. package/dist/core/translation/translation-store.js.map +1 -0
  180. package/dist/core/translation/translation-types.d.ts +156 -0
  181. package/dist/core/translation/translation-types.d.ts.map +1 -0
  182. package/dist/core/translation/translation-types.js +86 -0
  183. package/dist/core/translation/translation-types.js.map +1 -0
  184. package/dist/core/translation/ucr/construct-registry.d.ts +36 -0
  185. package/dist/core/translation/ucr/construct-registry.d.ts.map +1 -0
  186. package/dist/core/translation/ucr/construct-registry.js +159 -0
  187. package/dist/core/translation/ucr/construct-registry.js.map +1 -0
  188. package/dist/core/translation/ucr/construct-seed.d.ts +12 -0
  189. package/dist/core/translation/ucr/construct-seed.d.ts.map +1 -0
  190. package/dist/core/translation/ucr/construct-seed.js +35 -0
  191. package/dist/core/translation/ucr/construct-seed.js.map +1 -0
  192. package/dist/core/translation/ucr/construct-types.d.ts +174 -0
  193. package/dist/core/translation/ucr/construct-types.d.ts.map +1 -0
  194. package/dist/core/translation/ucr/construct-types.js +88 -0
  195. package/dist/core/translation/ucr/construct-types.js.map +1 -0
  196. package/dist/core/utils/ac-helpers.d.ts +5 -2
  197. package/dist/core/utils/ac-helpers.d.ts.map +1 -1
  198. package/dist/core/utils/ac-helpers.js +35 -4
  199. package/dist/core/utils/ac-helpers.js.map +1 -1
  200. package/dist/core/utils/blocked-helpers.d.ts.map +1 -1
  201. package/dist/core/utils/blocked-helpers.js +9 -1
  202. package/dist/core/utils/blocked-helpers.js.map +1 -1
  203. package/dist/core/utils/constants.d.ts +19 -0
  204. package/dist/core/utils/constants.d.ts.map +1 -1
  205. package/dist/core/utils/constants.js +23 -0
  206. package/dist/core/utils/constants.js.map +1 -1
  207. package/dist/core/utils/errors.d.ts +12 -0
  208. package/dist/core/utils/errors.d.ts.map +1 -1
  209. package/dist/core/utils/errors.js +25 -0
  210. package/dist/core/utils/errors.js.map +1 -1
  211. package/dist/core/utils/similarity.d.ts +9 -0
  212. package/dist/core/utils/similarity.d.ts.map +1 -0
  213. package/dist/core/utils/similarity.js +20 -0
  214. package/dist/core/utils/similarity.js.map +1 -0
  215. package/dist/core/validator/done-integrity-checker.d.ts.map +1 -1
  216. package/dist/core/validator/done-integrity-checker.js +4 -2
  217. package/dist/core/validator/done-integrity-checker.js.map +1 -1
  218. package/dist/core/validator/status-flow-checker.d.ts.map +1 -1
  219. package/dist/core/validator/status-flow-checker.js +2 -1
  220. package/dist/core/validator/status-flow-checker.js.map +1 -1
  221. package/dist/mcp/code-intelligence-wrapper.d.ts +79 -0
  222. package/dist/mcp/code-intelligence-wrapper.d.ts.map +1 -0
  223. package/dist/mcp/code-intelligence-wrapper.js +291 -0
  224. package/dist/mcp/code-intelligence-wrapper.js.map +1 -0
  225. package/dist/mcp/lifecycle-wrapper.d.ts.map +1 -1
  226. package/dist/mcp/lifecycle-wrapper.js +57 -6
  227. package/dist/mcp/lifecycle-wrapper.js.map +1 -1
  228. package/dist/mcp/tool-classification.d.ts +20 -0
  229. package/dist/mcp/tool-classification.d.ts.map +1 -0
  230. package/dist/mcp/tool-classification.js +52 -0
  231. package/dist/mcp/tool-classification.js.map +1 -0
  232. package/dist/mcp/tools/analyze-translation.d.ts +8 -0
  233. package/dist/mcp/tools/analyze-translation.d.ts.map +1 -0
  234. package/dist/mcp/tools/analyze-translation.js +53 -0
  235. package/dist/mcp/tools/analyze-translation.js.map +1 -0
  236. package/dist/mcp/tools/analyze.d.ts.map +1 -1
  237. package/dist/mcp/tools/analyze.js +8 -0
  238. package/dist/mcp/tools/analyze.js.map +1 -1
  239. package/dist/mcp/tools/clone-node.d.ts.map +1 -1
  240. package/dist/mcp/tools/clone-node.js +5 -1
  241. package/dist/mcp/tools/clone-node.js.map +1 -1
  242. package/dist/mcp/tools/code-intelligence.d.ts +2 -0
  243. package/dist/mcp/tools/code-intelligence.d.ts.map +1 -1
  244. package/dist/mcp/tools/code-intelligence.js +168 -8
  245. package/dist/mcp/tools/code-intelligence.js.map +1 -1
  246. package/dist/mcp/tools/context.d.ts.map +1 -1
  247. package/dist/mcp/tools/context.js +3 -1
  248. package/dist/mcp/tools/context.js.map +1 -1
  249. package/dist/mcp/tools/delete-node.js +1 -1
  250. package/dist/mcp/tools/delete-node.js.map +1 -1
  251. package/dist/mcp/tools/edge.d.ts.map +1 -1
  252. package/dist/mcp/tools/edge.js +33 -20
  253. package/dist/mcp/tools/edge.js.map +1 -1
  254. package/dist/mcp/tools/export.d.ts.map +1 -1
  255. package/dist/mcp/tools/export.js +26 -1
  256. package/dist/mcp/tools/export.js.map +1 -1
  257. package/dist/mcp/tools/import-prd.js +1 -1
  258. package/dist/mcp/tools/import-prd.js.map +1 -1
  259. package/dist/mcp/tools/index.d.ts.map +1 -1
  260. package/dist/mcp/tools/index.js +8 -0
  261. package/dist/mcp/tools/index.js.map +1 -1
  262. package/dist/mcp/tools/init.d.ts.map +1 -1
  263. package/dist/mcp/tools/init.js +5 -1
  264. package/dist/mcp/tools/init.js.map +1 -1
  265. package/dist/mcp/tools/knowledge-feedback.d.ts.map +1 -1
  266. package/dist/mcp/tools/knowledge-feedback.js +3 -2
  267. package/dist/mcp/tools/knowledge-feedback.js.map +1 -1
  268. package/dist/mcp/tools/list.d.ts.map +1 -1
  269. package/dist/mcp/tools/list.js +6 -1
  270. package/dist/mcp/tools/list.js.map +1 -1
  271. package/dist/mcp/tools/manage-skill.d.ts.map +1 -1
  272. package/dist/mcp/tools/manage-skill.js +6 -0
  273. package/dist/mcp/tools/manage-skill.js.map +1 -1
  274. package/dist/mcp/tools/memory.js +4 -4
  275. package/dist/mcp/tools/memory.js.map +1 -1
  276. package/dist/mcp/tools/metrics.d.ts.map +1 -1
  277. package/dist/mcp/tools/metrics.js +32 -2
  278. package/dist/mcp/tools/metrics.js.map +1 -1
  279. package/dist/mcp/tools/move-node.js +1 -1
  280. package/dist/mcp/tools/move-node.js.map +1 -1
  281. package/dist/mcp/tools/node.d.ts.map +1 -1
  282. package/dist/mcp/tools/node.js +38 -35
  283. package/dist/mcp/tools/node.js.map +1 -1
  284. package/dist/mcp/tools/rag-context.d.ts +1 -1
  285. package/dist/mcp/tools/rag-context.d.ts.map +1 -1
  286. package/dist/mcp/tools/rag-context.js +21 -2
  287. package/dist/mcp/tools/rag-context.js.map +1 -1
  288. package/dist/mcp/tools/search.d.ts.map +1 -1
  289. package/dist/mcp/tools/search.js +8 -4
  290. package/dist/mcp/tools/search.js.map +1 -1
  291. package/dist/mcp/tools/set-phase.d.ts.map +1 -1
  292. package/dist/mcp/tools/set-phase.js +26 -5
  293. package/dist/mcp/tools/set-phase.js.map +1 -1
  294. package/dist/mcp/tools/show.js +1 -1
  295. package/dist/mcp/tools/show.js.map +1 -1
  296. package/dist/mcp/tools/siebel-import-sif.d.ts.map +1 -1
  297. package/dist/mcp/tools/siebel-import-sif.js +67 -36
  298. package/dist/mcp/tools/siebel-import-sif.js.map +1 -1
  299. package/dist/mcp/tools/translate-code.d.ts +8 -0
  300. package/dist/mcp/tools/translate-code.d.ts.map +1 -0
  301. package/dist/mcp/tools/translate-code.js +73 -0
  302. package/dist/mcp/tools/translate-code.js.map +1 -0
  303. package/dist/mcp/tools/update-node.js +1 -1
  304. package/dist/mcp/tools/update-node.js.map +1 -1
  305. package/dist/mcp/tools/update-status.js +1 -1
  306. package/dist/mcp/tools/update-status.js.map +1 -1
  307. package/dist/schemas/analyzer-schema.d.ts +5 -3
  308. package/dist/schemas/analyzer-schema.d.ts.map +1 -1
  309. package/dist/schemas/analyzer-schema.js +1 -0
  310. package/dist/schemas/analyzer-schema.js.map +1 -1
  311. package/dist/schemas/designer-schema.d.ts +4 -4
  312. package/dist/schemas/implementer-schema.d.ts +1 -0
  313. package/dist/schemas/implementer-schema.d.ts.map +1 -1
  314. package/dist/schemas/implementer-schema.js +1 -0
  315. package/dist/schemas/implementer-schema.js.map +1 -1
  316. package/dist/schemas/knowledge.schema.d.ts +2 -0
  317. package/dist/schemas/knowledge.schema.d.ts.map +1 -1
  318. package/dist/schemas/knowledge.schema.js +1 -0
  319. package/dist/schemas/knowledge.schema.js.map +1 -1
  320. package/dist/schemas/node.schema.js +1 -1
  321. package/dist/schemas/node.schema.js.map +1 -1
  322. package/dist/schemas/siebel.schema.d.ts +14 -14
  323. package/dist/schemas/validator-schema.d.ts +1 -0
  324. package/dist/schemas/validator-schema.d.ts.map +1 -1
  325. package/dist/schemas/validator-schema.js +1 -0
  326. package/dist/schemas/validator-schema.js.map +1 -1
  327. package/dist/web/dashboard/dist/assets/{benchmark-tab-LbjYcnjd.js → benchmark-tab-BWbrm3fF.js} +1 -1
  328. package/dist/web/dashboard/dist/assets/{context-tab-u_l0XUXT.js → context-tab-CD1pqDb2.js} +1 -1
  329. package/dist/web/dashboard/dist/assets/{gitnexus-tab-K304jKR3.js → gitnexus-tab-DWfMYYIO.js} +1 -1
  330. package/dist/web/dashboard/dist/assets/{graph-section-3_2LPo7V.js → graph-section-ByabPxrl.js} +1 -1
  331. package/dist/web/dashboard/dist/assets/{graph-tab-KG6GQq1a.js → graph-tab-Bd2SQl25.js} +1 -1
  332. package/dist/web/dashboard/dist/assets/{graph-utils-cpyaBhnE.js → graph-utils-C3ZvD-eu.js} +1 -1
  333. package/dist/web/dashboard/dist/assets/{index-DY9euqve.js → index-CLbo-4nU.js} +1 -1
  334. package/dist/web/dashboard/dist/assets/{index-Co7yktBf.js → index-DknXi6Cq.js} +47 -42
  335. package/dist/web/dashboard/dist/assets/{index-Clwhz2ad.js → index-LPQ6gwAy.js} +1 -1
  336. package/dist/web/dashboard/dist/assets/index-jxbHgBUe.css +1 -0
  337. package/dist/web/dashboard/dist/assets/{insights-tab-yrnRR8CL.js → insights-tab-Kqy1BThw.js} +1 -1
  338. package/dist/web/dashboard/dist/assets/{journey-tab-Cfh-qkYk.js → journey-tab-CjfOzBFl.js} +1 -1
  339. package/dist/web/dashboard/dist/assets/languages-tab-BsE3pPKO.js +63 -0
  340. package/dist/web/dashboard/dist/assets/{logs-tab-B-8O6WzQ.js → logs-tab-D9XtpaKf.js} +1 -1
  341. package/dist/web/dashboard/dist/assets/lsp-tab-DN-wImxK.js +64 -0
  342. package/dist/web/dashboard/dist/assets/{memories-tab-5t0pfAsS.js → memories-tab-C9CgvCRH.js} +1 -1
  343. package/dist/web/dashboard/dist/assets/{prd-backlog-tab-Bgt2qin9.js → prd-backlog-tab-BOFkQdFu.js} +1 -1
  344. package/dist/web/dashboard/dist/assets/{siebel-tab-CjYyszVw.js → siebel-tab-BVSi4Va2.js} +3 -3
  345. package/dist/web/dashboard/dist/assets/{skills-tab-D-6Tem1J.js → skills-tab-DJpG9cOQ.js} +1 -1
  346. package/dist/web/dashboard/dist/assets/{style-Ci_RUKMJ.js → style-FoeO1y9E.js} +1 -1
  347. package/dist/web/dashboard/dist/assets/triangle-alert-B0LFw3Ht.js +11 -0
  348. package/dist/web/dashboard/dist/index.html +2 -2
  349. package/package.json +2 -2
  350. package/dist/web/dashboard/dist/assets/index-C1UckjqB.css +0 -1
  351. package/dist/web/dashboard/dist/assets/lsp-tab-CBM8pixC.js +0 -74
@@ -1 +1 @@
1
- import{r as s,j as e,a as re}from"./index-Co7yktBf.js";import{u as oe,a as de,i as ce,B as ie,C as xe}from"./style-Ci_RUKMJ.js";import{b as ue,a as pe,g as W,t as me,s as he,c as fe,d as be,W as ge,e as je,N as Ne}from"./graph-utils-cpyaBhnE.js";import{A as ye,S as L,a as ve,N as _,E as Ce}from"./constants-lq4BIQN3.js";import"./index-DY9euqve.js";import"./index-Clwhz2ad.js";const ke=s.memo(function({statuses:h,types:f,direction:y,onStatusToggle:b,onTypeToggle:m,onDirectionChange:o,onClear:u,visibleNodeCount:c,totalNodeCount:i,onExpandAll:v,onCollapseAll:p}){return e.jsxs("div",{className:"flex flex-wrap items-center gap-3 px-4 py-2 border-b border-edge bg-surface-alt text-xs",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"font-medium text-muted",children:"Status:"}),ye.map(r=>e.jsxs("label",{className:"flex items-center gap-1 cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:h.has(r),onChange:()=>b(r),className:"w-3 h-3"}),e.jsx("span",{className:"w-2 h-2 rounded-full inline-block",style:{background:L[r]}}),e.jsx("span",{children:r.replace("_"," ")})]},r))]}),e.jsx("div",{className:"w-px h-4 bg-edge"}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"font-medium text-muted",children:"Type:"}),ve.map(r=>e.jsxs("label",{className:"flex items-center gap-1 cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:f.has(r),onChange:()=>m(r),className:"w-3 h-3"}),e.jsx("span",{className:"w-2 h-2 rounded-full inline-block",style:{background:_[r]}}),e.jsx("span",{children:r.replace("_"," ")})]},r))]}),e.jsx("div",{className:"w-px h-4 bg-edge"}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"font-medium text-muted",children:"Layout:"}),e.jsxs("select",{value:y,onChange:r=>o(r.target.value),className:"bg-surface border border-edge 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-edge"}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("button",{onClick:v,className:"px-2 py-0.5 rounded border border-edge hover:bg-surface-elevated 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-edge hover:bg-surface-elevated transition-colors",children:"Collapse All"})]}),e.jsx("div",{className:"w-px h-4 bg-edge"}),e.jsxs("span",{className:"text-muted",children:["Showing ",c," of ",i]}),e.jsx("button",{onClick:u,className:"text-muted hover:text-foreground underline",children:"Clear"})]})}),Se=s.memo(function({tree:h,expandedIds:f,selectedNodeId:y,onToggleExpand:b,onSelectNode:m}){const[o,u]=s.useState(!1),c=s.useCallback(()=>u(i=>!i),[]);return o?e.jsx("div",{className:"w-8 border-r border-edge bg-surface-alt flex flex-col items-center pt-2",children:e.jsx("button",{onClick:c,className:"text-xs text-muted hover:text-foreground p-1",title:"Show tree panel",children:"▸"})}):e.jsxs("div",{className:"w-64 border-r border-edge bg-surface-alt flex flex-col min-h-0",children:[e.jsxs("div",{className:"flex items-center justify-between px-3 py-2 border-b border-edge",children:[e.jsx("span",{className:"text-xs font-medium text-muted",children:"Hierarchy"}),e.jsx("button",{onClick:c,className:"text-xs text-muted hover:text-foreground",title:"Collapse panel",children:"◂"})]}),e.jsx("div",{className:"overflow-y-auto flex-1 py-1",children:h.length===0?e.jsx("div",{className:"px-3 py-4 text-xs text-muted text-center",children:"No nodes"}):h.map(i=>e.jsx($,{item:i,depth:0,expandedIds:f,selectedNodeId:y,onToggleExpand:b,onSelectNode:m},i.node.id))})]})});function $({item:l,depth:h,expandedIds:f,selectedNodeId:y,onToggleExpand:b,onSelectNode:m}){const{node:o,children:u}=l,c=f.has(o.id),i=y===o.id,v=u.length>0,p=L[o.status]||"#9e9e9e",r=_[o.type]||"#6c757d",j=s.useCallback(n=>{n.stopPropagation(),b(o.id)},[o.id,b]),C=s.useCallback(()=>{m(o.id)},[o.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-surface-elevated transition-colors ${i?"bg-surface-elevated font-semibold":""}`,style:{paddingLeft:`${h*16+8}px`},children:[v?e.jsx("span",{onClick:j,className:"w-4 text-center text-muted hover:text-foreground cursor-pointer shrink-0",children:c?"▾":"▸"}):e.jsx("span",{className:"w-4 shrink-0"}),e.jsx("span",{className:"w-2 h-2 rounded-full shrink-0",style:{background:p},title:o.status.replace("_"," ")}),e.jsx("span",{className:"text-[9px] px-1 rounded shrink-0",style:{background:`${r}20`,color:r},children:o.type.slice(0,3)}),e.jsx("span",{className:"truncate",children:o.title}),v&&e.jsx("span",{className:"text-[9px] text-muted ml-auto shrink-0",children:u.length})]}),c&&u.map(n=>e.jsx($,{item:n,depth:h+1,expandedIds:f,selectedNodeId:y,onToggleExpand:b,onSelectNode:m},n.node.id))]})}const I=50,we=s.memo(function({nodes:h,allNodes:f=[],onNodeClick:y}){const b=s.useMemo(()=>{const t=new Map;for(const g of f)t.set(g.id,g.title);return t},[f]),[m,o]=s.useState("priority"),[u,c]=s.useState("asc"),[i,v]=s.useState(""),[p,r]=s.useState(0),j=s.useMemo(()=>{if(!i)return h;const t=i.toLowerCase();return h.filter(g=>g.title.toLowerCase().includes(t)||g.type.toLowerCase().includes(t)||g.status.toLowerCase().includes(t)||(g.sprint||"").toLowerCase().includes(t))},[h,i]),C=s.useMemo(()=>[...j].sort((t,g)=>{const w=t[m]??"",E=g[m]??"",N=typeof w=="number"?w-E:String(w).localeCompare(String(E));return u==="asc"?N:-N}),[j,m,u]),n=Math.max(1,Math.ceil(C.length/I)),S=s.useMemo(()=>C.slice(p*I,(p+1)*I),[C,p]),k=t=>{m===t?c(g=>g==="asc"?"desc":"asc"):(o(t),c("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-edge",children:[e.jsx("div",{className:"px-4 py-2 bg-surface-alt",children:e.jsx("input",{type:"text",placeholder:"Search nodes...",value:i,onChange:t=>v(t.target.value),className:"w-full max-w-xs px-2 py-1 text-sm border border-edge rounded bg-surface"})}),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-surface-elevated",children:T.map(t=>e.jsxs("th",{onClick:()=>k(t.key),className:"px-3 py-1.5 text-left text-xs font-medium text-muted cursor-pointer hover:text-foreground",children:[t.label,m===t.key&&(u==="asc"?" ↑":" ↓")]},t.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-muted",children:"No nodes found"})}):S.map(t=>e.jsxs("tr",{onClick:()=>y(t),className:"border-t border-edge hover:bg-surface-alt cursor-pointer",children:[e.jsx("td",{className:"px-3 py-1.5 max-w-[200px] truncate",children:t.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:`${_[t.type]}20`,color:_[t.type]},children:t.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[t.status]}20`,color:L[t.status]},children:t.status.replace("_"," ")})}),e.jsx("td",{className:"px-3 py-1.5 text-center",children:t.priority}),e.jsx("td",{className:"px-3 py-1.5 text-center",children:t.xpSize||"-"}),e.jsx("td",{className:"px-3 py-1.5",children:t.sprint||"-"}),e.jsx("td",{className:"px-3 py-1.5 max-w-[150px] truncate text-muted",children:t.parentId?b.get(t.parentId)??"-":"-"})]},t.id))})]})}),n>1&&e.jsxs("div",{className:"flex items-center justify-between px-4 py-1.5 bg-surface-alt border-t border-edge text-xs 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:()=>r(t=>Math.max(0,t-1)),className:"px-2 py-0.5 rounded border border-edge disabled:opacity-30",children:"Prev"}),e.jsxs("span",{children:[p+1,"/",n]}),e.jsx("button",{disabled:p>=n-1,onClick:()=>r(t=>Math.min(n-1,t+1)),className:"px-2 py-0.5 rounded border border-edge disabled:opacity-30",children:"Next"})]})]})]})}),Te=["depends_on","blocks","parent_of","child_of","related_to","priority_over","implements","derived_from"];function Ee({fromId:l,toId:h,fromTitle:f,toTitle:y,onCreated:b,onCancel:m}){const[o,u]=s.useState("depends_on"),[c,i]=s.useState(""),[v,p]=s.useState(!1),[r,j]=s.useState(null),C=s.useCallback(async()=>{p(!0),j(null);try{await re.createEdge({from:l,to:h,relationType:o,reason:c.trim()||void 0}),b()}catch(n){j(n instanceof Error?n.message:"Failed to create edge")}finally{p(!1)}},[l,h,o,c,b]);return e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50",children:e.jsxs("div",{className:"bg-surface border border-edge 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-muted block mb-1",children:"From"}),e.jsx("div",{className:"text-xs bg-surface-elevated px-2 py-1.5 rounded truncate",children:f??l})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-muted block mb-1",children:"To"}),e.jsx("div",{className:"text-xs bg-surface-elevated px-2 py-1.5 rounded truncate",children:y??h})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-muted block mb-1",children:"Relation Type"}),e.jsx("select",{value:o,onChange:n=>u(n.target.value),className:"w-full text-xs px-2 py-1.5 rounded bg-surface-elevated border border-edge focus:outline-none focus:border-accent",children:Te.map(n=>{const S=Ce[n];return e.jsx("option",{value:n,children:S.label},n)})})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-muted block mb-1",children:"Reason (optional)"}),e.jsx("input",{type:"text",value:c,onChange:n=>i(n.target.value),placeholder:"Why this relationship exists...",className:"w-full text-xs px-2 py-1.5 rounded bg-surface-elevated border border-edge focus:outline-none focus:border-accent"})]}),r&&e.jsx("div",{className:"text-xs text-danger bg-surface-elevated px-2 py-1.5 rounded",children:r})]}),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-surface-elevated hover:bg-edge transition-colors",children:"Cancel"}),e.jsx("button",{onClick:C,disabled:v,className:"text-xs px-3 py-1.5 rounded bg-accent text-white font-medium disabled:opacity-50 hover:opacity-90 transition-opacity",children:v?"Creating...":"Create"})]})]})})}const Le={workflowNode:je},_e={workflowEdge:ge},Pe={hideAttribution:!0};function De({graph:l}){var R,F;const[h,f,y]=oe([]),[b,m,o]=de([]),[u,c]=s.useState(null),[i,v]=s.useState("TB"),[p,r]=s.useState(new Set),[j,C]=s.useState(new Set),[n,S]=s.useState(new Set),[k,T]=s.useState(null),t=s.useDeferredValue(p),g=s.useDeferredValue(j),w=s.useDeferredValue(i),E=s.useRef(null),N=s.useMemo(()=>ue(l.nodes,l.edges),[l.nodes,l.edges]),G=s.useMemo(()=>pe(l.nodes,N),[l.nodes,N]),P=s.useCallback(a=>{S(x=>{const d=new Set(x);return d.has(a)?d.delete(a):d.add(a),d})},[]),V=s.useCallback(()=>{const a=new Set;for(const[x]of N)a.add(x);S(a)},[N]),B=s.useCallback(()=>{S(new Set)},[]),M=s.useCallback((a,x,d)=>{const te=W(l.nodes,n,N),z=me(te,{statuses:a,types:x},N,n,P),D=z.map(ne=>ne.id);if(he(E.current,D)&&d===w)return;E.current=D;const ae=new Set(D),le=fe(l.edges,ae),O=be(z,le,d);f(O.nodes),m(O.edges)},[l,f,m,w,n,N,P]);s.useEffect(()=>{M(t,g,w)},[l,M,t,g,w]);const H=s.useCallback((a,x)=>{c(x.data.sourceNode)},[]),Y=s.useCallback(a=>{c(a)},[]),Z=s.useCallback(a=>{const x=l.nodes.find(d=>d.id===a);x&&c(x)},[l.nodes]),K=s.useCallback(a=>{const x=l.nodes.find(d=>d.id===a);x&&c(x)},[l.nodes]),U=s.useCallback(a=>{a.source&&a.target&&a.source!==a.target&&T({fromId:a.source,toId:a.target})},[]),q=s.useCallback(()=>{T(null)},[]),J=s.useCallback(a=>{r(x=>{const d=new Set(x);return d.has(a)?d.delete(a):d.add(a),d})},[]),Q=s.useCallback(a=>{C(x=>{const d=new Set(x);return d.has(a)?d.delete(a):d.add(a),d})},[]),X=s.useCallback(()=>{r(new Set),C(new Set)},[]),A=s.useMemo(()=>W(l.nodes,n,N).filter(x=>!(p.size&&!p.has(x.status)||j.size&&!j.has(x.type))),[l.nodes,n,N,p,j]),ee=k?(R=l.nodes.find(a=>a.id===k.fromId))==null?void 0:R.title:void 0,se=k?(F=l.nodes.find(a=>a.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:j,direction:i,onStatusToggle:J,onTypeToggle:Q,onDirectionChange:v,onClear:X,visibleNodeCount:A.length,totalNodeCount:l.nodes.length,onExpandAll:V,onCollapseAll:B}),e.jsxs("div",{className:"flex flex-1 min-h-0",children:[e.jsx(Se,{tree:G,expandedIds:n,selectedNodeId:(u==null?void 0:u.id)??null,onToggleExpand:P,onSelectNode:K}),e.jsx("div",{className:"flex-1 relative",children:l.nodes.length===0?e.jsx("div",{className:"flex items-center justify-center h-full 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(ce,{nodes:h,edges:b,onNodesChange:y,onEdgesChange:o,onNodeClick:H,onConnect:U,nodeTypes:Le,edgeTypes:_e,nodesDraggable:!1,nodesConnectable:!0,fitView:!0,minZoom:.1,maxZoom:2,proOptions:Pe,children:[e.jsx(ie,{gap:16,size:1}),e.jsx(xe,{showInteractive:!1})]})}),u&&e.jsx(Ne,{node:u,edges:l.edges,allNodes:l.nodes,childrenMap:N,onClose:()=>c(null),onNodeNavigate:Z})]}),e.jsx(we,{nodes:A,allNodes:l.nodes,onNodeClick:Y}),k&&e.jsx(Ee,{fromId:k.fromId,toId:k.toId,fromTitle:ee,toTitle:se,onCreated:q,onCancel:()=>T(null)})]})}function We({graph:l}){return e.jsx("div",{className:"h-full",children:e.jsx(De,{graph:l})})}export{We as GraphTab};
1
+ import{r as s,j as e,a as re}from"./index-DknXi6Cq.js";import{u as oe,a as de,i as ce,B as ie,C as xe}from"./style-FoeO1y9E.js";import{b as ue,a as pe,g as W,t as me,s as he,c as fe,d as be,W as ge,e as je,N as Ne}from"./graph-utils-C3ZvD-eu.js";import{A as ye,S as L,a as ve,N as _,E as Ce}from"./constants-lq4BIQN3.js";import"./index-CLbo-4nU.js";import"./index-LPQ6gwAy.js";const ke=s.memo(function({statuses:h,types:f,direction:y,onStatusToggle:b,onTypeToggle:m,onDirectionChange:o,onClear:u,visibleNodeCount:c,totalNodeCount:i,onExpandAll:v,onCollapseAll:p}){return e.jsxs("div",{className:"flex flex-wrap items-center gap-3 px-4 py-2 border-b border-edge bg-surface-alt text-xs",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"font-medium text-muted",children:"Status:"}),ye.map(r=>e.jsxs("label",{className:"flex items-center gap-1 cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:h.has(r),onChange:()=>b(r),className:"w-3 h-3"}),e.jsx("span",{className:"w-2 h-2 rounded-full inline-block",style:{background:L[r]}}),e.jsx("span",{children:r.replace("_"," ")})]},r))]}),e.jsx("div",{className:"w-px h-4 bg-edge"}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"font-medium text-muted",children:"Type:"}),ve.map(r=>e.jsxs("label",{className:"flex items-center gap-1 cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:f.has(r),onChange:()=>m(r),className:"w-3 h-3"}),e.jsx("span",{className:"w-2 h-2 rounded-full inline-block",style:{background:_[r]}}),e.jsx("span",{children:r.replace("_"," ")})]},r))]}),e.jsx("div",{className:"w-px h-4 bg-edge"}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"font-medium text-muted",children:"Layout:"}),e.jsxs("select",{value:y,onChange:r=>o(r.target.value),className:"bg-surface border border-edge 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-edge"}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("button",{onClick:v,className:"px-2 py-0.5 rounded border border-edge hover:bg-surface-elevated 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-edge hover:bg-surface-elevated transition-colors",children:"Collapse All"})]}),e.jsx("div",{className:"w-px h-4 bg-edge"}),e.jsxs("span",{className:"text-muted",children:["Showing ",c," of ",i]}),e.jsx("button",{onClick:u,className:"text-muted hover:text-foreground underline",children:"Clear"})]})}),Se=s.memo(function({tree:h,expandedIds:f,selectedNodeId:y,onToggleExpand:b,onSelectNode:m}){const[o,u]=s.useState(!1),c=s.useCallback(()=>u(i=>!i),[]);return o?e.jsx("div",{className:"w-8 border-r border-edge bg-surface-alt flex flex-col items-center pt-2",children:e.jsx("button",{onClick:c,className:"text-xs text-muted hover:text-foreground p-1",title:"Show tree panel",children:"▸"})}):e.jsxs("div",{className:"w-64 border-r border-edge bg-surface-alt flex flex-col min-h-0",children:[e.jsxs("div",{className:"flex items-center justify-between px-3 py-2 border-b border-edge",children:[e.jsx("span",{className:"text-xs font-medium text-muted",children:"Hierarchy"}),e.jsx("button",{onClick:c,className:"text-xs text-muted hover:text-foreground",title:"Collapse panel",children:"◂"})]}),e.jsx("div",{className:"overflow-y-auto flex-1 py-1",children:h.length===0?e.jsx("div",{className:"px-3 py-4 text-xs text-muted text-center",children:"No nodes"}):h.map(i=>e.jsx($,{item:i,depth:0,expandedIds:f,selectedNodeId:y,onToggleExpand:b,onSelectNode:m},i.node.id))})]})});function $({item:l,depth:h,expandedIds:f,selectedNodeId:y,onToggleExpand:b,onSelectNode:m}){const{node:o,children:u}=l,c=f.has(o.id),i=y===o.id,v=u.length>0,p=L[o.status]||"#9e9e9e",r=_[o.type]||"#6c757d",j=s.useCallback(n=>{n.stopPropagation(),b(o.id)},[o.id,b]),C=s.useCallback(()=>{m(o.id)},[o.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-surface-elevated transition-colors ${i?"bg-surface-elevated font-semibold":""}`,style:{paddingLeft:`${h*16+8}px`},children:[v?e.jsx("span",{onClick:j,className:"w-4 text-center text-muted hover:text-foreground cursor-pointer shrink-0",children:c?"▾":"▸"}):e.jsx("span",{className:"w-4 shrink-0"}),e.jsx("span",{className:"w-2 h-2 rounded-full shrink-0",style:{background:p},title:o.status.replace("_"," ")}),e.jsx("span",{className:"text-[9px] px-1 rounded shrink-0",style:{background:`${r}20`,color:r},children:o.type.slice(0,3)}),e.jsx("span",{className:"truncate",children:o.title}),v&&e.jsx("span",{className:"text-[9px] text-muted ml-auto shrink-0",children:u.length})]}),c&&u.map(n=>e.jsx($,{item:n,depth:h+1,expandedIds:f,selectedNodeId:y,onToggleExpand:b,onSelectNode:m},n.node.id))]})}const I=50,we=s.memo(function({nodes:h,allNodes:f=[],onNodeClick:y}){const b=s.useMemo(()=>{const t=new Map;for(const g of f)t.set(g.id,g.title);return t},[f]),[m,o]=s.useState("priority"),[u,c]=s.useState("asc"),[i,v]=s.useState(""),[p,r]=s.useState(0),j=s.useMemo(()=>{if(!i)return h;const t=i.toLowerCase();return h.filter(g=>g.title.toLowerCase().includes(t)||g.type.toLowerCase().includes(t)||g.status.toLowerCase().includes(t)||(g.sprint||"").toLowerCase().includes(t))},[h,i]),C=s.useMemo(()=>[...j].sort((t,g)=>{const w=t[m]??"",E=g[m]??"",N=typeof w=="number"?w-E:String(w).localeCompare(String(E));return u==="asc"?N:-N}),[j,m,u]),n=Math.max(1,Math.ceil(C.length/I)),S=s.useMemo(()=>C.slice(p*I,(p+1)*I),[C,p]),k=t=>{m===t?c(g=>g==="asc"?"desc":"asc"):(o(t),c("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-edge",children:[e.jsx("div",{className:"px-4 py-2 bg-surface-alt",children:e.jsx("input",{type:"text",placeholder:"Search nodes...",value:i,onChange:t=>v(t.target.value),className:"w-full max-w-xs px-2 py-1 text-sm border border-edge rounded bg-surface"})}),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-surface-elevated",children:T.map(t=>e.jsxs("th",{onClick:()=>k(t.key),className:"px-3 py-1.5 text-left text-xs font-medium text-muted cursor-pointer hover:text-foreground",children:[t.label,m===t.key&&(u==="asc"?" ↑":" ↓")]},t.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-muted",children:"No nodes found"})}):S.map(t=>e.jsxs("tr",{onClick:()=>y(t),className:"border-t border-edge hover:bg-surface-alt cursor-pointer",children:[e.jsx("td",{className:"px-3 py-1.5 max-w-[200px] truncate",children:t.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:`${_[t.type]}20`,color:_[t.type]},children:t.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[t.status]}20`,color:L[t.status]},children:t.status.replace("_"," ")})}),e.jsx("td",{className:"px-3 py-1.5 text-center",children:t.priority}),e.jsx("td",{className:"px-3 py-1.5 text-center",children:t.xpSize||"-"}),e.jsx("td",{className:"px-3 py-1.5",children:t.sprint||"-"}),e.jsx("td",{className:"px-3 py-1.5 max-w-[150px] truncate text-muted",children:t.parentId?b.get(t.parentId)??"-":"-"})]},t.id))})]})}),n>1&&e.jsxs("div",{className:"flex items-center justify-between px-4 py-1.5 bg-surface-alt border-t border-edge text-xs 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:()=>r(t=>Math.max(0,t-1)),className:"px-2 py-0.5 rounded border border-edge disabled:opacity-30",children:"Prev"}),e.jsxs("span",{children:[p+1,"/",n]}),e.jsx("button",{disabled:p>=n-1,onClick:()=>r(t=>Math.min(n-1,t+1)),className:"px-2 py-0.5 rounded border border-edge disabled:opacity-30",children:"Next"})]})]})]})}),Te=["depends_on","blocks","parent_of","child_of","related_to","priority_over","implements","derived_from"];function Ee({fromId:l,toId:h,fromTitle:f,toTitle:y,onCreated:b,onCancel:m}){const[o,u]=s.useState("depends_on"),[c,i]=s.useState(""),[v,p]=s.useState(!1),[r,j]=s.useState(null),C=s.useCallback(async()=>{p(!0),j(null);try{await re.createEdge({from:l,to:h,relationType:o,reason:c.trim()||void 0}),b()}catch(n){j(n instanceof Error?n.message:"Failed to create edge")}finally{p(!1)}},[l,h,o,c,b]);return e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50",children:e.jsxs("div",{className:"bg-surface border border-edge 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-muted block mb-1",children:"From"}),e.jsx("div",{className:"text-xs bg-surface-elevated px-2 py-1.5 rounded truncate",children:f??l})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-muted block mb-1",children:"To"}),e.jsx("div",{className:"text-xs bg-surface-elevated px-2 py-1.5 rounded truncate",children:y??h})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-muted block mb-1",children:"Relation Type"}),e.jsx("select",{value:o,onChange:n=>u(n.target.value),className:"w-full text-xs px-2 py-1.5 rounded bg-surface-elevated border border-edge focus:outline-none focus:border-accent",children:Te.map(n=>{const S=Ce[n];return e.jsx("option",{value:n,children:S.label},n)})})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-muted block mb-1",children:"Reason (optional)"}),e.jsx("input",{type:"text",value:c,onChange:n=>i(n.target.value),placeholder:"Why this relationship exists...",className:"w-full text-xs px-2 py-1.5 rounded bg-surface-elevated border border-edge focus:outline-none focus:border-accent"})]}),r&&e.jsx("div",{className:"text-xs text-danger bg-surface-elevated px-2 py-1.5 rounded",children:r})]}),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-surface-elevated hover:bg-edge transition-colors",children:"Cancel"}),e.jsx("button",{onClick:C,disabled:v,className:"text-xs px-3 py-1.5 rounded bg-accent text-white font-medium disabled:opacity-50 hover:opacity-90 transition-opacity",children:v?"Creating...":"Create"})]})]})})}const Le={workflowNode:je},_e={workflowEdge:ge},Pe={hideAttribution:!0};function De({graph:l}){var R,F;const[h,f,y]=oe([]),[b,m,o]=de([]),[u,c]=s.useState(null),[i,v]=s.useState("TB"),[p,r]=s.useState(new Set),[j,C]=s.useState(new Set),[n,S]=s.useState(new Set),[k,T]=s.useState(null),t=s.useDeferredValue(p),g=s.useDeferredValue(j),w=s.useDeferredValue(i),E=s.useRef(null),N=s.useMemo(()=>ue(l.nodes,l.edges),[l.nodes,l.edges]),G=s.useMemo(()=>pe(l.nodes,N),[l.nodes,N]),P=s.useCallback(a=>{S(x=>{const d=new Set(x);return d.has(a)?d.delete(a):d.add(a),d})},[]),V=s.useCallback(()=>{const a=new Set;for(const[x]of N)a.add(x);S(a)},[N]),B=s.useCallback(()=>{S(new Set)},[]),M=s.useCallback((a,x,d)=>{const te=W(l.nodes,n,N),z=me(te,{statuses:a,types:x},N,n,P),D=z.map(ne=>ne.id);if(he(E.current,D)&&d===w)return;E.current=D;const ae=new Set(D),le=fe(l.edges,ae),O=be(z,le,d);f(O.nodes),m(O.edges)},[l,f,m,w,n,N,P]);s.useEffect(()=>{M(t,g,w)},[l,M,t,g,w]);const H=s.useCallback((a,x)=>{c(x.data.sourceNode)},[]),Y=s.useCallback(a=>{c(a)},[]),Z=s.useCallback(a=>{const x=l.nodes.find(d=>d.id===a);x&&c(x)},[l.nodes]),K=s.useCallback(a=>{const x=l.nodes.find(d=>d.id===a);x&&c(x)},[l.nodes]),U=s.useCallback(a=>{a.source&&a.target&&a.source!==a.target&&T({fromId:a.source,toId:a.target})},[]),q=s.useCallback(()=>{T(null)},[]),J=s.useCallback(a=>{r(x=>{const d=new Set(x);return d.has(a)?d.delete(a):d.add(a),d})},[]),Q=s.useCallback(a=>{C(x=>{const d=new Set(x);return d.has(a)?d.delete(a):d.add(a),d})},[]),X=s.useCallback(()=>{r(new Set),C(new Set)},[]),A=s.useMemo(()=>W(l.nodes,n,N).filter(x=>!(p.size&&!p.has(x.status)||j.size&&!j.has(x.type))),[l.nodes,n,N,p,j]),ee=k?(R=l.nodes.find(a=>a.id===k.fromId))==null?void 0:R.title:void 0,se=k?(F=l.nodes.find(a=>a.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:j,direction:i,onStatusToggle:J,onTypeToggle:Q,onDirectionChange:v,onClear:X,visibleNodeCount:A.length,totalNodeCount:l.nodes.length,onExpandAll:V,onCollapseAll:B}),e.jsxs("div",{className:"flex flex-1 min-h-0",children:[e.jsx(Se,{tree:G,expandedIds:n,selectedNodeId:(u==null?void 0:u.id)??null,onToggleExpand:P,onSelectNode:K}),e.jsx("div",{className:"flex-1 relative",children:l.nodes.length===0?e.jsx("div",{className:"flex items-center justify-center h-full 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(ce,{nodes:h,edges:b,onNodesChange:y,onEdgesChange:o,onNodeClick:H,onConnect:U,nodeTypes:Le,edgeTypes:_e,nodesDraggable:!1,nodesConnectable:!0,fitView:!0,minZoom:.1,maxZoom:2,proOptions:Pe,children:[e.jsx(ie,{gap:16,size:1}),e.jsx(xe,{showInteractive:!1})]})}),u&&e.jsx(Ne,{node:u,edges:l.edges,allNodes:l.nodes,childrenMap:N,onClose:()=>c(null),onNodeNavigate:Z})]}),e.jsx(we,{nodes:A,allNodes:l.nodes,onNodeClick:Y}),k&&e.jsx(Ee,{fromId:k.fromId,toId:k.toId,fromTitle:ee,toTitle:se,onCreated:q,onCancel:()=>T(null)})]})}function We({graph:l}){return e.jsx("div",{className:"h-full",children:e.jsx(De,{graph:l})})}export{We as GraphTab};
@@ -1 +1 @@
1
- import{r as b,j as t}from"./index-Co7yktBf.js";import{H as v,P as k,g as L,c as _,E as P}from"./style-Ci_RUKMJ.js";import{N as j,S as N,E as h}from"./constants-lq4BIQN3.js";import{d as C}from"./index-Clwhz2ad.js";function H(a,e){const r=new Map,i=(s,o)=>{let u=r.get(s);u||(u=new Set,r.set(s,u)),u.add(o)};for(const s of a)s.parentId&&i(s.parentId,s.id);for(const s of e)s.relationType==="parent_of"?i(s.from,s.to):s.relationType==="child_of"&&i(s.to,s.from);const d=new Map;for(const[s,o]of r)d.set(s,[...o]);return d}function A(a,e,r){const i=new Map,d=new Set;for(const n of a)i.set(n.id,n),d.add(n.id);const s=a.filter(n=>!n.parentId||!d.has(n.parentId)),o=[],u=new Set,l=n=>{if(u.has(n))return;u.add(n);const m=i.get(n);if(m&&o.push(m),e.has(n)){const f=r.get(n)??[];for(const c of f)l(c)}};for(const n of s)l(n.id);return o}function B(a,e){if(a.length===0)return[];const r=new Map,i=new Set;for(const l of a)r.set(l.id,l),i.add(l.id);const d=(l,n)=>{if(n.has(l))return null;n.add(l);const m=r.get(l);if(!m)return null;const f=e.get(l)??[],c=[];for(const p of f){const x=d(p,n);x&&c.push(x)}return{node:m,children:c}},s=a.filter(l=>!l.parentId||!i.has(l.parentId)),o=new Set,u=[];for(const l of s){const n=d(l.id,o);n&&u.push(n)}return u}const F=b.memo(function({data:e}){const r=j[e.nodeType]||"#6c757d",i=N[e.status]||"#9e9e9e",d=b.useCallback(s=>{var o;s.stopPropagation(),(o=e.onExpand)==null||o.call(e,e.sourceNode.id)},[e]);return t.jsxs(t.Fragment,{children:[t.jsx(v,{type:"target",position:k.Top,className:"!w-2 !h-2"}),t.jsxs("div",{className:"bg-surface border border-edge rounded-lg shadow-sm hover:shadow-md transition-shadow cursor-pointer min-w-[200px]",children:[t.jsxs("div",{className:"p-2.5",children:[t.jsxs("div",{className:"flex items-center justify-between mb-1",children:[t.jsx("span",{className:"text-[10px] font-semibold uppercase px-1.5 py-0.5 rounded",style:{background:`${r}20`,color:r},children:e.nodeType}),t.jsx("span",{className:"text-[10px] font-medium px-1.5 py-0.5 rounded-full",style:{background:`${i}20`,color:i},children:e.status.replace("_"," ")})]}),t.jsx("div",{className:"text-sm font-medium leading-tight line-clamp-2 mb-1",children:e.label}),t.jsxs("div",{className:"flex items-center gap-2 text-[10px] text-muted",children:[t.jsxs("span",{children:["P",e.priority]}),e.xpSize&&t.jsx("span",{children:e.xpSize}),e.sprint&&t.jsx("span",{children:e.sprint})]})]}),e.hasChildren&&t.jsxs("button",{onClick:d,className:"w-full flex items-center justify-center gap-1.5 py-1.5 text-xs font-medium border-t border-edge text-muted hover:text-foreground hover:bg-surface-elevated transition-colors rounded-b-lg",title:e.isExpanded?"Collapse children":"Expand children",children:[t.jsx("span",{children:e.isExpanded?"▼":"▶"}),t.jsxs("span",{children:[e.childCount," ",e.childCount===1?"child":"children"]})]})]}),t.jsx(v,{type:"source",position:k.Bottom,className:"!w-2 !h-2"})]})}),G=b.memo(function({id:e,sourceX:r,sourceY:i,targetX:d,targetY:s,sourcePosition:o,targetPosition:u,data:l,style:n={}}){const[m,f,c]=L({sourceX:r,sourceY:i,sourcePosition:o,targetX:d,targetY:s,targetPosition:u}),p=(l==null?void 0:l.relationType)||"related_to",x=h[p]||h.related_to;return t.jsxs(t.Fragment,{children:[t.jsx(_,{id:e,path:m,style:{...n,stroke:x.color,strokeDasharray:x.dashed?"5 5":void 0,strokeWidth:1.5}}),t.jsx(P,{children:t.jsx("div",{className:"text-[9px] text-muted bg-surface px-1 rounded pointer-events-none absolute",style:{transform:`translate(-50%, -50%) translate(${f}px,${c}px)`},children:x.label})})]})});function R(a,e){const r=[],i=[];for(const d of e)d.from===a&&r.push(d),d.to===a&&i.push(d);return{outgoing:r,incoming:i}}const Y=b.memo(function({node:e,edges:r=[],allNodes:i=[],childrenMap:d,onClose:s,onNodeNavigate:o}){if(!e)return null;const u=j[e.type]||"#6c757d",l=N[e.status]||"#9e9e9e",n=b.useMemo(()=>R(e.id,r),[e.id,r]),m=b.useMemo(()=>{const c=new Map;for(const p of i)c.set(p.id,p);return c},[i]),f=n.outgoing.length>0||n.incoming.length>0;return t.jsxs("div",{className:"w-80 border-l border-edge bg-surface-alt overflow-y-auto p-4",children:[t.jsxs("div",{className:"flex items-center justify-between mb-3",children:[t.jsx("h3",{className:"text-sm font-bold",children:"Node Details"}),t.jsx("button",{onClick:s,className:"text-muted hover:text-foreground text-lg leading-none",children:"×"})]}),t.jsx("h4",{className:"text-base font-semibold mb-3",children:e.title}),t.jsxs("div",{className:"space-y-2 text-sm",children:[t.jsx(g,{label:"ID",children:t.jsx("code",{className:"text-xs bg-surface-elevated px-1 rounded break-all",children:e.id})}),t.jsx(g,{label:"Type",children:t.jsx("span",{className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:`${u}20`,color:u},children:e.type})}),t.jsx(g,{label:"Status",children:t.jsx("span",{className:"px-2 py-0.5 rounded-full text-xs font-medium",style:{background:`${l}20`,color:l},children:e.status.replace("_"," ")})}),t.jsxs(g,{label:"Priority",children:["P",e.priority]}),e.xpSize&&t.jsx(g,{label:"Size",children:e.xpSize}),e.estimateMinutes!=null&&t.jsxs(g,{label:"Estimate",children:[e.estimateMinutes,"min"]}),e.sprint&&t.jsx(g,{label:"Sprint",children:e.sprint}),e.description&&t.jsxs("div",{className:"pt-2 border-t border-edge",children:[t.jsx("div",{className:"text-xs font-medium text-muted mb-1",children:"Description"}),t.jsx("p",{className:"text-xs whitespace-pre-wrap",children:e.description})]}),d&&(()=>{const c=d.get(e.id)??[];return c.length===0?null:t.jsxs("div",{className:"pt-2 border-t border-edge",children:[t.jsxs("div",{className:"text-xs font-medium text-muted mb-1",children:["Children (",c.length,")"]}),t.jsx("div",{className:"space-y-1",children:c.map(p=>{const x=m.get(p);if(!x)return null;const D=N[x.status]||"#9e9e9e",S=j[x.type]||"#6c757d";return t.jsxs("button",{onClick:()=>o==null?void 0:o(p),className:"w-full text-left flex items-center gap-1.5 px-1.5 py-1 rounded hover:bg-surface-elevated transition-colors text-xs",children:[t.jsx("span",{className:"w-2 h-2 rounded-full shrink-0",style:{background:D}}),t.jsx("span",{className:"text-[9px] px-1 rounded shrink-0",style:{background:`${S}20`,color:S},children:x.type}),t.jsx("span",{className:"truncate font-medium",children:x.title})]},p)})})]})})(),f&&t.jsxs("div",{className:"pt-2 border-t border-edge",children:[t.jsxs("div",{className:"text-xs font-medium text-muted mb-1",children:["Relationships (",n.outgoing.length+n.incoming.length,")"]}),t.jsxs("div",{className:"space-y-1",children:[n.outgoing.map(c=>{const p=m.get(c.to),x=h[c.relationType]||h.related_to;return t.jsx(E,{direction:"out",label:x.label,color:x.color,targetTitle:(p==null?void 0:p.title)??c.to,targetId:c.to,onNavigate:o},c.id)}),n.incoming.map(c=>{const p=m.get(c.from),x=h[c.relationType]||h.related_to;return t.jsx(E,{direction:"in",label:x.label,color:x.color,targetTitle:(p==null?void 0:p.title)??c.from,targetId:c.from,onNavigate:o},c.id)})]})]}),e.acceptanceCriteria&&e.acceptanceCriteria.length>0&&t.jsxs("div",{className:"pt-2 border-t border-edge",children:[t.jsxs("div",{className:"text-xs font-medium text-muted mb-1",children:["Acceptance Criteria (",e.acceptanceCriteria.length,")"]}),t.jsx("ul",{className:"text-xs space-y-1 list-disc pl-4",children:e.acceptanceCriteria.map((c,p)=>t.jsx("li",{children:c},p))})]}),e.tags&&e.tags.length>0&&t.jsxs("div",{className:"pt-2 border-t border-edge",children:[t.jsx("div",{className:"text-xs font-medium text-muted mb-1",children:"Tags"}),t.jsx("div",{className:"flex flex-wrap gap-1",children:e.tags.map(c=>t.jsx("span",{className:"text-[10px] bg-surface-elevated px-1.5 py-0.5 rounded",children:c},c))})]}),e.sourceRef&&t.jsxs("div",{className:"pt-2 border-t border-edge",children:[t.jsx("div",{className:"text-xs font-medium text-muted mb-1",children:"Source"}),t.jsxs("div",{className:"text-xs",children:[e.sourceRef.file,e.sourceRef.startLine!=null&&` (L${e.sourceRef.startLine}–${e.sourceRef.endLine??"?"})`]})]}),t.jsxs("div",{className:"pt-2 border-t border-edge text-[10px] text-muted",children:[t.jsxs("div",{children:["Created: ",new Date(e.createdAt).toLocaleString()]}),t.jsxs("div",{children:["Updated: ",new Date(e.updatedAt).toLocaleString()]})]})]})]})});function g({label:a,children:e}){return t.jsxs("div",{className:"flex items-start justify-between gap-2",children:[t.jsx("span",{className:"text-xs text-muted shrink-0",children:a}),t.jsx("div",{className:"text-right",children:e})]})}function E({direction:a,label:e,color:r,targetTitle:i,targetId:d,onNavigate:s}){const o=a==="out"?"→":"←";return t.jsxs("button",{onClick:()=>s==null?void 0:s(d),className:"w-full text-left flex items-center gap-1.5 px-1.5 py-1 rounded hover:bg-surface-elevated transition-colors text-xs",children:[t.jsx("span",{style:{color:r},children:o}),t.jsx("span",{className:"text-[10px] text-muted",children:e}),t.jsx("span",{className:"truncate font-medium",children:i})]})}const w=240,T=80;function K(a,e,r,i,d){return a.filter(s=>{var o,u;return!((o=e==null?void 0:e.statuses)!=null&&o.size&&!e.statuses.has(s.status)||(u=e==null?void 0:e.types)!=null&&u.size&&!e.types.has(s.type))}).map(s=>{const o=r==null?void 0:r.get(s.id),u=o!=null&&o.length>0;return{id:s.id,type:"workflowNode",position:{x:0,y:0},data:{label:s.title,nodeType:s.type,status:s.status,priority:s.priority,xpSize:s.xpSize,sprint:s.sprint,sourceNode:s,hasChildren:u,isExpanded:(i==null?void 0:i.has(s.id))??!1,childCount:(o==null?void 0:o.length)??0,onExpand:d},style:{width:w,borderLeft:`4px solid ${j[s.type]||"#6c757d"}`}}})}function U(a,e){return a.filter(r=>e.has(r.from)&&e.has(r.to)).map(r=>{const i=h[r.relationType]||h.related_to;return{id:r.id,source:r.from,target:r.to,label:i.label,type:"workflowEdge",data:{relationType:r.relationType},style:{stroke:i.color,strokeDasharray:i.dashed?"5 5":void 0},labelStyle:{fontSize:10,fill:"#6c757d"}}})}function $(a,e,r){let i=0;const d=[r,...a,"|",...e];for(const s of d)for(let o=0;o<s.length;o++)i=(i<<5)-i+s.charCodeAt(o)|0;return i}function V(a,e){if(a===null||a.length!==e.length)return!1;for(let r=0;r<a.length;r++)if(a[r]!==e[r])return!1;return!0}let y=null;function X(a,e,r="TB"){const i=a.map(l=>l.id),d=e.map(l=>`${l.source}-${l.target}`),s=$(i,d,r);let o;if(y&&y.key===s)o=y.positions;else{const l=new C.graphlib.Graph;l.setDefaultEdgeLabel(()=>({})),l.setGraph({rankdir:r,ranksep:60,nodesep:40});for(const n of a)l.setNode(n.id,{width:w,height:T});for(const n of e)l.setEdge(n.source,n.target);C.layout(l),o=new Map;for(const n of a){const m=l.node(n.id);o.set(n.id,{x:m.x-w/2,y:m.y-T/2})}y={key:s,positions:o}}return{nodes:a.map(l=>{const n=o.get(l.id)??{x:0,y:0};return{...l,position:n}}),edges:e}}export{Y as N,G as W,B as a,H as b,U as c,X as d,F as e,A as g,V as s,K as t};
1
+ import{r as b,j as t}from"./index-DknXi6Cq.js";import{H as v,P as k,g as L,c as _,E as P}from"./style-FoeO1y9E.js";import{N as j,S as N,E as h}from"./constants-lq4BIQN3.js";import{d as C}from"./index-LPQ6gwAy.js";function H(a,e){const r=new Map,i=(s,o)=>{let u=r.get(s);u||(u=new Set,r.set(s,u)),u.add(o)};for(const s of a)s.parentId&&i(s.parentId,s.id);for(const s of e)s.relationType==="parent_of"?i(s.from,s.to):s.relationType==="child_of"&&i(s.to,s.from);const d=new Map;for(const[s,o]of r)d.set(s,[...o]);return d}function A(a,e,r){const i=new Map,d=new Set;for(const n of a)i.set(n.id,n),d.add(n.id);const s=a.filter(n=>!n.parentId||!d.has(n.parentId)),o=[],u=new Set,l=n=>{if(u.has(n))return;u.add(n);const m=i.get(n);if(m&&o.push(m),e.has(n)){const f=r.get(n)??[];for(const c of f)l(c)}};for(const n of s)l(n.id);return o}function B(a,e){if(a.length===0)return[];const r=new Map,i=new Set;for(const l of a)r.set(l.id,l),i.add(l.id);const d=(l,n)=>{if(n.has(l))return null;n.add(l);const m=r.get(l);if(!m)return null;const f=e.get(l)??[],c=[];for(const p of f){const x=d(p,n);x&&c.push(x)}return{node:m,children:c}},s=a.filter(l=>!l.parentId||!i.has(l.parentId)),o=new Set,u=[];for(const l of s){const n=d(l.id,o);n&&u.push(n)}return u}const F=b.memo(function({data:e}){const r=j[e.nodeType]||"#6c757d",i=N[e.status]||"#9e9e9e",d=b.useCallback(s=>{var o;s.stopPropagation(),(o=e.onExpand)==null||o.call(e,e.sourceNode.id)},[e]);return t.jsxs(t.Fragment,{children:[t.jsx(v,{type:"target",position:k.Top,className:"!w-2 !h-2"}),t.jsxs("div",{className:"bg-surface border border-edge rounded-lg shadow-sm hover:shadow-md transition-shadow cursor-pointer min-w-[200px]",children:[t.jsxs("div",{className:"p-2.5",children:[t.jsxs("div",{className:"flex items-center justify-between mb-1",children:[t.jsx("span",{className:"text-[10px] font-semibold uppercase px-1.5 py-0.5 rounded",style:{background:`${r}20`,color:r},children:e.nodeType}),t.jsx("span",{className:"text-[10px] font-medium px-1.5 py-0.5 rounded-full",style:{background:`${i}20`,color:i},children:e.status.replace("_"," ")})]}),t.jsx("div",{className:"text-sm font-medium leading-tight line-clamp-2 mb-1",children:e.label}),t.jsxs("div",{className:"flex items-center gap-2 text-[10px] text-muted",children:[t.jsxs("span",{children:["P",e.priority]}),e.xpSize&&t.jsx("span",{children:e.xpSize}),e.sprint&&t.jsx("span",{children:e.sprint})]})]}),e.hasChildren&&t.jsxs("button",{onClick:d,className:"w-full flex items-center justify-center gap-1.5 py-1.5 text-xs font-medium border-t border-edge text-muted hover:text-foreground hover:bg-surface-elevated transition-colors rounded-b-lg",title:e.isExpanded?"Collapse children":"Expand children",children:[t.jsx("span",{children:e.isExpanded?"▼":"▶"}),t.jsxs("span",{children:[e.childCount," ",e.childCount===1?"child":"children"]})]})]}),t.jsx(v,{type:"source",position:k.Bottom,className:"!w-2 !h-2"})]})}),G=b.memo(function({id:e,sourceX:r,sourceY:i,targetX:d,targetY:s,sourcePosition:o,targetPosition:u,data:l,style:n={}}){const[m,f,c]=L({sourceX:r,sourceY:i,sourcePosition:o,targetX:d,targetY:s,targetPosition:u}),p=(l==null?void 0:l.relationType)||"related_to",x=h[p]||h.related_to;return t.jsxs(t.Fragment,{children:[t.jsx(_,{id:e,path:m,style:{...n,stroke:x.color,strokeDasharray:x.dashed?"5 5":void 0,strokeWidth:1.5}}),t.jsx(P,{children:t.jsx("div",{className:"text-[9px] text-muted bg-surface px-1 rounded pointer-events-none absolute",style:{transform:`translate(-50%, -50%) translate(${f}px,${c}px)`},children:x.label})})]})});function R(a,e){const r=[],i=[];for(const d of e)d.from===a&&r.push(d),d.to===a&&i.push(d);return{outgoing:r,incoming:i}}const Y=b.memo(function({node:e,edges:r=[],allNodes:i=[],childrenMap:d,onClose:s,onNodeNavigate:o}){if(!e)return null;const u=j[e.type]||"#6c757d",l=N[e.status]||"#9e9e9e",n=b.useMemo(()=>R(e.id,r),[e.id,r]),m=b.useMemo(()=>{const c=new Map;for(const p of i)c.set(p.id,p);return c},[i]),f=n.outgoing.length>0||n.incoming.length>0;return t.jsxs("div",{className:"w-80 border-l border-edge bg-surface-alt overflow-y-auto p-4",children:[t.jsxs("div",{className:"flex items-center justify-between mb-3",children:[t.jsx("h3",{className:"text-sm font-bold",children:"Node Details"}),t.jsx("button",{onClick:s,className:"text-muted hover:text-foreground text-lg leading-none",children:"×"})]}),t.jsx("h4",{className:"text-base font-semibold mb-3",children:e.title}),t.jsxs("div",{className:"space-y-2 text-sm",children:[t.jsx(g,{label:"ID",children:t.jsx("code",{className:"text-xs bg-surface-elevated px-1 rounded break-all",children:e.id})}),t.jsx(g,{label:"Type",children:t.jsx("span",{className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:`${u}20`,color:u},children:e.type})}),t.jsx(g,{label:"Status",children:t.jsx("span",{className:"px-2 py-0.5 rounded-full text-xs font-medium",style:{background:`${l}20`,color:l},children:e.status.replace("_"," ")})}),t.jsxs(g,{label:"Priority",children:["P",e.priority]}),e.xpSize&&t.jsx(g,{label:"Size",children:e.xpSize}),e.estimateMinutes!=null&&t.jsxs(g,{label:"Estimate",children:[e.estimateMinutes,"min"]}),e.sprint&&t.jsx(g,{label:"Sprint",children:e.sprint}),e.description&&t.jsxs("div",{className:"pt-2 border-t border-edge",children:[t.jsx("div",{className:"text-xs font-medium text-muted mb-1",children:"Description"}),t.jsx("p",{className:"text-xs whitespace-pre-wrap",children:e.description})]}),d&&(()=>{const c=d.get(e.id)??[];return c.length===0?null:t.jsxs("div",{className:"pt-2 border-t border-edge",children:[t.jsxs("div",{className:"text-xs font-medium text-muted mb-1",children:["Children (",c.length,")"]}),t.jsx("div",{className:"space-y-1",children:c.map(p=>{const x=m.get(p);if(!x)return null;const D=N[x.status]||"#9e9e9e",S=j[x.type]||"#6c757d";return t.jsxs("button",{onClick:()=>o==null?void 0:o(p),className:"w-full text-left flex items-center gap-1.5 px-1.5 py-1 rounded hover:bg-surface-elevated transition-colors text-xs",children:[t.jsx("span",{className:"w-2 h-2 rounded-full shrink-0",style:{background:D}}),t.jsx("span",{className:"text-[9px] px-1 rounded shrink-0",style:{background:`${S}20`,color:S},children:x.type}),t.jsx("span",{className:"truncate font-medium",children:x.title})]},p)})})]})})(),f&&t.jsxs("div",{className:"pt-2 border-t border-edge",children:[t.jsxs("div",{className:"text-xs font-medium text-muted mb-1",children:["Relationships (",n.outgoing.length+n.incoming.length,")"]}),t.jsxs("div",{className:"space-y-1",children:[n.outgoing.map(c=>{const p=m.get(c.to),x=h[c.relationType]||h.related_to;return t.jsx(E,{direction:"out",label:x.label,color:x.color,targetTitle:(p==null?void 0:p.title)??c.to,targetId:c.to,onNavigate:o},c.id)}),n.incoming.map(c=>{const p=m.get(c.from),x=h[c.relationType]||h.related_to;return t.jsx(E,{direction:"in",label:x.label,color:x.color,targetTitle:(p==null?void 0:p.title)??c.from,targetId:c.from,onNavigate:o},c.id)})]})]}),e.acceptanceCriteria&&e.acceptanceCriteria.length>0&&t.jsxs("div",{className:"pt-2 border-t border-edge",children:[t.jsxs("div",{className:"text-xs font-medium text-muted mb-1",children:["Acceptance Criteria (",e.acceptanceCriteria.length,")"]}),t.jsx("ul",{className:"text-xs space-y-1 list-disc pl-4",children:e.acceptanceCriteria.map((c,p)=>t.jsx("li",{children:c},p))})]}),e.tags&&e.tags.length>0&&t.jsxs("div",{className:"pt-2 border-t border-edge",children:[t.jsx("div",{className:"text-xs font-medium text-muted mb-1",children:"Tags"}),t.jsx("div",{className:"flex flex-wrap gap-1",children:e.tags.map(c=>t.jsx("span",{className:"text-[10px] bg-surface-elevated px-1.5 py-0.5 rounded",children:c},c))})]}),e.sourceRef&&t.jsxs("div",{className:"pt-2 border-t border-edge",children:[t.jsx("div",{className:"text-xs font-medium text-muted mb-1",children:"Source"}),t.jsxs("div",{className:"text-xs",children:[e.sourceRef.file,e.sourceRef.startLine!=null&&` (L${e.sourceRef.startLine}–${e.sourceRef.endLine??"?"})`]})]}),t.jsxs("div",{className:"pt-2 border-t border-edge text-[10px] text-muted",children:[t.jsxs("div",{children:["Created: ",new Date(e.createdAt).toLocaleString()]}),t.jsxs("div",{children:["Updated: ",new Date(e.updatedAt).toLocaleString()]})]})]})]})});function g({label:a,children:e}){return t.jsxs("div",{className:"flex items-start justify-between gap-2",children:[t.jsx("span",{className:"text-xs text-muted shrink-0",children:a}),t.jsx("div",{className:"text-right",children:e})]})}function E({direction:a,label:e,color:r,targetTitle:i,targetId:d,onNavigate:s}){const o=a==="out"?"→":"←";return t.jsxs("button",{onClick:()=>s==null?void 0:s(d),className:"w-full text-left flex items-center gap-1.5 px-1.5 py-1 rounded hover:bg-surface-elevated transition-colors text-xs",children:[t.jsx("span",{style:{color:r},children:o}),t.jsx("span",{className:"text-[10px] text-muted",children:e}),t.jsx("span",{className:"truncate font-medium",children:i})]})}const w=240,T=80;function K(a,e,r,i,d){return a.filter(s=>{var o,u;return!((o=e==null?void 0:e.statuses)!=null&&o.size&&!e.statuses.has(s.status)||(u=e==null?void 0:e.types)!=null&&u.size&&!e.types.has(s.type))}).map(s=>{const o=r==null?void 0:r.get(s.id),u=o!=null&&o.length>0;return{id:s.id,type:"workflowNode",position:{x:0,y:0},data:{label:s.title,nodeType:s.type,status:s.status,priority:s.priority,xpSize:s.xpSize,sprint:s.sprint,sourceNode:s,hasChildren:u,isExpanded:(i==null?void 0:i.has(s.id))??!1,childCount:(o==null?void 0:o.length)??0,onExpand:d},style:{width:w,borderLeft:`4px solid ${j[s.type]||"#6c757d"}`}}})}function U(a,e){return a.filter(r=>e.has(r.from)&&e.has(r.to)).map(r=>{const i=h[r.relationType]||h.related_to;return{id:r.id,source:r.from,target:r.to,label:i.label,type:"workflowEdge",data:{relationType:r.relationType},style:{stroke:i.color,strokeDasharray:i.dashed?"5 5":void 0},labelStyle:{fontSize:10,fill:"#6c757d"}}})}function $(a,e,r){let i=0;const d=[r,...a,"|",...e];for(const s of d)for(let o=0;o<s.length;o++)i=(i<<5)-i+s.charCodeAt(o)|0;return i}function V(a,e){if(a===null||a.length!==e.length)return!1;for(let r=0;r<a.length;r++)if(a[r]!==e[r])return!1;return!0}let y=null;function X(a,e,r="TB"){const i=a.map(l=>l.id),d=e.map(l=>`${l.source}-${l.target}`),s=$(i,d,r);let o;if(y&&y.key===s)o=y.positions;else{const l=new C.graphlib.Graph;l.setDefaultEdgeLabel(()=>({})),l.setGraph({rankdir:r,ranksep:60,nodesep:40});for(const n of a)l.setNode(n.id,{width:w,height:T});for(const n of e)l.setEdge(n.source,n.target);C.layout(l),o=new Map;for(const n of a){const m=l.node(n.id);o.set(n.id,{x:m.x-w/2,y:m.y-T/2})}y={key:s,positions:o}}return{nodes:a.map(l=>{const n=o.get(l.id)??{x:0,y:0};return{...l,position:n}}),edges:e}}export{Y as N,G as W,B as a,H as b,U as c,X as d,F as e,A as g,V as s,K as t};
@@ -1,4 +1,4 @@
1
- import{b as ce,g as de,d as ge}from"./index-Co7yktBf.js";function U(e,r,t){e.prototype=r.prototype=t,t.constructor=e}function se(e,r){var t=Object.create(e.prototype);for(var n in r)t[n]=r[n];return t}function M(){}var E=.7,D=1/E,S="\\s*([+-]?\\d+)\\s*",R="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",m="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",be=/^#([0-9a-f]{3,8})$/,pe=new RegExp(`^rgb\\(${S},${S},${S}\\)$`),me=new RegExp(`^rgb\\(${m},${m},${m}\\)$`),ye=new RegExp(`^rgba\\(${S},${S},${S},${R}\\)$`),we=new RegExp(`^rgba\\(${m},${m},${m},${R}\\)$`),ve=new RegExp(`^hsl\\(${R},${m},${m}\\)$`),$e=new RegExp(`^hsla\\(${R},${m},${m},${R}\\)$`),Q={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};U(M,k,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:X,formatHex:X,formatHex8:Ne,formatHsl:Se,formatRgb:Y,toString:Y});function X(){return this.rgb().formatHex()}function Ne(){return this.rgb().formatHex8()}function Se(){return le(this).formatHsl()}function Y(){return this.rgb().formatRgb()}function k(e){var r,t;return e=(e+"").trim().toLowerCase(),(r=be.exec(e))?(t=r[1].length,r=parseInt(r[1],16),t===6?Z(r):t===3?new h(r>>8&15|r>>4&240,r>>4&15|r&240,(r&15)<<4|r&15,1):t===8?j(r>>24&255,r>>16&255,r>>8&255,(r&255)/255):t===4?j(r>>12&15|r>>8&240,r>>8&15|r>>4&240,r>>4&15|r&240,((r&15)<<4|r&15)/255):null):(r=pe.exec(e))?new h(r[1],r[2],r[3],1):(r=me.exec(e))?new h(r[1]*255/100,r[2]*255/100,r[3]*255/100,1):(r=ye.exec(e))?j(r[1],r[2],r[3],r[4]):(r=we.exec(e))?j(r[1]*255/100,r[2]*255/100,r[3]*255/100,r[4]):(r=ve.exec(e))?te(r[1],r[2]/100,r[3]/100,1):(r=$e.exec(e))?te(r[1],r[2]/100,r[3]/100,r[4]):Q.hasOwnProperty(e)?Z(Q[e]):e==="transparent"?new h(NaN,NaN,NaN,0):null}function Z(e){return new h(e>>16&255,e>>8&255,e&255,1)}function j(e,r,t,n){return n<=0&&(e=r=t=NaN),new h(e,r,t,n)}function Ee(e){return e instanceof M||(e=k(e)),e?(e=e.rgb(),new h(e.r,e.g,e.b,e.opacity)):new h}function W(e,r,t,n){return arguments.length===1?Ee(e):new h(e,r,t,n??1)}function h(e,r,t,n){this.r=+e,this.g=+r,this.b=+t,this.opacity=+n}U(h,W,se(M,{brighter(e){return e=e==null?D:Math.pow(D,e),new h(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?E:Math.pow(E,e),new h(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new h($(this.r),$(this.g),$(this.b),I(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:ee,formatHex:ee,formatHex8:Re,formatRgb:re,toString:re}));function ee(){return`#${v(this.r)}${v(this.g)}${v(this.b)}`}function Re(){return`#${v(this.r)}${v(this.g)}${v(this.b)}${v((isNaN(this.opacity)?1:this.opacity)*255)}`}function re(){const e=I(this.opacity);return`${e===1?"rgb(":"rgba("}${$(this.r)}, ${$(this.g)}, ${$(this.b)}${e===1?")":`, ${e})`}`}function I(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function $(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function v(e){return e=$(e),(e<16?"0":"")+e.toString(16)}function te(e,r,t,n){return n<=0?e=r=t=NaN:t<=0||t>=1?e=r=NaN:r<=0&&(e=NaN),new b(e,r,t,n)}function le(e){if(e instanceof b)return new b(e.h,e.s,e.l,e.opacity);if(e instanceof M||(e=k(e)),!e)return new b;if(e instanceof b)return e;e=e.rgb();var r=e.r/255,t=e.g/255,n=e.b/255,i=Math.min(r,t,n),a=Math.max(r,t,n),f=NaN,u=a-i,c=(a+i)/2;return u?(r===a?f=(t-n)/u+(t<n)*6:t===a?f=(n-r)/u+2:f=(r-t)/u+4,u/=c<.5?a+i:2-a-i,f*=60):u=c>0&&c<1?0:f,new b(f,u,c,e.opacity)}function ke(e,r,t,n){return arguments.length===1?le(e):new b(e,r,t,n??1)}function b(e,r,t,n){this.h=+e,this.s=+r,this.l=+t,this.opacity=+n}U(b,ke,se(M,{brighter(e){return e=e==null?D:Math.pow(D,e),new b(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?E:Math.pow(E,e),new b(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,r=isNaN(e)||isNaN(this.s)?0:this.s,t=this.l,n=t+(t<.5?t:1-t)*r,i=2*t-n;return new h(A(e>=240?e-240:e+120,i,n),A(e,i,n),A(e<120?e+240:e-120,i,n),this.opacity)},clamp(){return new b(ne(this.h),_(this.s),_(this.l),I(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=I(this.opacity);return`${e===1?"hsl(":"hsla("}${ne(this.h)}, ${_(this.s)*100}%, ${_(this.l)*100}%${e===1?")":`, ${e})`}`}}));function ne(e){return e=(e||0)%360,e<0?e+360:e}function _(e){return Math.max(0,Math.min(1,e||0))}function A(e,r,t){return(e<60?r+(t-r)*e/60:e<180?t:e<240?r+(t-r)*(240-e)/60:r)*255}const B=e=>()=>e;function Me(e,r){return function(t){return e+t*r}}function He(e,r,t){return e=Math.pow(e,t),r=Math.pow(r,t)-e,t=1/t,function(n){return Math.pow(e+n*r,t)}}function qe(e){return(e=+e)==1?xe:function(r,t){return t-r?He(r,t,e):B(isNaN(r)?t:r)}}function xe(e,r){var t=r-e;return t?Me(e,t):B(isNaN(e)?r:e)}const ie=(function e(r){var t=qe(r);function n(i,a){var f=t((i=W(i)).r,(a=W(a)).r),u=t(i.g,a.g),c=t(i.b,a.b),d=xe(i.opacity,a.opacity);return function(s){return i.r=f(s),i.g=u(s),i.b=c(s),i.opacity=d(s),i+""}}return n.gamma=e,n})(1);function je(e,r){r||(r=[]);var t=e?Math.min(r.length,e.length):0,n=r.slice(),i;return function(a){for(i=0;i<t;++i)n[i]=e[i]*(1-a)+r[i]*a;return n}}function _e(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function De(e,r){var t=r?r.length:0,n=e?Math.min(t,e.length):0,i=new Array(n),a=new Array(t),f;for(f=0;f<n;++f)i[f]=he(e[f],r[f]);for(;f<t;++f)a[f]=r[f];return function(u){for(f=0;f<n;++f)a[f]=i[f](u);return a}}function Ie(e,r){var t=new Date;return e=+e,r=+r,function(n){return t.setTime(e*(1-n)+r*n),t}}function G(e,r){return e=+e,r=+r,function(t){return e*(1-t)+r*t}}function Ae(e,r){var t={},n={},i;(e===null||typeof e!="object")&&(e={}),(r===null||typeof r!="object")&&(r={});for(i in r)i in e?t[i]=he(e[i],r[i]):n[i]=r[i];return function(a){for(i in t)n[i]=t[i](a);return n}}var L=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,V=new RegExp(L.source,"g");function Ve(e){return function(){return e}}function Oe(e){return function(r){return e(r)+""}}function Ce(e,r){var t=L.lastIndex=V.lastIndex=0,n,i,a,f=-1,u=[],c=[];for(e=e+"",r=r+"";(n=L.exec(e))&&(i=V.exec(r));)(a=i.index)>t&&(a=r.slice(t,a),u[f]?u[f]+=a:u[++f]=a),(n=n[0])===(i=i[0])?u[f]?u[f]+=i:u[++f]=i:(u[++f]=null,c.push({i:f,x:G(n,i)})),t=V.lastIndex;return t<r.length&&(a=r.slice(t),u[f]?u[f]+=a:u[++f]=a),u.length<2?c[0]?Oe(c[0].x):Ve(r):(r=c.length,function(d){for(var s=0,o;s<r;++s)u[(o=c[s]).i]=o.x(d);return u.join("")})}function he(e,r){var t=typeof r,n;return r==null||t==="boolean"?B(r):(t==="number"?G:t==="string"?(n=k(r))?(r=n,ie):Ce:r instanceof k?ie:r instanceof Date?Ie:_e(r)?je:Array.isArray(r)?De:typeof r.valueOf!="function"&&typeof r.toString!="function"||isNaN(r)?Ae:G)(e,r)}var O={exports:{}},C={},P={exports:{}},z={};/**
1
+ import{b as ce,g as de,e as ge}from"./index-DknXi6Cq.js";function U(e,r,t){e.prototype=r.prototype=t,t.constructor=e}function se(e,r){var t=Object.create(e.prototype);for(var n in r)t[n]=r[n];return t}function M(){}var E=.7,D=1/E,S="\\s*([+-]?\\d+)\\s*",R="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",m="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",be=/^#([0-9a-f]{3,8})$/,pe=new RegExp(`^rgb\\(${S},${S},${S}\\)$`),me=new RegExp(`^rgb\\(${m},${m},${m}\\)$`),ye=new RegExp(`^rgba\\(${S},${S},${S},${R}\\)$`),we=new RegExp(`^rgba\\(${m},${m},${m},${R}\\)$`),ve=new RegExp(`^hsl\\(${R},${m},${m}\\)$`),$e=new RegExp(`^hsla\\(${R},${m},${m},${R}\\)$`),Q={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};U(M,k,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:X,formatHex:X,formatHex8:Ne,formatHsl:Se,formatRgb:Y,toString:Y});function X(){return this.rgb().formatHex()}function Ne(){return this.rgb().formatHex8()}function Se(){return le(this).formatHsl()}function Y(){return this.rgb().formatRgb()}function k(e){var r,t;return e=(e+"").trim().toLowerCase(),(r=be.exec(e))?(t=r[1].length,r=parseInt(r[1],16),t===6?Z(r):t===3?new h(r>>8&15|r>>4&240,r>>4&15|r&240,(r&15)<<4|r&15,1):t===8?j(r>>24&255,r>>16&255,r>>8&255,(r&255)/255):t===4?j(r>>12&15|r>>8&240,r>>8&15|r>>4&240,r>>4&15|r&240,((r&15)<<4|r&15)/255):null):(r=pe.exec(e))?new h(r[1],r[2],r[3],1):(r=me.exec(e))?new h(r[1]*255/100,r[2]*255/100,r[3]*255/100,1):(r=ye.exec(e))?j(r[1],r[2],r[3],r[4]):(r=we.exec(e))?j(r[1]*255/100,r[2]*255/100,r[3]*255/100,r[4]):(r=ve.exec(e))?te(r[1],r[2]/100,r[3]/100,1):(r=$e.exec(e))?te(r[1],r[2]/100,r[3]/100,r[4]):Q.hasOwnProperty(e)?Z(Q[e]):e==="transparent"?new h(NaN,NaN,NaN,0):null}function Z(e){return new h(e>>16&255,e>>8&255,e&255,1)}function j(e,r,t,n){return n<=0&&(e=r=t=NaN),new h(e,r,t,n)}function Ee(e){return e instanceof M||(e=k(e)),e?(e=e.rgb(),new h(e.r,e.g,e.b,e.opacity)):new h}function W(e,r,t,n){return arguments.length===1?Ee(e):new h(e,r,t,n??1)}function h(e,r,t,n){this.r=+e,this.g=+r,this.b=+t,this.opacity=+n}U(h,W,se(M,{brighter(e){return e=e==null?D:Math.pow(D,e),new h(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?E:Math.pow(E,e),new h(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new h($(this.r),$(this.g),$(this.b),I(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:ee,formatHex:ee,formatHex8:Re,formatRgb:re,toString:re}));function ee(){return`#${v(this.r)}${v(this.g)}${v(this.b)}`}function Re(){return`#${v(this.r)}${v(this.g)}${v(this.b)}${v((isNaN(this.opacity)?1:this.opacity)*255)}`}function re(){const e=I(this.opacity);return`${e===1?"rgb(":"rgba("}${$(this.r)}, ${$(this.g)}, ${$(this.b)}${e===1?")":`, ${e})`}`}function I(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function $(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function v(e){return e=$(e),(e<16?"0":"")+e.toString(16)}function te(e,r,t,n){return n<=0?e=r=t=NaN:t<=0||t>=1?e=r=NaN:r<=0&&(e=NaN),new b(e,r,t,n)}function le(e){if(e instanceof b)return new b(e.h,e.s,e.l,e.opacity);if(e instanceof M||(e=k(e)),!e)return new b;if(e instanceof b)return e;e=e.rgb();var r=e.r/255,t=e.g/255,n=e.b/255,i=Math.min(r,t,n),a=Math.max(r,t,n),f=NaN,u=a-i,c=(a+i)/2;return u?(r===a?f=(t-n)/u+(t<n)*6:t===a?f=(n-r)/u+2:f=(r-t)/u+4,u/=c<.5?a+i:2-a-i,f*=60):u=c>0&&c<1?0:f,new b(f,u,c,e.opacity)}function ke(e,r,t,n){return arguments.length===1?le(e):new b(e,r,t,n??1)}function b(e,r,t,n){this.h=+e,this.s=+r,this.l=+t,this.opacity=+n}U(b,ke,se(M,{brighter(e){return e=e==null?D:Math.pow(D,e),new b(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?E:Math.pow(E,e),new b(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,r=isNaN(e)||isNaN(this.s)?0:this.s,t=this.l,n=t+(t<.5?t:1-t)*r,i=2*t-n;return new h(A(e>=240?e-240:e+120,i,n),A(e,i,n),A(e<120?e+240:e-120,i,n),this.opacity)},clamp(){return new b(ne(this.h),_(this.s),_(this.l),I(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=I(this.opacity);return`${e===1?"hsl(":"hsla("}${ne(this.h)}, ${_(this.s)*100}%, ${_(this.l)*100}%${e===1?")":`, ${e})`}`}}));function ne(e){return e=(e||0)%360,e<0?e+360:e}function _(e){return Math.max(0,Math.min(1,e||0))}function A(e,r,t){return(e<60?r+(t-r)*e/60:e<180?t:e<240?r+(t-r)*(240-e)/60:r)*255}const B=e=>()=>e;function Me(e,r){return function(t){return e+t*r}}function He(e,r,t){return e=Math.pow(e,t),r=Math.pow(r,t)-e,t=1/t,function(n){return Math.pow(e+n*r,t)}}function qe(e){return(e=+e)==1?xe:function(r,t){return t-r?He(r,t,e):B(isNaN(r)?t:r)}}function xe(e,r){var t=r-e;return t?Me(e,t):B(isNaN(e)?r:e)}const ie=(function e(r){var t=qe(r);function n(i,a){var f=t((i=W(i)).r,(a=W(a)).r),u=t(i.g,a.g),c=t(i.b,a.b),d=xe(i.opacity,a.opacity);return function(s){return i.r=f(s),i.g=u(s),i.b=c(s),i.opacity=d(s),i+""}}return n.gamma=e,n})(1);function je(e,r){r||(r=[]);var t=e?Math.min(r.length,e.length):0,n=r.slice(),i;return function(a){for(i=0;i<t;++i)n[i]=e[i]*(1-a)+r[i]*a;return n}}function _e(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function De(e,r){var t=r?r.length:0,n=e?Math.min(t,e.length):0,i=new Array(n),a=new Array(t),f;for(f=0;f<n;++f)i[f]=he(e[f],r[f]);for(;f<t;++f)a[f]=r[f];return function(u){for(f=0;f<n;++f)a[f]=i[f](u);return a}}function Ie(e,r){var t=new Date;return e=+e,r=+r,function(n){return t.setTime(e*(1-n)+r*n),t}}function G(e,r){return e=+e,r=+r,function(t){return e*(1-t)+r*t}}function Ae(e,r){var t={},n={},i;(e===null||typeof e!="object")&&(e={}),(r===null||typeof r!="object")&&(r={});for(i in r)i in e?t[i]=he(e[i],r[i]):n[i]=r[i];return function(a){for(i in t)n[i]=t[i](a);return n}}var L=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,V=new RegExp(L.source,"g");function Ve(e){return function(){return e}}function Oe(e){return function(r){return e(r)+""}}function Ce(e,r){var t=L.lastIndex=V.lastIndex=0,n,i,a,f=-1,u=[],c=[];for(e=e+"",r=r+"";(n=L.exec(e))&&(i=V.exec(r));)(a=i.index)>t&&(a=r.slice(t,a),u[f]?u[f]+=a:u[++f]=a),(n=n[0])===(i=i[0])?u[f]?u[f]+=i:u[++f]=i:(u[++f]=null,c.push({i:f,x:G(n,i)})),t=V.lastIndex;return t<r.length&&(a=r.slice(t),u[f]?u[f]+=a:u[++f]=a),u.length<2?c[0]?Oe(c[0].x):Ve(r):(r=c.length,function(d){for(var s=0,o;s<r;++s)u[(o=c[s]).i]=o.x(d);return u.join("")})}function he(e,r){var t=typeof r,n;return r==null||t==="boolean"?B(r):(t==="number"?G:t==="string"?(n=k(r))?(r=n,ie):Ce:r instanceof k?ie:r instanceof Date?Ie:_e(r)?je:Array.isArray(r)?De:typeof r.valueOf!="function"&&typeof r.toString!="function"||isNaN(r)?Ae:G)(e,r)}var O={exports:{}},C={},P={exports:{}},z={};/**
2
2
  * @license React
3
3
  * use-sync-external-store-shim.production.js
4
4
  *