@shepai/cli 1.84.0 → 1.85.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 (276) hide show
  1. package/apis/json-schema/Attachment.yaml +31 -0
  2. package/apis/json-schema/Feature.yaml +5 -0
  3. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts +3 -1
  4. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  5. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +35 -3
  6. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts +7 -1
  7. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts.map +1 -1
  8. package/dist/packages/core/src/domain/generated/output.d.ts +33 -0
  9. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  10. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  11. package/dist/packages/core/src/infrastructure/di/container.js +3 -0
  12. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts +1 -0
  13. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts.map +1 -1
  14. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.js +4 -0
  15. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.d.ts.map +1 -1
  16. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.js +16 -0
  17. package/dist/packages/core/src/infrastructure/services/attachment-storage.service.d.ts +31 -0
  18. package/dist/packages/core/src/infrastructure/services/attachment-storage.service.d.ts.map +1 -0
  19. package/dist/packages/core/src/infrastructure/services/attachment-storage.service.js +136 -0
  20. package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -1
  21. package/dist/src/presentation/cli/commands/feat/new.command.js +21 -1
  22. package/dist/src/presentation/web/app/actions/compose-user-input.d.ts +7 -0
  23. package/dist/src/presentation/web/app/actions/compose-user-input.d.ts.map +1 -0
  24. package/dist/src/presentation/web/app/actions/compose-user-input.js +7 -0
  25. package/dist/src/presentation/web/app/actions/create-feature.d.ts +1 -0
  26. package/dist/src/presentation/web/app/actions/create-feature.d.ts.map +1 -1
  27. package/dist/src/presentation/web/app/actions/create-feature.js +3 -9
  28. package/dist/src/presentation/web/app/api/attachments/preview/route.d.ts +4 -0
  29. package/dist/src/presentation/web/app/api/attachments/preview/route.d.ts.map +1 -0
  30. package/dist/src/presentation/web/app/api/attachments/preview/route.js +47 -0
  31. package/dist/src/presentation/web/app/api/attachments/upload/route.d.ts +3 -0
  32. package/dist/src/presentation/web/app/api/attachments/upload/route.d.ts.map +1 -0
  33. package/dist/src/presentation/web/app/api/attachments/upload/route.js +100 -0
  34. package/dist/src/presentation/web/components/common/attachment-card/attachment-card.d.ts +16 -0
  35. package/dist/src/presentation/web/components/common/attachment-card/attachment-card.d.ts.map +1 -0
  36. package/dist/src/presentation/web/components/common/attachment-card/attachment-card.js +53 -0
  37. package/dist/src/presentation/web/components/common/attachment-card/attachment-card.stories.d.ts +12 -0
  38. package/dist/src/presentation/web/components/common/attachment-card/attachment-card.stories.d.ts.map +1 -0
  39. package/dist/src/presentation/web/components/common/attachment-card/attachment-card.stories.js +55 -0
  40. package/dist/src/presentation/web/components/common/attachment-card/index.d.ts +3 -0
  41. package/dist/src/presentation/web/components/common/attachment-card/index.d.ts.map +1 -0
  42. package/dist/src/presentation/web/components/common/attachment-card/index.js +1 -0
  43. package/dist/src/presentation/web/components/common/attachment-chip/attachment-chip.d.ts +11 -0
  44. package/dist/src/presentation/web/components/common/attachment-chip/attachment-chip.d.ts.map +1 -0
  45. package/dist/src/presentation/web/components/common/attachment-chip/attachment-chip.js +34 -0
  46. package/dist/src/presentation/web/components/common/attachment-chip/attachment-chip.stories.d.ts +10 -0
  47. package/dist/src/presentation/web/components/common/attachment-chip/attachment-chip.stories.d.ts.map +1 -0
  48. package/dist/src/presentation/web/components/common/attachment-chip/attachment-chip.stories.js +44 -0
  49. package/dist/src/presentation/web/components/common/attachment-chip/index.d.ts +3 -0
  50. package/dist/src/presentation/web/components/common/attachment-chip/index.d.ts.map +1 -0
  51. package/dist/src/presentation/web/components/common/attachment-chip/index.js +1 -0
  52. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts +11 -2
  53. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
  54. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +199 -60
  55. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts +6 -0
  56. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts.map +1 -1
  57. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.js +18 -0
  58. package/dist/src/presentation/web/components/ui/dialog.js +1 -1
  59. package/dist/src/presentation/web/next.config.d.ts.map +1 -1
  60. package/dist/src/presentation/web/next.config.js +6 -0
  61. package/dist/tsconfig.build.tsbuildinfo +1 -1
  62. package/package.json +1 -1
  63. package/web/.next/BUILD_ID +1 -1
  64. package/web/.next/app-path-routes-manifest.json +2 -0
  65. package/web/.next/build-manifest.json +2 -2
  66. package/web/.next/fallback-build-manifest.json +2 -2
  67. package/web/.next/prerender-manifest.json +3 -3
  68. package/web/.next/required-server-files.js +4 -1
  69. package/web/.next/required-server-files.json +4 -1
  70. package/web/.next/routes-manifest.json +12 -0
  71. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +18 -18
  72. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +2 -2
  73. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  74. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  75. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +21 -21
  76. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +2 -2
  77. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  78. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  79. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  80. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +2 -2
  81. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  82. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  83. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +18 -18
  84. package/web/.next/server/app/(dashboard)/create/page.js +2 -2
  85. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  86. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  87. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +21 -21
  88. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +2 -2
  89. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  90. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  91. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +14 -14
  92. package/web/.next/server/app/(dashboard)/page.js +2 -2
  93. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  94. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  95. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  96. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +2 -2
  97. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  98. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  99. package/web/.next/server/app/_global-error/page.js +2 -2
  100. package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  101. package/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  102. package/web/.next/server/app/_global-error.html +2 -2
  103. package/web/.next/server/app/_global-error.rsc +1 -1
  104. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  105. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  106. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  107. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  108. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  109. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  110. package/web/.next/server/app/_not-found/page.js +2 -2
  111. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  112. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  113. package/web/.next/server/app/api/attachments/preview/route/app-paths-manifest.json +3 -0
  114. package/web/.next/server/app/api/attachments/preview/route/build-manifest.json +11 -0
  115. package/web/.next/server/app/api/attachments/preview/route/server-reference-manifest.json +4 -0
  116. package/web/.next/server/app/api/attachments/preview/route.js +7 -0
  117. package/web/.next/server/app/api/attachments/preview/route.js.map +5 -0
  118. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -0
  119. package/web/.next/server/app/api/attachments/preview/route_client-reference-manifest.js +2 -0
  120. package/web/.next/server/app/api/attachments/upload/route/app-paths-manifest.json +3 -0
  121. package/web/.next/server/app/api/attachments/upload/route/build-manifest.json +11 -0
  122. package/web/.next/server/app/api/attachments/upload/route/server-reference-manifest.json +4 -0
  123. package/web/.next/server/app/api/attachments/upload/route.js +7 -0
  124. package/web/.next/server/app/api/attachments/upload/route.js.map +5 -0
  125. package/web/.next/server/app/api/attachments/upload/route.js.nft.json +1 -0
  126. package/web/.next/server/app/api/attachments/upload/route_client-reference-manifest.js +2 -0
  127. package/web/.next/server/app/api/feature-logs/route.js +1 -1
  128. package/web/.next/server/app/api/feature-logs/route.js.nft.json +1 -1
  129. package/web/.next/server/app/settings/page/server-reference-manifest.json +5 -5
  130. package/web/.next/server/app/settings/page.js +2 -2
  131. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  132. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  133. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  134. package/web/.next/server/app/skills/page.js +2 -2
  135. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  136. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  137. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  138. package/web/.next/server/app/tools/page.js +2 -2
  139. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  140. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  141. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  142. package/web/.next/server/app/version/page.js +2 -2
  143. package/web/.next/server/app/version/page.js.nft.json +1 -1
  144. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  145. package/web/.next/server/app-paths-manifest.json +2 -0
  146. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map +1 -1
  147. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_attachments_preview_route_actions_0f48c3e9.js +3 -0
  148. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_attachments_preview_route_actions_0f48c3e9.js.map +1 -0
  149. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_attachments_upload_route_actions_48fe4a8f.js +3 -0
  150. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_attachments_upload_route_actions_48fe4a8f.js.map +1 -0
  151. package/web/.next/server/chunks/[root-of-the-server]__0b10355c._.js +3 -0
  152. package/web/.next/server/chunks/[root-of-the-server]__0b10355c._.js.map +1 -0
  153. package/web/.next/server/chunks/{[root-of-the-server]__91d44424._.js → [root-of-the-server]__52c318d1._.js} +2 -2
  154. package/web/.next/server/chunks/[root-of-the-server]__b2f9a412._.js +3 -0
  155. package/web/.next/server/chunks/[root-of-the-server]__b2f9a412._.js.map +1 -0
  156. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  157. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  158. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_9751e686._.js +3 -0
  159. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_9751e686._.js.map +1 -0
  160. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js +1 -1
  161. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js.map +1 -1
  162. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js +1 -1
  163. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js.map +1 -1
  164. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js +1 -1
  165. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js.map +1 -1
  166. package/web/.next/server/chunks/ssr/[root-of-the-server]__17143953._.js +1 -1
  167. package/web/.next/server/chunks/ssr/[root-of-the-server]__17143953._.js.map +1 -1
  168. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  169. package/web/.next/server/chunks/ssr/[root-of-the-server]__4be9a9bb._.js +1 -1
  170. package/web/.next/server/chunks/ssr/[root-of-the-server]__5d87af2e._.js +1 -1
  171. package/web/.next/server/chunks/ssr/{[root-of-the-server]__3534949f._.js → [root-of-the-server]__8d9536c4._.js} +2 -2
  172. package/web/.next/server/chunks/ssr/[root-of-the-server]__9de266fa._.js +1 -1
  173. package/web/.next/server/chunks/ssr/[root-of-the-server]__9de266fa._.js.map +1 -1
  174. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  175. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  176. package/web/.next/server/chunks/ssr/[root-of-the-server]__b14946f5._.js +10 -0
  177. package/web/.next/server/chunks/ssr/{[root-of-the-server]__c3694f82._.js.map → [root-of-the-server]__b14946f5._.js.map} +1 -1
  178. package/web/.next/server/chunks/ssr/[root-of-the-server]__b3a4cef4._.js +1 -1
  179. package/web/.next/server/chunks/ssr/[root-of-the-server]__b3a4cef4._.js.map +1 -1
  180. package/web/.next/server/chunks/ssr/[root-of-the-server]__b65f78cf._.js +3 -0
  181. package/web/.next/server/chunks/ssr/{[root-of-the-server]__55f60c9d._.js.map → [root-of-the-server]__b65f78cf._.js.map} +1 -1
  182. package/web/.next/server/chunks/ssr/[root-of-the-server]__f0d8d054._.js +2 -2
  183. package/web/.next/server/chunks/ssr/[root-of-the-server]__f0d8d054._.js.map +1 -1
  184. package/web/.next/server/chunks/ssr/{[root-of-the-server]__ad2b2a3c._.js → [root-of-the-server]__f1a05100._.js} +2 -2
  185. package/web/.next/server/chunks/ssr/[root-of-the-server]__f8210f45._.js +3 -0
  186. package/web/.next/server/chunks/ssr/{[root-of-the-server]__01a37f7a._.js.map → [root-of-the-server]__f8210f45._.js.map} +1 -1
  187. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js +1 -1
  188. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js.map +1 -1
  189. package/web/.next/server/chunks/ssr/_1bb131c4._.js +1 -1
  190. package/web/.next/server/chunks/ssr/_1bb131c4._.js.map +1 -1
  191. package/web/.next/server/chunks/ssr/_1e3cf73b._.js +1 -1
  192. package/web/.next/server/chunks/ssr/_1e3cf73b._.js.map +1 -1
  193. package/web/.next/server/chunks/ssr/_34fbed18._.js +1 -1
  194. package/web/.next/server/chunks/ssr/_34fbed18._.js.map +1 -1
  195. package/web/.next/server/chunks/ssr/_63868199._.js +1 -1
  196. package/web/.next/server/chunks/ssr/_63868199._.js.map +1 -1
  197. package/web/.next/server/chunks/ssr/{_3785d5be._.js → _6bffa94a._.js} +2 -2
  198. package/web/.next/server/chunks/ssr/_6bffa94a._.js.map +1 -0
  199. package/web/.next/server/chunks/ssr/_6e08ce21._.js.map +1 -1
  200. package/web/.next/server/chunks/ssr/_8dacd1e7._.js +1 -1
  201. package/web/.next/server/chunks/ssr/_8dacd1e7._.js.map +1 -1
  202. package/web/.next/server/chunks/ssr/_9ac70f88._.js +5 -0
  203. package/web/.next/server/chunks/ssr/_9ac70f88._.js.map +1 -0
  204. package/web/.next/server/chunks/ssr/{_3e88ce9d._.js → _cf366ac8._.js} +2 -2
  205. package/web/.next/server/chunks/ssr/{_3e88ce9d._.js.map → _cf366ac8._.js.map} +1 -1
  206. package/web/.next/server/chunks/ssr/_d42594dd._.js +3 -0
  207. package/web/.next/server/chunks/ssr/_d42594dd._.js.map +1 -0
  208. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  209. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  210. package/web/.next/server/chunks/ssr/node_modules__pnpm_07f6911c._.js +3 -0
  211. package/web/.next/server/chunks/ssr/node_modules__pnpm_07f6911c._.js.map +1 -0
  212. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js +1 -1
  213. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js.map +1 -1
  214. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
  215. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
  216. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
  217. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
  218. package/web/.next/server/chunks/ssr/src_presentation_web_c4348b8a._.js +2 -3
  219. package/web/.next/server/chunks/ssr/src_presentation_web_c4348b8a._.js.map +1 -1
  220. package/web/.next/server/chunks/ssr/src_presentation_web_components_80b5b4bc._.js +3 -0
  221. package/web/.next/server/chunks/ssr/src_presentation_web_components_80b5b4bc._.js.map +1 -0
  222. package/web/.next/server/chunks/ssr/src_presentation_web_components_82416b8f._.js +3 -0
  223. package/web/.next/server/chunks/ssr/src_presentation_web_components_82416b8f._.js.map +1 -0
  224. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  225. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  226. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_3d0aa70c._.js +1 -1
  227. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_3d0aa70c._.js.map +1 -1
  228. package/web/.next/server/chunks/ssr/src_presentation_web_e4510d10._.js +2 -3
  229. package/web/.next/server/chunks/ssr/src_presentation_web_e4510d10._.js.map +1 -1
  230. package/web/.next/server/pages/500.html +2 -2
  231. package/web/.next/server/server-reference-manifest.js +1 -1
  232. package/web/.next/server/server-reference-manifest.json +28 -28
  233. package/web/.next/static/chunks/{4de791d92c72ae58.js → 26f58bbf4766e1c4.js} +1 -1
  234. package/web/.next/static/chunks/30c827a88342741e.js +1 -0
  235. package/web/.next/static/chunks/{d00436ccde44862f.js → 31c1e96c4cfeb16b.js} +2 -2
  236. package/web/.next/static/chunks/50f89c3112f6dd23.css +2 -0
  237. package/web/.next/static/chunks/52b56677c842e45f.js +3 -0
  238. package/web/.next/static/chunks/{48060fe38d7b8432.js → 5b707c839eafb404.js} +3 -3
  239. package/web/.next/static/chunks/79f610312f57dc66.js +1 -0
  240. package/web/.next/static/chunks/8fa4bf83842a3389.js +1 -0
  241. package/web/.next/static/chunks/{0fb7745c30469b39.js → b31f2c82654437a6.js} +1 -1
  242. package/web/.next/static/chunks/c9333b53106c0ca9.js +1 -0
  243. package/web/.next/static/chunks/ce7a578a83924232.js +1 -0
  244. package/web/.next/static/chunks/{de2515446676e0ae.js → d8e93250744112df.js} +1 -1
  245. package/web/.next/static/chunks/da7d7608abd1032f.js +1 -0
  246. package/web/.next/static/chunks/{6b4620c8b57a0683.js → df38705b7992b33f.js} +1 -1
  247. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_c7cfe351._.js +0 -3
  248. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_c7cfe351._.js.map +0 -1
  249. package/web/.next/server/chunks/ssr/[root-of-the-server]__01a37f7a._.js +0 -3
  250. package/web/.next/server/chunks/ssr/[root-of-the-server]__55f60c9d._.js +0 -3
  251. package/web/.next/server/chunks/ssr/[root-of-the-server]__c3694f82._.js +0 -10
  252. package/web/.next/server/chunks/ssr/_0387eb83._.js +0 -3
  253. package/web/.next/server/chunks/ssr/_0387eb83._.js.map +0 -1
  254. package/web/.next/server/chunks/ssr/_3785d5be._.js.map +0 -1
  255. package/web/.next/server/chunks/ssr/_67dd9041._.js +0 -3
  256. package/web/.next/server/chunks/ssr/_67dd9041._.js.map +0 -1
  257. package/web/.next/server/chunks/ssr/_c3a8bcb1._.js +0 -3
  258. package/web/.next/server/chunks/ssr/_c3a8bcb1._.js.map +0 -1
  259. package/web/.next/server/chunks/ssr/node_modules__pnpm_04f4e45f._.js +0 -5
  260. package/web/.next/server/chunks/ssr/node_modules__pnpm_04f4e45f._.js.map +0 -1
  261. package/web/.next/server/chunks/ssr/node_modules__pnpm_c931457d._.js +0 -3
  262. package/web/.next/server/chunks/ssr/node_modules__pnpm_c931457d._.js.map +0 -1
  263. package/web/.next/static/chunks/2a24ac257fc1c10b.js +0 -1
  264. package/web/.next/static/chunks/6d0190cd8484320c.js +0 -1
  265. package/web/.next/static/chunks/6f0622cb06faf358.js +0 -1
  266. package/web/.next/static/chunks/7e92542991a14568.js +0 -1
  267. package/web/.next/static/chunks/a56b3854d2169db0.js +0 -1
  268. package/web/.next/static/chunks/ae01d2be1d0bad47.css +0 -2
  269. package/web/.next/static/chunks/df0b93fbb9b512e6.js +0 -1
  270. package/web/.next/static/chunks/e405f0502431ea60.js +0 -3
  271. /package/web/.next/server/chunks/{[root-of-the-server]__91d44424._.js.map → [root-of-the-server]__52c318d1._.js.map} +0 -0
  272. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__3534949f._.js.map → [root-of-the-server]__8d9536c4._.js.map} +0 -0
  273. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__ad2b2a3c._.js.map → [root-of-the-server]__f1a05100._.js.map} +0 -0
  274. /package/web/.next/static/{7IllAyl6ItP_HYk-RfUYQ → Lf0zFNsMS4qCNRm_LSgya}/_buildManifest.js +0 -0
  275. /package/web/.next/static/{7IllAyl6ItP_HYk-RfUYQ → Lf0zFNsMS4qCNRm_LSgya}/_clientMiddlewareManifest.json +0 -0
  276. /package/web/.next/static/{7IllAyl6ItP_HYk-RfUYQ → Lf0zFNsMS4qCNRm_LSgya}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/components/ui/label.tsx","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-label%402.1.7_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types%2Breact%40_511ac9deb435ae46b2843bd1975598a6/node_modules/%40radix-ui/react-label/dist/index.mjs","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-popover%401.1.15_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types%2Brea_6845413866e39bfed03c608b19c71ed1/node_modules/%40radix-ui/react-popover/dist/index.mjs","../../../../../../../src/presentation/web/components/ui/popover.tsx","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-switch%401.2.6_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types%2Breact_82f001e3bde9922eaefd6f7b0722a9bb/node_modules/%40radix-ui/react-switch/dist/index.mjs","../../../../../../../src/presentation/web/components/ui/switch.tsx","../../../../../../../src/presentation/web/app/actions/data%3A817966%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A3f6a2b%20%3Ctext/javascript%3E","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-use-previous%401.1.1_%40types%2Breact%4019.2.10_react%4019.2.4/node_modules/%40radix-ui/react-use-previous/dist/index.mjs","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/code.ts","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-switch%401.2.6_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types%2Breact_82f001e3bde9922eaefd6f7b0722a9bb/node_modules/%40radix-ui/react-switch/src/switch.tsx","../../../../../../../src/presentation/web/components/features/settings/AgentModelPicker/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Label as LabelPrimitive } from 'radix-ui';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\nconst labelVariants = cva(\n 'text-sm leading-none font-medium peer-disabled:cursor-not-allowed peer-disabled:opacity-70'\n);\n\nconst Label = React.forwardRef<\n React.ComponentRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> & VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root ref={ref} className={cn(labelVariants(), className)} {...props} />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","\"use client\";\n\n// src/label.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Label\";\nvar Label = React.forwardRef((props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.label,\n {\n ...props,\n ref: forwardedRef,\n onMouseDown: (event) => {\n const target = event.target;\n if (target.closest(\"button, input, select, textarea\")) return;\n props.onMouseDown?.(event);\n if (!event.defaultPrevented && event.detail > 1) event.preventDefault();\n }\n }\n );\n});\nLabel.displayName = NAME;\nvar Root = Label;\nexport {\n Label,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/popover.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar POPOVER_NAME = \"Popover\";\nvar [createPopoverContext, createPopoverScope] = createContextScope(POPOVER_NAME, [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);\nvar Popover = (props) => {\n const {\n __scopePopover,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = false\n } = props;\n const popperScope = usePopperScope(__scopePopover);\n const triggerRef = React.useRef(null);\n const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: POPOVER_NAME\n });\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n PopoverProvider,\n {\n scope: __scopePopover,\n contentId: useId(),\n triggerRef,\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n hasCustomAnchor,\n onCustomAnchorAdd: React.useCallback(() => setHasCustomAnchor(true), []),\n onCustomAnchorRemove: React.useCallback(() => setHasCustomAnchor(false), []),\n modal,\n children\n }\n ) });\n};\nPopover.displayName = POPOVER_NAME;\nvar ANCHOR_NAME = \"PopoverAnchor\";\nvar PopoverAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...anchorProps } = props;\n const context = usePopoverContext(ANCHOR_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const { onCustomAnchorAdd, onCustomAnchorRemove } = context;\n React.useEffect(() => {\n onCustomAnchorAdd();\n return () => onCustomAnchorRemove();\n }, [onCustomAnchorAdd, onCustomAnchorRemove]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n }\n);\nPopoverAnchor.displayName = ANCHOR_NAME;\nvar TRIGGER_NAME = \"PopoverTrigger\";\nvar PopoverTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...triggerProps } = props;\n const context = usePopoverContext(TRIGGER_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n const trigger = /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.contentId,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n return context.hasCustomAnchor ? trigger : /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: trigger });\n }\n);\nPopoverTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"PopoverPortal\";\nvar [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar PopoverPortal = (props) => {\n const { __scopePopover, forceMount, children, container } = props;\n const context = usePopoverContext(PORTAL_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopePopover, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nPopoverPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"PopoverContent\";\nvar PopoverContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopePopover);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(PopoverContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(PopoverContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nPopoverContent.displayName = CONTENT_NAME;\nvar Slot = createSlot(\"PopoverContent.RemoveScroll\");\nvar PopoverContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n const isRightClickOutsideRef = React.useRef(false);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(\n props.onPointerDownOutside,\n (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n isRightClickOutsideRef.current = isRightClick;\n },\n { checkForDefaultPrevented: false }\n ),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nvar PopoverContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar PopoverContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopover,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = usePopoverContext(CONTENT_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n useFocusGuards();\n return /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents,\n onInteractOutside,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onDismiss: () => context.onOpenChange(false),\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n \"data-state\": getState(context.open),\n role: \"dialog\",\n id: context.contentId,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-popover-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-popover-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-popover-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-popover-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-popover-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n )\n }\n )\n }\n );\n }\n);\nvar CLOSE_NAME = \"PopoverClose\";\nvar PopoverClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...closeProps } = props;\n const context = usePopoverContext(CLOSE_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nPopoverClose.displayName = CLOSE_NAME;\nvar ARROW_NAME = \"PopoverArrow\";\nvar PopoverArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopePopover);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nPopoverArrow.displayName = ARROW_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar Root2 = Popover;\nvar Anchor2 = PopoverAnchor;\nvar Trigger = PopoverTrigger;\nvar Portal = PopoverPortal;\nvar Content2 = PopoverContent;\nvar Close = PopoverClose;\nvar Arrow2 = PopoverArrow;\nexport {\n Anchor2 as Anchor,\n Arrow2 as Arrow,\n Close,\n Content2 as Content,\n Popover,\n PopoverAnchor,\n PopoverArrow,\n PopoverClose,\n PopoverContent,\n PopoverPortal,\n PopoverTrigger,\n Portal,\n Root2 as Root,\n Trigger,\n createPopoverScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport { Popover as PopoverPrimitive } from 'radix-ui';\n\nimport { cn } from '@/lib/utils';\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverAnchor = PopoverPrimitive.Anchor;\n\nconst PopoverContent = React.forwardRef<\n React.ComponentRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 shadow-md outline-none',\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n","\"use client\";\n\n// src/switch.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar SWITCH_NAME = \"Switch\";\nvar [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\nvar [SwitchProvider, useSwitchContext] = createSwitchContext(SWITCH_NAME);\nvar Switch = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSwitch,\n name,\n checked: checkedProp,\n defaultChecked,\n required,\n disabled,\n value = \"on\",\n onCheckedChange,\n form,\n ...switchProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: SWITCH_NAME\n });\n return /* @__PURE__ */ jsxs(SwitchProvider, { scope: __scopeSwitch, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"switch\",\n \"aria-checked\": checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...switchProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n setChecked((prevChecked) => !prevChecked);\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n SwitchBubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nSwitch.displayName = SWITCH_NAME;\nvar THUMB_NAME = \"SwitchThumb\";\nvar SwitchThumb = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSwitch, ...thumbProps } = props;\n const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...thumbProps,\n ref: forwardedRef\n }\n );\n }\n);\nSwitchThumb.displayName = THUMB_NAME;\nvar BUBBLE_INPUT_NAME = \"SwitchBubbleInput\";\nvar SwitchBubbleInput = React.forwardRef(\n ({\n __scopeSwitch,\n control,\n checked,\n bubbles = true,\n ...props\n }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n }\n);\nSwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\nvar Root = Switch;\nvar Thumb = SwitchThumb;\nexport {\n Root,\n Switch,\n SwitchThumb,\n Thumb,\n createSwitchScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport { Switch as SwitchPrimitive } from 'radix-ui';\n\nimport { cn } from '@/lib/utils';\n\nfunction Switch({\n className,\n size = 'default',\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\n size?: 'sm' | 'default';\n}) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n className={cn(\n 'peer group/switch focus-visible:border-ring focus-visible:ring-ring/50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-input/80 inline-flex shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-[1.15rem] data-[size=default]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6',\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'bg-background dark:data-[state=checked]:bg-primary-foreground dark:data-[state=unchecked]:bg-foreground pointer-events-none block rounded-full ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0'\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n","/* __next_internal_action_entry_do_not_use__ [{\"00c26158c2f597974b019f5918ec8814c3aa515419\":\"getAllAgentModels\"},\"src/presentation/web/app/actions/get-all-agent-models.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"00c26158c2f597974b019f5918ec8814c3aa515419\",callServer,void 0,findSourceMapURL,\"getAllAgentModels\");export{$$RSC_SERVER_ACTION_0 as getAllAgentModels};","/* __next_internal_action_entry_do_not_use__ [{\"606b11477813392d8de59e458b59bb52a3ad0d452a\":\"updateAgentAndModel\"},\"src/presentation/web/app/actions/update-agent-and-model.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"606b11477813392d8de59e458b59bb52a3ad0d452a\",callServer,void 0,findSourceMapURL,\"updateAgentAndModel\");export{$$RSC_SERVER_ACTION_0 as updateAgentAndModel};","// packages/react/use-previous/src/use-previous.tsx\nimport * as React from \"react\";\nfunction usePrevious(value) {\n const ref = React.useRef({ value, previous: value });\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\nexport {\n usePrevious\n};\n//# sourceMappingURL=index.mjs.map\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm16 18 6-6-6-6', key: 'eg8j8' }],\n ['path', { d: 'm8 6-6 6 6 6', key: 'ppft3o' }],\n];\n\n/**\n * @component @name Code\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTYgMTggNi02LTYtNiIgLz4KICA8cGF0aCBkPSJtOCA2LTYgNiA2IDYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/code\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Code = createLucideIcon('code', __iconNode);\n\nexport default Code;\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { usePrevious } from '@radix-ui/react-use-previous';\nimport { useSize } from '@radix-ui/react-use-size';\nimport { Primitive } from '@radix-ui/react-primitive';\n\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Switch\n * -----------------------------------------------------------------------------------------------*/\n\nconst SWITCH_NAME = 'Switch';\n\ntype ScopedProps<P> = P & { __scopeSwitch?: Scope };\nconst [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\n\ntype SwitchContextValue = { checked: boolean; disabled?: boolean };\nconst [SwitchProvider, useSwitchContext] = createSwitchContext<SwitchContextValue>(SWITCH_NAME);\n\ntype SwitchElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface SwitchProps extends PrimitiveButtonProps {\n checked?: boolean;\n defaultChecked?: boolean;\n required?: boolean;\n onCheckedChange?(checked: boolean): void;\n}\n\nconst Switch = React.forwardRef<SwitchElement, SwitchProps>(\n (props: ScopedProps<SwitchProps>, forwardedRef) => {\n const {\n __scopeSwitch,\n name,\n checked: checkedProp,\n defaultChecked,\n required,\n disabled,\n value = 'on',\n onCheckedChange,\n form,\n ...switchProps\n } = props;\n const [button, setButton] = React.useState<HTMLButtonElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n // We set this to true by default so that events bubble to forms without JS (SSR)\n const isFormControl = button ? form || !!button.closest('form') : true;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: SWITCH_NAME,\n });\n\n return (\n <SwitchProvider scope={__scopeSwitch} checked={checked} disabled={disabled}>\n <Primitive.button\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n aria-required={required}\n data-state={getState(checked)}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n value={value}\n {...switchProps}\n ref={composedRefs}\n onClick={composeEventHandlers(props.onClick, (event) => {\n setChecked((prevChecked) => !prevChecked);\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n // if switch is in a form, stop propagation from the button so that we only propagate\n // one click event (from the input). We propagate changes from an input so that native\n // form validation works and form events reflect switch updates.\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })}\n />\n {isFormControl && (\n <SwitchBubbleInput\n control={button}\n bubbles={!hasConsumerStoppedPropagationRef.current}\n name={name}\n value={value}\n checked={checked}\n required={required}\n disabled={disabled}\n form={form}\n // We transform because the input is absolutely positioned but we have\n // rendered it **after** the button. This pulls it back to sit on top\n // of the button.\n style={{ transform: 'translateX(-100%)' }}\n />\n )}\n </SwitchProvider>\n );\n }\n);\n\nSwitch.displayName = SWITCH_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SwitchThumb\n * -----------------------------------------------------------------------------------------------*/\n\nconst THUMB_NAME = 'SwitchThumb';\n\ntype SwitchThumbElement = React.ComponentRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = React.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface SwitchThumbProps extends PrimitiveSpanProps {}\n\nconst SwitchThumb = React.forwardRef<SwitchThumbElement, SwitchThumbProps>(\n (props: ScopedProps<SwitchThumbProps>, forwardedRef) => {\n const { __scopeSwitch, ...thumbProps } = props;\n const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n return (\n <Primitive.span\n data-state={getState(context.checked)}\n data-disabled={context.disabled ? '' : undefined}\n {...thumbProps}\n ref={forwardedRef}\n />\n );\n }\n);\n\nSwitchThumb.displayName = THUMB_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SwitchBubbleInput\n * -----------------------------------------------------------------------------------------------*/\n\nconst BUBBLE_INPUT_NAME = 'SwitchBubbleInput';\n\ntype InputProps = React.ComponentPropsWithoutRef<typeof Primitive.input>;\ninterface SwitchBubbleInputProps extends Omit<InputProps, 'checked'> {\n checked: boolean;\n control: HTMLElement | null;\n bubbles: boolean;\n}\n\nconst SwitchBubbleInput = React.forwardRef<HTMLInputElement, SwitchBubbleInputProps>(\n (\n {\n __scopeSwitch,\n control,\n checked,\n bubbles = true,\n ...props\n }: ScopedProps<SwitchBubbleInputProps>,\n forwardedRef\n ) => {\n const ref = React.useRef<HTMLInputElement>(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n\n // Bubble checked change to parents (e.g form change event)\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n 'checked'\n ) as PropertyDescriptor;\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event('click', { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n\n return (\n <input\n type=\"checkbox\"\n aria-hidden\n defaultChecked={checked}\n {...props}\n tabIndex={-1}\n ref={composedRefs}\n style={{\n ...props.style,\n ...controlSize,\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0,\n }}\n />\n );\n }\n);\n\nSwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getState(checked: boolean) {\n return checked ? 'checked' : 'unchecked';\n}\n\nconst Root = Switch;\nconst Thumb = SwitchThumb;\n\nexport {\n createSwitchScope,\n //\n Switch,\n SwitchThumb,\n //\n Root,\n Thumb,\n};\nexport type { SwitchProps, SwitchThumbProps };\n","'use client';\n\nimport * as React from 'react';\nimport { Check, ChevronLeft, ChevronRight } from 'lucide-react';\nimport { getAllAgentModels } from '@/app/actions/get-all-agent-models';\nimport type { AgentModelGroup } from '@/app/actions/get-all-agent-models';\nimport { updateAgentAndModel } from '@/app/actions/update-agent-and-model';\nimport { getAgentTypeIcon } from '@/components/common/feature-node/agent-type-icons';\nimport { getModelMeta } from '@/lib/model-metadata';\nimport { Button } from '@/components/ui/button';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\nimport { cn } from '@/lib/utils';\n\nexport interface AgentModelPickerProps {\n initialAgentType: string;\n initialModel: string;\n onAgentModelChange?: (agentType: string, model: string) => void;\n disabled?: boolean;\n className?: string;\n /** 'settings' persists to DB; 'override' only calls onAgentModelChange */\n mode: 'settings' | 'override';\n}\n\nexport function AgentModelPicker({\n initialAgentType,\n initialModel,\n onAgentModelChange,\n disabled,\n className,\n mode,\n}: AgentModelPickerProps) {\n const [open, setOpen] = React.useState(false);\n const [groups, setGroups] = React.useState<AgentModelGroup[]>([]);\n const [loading, setLoading] = React.useState(true);\n const [agentType, setAgentType] = React.useState(initialAgentType);\n const [model, setModel] = React.useState(initialModel);\n const [error, setError] = React.useState<string | null>(null);\n\n // 0 = agent list visible, 1 = model list visible\n const [level, setLevel] = React.useState(0);\n // Which agent's models to show (kept separate from level for animation)\n const [drillAgent, setDrillAgent] = React.useState<string | null>(null);\n\n React.useEffect(() => {\n getAllAgentModels()\n .then(setGroups)\n .finally(() => setLoading(false));\n }, []);\n\n // Reset drill-down when popover closes\n React.useEffect(() => {\n if (!open) {\n const t = setTimeout(() => {\n setLevel(0);\n setDrillAgent(null);\n }, 150);\n return () => clearTimeout(t);\n }\n }, [open]);\n\n const drillInto = (agent: string) => {\n setDrillAgent(agent);\n requestAnimationFrame(() => {\n requestAnimationFrame(() => setLevel(1));\n });\n };\n\n const drillBack = () => {\n setLevel(0);\n setTimeout(() => setDrillAgent(null), 220);\n };\n\n const handleSelect = async (newAgentType: string, newModel: string) => {\n setOpen(false);\n\n if (newAgentType === agentType && newModel === model) return;\n\n if (mode === 'override') {\n setAgentType(newAgentType);\n setModel(newModel);\n onAgentModelChange?.(newAgentType, newModel);\n return;\n }\n\n // mode === 'settings' — optimistically update, then persist\n const prevAgent = agentType;\n const prevModel = model;\n setAgentType(newAgentType);\n setModel(newModel);\n onAgentModelChange?.(newAgentType, newModel);\n\n setError(null);\n try {\n const result = await updateAgentAndModel(newAgentType, newModel || null);\n if (!result.ok) {\n // Revert on failure\n setAgentType(prevAgent);\n setModel(prevModel);\n onAgentModelChange?.(prevAgent, prevModel);\n setError(result.error ?? 'Failed to save');\n }\n } catch {\n setAgentType(prevAgent);\n setModel(prevModel);\n onAgentModelChange?.(prevAgent, prevModel);\n setError('Failed to save');\n }\n };\n\n const isDisabled = (disabled ?? false) || loading;\n\n const AgentIcon = getAgentTypeIcon(agentType);\n const agentLabel = groups.find((g) => g.agentType === agentType)?.label ?? agentType;\n const modelName = model ? getModelMeta(model).displayName || model : null;\n\n const activeGroup = drillAgent ? groups.find((g) => g.agentType === drillAgent) : null;\n\n return (\n <div className={cn('flex flex-col gap-1', className)}>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n disabled={isDisabled}\n className=\"w-auto cursor-pointer justify-start font-normal hover:border-violet-300 hover:bg-violet-50/50 dark:hover:border-violet-700 dark:hover:bg-violet-950/30\"\n >\n <span className=\"flex items-center gap-2 truncate\">\n <AgentIcon className=\"h-4 w-4 shrink-0\" />\n {loading ? (\n 'Loading…'\n ) : (\n <span className=\"flex items-center gap-1\">\n <span className=\"text-muted-foreground text-xs\">{agentLabel}</span>\n {modelName ? (\n <>\n <span className=\"text-muted-foreground/50 text-xs\">·</span>\n <span className=\"text-xs font-medium\">{modelName}</span>\n </>\n ) : null}\n </span>\n )}\n </span>\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-(--radix-popover-trigger-width) overflow-hidden p-0\"\n align=\"start\"\n >\n {/* Sliding container — both panels side by side, translateX controlled by level */}\n <div\n className=\"flex transition-transform duration-200 ease-in-out\"\n style={{ transform: `translateX(${level === 1 ? '-50%' : '0%'})`, width: '200%' }}\n >\n {/* ── Level 1: Agent list ── */}\n <div className=\"w-1/2 shrink-0\">\n <div className=\"text-muted-foreground border-b px-3 py-2 text-xs font-medium\">\n Select agent\n </div>\n {groups.map((group) => {\n const GroupIcon = getAgentTypeIcon(group.agentType);\n const isActive = agentType === group.agentType;\n const hasModels = group.models.length > 0;\n\n return (\n <button\n key={group.agentType}\n type=\"button\"\n className={cn(\n 'flex w-full cursor-pointer items-center gap-2.5 px-3 py-2 text-xs transition-colors',\n 'hover:bg-accent hover:text-accent-foreground',\n isActive && 'bg-accent/50'\n )}\n onClick={() => {\n if (hasModels) {\n drillInto(group.agentType);\n } else {\n handleSelect(group.agentType, '');\n }\n }}\n >\n <GroupIcon className=\"h-4 w-4 shrink-0\" />\n <span className=\"flex-1 text-left\">{group.label}</span>\n {isActive && !hasModels ? (\n <Check className=\"text-primary h-3.5 w-3.5 shrink-0\" />\n ) : null}\n {hasModels ? (\n <ChevronRight className=\"text-muted-foreground h-3.5 w-3.5 shrink-0\" />\n ) : null}\n </button>\n );\n })}\n </div>\n\n {/* ── Level 2: Model list for selected agent ── */}\n <div className=\"w-1/2 shrink-0\">\n {activeGroup ? (\n <>\n {/* Back header */}\n <button\n type=\"button\"\n className=\"text-muted-foreground hover:text-foreground flex w-full cursor-pointer items-center gap-1.5 border-b px-3 py-2 text-xs font-medium transition-colors\"\n onClick={drillBack}\n >\n <ChevronLeft className=\"h-3.5 w-3.5\" />\n {activeGroup.label}\n </button>\n\n {/* Model items */}\n {activeGroup.models.map((m) => {\n const isSelected = agentType === activeGroup.agentType && model === m.id;\n return (\n <button\n key={m.id}\n type=\"button\"\n className={cn(\n 'flex w-full cursor-pointer items-center gap-3 px-3 py-2 text-left transition-colors',\n 'hover:bg-accent hover:text-accent-foreground',\n isSelected && 'bg-accent/50'\n )}\n onClick={() => handleSelect(activeGroup.agentType, m.id)}\n >\n <div className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"text-xs font-medium\">{m.displayName}</span>\n <span className=\"text-muted-foreground text-xs\">{m.description}</span>\n </div>\n {isSelected ? (\n <Check className=\"text-primary h-3.5 w-3.5 shrink-0\" />\n ) : null}\n </button>\n );\n })}\n </>\n ) : null}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n {Boolean(error) && <p className=\"text-destructive text-sm\">{error}</p>}\n </div>\n );\n}\n"],"names":[],"mappings":"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","ignoreList":[1,2,4,8,9,10]}
