@runfusion/fusion 0.25.0 → 0.27.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 (226) hide show
  1. package/README.md +6 -0
  2. package/dist/bin.js +28004 -16888
  3. package/dist/client/assets/AgentDetailView-B7QRcHJH.css +1 -0
  4. package/dist/client/assets/AgentDetailView-DwLmRXTY.js +18 -0
  5. package/dist/client/assets/{AgentsView-B3jYk8Kt.js → AgentsView-D-N6aA0P.js} +12 -7
  6. package/dist/client/assets/ChatView-DnCdKu8Z.js +1 -0
  7. package/dist/client/assets/{DevServerView-DyGDEiBP.js → DevServerView-BiA1nYtt.js} +1 -1
  8. package/dist/client/assets/{DirectoryPicker-D5UIeIl6.js → DirectoryPicker-DvBviDG6.js} +1 -1
  9. package/dist/client/assets/{DocumentsView-DNHu1T8K.js → DocumentsView-BWXOxpuq.js} +1 -1
  10. package/dist/client/assets/{EvalsView-CpRobtDi.js → EvalsView-CJFbtL7i.js} +1 -1
  11. package/dist/client/assets/{ExperimentalAgentOnboardingModal-DOY_oZi7.js → ExperimentalAgentOnboardingModal-DuGIPd0B.js} +1 -1
  12. package/dist/client/assets/InsightsView-BBpRiolN.js +11 -0
  13. package/dist/client/assets/{MemoryView-PSc5lGJt.js → MemoryView-48LuNkKk.js} +2 -2
  14. package/dist/client/assets/NodesView-CGQWSNZM.js +14 -0
  15. package/dist/client/assets/{PiExtensionsManager-DL_QcN56.js → PiExtensionsManager-i-7UL2oh.js} +2 -2
  16. package/dist/client/assets/PluginManager-DoSAykD6.js +1 -0
  17. package/dist/client/assets/{ResearchView-BzCcDAS4.css → ResearchView-BEI4ZSGs.css} +1 -1
  18. package/dist/client/assets/ResearchView-XZuRtOxE.js +1 -0
  19. package/dist/client/assets/SettingsModal-Ci0_sqbU.css +1 -0
  20. package/dist/client/assets/{SettingsModal-CUCyaAyE.js → SettingsModal-CmeF8CN4.js} +1 -1
  21. package/dist/client/assets/SettingsModal-DBcjf9Bu.js +31 -0
  22. package/dist/client/assets/SettingsModal-DWKgRxBA.css +1 -0
  23. package/dist/client/assets/{SetupWizardModal-BKscasuh.js → SetupWizardModal-CgtvpMX9.js} +1 -1
  24. package/dist/client/assets/{SkillsView-BdELqTy7.js → SkillsView-DErYRumF.js} +1 -1
  25. package/dist/client/assets/StashRecoveryView-B_8WIQEo.css +1 -0
  26. package/dist/client/assets/StashRecoveryView-QJrNS4Vg.js +1 -0
  27. package/dist/client/assets/{TodoView-DFNGBDNV.js → TodoView-BD9NRwq0.js} +2 -2
  28. package/dist/client/assets/createLucideIcon-BazL2hk5.js +21 -0
  29. package/dist/client/assets/dashboard-view-BWGH_fAq.js +63 -0
  30. package/dist/client/assets/dashboard-view-BoTzlP8b.css +1 -0
  31. package/dist/client/assets/dashboard-view-DdGlfuu-.css +1 -0
  32. package/dist/client/assets/dashboard-view-Ws9_ZnKu.js +21 -0
  33. package/dist/client/assets/{folder-open-k1xmUMyr.js → folder-open-CHSlllzf.js} +1 -1
  34. package/dist/client/assets/index-DCovGm5b.css +1 -0
  35. package/dist/client/assets/index-bEwSVl7B.js +692 -0
  36. package/dist/client/assets/{star-ne32r3Y4.js → star-BgVwWAPz.js} +1 -1
  37. package/dist/client/assets/{upload-MS-2Gx53.js → upload-CAzycxr9.js} +1 -1
  38. package/dist/client/assets/{users-C519GSjH.js → users-CZnxCCCJ.js} +1 -1
  39. package/dist/client/index.html +2 -2
  40. package/dist/client/version.json +1 -1
  41. package/dist/droid-cli/package.json +1 -1
  42. package/dist/droid-cli/src/__tests__/index.test.ts +228 -0
  43. package/dist/extension.js +15810 -10205
  44. package/dist/pi-claude-cli/package.json +1 -1
  45. package/dist/pi-claude-cli/src/__tests__/provider.test.ts +36 -22
  46. package/dist/pi-claude-cli/src/provider.ts +7 -1
  47. package/dist/plugins/fusion-plugin-cli-printing-press/manifest.json +24 -0
  48. package/dist/plugins/fusion-plugin-cli-printing-press/package.json +44 -0
  49. package/dist/plugins/fusion-plugin-cli-printing-press/src/__tests__/TestRunnerPanel.test.tsx +99 -0
  50. package/dist/plugins/fusion-plugin-cli-printing-press/src/__tests__/config-flow.test.ts +91 -0
  51. package/dist/plugins/fusion-plugin-cli-printing-press/src/__tests__/dashboard-view.test.tsx +40 -0
  52. package/dist/plugins/fusion-plugin-cli-printing-press/src/__tests__/dashboard-views.test.ts +46 -0
  53. package/dist/plugins/fusion-plugin-cli-printing-press/src/__tests__/draft-store.test.ts +50 -0
  54. package/dist/plugins/fusion-plugin-cli-printing-press/src/__tests__/fixtures/exec-mock.ts +80 -0
  55. package/dist/plugins/fusion-plugin-cli-printing-press/src/__tests__/fixtures/fixtures.test.ts +40 -0
  56. package/dist/plugins/fusion-plugin-cli-printing-press/src/__tests__/fixtures/registry.ts +82 -0
  57. package/dist/plugins/fusion-plugin-cli-printing-press/src/__tests__/generator.test.ts +54 -0
  58. package/dist/plugins/fusion-plugin-cli-printing-press/src/__tests__/manage-view.test.tsx +98 -0
  59. package/dist/plugins/fusion-plugin-cli-printing-press/src/__tests__/manifest.test.ts +36 -0
  60. package/dist/plugins/fusion-plugin-cli-printing-press/src/__tests__/registration.test.ts +29 -0
  61. package/dist/plugins/fusion-plugin-cli-printing-press/src/__tests__/run-routes.test.ts +98 -0
  62. package/dist/plugins/fusion-plugin-cli-printing-press/src/__tests__/runner.test.ts +55 -0
  63. package/dist/plugins/fusion-plugin-cli-printing-press/src/__tests__/runtime-availability.test.ts +61 -0
  64. package/dist/plugins/fusion-plugin-cli-printing-press/src/__tests__/validation.test.ts +30 -0
  65. package/dist/plugins/fusion-plugin-cli-printing-press/src/__tests__/wizard-routes.test.ts +61 -0
  66. package/dist/plugins/fusion-plugin-cli-printing-press/src/__tests__/workflow-integration.test.ts +19 -0
  67. package/dist/plugins/fusion-plugin-cli-printing-press/src/dashboard-view.css +43 -0
  68. package/dist/plugins/fusion-plugin-cli-printing-press/src/dashboard-view.tsx +49 -0
  69. package/dist/plugins/fusion-plugin-cli-printing-press/src/generation/generator.ts +95 -0
  70. package/dist/plugins/fusion-plugin-cli-printing-press/src/generation/redact.ts +9 -0
  71. package/dist/plugins/fusion-plugin-cli-printing-press/src/generation/runner.ts +79 -0
  72. package/dist/plugins/fusion-plugin-cli-printing-press/src/generation/types.ts +31 -0
  73. package/dist/plugins/fusion-plugin-cli-printing-press/src/index.ts +58 -0
  74. package/dist/plugins/fusion-plugin-cli-printing-press/src/manage/EditDraftModal.tsx +75 -0
  75. package/dist/plugins/fusion-plugin-cli-printing-press/src/manage/useDrafts.ts +73 -0
  76. package/dist/plugins/fusion-plugin-cli-printing-press/src/manage-view.css +79 -0
  77. package/dist/plugins/fusion-plugin-cli-printing-press/src/manage-view.tsx +122 -0
  78. package/dist/plugins/fusion-plugin-cli-printing-press/src/routes/wizard-routes.ts +272 -0
  79. package/dist/plugins/fusion-plugin-cli-printing-press/src/run/TestRunnerPanel.css +70 -0
  80. package/dist/plugins/fusion-plugin-cli-printing-press/src/run/TestRunnerPanel.tsx +98 -0
  81. package/dist/plugins/fusion-plugin-cli-printing-press/src/run/useRunGeneratedCli.ts +37 -0
  82. package/dist/plugins/fusion-plugin-cli-printing-press/src/runtime/__tests__/executor-runtime-env.test.ts +191 -0
  83. package/dist/plugins/fusion-plugin-cli-printing-press/src/runtime/executor-runtime-env.ts +75 -0
  84. package/dist/plugins/fusion-plugin-cli-printing-press/src/storage/draft-store.ts +85 -0
  85. package/dist/plugins/fusion-plugin-cli-printing-press/src/store/__tests__/cli-press-store.test.ts +128 -0
  86. package/dist/plugins/fusion-plugin-cli-printing-press/src/store/__tests__/credentials.test.ts +62 -0
  87. package/dist/plugins/fusion-plugin-cli-printing-press/src/store/cli-press-store.ts +427 -0
  88. package/dist/plugins/fusion-plugin-cli-printing-press/src/store/cli-press-types.ts +110 -0
  89. package/dist/plugins/fusion-plugin-cli-printing-press/src/store/credentials.ts +95 -0
  90. package/dist/plugins/fusion-plugin-cli-printing-press/src/wizard/steps.tsx +55 -0
  91. package/dist/plugins/fusion-plugin-cli-printing-press/src/wizard/types.ts +33 -0
  92. package/dist/plugins/fusion-plugin-cli-printing-press/src/wizard/validation.ts +63 -0
  93. package/dist/plugins/fusion-plugin-cursor-runtime/package.json +1 -1
  94. package/dist/plugins/fusion-plugin-dependency-graph/package.json +1 -1
  95. package/dist/plugins/fusion-plugin-droid-runtime/package.json +1 -1
  96. package/dist/plugins/fusion-plugin-hermes-runtime/package.json +1 -1
  97. package/dist/plugins/fusion-plugin-openclaw-runtime/package.json +1 -1
  98. package/dist/plugins/fusion-plugin-paperclip-runtime/package.json +1 -1
  99. package/dist/plugins/fusion-plugin-reports/manifest.json +10 -0
  100. package/dist/plugins/fusion-plugin-reports/package.json +18 -2
  101. package/dist/plugins/fusion-plugin-reports/src/__tests__/approval.test.ts +164 -0
  102. package/dist/plugins/fusion-plugin-reports/src/__tests__/manifest.test.ts +14 -0
  103. package/dist/plugins/fusion-plugin-reports/src/__tests__/routes-approval.test.ts +109 -0
  104. package/dist/plugins/fusion-plugin-reports/src/__tests__/scaffold.test.ts +60 -0
  105. package/dist/plugins/fusion-plugin-reports/src/__tests__/share-blocks.test.ts +83 -0
  106. package/dist/plugins/fusion-plugin-reports/src/aggregation.ts +23 -0
  107. package/dist/plugins/fusion-plugin-reports/src/approval.ts +97 -0
  108. package/dist/plugins/fusion-plugin-reports/src/cadence.ts +23 -0
  109. package/dist/plugins/fusion-plugin-reports/src/dashboard/ReportsView.css +82 -0
  110. package/dist/plugins/fusion-plugin-reports/src/dashboard/ReportsView.tsx +24 -0
  111. package/dist/plugins/fusion-plugin-reports/src/dashboard/__tests__/ReportComparisonDrawer.test.tsx +12 -0
  112. package/dist/plugins/fusion-plugin-reports/src/dashboard/__tests__/ReportDetailPanel.test.tsx +12 -0
  113. package/dist/plugins/fusion-plugin-reports/src/dashboard/__tests__/ReportFiltersBar.test.tsx +14 -0
  114. package/dist/plugins/fusion-plugin-reports/src/dashboard/__tests__/ReportsView.test.tsx +27 -0
  115. package/dist/plugins/fusion-plugin-reports/src/dashboard/__tests__/api.test.ts +19 -0
  116. package/dist/plugins/fusion-plugin-reports/src/dashboard/__tests__/useReportSectionDiff.test.ts +11 -0
  117. package/dist/plugins/fusion-plugin-reports/src/dashboard/__tests__/useReports.test.ts +13 -0
  118. package/dist/plugins/fusion-plugin-reports/src/dashboard/api.ts +85 -0
  119. package/dist/plugins/fusion-plugin-reports/src/dashboard/components/ReportApprovalPanel.css +59 -0
  120. package/dist/plugins/fusion-plugin-reports/src/dashboard/components/ReportApprovalPanel.tsx +58 -0
  121. package/dist/plugins/fusion-plugin-reports/src/dashboard/components/ReportComparisonDrawer.tsx +21 -0
  122. package/dist/plugins/fusion-plugin-reports/src/dashboard/components/ReportDetailPanel.tsx +29 -0
  123. package/dist/plugins/fusion-plugin-reports/src/dashboard/components/ReportEmptyState.tsx +3 -0
  124. package/dist/plugins/fusion-plugin-reports/src/dashboard/components/ReportFiltersBar.tsx +19 -0
  125. package/dist/plugins/fusion-plugin-reports/src/dashboard/components/ReportListItem.tsx +8 -0
  126. package/dist/plugins/fusion-plugin-reports/src/dashboard/components/ShareBlocksPanel.css +29 -0
  127. package/dist/plugins/fusion-plugin-reports/src/dashboard/components/ShareBlocksPanel.tsx +43 -0
  128. package/dist/plugins/fusion-plugin-reports/src/dashboard/components/__tests__/ReportApprovalPanel.test.tsx +38 -0
  129. package/dist/plugins/fusion-plugin-reports/src/dashboard/components/__tests__/ShareBlocksPanel.test.tsx +24 -0
  130. package/dist/plugins/fusion-plugin-reports/src/dashboard/test-setup.ts +18 -0
  131. package/dist/plugins/fusion-plugin-reports/src/dashboard/types.ts +22 -0
  132. package/dist/plugins/fusion-plugin-reports/src/dashboard/useReportPreview.ts +44 -0
  133. package/dist/plugins/fusion-plugin-reports/src/dashboard/useReportSectionDiff.ts +59 -0
  134. package/dist/plugins/fusion-plugin-reports/src/dashboard/useReports.ts +71 -0
  135. package/dist/plugins/fusion-plugin-reports/src/dashboard/useViewportMode.ts +13 -0
  136. package/dist/plugins/fusion-plugin-reports/src/dashboard-view.tsx +6 -0
  137. package/dist/plugins/fusion-plugin-reports/src/index.ts +48 -2
  138. package/dist/plugins/fusion-plugin-reports/src/pipeline.ts +58 -0
  139. package/dist/plugins/fusion-plugin-reports/src/render/__tests__/escape.test.ts +20 -0
  140. package/dist/plugins/fusion-plugin-reports/src/render/__tests__/html-template.test.ts +110 -0
  141. package/dist/plugins/fusion-plugin-reports/src/render/__tests__/standalone-html.test.ts +66 -0
  142. package/dist/plugins/fusion-plugin-reports/src/render/escape.ts +12 -0
  143. package/dist/plugins/fusion-plugin-reports/src/render/html-styles.ts +40 -0
  144. package/dist/plugins/fusion-plugin-reports/src/render/html-template.ts +137 -0
  145. package/dist/plugins/fusion-plugin-reports/src/render/index.ts +4 -0
  146. package/dist/plugins/fusion-plugin-reports/src/render/standalone-html.ts +75 -0
  147. package/dist/plugins/fusion-plugin-reports/src/report-schema.ts +31 -0
  148. package/dist/plugins/fusion-plugin-reports/src/routes/__tests__/report-export-routes.test.ts +104 -0
  149. package/dist/plugins/fusion-plugin-reports/src/routes/report-approval-routes.ts +98 -0
  150. package/dist/plugins/fusion-plugin-reports/src/routes/report-export-routes.ts +77 -0
  151. package/dist/plugins/fusion-plugin-reports/src/routes/report-list-routes.ts +72 -0
  152. package/dist/plugins/fusion-plugin-reports/src/runs-store.ts +69 -0
  153. package/dist/plugins/fusion-plugin-reports/src/share-blocks.ts +82 -0
  154. package/dist/plugins/fusion-plugin-reports/src/store/report-store.ts +51 -2
  155. package/dist/plugins/fusion-plugin-reports/src/store/report-types.ts +6 -1
  156. package/dist/plugins/fusion-plugin-roadmap/bundled.js +1672 -0
  157. package/dist/plugins/fusion-plugin-roadmap/manifest.json +1 -1
  158. package/dist/plugins/fusion-plugin-roadmap/package.json +4 -41
  159. package/dist/plugins/fusion-plugin-whatsapp-chat/package.json +1 -1
  160. package/package.json +2 -3
  161. package/skill/fusion/references/engine-tools.md +1 -1
  162. package/skill/fusion/references/extension-tools.md +3 -3
  163. package/skill/fusion/references/fusion-capabilities.md +1 -1
  164. package/dist/client/assets/AgentDetailView-BwJaLqZh.css +0 -1
  165. package/dist/client/assets/AgentDetailView-ZbHEbYRT.js +0 -18
  166. package/dist/client/assets/ChatView-DhPkiEGs.js +0 -1
  167. package/dist/client/assets/InsightsView-vp0RE8Mg.js +0 -11
  168. package/dist/client/assets/NodesView-DMj6HGeC.js +0 -14
  169. package/dist/client/assets/PluginManager-BtYKm8IT.js +0 -1
  170. package/dist/client/assets/ResearchView-BhWqfdV0.js +0 -1
  171. package/dist/client/assets/SettingsModal-BAgB4_AR.js +0 -31
  172. package/dist/client/assets/SettingsModal-BNSrO1M9.css +0 -1
  173. package/dist/client/assets/SettingsModal-DzsLquBu.css +0 -1
  174. package/dist/client/assets/index-Qq2JOOWx.css +0 -1
  175. package/dist/client/assets/index-TFYXEVpn.js +0 -692
  176. package/dist/plugins/fusion-plugin-roadmap/src/__tests__/api-client.test.ts +0 -101
  177. package/dist/plugins/fusion-plugin-roadmap/src/__tests__/index.test.ts +0 -92
  178. package/dist/plugins/fusion-plugin-roadmap/src/__tests__/roadmap-routes.test.ts +0 -48
  179. package/dist/plugins/fusion-plugin-roadmap/src/__tests__/roadmap-suggestions.test.ts +0 -31
  180. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/RoadmapsView.css +0 -1299
  181. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/RoadmapsView.tsx +0 -2559
  182. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/__tests__/RoadmapsView.test.tsx +0 -1144
  183. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/__tests__/useRoadmaps.test.ts +0 -1756
  184. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/api.ts +0 -70
  185. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/test-setup.ts +0 -7
  186. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/types.ts +0 -1
  187. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/useConfirm.ts +0 -8
  188. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/useRoadmaps.ts +0 -1188
  189. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/useViewportMode.ts +0 -20
  190. package/dist/plugins/fusion-plugin-roadmap/src/dashboard-view.tsx +0 -6
  191. package/dist/plugins/fusion-plugin-roadmap/src/index.ts +0 -74
  192. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-routes.ts +0 -1
  193. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-schema.ts +0 -41
  194. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-suggestions.d.ts +0 -15
  195. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-suggestions.ts +0 -15
  196. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-types.d.ts +0 -283
  197. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-types.d.ts.map +0 -1
  198. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-types.js +0 -21
  199. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-types.js.map +0 -1
  200. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-types.ts +0 -310
  201. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-routes.d.ts +0 -5
  202. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-routes.d.ts.map +0 -1
  203. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-routes.js +0 -361
  204. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-routes.js.map +0 -1
  205. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-routes.ts +0 -408
  206. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-suggestions.d.ts +0 -68
  207. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-suggestions.d.ts.map +0 -1
  208. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-suggestions.js +0 -300
  209. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-suggestions.js.map +0 -1
  210. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-suggestions.ts +0 -381
  211. package/dist/plugins/fusion-plugin-roadmap/src/server/index.d.ts +0 -3
  212. package/dist/plugins/fusion-plugin-roadmap/src/server/index.ts +0 -1
  213. package/dist/plugins/fusion-plugin-roadmap/src/store/__tests__/roadmap-handoff.test.ts +0 -445
  214. package/dist/plugins/fusion-plugin-roadmap/src/store/__tests__/roadmap-ordering.test.ts +0 -334
  215. package/dist/plugins/fusion-plugin-roadmap/src/store/__tests__/roadmap-store.test.ts +0 -1318
  216. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-handoff.ts +0 -163
  217. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-ordering.d.ts +0 -37
  218. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-ordering.d.ts.map +0 -1
  219. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-ordering.js +0 -188
  220. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-ordering.js.map +0 -1
  221. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-ordering.ts +0 -311
  222. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-store.d.ts +0 -299
  223. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-store.d.ts.map +0 -1
  224. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-store.js +0 -765
  225. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-store.js.map +0 -1
  226. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-store.ts +0 -1001