@@ -1,3 +1,3 @@
1
- module.exports=[16533,a=>{"use strict";var b=a.i(96960),c=a.i(69845),d=a.i(52313),e=(a,b)=>()=>(b||a((b={exports:{}}).exports,b),b.exports),f=e((a,b)=>{var c=Object.defineProperty,d=(a,b)=>()=>(b||a((b={exports:{}}).exports,b),b.exports),e=(a,b,d)=>{let e;return(e="symbol"!=typeof b?b+"":b)in a?c(a,e,{enumerable:!0,configurable:!0,writable:!0,value:d}):a[e]=d},f=d((a,b)=>{function c(a,b){a[b]?a[b]++:a[b]=1}function d(a,b){--a[b]||delete a[b]}function f(a,b,c,d){var e=""+b,f=""+c;if(!a&&e>f){var g=e;e=f,f=g}return e+"\x01"+f+"\x01"+(void 0===d?"\0":d)}function g(a,b){return f(a,b.v,b.w,b.name)}b.exports=class{constructor(a){e(this,"_isDirected",!0),e(this,"_isMultigraph",!1),e(this,"_isCompound",!1),e(this,"_label"),e(this,"_defaultNodeLabelFn",()=>{}),e(this,"_defaultEdgeLabelFn",()=>{}),e(this,"_nodes",{}),e(this,"_in",{}),e(this,"_preds",{}),e(this,"_out",{}),e(this,"_sucs",{}),e(this,"_edgeObjs",{}),e(this,"_edgeLabels",{}),e(this,"_nodeCount",0),e(this,"_edgeCount",0),e(this,"_parent"),e(this,"_children"),a&&(this._isDirected=!Object.hasOwn(a,"directed")||a.directed,this._isMultigraph=!!Object.hasOwn(a,"multigraph")&&a.multigraph,this._isCompound=!!Object.hasOwn(a,"compound")&&a.compound),this._isCompound&&(this._parent={},this._children={},this._children["\0"]={})}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(a){return this._label=a,this}graph(){return this._label}setDefaultNodeLabel(a){return this._defaultNodeLabelFn=a,"function"!=typeof a&&(this._defaultNodeLabelFn=()=>a),this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){var a=this;return this.nodes().filter(b=>0===Object.keys(a._in[b]).length)}sinks(){var a=this;return this.nodes().filter(b=>0===Object.keys(a._out[b]).length)}setNodes(a,b){var c=arguments,d=this;return a.forEach(function(a){c.length>1?d.setNode(a,b):d.setNode(a)}),this}setNode(a,b){return Object.hasOwn(this._nodes,a)?arguments.length>1&&(this._nodes[a]=b):(this._nodes[a]=arguments.length>1?b:this._defaultNodeLabelFn(a),this._isCompound&&(this._parent[a]="\0",this._children[a]={},this._children["\0"][a]=!0),this._in[a]={},this._preds[a]={},this._out[a]={},this._sucs[a]={},++this._nodeCount),this}node(a){return this._nodes[a]}hasNode(a){return Object.hasOwn(this._nodes,a)}removeNode(a){var b=this;if(Object.hasOwn(this._nodes,a)){var c=a=>b.removeEdge(b._edgeObjs[a]);delete this._nodes[a],this._isCompound&&(this._removeFromParentsChildList(a),delete this._parent[a],this.children(a).forEach(function(a){b.setParent(a)}),delete this._children[a]),Object.keys(this._in[a]).forEach(c),delete this._in[a],delete this._preds[a],Object.keys(this._out[a]).forEach(c),delete this._out[a],delete this._sucs[a],--this._nodeCount}return this}setParent(a,b){if(!this._isCompound)throw Error("Cannot set parent in a non-compound graph");if(void 0===b)b="\0";else{b+="";for(var c=b;void 0!==c;c=this.parent(c))if(c===a)throw Error("Setting "+b+" as parent of "+a+" would create a cycle");this.setNode(b)}return this.setNode(a),this._removeFromParentsChildList(a),this._parent[a]=b,this._children[b][a]=!0,this}_removeFromParentsChildList(a){delete this._children[this._parent[a]][a]}parent(a){if(this._isCompound){var b=this._parent[a];if("\0"!==b)return b}}children(a="\0"){if(this._isCompound){var b=this._children[a];if(b)return Object.keys(b)}else{if("\0"===a)return this.nodes();if(this.hasNode(a))return[]}}predecessors(a){var b=this._preds[a];if(b)return Object.keys(b)}successors(a){var b=this._sucs[a];if(b)return Object.keys(b)}neighbors(a){var b=this.predecessors(a);if(b){let d=new Set(b);for(var c of this.successors(a))d.add(c);return Array.from(d.values())}}isLeaf(a){return 0===(this.isDirected()?this.successors(a):this.neighbors(a)).length}filterNodes(a){var b=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});b.setGraph(this.graph());var c=this;Object.entries(this._nodes).forEach(function([c,d]){a(c)&&b.setNode(c,d)}),Object.values(this._edgeObjs).forEach(function(a){b.hasNode(a.v)&&b.hasNode(a.w)&&b.setEdge(a,c.edge(a))});var d={};return this._isCompound&&b.nodes().forEach(a=>b.setParent(a,function a(e){var f=c.parent(e);return void 0===f||b.hasNode(f)?(d[e]=f,f):f in d?d[f]:a(f)}(a))),b}setDefaultEdgeLabel(a){return this._defaultEdgeLabelFn=a,"function"!=typeof a&&(this._defaultEdgeLabelFn=()=>a),this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(a,b){var c=this,d=arguments;return a.reduce(function(a,e){return d.length>1?c.setEdge(a,e,b):c.setEdge(a,e),e}),this}setEdge(){var a,b,d,e,g=!1,h=arguments[0];"object"==typeof h&&null!==h&&"v"in h?(a=h.v,b=h.w,d=h.name,2==arguments.length&&(e=arguments[1],g=!0)):(a=h,b=arguments[1],d=arguments[3],arguments.length>2&&(e=arguments[2],g=!0)),a=""+a,b=""+b,void 0!==d&&(d=""+d);var i=f(this._isDirected,a,b,d);if(Object.hasOwn(this._edgeLabels,i))return g&&(this._edgeLabels[i]=e),this;if(void 0!==d&&!this._isMultigraph)throw Error("Cannot set a named edge when isMultigraph = false");this.setNode(a),this.setNode(b),this._edgeLabels[i]=g?e:this._defaultEdgeLabelFn(a,b,d);var j=function(a,b,c,d){var e=""+b,f=""+c;if(!a&&e>f){var g=e;e=f,f=g}var h={v:e,w:f};return d&&(h.name=d),h}(this._isDirected,a,b,d);return a=j.v,b=j.w,Object.freeze(j),this._edgeObjs[i]=j,c(this._preds[b],a),c(this._sucs[a],b),this._in[b][i]=j,this._out[a][i]=j,this._edgeCount++,this}edge(a,b,c){var d=1==arguments.length?g(this._isDirected,arguments[0]):f(this._isDirected,a,b,c);return this._edgeLabels[d]}edgeAsObj(){let a=this.edge(...arguments);return"object"!=typeof a?{label:a}:a}hasEdge(a,b,c){var d=1==arguments.length?g(this._isDirected,arguments[0]):f(this._isDirected,a,b,c);return Object.hasOwn(this._edgeLabels,d)}removeEdge(a,b,c){var e=1==arguments.length?g(this._isDirected,arguments[0]):f(this._isDirected,a,b,c),h=this._edgeObjs[e];return h&&(a=h.v,b=h.w,delete this._edgeLabels[e],delete this._edgeObjs[e],d(this._preds[b],a),d(this._sucs[a],b),delete this._in[b][e],delete this._out[a][e],this._edgeCount--),this}inEdges(a,b){return this.isDirected()?this.filterEdges(this._in[a],a,b):this.nodeEdges(a,b)}outEdges(a,b){return this.isDirected()?this.filterEdges(this._out[a],a,b):this.nodeEdges(a,b)}nodeEdges(a,b){if(a in this._nodes)return this.filterEdges({...this._in[a],...this._out[a]},a,b)}filterEdges(a,b,c){if(a){var d=Object.values(a);return c?d.filter(function(a){return a.v===b&&a.w===c||a.v===c&&a.w===b}):d}}}}),g=d((a,b)=>{b.exports="3.0.2"}),h=d((a,b)=>{b.exports={Graph:f(),version:g()}}),i=d((a,b)=>{var c=f();b.exports={write:function(a){var b,c,d={options:{directed:a.isDirected(),multigraph:a.isMultigraph(),compound:a.isCompound()},nodes:(b=a).nodes().map(function(a){var c=b.node(a),d=b.parent(a),e={v:a};return void 0!==c&&(e.value=c),void 0!==d&&(e.parent=d),e}),edges:(c=a).edges().map(function(a){var b=c.edge(a),d={v:a.v,w:a.w};return void 0!==a.name&&(d.name=a.name),void 0!==b&&(d.value=b),d})};return void 0!==a.graph()&&(d.value=structuredClone(a.graph())),d},read:function(a){var b=new c(a.options).setGraph(a.value);return a.nodes.forEach(function(a){b.setNode(a.v,a.value),a.parent&&b.setParent(a.v,a.parent)}),a.edges.forEach(function(a){b.setEdge({v:a.v,w:a.w,name:a.name},a.value)}),b}}}),j=d((a,b)=>{b.exports=function(a,b,d,e){return function(a,b,c,d){var e={},f=!0,g=0,h=a.nodes(),i=function(a){var b=c(a);e[a.v].distance+b<e[a.w].distance&&(e[a.w]={distance:e[a.v].distance+b,predecessor:a.v},f=!0)},j=function(){h.forEach(function(a){d(a).forEach(function(b){var c=b.v===a?b.v:b.w,d=c===b.v?b.w:b.v;i({v:c,w:d})})})};h.forEach(function(a){e[a]={distance:a===b?0:1/0}});for(var k=h.length,l=1;l<k&&(f=!1,g++,j(),f);l++);if(g===k-1&&(f=!1,j(),f))throw Error("The graph contains a negative weight cycle");return e}(a,String(b),d||c,e||function(b){return a.outEdges(b)})};var c=()=>1}),k=d((a,b)=>{b.exports=function(a){var b,c={},d=[];return a.nodes().forEach(function(e){b=[],function d(e){Object.hasOwn(c,e)||(c[e]=!0,b.push(e),a.successors(e).forEach(d),a.predecessors(e).forEach(d))}(e),b.length&&d.push(b)}),d}}),l=d((a,b)=>{b.exports=class{constructor(){e(this,"_arr",[]),e(this,"_keyIndices",{})}size(){return this._arr.length}keys(){return this._arr.map(function(a){return a.key})}has(a){return Object.hasOwn(this._keyIndices,a)}priority(a){var b=this._keyIndices[a];if(void 0!==b)return this._arr[b].priority}min(){if(0===this.size())throw Error("Queue underflow");return this._arr[0].key}add(a,b){var c=this._keyIndices;if(!Object.hasOwn(c,a=String(a))){var d=this._arr,e=d.length;return c[a]=e,d.push({key:a,priority:b}),this._decrease(e),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);var a=this._arr.pop();return delete this._keyIndices[a.key],this._heapify(0),a.key}decrease(a,b){var c=this._keyIndices[a];if(b>this._arr[c].priority)throw Error("New priority is greater than current priority. Key: "+a+" Old: "+this._arr[c].priority+" New: "+b);this._arr[c].priority=b,this._decrease(c)}_heapify(a){var b=this._arr,c=2*a,d=c+1,e=a;c<b.length&&(e=b[c].priority<b[e].priority?c:e,d<b.length&&(e=b[d].priority<b[e].priority?d:e),e!==a&&(this._swap(a,e),this._heapify(e)))}_decrease(a){for(var b,c=this._arr,d=c[a].priority;0!==a&&!(c[b=a>>1].priority<d);)this._swap(a,b),a=b}_swap(a,b){var c=this._arr,d=this._keyIndices,e=c[a],f=c[b];c[a]=f,c[b]=e,d[f.key]=a,d[e.key]=b}}}),m=d((a,b)=>{var c=l();b.exports=function(a,b,e,f){return function(a,b,d,e){var f,g,h={},i=new c,j=function(a){var b=a.v!==f?a.v:a.w,c=h[b],e=d(a),j=g.distance+e;if(e<0)throw Error("dijkstra does not allow negative edge weights. Bad edge: "+a+" Weight: "+e);j<c.distance&&(c.distance=j,c.predecessor=f,i.decrease(b,j))};for(a.nodes().forEach(function(a){var c=a===b?0:1/0;h[a]={distance:c},i.add(a,c)});i.size()>0&&(g=h[f=i.removeMin()]).distance!==1/0;)e(f).forEach(j);return h}(a,String(b),e||d,f||function(b){return a.outEdges(b)})};var d=()=>1}),n=d((a,b)=>{var c=m();b.exports=function(a,b,d){return a.nodes().reduce(function(e,f){return e[f]=c(a,f,b,d),e},{})}}),o=d((a,b)=>{b.exports=function(a,b,c){if(void 0!==a[b].predecessor)throw Error("Invalid source vertex");if(void 0===a[c].predecessor&&c!==b)throw Error("Invalid destination vertex");return{weight:a[c].distance,path:function(a,b,c){for(var d=[],e=c;e!==b;)d.push(e),e=a[e].predecessor;return d.push(b),d.reverse()}(a,b,c)}}}),p=d((a,b)=>{b.exports=function(a){var b=0,c=[],d={},e=[];return a.nodes().forEach(function(f){Object.hasOwn(d,f)||function f(g){var h=d[g]={onStack:!0,lowlink:b,index:b++};if(c.push(g),a.successors(g).forEach(function(a){Object.hasOwn(d,a)?d[a].onStack&&(h.lowlink=Math.min(h.lowlink,d[a].index)):(f(a),h.lowlink=Math.min(h.lowlink,d[a].lowlink))}),h.lowlink===h.index){var i,j=[];do d[i=c.pop()].onStack=!1,j.push(i);while(g!==i)e.push(j)}}(f)}),e}}),q=d((a,b)=>{var c=p();b.exports=function(a){return c(a).filter(function(b){return b.length>1||1===b.length&&a.hasEdge(b[0],b[0])})}}),r=d((a,b)=>{b.exports=function(a,b,d){var e,f,g,h,i;return e=a,f=b||c,g=d||function(b){return a.outEdges(b)},h={},(i=e.nodes()).forEach(function(a){h[a]={},h[a][a]={distance:0},i.forEach(function(b){a!==b&&(h[a][b]={distance:1/0})}),g(a).forEach(function(b){var c=b.v===a?b.w:b.v,d=f(b);h[a][c]={distance:d,predecessor:a}})}),i.forEach(function(a){var b=h[a];i.forEach(function(c){var d=h[c];i.forEach(function(c){var e=d[a],f=b[c],g=d[c],h=e.distance+f.distance;h<g.distance&&(g.distance=h,g.predecessor=f.predecessor)})})}),h};var c=()=>1}),s=d((a,b)=>{function c(a){var b={},c={},e=[];if(a.sinks().forEach(function f(g){if(Object.hasOwn(c,g))throw new d;Object.hasOwn(b,g)||(c[g]=!0,b[g]=!0,a.predecessors(g).forEach(f),delete c[g],e.push(g))}),Object.keys(b).length!==a.nodeCount())throw new d;return e}var d=class extends Error{constructor(){super(...arguments)}};b.exports=c,c.CycleException=d}),t=d((a,b)=>{var c=s();b.exports=function(a){try{c(a)}catch(a){if(a instanceof c.CycleException)return!1;throw a}return!0}}),u=d((a,b)=>{b.exports=function(a,b,c,d,e){Array.isArray(b)||(b=[b]);var f=(a.isDirected()?a.successors:a.neighbors).bind(a),g={};return b.forEach(function(b){if(!a.hasNode(b))throw Error("Graph does not have node: "+b);e=function a(b,c,d,e,f,g,h){return Object.hasOwn(e,c)||(e[c]=!0,d||(h=g(h,c)),f(c).forEach(function(c){h=a(b,c,d,e,f,g,h)}),d&&(h=g(h,c))),h}(a,b,"post"===c,g,f,d,e)}),e}}),v=d((a,b)=>{var c=u();b.exports=function(a,b,d){return c(a,b,d,function(a,b){return a.push(b),a},[])}}),w=d((a,b)=>{var c=v();b.exports=function(a,b){return c(a,b,"post")}}),x=d((a,b)=>{var c=v();b.exports=function(a,b){return c(a,b,"pre")}}),y=d((a,b)=>{var c=f(),d=l();b.exports=function(a,b){var e,f=new c,g={},h=new d;function i(a){var c=a.v===e?a.w:a.v,d=h.priority(c);if(void 0!==d){var f=b(a);f<d&&(g[c]=e,h.decrease(c,f))}}if(0===a.nodeCount())return f;a.nodes().forEach(function(a){h.add(a,1/0),f.setNode(a)}),h.decrease(a.nodes()[0],0);for(var j=!1;h.size()>0;){if(Object.hasOwn(g,e=h.removeMin()))f.setEdge(e,g[e]);else{if(j)throw Error("Input graph is not connected: "+a);j=!0}a.nodeEdges(e).forEach(i)}return f}}),z=d((a,b)=>{var c=m(),d=j();b.exports=function(a,b,e,f){return function(a,b,e,f){if(void 0===e)return c(a,b,e,f);for(var g=!1,h=a.nodes(),i=0;i<h.length;i++){for(var j=f(h[i]),k=0;k<j.length;k++){var l=j[k],m=l.v===h[i]?l.v:l.w,n=m===l.v?l.w:l.v;0>e({v:m,w:n})&&(g=!0)}if(g)return d(a,b,e,f)}return c(a,b,e,f)}(a,b,e,f||function(b){return a.outEdges(b)})}}),A=d((a,b)=>{b.exports={bellmanFord:j(),components:k(),dijkstra:m(),dijkstraAll:n(),extractPath:o(),findCycles:q(),floydWarshall:r(),isAcyclic:t(),postorder:w(),preorder:x(),prim:y(),shortestPaths:z(),reduce:u(),tarjan:p(),topsort:s()}}),B=h();b.exports={Graph:B.Graph,json:i(),alg:A(),version:B.version}}),g=e((a,b)=>{function c(a){a._prev._next=a._next,a._next._prev=a._prev,delete a._next,delete a._prev}function d(a,b){if("_next"!==a&&"_prev"!==a)return b}b.exports=class{constructor(){let a={};a._next=a._prev=a,this._sentinel=a}dequeue(){let a=this._sentinel,b=a._prev;if(b!==a)return c(b),b}enqueue(a){let b=this._sentinel;a._prev&&a._next&&c(a),a._next=b._next,b._next._prev=a,b._next=a,a._prev=b}toString(){let a=[],b=this._sentinel,c=b._prev;for(;c!==b;)a.push(JSON.stringify(c,d)),c=c._prev;return"["+a.join(", ")+"]"}}}),h=e((a,b)=>{var c=f().Graph,d=g();b.exports=function(a,b){var f,g;let j,k,l,m,n;if(1>=a.nodeCount())return[];let o=(f=a,g=b||e,j=new c,k=0,l=0,f.nodes().forEach(a=>{j.setNode(a,{v:a,in:0,out:0})}),f.edges().forEach(a=>{let b=j.edge(a.v,a.w)||0,c=g(a);j.setEdge(a.v,a.w,b+c),l=Math.max(l,j.node(a.v).out+=c),k=Math.max(k,j.node(a.w).in+=c)}),m=(function(a){let b=[];for(let c=0;c<a;c++)b.push(c);return b})(l+k+3).map(()=>new d),n=k+1,j.nodes().forEach(a=>{i(m,n,j.node(a))}),{graph:j,buckets:m,zeroIdx:n});return(function(a,b,c){let d=[],e=b[b.length-1],f=b[0],g;for(;a.nodeCount();){for(;g=f.dequeue();)h(a,b,c,g);for(;g=e.dequeue();)h(a,b,c,g);if(a.nodeCount()){for(let e=b.length-2;e>0;--e)if(g=b[e].dequeue()){d=d.concat(h(a,b,c,g,!0));break}}}return d})(o.graph,o.buckets,o.zeroIdx).flatMap(b=>a.outEdges(b.v,b.w))};var e=()=>1;function h(a,b,c,d,e){let f=e?[]:void 0;return a.inEdges(d.v).forEach(d=>{let g=a.edge(d),h=a.node(d.v);e&&f.push({v:d.v,w:d.w}),h.out-=g,i(b,c,h)}),a.outEdges(d.v).forEach(d=>{let e=a.edge(d),f=d.w,g=a.node(f);g.in-=e,i(b,c,g)}),a.removeNode(d.v),f}function i(a,b,c){c.out?c.in?a[c.out-c.in+b].enqueue(c):a[a.length-1].enqueue(c):a[0].enqueue(c)}}),i=e((a,b)=>{var c=f().Graph;function d(a,b,c,d){for(var e=d;a.hasNode(e);)e=i(d);return c.dummy=b,a.setNode(e,c),e}b.exports={addBorderNode:function(a,b,c,e){let f={width:0,height:0};return arguments.length>=4&&(f.rank=c,f.order=e),d(a,"border",f,b)},addDummyNode:d,applyWithChunking:e,asNonCompoundGraph:function(a){let b=new c({multigraph:a.isMultigraph()}).setGraph(a.graph());return a.nodes().forEach(c=>{a.children(c).length||b.setNode(c,a.node(c))}),a.edges().forEach(c=>{b.setEdge(c,a.edge(c))}),b},buildLayerMatrix:function(a){let b=j(g(a)+1).map(()=>[]);return a.nodes().forEach(c=>{let d=a.node(c),e=d.rank;void 0!==e&&(b[e][d.order]=c)}),b},intersectRect:function(a,b){let c,d,e=a.x,f=a.y,g=b.x-e,h=b.y-f,i=a.width/2,j=a.height/2;if(!g&&!h)throw Error("Not possible to find intersection inside of the rectangle");return Math.abs(h)*i>Math.abs(g)*j?(h<0&&(j=-j),c=j*g/h,d=j):(g<0&&(i=-i),c=i,d=i*h/g),{x:e+c,y:f+d}},mapValues:function(a,b){let c=b;return"string"==typeof b&&(c=a=>a[b]),Object.entries(a).reduce((a,[b,d])=>(a[b]=c(d,b),a),{})},maxRank:g,normalizeRanks:function(a){let b=e(Math.min,a.nodes().map(b=>{let c=a.node(b).rank;return void 0===c?Number.MAX_VALUE:c}));a.nodes().forEach(c=>{let d=a.node(c);Object.hasOwn(d,"rank")&&(d.rank-=b)})},notime:function(a,b){return b()},partition:function(a,b){let c={lhs:[],rhs:[]};return a.forEach(a=>{b(a)?c.lhs.push(a):c.rhs.push(a)}),c},pick:function(a,b){let c={};for(let d of b)void 0!==a[d]&&(c[d]=a[d]);return c},predecessorWeights:function(a){let b=a.nodes().map(b=>{let c={};return a.inEdges(b).forEach(b=>{c[b.v]=(c[b.v]||0)+a.edge(b).weight}),c});return k(a.nodes(),b)},range:j,removeEmptyRanks:function(a){let b=e(Math.min,a.nodes().map(b=>a.node(b).rank).filter(a=>void 0!==a)),c=[];a.nodes().forEach(d=>{let e=a.node(d).rank-b;c[e]||(c[e]=[]),c[e].push(d)});let d=0,f=a.graph().nodeRankFactor;Array.from(c).forEach((b,c)=>{void 0===b&&c%f!=0?--d:void 0!==b&&d&&b.forEach(b=>a.node(b).rank+=d)})},simplify:function(a){let b=new c().setGraph(a.graph());return a.nodes().forEach(c=>b.setNode(c,a.node(c))),a.edges().forEach(c=>{let d=b.edge(c.v,c.w)||{weight:0,minlen:1},e=a.edge(c);b.setEdge(c.v,c.w,{weight:d.weight+e.weight,minlen:Math.max(d.minlen,e.minlen)})}),b},successorWeights:function(a){let b=a.nodes().map(b=>{let c={};return a.outEdges(b).forEach(b=>{c[b.w]=(c[b.w]||0)+a.edge(b).weight}),c});return k(a.nodes(),b)},time:function(a,b){let c=Date.now();try{return b()}finally{console.log(a+" time: "+(Date.now()-c)+"ms")}},uniqueId:i,zipObject:k};function e(a,b){if(!(b.length>65535))return a.apply(null,b);{let c=function(a,b=65535){let c=[];for(let d=0;d<a.length;d+=b){let e=a.slice(d,d+b);c.push(e)}return c}(b);return a.apply(null,c.map(b=>a.apply(null,b)))}}function g(a){return e(Math.max,a.nodes().map(b=>{let c=a.node(b).rank;return void 0===c?5e-324:c}))}var h=0;function i(a){return a+""+ ++h}function j(a,b,c=1){null==b&&(b=a,a=0);let d=a=>a<b;c<0&&(d=a=>b<a);let e=[];for(let b=a;d(b);b+=c)e.push(b);return e}function k(a,b){return a.reduce((a,c,d)=>(a[c]=b[d],a),{})}}),j=e((a,b)=>{var c=h(),d=i().uniqueId;b.exports={run:function(a){var b,e;let f,g,h;("greedy"===a.graph().acyclicer?c(a,(b=a,a=>b.edge(a).weight)):(f=[],g={},h={},(e=a).nodes().forEach(function a(b){Object.hasOwn(h,b)||(h[b]=!0,g[b]=!0,e.outEdges(b).forEach(b=>{Object.hasOwn(g,b.w)?f.push(b):a(b.w)}),delete g[b])}),f)).forEach(b=>{let c=a.edge(b);a.removeEdge(b),c.forwardName=b.name,c.reversed=!0,a.setEdge(b.w,b.v,c,d("rev"))})},undo:function(a){a.edges().forEach(b=>{let c=a.edge(b);if(c.reversed){a.removeEdge(b);let d=c.forwardName;delete c.reversed,delete c.forwardName,a.setEdge(b.w,b.v,c,d)}})}}}),k=e((a,b)=>{var c=i();b.exports={run:function(a){a.graph().dummyChains=[],a.edges().forEach(b=>(function(a,b){let d,e,f,g=b.v,h=a.node(g).rank,i=b.w,j=a.node(i).rank,k=b.name,l=a.edge(b),m=l.labelRank;if(j!==h+1){for(a.removeEdge(b),f=0,++h;h<j;++f,++h)l.points=[],e={width:0,height:0,edgeLabel:l,edgeObj:b,rank:h},d=c.addDummyNode(a,"edge",e,"_d"),h===m&&(e.width=l.width,e.height=l.height,e.dummy="edge-label",e.labelpos=l.labelpos),a.setEdge(g,d,{weight:l.weight},k),0===f&&a.graph().dummyChains.push(d),g=d;a.setEdge(g,i,{weight:l.weight},k)}})(a,b))},undo:function(a){a.graph().dummyChains.forEach(b=>{let c=a.node(b),d=c.edgeLabel,e;for(a.setEdge(c.edgeObj,d);c.dummy;)e=a.successors(b)[0],a.removeNode(b),d.points.push({x:c.x,y:c.y}),"edge-label"===c.dummy&&(d.x=c.x,d.y=c.y,d.width=c.width,d.height=c.height),b=e,c=a.node(b)})}}}),l=e((a,b)=>{var{applyWithChunking:c}=i();b.exports={longestPath:function(a){var b={};a.sources().forEach(function d(e){var f=a.node(e);if(Object.hasOwn(b,e))return f.rank;b[e]=!0;var g=c(Math.min,a.outEdges(e).map(b=>null==b?1/0:d(b.w)-a.edge(b).minlen));return g===1/0&&(g=0),f.rank=g})},slack:function(a,b){return a.node(b.w).rank-a.node(b.v).rank-a.edge(b).minlen}}}),m=e((a,b)=>{var c=f().Graph,d=l().slack;b.exports=function(a){var b,e,f,g,h=new c({directed:!1}),i=a.nodes()[0],j=a.nodeCount();for(h.setNode(i,{});b=h,e=a,b.nodes().forEach(function a(c){e.nodeEdges(c).forEach(f=>{var g=f.v,h=c===g?f.w:g;b.hasNode(h)||d(e,f)||(b.setNode(h,{}),b.setEdge(c,h,{}),a(h))})}),b.nodeCount()<j;)f=function(a,b){return b.edges().reduce((c,e)=>{let f=1/0;return a.hasNode(e.v)!==a.hasNode(e.w)&&(f=d(b,e)),f<c[0]?[f,e]:c},[1/0,null])[1]}(h,a),g=h.hasNode(f.v)?d(a,f):-d(a,f),function(a,b,c){a.nodes().forEach(a=>b.node(a).rank+=c)}(h,a,g);return h}}),n=e((a,b)=>{var c=m(),d=l().slack,e=l().longestPath,g=f().alg.preorder,h=f().alg.postorder,j=i().simplify;function k(a){e(a=j(a));var b,d,f=c(a);for(p(f),n(f,a);b=q(f);)d=r(f,a,b),s(f,a,b,d)}function n(a,b){var c=h(a,a.nodes());(c=c.slice(0,c.length-1)).forEach(c=>{var d,e,f,g;return d=a,e=b,f=c,g=d.node(f).parent,void(d.edge(f,g).cutvalue=o(d,e,f))})}function o(a,b,c){var d=a.node(c).parent,e=!0,f=b.edge(c,d),g=0;return f||(e=!1,f=b.edge(d,c)),g=f.weight,b.nodeEdges(c).forEach(f=>{var h=f.v===c,i=h?f.w:f.v;if(i!==d){var j,k,l,m=h===e,n=b.edge(f).weight;if(g+=m?n:-n,j=a,k=c,l=i,j.hasEdge(k,l)){var o=a.edge(c,i).cutvalue;g+=m?-o:o}}}),g}function p(a,b){arguments.length<2&&(b=a.nodes()[0]),function a(b,c,d,e,f){var g=d,h=b.node(e);return c[e]=!0,b.neighbors(e).forEach(f=>{Object.hasOwn(c,f)||(d=a(b,c,d,f,e))}),h.low=g,h.lim=d++,f?h.parent=f:delete h.parent,d}(a,{},1,b)}function q(a){return a.edges().find(b=>a.edge(b).cutvalue<0)}function r(a,b,c){var e=c.v,f=c.w;b.hasEdge(e,f)||(e=c.w,f=c.v);var g=a.node(e),h=a.node(f),i=g,j=!1;return g.lim>h.lim&&(i=h,j=!0),b.edges().filter(b=>j===t(a,a.node(b.v),i)&&j!==t(a,a.node(b.w),i)).reduce((a,c)=>d(b,c)<d(b,a)?c:a)}function s(a,b,c,d){var e,f,h,i,j=c.v,k=c.w;a.removeEdge(j,k),a.setEdge(d.v,d.w,{}),p(a),n(a,b),e=a,f=b,h=e.nodes().find(a=>!f.node(a).parent),(i=(i=g(e,h)).slice(1)).forEach(a=>{var b=e.node(a).parent,c=f.edge(a,b),d=!1;c||(c=f.edge(b,a),d=!0),f.node(a).rank=f.node(b).rank+(d?c.minlen:-c.minlen)})}function t(a,b,c){return c.low<=b.lim&&b.lim<=c.lim}b.exports=k,k.initLowLimValues=p,k.initCutValues=n,k.calcCutValue=o,k.leaveEdge=q,k.enterEdge=r,k.exchangeEdges=s}),o=e((a,b)=>{var c=l().longestPath,d=m(),e=n();b.exports=function(a){var b,g=a.graph().ranker;if(g instanceof Function)return g(a);switch(a.graph().ranker){case"network-simplex":default:e(a);break;case"tight-tree":c(b=a),d(b);break;case"longest-path":f(a);case"none":}};var f=c}),p=e((a,b)=>{b.exports=function(a){var b;let c,d,e=(c={},d=0,(b=a).children().forEach(function a(e){let f=d;b.children(e).forEach(a),c[e]={low:f,lim:d++}}),c);a.graph().dummyChains.forEach(b=>{let c=a.node(b),d=c.edgeObj,f=function(a,b,c,d){let e=[],f=[],g=Math.min(b[c].low,b[d].low),h=Math.max(b[c].lim,b[d].lim),i,j;i=c;do e.push(i=a.parent(i));while(i&&(b[i].low>g||h>b[i].lim))for(j=i,i=d;(i=a.parent(i))!==j;)f.push(i);return{path:e.concat(f.reverse()),lca:j}}(a,e,d.v,d.w),g=f.path,h=f.lca,i=0,j=g[0],k=!0;for(;b!==d.w;){if(c=a.node(b),k){for(;(j=g[i])!==h&&a.node(j).maxRank<c.rank;)i++;j===h&&(k=!1)}if(!k){for(;i<g.length-1&&a.node(j=g[i+1]).minRank<=c.rank;)i++;j=g[i]}a.setParent(b,j),b=a.successors(b)[0]}})}}),q=e((a,b)=>{var c=i();b.exports={run:function(a){var b,d,e;let f=c.addDummyNode(a,"root",{},"_root"),g=(d={},(b=a).children().forEach(a=>(function a(c,e){var f=b.children(c);f&&f.length&&f.forEach(b=>a(b,e+1)),d[c]=e})(a,1)),d),h=Object.values(g),i=c.applyWithChunking(Math.max,h)-1,j=2*i+1;a.graph().nestingRoot=f,a.edges().forEach(b=>a.edge(b).minlen*=j);let k=(e=a).edges().reduce((a,b)=>a+e.edge(b).weight,0)+1;a.children().forEach(b=>(function a(b,d,e,f,g,h,i){let j=b.children(i);if(!j.length){i!==d&&b.setEdge(d,i,{weight:0,minlen:e});return}let k=c.addBorderNode(b,"_bt"),l=c.addBorderNode(b,"_bb"),m=b.node(i);b.setParent(k,i),m.borderTop=k,b.setParent(l,i),m.borderBottom=l,j.forEach(c=>{a(b,d,e,f,g,h,c);let j=b.node(c),m=j.borderTop?j.borderTop:c,n=j.borderBottom?j.borderBottom:c,o=j.borderTop?f:2*f,p=m!==n?1:g-h[i]+1;b.setEdge(k,m,{weight:o,minlen:p,nestingEdge:!0}),b.setEdge(n,l,{weight:o,minlen:p,nestingEdge:!0})}),b.parent(i)||b.setEdge(d,k,{weight:0,minlen:g+h[i]})})(a,f,j,k,i,g,b)),a.graph().nodeRankFactor=j},cleanup:function(a){var b=a.graph();a.removeNode(b.nestingRoot),delete b.nestingRoot,a.edges().forEach(b=>{a.edge(b).nestingEdge&&a.removeEdge(b)})}}}),r=e((a,b)=>{var c=i();function d(a,b,d,e,f,g){let h=f[b][g-1],i=c.addDummyNode(a,"border",{width:0,height:0,rank:g,borderType:b},d);f[b][g]=i,a.setParent(i,e),h&&a.setEdge(h,i,{weight:1})}b.exports=function(a){a.children().forEach(function b(c){let e=a.children(c),f=a.node(c);if(e.length&&e.forEach(b),Object.hasOwn(f,"minRank")){f.borderLeft=[],f.borderRight=[];for(let b=f.minRank,e=f.maxRank+1;b<e;++b)d(a,"borderLeft","_bl",c,f,b),d(a,"borderRight","_br",c,f,b)}})}}),s=e((a,b)=>{function c(a){a.nodes().forEach(b=>d(a.node(b))),a.edges().forEach(b=>d(a.edge(b)))}function d(a){let b=a.width;a.width=a.height,a.height=b}function e(a){a.y=-a.y}function f(a){let b=a.x;a.x=a.y,a.y=b}b.exports={adjust:function(a){let b=a.graph().rankdir.toLowerCase();("lr"===b||"rl"===b)&&c(a)},undo:function(a){var b,d;let g=a.graph().rankdir.toLowerCase();("bt"===g||"rl"===g)&&((b=a).nodes().forEach(a=>e(b.node(a))),b.edges().forEach(a=>{let c=b.edge(a);c.points.forEach(e),Object.hasOwn(c,"y")&&e(c)})),("lr"===g||"rl"===g)&&((d=a).nodes().forEach(a=>f(d.node(a))),d.edges().forEach(a=>{let b=d.edge(a);b.points.forEach(f),Object.hasOwn(b,"x")&&f(b)}),c(a))}}}),t=e((a,b)=>{var c=i();b.exports=function(a){let b={},d=a.nodes().filter(b=>!a.children(b).length),e=d.map(b=>a.node(b).rank),f=c.applyWithChunking(Math.max,e),g=c.range(f+1).map(()=>[]);return d.sort((b,c)=>a.node(b).rank-a.node(c).rank).forEach(function c(d){b[d]||(b[d]=!0,g[a.node(d).rank].push(d),a.successors(d).forEach(c))}),g}}),u=e((a,b)=>{var c=i().zipObject;b.exports=function(a,b){let d=0;for(let e=1;e<b.length;++e)d+=function(a,b,d){let e=c(d,d.map((a,b)=>b)),f=b.flatMap(b=>a.outEdges(b).map(b=>({pos:e[b.w],weight:a.edge(b).weight})).sort((a,b)=>a.pos-b.pos)),g=1;for(;g<d.length;)g<<=1;let h=2*g-1;g-=1;let i=Array(h).fill(0),j=0;return f.forEach(a=>{let b=a.pos+g;i[b]+=a.weight;let c=0;for(;b>0;)b%2&&(c+=i[b+1]),b=b-1>>1,i[b]+=a.weight;j+=a.weight*c}),j}(a,b[e-1],b[e]);return d}}),v=e((a,b)=>{b.exports=function(a,b=[]){return b.map(b=>{let c=a.inEdges(b);if(!c.length)return{v:b};{let d=c.reduce((b,c)=>{let d=a.edge(c),e=a.node(c.v);return{sum:b.sum+d.weight*e.order,weight:b.weight+d.weight}},{sum:0,weight:0});return{v:b,barycenter:d.sum/d.weight,weight:d.weight}}})}}),w=e((a,b)=>{var c=i();b.exports=function(a,b){let d={};return a.forEach((a,b)=>{let c=d[a.v]={indegree:0,in:[],out:[],vs:[a.v],i:b};void 0!==a.barycenter&&(c.barycenter=a.barycenter,c.weight=a.weight)}),b.edges().forEach(a=>{let b=d[a.v],c=d[a.w];void 0!==b&&void 0!==c&&(c.indegree++,b.out.push(d[a.w]))}),function(a){let b=[];for(;a.length;){let c=a.pop();b.push(c),c.in.reverse().forEach(function(a){return b=>{b.merged||(void 0===b.barycenter||void 0===a.barycenter||b.barycenter>=a.barycenter)&&function(a,b){let c=0,d=0;a.weight&&(c+=a.barycenter*a.weight,d+=a.weight),b.weight&&(c+=b.barycenter*b.weight,d+=b.weight),a.vs=b.vs.concat(a.vs),a.barycenter=c/d,a.weight=d,a.i=Math.min(b.i,a.i),b.merged=!0}(a,b)}}(c)),c.out.forEach(function(b){return c=>{c.in.push(b),0==--c.indegree&&a.push(c)}}(c))}return b.filter(a=>!a.merged).map(a=>c.pick(a,["vs","i","barycenter","weight"]))}(Object.values(d).filter(a=>!a.indegree))}}),x=e((a,b)=>{var c=i();function d(a,b,c){let d;for(;b.length&&(d=b[b.length-1]).i<=c;)b.pop(),a.push(d.vs),c++;return c}b.exports=function(a,b){var e;let f=c.partition(a,a=>Object.hasOwn(a,"barycenter")),g=f.lhs,h=f.rhs.sort((a,b)=>b.i-a.i),i=[],j=0,k=0,l=0;g.sort((e=!!b,(a,b)=>a.barycenter<b.barycenter?-1:a.barycenter>b.barycenter?1:e?b.i-a.i:a.i-b.i)),l=d(i,h,l),g.forEach(a=>{l+=a.vs.length,i.push(a.vs),j+=a.barycenter*a.weight,k+=a.weight,l=d(i,h,l)});let m={vs:i.flat(!0)};return k&&(m.barycenter=j/k,m.weight=k),m}}),y=e((a,b)=>{var c=v(),d=w(),e=x();b.exports=function a(b,f,g,h){var i,j;let k=b.children(f),l=b.node(f),m=l?l.borderLeft:void 0,n=l?l.borderRight:void 0,o={};m&&(k=k.filter(a=>a!==m&&a!==n));let p=c(b,k);p.forEach(c=>{if(b.children(c.v).length){var d,e;let f=a(b,c.v,g,h);o[c.v]=f,Object.hasOwn(f,"barycenter")&&(d=c,e=f,void 0!==d.barycenter?(d.barycenter=(d.barycenter*d.weight+e.barycenter*e.weight)/(d.weight+e.weight),d.weight+=e.weight):(d.barycenter=e.barycenter,d.weight=e.weight))}});let q=d(p,g);i=q,j=o,i.forEach(a=>{a.vs=a.vs.flatMap(a=>j[a]?j[a].vs:a)});let r=e(q,h);if(m&&(r.vs=[m,r.vs,n].flat(!0),b.predecessors(m).length)){let a=b.node(b.predecessors(m)[0]),c=b.node(b.predecessors(n)[0]);Object.hasOwn(r,"barycenter")||(r.barycenter=0,r.weight=0),r.barycenter=(r.barycenter*r.weight+a.order+c.order)/(r.weight+2),r.weight+=2}return r}}),z=e((a,b)=>{var c=f().Graph,d=i();b.exports=function(a,b,e,f){f||(f=a.nodes());let g=function(a){for(var b;a.hasNode(b=d.uniqueId("_root")););return b}(a),h=new c({compound:!0}).setGraph({root:g}).setDefaultNodeLabel(b=>a.node(b));return f.forEach(c=>{let d=a.node(c),f=a.parent(c);(d.rank===b||d.minRank<=b&&b<=d.maxRank)&&(h.setNode(c),h.setParent(c,f||g),a[e](c).forEach(b=>{let d=b.v===c?b.w:b.v,e=h.edge(d,c),f=void 0!==e?e.weight:0;h.setEdge(d,c,{weight:a.edge(b).weight+f})}),Object.hasOwn(d,"minRank")&&h.setNode(c,{borderLeft:d.borderLeft[b],borderRight:d.borderRight[b]}))}),h}}),A=e((a,b)=>{b.exports=function(a,b,c){let d={},e;c.forEach(c=>{let f=a.parent(c),g,h;for(;f;){if((g=a.parent(f))?(h=d[g],d[g]=f):(h=e,e=f),h&&h!==f)return void b.setEdge(h,f);f=g}})}}),B=e((a,b)=>{var c=t(),d=u(),e=y(),g=z(),h=A(),j=f().Graph,k=i();function l(a,b,c){let d=new Map,e=(a,b)=>{d.has(a)||d.set(a,[]),d.get(a).push(b)};for(let b of a.nodes()){let c=a.node(b);if("number"==typeof c.rank&&e(c.rank,b),"number"==typeof c.minRank&&"number"==typeof c.maxRank)for(let a=c.minRank;a<=c.maxRank;a++)a!==c.rank&&e(a,b)}return b.map(function(b){return g(a,b,c,d.get(b)||[])})}function m(a,b){Object.values(b).forEach(b=>b.forEach((b,c)=>a.node(b).order=c))}b.exports=function a(b,f={}){if("function"==typeof f.customOrder)return void f.customOrder(b,a);let g=k.maxRank(b),i=l(b,k.range(1,g+1),"inEdges"),n=l(b,k.range(g-1,-1,-1),"outEdges"),o=c(b);if(m(b,o),f.disableOptimalOrderHeuristic)return;let p=1/0,q,r=f.constraints||[];for(let a=0,c=0;c<4;++a,++c){(function(a,b,c){let d=new j;a.forEach(function(a){c.forEach(a=>d.setEdge(a.left,a.right));let f=a.graph().root,g=e(a,f,d,b);g.vs.forEach((b,c)=>a.node(b).order=c),h(a,d,g.vs)})})(a%2?i:n,a%4>=2,r),o=k.buildLayerMatrix(b);let f=d(b,o);f<p?(c=0,q=Object.assign({},o),p=f):f===p&&(q=structuredClone(o))}m(b,q)}}),C=e((a,b)=>{var c=f().Graph,d=i();function e(a,b){let c={};return b.length&&b.reduce(function(b,d){let e=0,f=0,g=b.length,i=d[d.length-1];return d.forEach((b,j)=>{let k=function(a,b){if(a.node(b).dummy)return a.predecessors(b).find(b=>a.node(b).dummy)}(a,b),l=k?a.node(k).order:g;(k||b===i)&&(d.slice(f,j+1).forEach(b=>{a.predecessors(b).forEach(d=>{let f=a.node(d),g=f.order;(g<e||l<g)&&!(f.dummy&&a.node(b).dummy)&&h(c,d,b)})}),f=j+1,e=l)}),d}),c}function g(a,b){let c={};function e(b,e,f,g,i){let j;d.range(e,f).forEach(d=>{j=b[d],a.node(j).dummy&&a.predecessors(j).forEach(b=>{let d=a.node(b);d.dummy&&(d.order<g||d.order>i)&&h(c,b,j)})})}return b.length&&b.reduce(function(b,c){let d=-1,f,g=0;return c.forEach((h,i)=>{if("border"===a.node(h).dummy){let b=a.predecessors(h);b.length&&(f=a.node(b[0]).order,e(c,g,i,d,f),g=i,d=f)}e(c,g,c.length,f,b.length)}),c}),c}function h(a,b,c){if(b>c){let a=b;b=c,c=a}let d=a[b];d||(a[b]=d={}),d[c]=!0}function j(a,b,c){if(b>c){let a=b;b=c,c=a}return!!a[b]&&Object.hasOwn(a[b],c)}function k(a,b,c,d){let e={},f={},g={};return b.forEach(a=>{a.forEach((a,b)=>{e[a]=a,f[a]=a,g[a]=b})}),b.forEach(a=>{let b=-1;a.forEach(a=>{let h=d(a);if(h.length){let d=((h=h.sort((a,b)=>g[a]-g[b])).length-1)/2;for(let i=Math.floor(d),k=Math.ceil(d);i<=k;++i){let d=h[i];f[a]===a&&b<g[d]&&!j(c,a,d)&&(f[d]=a,f[a]=e[a]=e[d],b=g[d])}}})}),{root:e,align:f}}function l(a,b,d,e,f){var g,h,i,j,k,l,m;let n,o,p,q={},r=(g=a,h=b,i=d,j=f,n=new c,p=(k=(o=g.graph()).nodesep,l=o.edgesep,m=j,(a,b,c)=>{let d=a.node(b),e=a.node(c),f,g;if(f=0+d.width/2,Object.hasOwn(d,"labelpos"))switch(d.labelpos.toLowerCase()){case"l":g=-d.width/2;break;case"r":g=d.width/2}if(g&&(f+=m?g:-g),g=0,f+=(d.dummy?l:k)/2,f+=(e.dummy?l:k)/2,f+=e.width/2,Object.hasOwn(e,"labelpos"))switch(e.labelpos.toLowerCase()){case"l":g=e.width/2;break;case"r":g=-e.width/2}return g&&(f+=m?g:-g),g=0,f}),h.forEach(a=>{let b;a.forEach(a=>{let c=i[a];if(n.setNode(c),b){var d=i[b],e=n.edge(d,c);n.setEdge(d,c,Math.max(p(g,a,b),e||0))}b=a})}),n),s=f?"borderLeft":"borderRight";function t(a,b){let c=r.nodes().slice(),d={},e=c.pop();for(;e;){if(d[e])a(e);else for(let a of(d[e]=!0,c.push(e),b(e)))c.push(a);e=c.pop()}}return t(function(a){q[a]=r.inEdges(a).reduce((a,b)=>Math.max(a,q[b.v]+r.edge(b)),0)},r.predecessors.bind(r)),t(function(b){let c=r.outEdges(b).reduce((a,b)=>Math.min(a,q[b.w]-r.edge(b)),1/0),d=a.node(b);c!==1/0&&d.borderType!==s&&(q[b]=Math.max(q[b],c))},r.successors.bind(r)),Object.keys(e).forEach(a=>q[a]=q[d[a]]),q}function m(a,b){return Object.values(b).reduce((b,c)=>{let d=-1/0,e=1/0;Object.entries(c).forEach(([b,c])=>{var f,g;let h=(f=a,g=b,f.node(g).width/2);d=Math.max(c+h,d),e=Math.min(c-h,e)});let f=d-e;return f<b[0]&&(b=[f,c]),b},[1/0,null])[1]}function n(a,b){let c=Object.values(b),e=d.applyWithChunking(Math.min,c),f=d.applyWithChunking(Math.max,c);["u","d"].forEach(c=>{["l","r"].forEach(g=>{let h=c+g,i=a[h];if(i===b)return;let j=Object.values(i),k=e-d.applyWithChunking(Math.min,j);"l"!==g&&(k=f-d.applyWithChunking(Math.max,j)),k&&(a[h]=d.mapValues(i,a=>a+k))})})}function o(a,b){return d.mapValues(a.ul,(c,d)=>{if(b)return a[b.toLowerCase()][d];{let b=Object.values(a).map(a=>a[d]).sort((a,b)=>a-b);return(b[1]+b[2])/2}})}b.exports={positionX:function(a){let b=d.buildLayerMatrix(a),c=Object.assign(e(a,b),g(a,b)),f={},h;["u","d"].forEach(e=>{h="u"===e?b:Object.values(b).reverse(),["l","r"].forEach(b=>{"r"===b&&(h=h.map(a=>Object.values(a).reverse()));let g=("u"===e?a.predecessors:a.successors).bind(a),i=k(a,h,c,g),j=l(a,h,i.root,i.align,"r"===b);"r"===b&&(j=d.mapValues(j,a=>-a)),f[e+b]=j})});let i=m(a,f);return n(f,i),o(f,a.graph().align)},findType1Conflicts:e,findType2Conflicts:g,addConflict:h,hasConflict:j,verticalAlignment:k,horizontalCompaction:l,alignCoordinates:n,findSmallestWidthAlignment:m,balance:o}}),D=e((a,b)=>{var c=i(),d=C().positionX;b.exports=function(a){var b;let e,f,g,h;b=a=c.asNonCompoundGraph(a),e=c.buildLayerMatrix(b),f=b.graph().ranksep,g=b.graph().rankalign,h=0,e.forEach(a=>{let c=a.reduce((a,c)=>{let d=b.node(c).height;return a>d?a:d},0);a.forEach(a=>{let d=b.node(a);"top"===g?d.y=h+d.height/2:"bottom"===g?d.y=h+c-d.height/2:d.y=h+c/2}),h+=c+f}),Object.entries(d(a)).forEach(([b,c])=>a.node(b).x=c)}}),E=e((a,b)=>{var c=j(),d=k(),e=o(),g=i().normalizeRanks,h=p(),l=i().removeEmptyRanks,m=q(),n=r(),t=s(),u=B(),v=D(),w=i(),x=f().Graph;b.exports=function(a,b={}){let f=b.debugTiming?w.time:w.notime;return f("layout",()=>{let i=f(" buildLayoutGraph",()=>{var b;let c,d;return b=a,c=new x({multigraph:!0,compound:!0}),d=J(b.graph()),c.setGraph(Object.assign({},z,I(d,y),w.pick(d,A))),b.nodes().forEach(a=>{let d=I(J(b.node(a)),C);Object.keys(E).forEach(a=>{void 0===d[a]&&(d[a]=E[a])}),c.setNode(a,d),c.setParent(a,b.parent(a))}),b.edges().forEach(a=>{let d=J(b.edge(a));c.setEdge(a,Object.assign({},G,I(d,F),w.pick(d,H)))}),c});return f(" runLayout",()=>{var a,j,k;return a=i,j=f,k=b,void(j(" makeSpaceForEdgeLabels",()=>{var b;let c;return c=(b=a).graph(),void(c.ranksep/=2,b.edges().forEach(a=>{let d=b.edge(a);d.minlen*=2,"c"!==d.labelpos.toLowerCase()&&("TB"===c.rankdir||"BT"===c.rankdir?d.width+=d.labeloffset:d.height+=d.labeloffset)}))}),j(" removeSelfEdges",()=>{var b;(b=a).edges().forEach(a=>{if(a.v===a.w){var c=b.node(a.v);c.selfEdges||(c.selfEdges=[]),c.selfEdges.push({e:a,label:b.edge(a)}),b.removeEdge(a)}})}),j(" acyclic",()=>c.run(a)),j(" nestingGraph.run",()=>m.run(a)),j(" rank",()=>e(w.asNonCompoundGraph(a))),j(" injectEdgeLabelProxies",()=>{var b;(b=a).edges().forEach(a=>{let c=b.edge(a);if(c.width&&c.height){let c=b.node(a.v),d={rank:(b.node(a.w).rank-c.rank)/2+c.rank,e:a};w.addDummyNode(b,"edge-proxy",d,"_ep")}})}),j(" removeEmptyRanks",()=>l(a)),j(" nestingGraph.cleanup",()=>m.cleanup(a)),j(" normalizeRanks",()=>g(a)),j(" assignRankMinMax",()=>{var b;let c;return c=0,void((b=a).nodes().forEach(a=>{let d=b.node(a);d.borderTop&&(d.minRank=b.node(d.borderTop).rank,d.maxRank=b.node(d.borderBottom).rank,c=Math.max(c,d.maxRank))}),b.graph().maxRank=c)}),j(" removeEdgeLabelProxies",()=>{var b;(b=a).nodes().forEach(a=>{let c=b.node(a);"edge-proxy"===c.dummy&&(b.edge(c.e).labelRank=c.rank,b.removeNode(a))})}),j(" normalize.run",()=>d.run(a)),j(" parentDummyChains",()=>h(a)),j(" addBorderSegments",()=>n(a)),j(" order",()=>u(a,k)),j(" insertSelfEdges",()=>{var b;return b=a,void w.buildLayerMatrix(b).forEach(a=>{var c=0;a.forEach((a,d)=>{var e=b.node(a);e.order=d+c,(e.selfEdges||[]).forEach(a=>{w.addDummyNode(b,"selfedge",{width:a.label.width,height:a.label.height,rank:e.rank,order:d+ ++c,e:a.e,label:a.label},"_se")}),delete e.selfEdges})})}),j(" adjustCoordinateSystem",()=>t.adjust(a)),j(" position",()=>v(a)),j(" positionSelfEdges",()=>{var b;(b=a).nodes().forEach(a=>{var c=b.node(a);if("selfedge"===c.dummy){var d=b.node(c.e.v),e=d.x+d.width/2,f=d.y,g=c.x-e,h=d.height/2;b.setEdge(c.e,c.label),b.removeNode(a),c.label.points=[{x:e+2*g/3,y:f-h},{x:e+5*g/6,y:f-h},{x:e+g,y:f},{x:e+5*g/6,y:f+h},{x:e+2*g/3,y:f+h}],c.label.x=c.x,c.label.y=c.y}})}),j(" removeBorderNodes",()=>{var b;(b=a).nodes().forEach(a=>{if(b.children(a).length){let c=b.node(a),d=b.node(c.borderTop),e=b.node(c.borderBottom),f=b.node(c.borderLeft[c.borderLeft.length-1]),g=b.node(c.borderRight[c.borderRight.length-1]);c.width=Math.abs(g.x-f.x),c.height=Math.abs(e.y-d.y),c.x=f.x+c.width/2,c.y=d.y+c.height/2}}),b.nodes().forEach(a=>{"border"===b.node(a).dummy&&b.removeNode(a)})}),j(" normalize.undo",()=>d.undo(a)),j(" fixupEdgeLabelCoords",()=>{var b;(b=a).edges().forEach(a=>{let c=b.edge(a);if(Object.hasOwn(c,"x"))switch(("l"===c.labelpos||"r"===c.labelpos)&&(c.width-=c.labeloffset),c.labelpos){case"l":c.x-=c.width/2+c.labeloffset;break;case"r":c.x+=c.width/2+c.labeloffset}})}),j(" undoCoordinateSystem",()=>t.undo(a)),j(" translateGraph",()=>(function(a){let b=1/0,c=0,d=1/0,e=0,f=a.graph(),g=f.marginx||0,h=f.marginy||0;function i(a){let f=a.x,g=a.y,h=a.width,i=a.height;b=Math.min(b,f-h/2),c=Math.max(c,f+h/2),d=Math.min(d,g-i/2),e=Math.max(e,g+i/2)}a.nodes().forEach(b=>i(a.node(b))),a.edges().forEach(b=>{let c=a.edge(b);Object.hasOwn(c,"x")&&i(c)}),b-=g,d-=h,a.nodes().forEach(c=>{let e=a.node(c);e.x-=b,e.y-=d}),a.edges().forEach(c=>{let e=a.edge(c);e.points.forEach(a=>{a.x-=b,a.y-=d}),Object.hasOwn(e,"x")&&(e.x-=b),Object.hasOwn(e,"y")&&(e.y-=d)}),f.width=c-b+g,f.height=e-d+h})(a)),j(" assignNodeIntersects",()=>{var b;(b=a).edges().forEach(a=>{let c=b.edge(a),d=b.node(a.v),e=b.node(a.w),f,g;c.points?(f=c.points[0],g=c.points[c.points.length-1]):(c.points=[],f=e,g=d),c.points.unshift(w.intersectRect(d,f)),c.points.push(w.intersectRect(e,g))})}),j(" reversePoints",()=>{var b;(b=a).edges().forEach(a=>{let c=b.edge(a);c.reversed&&c.points.reverse()})}),j(" acyclic.undo",()=>c.undo(a)))}),f(" updateInputGraph",()=>{var b,c;return b=a,c=i,void(b.nodes().forEach(a=>{let d=b.node(a),e=c.node(a);d&&(d.x=e.x,d.y=e.y,d.order=e.order,d.rank=e.rank,c.children(a).length&&(d.width=e.width,d.height=e.height))}),b.edges().forEach(a=>{let d=b.edge(a),e=c.edge(a);d.points=e.points,Object.hasOwn(e,"x")&&(d.x=e.x,d.y=e.y)}),b.graph().width=c.graph().width,b.graph().height=c.graph().height)}),i})};var y=["nodesep","edgesep","ranksep","marginx","marginy"],z={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb",rankalign:"center"},A=["acyclicer","ranker","rankdir","align","rankalign"],C=["width","height","rank"],E={width:0,height:0},F=["minlen","weight","width","height","labeloffset"],G={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},H=["labelpos"];function I(a,b){return w.mapValues(w.pick(a,b),Number)}function J(a){var b={};return a&&Object.entries(a).forEach(([a,c])=>{"string"==typeof a&&(a=a.toLowerCase()),b[a]=c}),b}}),F=e((a,b)=>{var c=i(),d=f().Graph;b.exports={debugOrdering:function(a){let b=c.buildLayerMatrix(a),e=new d({compound:!0,multigraph:!0}).setGraph({});return a.nodes().forEach(b=>{e.setNode(b,{label:b}),e.setParent(b,"layer"+a.node(b).rank)}),a.edges().forEach(a=>e.setEdge(a.v,a.w,{},a.name)),b.forEach((a,b)=>{e.setNode("layer"+b,{rank:"same"}),a.reduce((a,b)=>(e.setEdge(a,b,{style:"invis"}),b))}),e}}}),G=e((a,b)=>{b.exports="2.0.4"});let H=e((a,b)=>{b.exports={graphlib:f(),layout:E(),debug:F(),util:{time:i().time,notime:i().notime},version:G()}})(),I={direction:"LR",ranksep:200,nodesep:15},J={featureNode:{width:288,height:140},repositoryNode:{width:328,height:50}};function K(a,b){let c=a.data;return c&&"number"==typeof c.width&&"number"==typeof c.height?{width:c.width,height:c.height}:J[a.type??""]??b}function L(a,b,c={}){let{direction:d="TB",nodeSize:e={width:172,height:36},ranksep:f=80,nodesep:g=30}=c;if(0===a.length)return{nodes:[],edges:[]};let h=new H.graphlib.Graph({multigraph:!0});h.setDefaultEdgeLabel(()=>({})),h.setGraph({rankdir:d,ranksep:f,nodesep:g});let i=new Set;for(let a of b)i.add(a.source),i.add(a.target);let j=a.filter(a=>i.has(a.id)),k=a.filter(a=>!i.has(a.id));for(let a of j){let b=K(a,e);h.setNode(a.id,{width:b.width,height:b.height})}for(let a of b)h.hasNode(a.source)&&h.hasNode(a.target)&&h.setEdge(a.source,a.target,{},a.id);H.layout(h);let{targetPosition:l,sourcePosition:m}=function(a){switch(a){case"LR":return{targetPosition:"left",sourcePosition:"right"};case"RL":return{targetPosition:"right",sourcePosition:"left"};case"BT":return{targetPosition:"bottom",sourcePosition:"top"};default:return{targetPosition:"top",sourcePosition:"bottom"}}}(d),n="LR"===d||"RL"===d,o=new Map;for(let a of j){let b=h.node(a.id),c=K(a,e);o.set(a.id,{cx:b.x,cy:b.y,w:c.width,h:c.height})}let p=new Map;for(let a of b)o.has(a.source)&&o.has(a.target)&&(p.has(a.source)||p.set(a.source,[]),p.get(a.source).push(a.target));for(let[a,b]of p){if(b.length<=1)continue;let c=o.get(a),d=n?c.cy:c.cx,e=b.filter(a=>o.has(a)).sort((a,b)=>{let c=o.get(a),d=o.get(b);return n?c.cy-d.cy:c.cx-d.cx}),f=o.get(e[0]),g=o.get(e[e.length-1]),h=d-(n?(f.cy+g.cy)/2:(f.cx+g.cx)/2);if(Math.abs(h)>1)for(let a of e){let b=o.get(a);n?b.cy+=h:b.cx+=h}}let q=new Map;for(let a=0;a<j.length;a++)q.set(j[a].id,a);for(let[,a]of p){let b=a.filter(a=>o.has(a));if(b.length<=1)continue;let c=b.map(a=>n?o.get(a).cy:o.get(a).cx).sort((a,b)=>a-b),d=[...b].sort((a,b)=>(q.get(a)??0)-(q.get(b)??0));for(let a=0;a<d.length;a++){let b=o.get(d[a]);n?b.cy=c[a]:b.cx=c[a]}}let r=[];for(let a of j){let b=o.get(a.id);r.push({...a,targetPosition:l,sourcePosition:m,position:{x:b.cx-b.w/2,y:b.cy-b.h/2}})}if(k.length>0){let a=0,b=1/0;for(let c of r){let d=K(c,e);a=Math.max(a,c.position.y+d.height),b=Math.min(b,c.position.x)}b===1/0&&(b=0);for(let c=0;c<k.length;c++){let d=k[c],f=K(d,e);r.push({...d,targetPosition:l,sourcePosition:m,position:{x:b,y:a+30+c*(f.height+20)}})}}return{nodes:r,edges:[...b]}}var M=a.i(86698),N=a.i(25674);let O=(0,N.createServerReference)("40fba96dfd9cffd4308c13fa69963e659820ecfb32",N.callServer,void 0,N.findSourceMapURL,"addRepository"),P=(0,N.createServerReference)("4044c53e128876b47c2db744dab09352c4165e2e38",N.callServer,void 0,N.findSourceMapURL,"deleteRepository"),Q=(0,N.createServerReference)("40954b15abccd3fb5e7f567bb4757a6987536eb5a7",N.callServer,void 0,N.findSourceMapURL,"getFeatureMetadata"),R=(0,N.createServerReference)("00cf36c599ceacfc09938e9de445c313da0ee190a9",N.callServer,void 0,N.findSourceMapURL,"fetchGraphData");var S=a.i(84871),T=a.i(19884),U=a.i(87139),V=a.i(74146);function W(a,b){let c=new Map;for(let a of b)"dependencyEdge"===a.type&&c.set(a.target,a.source);let d=new Map,e=new Map;for(let b of a)"featureNode"===b.type?d.set(b.id,{nodeId:b.id,data:b.data,parentNodeId:c.get(b.id)}):"repositoryNode"===b.type&&e.set(b.id,{nodeId:b.id,data:b.data});return{featureMap:d,repoMap:e}}function X(a,b){return(void 0===b.state||b.state===a.state)&&(void 0===b.lifecycle||b.lifecycle===a.lifecycle)&&(void 0===b.name||b.name===a.name)&&(void 0===b.description||b.description===a.description)}let Y=(0,U.createLogger)("[Polling]"),Z=0,$=0;function _(a,e){let f=(0,c.useRouter)(),g=(0,T.useSoundAction)("delete"),h=(0,T.useSoundAction)("create"),{nodes:i,edges:j,reconcile:k,updateFeature:l,addPendingFeature:m,removeFeature:n,restoreFeature:o,addRepository:p,removeRepository:q,replaceRepository:r,getFeatureRepositoryPath:s,getRepositoryData:t,getRepoMapSize:u,setCallbacks:v}=function(a,c){let d=(0,b.useMemo)(()=>W(a,c),[]),[e,f]=(0,b.useState)(d.featureMap),[g,h]=(0,b.useState)(d.repoMap),[i,j]=(0,b.useState)(new Map),k=(0,b.useRef)(new Map),l=(0,b.useRef)({}),m=(0,b.useMemo)(()=>({onNodeAction:a=>l.current.onNodeAction?.(a),onNodeSettings:a=>l.current.onNodeSettings?.(a),onFeatureDelete:a=>l.current.onFeatureDelete?.(a),onRepositoryAdd:a=>l.current.onRepositoryAdd?.(a),onRepositoryClick:a=>l.current.onRepositoryClick?.(a),onRepositoryDelete:a=>l.current.onRepositoryDelete?.(a)}),[]),n=(0,b.useRef)(e);n.current=e;let o=(0,b.useRef)(g);o.current=g;let p=(0,b.useMemo)(()=>(function(a,b,c,d){let e=[],f=[],g=new Map;for(let[a,c]of b)c.data.repositoryPath&&g.set(c.data.repositoryPath,a);let h=new Map;for(let[a,c]of b){let b={...c.data,...d?.onRepositoryAdd&&{onAdd:()=>d.onRepositoryAdd(a)},...d?.onRepositoryClick&&{onClick:()=>d.onRepositoryClick(a)},...d?.onRepositoryDelete&&{onDelete:d.onRepositoryDelete}};e.push({id:a,type:"repositoryNode",position:{x:0,y:0},data:b})}for(let[b,i,j]of[...[...a.entries()].map(([a,b])=>[a,b,!1]),...[...c.entries()].filter(([b])=>!a.has(b)).map(([a,b])=>[a,b,!0])]){let a="creating"===i.data.state||j,c={...i.data,...!a&&d?.onNodeAction&&{onAction:()=>d.onNodeAction(b)},...!a&&d?.onNodeSettings&&{onSettings:()=>d.onNodeSettings(b)},...!a&&d?.onFeatureDelete&&{onDelete:d.onFeatureDelete}};if(e.push({id:b,type:"featureNode",position:{x:0,y:0},data:c}),i.parentNodeId)f.push({id:`dep-${i.parentNodeId}-${b}`,source:i.parentNodeId,target:b,type:"dependencyEdge"});else{let a=i.data.repositoryPath,c=g.get(a)??function(a){if(h.has(a))return h.get(a);let b=`virtual-repo-${a}`,c=a.split("/").filter(Boolean).at(-1)??a;return e.push({id:b,type:"repositoryNode",position:{x:0,y:0},data:{name:c,repositoryPath:a}}),h.set(a,b),b}(a);f.push({id:`edge-${c}-${b}`,source:c,target:b,style:{strokeDasharray:"5 5"}})}}let i=f.length>0;for(let a of e)a.data.showHandles=i;return{nodes:e,edges:f}})(e,g,i,m),[e,g,i,m]),q=(0,b.useRef)({key:"",positions:new Map}),{nodes:r,edges:s}=(0,b.useMemo)(()=>{let a=p.nodes.map(a=>a.id).sort().join(","),b=p.edges.map(a=>`${a.source}-${a.target}`).sort().join(","),c=`${a}|${b}`;if(c!==q.current.key){let a=L(p.nodes,p.edges,I),b=new Map;for(let c of a.nodes)b.set(c.id,{position:c.position,targetPosition:c.targetPosition,sourcePosition:c.sourcePosition});return q.current={key:c,positions:b},a}let{positions:d}=q.current;return{nodes:p.nodes.map(a=>{let b=d.get(a.id);return b?{...a,...b}:a}),edges:p.edges}},[p]),t=(0,b.useCallback)((a,b)=>{let{featureMap:c,repoMap:d}=W(a,b),e=new Set([...c.values()].map(a=>`${a.data.name}\0${a.data.repositoryPath}`));f(a=>{let b=[...a.entries()].filter(([,a])=>"creating"===a.data.state),d=new Map(c);for(let[a,c]of b){let b=`${c.data.name}\0${c.data.repositoryPath}`;e.has(b)||d.set(a,c)}for(let[a,b]of k.current){let c=d.get(a);c&&(d.set(a,{...c,data:{...c.data,...b}}),k.current.delete(a))}return d}),j(a=>{if(0===a.size)return a;let b=!1,c=new Map(a);for(let[d,f]of a){let a=`${f.data.name}\0${f.data.repositoryPath}`;e.has(a)&&(c.delete(d),b=!0)}return b?c:a}),h(d)},[]),u=(0,b.useCallback)((a,b)=>{f(c=>{let d=c.get(a);if(!d)return k.current.set(a,{...k.current.get(a),...b}),c;if(k.current.delete(a),X(d.data,b))return c;let e=new Map(c);return e.set(a,{...d,data:{...d.data,...b}}),e}),j(c=>{let d=c.get(a);if(!d||X(d.data,b))return c;let e=new Map(c);return e.set(a,{...d,data:{...d.data,...b}}),e})},[]),v=(0,b.useCallback)((a,b,c)=>{j(d=>{let e=new Map(d);return e.set(a,{nodeId:a,data:b,parentNodeId:c}),e})},[]),w=(0,b.useCallback)(a=>{j(b=>{if(!b.has(a))return b;let c=new Map(b);return c.delete(a),c})},[]),x=(0,b.useCallback)(a=>{f(b=>{if(!b.has(a))return b;let c=new Map(b);return c.delete(a),c})},[]),y=(0,b.useCallback)((a,b)=>{f(c=>{let d=new Map(c);return d.set(a,b),d})},[]),z=(0,b.useCallback)((a,b)=>{h(c=>{let d=new Map(c);return d.set(a,{nodeId:a,data:b}),d})},[]),A=(0,b.useCallback)(a=>{h(b=>{if(!b.has(a))return b;let c=new Map(b);return c.delete(a),c})},[]),B=(0,b.useCallback)((a,b,c)=>{h(d=>{if(!d.has(a))return d;let e=new Map(d);return e.delete(a),e.set(b,{nodeId:b,data:c}),e})},[]),C=(0,b.useCallback)(a=>n.current.get(a)?.data.repositoryPath,[]),D=(0,b.useCallback)(a=>o.current.get(a)?.data,[]);return{nodes:r,edges:s,reconcile:t,updateFeature:u,addPendingFeature:v,removePendingFeature:w,removeFeature:x,restoreFeature:y,addRepository:z,removeRepository:A,replaceRepository:B,getFeatureRepositoryPath:C,getRepositoryData:D,getRepoMapSize:(0,b.useCallback)(()=>o.current.size,[]),setCallbacks:(0,b.useCallback)(a=>{l.current=a},[])}}(a,e),w=(0,b.useRef)(i),x=(0,b.useRef)(j);(0,b.useEffect)(()=>{w.current=i,x.current=j},[i,j]);let y=(0,b.useMemo)(()=>a.map(a=>a.id).sort().join(","),[a]),z=(0,b.useMemo)(()=>a.filter(a=>"featureNode"===a.type).map(a=>{let b=a.data;return`${a.id}:${b.state}:${b.lifecycle}`}).sort().join(","),[a]),A=(0,b.useRef)("");(0,b.useEffect)(()=>{let b=`${y}|${z}`;b!==A.current&&(A.current=b,k(a,e))},[y,z,a,e,k]);let B=(0,b.useRef)(new Map),{events:C}=(0,S.useAgentEventsContext)();(0,b.useEffect)(()=>{let b=B.current;for(let c of a){if("featureNode"!==c.type)continue;let a=c.data,e=b.get(c.id);void 0!==e&&e!==a.state&&(C.some(b=>b.featureId===a.featureId&&(0,V.mapEventTypeToState)(b.eventType)===a.state)||("done"===a.state?d.toast.success(a.name,{description:"Feature completed!"}):"action-required"===a.state?d.toast.warning(a.name,{description:"Waiting for your approval",action:{label:"Review",onClick:()=>f.push(`/feature/${a.featureId}`)}}):"error"===a.state&&d.toast.error(a.name,{description:a.errorMessage??"Agent failed"}))),b.set(c.id,a.state)}},[z,a,C,f]);let D=(0,b.useRef)(0);(0,b.useEffect)(()=>{if(D.current>C.length&&(D.current=0),C.length<=D.current)return;let a=C.slice(D.current);for(let{featureId:b,state:c,lifecycle:d}of(D.current=C.length,(0,V.resolveSseEventUpdates)(a)))(void 0!==c||void 0!==d)&&l(`feat-${b}`,{...void 0!==c&&{state:c},...void 0!==d&&{lifecycle:d}})},[C,l]),(0,b.useEffect)(()=>{let a=a=>{let{featureId:b}=a.detail;l(`feat-${b}`,{state:"running"})};return window.addEventListener("shep:feature-approved",a),()=>window.removeEventListener("shep:feature-approved",a)},[l]);let E=(0,b.useRef)(new Set),F=(0,b.useRef)(0);(0,b.useEffect)(()=>{if(F.current>C.length&&(F.current=0),C.length<=F.current)return;let a=C.slice(F.current);for(let b of(F.current=C.length,a)){if("Feature metadata updated"!==b.message||E.current.has(b.featureId))continue;E.current.add(b.featureId);let a=`feat-${b.featureId}`;Q(b.featureId).then(b=>{b&&l(a,{name:b.name,description:b.description})}).catch(()=>{})}},[C,l]),(0,b.useEffect)(()=>{Y.debug("polling enabled (3000ms interval)");let a=setInterval(async()=>{try{let{nodes:a,edges:b}=await R();k(a,b)}catch{Y.warn("poll fetch failed — will retry next interval")}},3e3);return()=>{Y.debug("polling disabled"),clearInterval(a)}},[k]);let G=(0,b.useCallback)(a=>{},[]),H=(0,b.useCallback)(a=>{},[]),J=(0,b.useCallback)((a,b,c)=>{let d=b?.featureId?`feat-${b.featureId}`:`feature-${Date.now()}-${Z++}`,e={name:b?.name??"New Feature",description:b?.description??"Describe what this feature does",featureId:b?.featureId??`#${d.slice(-4)}`,lifecycle:"requirements",state:b?.state??"running",progress:0,repositoryPath:b?.repositoryPath??"",branch:b?.branch??""};return m(d,e,"dependencyEdge"===c&&a?a:void 0),d},[m]),K=(0,b.useCallback)(a=>{let b=`feat-${a}`,c=w.current.filter(a=>a.id===b).map(a=>({nodeId:a.id,data:a.data}))[0];n(b),g.play(),d.toast.success("Feature deleted successfully"),f.push("/"),(0,M.deleteFeature)(a).then(a=>{a.error&&(c&&o(b,c),d.toast.error(a.error))}).catch(()=>{c&&o(b,c),d.toast.error("Failed to delete feature")})},[f,g,n,o]),N=(0,b.useCallback)(async a=>{let b=`repo-${a}`,c=new Set(x.current.filter(a=>a.source===b).map(a=>a.target)),e=t(b),f=new Map;for(let a of c){let b=w.current.find(b=>b.id===a);b&&f.set(a,{nodeId:a,data:b.data})}let h=()=>{for(let[a,c]of(e&&p(b,e),f))o(a,c)};for(let a of(q(b),c))n(a);try{let b=await P(a);if(!b.success){d.toast.error(b.error??"Failed to remove repository"),h();return}g.play(),d.toast.success("Repository removed")}catch{d.toast.error("Failed to remove repository"),h()}},[g,q,n,p,o,t]),U=(0,b.useCallback)(a=>{let b=L(w.current,x.current,{...I,direction:a});k(b.nodes,b.edges)},[k]);return{nodes:i,edges:j,onNodesChange:G,handleConnect:H,handleAddRepository:(0,b.useCallback)(a=>{let b=0===u(),c=`repo-temp-${++$}`,e=a.replace(/[\\/]+$/,"").split(/[\\/]/).pop()??a;return p(c,{name:e,repositoryPath:a,id:c}),O({path:a,name:e}).then(a=>{if(a.error){q(c),d.toast.error(a.error);return}let b=a.repository;r(c,`repo-${b.id}`,{name:b.name,repositoryPath:b.path,id:b.id}),h.play()}).catch(()=>{q(c),d.toast.error("Failed to add repository")}),{wasEmpty:b,repoPath:a}},[p,q,r,h,u]),handleLayout:U,handleDeleteFeature:K,handleDeleteRepository:N,createFeatureNode:J,getFeatureRepositoryPath:s,getRepositoryData:t,setCallbacks:v}}a.s(["useControlCenterState",()=>_],16533)},59949,a=>{"use strict";var b=a.i(10973),c=a.i(84945),d=a.i(96960),e=a.i(69845),f=a.i(67837),g=a.i(25700);let h=(0,g.default)("rotate-ccw",[["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"}]]);var i=a.i(18948);a.i(38702);var j=a.i(16223);a.i(54250);var k=a.i(1330),l=a.i(60047);let m=(0,g.default)("github",[["path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4",key:"tonef"}],["path",{d:"M9 18c-4.51 2-5-2-7-2",key:"9comsn"}]]);var n=a.i(50488),o=a.i(63698),p=a.i(3195),q=a.i(16605),r=a.i(50490),s=a.i(5698),t=a.i(85536);a.i(69029);var u=a.i(5623),v=a.i(45670),w=a.i(82934);a.i(49235);var x=a.i(85080),y=a.i(18662),z=a.i(21333),A=a.i(55628);function B({data:a}){let e=(0,z.useFeatureFlags)(),[g,h]=(0,d.useState)(!1),j=(0,A.useRepositoryActions)(a.repositoryPath?{repositoryPath:a.repositoryPath}:null),k=(0,y.useDeployAction)(a.repositoryPath?{targetId:a.repositoryPath,targetType:"repository",repositoryPath:a.repositoryPath}:null),B="Booting"===k.status||"Ready"===k.status;return(0,b.jsxs)("div",{className:(0,t.cn)("group relative",a.onDelete&&a.id&&"pl-10"),children:[a.showHandles?(0,b.jsx)(c.Handle,{type:"target",position:l.Position.Left,isConnectable:!1,className:"opacity-0!"}):null,a.onDelete&&a.id?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"absolute top-1/2 left-0 -translate-y-1/2 opacity-0 transition-opacity group-hover:opacity-100",children:(0,b.jsx)(w.TooltipProvider,{children:(0,b.jsxs)(w.Tooltip,{children:[(0,b.jsx)(w.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{"aria-label":"Remove repository","data-testid":"repository-node-delete-button",onClick:a=>{a.stopPropagation(),h(!0)},className:"bg-card text-muted-foreground hover:border-destructive hover:text-destructive flex h-7 w-7 cursor-pointer items-center justify-center rounded-full border shadow-sm transition-colors",children:(0,b.jsx)(q.Trash2,{className:"h-3.5 w-3.5"})})}),(0,b.jsx)(w.TooltipContent,{children:"Remove repository"})]})})}),(0,b.jsx)(v.Dialog,{open:g,onOpenChange:h,children:(0,b.jsxs)(v.DialogContent,{className:"max-w-xs",children:[(0,b.jsxs)(v.DialogHeader,{children:[(0,b.jsx)(v.DialogTitle,{children:"Remove repository?"}),(0,b.jsxs)(v.DialogDescription,{children:["This will remove ",(0,b.jsx)("strong",{children:a.name})," and all its features from your workspace. The repository files on disk won't be affected."]})]}),(0,b.jsxs)(v.DialogFooter,{className:"grid grid-cols-2 gap-2 sm:flex-none",children:[(0,b.jsx)(v.DialogClose,{asChild:!0,children:(0,b.jsx)(i.Button,{variant:"outline",children:"Cancel"})}),(0,b.jsx)(i.Button,{variant:"destructive",onClick:()=>{h(!1),a.onDelete?.(a.id)},children:"Remove"})]})]})})]}):null,(0,b.jsxs)("div",{role:"button",tabIndex:0,"data-testid":"repository-node-card","data-repo-name":a.name,onClick:b=>{b.stopPropagation(),a.onClick?.()},onKeyDown:b=>{("Enter"===b.key||" "===b.key)&&(b.preventDefault(),b.stopPropagation(),a.onClick?.())},className:"nodrag bg-card flex min-w-[18rem] cursor-default items-center gap-3 rounded-full border px-4 py-3 shadow-sm",children:[(0,b.jsx)(m,{className:"text-muted-foreground h-5 w-5 shrink-0"}),(0,b.jsx)("span",{"data-testid":"repository-node-name",className:"min-w-0 truncate text-sm font-medium",children:a.name}),(0,b.jsxs)("div",{className:(0,t.cn)("flex shrink-0 items-center gap-2",(a.repositoryPath??a.onAdd)&&"ml-auto"),onClick:a=>a.stopPropagation(),children:[a.repositoryPath?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(w.TooltipProvider,{children:(0,b.jsxs)(w.Tooltip,{children:[(0,b.jsx)(w.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"flex items-center",children:(0,b.jsx)(u.ActionButton,{label:"Open in IDE",onClick:j.openInIde,loading:j.ideLoading,error:!!j.ideError,icon:n.Code2,iconOnly:!0,variant:"ghost",size:"icon-xs"})})}),(0,b.jsx)(w.TooltipContent,{children:"Open in IDE"})]})}),(0,b.jsx)(w.TooltipProvider,{children:(0,b.jsxs)(w.Tooltip,{children:[(0,b.jsx)(w.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"flex items-center",children:(0,b.jsx)(u.ActionButton,{label:"Open in Shell",onClick:j.openInShell,loading:j.shellLoading,error:!!j.shellError,icon:o.Terminal,iconOnly:!0,variant:"ghost",size:"icon-xs"})})}),(0,b.jsx)(w.TooltipContent,{children:"Open in Shell"})]})}),(0,b.jsx)(w.TooltipProvider,{children:(0,b.jsxs)(w.Tooltip,{children:[(0,b.jsx)(w.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"flex items-center",children:(0,b.jsx)(u.ActionButton,{label:"Open Folder",onClick:j.openFolder,loading:j.folderLoading,error:!!j.folderError,icon:p.FolderOpen,iconOnly:!0,variant:"ghost",size:"icon-xs"})})}),(0,b.jsx)(w.TooltipContent,{children:"Open Folder"})]})}),e.envDeploy?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(w.TooltipProvider,{children:(0,b.jsxs)(w.Tooltip,{children:[(0,b.jsx)(w.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"flex items-center",children:(0,b.jsx)(u.ActionButton,{label:B?"Stop Dev Server":"Start Dev Server",onClick:B?k.stop:k.deploy,loading:k.deployLoading||k.stopLoading,error:!!k.deployError,icon:B?s.Square:r.Play,iconOnly:!0,variant:"ghost",size:"icon-xs"})})}),(0,b.jsx)(w.TooltipContent,{children:B?"Stop Dev Server":"Start Dev Server"})]})}),B?(0,b.jsx)(x.DeploymentStatusBadge,{status:k.status,url:k.url,targetId:a.repositoryPath}):null]}):null]}):null,a.onAdd?(0,b.jsx)(w.TooltipProvider,{children:(0,b.jsxs)(w.Tooltip,{children:[(0,b.jsx)(w.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{"aria-label":"Add feature","data-testid":"repository-node-add-button",onClick:b=>{b.stopPropagation(),a.onAdd?.()},className:"text-muted-foreground hover:bg-accent dark:hover:bg-accent/50 flex h-6 w-6 shrink-0 cursor-pointer items-center justify-center rounded-full transition-colors hover:text-blue-500",children:(0,b.jsx)(f.Plus,{className:"h-3.5 w-3.5"})})}),(0,b.jsx)(w.TooltipContent,{children:"Add feature"})]})}):null]})]}),a.onAdd||a.showHandles?(0,b.jsx)(c.Handle,{type:"source",position:l.Position.Right,isConnectable:!a.showHandles,className:"opacity-0!"}):null]})}function C(a){let[d]=(0,l.getBezierPath)({sourceX:a.sourceX,sourceY:a.sourceY,targetX:a.targetX,targetY:a.targetY,sourcePosition:a.sourcePosition,targetPosition:a.targetPosition});return(0,b.jsx)(c.BaseEdge,{id:a.id,path:d,style:{strokeDasharray:"5 5"}})}a.i(78454),a.i(2824),a.i(13126);let D={x:30,y:30,zoom:.85};function E({onResetViewport:a}){let{setViewport:e}=(0,c.useReactFlow)(),f=(0,d.useCallback)(()=>{e(a(),{duration:400})},[a,e]);return(0,b.jsx)(c.ControlButton,{onClick:f,title:"Reset view","aria-label":"Reset view",children:(0,b.jsx)(h,{style:{fill:"none"}})})}function F({nodes:a,edges:e,selectedFeatureId:g,defaultViewport:h,onNodesChange:l,onAddFeature:m,onConnect:n,onNodeClick:o,onPaneClick:p,onCanvasDrag:q,onMoveEnd:r,onResetViewport:s,toolbar:t,emptyState:u}){let v=(0,d.useMemo)(()=>({featureNode:k.FeatureNode,repositoryNode:B}),[]),w=(0,d.useMemo)(()=>({dependencyEdge:C}),[]),x=(0,d.useMemo)(()=>null==g?a:a.map(a=>"featureNode"===a.type&&a.data.featureId===g?{...a,selected:!0}:a),[a,g]);return 0===a.length?u?(0,b.jsx)("div",{"data-testid":"features-canvas-empty",className:"h-full w-full",children:u}):(0,b.jsx)("div",{"data-testid":"features-canvas-empty",children:(0,b.jsx)(j.EmptyState,{title:"No features yet",description:"Get started by creating your first feature.",action:(0,b.jsxs)(i.Button,{onClick:m,children:[(0,b.jsx)(f.Plus,{className:"mr-2 h-4 w-4"}),"New Feature"]})})}):(0,b.jsx)("div",{"data-testid":"features-canvas","data-no-drawer-close":!0,className:"pointer-events-auto h-full w-full",children:(0,b.jsxs)(c.ReactFlow,{nodes:x,edges:e,nodeTypes:v,edgeTypes:w,onConnect:n,onNodesChange:l,onNodeClick:o,onPaneClick:p,onMoveStart:q,onMoveEnd:r,defaultViewport:h??D,nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,proOptions:{hideAttribution:!0},children:[(0,b.jsx)(c.Background,{}),(0,b.jsx)(c.Controls,{showInteractive:!1,children:s?(0,b.jsx)(E,{onResetViewport:s}):null}),t]})})}var G=a.i(1356),H=a.i(19884),I=a.i(96213);let J="shep-canvas-viewport",K={x:30,y:30,zoom:.85},L=(0,g.default)("square-terminal",[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]]);var M=a.i(98410),N=a.i(72016),O=a.i(88064),P=a.i(1377);let Q=["cd ~/my-repo",'shep feat new "create modern, sleek dashboards"'];function R({onRepositorySelect:a,className:c}){let[e,g]=(0,d.useState)(!1),[h,i]=(0,d.useState)(!1);async function j(){if(!h){i(!0);try{let b=await (0,P.pickFolder)();b&&a?.(b)}finally{i(!1)}}}let k=(0,d.useCallback)(async()=>{await navigator.clipboard.writeText(Q.join("\n")),g(!0),setTimeout(()=>g(!1),2e3)},[]);return(0,b.jsxs)("div",{"data-testid":"control-center-empty-state",className:(0,t.cn)("relative h-full w-full",c),children:[(0,b.jsx)("div",{className:"absolute inset-0 [background-image:radial-gradient(circle,_var(--color-border)_1px,_transparent_1px)] [background-size:24px_24px]"}),(0,b.jsxs)("div",{className:"absolute top-8 left-8 z-10",children:[(0,b.jsx)("h1",{className:"text-4xl font-bold tracking-tight",children:"Features"}),(0,b.jsx)("p",{className:"text-muted-foreground text-3xl font-light",children:"Control Center"})]}),(0,b.jsx)("div",{className:"relative z-10 flex h-full items-center justify-center",children:(0,b.jsxs)("div",{className:"flex max-w-lg flex-col items-center gap-6",children:[(0,b.jsxs)("div",{className:"text-muted-foreground flex items-center gap-2",children:[(0,b.jsx)(m,{className:"h-4 w-4"}),(0,b.jsx)("span",{className:"text-xs font-semibold tracking-widest uppercase",children:"Repositories"})]}),(0,b.jsxs)("button",{type:"button","data-testid":"empty-state-add-repository",onClick:j,disabled:h,className:"border-muted-foreground/30 hover:border-primary hover:text-primary flex cursor-pointer items-center gap-3 rounded-lg border-2 border-dashed px-8 py-4 transition-colors disabled:cursor-wait disabled:opacity-60",children:[h?(0,b.jsx)(O.Loader2,{className:"h-5 w-5 animate-spin"}):(0,b.jsx)(f.Plus,{className:"h-5 w-5"}),(0,b.jsx)("span",{className:"text-sm font-medium",children:h?"Opening...":"Add Repository"})]}),(0,b.jsxs)("div",{className:"text-muted-foreground flex items-center gap-3",children:[(0,b.jsx)("div",{className:"bg-border h-px w-16"}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)(L,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{className:"text-xs font-semibold tracking-widest uppercase",children:"Or start from the command line"})]}),(0,b.jsx)("div",{className:"bg-border h-px w-16"})]}),(0,b.jsxs)("div",{"data-testid":"cli-code-block",className:"relative w-full rounded-lg bg-zinc-900 px-5 py-4 font-mono text-sm text-zinc-100",children:[(0,b.jsx)("button",{type:"button","data-testid":"cli-code-block-copy",onClick:k,className:"absolute top-3 right-3 cursor-pointer rounded p-1.5 text-zinc-400 transition-colors hover:bg-zinc-800 hover:text-zinc-200","aria-label":"Copy commands",children:e?(0,b.jsx)(N.Check,{className:"h-4 w-4"}):(0,b.jsx)(M.Copy,{className:"h-4 w-4"})}),(0,b.jsx)("div",{className:"space-y-1",children:Q.map(a=>(0,b.jsxs)("div",{children:[(0,b.jsx)("span",{className:"text-zinc-500 select-none",children:"$ "}),(0,b.jsx)("span",{children:a})]},a))})]}),(0,b.jsx)("p",{className:"text-muted-foreground text-sm",children:"Feature will appear on canvas once created"})]})})]})}var S=a.i(16533);let T={maxZoom:1,padding:.5,duration:500};function U({initialNodes:a,initialEdges:f}){let g,h,i,j=(0,e.useRouter)(),k=(0,e.usePathname)(),l=(g=(0,e.usePathname)().match(/^\/feature\/(.+)$/),g?.[1]??null),m=(0,H.useSoundAction)("click"),{guardedNavigate:n}=(0,I.useDrawerCloseGuard)(),{fitView:o}=(0,c.useReactFlow)(),p=(0,d.useRef)(null),{defaultViewport:q,onMoveEnd:r,resetViewport:s}=(h=(0,d.useRef)(function(){try{let a=localStorage.getItem(J);if(null==a)return K;let b=JSON.parse(a);return!(null==b||"object"!=typeof b||Array.isArray(b))&&"number"==typeof b.x&&"number"==typeof b.y&&"number"==typeof b.zoom&&Number.isFinite(b.x)&&Number.isFinite(b.y)&&Number.isFinite(b.zoom)&&b.zoom>0?b:K}catch{return K}}()).current,i=(0,d.useRef)(null),(0,d.useEffect)(()=>()=>{null!=i.current&&clearTimeout(i.current)},[]),{defaultViewport:h,onMoveEnd:(0,d.useCallback)(a=>{null!=i.current&&clearTimeout(i.current),i.current=setTimeout(()=>{try{localStorage.setItem(J,JSON.stringify(a))}catch{}},500)},[]),resetViewport:(0,d.useCallback)(()=>{try{localStorage.removeItem(J)}catch{}return K},[])}),{nodes:t,edges:u,onNodesChange:v,handleConnect:w,handleAddRepository:x,handleDeleteFeature:y,handleDeleteRepository:z,createFeatureNode:A,setCallbacks:B}=(0,S.useControlCenterState)(a,f),{setFeatures:C}=(0,G.useSidebarFeaturesContext)(),D=(0,d.useMemo)(()=>t.filter(a=>"featureNode"===a.type),[t]),E=(0,d.useMemo)(()=>D.map(a=>{let b=a.data;return`${b.featureId}:${b.state}:${b.name}`}).sort().join(","),[D]);(0,d.useEffect)(()=>{C(D.map(a=>{let b=a.data,c=(0,G.mapNodeStateToSidebarStatus)(b.state);return c?{featureId:b.featureId,name:b.name,status:c,...null!=b.startedAt&&{startedAt:b.startedAt},...null!=b.runtime&&{duration:b.runtime},...b.agentType&&{agentType:b.agentType},...b.modelId&&{modelId:b.modelId}}:null}).filter(Boolean))},[E,D,C]);let L=(0,d.useCallback)((a,b)=>{if("featureNode"===b.type){let a=b.data;"creating"!==a.state&&n(()=>{m.play(),j.push(`/feature/${a.featureId}`)})}},[j,m,n]),M=(0,d.useCallback)(()=>{m.play(),j.push("/create")},[j,m]),N=(0,d.useCallback)(a=>{m.play();let b=t.find(b=>b.id===a),c=b?.data?.repositoryPath;c?j.push(`/create?repo=${encodeURIComponent(c)}`):j.push("/create")},[t,j,m]),O=(0,d.useCallback)(a=>{let b=a.startsWith("feat-")?a.slice(5):a,c=u.find(b=>b.target===a),d=c?t.find(a=>a.id===c.source):null,e=d?.data?.repositoryPath;m.play();let f=new URLSearchParams;e&&f.set("repo",e),f.set("parent",b),j.push(`/create?${f.toString()}`)},[t,u,j,m]),P=(0,d.useCallback)(a=>{let b=t.find(b=>b.id===a);if(b?.type==="repositoryNode"){let a=b.data;a.id&&n(()=>j.push(`/repository/${a.id}`))}},[t,j,n]),Q=(0,d.useCallback)(()=>{"/"!==k&&n(()=>j.push("/"))},[j,k,n]);(0,d.useEffect)(()=>{let a=a=>{let{wasEmpty:b,repoPath:c}=x(a.detail.path);b&&setTimeout(()=>{o(T),p.current=setTimeout(()=>{n(()=>j.push(`/create?repo=${encodeURIComponent(c)}`))},600)},0)};return window.addEventListener("shep:add-repository",a),()=>{window.removeEventListener("shep:add-repository",a),null!=p.current&&clearTimeout(p.current)}},[x,o,n,j]),(0,d.useEffect)(()=>{let a=a=>{let b=a.detail;if(b.parentId)return void A(`feat-${b.parentId}`,{state:"creating",featureId:b.featureId,name:b.name,description:b.description,repositoryPath:b.repositoryPath},"dependencyEdge");let c=t.find(a=>"repositoryNode"===a.type&&a.data.repositoryPath===b.repositoryPath);A(c?.id??null,{state:"running",featureId:b.featureId,name:b.name,description:b.description,repositoryPath:b.repositoryPath})};return window.addEventListener("shep:feature-created",a),()=>window.removeEventListener("shep:feature-created",a)},[t,A]),(0,d.useEffect)(()=>{B({onNodeAction:O,onFeatureDelete:y,onRepositoryAdd:N,onRepositoryClick:P,onRepositoryDelete:z})},[B,O,y,N,P,z]);let U=(0,d.useCallback)((a,b)=>{r(b)},[r]);return t.some(a=>"repositoryNode"===a.type)?(0,b.jsx)(F,{nodes:t,edges:u,selectedFeatureId:l,defaultViewport:q,onNodesChange:v,onConnect:w,onAddFeature:M,onNodeClick:L,onPaneClick:Q,onMoveEnd:U,onResetViewport:s,emptyState:(0,b.jsx)(R,{onRepositorySelect:x})}):(0,b.jsx)(R,{onRepositorySelect:x})}function V({initialNodes:a,initialEdges:d,drawer:e}){return(0,b.jsxs)("div",{"data-testid":"control-center",className:"h-full w-full",children:[(0,b.jsx)(c.ReactFlowProvider,{children:(0,b.jsx)(U,{initialNodes:a,initialEdges:d})}),(0,b.jsx)("div",{children:e},"drawer")]})}a.s(["ControlCenter",()=>V],59949)}];
1
+ module.exports=[16533,a=>{"use strict";var b=a.i(96960),c=a.i(69845),d=a.i(52313),e=(a,b)=>()=>(b||a((b={exports:{}}).exports,b),b.exports),f=e((a,b)=>{var c=Object.defineProperty,d=(a,b)=>()=>(b||a((b={exports:{}}).exports,b),b.exports),e=(a,b,d)=>{let e;return(e="symbol"!=typeof b?b+"":b)in a?c(a,e,{enumerable:!0,configurable:!0,writable:!0,value:d}):a[e]=d},f=d((a,b)=>{function c(a,b){a[b]?a[b]++:a[b]=1}function d(a,b){--a[b]||delete a[b]}function f(a,b,c,d){var e=""+b,f=""+c;if(!a&&e>f){var g=e;e=f,f=g}return e+"\x01"+f+"\x01"+(void 0===d?"\0":d)}function g(a,b){return f(a,b.v,b.w,b.name)}b.exports=class{constructor(a){e(this,"_isDirected",!0),e(this,"_isMultigraph",!1),e(this,"_isCompound",!1),e(this,"_label"),e(this,"_defaultNodeLabelFn",()=>{}),e(this,"_defaultEdgeLabelFn",()=>{}),e(this,"_nodes",{}),e(this,"_in",{}),e(this,"_preds",{}),e(this,"_out",{}),e(this,"_sucs",{}),e(this,"_edgeObjs",{}),e(this,"_edgeLabels",{}),e(this,"_nodeCount",0),e(this,"_edgeCount",0),e(this,"_parent"),e(this,"_children"),a&&(this._isDirected=!Object.hasOwn(a,"directed")||a.directed,this._isMultigraph=!!Object.hasOwn(a,"multigraph")&&a.multigraph,this._isCompound=!!Object.hasOwn(a,"compound")&&a.compound),this._isCompound&&(this._parent={},this._children={},this._children["\0"]={})}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(a){return this._label=a,this}graph(){return this._label}setDefaultNodeLabel(a){return this._defaultNodeLabelFn=a,"function"!=typeof a&&(this._defaultNodeLabelFn=()=>a),this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){var a=this;return this.nodes().filter(b=>0===Object.keys(a._in[b]).length)}sinks(){var a=this;return this.nodes().filter(b=>0===Object.keys(a._out[b]).length)}setNodes(a,b){var c=arguments,d=this;return a.forEach(function(a){c.length>1?d.setNode(a,b):d.setNode(a)}),this}setNode(a,b){return Object.hasOwn(this._nodes,a)?arguments.length>1&&(this._nodes[a]=b):(this._nodes[a]=arguments.length>1?b:this._defaultNodeLabelFn(a),this._isCompound&&(this._parent[a]="\0",this._children[a]={},this._children["\0"][a]=!0),this._in[a]={},this._preds[a]={},this._out[a]={},this._sucs[a]={},++this._nodeCount),this}node(a){return this._nodes[a]}hasNode(a){return Object.hasOwn(this._nodes,a)}removeNode(a){var b=this;if(Object.hasOwn(this._nodes,a)){var c=a=>b.removeEdge(b._edgeObjs[a]);delete this._nodes[a],this._isCompound&&(this._removeFromParentsChildList(a),delete this._parent[a],this.children(a).forEach(function(a){b.setParent(a)}),delete this._children[a]),Object.keys(this._in[a]).forEach(c),delete this._in[a],delete this._preds[a],Object.keys(this._out[a]).forEach(c),delete this._out[a],delete this._sucs[a],--this._nodeCount}return this}setParent(a,b){if(!this._isCompound)throw Error("Cannot set parent in a non-compound graph");if(void 0===b)b="\0";else{b+="";for(var c=b;void 0!==c;c=this.parent(c))if(c===a)throw Error("Setting "+b+" as parent of "+a+" would create a cycle");this.setNode(b)}return this.setNode(a),this._removeFromParentsChildList(a),this._parent[a]=b,this._children[b][a]=!0,this}_removeFromParentsChildList(a){delete this._children[this._parent[a]][a]}parent(a){if(this._isCompound){var b=this._parent[a];if("\0"!==b)return b}}children(a="\0"){if(this._isCompound){var b=this._children[a];if(b)return Object.keys(b)}else{if("\0"===a)return this.nodes();if(this.hasNode(a))return[]}}predecessors(a){var b=this._preds[a];if(b)return Object.keys(b)}successors(a){var b=this._sucs[a];if(b)return Object.keys(b)}neighbors(a){var b=this.predecessors(a);if(b){let d=new Set(b);for(var c of this.successors(a))d.add(c);return Array.from(d.values())}}isLeaf(a){return 0===(this.isDirected()?this.successors(a):this.neighbors(a)).length}filterNodes(a){var b=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});b.setGraph(this.graph());var c=this;Object.entries(this._nodes).forEach(function([c,d]){a(c)&&b.setNode(c,d)}),Object.values(this._edgeObjs).forEach(function(a){b.hasNode(a.v)&&b.hasNode(a.w)&&b.setEdge(a,c.edge(a))});var d={};return this._isCompound&&b.nodes().forEach(a=>b.setParent(a,function a(e){var f=c.parent(e);return void 0===f||b.hasNode(f)?(d[e]=f,f):f in d?d[f]:a(f)}(a))),b}setDefaultEdgeLabel(a){return this._defaultEdgeLabelFn=a,"function"!=typeof a&&(this._defaultEdgeLabelFn=()=>a),this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(a,b){var c=this,d=arguments;return a.reduce(function(a,e){return d.length>1?c.setEdge(a,e,b):c.setEdge(a,e),e}),this}setEdge(){var a,b,d,e,g=!1,h=arguments[0];"object"==typeof h&&null!==h&&"v"in h?(a=h.v,b=h.w,d=h.name,2==arguments.length&&(e=arguments[1],g=!0)):(a=h,b=arguments[1],d=arguments[3],arguments.length>2&&(e=arguments[2],g=!0)),a=""+a,b=""+b,void 0!==d&&(d=""+d);var i=f(this._isDirected,a,b,d);if(Object.hasOwn(this._edgeLabels,i))return g&&(this._edgeLabels[i]=e),this;if(void 0!==d&&!this._isMultigraph)throw Error("Cannot set a named edge when isMultigraph = false");this.setNode(a),this.setNode(b),this._edgeLabels[i]=g?e:this._defaultEdgeLabelFn(a,b,d);var j=function(a,b,c,d){var e=""+b,f=""+c;if(!a&&e>f){var g=e;e=f,f=g}var h={v:e,w:f};return d&&(h.name=d),h}(this._isDirected,a,b,d);return a=j.v,b=j.w,Object.freeze(j),this._edgeObjs[i]=j,c(this._preds[b],a),c(this._sucs[a],b),this._in[b][i]=j,this._out[a][i]=j,this._edgeCount++,this}edge(a,b,c){var d=1==arguments.length?g(this._isDirected,arguments[0]):f(this._isDirected,a,b,c);return this._edgeLabels[d]}edgeAsObj(){let a=this.edge(...arguments);return"object"!=typeof a?{label:a}:a}hasEdge(a,b,c){var d=1==arguments.length?g(this._isDirected,arguments[0]):f(this._isDirected,a,b,c);return Object.hasOwn(this._edgeLabels,d)}removeEdge(a,b,c){var e=1==arguments.length?g(this._isDirected,arguments[0]):f(this._isDirected,a,b,c),h=this._edgeObjs[e];return h&&(a=h.v,b=h.w,delete this._edgeLabels[e],delete this._edgeObjs[e],d(this._preds[b],a),d(this._sucs[a],b),delete this._in[b][e],delete this._out[a][e],this._edgeCount--),this}inEdges(a,b){return this.isDirected()?this.filterEdges(this._in[a],a,b):this.nodeEdges(a,b)}outEdges(a,b){return this.isDirected()?this.filterEdges(this._out[a],a,b):this.nodeEdges(a,b)}nodeEdges(a,b){if(a in this._nodes)return this.filterEdges({...this._in[a],...this._out[a]},a,b)}filterEdges(a,b,c){if(a){var d=Object.values(a);return c?d.filter(function(a){return a.v===b&&a.w===c||a.v===c&&a.w===b}):d}}}}),g=d((a,b)=>{b.exports="3.0.2"}),h=d((a,b)=>{b.exports={Graph:f(),version:g()}}),i=d((a,b)=>{var c=f();b.exports={write:function(a){var b,c,d={options:{directed:a.isDirected(),multigraph:a.isMultigraph(),compound:a.isCompound()},nodes:(b=a).nodes().map(function(a){var c=b.node(a),d=b.parent(a),e={v:a};return void 0!==c&&(e.value=c),void 0!==d&&(e.parent=d),e}),edges:(c=a).edges().map(function(a){var b=c.edge(a),d={v:a.v,w:a.w};return void 0!==a.name&&(d.name=a.name),void 0!==b&&(d.value=b),d})};return void 0!==a.graph()&&(d.value=structuredClone(a.graph())),d},read:function(a){var b=new c(a.options).setGraph(a.value);return a.nodes.forEach(function(a){b.setNode(a.v,a.value),a.parent&&b.setParent(a.v,a.parent)}),a.edges.forEach(function(a){b.setEdge({v:a.v,w:a.w,name:a.name},a.value)}),b}}}),j=d((a,b)=>{b.exports=function(a,b,d,e){return function(a,b,c,d){var e={},f=!0,g=0,h=a.nodes(),i=function(a){var b=c(a);e[a.v].distance+b<e[a.w].distance&&(e[a.w]={distance:e[a.v].distance+b,predecessor:a.v},f=!0)},j=function(){h.forEach(function(a){d(a).forEach(function(b){var c=b.v===a?b.v:b.w,d=c===b.v?b.w:b.v;i({v:c,w:d})})})};h.forEach(function(a){e[a]={distance:a===b?0:1/0}});for(var k=h.length,l=1;l<k&&(f=!1,g++,j(),f);l++);if(g===k-1&&(f=!1,j(),f))throw Error("The graph contains a negative weight cycle");return e}(a,String(b),d||c,e||function(b){return a.outEdges(b)})};var c=()=>1}),k=d((a,b)=>{b.exports=function(a){var b,c={},d=[];return a.nodes().forEach(function(e){b=[],function d(e){Object.hasOwn(c,e)||(c[e]=!0,b.push(e),a.successors(e).forEach(d),a.predecessors(e).forEach(d))}(e),b.length&&d.push(b)}),d}}),l=d((a,b)=>{b.exports=class{constructor(){e(this,"_arr",[]),e(this,"_keyIndices",{})}size(){return this._arr.length}keys(){return this._arr.map(function(a){return a.key})}has(a){return Object.hasOwn(this._keyIndices,a)}priority(a){var b=this._keyIndices[a];if(void 0!==b)return this._arr[b].priority}min(){if(0===this.size())throw Error("Queue underflow");return this._arr[0].key}add(a,b){var c=this._keyIndices;if(!Object.hasOwn(c,a=String(a))){var d=this._arr,e=d.length;return c[a]=e,d.push({key:a,priority:b}),this._decrease(e),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);var a=this._arr.pop();return delete this._keyIndices[a.key],this._heapify(0),a.key}decrease(a,b){var c=this._keyIndices[a];if(b>this._arr[c].priority)throw Error("New priority is greater than current priority. Key: "+a+" Old: "+this._arr[c].priority+" New: "+b);this._arr[c].priority=b,this._decrease(c)}_heapify(a){var b=this._arr,c=2*a,d=c+1,e=a;c<b.length&&(e=b[c].priority<b[e].priority?c:e,d<b.length&&(e=b[d].priority<b[e].priority?d:e),e!==a&&(this._swap(a,e),this._heapify(e)))}_decrease(a){for(var b,c=this._arr,d=c[a].priority;0!==a&&!(c[b=a>>1].priority<d);)this._swap(a,b),a=b}_swap(a,b){var c=this._arr,d=this._keyIndices,e=c[a],f=c[b];c[a]=f,c[b]=e,d[f.key]=a,d[e.key]=b}}}),m=d((a,b)=>{var c=l();b.exports=function(a,b,e,f){return function(a,b,d,e){var f,g,h={},i=new c,j=function(a){var b=a.v!==f?a.v:a.w,c=h[b],e=d(a),j=g.distance+e;if(e<0)throw Error("dijkstra does not allow negative edge weights. Bad edge: "+a+" Weight: "+e);j<c.distance&&(c.distance=j,c.predecessor=f,i.decrease(b,j))};for(a.nodes().forEach(function(a){var c=a===b?0:1/0;h[a]={distance:c},i.add(a,c)});i.size()>0&&(g=h[f=i.removeMin()]).distance!==1/0;)e(f).forEach(j);return h}(a,String(b),e||d,f||function(b){return a.outEdges(b)})};var d=()=>1}),n=d((a,b)=>{var c=m();b.exports=function(a,b,d){return a.nodes().reduce(function(e,f){return e[f]=c(a,f,b,d),e},{})}}),o=d((a,b)=>{b.exports=function(a,b,c){if(void 0!==a[b].predecessor)throw Error("Invalid source vertex");if(void 0===a[c].predecessor&&c!==b)throw Error("Invalid destination vertex");return{weight:a[c].distance,path:function(a,b,c){for(var d=[],e=c;e!==b;)d.push(e),e=a[e].predecessor;return d.push(b),d.reverse()}(a,b,c)}}}),p=d((a,b)=>{b.exports=function(a){var b=0,c=[],d={},e=[];return a.nodes().forEach(function(f){Object.hasOwn(d,f)||function f(g){var h=d[g]={onStack:!0,lowlink:b,index:b++};if(c.push(g),a.successors(g).forEach(function(a){Object.hasOwn(d,a)?d[a].onStack&&(h.lowlink=Math.min(h.lowlink,d[a].index)):(f(a),h.lowlink=Math.min(h.lowlink,d[a].lowlink))}),h.lowlink===h.index){var i,j=[];do d[i=c.pop()].onStack=!1,j.push(i);while(g!==i)e.push(j)}}(f)}),e}}),q=d((a,b)=>{var c=p();b.exports=function(a){return c(a).filter(function(b){return b.length>1||1===b.length&&a.hasEdge(b[0],b[0])})}}),r=d((a,b)=>{b.exports=function(a,b,d){var e,f,g,h,i;return e=a,f=b||c,g=d||function(b){return a.outEdges(b)},h={},(i=e.nodes()).forEach(function(a){h[a]={},h[a][a]={distance:0},i.forEach(function(b){a!==b&&(h[a][b]={distance:1/0})}),g(a).forEach(function(b){var c=b.v===a?b.w:b.v,d=f(b);h[a][c]={distance:d,predecessor:a}})}),i.forEach(function(a){var b=h[a];i.forEach(function(c){var d=h[c];i.forEach(function(c){var e=d[a],f=b[c],g=d[c],h=e.distance+f.distance;h<g.distance&&(g.distance=h,g.predecessor=f.predecessor)})})}),h};var c=()=>1}),s=d((a,b)=>{function c(a){var b={},c={},e=[];if(a.sinks().forEach(function f(g){if(Object.hasOwn(c,g))throw new d;Object.hasOwn(b,g)||(c[g]=!0,b[g]=!0,a.predecessors(g).forEach(f),delete c[g],e.push(g))}),Object.keys(b).length!==a.nodeCount())throw new d;return e}var d=class extends Error{constructor(){super(...arguments)}};b.exports=c,c.CycleException=d}),t=d((a,b)=>{var c=s();b.exports=function(a){try{c(a)}catch(a){if(a instanceof c.CycleException)return!1;throw a}return!0}}),u=d((a,b)=>{b.exports=function(a,b,c,d,e){Array.isArray(b)||(b=[b]);var f=(a.isDirected()?a.successors:a.neighbors).bind(a),g={};return b.forEach(function(b){if(!a.hasNode(b))throw Error("Graph does not have node: "+b);e=function a(b,c,d,e,f,g,h){return Object.hasOwn(e,c)||(e[c]=!0,d||(h=g(h,c)),f(c).forEach(function(c){h=a(b,c,d,e,f,g,h)}),d&&(h=g(h,c))),h}(a,b,"post"===c,g,f,d,e)}),e}}),v=d((a,b)=>{var c=u();b.exports=function(a,b,d){return c(a,b,d,function(a,b){return a.push(b),a},[])}}),w=d((a,b)=>{var c=v();b.exports=function(a,b){return c(a,b,"post")}}),x=d((a,b)=>{var c=v();b.exports=function(a,b){return c(a,b,"pre")}}),y=d((a,b)=>{var c=f(),d=l();b.exports=function(a,b){var e,f=new c,g={},h=new d;function i(a){var c=a.v===e?a.w:a.v,d=h.priority(c);if(void 0!==d){var f=b(a);f<d&&(g[c]=e,h.decrease(c,f))}}if(0===a.nodeCount())return f;a.nodes().forEach(function(a){h.add(a,1/0),f.setNode(a)}),h.decrease(a.nodes()[0],0);for(var j=!1;h.size()>0;){if(Object.hasOwn(g,e=h.removeMin()))f.setEdge(e,g[e]);else{if(j)throw Error("Input graph is not connected: "+a);j=!0}a.nodeEdges(e).forEach(i)}return f}}),z=d((a,b)=>{var c=m(),d=j();b.exports=function(a,b,e,f){return function(a,b,e,f){if(void 0===e)return c(a,b,e,f);for(var g=!1,h=a.nodes(),i=0;i<h.length;i++){for(var j=f(h[i]),k=0;k<j.length;k++){var l=j[k],m=l.v===h[i]?l.v:l.w,n=m===l.v?l.w:l.v;0>e({v:m,w:n})&&(g=!0)}if(g)return d(a,b,e,f)}return c(a,b,e,f)}(a,b,e,f||function(b){return a.outEdges(b)})}}),A=d((a,b)=>{b.exports={bellmanFord:j(),components:k(),dijkstra:m(),dijkstraAll:n(),extractPath:o(),findCycles:q(),floydWarshall:r(),isAcyclic:t(),postorder:w(),preorder:x(),prim:y(),shortestPaths:z(),reduce:u(),tarjan:p(),topsort:s()}}),B=h();b.exports={Graph:B.Graph,json:i(),alg:A(),version:B.version}}),g=e((a,b)=>{function c(a){a._prev._next=a._next,a._next._prev=a._prev,delete a._next,delete a._prev}function d(a,b){if("_next"!==a&&"_prev"!==a)return b}b.exports=class{constructor(){let a={};a._next=a._prev=a,this._sentinel=a}dequeue(){let a=this._sentinel,b=a._prev;if(b!==a)return c(b),b}enqueue(a){let b=this._sentinel;a._prev&&a._next&&c(a),a._next=b._next,b._next._prev=a,b._next=a,a._prev=b}toString(){let a=[],b=this._sentinel,c=b._prev;for(;c!==b;)a.push(JSON.stringify(c,d)),c=c._prev;return"["+a.join(", ")+"]"}}}),h=e((a,b)=>{var c=f().Graph,d=g();b.exports=function(a,b){var f,g;let j,k,l,m,n;if(1>=a.nodeCount())return[];let o=(f=a,g=b||e,j=new c,k=0,l=0,f.nodes().forEach(a=>{j.setNode(a,{v:a,in:0,out:0})}),f.edges().forEach(a=>{let b=j.edge(a.v,a.w)||0,c=g(a);j.setEdge(a.v,a.w,b+c),l=Math.max(l,j.node(a.v).out+=c),k=Math.max(k,j.node(a.w).in+=c)}),m=(function(a){let b=[];for(let c=0;c<a;c++)b.push(c);return b})(l+k+3).map(()=>new d),n=k+1,j.nodes().forEach(a=>{i(m,n,j.node(a))}),{graph:j,buckets:m,zeroIdx:n});return(function(a,b,c){let d=[],e=b[b.length-1],f=b[0],g;for(;a.nodeCount();){for(;g=f.dequeue();)h(a,b,c,g);for(;g=e.dequeue();)h(a,b,c,g);if(a.nodeCount()){for(let e=b.length-2;e>0;--e)if(g=b[e].dequeue()){d=d.concat(h(a,b,c,g,!0));break}}}return d})(o.graph,o.buckets,o.zeroIdx).flatMap(b=>a.outEdges(b.v,b.w))};var e=()=>1;function h(a,b,c,d,e){let f=e?[]:void 0;return a.inEdges(d.v).forEach(d=>{let g=a.edge(d),h=a.node(d.v);e&&f.push({v:d.v,w:d.w}),h.out-=g,i(b,c,h)}),a.outEdges(d.v).forEach(d=>{let e=a.edge(d),f=d.w,g=a.node(f);g.in-=e,i(b,c,g)}),a.removeNode(d.v),f}function i(a,b,c){c.out?c.in?a[c.out-c.in+b].enqueue(c):a[a.length-1].enqueue(c):a[0].enqueue(c)}}),i=e((a,b)=>{var c=f().Graph;function d(a,b,c,d){for(var e=d;a.hasNode(e);)e=i(d);return c.dummy=b,a.setNode(e,c),e}b.exports={addBorderNode:function(a,b,c,e){let f={width:0,height:0};return arguments.length>=4&&(f.rank=c,f.order=e),d(a,"border",f,b)},addDummyNode:d,applyWithChunking:e,asNonCompoundGraph:function(a){let b=new c({multigraph:a.isMultigraph()}).setGraph(a.graph());return a.nodes().forEach(c=>{a.children(c).length||b.setNode(c,a.node(c))}),a.edges().forEach(c=>{b.setEdge(c,a.edge(c))}),b},buildLayerMatrix:function(a){let b=j(g(a)+1).map(()=>[]);return a.nodes().forEach(c=>{let d=a.node(c),e=d.rank;void 0!==e&&(b[e][d.order]=c)}),b},intersectRect:function(a,b){let c,d,e=a.x,f=a.y,g=b.x-e,h=b.y-f,i=a.width/2,j=a.height/2;if(!g&&!h)throw Error("Not possible to find intersection inside of the rectangle");return Math.abs(h)*i>Math.abs(g)*j?(h<0&&(j=-j),c=j*g/h,d=j):(g<0&&(i=-i),c=i,d=i*h/g),{x:e+c,y:f+d}},mapValues:function(a,b){let c=b;return"string"==typeof b&&(c=a=>a[b]),Object.entries(a).reduce((a,[b,d])=>(a[b]=c(d,b),a),{})},maxRank:g,normalizeRanks:function(a){let b=e(Math.min,a.nodes().map(b=>{let c=a.node(b).rank;return void 0===c?Number.MAX_VALUE:c}));a.nodes().forEach(c=>{let d=a.node(c);Object.hasOwn(d,"rank")&&(d.rank-=b)})},notime:function(a,b){return b()},partition:function(a,b){let c={lhs:[],rhs:[]};return a.forEach(a=>{b(a)?c.lhs.push(a):c.rhs.push(a)}),c},pick:function(a,b){let c={};for(let d of b)void 0!==a[d]&&(c[d]=a[d]);return c},predecessorWeights:function(a){let b=a.nodes().map(b=>{let c={};return a.inEdges(b).forEach(b=>{c[b.v]=(c[b.v]||0)+a.edge(b).weight}),c});return k(a.nodes(),b)},range:j,removeEmptyRanks:function(a){let b=e(Math.min,a.nodes().map(b=>a.node(b).rank).filter(a=>void 0!==a)),c=[];a.nodes().forEach(d=>{let e=a.node(d).rank-b;c[e]||(c[e]=[]),c[e].push(d)});let d=0,f=a.graph().nodeRankFactor;Array.from(c).forEach((b,c)=>{void 0===b&&c%f!=0?--d:void 0!==b&&d&&b.forEach(b=>a.node(b).rank+=d)})},simplify:function(a){let b=new c().setGraph(a.graph());return a.nodes().forEach(c=>b.setNode(c,a.node(c))),a.edges().forEach(c=>{let d=b.edge(c.v,c.w)||{weight:0,minlen:1},e=a.edge(c);b.setEdge(c.v,c.w,{weight:d.weight+e.weight,minlen:Math.max(d.minlen,e.minlen)})}),b},successorWeights:function(a){let b=a.nodes().map(b=>{let c={};return a.outEdges(b).forEach(b=>{c[b.w]=(c[b.w]||0)+a.edge(b).weight}),c});return k(a.nodes(),b)},time:function(a,b){let c=Date.now();try{return b()}finally{console.log(a+" time: "+(Date.now()-c)+"ms")}},uniqueId:i,zipObject:k};function e(a,b){if(!(b.length>65535))return a.apply(null,b);{let c=function(a,b=65535){let c=[];for(let d=0;d<a.length;d+=b){let e=a.slice(d,d+b);c.push(e)}return c}(b);return a.apply(null,c.map(b=>a.apply(null,b)))}}function g(a){return e(Math.max,a.nodes().map(b=>{let c=a.node(b).rank;return void 0===c?5e-324:c}))}var h=0;function i(a){return a+""+ ++h}function j(a,b,c=1){null==b&&(b=a,a=0);let d=a=>a<b;c<0&&(d=a=>b<a);let e=[];for(let b=a;d(b);b+=c)e.push(b);return e}function k(a,b){return a.reduce((a,c,d)=>(a[c]=b[d],a),{})}}),j=e((a,b)=>{var c=h(),d=i().uniqueId;b.exports={run:function(a){var b,e;let f,g,h;("greedy"===a.graph().acyclicer?c(a,(b=a,a=>b.edge(a).weight)):(f=[],g={},h={},(e=a).nodes().forEach(function a(b){Object.hasOwn(h,b)||(h[b]=!0,g[b]=!0,e.outEdges(b).forEach(b=>{Object.hasOwn(g,b.w)?f.push(b):a(b.w)}),delete g[b])}),f)).forEach(b=>{let c=a.edge(b);a.removeEdge(b),c.forwardName=b.name,c.reversed=!0,a.setEdge(b.w,b.v,c,d("rev"))})},undo:function(a){a.edges().forEach(b=>{let c=a.edge(b);if(c.reversed){a.removeEdge(b);let d=c.forwardName;delete c.reversed,delete c.forwardName,a.setEdge(b.w,b.v,c,d)}})}}}),k=e((a,b)=>{var c=i();b.exports={run:function(a){a.graph().dummyChains=[],a.edges().forEach(b=>(function(a,b){let d,e,f,g=b.v,h=a.node(g).rank,i=b.w,j=a.node(i).rank,k=b.name,l=a.edge(b),m=l.labelRank;if(j!==h+1){for(a.removeEdge(b),f=0,++h;h<j;++f,++h)l.points=[],e={width:0,height:0,edgeLabel:l,edgeObj:b,rank:h},d=c.addDummyNode(a,"edge",e,"_d"),h===m&&(e.width=l.width,e.height=l.height,e.dummy="edge-label",e.labelpos=l.labelpos),a.setEdge(g,d,{weight:l.weight},k),0===f&&a.graph().dummyChains.push(d),g=d;a.setEdge(g,i,{weight:l.weight},k)}})(a,b))},undo:function(a){a.graph().dummyChains.forEach(b=>{let c=a.node(b),d=c.edgeLabel,e;for(a.setEdge(c.edgeObj,d);c.dummy;)e=a.successors(b)[0],a.removeNode(b),d.points.push({x:c.x,y:c.y}),"edge-label"===c.dummy&&(d.x=c.x,d.y=c.y,d.width=c.width,d.height=c.height),b=e,c=a.node(b)})}}}),l=e((a,b)=>{var{applyWithChunking:c}=i();b.exports={longestPath:function(a){var b={};a.sources().forEach(function d(e){var f=a.node(e);if(Object.hasOwn(b,e))return f.rank;b[e]=!0;var g=c(Math.min,a.outEdges(e).map(b=>null==b?1/0:d(b.w)-a.edge(b).minlen));return g===1/0&&(g=0),f.rank=g})},slack:function(a,b){return a.node(b.w).rank-a.node(b.v).rank-a.edge(b).minlen}}}),m=e((a,b)=>{var c=f().Graph,d=l().slack;b.exports=function(a){var b,e,f,g,h=new c({directed:!1}),i=a.nodes()[0],j=a.nodeCount();for(h.setNode(i,{});b=h,e=a,b.nodes().forEach(function a(c){e.nodeEdges(c).forEach(f=>{var g=f.v,h=c===g?f.w:g;b.hasNode(h)||d(e,f)||(b.setNode(h,{}),b.setEdge(c,h,{}),a(h))})}),b.nodeCount()<j;)f=function(a,b){return b.edges().reduce((c,e)=>{let f=1/0;return a.hasNode(e.v)!==a.hasNode(e.w)&&(f=d(b,e)),f<c[0]?[f,e]:c},[1/0,null])[1]}(h,a),g=h.hasNode(f.v)?d(a,f):-d(a,f),function(a,b,c){a.nodes().forEach(a=>b.node(a).rank+=c)}(h,a,g);return h}}),n=e((a,b)=>{var c=m(),d=l().slack,e=l().longestPath,g=f().alg.preorder,h=f().alg.postorder,j=i().simplify;function k(a){e(a=j(a));var b,d,f=c(a);for(p(f),n(f,a);b=q(f);)d=r(f,a,b),s(f,a,b,d)}function n(a,b){var c=h(a,a.nodes());(c=c.slice(0,c.length-1)).forEach(c=>{var d,e,f,g;return d=a,e=b,f=c,g=d.node(f).parent,void(d.edge(f,g).cutvalue=o(d,e,f))})}function o(a,b,c){var d=a.node(c).parent,e=!0,f=b.edge(c,d),g=0;return f||(e=!1,f=b.edge(d,c)),g=f.weight,b.nodeEdges(c).forEach(f=>{var h=f.v===c,i=h?f.w:f.v;if(i!==d){var j,k,l,m=h===e,n=b.edge(f).weight;if(g+=m?n:-n,j=a,k=c,l=i,j.hasEdge(k,l)){var o=a.edge(c,i).cutvalue;g+=m?-o:o}}}),g}function p(a,b){arguments.length<2&&(b=a.nodes()[0]),function a(b,c,d,e,f){var g=d,h=b.node(e);return c[e]=!0,b.neighbors(e).forEach(f=>{Object.hasOwn(c,f)||(d=a(b,c,d,f,e))}),h.low=g,h.lim=d++,f?h.parent=f:delete h.parent,d}(a,{},1,b)}function q(a){return a.edges().find(b=>a.edge(b).cutvalue<0)}function r(a,b,c){var e=c.v,f=c.w;b.hasEdge(e,f)||(e=c.w,f=c.v);var g=a.node(e),h=a.node(f),i=g,j=!1;return g.lim>h.lim&&(i=h,j=!0),b.edges().filter(b=>j===t(a,a.node(b.v),i)&&j!==t(a,a.node(b.w),i)).reduce((a,c)=>d(b,c)<d(b,a)?c:a)}function s(a,b,c,d){var e,f,h,i,j=c.v,k=c.w;a.removeEdge(j,k),a.setEdge(d.v,d.w,{}),p(a),n(a,b),e=a,f=b,h=e.nodes().find(a=>!f.node(a).parent),(i=(i=g(e,h)).slice(1)).forEach(a=>{var b=e.node(a).parent,c=f.edge(a,b),d=!1;c||(c=f.edge(b,a),d=!0),f.node(a).rank=f.node(b).rank+(d?c.minlen:-c.minlen)})}function t(a,b,c){return c.low<=b.lim&&b.lim<=c.lim}b.exports=k,k.initLowLimValues=p,k.initCutValues=n,k.calcCutValue=o,k.leaveEdge=q,k.enterEdge=r,k.exchangeEdges=s}),o=e((a,b)=>{var c=l().longestPath,d=m(),e=n();b.exports=function(a){var b,g=a.graph().ranker;if(g instanceof Function)return g(a);switch(a.graph().ranker){case"network-simplex":default:e(a);break;case"tight-tree":c(b=a),d(b);break;case"longest-path":f(a);case"none":}};var f=c}),p=e((a,b)=>{b.exports=function(a){var b;let c,d,e=(c={},d=0,(b=a).children().forEach(function a(e){let f=d;b.children(e).forEach(a),c[e]={low:f,lim:d++}}),c);a.graph().dummyChains.forEach(b=>{let c=a.node(b),d=c.edgeObj,f=function(a,b,c,d){let e=[],f=[],g=Math.min(b[c].low,b[d].low),h=Math.max(b[c].lim,b[d].lim),i,j;i=c;do e.push(i=a.parent(i));while(i&&(b[i].low>g||h>b[i].lim))for(j=i,i=d;(i=a.parent(i))!==j;)f.push(i);return{path:e.concat(f.reverse()),lca:j}}(a,e,d.v,d.w),g=f.path,h=f.lca,i=0,j=g[0],k=!0;for(;b!==d.w;){if(c=a.node(b),k){for(;(j=g[i])!==h&&a.node(j).maxRank<c.rank;)i++;j===h&&(k=!1)}if(!k){for(;i<g.length-1&&a.node(j=g[i+1]).minRank<=c.rank;)i++;j=g[i]}a.setParent(b,j),b=a.successors(b)[0]}})}}),q=e((a,b)=>{var c=i();b.exports={run:function(a){var b,d,e;let f=c.addDummyNode(a,"root",{},"_root"),g=(d={},(b=a).children().forEach(a=>(function a(c,e){var f=b.children(c);f&&f.length&&f.forEach(b=>a(b,e+1)),d[c]=e})(a,1)),d),h=Object.values(g),i=c.applyWithChunking(Math.max,h)-1,j=2*i+1;a.graph().nestingRoot=f,a.edges().forEach(b=>a.edge(b).minlen*=j);let k=(e=a).edges().reduce((a,b)=>a+e.edge(b).weight,0)+1;a.children().forEach(b=>(function a(b,d,e,f,g,h,i){let j=b.children(i);if(!j.length){i!==d&&b.setEdge(d,i,{weight:0,minlen:e});return}let k=c.addBorderNode(b,"_bt"),l=c.addBorderNode(b,"_bb"),m=b.node(i);b.setParent(k,i),m.borderTop=k,b.setParent(l,i),m.borderBottom=l,j.forEach(c=>{a(b,d,e,f,g,h,c);let j=b.node(c),m=j.borderTop?j.borderTop:c,n=j.borderBottom?j.borderBottom:c,o=j.borderTop?f:2*f,p=m!==n?1:g-h[i]+1;b.setEdge(k,m,{weight:o,minlen:p,nestingEdge:!0}),b.setEdge(n,l,{weight:o,minlen:p,nestingEdge:!0})}),b.parent(i)||b.setEdge(d,k,{weight:0,minlen:g+h[i]})})(a,f,j,k,i,g,b)),a.graph().nodeRankFactor=j},cleanup:function(a){var b=a.graph();a.removeNode(b.nestingRoot),delete b.nestingRoot,a.edges().forEach(b=>{a.edge(b).nestingEdge&&a.removeEdge(b)})}}}),r=e((a,b)=>{var c=i();function d(a,b,d,e,f,g){let h=f[b][g-1],i=c.addDummyNode(a,"border",{width:0,height:0,rank:g,borderType:b},d);f[b][g]=i,a.setParent(i,e),h&&a.setEdge(h,i,{weight:1})}b.exports=function(a){a.children().forEach(function b(c){let e=a.children(c),f=a.node(c);if(e.length&&e.forEach(b),Object.hasOwn(f,"minRank")){f.borderLeft=[],f.borderRight=[];for(let b=f.minRank,e=f.maxRank+1;b<e;++b)d(a,"borderLeft","_bl",c,f,b),d(a,"borderRight","_br",c,f,b)}})}}),s=e((a,b)=>{function c(a){a.nodes().forEach(b=>d(a.node(b))),a.edges().forEach(b=>d(a.edge(b)))}function d(a){let b=a.width;a.width=a.height,a.height=b}function e(a){a.y=-a.y}function f(a){let b=a.x;a.x=a.y,a.y=b}b.exports={adjust:function(a){let b=a.graph().rankdir.toLowerCase();("lr"===b||"rl"===b)&&c(a)},undo:function(a){var b,d;let g=a.graph().rankdir.toLowerCase();("bt"===g||"rl"===g)&&((b=a).nodes().forEach(a=>e(b.node(a))),b.edges().forEach(a=>{let c=b.edge(a);c.points.forEach(e),Object.hasOwn(c,"y")&&e(c)})),("lr"===g||"rl"===g)&&((d=a).nodes().forEach(a=>f(d.node(a))),d.edges().forEach(a=>{let b=d.edge(a);b.points.forEach(f),Object.hasOwn(b,"x")&&f(b)}),c(a))}}}),t=e((a,b)=>{var c=i();b.exports=function(a){let b={},d=a.nodes().filter(b=>!a.children(b).length),e=d.map(b=>a.node(b).rank),f=c.applyWithChunking(Math.max,e),g=c.range(f+1).map(()=>[]);return d.sort((b,c)=>a.node(b).rank-a.node(c).rank).forEach(function c(d){b[d]||(b[d]=!0,g[a.node(d).rank].push(d),a.successors(d).forEach(c))}),g}}),u=e((a,b)=>{var c=i().zipObject;b.exports=function(a,b){let d=0;for(let e=1;e<b.length;++e)d+=function(a,b,d){let e=c(d,d.map((a,b)=>b)),f=b.flatMap(b=>a.outEdges(b).map(b=>({pos:e[b.w],weight:a.edge(b).weight})).sort((a,b)=>a.pos-b.pos)),g=1;for(;g<d.length;)g<<=1;let h=2*g-1;g-=1;let i=Array(h).fill(0),j=0;return f.forEach(a=>{let b=a.pos+g;i[b]+=a.weight;let c=0;for(;b>0;)b%2&&(c+=i[b+1]),b=b-1>>1,i[b]+=a.weight;j+=a.weight*c}),j}(a,b[e-1],b[e]);return d}}),v=e((a,b)=>{b.exports=function(a,b=[]){return b.map(b=>{let c=a.inEdges(b);if(!c.length)return{v:b};{let d=c.reduce((b,c)=>{let d=a.edge(c),e=a.node(c.v);return{sum:b.sum+d.weight*e.order,weight:b.weight+d.weight}},{sum:0,weight:0});return{v:b,barycenter:d.sum/d.weight,weight:d.weight}}})}}),w=e((a,b)=>{var c=i();b.exports=function(a,b){let d={};return a.forEach((a,b)=>{let c=d[a.v]={indegree:0,in:[],out:[],vs:[a.v],i:b};void 0!==a.barycenter&&(c.barycenter=a.barycenter,c.weight=a.weight)}),b.edges().forEach(a=>{let b=d[a.v],c=d[a.w];void 0!==b&&void 0!==c&&(c.indegree++,b.out.push(d[a.w]))}),function(a){let b=[];for(;a.length;){let c=a.pop();b.push(c),c.in.reverse().forEach(function(a){return b=>{b.merged||(void 0===b.barycenter||void 0===a.barycenter||b.barycenter>=a.barycenter)&&function(a,b){let c=0,d=0;a.weight&&(c+=a.barycenter*a.weight,d+=a.weight),b.weight&&(c+=b.barycenter*b.weight,d+=b.weight),a.vs=b.vs.concat(a.vs),a.barycenter=c/d,a.weight=d,a.i=Math.min(b.i,a.i),b.merged=!0}(a,b)}}(c)),c.out.forEach(function(b){return c=>{c.in.push(b),0==--c.indegree&&a.push(c)}}(c))}return b.filter(a=>!a.merged).map(a=>c.pick(a,["vs","i","barycenter","weight"]))}(Object.values(d).filter(a=>!a.indegree))}}),x=e((a,b)=>{var c=i();function d(a,b,c){let d;for(;b.length&&(d=b[b.length-1]).i<=c;)b.pop(),a.push(d.vs),c++;return c}b.exports=function(a,b){var e;let f=c.partition(a,a=>Object.hasOwn(a,"barycenter")),g=f.lhs,h=f.rhs.sort((a,b)=>b.i-a.i),i=[],j=0,k=0,l=0;g.sort((e=!!b,(a,b)=>a.barycenter<b.barycenter?-1:a.barycenter>b.barycenter?1:e?b.i-a.i:a.i-b.i)),l=d(i,h,l),g.forEach(a=>{l+=a.vs.length,i.push(a.vs),j+=a.barycenter*a.weight,k+=a.weight,l=d(i,h,l)});let m={vs:i.flat(!0)};return k&&(m.barycenter=j/k,m.weight=k),m}}),y=e((a,b)=>{var c=v(),d=w(),e=x();b.exports=function a(b,f,g,h){var i,j;let k=b.children(f),l=b.node(f),m=l?l.borderLeft:void 0,n=l?l.borderRight:void 0,o={};m&&(k=k.filter(a=>a!==m&&a!==n));let p=c(b,k);p.forEach(c=>{if(b.children(c.v).length){var d,e;let f=a(b,c.v,g,h);o[c.v]=f,Object.hasOwn(f,"barycenter")&&(d=c,e=f,void 0!==d.barycenter?(d.barycenter=(d.barycenter*d.weight+e.barycenter*e.weight)/(d.weight+e.weight),d.weight+=e.weight):(d.barycenter=e.barycenter,d.weight=e.weight))}});let q=d(p,g);i=q,j=o,i.forEach(a=>{a.vs=a.vs.flatMap(a=>j[a]?j[a].vs:a)});let r=e(q,h);if(m&&(r.vs=[m,r.vs,n].flat(!0),b.predecessors(m).length)){let a=b.node(b.predecessors(m)[0]),c=b.node(b.predecessors(n)[0]);Object.hasOwn(r,"barycenter")||(r.barycenter=0,r.weight=0),r.barycenter=(r.barycenter*r.weight+a.order+c.order)/(r.weight+2),r.weight+=2}return r}}),z=e((a,b)=>{var c=f().Graph,d=i();b.exports=function(a,b,e,f){f||(f=a.nodes());let g=function(a){for(var b;a.hasNode(b=d.uniqueId("_root")););return b}(a),h=new c({compound:!0}).setGraph({root:g}).setDefaultNodeLabel(b=>a.node(b));return f.forEach(c=>{let d=a.node(c),f=a.parent(c);(d.rank===b||d.minRank<=b&&b<=d.maxRank)&&(h.setNode(c),h.setParent(c,f||g),a[e](c).forEach(b=>{let d=b.v===c?b.w:b.v,e=h.edge(d,c),f=void 0!==e?e.weight:0;h.setEdge(d,c,{weight:a.edge(b).weight+f})}),Object.hasOwn(d,"minRank")&&h.setNode(c,{borderLeft:d.borderLeft[b],borderRight:d.borderRight[b]}))}),h}}),A=e((a,b)=>{b.exports=function(a,b,c){let d={},e;c.forEach(c=>{let f=a.parent(c),g,h;for(;f;){if((g=a.parent(f))?(h=d[g],d[g]=f):(h=e,e=f),h&&h!==f)return void b.setEdge(h,f);f=g}})}}),B=e((a,b)=>{var c=t(),d=u(),e=y(),g=z(),h=A(),j=f().Graph,k=i();function l(a,b,c){let d=new Map,e=(a,b)=>{d.has(a)||d.set(a,[]),d.get(a).push(b)};for(let b of a.nodes()){let c=a.node(b);if("number"==typeof c.rank&&e(c.rank,b),"number"==typeof c.minRank&&"number"==typeof c.maxRank)for(let a=c.minRank;a<=c.maxRank;a++)a!==c.rank&&e(a,b)}return b.map(function(b){return g(a,b,c,d.get(b)||[])})}function m(a,b){Object.values(b).forEach(b=>b.forEach((b,c)=>a.node(b).order=c))}b.exports=function a(b,f={}){if("function"==typeof f.customOrder)return void f.customOrder(b,a);let g=k.maxRank(b),i=l(b,k.range(1,g+1),"inEdges"),n=l(b,k.range(g-1,-1,-1),"outEdges"),o=c(b);if(m(b,o),f.disableOptimalOrderHeuristic)return;let p=1/0,q,r=f.constraints||[];for(let a=0,c=0;c<4;++a,++c){(function(a,b,c){let d=new j;a.forEach(function(a){c.forEach(a=>d.setEdge(a.left,a.right));let f=a.graph().root,g=e(a,f,d,b);g.vs.forEach((b,c)=>a.node(b).order=c),h(a,d,g.vs)})})(a%2?i:n,a%4>=2,r),o=k.buildLayerMatrix(b);let f=d(b,o);f<p?(c=0,q=Object.assign({},o),p=f):f===p&&(q=structuredClone(o))}m(b,q)}}),C=e((a,b)=>{var c=f().Graph,d=i();function e(a,b){let c={};return b.length&&b.reduce(function(b,d){let e=0,f=0,g=b.length,i=d[d.length-1];return d.forEach((b,j)=>{let k=function(a,b){if(a.node(b).dummy)return a.predecessors(b).find(b=>a.node(b).dummy)}(a,b),l=k?a.node(k).order:g;(k||b===i)&&(d.slice(f,j+1).forEach(b=>{a.predecessors(b).forEach(d=>{let f=a.node(d),g=f.order;(g<e||l<g)&&!(f.dummy&&a.node(b).dummy)&&h(c,d,b)})}),f=j+1,e=l)}),d}),c}function g(a,b){let c={};function e(b,e,f,g,i){let j;d.range(e,f).forEach(d=>{j=b[d],a.node(j).dummy&&a.predecessors(j).forEach(b=>{let d=a.node(b);d.dummy&&(d.order<g||d.order>i)&&h(c,b,j)})})}return b.length&&b.reduce(function(b,c){let d=-1,f,g=0;return c.forEach((h,i)=>{if("border"===a.node(h).dummy){let b=a.predecessors(h);b.length&&(f=a.node(b[0]).order,e(c,g,i,d,f),g=i,d=f)}e(c,g,c.length,f,b.length)}),c}),c}function h(a,b,c){if(b>c){let a=b;b=c,c=a}let d=a[b];d||(a[b]=d={}),d[c]=!0}function j(a,b,c){if(b>c){let a=b;b=c,c=a}return!!a[b]&&Object.hasOwn(a[b],c)}function k(a,b,c,d){let e={},f={},g={};return b.forEach(a=>{a.forEach((a,b)=>{e[a]=a,f[a]=a,g[a]=b})}),b.forEach(a=>{let b=-1;a.forEach(a=>{let h=d(a);if(h.length){let d=((h=h.sort((a,b)=>g[a]-g[b])).length-1)/2;for(let i=Math.floor(d),k=Math.ceil(d);i<=k;++i){let d=h[i];f[a]===a&&b<g[d]&&!j(c,a,d)&&(f[d]=a,f[a]=e[a]=e[d],b=g[d])}}})}),{root:e,align:f}}function l(a,b,d,e,f){var g,h,i,j,k,l,m;let n,o,p,q={},r=(g=a,h=b,i=d,j=f,n=new c,p=(k=(o=g.graph()).nodesep,l=o.edgesep,m=j,(a,b,c)=>{let d=a.node(b),e=a.node(c),f,g;if(f=0+d.width/2,Object.hasOwn(d,"labelpos"))switch(d.labelpos.toLowerCase()){case"l":g=-d.width/2;break;case"r":g=d.width/2}if(g&&(f+=m?g:-g),g=0,f+=(d.dummy?l:k)/2,f+=(e.dummy?l:k)/2,f+=e.width/2,Object.hasOwn(e,"labelpos"))switch(e.labelpos.toLowerCase()){case"l":g=e.width/2;break;case"r":g=-e.width/2}return g&&(f+=m?g:-g),g=0,f}),h.forEach(a=>{let b;a.forEach(a=>{let c=i[a];if(n.setNode(c),b){var d=i[b],e=n.edge(d,c);n.setEdge(d,c,Math.max(p(g,a,b),e||0))}b=a})}),n),s=f?"borderLeft":"borderRight";function t(a,b){let c=r.nodes().slice(),d={},e=c.pop();for(;e;){if(d[e])a(e);else for(let a of(d[e]=!0,c.push(e),b(e)))c.push(a);e=c.pop()}}return t(function(a){q[a]=r.inEdges(a).reduce((a,b)=>Math.max(a,q[b.v]+r.edge(b)),0)},r.predecessors.bind(r)),t(function(b){let c=r.outEdges(b).reduce((a,b)=>Math.min(a,q[b.w]-r.edge(b)),1/0),d=a.node(b);c!==1/0&&d.borderType!==s&&(q[b]=Math.max(q[b],c))},r.successors.bind(r)),Object.keys(e).forEach(a=>q[a]=q[d[a]]),q}function m(a,b){return Object.values(b).reduce((b,c)=>{let d=-1/0,e=1/0;Object.entries(c).forEach(([b,c])=>{var f,g;let h=(f=a,g=b,f.node(g).width/2);d=Math.max(c+h,d),e=Math.min(c-h,e)});let f=d-e;return f<b[0]&&(b=[f,c]),b},[1/0,null])[1]}function n(a,b){let c=Object.values(b),e=d.applyWithChunking(Math.min,c),f=d.applyWithChunking(Math.max,c);["u","d"].forEach(c=>{["l","r"].forEach(g=>{let h=c+g,i=a[h];if(i===b)return;let j=Object.values(i),k=e-d.applyWithChunking(Math.min,j);"l"!==g&&(k=f-d.applyWithChunking(Math.max,j)),k&&(a[h]=d.mapValues(i,a=>a+k))})})}function o(a,b){return d.mapValues(a.ul,(c,d)=>{if(b)return a[b.toLowerCase()][d];{let b=Object.values(a).map(a=>a[d]).sort((a,b)=>a-b);return(b[1]+b[2])/2}})}b.exports={positionX:function(a){let b=d.buildLayerMatrix(a),c=Object.assign(e(a,b),g(a,b)),f={},h;["u","d"].forEach(e=>{h="u"===e?b:Object.values(b).reverse(),["l","r"].forEach(b=>{"r"===b&&(h=h.map(a=>Object.values(a).reverse()));let g=("u"===e?a.predecessors:a.successors).bind(a),i=k(a,h,c,g),j=l(a,h,i.root,i.align,"r"===b);"r"===b&&(j=d.mapValues(j,a=>-a)),f[e+b]=j})});let i=m(a,f);return n(f,i),o(f,a.graph().align)},findType1Conflicts:e,findType2Conflicts:g,addConflict:h,hasConflict:j,verticalAlignment:k,horizontalCompaction:l,alignCoordinates:n,findSmallestWidthAlignment:m,balance:o}}),D=e((a,b)=>{var c=i(),d=C().positionX;b.exports=function(a){var b;let e,f,g,h;b=a=c.asNonCompoundGraph(a),e=c.buildLayerMatrix(b),f=b.graph().ranksep,g=b.graph().rankalign,h=0,e.forEach(a=>{let c=a.reduce((a,c)=>{let d=b.node(c).height;return a>d?a:d},0);a.forEach(a=>{let d=b.node(a);"top"===g?d.y=h+d.height/2:"bottom"===g?d.y=h+c-d.height/2:d.y=h+c/2}),h+=c+f}),Object.entries(d(a)).forEach(([b,c])=>a.node(b).x=c)}}),E=e((a,b)=>{var c=j(),d=k(),e=o(),g=i().normalizeRanks,h=p(),l=i().removeEmptyRanks,m=q(),n=r(),t=s(),u=B(),v=D(),w=i(),x=f().Graph;b.exports=function(a,b={}){let f=b.debugTiming?w.time:w.notime;return f("layout",()=>{let i=f(" buildLayoutGraph",()=>{var b;let c,d;return b=a,c=new x({multigraph:!0,compound:!0}),d=J(b.graph()),c.setGraph(Object.assign({},z,I(d,y),w.pick(d,A))),b.nodes().forEach(a=>{let d=I(J(b.node(a)),C);Object.keys(E).forEach(a=>{void 0===d[a]&&(d[a]=E[a])}),c.setNode(a,d),c.setParent(a,b.parent(a))}),b.edges().forEach(a=>{let d=J(b.edge(a));c.setEdge(a,Object.assign({},G,I(d,F),w.pick(d,H)))}),c});return f(" runLayout",()=>{var a,j,k;return a=i,j=f,k=b,void(j(" makeSpaceForEdgeLabels",()=>{var b;let c;return c=(b=a).graph(),void(c.ranksep/=2,b.edges().forEach(a=>{let d=b.edge(a);d.minlen*=2,"c"!==d.labelpos.toLowerCase()&&("TB"===c.rankdir||"BT"===c.rankdir?d.width+=d.labeloffset:d.height+=d.labeloffset)}))}),j(" removeSelfEdges",()=>{var b;(b=a).edges().forEach(a=>{if(a.v===a.w){var c=b.node(a.v);c.selfEdges||(c.selfEdges=[]),c.selfEdges.push({e:a,label:b.edge(a)}),b.removeEdge(a)}})}),j(" acyclic",()=>c.run(a)),j(" nestingGraph.run",()=>m.run(a)),j(" rank",()=>e(w.asNonCompoundGraph(a))),j(" injectEdgeLabelProxies",()=>{var b;(b=a).edges().forEach(a=>{let c=b.edge(a);if(c.width&&c.height){let c=b.node(a.v),d={rank:(b.node(a.w).rank-c.rank)/2+c.rank,e:a};w.addDummyNode(b,"edge-proxy",d,"_ep")}})}),j(" removeEmptyRanks",()=>l(a)),j(" nestingGraph.cleanup",()=>m.cleanup(a)),j(" normalizeRanks",()=>g(a)),j(" assignRankMinMax",()=>{var b;let c;return c=0,void((b=a).nodes().forEach(a=>{let d=b.node(a);d.borderTop&&(d.minRank=b.node(d.borderTop).rank,d.maxRank=b.node(d.borderBottom).rank,c=Math.max(c,d.maxRank))}),b.graph().maxRank=c)}),j(" removeEdgeLabelProxies",()=>{var b;(b=a).nodes().forEach(a=>{let c=b.node(a);"edge-proxy"===c.dummy&&(b.edge(c.e).labelRank=c.rank,b.removeNode(a))})}),j(" normalize.run",()=>d.run(a)),j(" parentDummyChains",()=>h(a)),j(" addBorderSegments",()=>n(a)),j(" order",()=>u(a,k)),j(" insertSelfEdges",()=>{var b;return b=a,void w.buildLayerMatrix(b).forEach(a=>{var c=0;a.forEach((a,d)=>{var e=b.node(a);e.order=d+c,(e.selfEdges||[]).forEach(a=>{w.addDummyNode(b,"selfedge",{width:a.label.width,height:a.label.height,rank:e.rank,order:d+ ++c,e:a.e,label:a.label},"_se")}),delete e.selfEdges})})}),j(" adjustCoordinateSystem",()=>t.adjust(a)),j(" position",()=>v(a)),j(" positionSelfEdges",()=>{var b;(b=a).nodes().forEach(a=>{var c=b.node(a);if("selfedge"===c.dummy){var d=b.node(c.e.v),e=d.x+d.width/2,f=d.y,g=c.x-e,h=d.height/2;b.setEdge(c.e,c.label),b.removeNode(a),c.label.points=[{x:e+2*g/3,y:f-h},{x:e+5*g/6,y:f-h},{x:e+g,y:f},{x:e+5*g/6,y:f+h},{x:e+2*g/3,y:f+h}],c.label.x=c.x,c.label.y=c.y}})}),j(" removeBorderNodes",()=>{var b;(b=a).nodes().forEach(a=>{if(b.children(a).length){let c=b.node(a),d=b.node(c.borderTop),e=b.node(c.borderBottom),f=b.node(c.borderLeft[c.borderLeft.length-1]),g=b.node(c.borderRight[c.borderRight.length-1]);c.width=Math.abs(g.x-f.x),c.height=Math.abs(e.y-d.y),c.x=f.x+c.width/2,c.y=d.y+c.height/2}}),b.nodes().forEach(a=>{"border"===b.node(a).dummy&&b.removeNode(a)})}),j(" normalize.undo",()=>d.undo(a)),j(" fixupEdgeLabelCoords",()=>{var b;(b=a).edges().forEach(a=>{let c=b.edge(a);if(Object.hasOwn(c,"x"))switch(("l"===c.labelpos||"r"===c.labelpos)&&(c.width-=c.labeloffset),c.labelpos){case"l":c.x-=c.width/2+c.labeloffset;break;case"r":c.x+=c.width/2+c.labeloffset}})}),j(" undoCoordinateSystem",()=>t.undo(a)),j(" translateGraph",()=>(function(a){let b=1/0,c=0,d=1/0,e=0,f=a.graph(),g=f.marginx||0,h=f.marginy||0;function i(a){let f=a.x,g=a.y,h=a.width,i=a.height;b=Math.min(b,f-h/2),c=Math.max(c,f+h/2),d=Math.min(d,g-i/2),e=Math.max(e,g+i/2)}a.nodes().forEach(b=>i(a.node(b))),a.edges().forEach(b=>{let c=a.edge(b);Object.hasOwn(c,"x")&&i(c)}),b-=g,d-=h,a.nodes().forEach(c=>{let e=a.node(c);e.x-=b,e.y-=d}),a.edges().forEach(c=>{let e=a.edge(c);e.points.forEach(a=>{a.x-=b,a.y-=d}),Object.hasOwn(e,"x")&&(e.x-=b),Object.hasOwn(e,"y")&&(e.y-=d)}),f.width=c-b+g,f.height=e-d+h})(a)),j(" assignNodeIntersects",()=>{var b;(b=a).edges().forEach(a=>{let c=b.edge(a),d=b.node(a.v),e=b.node(a.w),f,g;c.points?(f=c.points[0],g=c.points[c.points.length-1]):(c.points=[],f=e,g=d),c.points.unshift(w.intersectRect(d,f)),c.points.push(w.intersectRect(e,g))})}),j(" reversePoints",()=>{var b;(b=a).edges().forEach(a=>{let c=b.edge(a);c.reversed&&c.points.reverse()})}),j(" acyclic.undo",()=>c.undo(a)))}),f(" updateInputGraph",()=>{var b,c;return b=a,c=i,void(b.nodes().forEach(a=>{let d=b.node(a),e=c.node(a);d&&(d.x=e.x,d.y=e.y,d.order=e.order,d.rank=e.rank,c.children(a).length&&(d.width=e.width,d.height=e.height))}),b.edges().forEach(a=>{let d=b.edge(a),e=c.edge(a);d.points=e.points,Object.hasOwn(e,"x")&&(d.x=e.x,d.y=e.y)}),b.graph().width=c.graph().width,b.graph().height=c.graph().height)}),i})};var y=["nodesep","edgesep","ranksep","marginx","marginy"],z={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb",rankalign:"center"},A=["acyclicer","ranker","rankdir","align","rankalign"],C=["width","height","rank"],E={width:0,height:0},F=["minlen","weight","width","height","labeloffset"],G={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},H=["labelpos"];function I(a,b){return w.mapValues(w.pick(a,b),Number)}function J(a){var b={};return a&&Object.entries(a).forEach(([a,c])=>{"string"==typeof a&&(a=a.toLowerCase()),b[a]=c}),b}}),F=e((a,b)=>{var c=i(),d=f().Graph;b.exports={debugOrdering:function(a){let b=c.buildLayerMatrix(a),e=new d({compound:!0,multigraph:!0}).setGraph({});return a.nodes().forEach(b=>{e.setNode(b,{label:b}),e.setParent(b,"layer"+a.node(b).rank)}),a.edges().forEach(a=>e.setEdge(a.v,a.w,{},a.name)),b.forEach((a,b)=>{e.setNode("layer"+b,{rank:"same"}),a.reduce((a,b)=>(e.setEdge(a,b,{style:"invis"}),b))}),e}}}),G=e((a,b)=>{b.exports="2.0.4"});let H=e((a,b)=>{b.exports={graphlib:f(),layout:E(),debug:F(),util:{time:i().time,notime:i().notime},version:G()}})(),I={direction:"LR",ranksep:200,nodesep:15},J={featureNode:{width:288,height:140},repositoryNode:{width:328,height:50}};function K(a,b){let c=a.data;return c&&"number"==typeof c.width&&"number"==typeof c.height?{width:c.width,height:c.height}:J[a.type??""]??b}function L(a,b,c={}){let{direction:d="TB",nodeSize:e={width:172,height:36},ranksep:f=80,nodesep:g=30}=c;if(0===a.length)return{nodes:[],edges:[]};let h=new H.graphlib.Graph({multigraph:!0});h.setDefaultEdgeLabel(()=>({})),h.setGraph({rankdir:d,ranksep:f,nodesep:g});let i=new Set;for(let a of b)i.add(a.source),i.add(a.target);let j=a.filter(a=>i.has(a.id)),k=a.filter(a=>!i.has(a.id));for(let a of j){let b=K(a,e);h.setNode(a.id,{width:b.width,height:b.height})}for(let a of b)h.hasNode(a.source)&&h.hasNode(a.target)&&h.setEdge(a.source,a.target,{},a.id);H.layout(h);let{targetPosition:l,sourcePosition:m}=function(a){switch(a){case"LR":return{targetPosition:"left",sourcePosition:"right"};case"RL":return{targetPosition:"right",sourcePosition:"left"};case"BT":return{targetPosition:"bottom",sourcePosition:"top"};default:return{targetPosition:"top",sourcePosition:"bottom"}}}(d),n="LR"===d||"RL"===d,o=new Map;for(let a of j){let b=h.node(a.id),c=K(a,e);o.set(a.id,{cx:b.x,cy:b.y,w:c.width,h:c.height})}let p=new Map;for(let a of b)o.has(a.source)&&o.has(a.target)&&(p.has(a.source)||p.set(a.source,[]),p.get(a.source).push(a.target));for(let[a,b]of p){if(b.length<=1)continue;let c=o.get(a),d=n?c.cy:c.cx,e=b.filter(a=>o.has(a)).sort((a,b)=>{let c=o.get(a),d=o.get(b);return n?c.cy-d.cy:c.cx-d.cx}),f=o.get(e[0]),g=o.get(e[e.length-1]),h=d-(n?(f.cy+g.cy)/2:(f.cx+g.cx)/2);if(Math.abs(h)>1)for(let a of e){let b=o.get(a);n?b.cy+=h:b.cx+=h}}let q=new Map;for(let a=0;a<j.length;a++)q.set(j[a].id,a);for(let[,a]of p){let b=a.filter(a=>o.has(a));if(b.length<=1)continue;let c=b.map(a=>n?o.get(a).cy:o.get(a).cx).sort((a,b)=>a-b),d=[...b].sort((a,b)=>(q.get(a)??0)-(q.get(b)??0));for(let a=0;a<d.length;a++){let b=o.get(d[a]);n?b.cy=c[a]:b.cx=c[a]}}let r=[];for(let a of j){let b=o.get(a.id);r.push({...a,targetPosition:l,sourcePosition:m,position:{x:b.cx-b.w/2,y:b.cy-b.h/2}})}if(k.length>0){let a=0,b=1/0;for(let c of r){let d=K(c,e);a=Math.max(a,c.position.y+d.height),b=Math.min(b,c.position.x)}b===1/0&&(b=0);for(let c=0;c<k.length;c++){let d=k[c],f=K(d,e);r.push({...d,targetPosition:l,sourcePosition:m,position:{x:b,y:a+30+c*(f.height+20)}})}}return{nodes:r,edges:[...b]}}var M=a.i(24784),N=a.i(25674);let O=(0,N.createServerReference)("404002489621385ea461d162286cc27aae61f4976f",N.callServer,void 0,N.findSourceMapURL,"addRepository"),P=(0,N.createServerReference)("4084252126a690587dc4448eba9fe8b5c23396830a",N.callServer,void 0,N.findSourceMapURL,"deleteRepository"),Q=(0,N.createServerReference)("40508af916caa68d7f21eca44e3cd64a3c3d58d420",N.callServer,void 0,N.findSourceMapURL,"getFeatureMetadata"),R=(0,N.createServerReference)("00a02cda449dfe9860bbbde92591f3b1a3b6686ee2",N.callServer,void 0,N.findSourceMapURL,"fetchGraphData");var S=a.i(84871),T=a.i(19884),U=a.i(87139),V=a.i(74146);function W(a,b){let c=new Map;for(let a of b)"dependencyEdge"===a.type&&c.set(a.target,a.source);let d=new Map,e=new Map;for(let b of a)"featureNode"===b.type?d.set(b.id,{nodeId:b.id,data:b.data,parentNodeId:c.get(b.id)}):"repositoryNode"===b.type&&e.set(b.id,{nodeId:b.id,data:b.data});return{featureMap:d,repoMap:e}}function X(a,b){return(void 0===b.state||b.state===a.state)&&(void 0===b.lifecycle||b.lifecycle===a.lifecycle)&&(void 0===b.name||b.name===a.name)&&(void 0===b.description||b.description===a.description)}let Y=(0,U.createLogger)("[Polling]"),Z=0,$=0;function _(a,e){let f=(0,c.useRouter)(),g=(0,T.useSoundAction)("delete"),h=(0,T.useSoundAction)("create"),{nodes:i,edges:j,reconcile:k,updateFeature:l,addPendingFeature:m,removeFeature:n,restoreFeature:o,addRepository:p,removeRepository:q,replaceRepository:r,getFeatureRepositoryPath:s,getRepositoryData:t,getRepoMapSize:u,setCallbacks:v}=function(a,c){let d=(0,b.useMemo)(()=>W(a,c),[]),[e,f]=(0,b.useState)(d.featureMap),[g,h]=(0,b.useState)(d.repoMap),[i,j]=(0,b.useState)(new Map),k=(0,b.useRef)(new Map),l=(0,b.useRef)({}),m=(0,b.useMemo)(()=>({onNodeAction:a=>l.current.onNodeAction?.(a),onNodeSettings:a=>l.current.onNodeSettings?.(a),onFeatureDelete:a=>l.current.onFeatureDelete?.(a),onRepositoryAdd:a=>l.current.onRepositoryAdd?.(a),onRepositoryClick:a=>l.current.onRepositoryClick?.(a),onRepositoryDelete:a=>l.current.onRepositoryDelete?.(a)}),[]),n=(0,b.useRef)(e);n.current=e;let o=(0,b.useRef)(g);o.current=g;let p=(0,b.useMemo)(()=>(function(a,b,c,d){let e=[],f=[],g=new Map;for(let[a,c]of b)c.data.repositoryPath&&g.set(c.data.repositoryPath,a);let h=new Map;for(let[a,c]of b){let b={...c.data,...d?.onRepositoryAdd&&{onAdd:()=>d.onRepositoryAdd(a)},...d?.onRepositoryClick&&{onClick:()=>d.onRepositoryClick(a)},...d?.onRepositoryDelete&&{onDelete:d.onRepositoryDelete}};e.push({id:a,type:"repositoryNode",position:{x:0,y:0},data:b})}for(let[b,i,j]of[...[...a.entries()].map(([a,b])=>[a,b,!1]),...[...c.entries()].filter(([b])=>!a.has(b)).map(([a,b])=>[a,b,!0])]){let a="creating"===i.data.state||j,c={...i.data,...!a&&d?.onNodeAction&&{onAction:()=>d.onNodeAction(b)},...!a&&d?.onNodeSettings&&{onSettings:()=>d.onNodeSettings(b)},...!a&&d?.onFeatureDelete&&{onDelete:d.onFeatureDelete}};if(e.push({id:b,type:"featureNode",position:{x:0,y:0},data:c}),i.parentNodeId)f.push({id:`dep-${i.parentNodeId}-${b}`,source:i.parentNodeId,target:b,type:"dependencyEdge"});else{let a=i.data.repositoryPath,c=g.get(a)??function(a){if(h.has(a))return h.get(a);let b=`virtual-repo-${a}`,c=a.split("/").filter(Boolean).at(-1)??a;return e.push({id:b,type:"repositoryNode",position:{x:0,y:0},data:{name:c,repositoryPath:a}}),h.set(a,b),b}(a);f.push({id:`edge-${c}-${b}`,source:c,target:b,style:{strokeDasharray:"5 5"}})}}let i=f.length>0;for(let a of e)a.data.showHandles=i;return{nodes:e,edges:f}})(e,g,i,m),[e,g,i,m]),q=(0,b.useRef)({key:"",positions:new Map}),{nodes:r,edges:s}=(0,b.useMemo)(()=>{let a=p.nodes.map(a=>a.id).sort().join(","),b=p.edges.map(a=>`${a.source}-${a.target}`).sort().join(","),c=`${a}|${b}`;if(c!==q.current.key){let a=L(p.nodes,p.edges,I),b=new Map;for(let c of a.nodes)b.set(c.id,{position:c.position,targetPosition:c.targetPosition,sourcePosition:c.sourcePosition});return q.current={key:c,positions:b},a}let{positions:d}=q.current;return{nodes:p.nodes.map(a=>{let b=d.get(a.id);return b?{...a,...b}:a}),edges:p.edges}},[p]),t=(0,b.useCallback)((a,b)=>{let{featureMap:c,repoMap:d}=W(a,b),e=new Set([...c.values()].map(a=>`${a.data.name}\0${a.data.repositoryPath}`));f(a=>{let b=[...a.entries()].filter(([,a])=>"creating"===a.data.state),d=new Map(c);for(let[a,c]of b){let b=`${c.data.name}\0${c.data.repositoryPath}`;e.has(b)||d.set(a,c)}for(let[a,b]of k.current){let c=d.get(a);c&&(d.set(a,{...c,data:{...c.data,...b}}),k.current.delete(a))}return d}),j(a=>{if(0===a.size)return a;let b=!1,c=new Map(a);for(let[d,f]of a){let a=`${f.data.name}\0${f.data.repositoryPath}`;e.has(a)&&(c.delete(d),b=!0)}return b?c:a}),h(d)},[]),u=(0,b.useCallback)((a,b)=>{f(c=>{let d=c.get(a);if(!d)return k.current.set(a,{...k.current.get(a),...b}),c;if(k.current.delete(a),X(d.data,b))return c;let e=new Map(c);return e.set(a,{...d,data:{...d.data,...b}}),e}),j(c=>{let d=c.get(a);if(!d||X(d.data,b))return c;let e=new Map(c);return e.set(a,{...d,data:{...d.data,...b}}),e})},[]),v=(0,b.useCallback)((a,b,c)=>{j(d=>{let e=new Map(d);return e.set(a,{nodeId:a,data:b,parentNodeId:c}),e})},[]),w=(0,b.useCallback)(a=>{j(b=>{if(!b.has(a))return b;let c=new Map(b);return c.delete(a),c})},[]),x=(0,b.useCallback)(a=>{f(b=>{if(!b.has(a))return b;let c=new Map(b);return c.delete(a),c})},[]),y=(0,b.useCallback)((a,b)=>{f(c=>{let d=new Map(c);return d.set(a,b),d})},[]),z=(0,b.useCallback)((a,b)=>{h(c=>{let d=new Map(c);return d.set(a,{nodeId:a,data:b}),d})},[]),A=(0,b.useCallback)(a=>{h(b=>{if(!b.has(a))return b;let c=new Map(b);return c.delete(a),c})},[]),B=(0,b.useCallback)((a,b,c)=>{h(d=>{if(!d.has(a))return d;let e=new Map(d);return e.delete(a),e.set(b,{nodeId:b,data:c}),e})},[]),C=(0,b.useCallback)(a=>n.current.get(a)?.data.repositoryPath,[]),D=(0,b.useCallback)(a=>o.current.get(a)?.data,[]);return{nodes:r,edges:s,reconcile:t,updateFeature:u,addPendingFeature:v,removePendingFeature:w,removeFeature:x,restoreFeature:y,addRepository:z,removeRepository:A,replaceRepository:B,getFeatureRepositoryPath:C,getRepositoryData:D,getRepoMapSize:(0,b.useCallback)(()=>o.current.size,[]),setCallbacks:(0,b.useCallback)(a=>{l.current=a},[])}}(a,e),w=(0,b.useRef)(i),x=(0,b.useRef)(j);(0,b.useEffect)(()=>{w.current=i,x.current=j},[i,j]);let y=(0,b.useMemo)(()=>a.map(a=>a.id).sort().join(","),[a]),z=(0,b.useMemo)(()=>a.filter(a=>"featureNode"===a.type).map(a=>{let b=a.data;return`${a.id}:${b.state}:${b.lifecycle}`}).sort().join(","),[a]),A=(0,b.useRef)("");(0,b.useEffect)(()=>{let b=`${y}|${z}`;b!==A.current&&(A.current=b,k(a,e))},[y,z,a,e,k]);let B=(0,b.useRef)(new Map),{events:C}=(0,S.useAgentEventsContext)();(0,b.useEffect)(()=>{let b=B.current;for(let c of a){if("featureNode"!==c.type)continue;let a=c.data,e=b.get(c.id);void 0!==e&&e!==a.state&&(C.some(b=>b.featureId===a.featureId&&(0,V.mapEventTypeToState)(b.eventType)===a.state)||("done"===a.state?d.toast.success(a.name,{description:"Feature completed!"}):"action-required"===a.state?d.toast.warning(a.name,{description:"Waiting for your approval",action:{label:"Review",onClick:()=>f.push(`/feature/${a.featureId}`)}}):"error"===a.state&&d.toast.error(a.name,{description:a.errorMessage??"Agent failed"}))),b.set(c.id,a.state)}},[z,a,C,f]);let D=(0,b.useRef)(0);(0,b.useEffect)(()=>{if(D.current>C.length&&(D.current=0),C.length<=D.current)return;let a=C.slice(D.current);for(let{featureId:b,state:c,lifecycle:d}of(D.current=C.length,(0,V.resolveSseEventUpdates)(a)))(void 0!==c||void 0!==d)&&l(`feat-${b}`,{...void 0!==c&&{state:c},...void 0!==d&&{lifecycle:d}})},[C,l]),(0,b.useEffect)(()=>{let a=a=>{let{featureId:b}=a.detail;l(`feat-${b}`,{state:"running"})};return window.addEventListener("shep:feature-approved",a),()=>window.removeEventListener("shep:feature-approved",a)},[l]);let E=(0,b.useRef)(new Set),F=(0,b.useRef)(0);(0,b.useEffect)(()=>{if(F.current>C.length&&(F.current=0),C.length<=F.current)return;let a=C.slice(F.current);for(let b of(F.current=C.length,a)){if("Feature metadata updated"!==b.message||E.current.has(b.featureId))continue;E.current.add(b.featureId);let a=`feat-${b.featureId}`;Q(b.featureId).then(b=>{b&&l(a,{name:b.name,description:b.description})}).catch(()=>{})}},[C,l]),(0,b.useEffect)(()=>{Y.debug("polling enabled (3000ms interval)");let a=setInterval(async()=>{try{let{nodes:a,edges:b}=await R();k(a,b)}catch{Y.warn("poll fetch failed — will retry next interval")}},3e3);return()=>{Y.debug("polling disabled"),clearInterval(a)}},[k]);let G=(0,b.useCallback)(a=>{},[]),H=(0,b.useCallback)(a=>{},[]),J=(0,b.useCallback)((a,b,c)=>{let d=b?.featureId?`feat-${b.featureId}`:`feature-${Date.now()}-${Z++}`,e={name:b?.name??"New Feature",description:b?.description??"Describe what this feature does",featureId:b?.featureId??`#${d.slice(-4)}`,lifecycle:"requirements",state:b?.state??"running",progress:0,repositoryPath:b?.repositoryPath??"",branch:b?.branch??""};return m(d,e,"dependencyEdge"===c&&a?a:void 0),d},[m]),K=(0,b.useCallback)(a=>{let b=`feat-${a}`,c=w.current.filter(a=>a.id===b).map(a=>({nodeId:a.id,data:a.data}))[0];n(b),g.play(),d.toast.success("Feature deleted successfully"),f.push("/"),(0,M.deleteFeature)(a).then(a=>{a.error&&(c&&o(b,c),d.toast.error(a.error))}).catch(()=>{c&&o(b,c),d.toast.error("Failed to delete feature")})},[f,g,n,o]),N=(0,b.useCallback)(async a=>{let b=`repo-${a}`,c=new Set(x.current.filter(a=>a.source===b).map(a=>a.target)),e=t(b),f=new Map;for(let a of c){let b=w.current.find(b=>b.id===a);b&&f.set(a,{nodeId:a,data:b.data})}let h=()=>{for(let[a,c]of(e&&p(b,e),f))o(a,c)};for(let a of(q(b),c))n(a);try{let b=await P(a);if(!b.success){d.toast.error(b.error??"Failed to remove repository"),h();return}g.play(),d.toast.success("Repository removed")}catch{d.toast.error("Failed to remove repository"),h()}},[g,q,n,p,o,t]),U=(0,b.useCallback)(a=>{let b=L(w.current,x.current,{...I,direction:a});k(b.nodes,b.edges)},[k]);return{nodes:i,edges:j,onNodesChange:G,handleConnect:H,handleAddRepository:(0,b.useCallback)(a=>{let b=0===u(),c=`repo-temp-${++$}`,e=a.replace(/[\\/]+$/,"").split(/[\\/]/).pop()??a;return p(c,{name:e,repositoryPath:a,id:c}),O({path:a,name:e}).then(a=>{if(a.error){q(c),d.toast.error(a.error);return}let b=a.repository;r(c,`repo-${b.id}`,{name:b.name,repositoryPath:b.path,id:b.id}),h.play()}).catch(()=>{q(c),d.toast.error("Failed to add repository")}),{wasEmpty:b,repoPath:a}},[p,q,r,h,u]),handleLayout:U,handleDeleteFeature:K,handleDeleteRepository:N,createFeatureNode:J,getFeatureRepositoryPath:s,getRepositoryData:t,setCallbacks:v}}a.s(["useControlCenterState",()=>_],16533)},59949,a=>{"use strict";var b=a.i(10973),c=a.i(84945),d=a.i(96960),e=a.i(69845),f=a.i(67837),g=a.i(25700);let h=(0,g.default)("rotate-ccw",[["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"}]]);var i=a.i(18948);a.i(38702);var j=a.i(16223);a.i(54250);var k=a.i(1330),l=a.i(60047);let m=(0,g.default)("github",[["path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4",key:"tonef"}],["path",{d:"M9 18c-4.51 2-5-2-7-2",key:"9comsn"}]]);var n=a.i(50488),o=a.i(63698),p=a.i(3195),q=a.i(16605),r=a.i(50490),s=a.i(5698),t=a.i(85536);a.i(69029);var u=a.i(5623),v=a.i(45670),w=a.i(82934);a.i(49235);var x=a.i(85080),y=a.i(18662),z=a.i(21333),A=a.i(55628);function B({data:a}){let e=(0,z.useFeatureFlags)(),[g,h]=(0,d.useState)(!1),j=(0,A.useRepositoryActions)(a.repositoryPath?{repositoryPath:a.repositoryPath}:null),k=(0,y.useDeployAction)(a.repositoryPath?{targetId:a.repositoryPath,targetType:"repository",repositoryPath:a.repositoryPath}:null),B="Booting"===k.status||"Ready"===k.status;return(0,b.jsxs)("div",{className:(0,t.cn)("group relative",a.onDelete&&a.id&&"pl-10"),children:[a.showHandles?(0,b.jsx)(c.Handle,{type:"target",position:l.Position.Left,isConnectable:!1,className:"opacity-0!"}):null,a.onDelete&&a.id?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"absolute top-1/2 left-0 -translate-y-1/2 opacity-0 transition-opacity group-hover:opacity-100",children:(0,b.jsx)(w.TooltipProvider,{children:(0,b.jsxs)(w.Tooltip,{children:[(0,b.jsx)(w.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{"aria-label":"Remove repository","data-testid":"repository-node-delete-button",onClick:a=>{a.stopPropagation(),h(!0)},className:"bg-card text-muted-foreground hover:border-destructive hover:text-destructive flex h-7 w-7 cursor-pointer items-center justify-center rounded-full border shadow-sm transition-colors",children:(0,b.jsx)(q.Trash2,{className:"h-3.5 w-3.5"})})}),(0,b.jsx)(w.TooltipContent,{children:"Remove repository"})]})})}),(0,b.jsx)(v.Dialog,{open:g,onOpenChange:h,children:(0,b.jsxs)(v.DialogContent,{className:"max-w-xs",children:[(0,b.jsxs)(v.DialogHeader,{children:[(0,b.jsx)(v.DialogTitle,{children:"Remove repository?"}),(0,b.jsxs)(v.DialogDescription,{children:["This will remove ",(0,b.jsx)("strong",{children:a.name})," and all its features from your workspace. The repository files on disk won't be affected."]})]}),(0,b.jsxs)(v.DialogFooter,{className:"grid grid-cols-2 gap-2 sm:flex-none",children:[(0,b.jsx)(v.DialogClose,{asChild:!0,children:(0,b.jsx)(i.Button,{variant:"outline",children:"Cancel"})}),(0,b.jsx)(i.Button,{variant:"destructive",onClick:()=>{h(!1),a.onDelete?.(a.id)},children:"Remove"})]})]})})]}):null,(0,b.jsxs)("div",{role:"button",tabIndex:0,"data-testid":"repository-node-card","data-repo-name":a.name,onClick:b=>{b.stopPropagation(),a.onClick?.()},onKeyDown:b=>{("Enter"===b.key||" "===b.key)&&(b.preventDefault(),b.stopPropagation(),a.onClick?.())},className:"nodrag bg-card flex min-w-[18rem] cursor-default items-center gap-3 rounded-full border px-4 py-3 shadow-sm",children:[(0,b.jsx)(m,{className:"text-muted-foreground h-5 w-5 shrink-0"}),(0,b.jsx)("span",{"data-testid":"repository-node-name",className:"min-w-0 truncate text-sm font-medium",children:a.name}),(0,b.jsxs)("div",{className:(0,t.cn)("flex shrink-0 items-center gap-2",(a.repositoryPath??a.onAdd)&&"ml-auto"),onClick:a=>a.stopPropagation(),children:[a.repositoryPath?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(w.TooltipProvider,{children:(0,b.jsxs)(w.Tooltip,{children:[(0,b.jsx)(w.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"flex items-center",children:(0,b.jsx)(u.ActionButton,{label:"Open in IDE",onClick:j.openInIde,loading:j.ideLoading,error:!!j.ideError,icon:n.Code2,iconOnly:!0,variant:"ghost",size:"icon-xs"})})}),(0,b.jsx)(w.TooltipContent,{children:"Open in IDE"})]})}),(0,b.jsx)(w.TooltipProvider,{children:(0,b.jsxs)(w.Tooltip,{children:[(0,b.jsx)(w.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"flex items-center",children:(0,b.jsx)(u.ActionButton,{label:"Open in Shell",onClick:j.openInShell,loading:j.shellLoading,error:!!j.shellError,icon:o.Terminal,iconOnly:!0,variant:"ghost",size:"icon-xs"})})}),(0,b.jsx)(w.TooltipContent,{children:"Open in Shell"})]})}),(0,b.jsx)(w.TooltipProvider,{children:(0,b.jsxs)(w.Tooltip,{children:[(0,b.jsx)(w.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"flex items-center",children:(0,b.jsx)(u.ActionButton,{label:"Open Folder",onClick:j.openFolder,loading:j.folderLoading,error:!!j.folderError,icon:p.FolderOpen,iconOnly:!0,variant:"ghost",size:"icon-xs"})})}),(0,b.jsx)(w.TooltipContent,{children:"Open Folder"})]})}),e.envDeploy?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(w.TooltipProvider,{children:(0,b.jsxs)(w.Tooltip,{children:[(0,b.jsx)(w.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"flex items-center",children:(0,b.jsx)(u.ActionButton,{label:B?"Stop Dev Server":"Start Dev Server",onClick:B?k.stop:k.deploy,loading:k.deployLoading||k.stopLoading,error:!!k.deployError,icon:B?s.Square:r.Play,iconOnly:!0,variant:"ghost",size:"icon-xs"})})}),(0,b.jsx)(w.TooltipContent,{children:B?"Stop Dev Server":"Start Dev Server"})]})}),B?(0,b.jsx)(x.DeploymentStatusBadge,{status:k.status,url:k.url,targetId:a.repositoryPath}):null]}):null]}):null,a.onAdd?(0,b.jsx)(w.TooltipProvider,{children:(0,b.jsxs)(w.Tooltip,{children:[(0,b.jsx)(w.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{"aria-label":"Add feature","data-testid":"repository-node-add-button",onClick:b=>{b.stopPropagation(),a.onAdd?.()},className:"text-muted-foreground hover:bg-accent dark:hover:bg-accent/50 flex h-6 w-6 shrink-0 cursor-pointer items-center justify-center rounded-full transition-colors hover:text-blue-500",children:(0,b.jsx)(f.Plus,{className:"h-3.5 w-3.5"})})}),(0,b.jsx)(w.TooltipContent,{children:"Add feature"})]})}):null]})]}),a.onAdd||a.showHandles?(0,b.jsx)(c.Handle,{type:"source",position:l.Position.Right,isConnectable:!a.showHandles,className:"opacity-0!"}):null]})}function C(a){let[d]=(0,l.getBezierPath)({sourceX:a.sourceX,sourceY:a.sourceY,targetX:a.targetX,targetY:a.targetY,sourcePosition:a.sourcePosition,targetPosition:a.targetPosition});return(0,b.jsx)(c.BaseEdge,{id:a.id,path:d,style:{strokeDasharray:"5 5"}})}a.i(78454),a.i(2824),a.i(13126);let D={x:30,y:30,zoom:.85};function E({onResetViewport:a}){let{setViewport:e}=(0,c.useReactFlow)(),f=(0,d.useCallback)(()=>{e(a(),{duration:400})},[a,e]);return(0,b.jsx)(c.ControlButton,{onClick:f,title:"Reset view","aria-label":"Reset view",children:(0,b.jsx)(h,{style:{fill:"none"}})})}function F({nodes:a,edges:e,selectedFeatureId:g,defaultViewport:h,onNodesChange:l,onAddFeature:m,onConnect:n,onNodeClick:o,onPaneClick:p,onCanvasDrag:q,onMoveEnd:r,onResetViewport:s,toolbar:t,emptyState:u}){let v=(0,d.useMemo)(()=>({featureNode:k.FeatureNode,repositoryNode:B}),[]),w=(0,d.useMemo)(()=>({dependencyEdge:C}),[]),x=(0,d.useMemo)(()=>null==g?a:a.map(a=>"featureNode"===a.type&&a.data.featureId===g?{...a,selected:!0}:a),[a,g]);return 0===a.length?u?(0,b.jsx)("div",{"data-testid":"features-canvas-empty",className:"h-full w-full",children:u}):(0,b.jsx)("div",{"data-testid":"features-canvas-empty",children:(0,b.jsx)(j.EmptyState,{title:"No features yet",description:"Get started by creating your first feature.",action:(0,b.jsxs)(i.Button,{onClick:m,children:[(0,b.jsx)(f.Plus,{className:"mr-2 h-4 w-4"}),"New Feature"]})})}):(0,b.jsx)("div",{"data-testid":"features-canvas","data-no-drawer-close":!0,className:"pointer-events-auto h-full w-full",children:(0,b.jsxs)(c.ReactFlow,{nodes:x,edges:e,nodeTypes:v,edgeTypes:w,onConnect:n,onNodesChange:l,onNodeClick:o,onPaneClick:p,onMoveStart:q,onMoveEnd:r,defaultViewport:h??D,nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,proOptions:{hideAttribution:!0},children:[(0,b.jsx)(c.Background,{}),(0,b.jsx)(c.Controls,{showInteractive:!1,children:s?(0,b.jsx)(E,{onResetViewport:s}):null}),t]})})}var G=a.i(1356),H=a.i(19884),I=a.i(96213);let J="shep-canvas-viewport",K={x:30,y:30,zoom:.85},L=(0,g.default)("square-terminal",[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]]);var M=a.i(98410),N=a.i(72016),O=a.i(88064),P=a.i(1377);let Q=["cd ~/my-repo",'shep feat new "create modern, sleek dashboards"'];function R({onRepositorySelect:a,className:c}){let[e,g]=(0,d.useState)(!1),[h,i]=(0,d.useState)(!1);async function j(){if(!h){i(!0);try{let b=await (0,P.pickFolder)();b&&a?.(b)}finally{i(!1)}}}let k=(0,d.useCallback)(async()=>{await navigator.clipboard.writeText(Q.join("\n")),g(!0),setTimeout(()=>g(!1),2e3)},[]);return(0,b.jsxs)("div",{"data-testid":"control-center-empty-state",className:(0,t.cn)("relative h-full w-full",c),children:[(0,b.jsx)("div",{className:"absolute inset-0 [background-image:radial-gradient(circle,_var(--color-border)_1px,_transparent_1px)] [background-size:24px_24px]"}),(0,b.jsxs)("div",{className:"absolute top-8 left-8 z-10",children:[(0,b.jsx)("h1",{className:"text-4xl font-bold tracking-tight",children:"Features"}),(0,b.jsx)("p",{className:"text-muted-foreground text-3xl font-light",children:"Control Center"})]}),(0,b.jsx)("div",{className:"relative z-10 flex h-full items-center justify-center",children:(0,b.jsxs)("div",{className:"flex max-w-lg flex-col items-center gap-6",children:[(0,b.jsxs)("div",{className:"text-muted-foreground flex items-center gap-2",children:[(0,b.jsx)(m,{className:"h-4 w-4"}),(0,b.jsx)("span",{className:"text-xs font-semibold tracking-widest uppercase",children:"Repositories"})]}),(0,b.jsxs)("button",{type:"button","data-testid":"empty-state-add-repository",onClick:j,disabled:h,className:"border-muted-foreground/30 hover:border-primary hover:text-primary flex cursor-pointer items-center gap-3 rounded-lg border-2 border-dashed px-8 py-4 transition-colors disabled:cursor-wait disabled:opacity-60",children:[h?(0,b.jsx)(O.Loader2,{className:"h-5 w-5 animate-spin"}):(0,b.jsx)(f.Plus,{className:"h-5 w-5"}),(0,b.jsx)("span",{className:"text-sm font-medium",children:h?"Opening...":"Add Repository"})]}),(0,b.jsxs)("div",{className:"text-muted-foreground flex items-center gap-3",children:[(0,b.jsx)("div",{className:"bg-border h-px w-16"}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)(L,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{className:"text-xs font-semibold tracking-widest uppercase",children:"Or start from the command line"})]}),(0,b.jsx)("div",{className:"bg-border h-px w-16"})]}),(0,b.jsxs)("div",{"data-testid":"cli-code-block",className:"relative w-full rounded-lg bg-zinc-900 px-5 py-4 font-mono text-sm text-zinc-100",children:[(0,b.jsx)("button",{type:"button","data-testid":"cli-code-block-copy",onClick:k,className:"absolute top-3 right-3 cursor-pointer rounded p-1.5 text-zinc-400 transition-colors hover:bg-zinc-800 hover:text-zinc-200","aria-label":"Copy commands",children:e?(0,b.jsx)(N.Check,{className:"h-4 w-4"}):(0,b.jsx)(M.Copy,{className:"h-4 w-4"})}),(0,b.jsx)("div",{className:"space-y-1",children:Q.map(a=>(0,b.jsxs)("div",{children:[(0,b.jsx)("span",{className:"text-zinc-500 select-none",children:"$ "}),(0,b.jsx)("span",{children:a})]},a))})]}),(0,b.jsx)("p",{className:"text-muted-foreground text-sm",children:"Feature will appear on canvas once created"})]})})]})}var S=a.i(16533);let T={maxZoom:1,padding:.5,duration:500};function U({initialNodes:a,initialEdges:f}){let g,h,i,j=(0,e.useRouter)(),k=(0,e.usePathname)(),l=(g=(0,e.usePathname)().match(/^\/feature\/(.+)$/),g?.[1]??null),m=(0,H.useSoundAction)("click"),{guardedNavigate:n}=(0,I.useDrawerCloseGuard)(),{fitView:o}=(0,c.useReactFlow)(),p=(0,d.useRef)(null),{defaultViewport:q,onMoveEnd:r,resetViewport:s}=(h=(0,d.useRef)(function(){try{let a=localStorage.getItem(J);if(null==a)return K;let b=JSON.parse(a);return!(null==b||"object"!=typeof b||Array.isArray(b))&&"number"==typeof b.x&&"number"==typeof b.y&&"number"==typeof b.zoom&&Number.isFinite(b.x)&&Number.isFinite(b.y)&&Number.isFinite(b.zoom)&&b.zoom>0?b:K}catch{return K}}()).current,i=(0,d.useRef)(null),(0,d.useEffect)(()=>()=>{null!=i.current&&clearTimeout(i.current)},[]),{defaultViewport:h,onMoveEnd:(0,d.useCallback)(a=>{null!=i.current&&clearTimeout(i.current),i.current=setTimeout(()=>{try{localStorage.setItem(J,JSON.stringify(a))}catch{}},500)},[]),resetViewport:(0,d.useCallback)(()=>{try{localStorage.removeItem(J)}catch{}return K},[])}),{nodes:t,edges:u,onNodesChange:v,handleConnect:w,handleAddRepository:x,handleDeleteFeature:y,handleDeleteRepository:z,createFeatureNode:A,setCallbacks:B}=(0,S.useControlCenterState)(a,f),{setFeatures:C}=(0,G.useSidebarFeaturesContext)(),D=(0,d.useMemo)(()=>t.filter(a=>"featureNode"===a.type),[t]),E=(0,d.useMemo)(()=>D.map(a=>{let b=a.data;return`${b.featureId}:${b.state}:${b.name}`}).sort().join(","),[D]);(0,d.useEffect)(()=>{C(D.map(a=>{let b=a.data,c=(0,G.mapNodeStateToSidebarStatus)(b.state);return c?{featureId:b.featureId,name:b.name,status:c,...null!=b.startedAt&&{startedAt:b.startedAt},...null!=b.runtime&&{duration:b.runtime},...b.agentType&&{agentType:b.agentType},...b.modelId&&{modelId:b.modelId}}:null}).filter(Boolean))},[E,D,C]);let L=(0,d.useCallback)((a,b)=>{if("featureNode"===b.type){let a=b.data;"creating"!==a.state&&n(()=>{m.play(),j.push(`/feature/${a.featureId}`)})}},[j,m,n]),M=(0,d.useCallback)(()=>{m.play(),j.push("/create")},[j,m]),N=(0,d.useCallback)(a=>{m.play();let b=t.find(b=>b.id===a),c=b?.data?.repositoryPath;c?j.push(`/create?repo=${encodeURIComponent(c)}`):j.push("/create")},[t,j,m]),O=(0,d.useCallback)(a=>{let b=a.startsWith("feat-")?a.slice(5):a,c=u.find(b=>b.target===a),d=c?t.find(a=>a.id===c.source):null,e=d?.data?.repositoryPath;m.play();let f=new URLSearchParams;e&&f.set("repo",e),f.set("parent",b),j.push(`/create?${f.toString()}`)},[t,u,j,m]),P=(0,d.useCallback)(a=>{let b=t.find(b=>b.id===a);if(b?.type==="repositoryNode"){let a=b.data;a.id&&n(()=>j.push(`/repository/${a.id}`))}},[t,j,n]),Q=(0,d.useCallback)(()=>{"/"!==k&&n(()=>j.push("/"))},[j,k,n]);(0,d.useEffect)(()=>{let a=a=>{let{wasEmpty:b,repoPath:c}=x(a.detail.path);b&&setTimeout(()=>{o(T),p.current=setTimeout(()=>{n(()=>j.push(`/create?repo=${encodeURIComponent(c)}`))},600)},0)};return window.addEventListener("shep:add-repository",a),()=>{window.removeEventListener("shep:add-repository",a),null!=p.current&&clearTimeout(p.current)}},[x,o,n,j]),(0,d.useEffect)(()=>{let a=a=>{let b=a.detail;if(b.parentId)return void A(`feat-${b.parentId}`,{state:"creating",featureId:b.featureId,name:b.name,description:b.description,repositoryPath:b.repositoryPath},"dependencyEdge");let c=t.find(a=>"repositoryNode"===a.type&&a.data.repositoryPath===b.repositoryPath);A(c?.id??null,{state:"running",featureId:b.featureId,name:b.name,description:b.description,repositoryPath:b.repositoryPath})};return window.addEventListener("shep:feature-created",a),()=>window.removeEventListener("shep:feature-created",a)},[t,A]),(0,d.useEffect)(()=>{B({onNodeAction:O,onFeatureDelete:y,onRepositoryAdd:N,onRepositoryClick:P,onRepositoryDelete:z})},[B,O,y,N,P,z]);let U=(0,d.useCallback)((a,b)=>{r(b)},[r]);return t.some(a=>"repositoryNode"===a.type)?(0,b.jsx)(F,{nodes:t,edges:u,selectedFeatureId:l,defaultViewport:q,onNodesChange:v,onConnect:w,onAddFeature:M,onNodeClick:L,onPaneClick:Q,onMoveEnd:U,onResetViewport:s,emptyState:(0,b.jsx)(R,{onRepositorySelect:x})}):(0,b.jsx)(R,{onRepositorySelect:x})}function V({initialNodes:a,initialEdges:d,drawer:e}){return(0,b.jsxs)("div",{"data-testid":"control-center",className:"h-full w-full",children:[(0,b.jsx)(c.ReactFlowProvider,{children:(0,b.jsx)(U,{initialNodes:a,initialEdges:d})}),(0,b.jsx)("div",{children:e},"drawer")]})}a.s(["ControlCenter",()=>V],59949)}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web_components_features_control-center_7ac3562e._.js.map