@@ -0,0 +1 @@
1
+ .roadmaps-view{display:flex;height:100%;overflow:hidden}.roadmaps-view--loading,.roadmaps-view--error{display:flex;align-items:center;justify-content:center}.roadmaps-view__loading-state,.roadmaps-view__error-state{text-align:center;color:var(--text-muted)}.roadmaps-view__error-msg{font-size:.85rem;margin-top:4px}.roadmaps-view__handoff-intro,.roadmaps-view__handoff-error,.roadmaps-view__handoff-section{margin-bottom:var(--space-lg)}.roadmaps-view__handoff-empty-state,.roadmaps-view__handoff-loading-state{text-align:center;padding:var(--space-xl)}.roadmaps-view__handoff-button-icon{margin-right:var(--space-sm)}.roadmaps-view__handoff-loading-text{margin-top:var(--space-md)}.roadmaps-view__handoff-section-title{margin-bottom:var(--space-sm)}.roadmaps-view__handoff-card{padding:var(--space-md)}.roadmaps-view__handoff-pre{white-space:pre-wrap;font-size:.75rem;overflow:auto}.roadmaps-view__handoff-pre--mission{max-height:200px}.roadmaps-view__handoff-pre--features{max-height:300px}.roadmaps-view__handoff-copy-icon{margin-right:var(--space-xs)}.roadmaps-view__sidebar{width:280px;flex-shrink:0;display:flex;flex-direction:column;border-right:1px solid var(--border);background:var(--surface-elevated)}.roadmaps-view__sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--border)}.roadmaps-view__sidebar-title{font-size:1rem;font-weight:600;color:var(--text-primary)}.roadmaps-view__add-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:var(--radius-sm);background:var(--accent);color:var(--cta-text);cursor:pointer;transition:opacity var(--transition-fast)}.roadmaps-view__add-btn:hover{opacity:.85}.roadmaps-view__sidebar-list{flex:1;overflow-y:auto;padding:var(--space-sm)}.roadmaps-view__empty-sidebar{padding:var(--space-lg);text-align:center;color:var(--text-muted);font-size:.9rem}.roadmaps-view__sidebar-item{display:flex;align-items:flex-start;justify-content:space-between;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition-fast);gap:var(--space-sm)}.roadmaps-view__sidebar-item:hover{background:var(--surface-hover)}.roadmaps-view__sidebar-item--active{background:var(--card-hover)}.roadmaps-view__sidebar-item-content{flex:1;min-width:0}.roadmaps-view__sidebar-item-title{font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.roadmaps-view__sidebar-item-desc{font-size:.8rem;color:var(--text-muted);margin-top:2px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.roadmaps-view__sidebar-item-actions{display:flex;gap:2px;opacity:0;transition:opacity var(--transition-fast)}.roadmaps-view__sidebar-item:hover .roadmaps-view__sidebar-item-actions{opacity:1}.roadmaps-view__icon-btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.roadmaps-view__icon-btn:hover{background:var(--surface-hover, color-mix(in srgb, var(--text) 6%, transparent));color:var(--text)}.roadmaps-view__icon-btn--danger:hover{background:color-mix(in srgb,var(--color-error) 10%,transparent);color:var(--color-error)}.roadmaps-view__icon-btn--success:hover{background:color-mix(in srgb,var(--color-success) 10%,transparent);color:var(--color-success)}.roadmaps-view__icon-btn:disabled{opacity:.4;cursor:not-allowed}.roadmaps-view__main{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}.roadmaps-view__empty-main{display:flex;align-items:center;justify-content:center;flex:1;color:var(--text-muted)}.roadmaps-view__roadmap-header{padding:var(--space-lg);border-bottom:1px solid var(--border)}.roadmaps-view__roadmap-title-row{display:flex;align-items:center;gap:var(--space-md)}.roadmaps-view__roadmap-title{font-size:1.5rem;font-weight:600;color:var(--text-primary);flex:1}.roadmaps-view__roadmap-actions{display:flex;gap:var(--space-xs)}.roadmaps-view__roadmap-desc{margin-top:var(--space-sm);color:var(--text-muted);font-size:.95rem}.roadmaps-view__milestone-lanes{flex:1;display:flex;flex-direction:row;gap:var(--space-md);padding:var(--space-md);overflow-x:auto;overflow-y:hidden}.roadmaps-view__milestone{min-width:300px;width:320px;flex-shrink:0;display:flex;flex-direction:column;background:var(--surface-elevated);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);transition:opacity var(--transition-fast),border-color var(--transition-fast),box-shadow var(--transition-fast);cursor:grab}.roadmaps-view__milestone:active{cursor:grabbing}.roadmaps-view__milestone--dragging{opacity:.5}.roadmaps-view__milestone--drop-target{border-color:var(--accent)}.roadmaps-view__milestone--drop-before{border-top:3px solid var(--accent)}.roadmaps-view__milestone--drop-after{border-bottom:3px solid var(--accent)}.roadmaps-view__drag-handle{display:flex;align-items:center;justify-content:center;color:var(--text-muted);cursor:grab;padding:2px;border-radius:var(--radius-sm);transition:color var(--transition-fast),background var(--transition-fast)}.roadmaps-view__drag-handle:hover{color:var(--text-primary);background:var(--surface-hover)}.roadmaps-view__milestone-header{padding:var(--space-md);border-bottom:1px solid var(--border)}.roadmaps-view__milestone-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-sm)}.roadmaps-view__milestone-title{font-size:1rem;font-weight:600;color:var(--text-primary);flex:1}.roadmaps-view__milestone-actions{display:flex;gap:2px}.roadmaps-view__milestone-desc{margin-top:var(--space-xs);font-size:.85rem;color:var(--text-muted)}.roadmaps-view__milestone-actions-bar{padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--border)}.roadmaps-view__add-feature-btn{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);border:1px dashed var(--border);border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);font-size:.8rem;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast),border-color var(--transition-fast)}.roadmaps-view__add-feature-btn:hover{background:var(--surface-hover);color:var(--text-primary);border-color:var(--text-muted)}.roadmaps-view__suggest-btn{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);background:var(--accent);color:var(--cta-text);border:1px solid var(--accent);border-radius:var(--radius-md);font-size:.75rem;cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast)}.roadmaps-view__suggest-btn:hover{background:color-mix(in srgb,var(--accent) 88%,var(--bg) 12%);border-color:color-mix(in srgb,var(--accent) 88%,var(--bg) 12%)}.roadmaps-view__suggest-btn:active{transform:scale(.97)}.roadmaps-view__suggest-btn:disabled{opacity:.5;cursor:not-allowed}.roadmaps-view__feature-list{flex:1;overflow-y:auto;padding:var(--space-sm);transition:background var(--transition-fast)}.roadmaps-view__feature-list--drop-target{background:color-mix(in srgb,var(--color-info) 5%,transparent)}.roadmaps-view__empty-features{padding:var(--space-md);text-align:center;color:var(--text-muted);font-size:.85rem}.roadmaps-view__feature-item{display:flex;align-items:flex-start;justify-content:space-between;padding:var(--space-sm);border-bottom:1px solid var(--border);gap:var(--space-sm);transition:opacity var(--transition-fast),border-color var(--transition-fast);cursor:grab}.roadmaps-view__feature-item:active{cursor:grabbing}.roadmaps-view__feature-item:last-child{border-bottom:none}.roadmaps-view__feature-item--dragging{opacity:.5}.roadmaps-view__feature-item--drop-before{border-top:3px solid var(--accent)}.roadmaps-view__feature-item--drop-after{border-bottom:3px solid var(--accent)}.roadmaps-view__drag-handle--feature{flex-shrink:0}.roadmaps-view__feature-content{flex:1;min-width:0}.roadmaps-view__feature-title{font-weight:500;color:var(--text-primary);font-size:.9rem}.roadmaps-view__feature-desc{font-size:.8rem;color:var(--text-muted);margin-top:2px}.roadmaps-view__feature-actions{display:flex;gap:2px;opacity:0;transition:opacity var(--transition-fast)}.roadmaps-view__feature-item:hover .roadmaps-view__feature-actions{opacity:1}.roadmaps-view__inline-edit{display:flex;flex-direction:column;gap:var(--space-sm)}.roadmaps-view__inline-edit-row{display:flex;align-items:center;gap:var(--space-xs)}.roadmaps-view__inline-input{flex:1;padding:var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-input);color:var(--text-primary);font-size:.9rem;font-family:inherit}.roadmaps-view__inline-input:focus{outline:none;border-color:var(--accent)}.roadmaps-view__inline-input--large{font-size:1.1rem;font-weight:600;padding:var(--space-sm) var(--space-md)}.roadmaps-view__inline-textarea{width:100%;padding:var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-input);color:var(--text-primary);font-size:.85rem;font-family:inherit;resize:vertical}.roadmaps-view__inline-textarea:focus{outline:none;border-color:var(--accent)}.roadmaps-view__create-form{padding:var(--space-md);border-bottom:1px solid var(--border);background:var(--surface-elevated)}.roadmaps-view__create-form-actions{display:flex;gap:var(--space-sm);margin-top:var(--space-sm)}.roadmaps-view__btn{padding:var(--space-sm) var(--space-md);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-input);color:var(--text-primary);font-size:.85rem;cursor:pointer;transition:background var(--transition-fast)}.roadmaps-view__btn:hover{background:var(--surface-hover)}.roadmaps-view__btn--primary{background:var(--accent);border-color:var(--accent);color:var(--cta-text)}.roadmaps-view__btn--primary:hover{opacity:.9}.roadmaps-view__btn:disabled{opacity:.5;cursor:not-allowed}.roadmaps-view__empty-milestones{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;gap:var(--space-md);color:var(--text-muted);padding:var(--space-xl)}.roadmaps-view__add-milestone-btn,.roadmaps-view__add-milestone-fab{display:inline-flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);border:1px dashed var(--border);border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);font-size:.9rem;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast),border-color var(--transition-fast)}.roadmaps-view__add-milestone-fab{align-self:flex-start;min-width:150px}.roadmaps-view__add-milestone-btn:hover,.roadmaps-view__add-milestone-fab:hover{background:var(--surface-hover);color:var(--text-primary);border-color:var(--text-muted)}.roadmaps-view__create-form--inline{border:1px dashed var(--border);border-radius:var(--radius-sm);margin:var(--space-sm);background:var(--surface-elevated)}.roadmaps-view__inline-form{display:flex;flex-direction:column;gap:var(--space-xs)}.roadmaps-view__inline-form-actions{display:flex;justify-content:flex-end;gap:var(--space-xs)}.roadmaps-view__feature-create-overlay{position:fixed;bottom:var(--space-lg);left:50%;transform:translate(-50%);z-index:100}.roadmaps-view__inline-edit--compact .roadmaps-view__inline-input{padding:var(--space-xs) var(--space-sm);font-size:.85rem}.roadmap-suggestion-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-lg);margin-bottom:var(--space-lg)}.roadmap-suggestion-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-md)}.roadmap-suggestion-title{font-size:1rem;font-weight:600;color:var(--text-primary);margin:0}.roadmap-suggestion-form{display:flex;flex-direction:column;gap:var(--space-sm)}.roadmap-suggestion-input{width:100%;padding:var(--space-sm) var(--space-md);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-input);color:var(--text-primary);font-size:.9rem;font-family:inherit;resize:vertical;min-height:60px;transition:border-color var(--transition-fast)}.roadmap-suggestion-input:focus{outline:none;border-color:var(--accent);box-shadow:var(--focus-ring)}.roadmap-suggestion-input:disabled{opacity:.6;cursor:not-allowed}.roadmap-suggestion-input::placeholder{color:var(--text-muted)}.roadmap-suggestion-actions{display:flex;gap:var(--space-sm);align-items:center}.roadmap-suggestion-generate-btn{padding:var(--space-sm) var(--space-lg);background:var(--accent);color:var(--cta-text);border:none;border-radius:var(--radius-sm);font-size:.9rem;font-weight:500;cursor:pointer;transition:opacity var(--transition-fast),transform var(--transition-instant)}.roadmap-suggestion-generate-btn:hover:not(:disabled){opacity:.9}.roadmap-suggestion-generate-btn:active:not(:disabled){transform:scale(.98)}.roadmap-suggestion-generate-btn:disabled{opacity:.5;cursor:not-allowed}.roadmap-suggestion-accept-all-btn{padding:var(--space-sm) var(--space-md);background:var(--color-success);color:var(--cta-text);border:none;border-radius:var(--radius-sm);font-size:.85rem;font-weight:500;cursor:pointer;transition:opacity var(--transition-fast),transform var(--transition-instant)}.roadmap-suggestion-accept-all-btn:hover{opacity:.9}.roadmap-suggestion-accept-all-btn:active{transform:scale(.98)}.roadmap-suggestion-clear-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:transparent;color:var(--text-muted);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:color var(--transition-fast),border-color var(--transition-fast)}.roadmap-suggestion-clear-btn:hover{color:var(--color-error);border-color:var(--color-error)}.roadmap-suggestion-list{display:flex;flex-direction:column;gap:var(--space-sm);margin-top:var(--space-md)}.roadmap-suggestion-card{display:flex;align-items:flex-start;justify-content:space-between;padding:var(--space-md);background:var(--surface-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.roadmap-suggestion-card:hover{border-color:var(--accent);box-shadow:var(--shadow-sm)}.roadmap-suggestion-card-content{display:flex;flex-direction:column;gap:var(--space-xs);flex:1;min-width:0}.roadmap-suggestion-card-title{font-size:.9rem;font-weight:500;color:var(--text-primary)}.roadmap-suggestion-card-desc{font-size:.85rem;color:var(--text-muted);line-height:1.4}.roadmap-suggestion-card-actions{display:flex;gap:var(--space-xs);flex-shrink:0}.roadmap-suggestion-accept-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:var(--color-success);color:var(--cta-text);border:none;border-radius:var(--radius-sm);cursor:pointer;transition:opacity var(--transition-fast),transform var(--transition-instant)}.roadmap-suggestion-accept-btn:hover{opacity:.9}.roadmap-suggestion-accept-btn:active{transform:scale(.95)}.roadmap-suggestion-accept-btn:disabled{opacity:.5;cursor:not-allowed}.roadmap-suggestion-edit-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:var(--surface-elevated);color:var(--text-muted);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:background-color var(--transition-fast),color var(--transition-fast)}.roadmap-suggestion-edit-btn:hover{background:var(--surface-hover);color:var(--text-primary)}.roadmap-suggestion-card--editing{background:var(--surface-elevated);border-color:var(--accent)}.roadmap-suggestion-edit-form{display:flex;flex-direction:column;gap:var(--space-sm);flex:1;min-width:0}.roadmap-suggestion-textarea{width:100%;padding:var(--space-sm);background:var(--bg);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:.9rem;font-family:inherit;resize:vertical;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.roadmap-suggestion-textarea:focus{outline:none;border-color:var(--accent);box-shadow:var(--focus-ring)}.roadmap-suggestion-textarea::placeholder{color:var(--text-dim)}.roadmap-suggestion-edit-actions{display:flex;gap:var(--space-xs)}.roadmap-suggestion-save-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:var(--color-success);color:var(--cta-text);border:none;border-radius:var(--radius-sm);cursor:pointer;transition:opacity var(--transition-fast)}.roadmap-suggestion-save-btn:hover:not(:disabled){opacity:.9}.roadmap-suggestion-save-btn:disabled{opacity:.5;cursor:not-allowed}.roadmap-suggestion-cancel-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:var(--surface-elevated);color:var(--text-muted);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:background-color var(--transition-fast),color var(--transition-fast)}.roadmap-suggestion-cancel-btn:hover{background:var(--surface-hover);color:var(--text-primary)}.roadmap-suggestion-expand-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--space-sm);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-md) var(--space-lg);color:var(--text-primary);cursor:pointer;font-size:.9rem;font-weight:600;transition:background var(--transition-fast),color var(--transition-fast)}.roadmap-suggestion-expand-btn:hover:not(:disabled){background:var(--card-hover)}.roadmap-suggestion-expand-btn:active:not(:disabled){transform:scale(.98)}.roadmap-suggestion-expand-btn:disabled{opacity:.5;cursor:not-allowed}.roadmap-suggestion-collapse-btn{display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--text-muted);cursor:pointer;padding:var(--space-xs);border-radius:var(--radius-sm);transition:color var(--transition-fast)}.roadmap-suggestion-collapse-btn:hover{color:var(--text-primary)}@media(max-width:768px){.roadmaps-view{overflow-y:auto;-webkit-overflow-scrolling:touch}.roadmaps-view__sidebar{display:none}.roadmaps-view__main{overflow-y:auto;-webkit-overflow-scrolling:touch;flex:1;padding-bottom:calc(var(--mobile-nav-height) + env(safe-area-inset-bottom,0px))}.roadmaps-view__mobile-list{display:flex;flex-direction:column;width:100%;height:100%;background:var(--surface)}.roadmaps-view__mobile-list-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--border);flex-shrink:0}.roadmaps-view__mobile-list-title{margin:0;font-size:1rem;font-weight:600;color:var(--text)}.roadmaps-view__mobile-add-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:var(--radius-md);background:var(--accent);color:var(--cta-text);cursor:pointer;transition:opacity var(--transition-fast)}.roadmaps-view__mobile-add-btn:hover{opacity:.85}.roadmaps-view__mobile-add-btn:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.roadmaps-view__mobile-create-form{padding:var(--space-md);border-bottom:1px solid var(--border);background:var(--bg)}.roadmaps-view__mobile-list-items{flex:1;overflow-y:auto}.roadmaps-view__mobile-item{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--border);min-height:44px;cursor:pointer;transition:background var(--transition-fast)}.roadmaps-view__mobile-item:hover{background:var(--surface-hover)}.roadmaps-view__mobile-item--active{background:color-mix(in srgb,var(--accent) 10%,transparent);border-left:3px solid var(--accent)}.roadmaps-view__mobile-item-content{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.roadmaps-view__mobile-item-title{font-weight:500;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.roadmaps-view__mobile-item-desc{font-size:.8rem;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.roadmaps-view__mobile-item-actions{display:flex;gap:var(--space-xs);flex-shrink:0}.roadmaps-view__mobile-action-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:var(--radius-md);background:transparent;color:var(--text-muted);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.roadmaps-view__mobile-action-btn:hover{background:var(--surface-hover);color:var(--text)}.roadmaps-view__mobile-action-btn:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.roadmaps-view__mobile-action-btn--danger:hover{background:color-mix(in srgb,var(--color-error) 10%,transparent);color:var(--color-error)}.roadmaps-view__mobile-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);padding:var(--space-2xl);color:var(--text-muted);text-align:center}.roadmaps-view__mobile-header{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0;position:sticky;top:0;z-index:10}.roadmaps-view__mobile-back-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:var(--radius-md);background:transparent;color:var(--text-muted);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast);flex-shrink:0}.roadmaps-view__mobile-back-btn:hover{background:var(--surface-hover);color:var(--text)}.roadmaps-view__mobile-back-btn:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.roadmaps-view__mobile-header-title{flex:1;margin:0;font-size:1rem;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.roadmaps-view__mobile-header-actions{display:flex;gap:var(--space-xs);flex-shrink:0}.roadmaps-view__milestone-lanes{flex-direction:column;overflow-x:hidden;overflow-y:auto;padding-bottom:calc(var(--mobile-nav-height) + env(safe-area-inset-bottom,0px))}.roadmaps-view__milestone{width:100%;min-width:unset}.roadmap-suggestion-section{padding:var(--space-md);margin:var(--space-md)}.roadmap-suggestion-actions{flex-wrap:wrap}.roadmap-suggestion-generate-btn,.roadmap-suggestion-accept-all-btn{flex:1}.roadmap-suggestion-card{padding:var(--space-sm)}.roadmaps-view__roadmap-header{padding:var(--space-md) var(--space-lg)}.roadmaps-view__create-form{margin:var(--space-sm)}.roadmaps-view__icon-btn{width:36px;height:36px}.roadmaps-view__feature-create-overlay{bottom:calc(var(--mobile-nav-height) + env(safe-area-inset-bottom,0px) + var(--space-md))}}
@@ -0,0 +1,21 @@
1
+ import{r as n,j as w}from"./vendor-react-K0fH_qHe.js";import{cj as Ct,ck as St,t as Dt,w as Tt,b7 as It}from"./index-bEwSVl7B.js";import{c as ut}from"./createLucideIcon-BazL2hk5.js";import"./vendor-xterm-DzcZoU0P.js";const xt=4;function Nt({taskId:t,position:o,scale:i,canDrag:d,onPositionChange:u,onDragStateChange:s,onDragEnd:f}){const[h,C]=n.useState(!1),M=n.useRef(null),y=n.useRef(o),S=n.useRef(!1);y.current=o;const c=n.useCallback(a=>{M.current=null,C(!1),a&&(s?.(!1),f?.(),S.current=!0)},[f,s]),l=n.useCallback(a=>{if(!a.isPrimary||!d)return;a.stopPropagation();const D=a.currentTarget;typeof D.setPointerCapture=="function"&&D.setPointerCapture(a.pointerId),M.current={pointerId:a.pointerId,startPointer:{x:a.clientX,y:a.clientY},startPosition:y.current}},[d]),I=n.useCallback(a=>{const D=M.current;if(!D||D.pointerId!==a.pointerId)return;a.stopPropagation();const $=a.clientX-D.startPointer.x,H=a.clientY-D.startPointer.y,_=Math.hypot($,H);if(!h&&_>=xt&&(C(!0),s?.(!0)),_<xt)return;const v=i>0?i:1;u(t,{x:D.startPosition.x+$/v,y:D.startPosition.y+H/v})},[h,s,u,i,t]),x=n.useCallback(a=>{const D=M.current;!D||D.pointerId!==a.pointerId||(a.stopPropagation(),typeof a.currentTarget.hasPointerCapture=="function"&&a.currentTarget.hasPointerCapture(a.pointerId)&&typeof a.currentTarget.releasePointerCapture=="function"&&a.currentTarget.releasePointerCapture(a.pointerId),c(h))},[c,h]),z=n.useCallback(a=>{const D=M.current;!D||D.pointerId!==a.pointerId||(a.stopPropagation(),typeof a.currentTarget.hasPointerCapture=="function"&&a.currentTarget.hasPointerCapture(a.pointerId)&&typeof a.currentTarget.releasePointerCapture=="function"&&a.currentTarget.releasePointerCapture(a.pointerId),c(h))},[c,h]),N=n.useCallback(a=>{S.current&&(S.current=!1,a.preventDefault(),a.stopPropagation())},[]);return n.useMemo(()=>({isDragging:h,onPointerDown:l,onPointerMove:I,onPointerUp:x,onPointerCancel:z,onClickCapture:N}),[h,N,z,l,I,x])}const Rt=new Set(["planning","researching","executing","finalizing","merging","merging-fix"]);function zt(t){return t?t.charAt(0).toUpperCase()+t.slice(1):"Executing"}function jt({style:t,position:o,scale:i,isSelected:d=!1,isHighlighted:u=!1,isDimmed:s=!1,onMouseEnter:f,onMouseLeave:h,onClick:C,onNodePositionChange:M,onNodeDragStateChange:y,onNodeDragEnd:S,...c}){const{task:l,globalPaused:I,taskStuckTimeoutMs:x,lastFetchTimeMs:z,onOpenDetail:N}=c,a=l.status==="failed",D=l.paused===!0,$=Ct(l,x,z),H=l.column==="triage"&&l.status==="awaiting-approval",_=!I&&!a&&!D&&!$&&!H&&(l.column==="in-progress"||Rt.has(l.status)),v=typeof l.currentStep=="number"&&l.currentStep>=0&&Array.isArray(l.steps)&&l.currentStep<l.steps.length,tt=l.column==="in-review",j=Nt({taskId:l.id,position:o,scale:i,canDrag:d,onPositionChange:M,onDragStateChange:y,onDragEnd:S});return w.jsxs("div",{className:`graph-task-node${d?" graph-node--draggable graph-task-node--selected":""}${j.isDragging?" graph-node--dragging":""}${u?" graph-task-node--highlighted graph-node--highlighted":""}${s?" graph-task-node--dimmed graph-node--dimmed":""}${_?" graph-task-node--active":""}${tt?" graph-task-node--in-review":""}`,style:t,draggable:!1,"data-testid":`graph-task-node-${l.id}`,"data-current-step":_&&v?String(l.currentStep):void 0,onMouseEnter:f,onMouseLeave:h,onClick:C,onDoubleClick:G=>{G.defaultPrevented||N(l)},onClickCapture:j.onClickCapture,onPointerDown:j.onPointerDown,onPointerMove:j.onPointerMove,onPointerUp:j.onPointerUp,onPointerCancel:j.onPointerCancel,children:[_?w.jsx("div",{className:"graph-task-active-indicator",children:w.jsx("span",{className:"graph-task-active-indicator-text",children:zt(l.status)})}):null,w.jsx(St,{...c,onOpenDetail:()=>{},disableDrag:!0})]})}/**
2
+ * @license lucide-react v0.542.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const Et=[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]],Ot=ut("maximize",Et);/**
7
+ * @license lucide-react v0.542.0 - ISC
8
+ *
9
+ * This source code is licensed under the ISC license.
10
+ * See the LICENSE file in the root directory of this source tree.
11
+ */const Yt=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],_t=ut("rotate-ccw",Yt);/**
12
+ * @license lucide-react v0.542.0 - ISC
13
+ *
14
+ * This source code is licensed under the ISC license.
15
+ * See the LICENSE file in the root directory of this source tree.
16
+ */const Xt=[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"11",x2:"11",y1:"8",y2:"14",key:"1vmskp"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]],$t=ut("zoom-in",Xt);/**
17
+ * @license lucide-react v0.542.0 - ISC
18
+ *
19
+ * This source code is licensed under the ISC license.
20
+ * See the LICENSE file in the root directory of this source tree.
21
+ */const Gt=[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]],At=ut("zoom-out",Gt);function Ht({zoom:t,onZoomIn:o,onZoomOut:i,onFitToGraph:d,onResetView:u}){return w.jsxs("div",{className:"graph-toolbar","data-testid":"graph-toolbar",children:[w.jsx("button",{className:"btn btn-icon",title:"Zoom in (Ctrl+=)","aria-label":"Zoom in",onClick:o,children:w.jsx($t,{size:16})}),w.jsx("button",{className:"btn btn-icon",title:"Zoom out (Ctrl+-)","aria-label":"Zoom out",onClick:i,children:w.jsx(At,{size:16})}),w.jsxs("div",{className:"graph-toolbar__zoom-label","aria-live":"polite",children:[Math.round(t*100),"%"]}),w.jsx("button",{className:"btn btn-icon",title:"Fit to graph (Ctrl+Shift+F)","aria-label":"Fit to graph",onClick:d,children:w.jsx(Ot,{size:16})}),w.jsx("button",{className:"btn btn-icon",title:"Reset view (Ctrl+0)","aria-label":"Reset view",onClick:u,children:w.jsx(_t,{size:16})})]})}const Lt=280,vt=100;function Wt({edges:t,positions:o,nodeWidth:i=Lt,nodeHeight:d=vt,highlightedEdgeIds:u}){const s=!!(u&&u.size>0);return w.jsxs("svg",{className:"dependency-graph-edges","aria-hidden":"true",children:[w.jsx("defs",{children:w.jsx("marker",{id:"dependency-graph-arrowhead",markerWidth:"10",markerHeight:"7",refX:"10",refY:"3.5",orient:"auto",markerUnits:"strokeWidth",children:w.jsx("path",{d:"M 0 0 L 10 3.5 L 0 7 z",fill:"var(--border)"})})}),t.map(f=>{const h=o.get(f.source),C=o.get(f.target);if(!h||!C)return null;const M=`${f.source}->${f.target}`,y=s&&(u?.has(M)??!1),S=h.x+i/2,c=h.y+d,l=C.x+i/2,I=C.y,x=c+(I-c)/2;return w.jsx("path",{"data-testid":"dependency-edge","data-edge-id":M,className:`dependency-graph-edge${y?" graph-edge--highlighted":""}${s&&!y?" graph-edge--dimmed":""}`,d:`M ${S} ${c} C ${S} ${x}, ${l} ${x}, ${l} ${I}`,fill:"none",stroke:y?"var(--todo)":"var(--border)",strokeWidth:y?"var(--space-xs)":"var(--btn-border-width)",opacity:s&&!y?.15:1,markerEnd:"url(#dependency-graph-arrowhead)",style:{transition:"opacity var(--transition-fast), stroke var(--transition-fast), stroke-width var(--transition-fast)"}},M)})]})}const Ft=new Set(["triage","todo","in-progress","in-review"]);function Ut(t){return t.filter(o=>Ft.has(o.column))}const Zt={nodeWidth:280,nodeHeight:100,horizontalGap:40,verticalGap:80};function ft(t,o){const i={...Zt,...o},d=t.nodes.map(c=>c.task.id);if(d.length===0)return new Map;const u=new Map,s=new Map;for(const c of d)s.set(c,0),u.set(c,[]);for(const c of t.edges)!s.has(c.source)||!s.has(c.target)||(u.get(c.target)?.push(c.source),s.set(c.source,(s.get(c.source)??0)+1));const f=d.filter(c=>(s.get(c)??0)===0),h=[];for(;f.length>0;){const c=f.shift();h.push(c);for(const l of u.get(c)??[]){const I=(s.get(l)??0)-1;s.set(l,I),I===0&&f.push(l)}}for(const c of d)h.includes(c)||h.push(c);const C=new Map;for(const c of h){const l=t.edges.filter(x=>x.source===c).map(x=>x.target);let I=0;for(const x of l)I=Math.max(I,(C.get(x)??0)+1);C.set(c,I)}const M=new Map;for(const c of d){const l=C.get(c)??0,I=M.get(l)??[];I.push(c),M.set(l,I)}const y=new Map,S=Array.from(M.keys()).sort((c,l)=>c-l);for(const c of S){const l=M.get(c)??[];l.sort();const x=-(l.length*i.nodeWidth+Math.max(0,l.length-1)*i.horizontalGap)/2;l.forEach((z,N)=>{const a=x+N*(i.nodeWidth+i.horizontalGap),D=c*(i.nodeHeight+i.verticalGap);y.set(z,{x:a,y:D})})}return y}function Bt(t){return n.useMemo(()=>{const o=t.map(u=>({task:u})),i=new Set(t.map(u=>u.id)),d=t.flatMap(u=>(u.dependencies??[]).filter(s=>i.has(s)).map(s=>({source:u.id,target:s})));return{nodes:o,edges:d}},[t])}const st=.1,at=3,kt=40,Vt=200;function U(t,o,i){return Math.min(i,Math.max(o,t))}function Kt(t){if(!(t instanceof HTMLElement))return!1;const o=t.tagName.toLowerCase();return t.isContentEditable||o==="input"||o==="textarea"||o==="select"}function qt(){const[t,o]=n.useState({x:0,y:0}),[i,d]=n.useState(1),[u,s]=n.useState(!1),f=n.useRef(t),h=n.useRef(i),C=n.useRef(null),M=n.useRef(null),y=n.useRef(new Map),S=n.useRef(null),c=n.useRef({minX:0,minY:0,maxX:0,maxY:0});n.useEffect(()=>{f.current=t},[t]),n.useEffect(()=>{h.current=i},[i]),n.useEffect(()=>()=>{C.current!==null&&window.clearTimeout(C.current)},[]);const l=n.useMemo(()=>`translate(${t.x}px, ${t.y}px) scale(${i})`,[t.x,t.y,i]),I=n.useMemo(()=>Math.round(i*100),[i]),x=n.useCallback(r=>{if(!r){C.current!==null&&(window.clearTimeout(C.current),C.current=null),s(!1);return}s(!0),C.current!==null&&window.clearTimeout(C.current),C.current=window.setTimeout(()=>{s(!1),C.current=null},Vt)},[]),z=n.useCallback((r,p,m,k=h.current)=>{const P=c.current;if(P.maxX<=P.minX||P.maxY<=P.minY)return{x:U(r.x,-p,p),y:U(r.y,-m,m)};const O=p-P.maxX*k,b=-P.minX*k,R=m-P.maxY*k,Y=-P.minY*k,J=O>b?(O+b)/2:U(r.x,O,b),B=R>Y?(R+Y)/2:U(r.y,R,Y);return{x:J,y:B}},[]),N=n.useCallback((r,p,m,k)=>{const P=h.current,O=f.current,b=U(r,st,at),R=b/P,Y=z({x:p.x-(p.x-O.x)*R,y:p.y-(p.y-O.y)*R},m,k,b);d(b),o(Y)},[z]),a=n.useCallback((r,p,m,k)=>{x(!1);const P=k??{x:p/2,y:m/2};N(h.current*r,P,p,m)},[x,N]),D=n.useCallback((r,p)=>{if(r&&p){a(1.2,r,p);return}d(m=>U(m+.1,st,at))},[a]),$=n.useCallback((r,p)=>{if(r&&p){a(1/1.2,r,p);return}d(m=>U(m-.1,st,at))},[a]),H=n.useCallback(()=>{x(!0),o({x:0,y:0}),d(1)},[x]),_=n.useCallback((r,p,m,k)=>{if(x(!0),r.size===0){o({x:0,y:0}),d(1);return}const P=k?.nodeWidth??280,O=k?.nodeHeight??100,b=Array.from(r.values()),R=Math.min(...b.map(W=>W.x)),Y=Math.min(...b.map(W=>W.y)),J=Math.max(...b.map(W=>W.x+P)),B=Math.max(...b.map(W=>W.y+O)),V=Math.max(1,J-R),Q=Math.max(1,B-Y),nt=Math.max(1,p-kt*2),lt=Math.max(1,m-kt*2),K=U(Math.min(nt/V,lt/Q),st,at),ot=(p-V*K)/2-R*K,dt=(m-Q*K)/2-Y*K;d(K),o(z({x:ot,y:dt},p,m,K))},[z,x]),v=n.useCallback((r,p)=>{if(y.current.set(r,p),y.current.size===2){const[m,k]=Array.from(y.current.values());S.current={distance:Math.hypot(m.x-k.x,m.y-k.y),zoom:h.current,pan:f.current,midpoint:{x:(m.x+k.x)/2,y:(m.y+k.y)/2}},M.current=null;return}M.current={start:p,panStart:f.current}},[]),tt=n.useCallback((r,p,m,k)=>{if(y.current.has(r)&&y.current.set(r,p),y.current.size===2&&S.current){x(!1);const[b,R]=Array.from(y.current.values()),J=Math.hypot(b.x-R.x,b.y-R.y)/Math.max(1,S.current.distance),B={x:(b.x+R.x)/2,y:(b.y+R.y)/2},V=U(S.current.zoom*J,st,at),Q=V/S.current.zoom,nt=z({x:B.x-(S.current.midpoint.x-S.current.pan.x)*Q,y:B.y-(S.current.midpoint.y-S.current.pan.y)*Q},m,k);d(V),o(nt);return}const P=M.current;if(!P)return;x(!1);const O={x:P.panStart.x+(p.x-P.start.x),y:P.panStart.y+(p.y-P.start.y)};o(z(O,m,k))},[z,x]),j=n.useCallback(r=>{if(y.current.delete(r),y.current.size<2&&(S.current=null),y.current.size===1){const[p]=Array.from(y.current.values());M.current={start:p,panStart:f.current};return}y.current.size===0&&(M.current=null)},[]),G=n.useCallback((r,p,m,k)=>{const P=r<0?1.1:.9;x(!1),N(h.current*P,p,m,k)},[x,N]),it=n.useCallback(r=>{c.current=r},[]),et=n.useCallback((r,p,m,k,P)=>{if(Kt(r.target))return;const O=r.metaKey||r.ctrlKey;if(r.key==="Escape"){r.preventDefault(),H();return}if(O){if(r.key==="="||r.key==="+"){r.preventDefault(),a(1.2,p,m);return}if(r.key==="-"){r.preventDefault(),a(1/1.2,p,m);return}if(r.key==="0"){r.preventDefault(),H();return}(r.key==="f"||r.key==="F")&&r.shiftKey&&(r.preventDefault(),_(k,p,m,P))}},[_,H,a]);return{pan:t,zoom:i,zoomPercent:I,transform:l,transitioning:u,zoomIn:D,zoomOut:$,resetView:H,fitToGraph:_,setAnimate:x,onPointerDown:v,onPointerMove:tt,onPointerUp:j,onWheelZoom:G,handleKeyDown:et,setGraphBounds:it}}function Jt(t){const{upstreamMap:o,downstreamMap:i}=n.useMemo(()=>{const u=new Map,s=new Map;for(const f of t)u.set(f.id,new Set(f.dependencies??[])),s.has(f.id)||s.set(f.id,new Set);for(const f of t)for(const h of f.dependencies??[])s.has(h)||s.set(h,new Set),s.get(h)?.add(f.id);return{upstreamMap:u,downstreamMap:s}},[t]);return{getChain:n.useCallback(u=>{if(!o.has(u)&&!i.has(u))return new Set;const s=new Set([u]),f=(h,C)=>{const M=[h],y=new Set([h]);for(;M.length>0;){const S=M.shift();if(!S)continue;const c=C.get(S);if(c)for(const l of c)y.has(l)||(y.add(l),s.add(l),M.push(l))}};return f(u,o),f(u,i),s},[i,o])}}const ht="fusion-plugin-dependency-graph:positions";function ct(t){if(!t||typeof t!="object")return!1;const o=t;return typeof o.x=="number"&&Number.isFinite(o.x)&&typeof o.y=="number"&&Number.isFinite(o.y)}function Qt(t){const o=Dt(ht,t);if(!o)return{};try{const i=JSON.parse(o);if(!i||typeof i!="object")return{};const d={};for(const[u,s]of Object.entries(i))ct(s)&&(d[u]=s);return d}catch{return{}}}function te(t,o,i){const d={};for(const[u,s]of Object.entries(t))o.has(u)&&ct(s)&&(d[u]=s);Tt(ht,JSON.stringify(d),i)}function ee(t){It(ht,t)}function ne(t,o,i){const d={};for(const[u,s]of Object.entries(t))i.has(u)&&ct(s)&&(d[u]=s);for(const[u,s]of Object.entries(o))i.has(u)&&ct(s)&&(d[u]=s);return d}function oe(t,o){const i={};for(const[d,u]of Object.entries(t))o.has(d)&&(i[d]=u);return i}function re({projectId:t,visibleTaskIds:o}){const[i,d]=n.useState(null);n.useEffect(()=>{d(Qt(t))},[t]);const u=n.useCallback(f=>{te(f,o,t),d(oe(f,o))},[t,o]),s=n.useCallback(()=>{ee(t),d(null)},[t]);return{savedPositions:i,persistPositions:u,clearSavedPositions:s}}const q=280,Z=100,Mt=4;function se({tasks:t,projectId:o,onOpenTaskDetail:i,onOpenDetail:d,addToast:u,globalPaused:s,onUpdateTask:f,onArchiveTask:h,onUnarchiveTask:C,onDeleteTask:M,onRetryTask:y,onOpenDetailWithTab:S,taskStuckTimeoutMs:c,onOpenMission:l,onMoveTask:I,lastFetchTimeMs:x,workflowStepNameLookup:z}){const N=n.useRef(null),a=n.useRef(!1),D=n.useRef(null),$=n.useRef(!1),[H,_]=n.useState(null),[v,tt]=n.useState(null),j=n.useMemo(()=>Ut(t),[t]),G=Bt(j),{getChain:it}=Jt(j),et=H??v,r=n.useMemo(()=>et?it(et):new Set,[et,it]),p=n.useMemo(()=>ft(G,{nodeWidth:q,nodeHeight:Z,horizontalGap:40,verticalGap:80}),[G]),m=n.useMemo(()=>new Set(j.map(e=>e.id)),[j]),{savedPositions:k,persistPositions:P,clearSavedPositions:O}=re({projectId:o,visibleTaskIds:m}),[b,R]=n.useState(p),[Y,J]=n.useState(!1);n.useEffect(()=>{const e={};for(const[T,E]of p.entries())e[T]=E;const g=k?ne(e,k,m):e;R(new Map(Object.entries(g)))},[p,k,m]);const{transform:B,zoom:V,transitioning:Q,zoomIn:nt,zoomOut:lt,resetView:K,fitToGraph:ot,onPointerDown:dt,onPointerMove:W,onPointerUp:mt,onWheelZoom:bt,handleKeyDown:Pt,setGraphBounds:gt}=qt();n.useEffect(()=>{if(a.current||j.length===0)return;if(!!(k&&Object.keys(k).length>0)){a.current=!0;return}const g=N.current;g&&(ot(b,g.clientWidth,g.clientHeight,{nodeWidth:q,nodeHeight:Z}),a.current=!0)},[j.length,ot,b,k]);const A=n.useMemo(()=>{const e=Array.from(b.values());if(e.length===0)return{minX:0,minY:0,maxX:0,maxY:0,width:0,height:0};const g=Math.min(...e.map(X=>X.x)),T=Math.min(...e.map(X=>X.y)),E=Math.max(...e.map(X=>X.x+q)),L=Math.max(...e.map(X=>X.y+Z));return{minX:g,minY:T,maxX:E,maxY:L,width:Math.max(0,E-g),height:Math.max(0,L-T)}},[b]),pt=n.useMemo(()=>{if(b.size===0)return b;const e=new Map;for(const[g,T]of b.entries())e.set(g,{x:T.x-A.minX,y:T.y-A.minY});return e},[A.minX,A.minY,b]);n.useEffect(()=>{gt({minX:0,minY:0,maxX:A.width,maxY:A.height})},[A.height,A.width,gt]);const yt=n.useCallback(()=>{O();const e=ft(G,{nodeWidth:q,nodeHeight:Z,horizontalGap:40,verticalGap:80});R(e)},[O,G]),wt=n.useCallback(()=>{const e={};for(const[g,T]of b.entries())e[g]=T;P(e)},[P,b]);return w.jsxs("section",{className:"dependency-graph","data-testid":"dependency-graph",children:[w.jsx("div",{ref:N,className:"dependency-graph__viewport",onPointerDown:e=>{Y||(D.current={x:e.clientX,y:e.clientY},$.current=!1,dt(e.pointerId,{x:e.clientX,y:e.clientY}))},onPointerMove:e=>{if(Y)return;const g=N.current;if(!g)return;const T=D.current;if(T){const E=Math.abs(e.clientX-T.x),L=Math.abs(e.clientY-T.y);(E>Mt||L>Mt)&&($.current=!0)}W(e.pointerId,{x:e.clientX,y:e.clientY},g.clientWidth,g.clientHeight)},onPointerUp:e=>{Y||mt(e.pointerId),D.current=null},onPointerCancel:e=>{Y||mt(e.pointerId),D.current=null,$.current=!1},onWheel:e=>{e.preventDefault();const g=N.current;if(!g)return;const T=g.getBoundingClientRect();bt(e.deltaY,{x:e.clientX-T.left,y:e.clientY-T.top},g.clientWidth,g.clientHeight)},onKeyDown:e=>{const g=N.current;g&&Pt(e,g.clientWidth,g.clientHeight,pt,{nodeWidth:q,nodeHeight:Z})},tabIndex:0,onClick:()=>{$.current||Y||tt(null)},children:j.length===0?w.jsx("div",{className:"dependency-graph__empty",children:"No active tasks to display in graph view."}):w.jsxs("div",{className:`graph-canvas-transform${Q?" graph-canvas-transform--animate":""}`,style:{transform:B,width:`${A.width}px`,height:`${A.height}px`},children:[w.jsx(Wt,{edges:G.edges,positions:pt,nodeWidth:q,nodeHeight:Z,highlightedEdgeIds:r.size>0?new Set(G.edges.filter(e=>r.has(e.source)&&r.has(e.target)).map(e=>`${e.source}->${e.target}`)):void 0}),w.jsx("div",{className:"dependency-graph__nodes-layer",children:G.nodes.map(e=>{const g=pt.get(e.task.id);return g?w.jsx(jt,{task:e.task,projectId:o,isSelected:v===e.task.id,style:{minHeight:`${Z}px`,left:`${g.x}px`,top:`${g.y}px`},position:g,scale:V,onNodePositionChange:(T,E)=>{R(L=>{const X={x:E.x+A.minX,y:E.y+A.minY},F=L.get(T);if(F&&F.x===X.x&&F.y===X.y)return L;const rt=new Map(L);return rt.set(T,X),rt})},onNodeDragStateChange:J,onNodeDragEnd:wt,isHighlighted:r.size>0&&r.has(e.task.id),isDimmed:r.size>0&&!r.has(e.task.id),onOpenDetail:d??(T=>i?.(T.id)),addToast:u??(()=>{}),globalPaused:s,onUpdateTask:f,onArchiveTask:h,onUnarchiveTask:C,onDeleteTask:M,onRetryTask:y,onOpenDetailWithTab:S,taskStuckTimeoutMs:c,onOpenMission:l,onMoveTask:I,lastFetchTimeMs:x,workflowStepNameLookup:z,onMouseEnter:()=>_(e.task.id),onMouseLeave:()=>_(null),onClick:T=>{T.stopPropagation(),$.current=!1,tt(E=>E===e.task.id?null:e.task.id)}},e.task.id):null})})]})}),w.jsx(Ht,{zoom:V,onZoomIn:()=>{const e=N.current;e&&nt(e.clientWidth,e.clientHeight)},onZoomOut:()=>{const e=N.current;e&&lt(e.clientWidth,e.clientHeight)},onFitToGraph:()=>{yt();const e=N.current;if(!e)return;const g=ft(G,{nodeWidth:q,nodeHeight:Z,horizontalGap:40,verticalGap:80}),T=new Map,E=Array.from(g.values()),L=E.length>0?Math.min(...E.map(F=>F.x)):0,X=E.length>0?Math.min(...E.map(F=>F.y)):0;for(const[F,rt]of g.entries())T.set(F,{x:rt.x-L,y:rt.y-X});ot(T,e.clientWidth,e.clientHeight,{nodeWidth:q,nodeHeight:Z})},onResetView:()=>{yt(),K()}})]})}function ae(t){return new Map((t??[]).map(o=>[o.id,o.name]))}function de({context:t}){return n.createElement(se,{tasks:t?.tasks??[],projectId:t?.projectId,workflowStepNameLookup:ae(t?.workflowSteps),onOpenDetail:t?.openTaskDetail})}export{se as DependencyGraph,de as DependencyGraphDashboardView,de as default};
@@ -1,4 +1,4 @@
1
- import{c as a}from"./index-TFYXEVpn.js";/**
1
+ import{c as a}from"./index-bEwSVl7B.js";/**
2
2
  * @license lucide-react v1.7.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.