bluekiwi 1.2.4 → 2.0.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 (624) hide show
  1. package/README.md +5 -0
  2. package/dist/assets/app-runtime/.next/BUILD_ID +1 -1
  3. package/dist/assets/app-runtime/.next/app-path-routes-manifest.json +26 -6
  4. package/dist/assets/app-runtime/.next/build-manifest.json +2 -2
  5. package/dist/assets/app-runtime/.next/prerender-manifest.json +3 -3
  6. package/dist/assets/app-runtime/.next/routes-manifest.json +153 -0
  7. package/dist/assets/app-runtime/.next/server/app/(app)/credentials/page.js +2 -8
  8. package/dist/assets/app-runtime/.next/server/app/(app)/credentials/page.js.nft.json +1 -1
  9. package/dist/assets/app-runtime/.next/server/app/(app)/credentials/page_client-reference-manifest.js +1 -1
  10. package/dist/assets/app-runtime/.next/server/app/(app)/design-systems/[id]/page.js +2 -0
  11. package/dist/assets/app-runtime/.next/server/app/(app)/design-systems/[id]/page.js.nft.json +1 -0
  12. package/dist/assets/app-runtime/.next/server/app/(app)/design-systems/[id]/page_client-reference-manifest.js +1 -0
  13. package/dist/assets/app-runtime/.next/server/app/(app)/design-systems/page.js +2 -0
  14. package/dist/assets/app-runtime/.next/server/app/(app)/design-systems/page.js.nft.json +1 -0
  15. package/dist/assets/app-runtime/.next/server/app/(app)/design-systems/page_client-reference-manifest.js +1 -0
  16. package/dist/assets/app-runtime/.next/server/app/(app)/docs/page.js +2 -2
  17. package/dist/assets/app-runtime/.next/server/app/(app)/docs/page.js.nft.json +1 -1
  18. package/dist/assets/app-runtime/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -1
  19. package/dist/assets/app-runtime/.next/server/app/(app)/instructions/page.js +3 -3
  20. package/dist/assets/app-runtime/.next/server/app/(app)/instructions/page.js.nft.json +1 -1
  21. package/dist/assets/app-runtime/.next/server/app/(app)/instructions/page_client-reference-manifest.js +1 -1
  22. package/dist/assets/app-runtime/.next/server/app/(app)/page.js +2 -2
  23. package/dist/assets/app-runtime/.next/server/app/(app)/page.js.nft.json +1 -1
  24. package/dist/assets/app-runtime/.next/server/app/(app)/page_client-reference-manifest.js +1 -1
  25. package/dist/assets/app-runtime/.next/server/app/(app)/settings/groups/page.js +2 -2
  26. package/dist/assets/app-runtime/.next/server/app/(app)/settings/groups/page.js.nft.json +1 -1
  27. package/dist/assets/app-runtime/.next/server/app/(app)/settings/groups/page_client-reference-manifest.js +1 -1
  28. package/dist/assets/app-runtime/.next/server/app/(app)/settings/page.js +8 -2
  29. package/dist/assets/app-runtime/.next/server/app/(app)/settings/page.js.nft.json +1 -1
  30. package/dist/assets/app-runtime/.next/server/app/(app)/settings/page_client-reference-manifest.js +1 -1
  31. package/dist/assets/app-runtime/.next/server/app/(app)/tasks/[id]/page.js +3 -3
  32. package/dist/assets/app-runtime/.next/server/app/(app)/tasks/[id]/page.js.nft.json +1 -1
  33. package/dist/assets/app-runtime/.next/server/app/(app)/tasks/[id]/page_client-reference-manifest.js +1 -1
  34. package/dist/assets/app-runtime/.next/server/app/(app)/tasks/page.js +2 -8
  35. package/dist/assets/app-runtime/.next/server/app/(app)/tasks/page.js.nft.json +1 -1
  36. package/dist/assets/app-runtime/.next/server/app/(app)/tasks/page_client-reference-manifest.js +1 -1
  37. package/dist/assets/app-runtime/.next/server/app/(app)/tutorial/page.js +2 -2
  38. package/dist/assets/app-runtime/.next/server/app/(app)/tutorial/page.js.nft.json +1 -1
  39. package/dist/assets/app-runtime/.next/server/app/(app)/tutorial/page_client-reference-manifest.js +1 -1
  40. package/dist/assets/app-runtime/.next/server/app/(app)/workflows/[id]/edit/page.js +2 -2
  41. package/dist/assets/app-runtime/.next/server/app/(app)/workflows/[id]/edit/page.js.nft.json +1 -1
  42. package/dist/assets/app-runtime/.next/server/app/(app)/workflows/[id]/edit/page_client-reference-manifest.js +1 -1
  43. package/dist/assets/app-runtime/.next/server/app/(app)/workflows/[id]/page.js +2 -2
  44. package/dist/assets/app-runtime/.next/server/app/(app)/workflows/[id]/page.js.nft.json +1 -1
  45. package/dist/assets/app-runtime/.next/server/app/(app)/workflows/[id]/page_client-reference-manifest.js +1 -1
  46. package/dist/assets/app-runtime/.next/server/app/(app)/workflows/new/page.js +2 -2
  47. package/dist/assets/app-runtime/.next/server/app/(app)/workflows/new/page.js.nft.json +1 -1
  48. package/dist/assets/app-runtime/.next/server/app/(app)/workflows/new/page_client-reference-manifest.js +1 -1
  49. package/dist/assets/app-runtime/.next/server/app/(app)/workflows/page.js +2 -2
  50. package/dist/assets/app-runtime/.next/server/app/(app)/workflows/page.js.nft.json +1 -1
  51. package/dist/assets/app-runtime/.next/server/app/(app)/workflows/page_client-reference-manifest.js +1 -1
  52. package/dist/assets/app-runtime/.next/server/app/(auth)/change-password/page.js +2 -2
  53. package/dist/assets/app-runtime/.next/server/app/(auth)/change-password/page_client-reference-manifest.js +1 -1
  54. package/dist/assets/app-runtime/.next/server/app/(auth)/invite/[token]/page.js +2 -2
  55. package/dist/assets/app-runtime/.next/server/app/(auth)/invite/[token]/page_client-reference-manifest.js +1 -1
  56. package/dist/assets/app-runtime/.next/server/app/(auth)/login/page.js +2 -2
  57. package/dist/assets/app-runtime/.next/server/app/(auth)/login/page_client-reference-manifest.js +1 -1
  58. package/dist/assets/app-runtime/.next/server/app/(auth)/setup/page.js +2 -2
  59. package/dist/assets/app-runtime/.next/server/app/(auth)/setup/page_client-reference-manifest.js +1 -1
  60. package/dist/assets/app-runtime/.next/server/app/_global-error/page.js +3 -3
  61. package/dist/assets/app-runtime/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  62. package/dist/assets/app-runtime/.next/server/app/_global-error.html +1 -1
  63. package/dist/assets/app-runtime/.next/server/app/_global-error.rsc +1 -1
  64. package/dist/assets/app-runtime/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  65. package/dist/assets/app-runtime/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  66. package/dist/assets/app-runtime/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  67. package/dist/assets/app-runtime/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  68. package/dist/assets/app-runtime/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  69. package/dist/assets/app-runtime/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  70. package/dist/assets/app-runtime/.next/server/app/_not-found/page.js +2 -2
  71. package/dist/assets/app-runtime/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  72. package/dist/assets/app-runtime/.next/server/app/_not-found.html +1 -1
  73. package/dist/assets/app-runtime/.next/server/app/_not-found.rsc +4 -4
  74. package/dist/assets/app-runtime/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  75. package/dist/assets/app-runtime/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  76. package/dist/assets/app-runtime/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  77. package/dist/assets/app-runtime/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  78. package/dist/assets/app-runtime/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  79. package/dist/assets/app-runtime/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  80. package/dist/assets/app-runtime/.next/server/app/api/apikeys/[id]/route.js +1 -1
  81. package/dist/assets/app-runtime/.next/server/app/api/apikeys/[id]/route.js.nft.json +1 -1
  82. package/dist/assets/app-runtime/.next/server/app/api/apikeys/route.js +2 -2
  83. package/dist/assets/app-runtime/.next/server/app/api/apikeys/route.js.nft.json +1 -1
  84. package/dist/assets/app-runtime/.next/server/app/api/auth/change-password/route.js +1 -1
  85. package/dist/assets/app-runtime/.next/server/app/api/auth/change-password/route.js.nft.json +1 -1
  86. package/dist/assets/app-runtime/.next/server/app/api/auth/dashboard/route.js +2 -2
  87. package/dist/assets/app-runtime/.next/server/app/api/auth/dashboard/route.js.nft.json +1 -1
  88. package/dist/assets/app-runtime/.next/server/app/api/auth/login/route.js +1 -1
  89. package/dist/assets/app-runtime/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  90. package/dist/assets/app-runtime/.next/server/app/api/auth/logout/route.js +1 -1
  91. package/dist/assets/app-runtime/.next/server/app/api/auth/me/groups/route.js +2 -2
  92. package/dist/assets/app-runtime/.next/server/app/api/auth/me/groups/route.js.nft.json +1 -1
  93. package/dist/assets/app-runtime/.next/server/app/api/auth/me/route.js +1 -1
  94. package/dist/assets/app-runtime/.next/server/app/api/auth/setup/route.js +4 -3
  95. package/dist/assets/app-runtime/.next/server/app/api/auth/setup/route.js.nft.json +1 -1
  96. package/dist/assets/app-runtime/.next/server/app/api/credentials/[id]/reveal/route.js +1 -1
  97. package/dist/assets/app-runtime/.next/server/app/api/credentials/[id]/reveal/route.js.nft.json +1 -1
  98. package/dist/assets/app-runtime/.next/server/app/api/credentials/[id]/route.js +2 -2
  99. package/dist/assets/app-runtime/.next/server/app/api/credentials/[id]/route.js.nft.json +1 -1
  100. package/dist/assets/app-runtime/.next/server/app/api/credentials/[id]/shares/[groupId]/route.js +1 -1
  101. package/dist/assets/app-runtime/.next/server/app/api/credentials/[id]/shares/[groupId]/route.js.nft.json +1 -1
  102. package/dist/assets/app-runtime/.next/server/app/api/credentials/[id]/shares/route.js +2 -2
  103. package/dist/assets/app-runtime/.next/server/app/api/credentials/[id]/shares/route.js.nft.json +1 -1
  104. package/dist/assets/app-runtime/.next/server/app/api/credentials/[id]/transfer/route.js +2 -2
  105. package/dist/assets/app-runtime/.next/server/app/api/credentials/[id]/transfer/route.js.nft.json +1 -1
  106. package/dist/assets/app-runtime/.next/server/app/api/credentials/route.js +2 -2
  107. package/dist/assets/app-runtime/.next/server/app/api/credentials/route.js.nft.json +1 -1
  108. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/activate/route.js +1 -0
  109. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/activate/route.js.nft.json +1 -0
  110. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/activate/route_client-reference-manifest.js +1 -0
  111. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/assets/[assetId]/route.js +1 -0
  112. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/assets/[assetId]/route.js.nft.json +1 -0
  113. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/assets/[assetId]/route_client-reference-manifest.js +1 -0
  114. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/assets/route.js +1 -0
  115. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/assets/route.js.nft.json +1 -0
  116. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/assets/route_client-reference-manifest.js +1 -0
  117. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/components/[name]/route.js +1 -0
  118. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/components/[name]/route.js.nft.json +1 -0
  119. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/components/[name]/route_client-reference-manifest.js +1 -0
  120. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/events/route.js +1 -0
  121. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/events/route.js.nft.json +1 -0
  122. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/events/route_client-reference-manifest.js +1 -0
  123. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/export/route.js +1 -0
  124. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/export/route.js.nft.json +1 -0
  125. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/export/route_client-reference-manifest.js +1 -0
  126. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/lint/route.js +1 -0
  127. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/lint/route.js.nft.json +1 -0
  128. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/lint/route_client-reference-manifest.js +1 -0
  129. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/preview/route.js +1 -0
  130. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/preview/route.js.nft.json +1 -0
  131. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/preview/route_client-reference-manifest.js +1 -0
  132. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/route.js +1 -0
  133. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/route.js.nft.json +1 -0
  134. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/route_client-reference-manifest.js +1 -0
  135. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/sections/[section]/[key]/route.js +1 -0
  136. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/sections/[section]/[key]/route.js.nft.json +1 -0
  137. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/sections/[section]/[key]/route_client-reference-manifest.js +1 -0
  138. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/sections/[section]/route.js +1 -0
  139. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/sections/[section]/route.js.nft.json +1 -0
  140. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/sections/[section]/route_client-reference-manifest.js +1 -0
  141. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/versions/compare/route.js +1 -0
  142. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/versions/compare/route.js.nft.json +1 -0
  143. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/versions/compare/route_client-reference-manifest.js +1 -0
  144. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/versions/route.js +1 -0
  145. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/versions/route.js.nft.json +1 -0
  146. package/dist/assets/app-runtime/.next/server/app/api/design-systems/[id]/versions/route_client-reference-manifest.js +1 -0
  147. package/dist/assets/app-runtime/.next/server/app/api/design-systems/active/route.js +4 -0
  148. package/dist/assets/app-runtime/.next/server/app/api/design-systems/active/route.js.nft.json +1 -0
  149. package/dist/assets/app-runtime/.next/server/app/api/design-systems/active/route_client-reference-manifest.js +1 -0
  150. package/dist/assets/app-runtime/.next/server/app/api/design-systems/import/analyze/route.js +1 -0
  151. package/dist/assets/app-runtime/.next/server/app/api/design-systems/import/analyze/route.js.nft.json +1 -0
  152. package/dist/assets/app-runtime/.next/server/app/api/design-systems/import/analyze/route_client-reference-manifest.js +1 -0
  153. package/dist/assets/app-runtime/.next/server/app/api/design-systems/import/route.js +1 -0
  154. package/dist/assets/app-runtime/.next/server/app/api/design-systems/import/route.js.nft.json +1 -0
  155. package/dist/assets/app-runtime/.next/server/app/api/design-systems/import/route_client-reference-manifest.js +1 -0
  156. package/dist/assets/app-runtime/.next/server/app/api/design-systems/route.js +1 -0
  157. package/dist/assets/app-runtime/.next/server/app/api/design-systems/route.js.nft.json +1 -0
  158. package/dist/assets/app-runtime/.next/server/app/api/design-systems/route_client-reference-manifest.js +1 -0
  159. package/dist/assets/app-runtime/.next/server/app/api/design-systems/seed/route.js +2 -0
  160. package/dist/assets/app-runtime/.next/server/app/api/design-systems/seed/route.js.nft.json +1 -0
  161. package/dist/assets/app-runtime/.next/server/app/api/design-systems/seed/route_client-reference-manifest.js +1 -0
  162. package/dist/assets/app-runtime/.next/server/app/api/docs/route.js +1 -1
  163. package/dist/assets/app-runtime/.next/server/app/api/folders/[id]/route.js +2 -2
  164. package/dist/assets/app-runtime/.next/server/app/api/folders/[id]/route.js.nft.json +1 -1
  165. package/dist/assets/app-runtime/.next/server/app/api/folders/[id]/shares/[groupId]/route.js +1 -1
  166. package/dist/assets/app-runtime/.next/server/app/api/folders/[id]/shares/[groupId]/route.js.nft.json +1 -1
  167. package/dist/assets/app-runtime/.next/server/app/api/folders/[id]/shares/route.js +1 -1
  168. package/dist/assets/app-runtime/.next/server/app/api/folders/[id]/shares/route.js.nft.json +1 -1
  169. package/dist/assets/app-runtime/.next/server/app/api/folders/[id]/transfer/route.js +1 -1
  170. package/dist/assets/app-runtime/.next/server/app/api/folders/[id]/transfer/route.js.nft.json +1 -1
  171. package/dist/assets/app-runtime/.next/server/app/api/folders/[id]/visibility/route.js +1 -1
  172. package/dist/assets/app-runtime/.next/server/app/api/folders/[id]/visibility/route.js.nft.json +1 -1
  173. package/dist/assets/app-runtime/.next/server/app/api/folders/route.js +2 -2
  174. package/dist/assets/app-runtime/.next/server/app/api/folders/route.js.nft.json +1 -1
  175. package/dist/assets/app-runtime/.next/server/app/api/guides/[slug]/route.js +1 -1
  176. package/dist/assets/app-runtime/.next/server/app/api/guides/[slug]/workflow/route.js +1 -1
  177. package/dist/assets/app-runtime/.next/server/app/api/guides/route.js +1 -1
  178. package/dist/assets/app-runtime/.next/server/app/api/instructions/[id]/route.js +2 -2
  179. package/dist/assets/app-runtime/.next/server/app/api/instructions/[id]/route.js.nft.json +1 -1
  180. package/dist/assets/app-runtime/.next/server/app/api/instructions/[id]/transfer/route.js +2 -2
  181. package/dist/assets/app-runtime/.next/server/app/api/instructions/[id]/transfer/route.js.nft.json +1 -1
  182. package/dist/assets/app-runtime/.next/server/app/api/instructions/[id]/visibility/route.js +1 -1
  183. package/dist/assets/app-runtime/.next/server/app/api/instructions/[id]/visibility/route.js.nft.json +1 -1
  184. package/dist/assets/app-runtime/.next/server/app/api/instructions/route.js +1 -1
  185. package/dist/assets/app-runtime/.next/server/app/api/instructions/route.js.nft.json +1 -1
  186. package/dist/assets/app-runtime/.next/server/app/api/invites/[id]/route.js +1 -1
  187. package/dist/assets/app-runtime/.next/server/app/api/invites/[id]/route.js.nft.json +1 -1
  188. package/dist/assets/app-runtime/.next/server/app/api/invites/accept/[token]/route.js +7 -6
  189. package/dist/assets/app-runtime/.next/server/app/api/invites/accept/[token]/route.js.nft.json +1 -1
  190. package/dist/assets/app-runtime/.next/server/app/api/invites/route.js +2 -2
  191. package/dist/assets/app-runtime/.next/server/app/api/invites/route.js.nft.json +1 -1
  192. package/dist/assets/app-runtime/.next/server/app/api/report/route.js +3 -3
  193. package/dist/assets/app-runtime/.next/server/app/api/report/route.js.nft.json +1 -1
  194. package/dist/assets/app-runtime/.next/server/app/api/settings/cleanup-visual-html/route.js +2 -2
  195. package/dist/assets/app-runtime/.next/server/app/api/settings/cleanup-visual-html/route.js.nft.json +1 -1
  196. package/dist/assets/app-runtime/.next/server/app/api/settings/email/route.js +2 -2
  197. package/dist/assets/app-runtime/.next/server/app/api/settings/email/route.js.nft.json +1 -1
  198. package/dist/assets/app-runtime/.next/server/app/api/settings/groups/[id]/members/route.js +2 -2
  199. package/dist/assets/app-runtime/.next/server/app/api/settings/groups/[id]/members/route.js.nft.json +1 -1
  200. package/dist/assets/app-runtime/.next/server/app/api/settings/groups/[id]/route.js +1 -1
  201. package/dist/assets/app-runtime/.next/server/app/api/settings/groups/[id]/route.js.nft.json +1 -1
  202. package/dist/assets/app-runtime/.next/server/app/api/settings/groups/route.js +1 -1
  203. package/dist/assets/app-runtime/.next/server/app/api/settings/groups/route.js.nft.json +1 -1
  204. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/advance/route.js +2 -2
  205. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/advance/route.js.nft.json +1 -1
  206. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/approve/route.js +1 -1
  207. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/approve/route.js.nft.json +1 -1
  208. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/cancel/route.js +2 -2
  209. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/cancel/route.js.nft.json +1 -1
  210. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/comments/route.js +1 -1
  211. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
  212. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/complete/route.js +1 -1
  213. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/complete/route.js.nft.json +1 -1
  214. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/execute/route.js +2 -2
  215. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/execute/route.js.nft.json +1 -1
  216. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/feedback/route.js +1 -1
  217. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/feedback/route.js.nft.json +1 -1
  218. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/findings/route.js +2 -2
  219. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/findings/route.js.nft.json +1 -1
  220. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/heartbeat/route.js +3 -3
  221. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/heartbeat/route.js.nft.json +1 -1
  222. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/logs/route.js +2 -2
  223. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/logs/route.js.nft.json +1 -1
  224. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/request-approval/route.js +1 -1
  225. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/request-approval/route.js.nft.json +1 -1
  226. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/respond/route.js +1 -1
  227. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/respond/route.js.nft.json +1 -1
  228. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/rewind/route.js +1 -1
  229. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/rewind/route.js.nft.json +1 -1
  230. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/route.js +2 -2
  231. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  232. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/visual/route.js +1 -1
  233. package/dist/assets/app-runtime/.next/server/app/api/tasks/[id]/visual/route.js.nft.json +1 -1
  234. package/dist/assets/app-runtime/.next/server/app/api/tasks/route.js +2 -2
  235. package/dist/assets/app-runtime/.next/server/app/api/tasks/route.js.nft.json +1 -1
  236. package/dist/assets/app-runtime/.next/server/app/api/tasks/start/route.js +1 -1
  237. package/dist/assets/app-runtime/.next/server/app/api/tasks/start/route.js.nft.json +1 -1
  238. package/dist/assets/app-runtime/.next/server/app/api/tasks/timeout-stale/route.js +1 -1
  239. package/dist/assets/app-runtime/.next/server/app/api/tasks/timeout-stale/route.js.nft.json +1 -1
  240. package/dist/assets/app-runtime/.next/server/app/api/users/[id]/route.js +1 -1
  241. package/dist/assets/app-runtime/.next/server/app/api/users/[id]/route.js.nft.json +1 -1
  242. package/dist/assets/app-runtime/.next/server/app/api/users/route.js +1 -1
  243. package/dist/assets/app-runtime/.next/server/app/api/users/route.js.nft.json +1 -1
  244. package/dist/assets/app-runtime/.next/server/app/api/version/route.js +1 -1
  245. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/activate/route.js +3 -3
  246. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/activate/route.js.nft.json +1 -1
  247. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/deactivate/route.js +1 -1
  248. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/deactivate/route.js.nft.json +1 -1
  249. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/export/route.js +1 -1
  250. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/export/route.js.nft.json +1 -1
  251. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/node-items/[nodeId]/attachments/[attachId]/route.js +2 -2
  252. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/node-items/[nodeId]/attachments/[attachId]/route.js.nft.json +1 -1
  253. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/node-items/[nodeId]/attachments/route.js +2 -2
  254. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/node-items/[nodeId]/attachments/route.js.nft.json +1 -1
  255. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/node-items/[nodeId]/route.js +1 -1
  256. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/node-items/[nodeId]/route.js.nft.json +1 -1
  257. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/nodes/[node_id]/attachments/[attachId]/route.js +2 -2
  258. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/nodes/[node_id]/attachments/[attachId]/route.js.nft.json +1 -1
  259. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/nodes/[node_id]/attachments/route.js +1 -1
  260. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/nodes/[node_id]/attachments/route.js.nft.json +1 -1
  261. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/nodes/[node_id]/route.js +1 -1
  262. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/nodes/[node_id]/route.js.nft.json +1 -1
  263. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/nodes/route.js +2 -2
  264. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/nodes/route.js.nft.json +1 -1
  265. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/route.js +3 -3
  266. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/route.js.nft.json +1 -1
  267. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/shares/[groupId]/route.js +1 -1
  268. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/shares/[groupId]/route.js.nft.json +1 -1
  269. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/shares/route.js +2 -2
  270. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/shares/route.js.nft.json +1 -1
  271. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/transfer/route.js +3 -3
  272. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/transfer/route.js.nft.json +1 -1
  273. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/versions/route.js +1 -1
  274. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/versions/route.js.nft.json +1 -1
  275. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/visibility/route.js +1 -1
  276. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/visibility/route.js.nft.json +1 -1
  277. package/dist/assets/app-runtime/.next/server/app/api/workflows/import/analyze/route.js +1 -1
  278. package/dist/assets/app-runtime/.next/server/app/api/workflows/import/analyze/route.js.nft.json +1 -1
  279. package/dist/assets/app-runtime/.next/server/app/api/workflows/import/route.js +1 -1
  280. package/dist/assets/app-runtime/.next/server/app/api/workflows/import/route.js.nft.json +1 -1
  281. package/dist/assets/app-runtime/.next/server/app/api/workflows/route.js +2 -2
  282. package/dist/assets/app-runtime/.next/server/app/api/workflows/route.js.nft.json +1 -1
  283. package/dist/assets/app-runtime/.next/server/app/change-password.html +1 -1
  284. package/dist/assets/app-runtime/.next/server/app/change-password.rsc +5 -5
  285. package/dist/assets/app-runtime/.next/server/app/change-password.segments/!KGF1dGgp/change-password/__PAGE__.segment.rsc +2 -2
  286. package/dist/assets/app-runtime/.next/server/app/change-password.segments/!KGF1dGgp/change-password.segment.rsc +1 -1
  287. package/dist/assets/app-runtime/.next/server/app/change-password.segments/!KGF1dGgp.segment.rsc +1 -1
  288. package/dist/assets/app-runtime/.next/server/app/change-password.segments/_full.segment.rsc +5 -5
  289. package/dist/assets/app-runtime/.next/server/app/change-password.segments/_head.segment.rsc +1 -1
  290. package/dist/assets/app-runtime/.next/server/app/change-password.segments/_index.segment.rsc +4 -4
  291. package/dist/assets/app-runtime/.next/server/app/change-password.segments/_tree.segment.rsc +2 -2
  292. package/dist/assets/app-runtime/.next/server/app/login.html +1 -1
  293. package/dist/assets/app-runtime/.next/server/app/login.rsc +5 -5
  294. package/dist/assets/app-runtime/.next/server/app/login.segments/!KGF1dGgp/login/__PAGE__.segment.rsc +2 -2
  295. package/dist/assets/app-runtime/.next/server/app/login.segments/!KGF1dGgp/login.segment.rsc +1 -1
  296. package/dist/assets/app-runtime/.next/server/app/login.segments/!KGF1dGgp.segment.rsc +1 -1
  297. package/dist/assets/app-runtime/.next/server/app/login.segments/_full.segment.rsc +5 -5
  298. package/dist/assets/app-runtime/.next/server/app/login.segments/_head.segment.rsc +1 -1
  299. package/dist/assets/app-runtime/.next/server/app/login.segments/_index.segment.rsc +4 -4
  300. package/dist/assets/app-runtime/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  301. package/dist/assets/app-runtime/.next/server/app/setup.html +1 -1
  302. package/dist/assets/app-runtime/.next/server/app/setup.rsc +5 -5
  303. package/dist/assets/app-runtime/.next/server/app/setup.segments/!KGF1dGgp/setup/__PAGE__.segment.rsc +2 -2
  304. package/dist/assets/app-runtime/.next/server/app/setup.segments/!KGF1dGgp/setup.segment.rsc +1 -1
  305. package/dist/assets/app-runtime/.next/server/app/setup.segments/!KGF1dGgp.segment.rsc +1 -1
  306. package/dist/assets/app-runtime/.next/server/app/setup.segments/_full.segment.rsc +5 -5
  307. package/dist/assets/app-runtime/.next/server/app/setup.segments/_head.segment.rsc +1 -1
  308. package/dist/assets/app-runtime/.next/server/app/setup.segments/_index.segment.rsc +4 -4
  309. package/dist/assets/app-runtime/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  310. package/dist/assets/app-runtime/.next/server/app-paths-manifest.json +26 -6
  311. package/dist/assets/app-runtime/.next/server/chunks/1371.js +5 -0
  312. package/dist/assets/app-runtime/.next/server/chunks/4024.js +1 -1
  313. package/dist/assets/app-runtime/.next/server/chunks/4380.js +7 -0
  314. package/dist/assets/app-runtime/.next/server/chunks/5172.js +358 -0
  315. package/dist/assets/app-runtime/.next/server/chunks/5589.js +1 -1
  316. package/dist/assets/app-runtime/.next/server/chunks/6120.js +1 -0
  317. package/dist/assets/app-runtime/.next/server/chunks/7945.js +31 -4
  318. package/dist/assets/app-runtime/.next/server/chunks/8355.js +1 -0
  319. package/dist/assets/app-runtime/.next/server/chunks/859.js +1 -1
  320. package/dist/assets/app-runtime/.next/server/chunks/9100.js +1 -0
  321. package/dist/assets/app-runtime/.next/server/chunks/9439.js +1 -0
  322. package/dist/assets/app-runtime/.next/server/middleware-build-manifest.js +1 -1
  323. package/dist/assets/app-runtime/.next/server/pages/404.html +1 -1
  324. package/dist/assets/app-runtime/.next/server/pages/500.html +1 -1
  325. package/dist/assets/app-runtime/.next/server/server-reference-manifest.json +1 -1
  326. package/dist/assets/app-runtime/.next/static/chunks/173-a97262e334770725.js +1 -0
  327. package/dist/assets/app-runtime/.next/static/chunks/2360-975f0c14308c88bc.js +1 -0
  328. package/dist/assets/app-runtime/.next/static/chunks/{2293-e75169fba3ab0f64.js → 2989-cc47541f81b2181f.js} +2 -2
  329. package/dist/assets/app-runtime/.next/static/chunks/3207-7a74f5b8fc63cfe9.js +1 -0
  330. package/dist/assets/app-runtime/.next/static/chunks/{5751-1d0ed4353025d40c.js → 3443-b4daf428b3a03717.js} +1 -1
  331. package/dist/assets/app-runtime/.next/static/chunks/3671-3ec1b01363e1d1c5.js +1 -0
  332. package/dist/assets/app-runtime/.next/static/chunks/3689-1ffc19b35e5d1101.js +1 -0
  333. package/dist/assets/app-runtime/.next/static/chunks/6126-cca19a7b816db517.js +7 -0
  334. package/dist/assets/app-runtime/.next/static/chunks/{7262-cdb2767600e6e41e.js → 6609-078a8cdc853f87c6.js} +1 -1
  335. package/dist/assets/app-runtime/.next/static/chunks/6644-de12bb5dcee357e8.js +1 -0
  336. package/dist/assets/app-runtime/.next/static/chunks/7050-a4f09c854891a3cc.js +1 -0
  337. package/dist/assets/app-runtime/.next/static/chunks/7462-99343ed0daab6a49.js +1 -0
  338. package/dist/assets/app-runtime/.next/static/chunks/7533-f1110b90a820e95c.js +1 -0
  339. package/dist/assets/app-runtime/.next/static/chunks/{6095-1b7d63b0bf80dd32.js → 8368-1830a099684acf83.js} +2 -2
  340. package/dist/assets/app-runtime/.next/static/chunks/9243-42247f33b2db5dd3.js +1 -0
  341. package/dist/assets/app-runtime/.next/static/chunks/982-8a9df4d5d73197d3.js +7 -0
  342. package/dist/assets/app-runtime/.next/static/chunks/9927-71af96b4f536c6a4.js +7 -0
  343. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/credentials/page-6b45e41f48f43b7d.js +7 -0
  344. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/design-systems/[id]/page-e851d0a82242bcbd.js +1 -0
  345. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/design-systems/page-b9d457ae27951d55.js +1 -0
  346. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/instructions/{page-dd25654a8191a638.js → page-f46b64210da72126.js} +2 -2
  347. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/layout-7a2f7065a96b50f2.js +1 -0
  348. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/settings/groups/page-de795ba135b7f780.js +1 -0
  349. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/settings/layout-51cda6d882abcfca.js +1 -0
  350. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/settings/{page-1709c8cd7e4b68a6.js → page-4408a43823696ddc.js} +1 -1
  351. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/tasks/[id]/{page-e88075977b43a9d5.js → page-62b8c7b35f187f33.js} +1 -1
  352. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/tasks/layout-51cda6d882abcfca.js +1 -0
  353. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/tasks/{page-82a1601abeaf3423.js → page-f5b823c754fbc4c3.js} +1 -1
  354. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/tutorial/page-8255141f3fabe520.js +34 -0
  355. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/workflows/[id]/edit/{page-b3775f3aecb19718.js → page-2e62beb288e70840.js} +1 -1
  356. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/workflows/[id]/page-ad179f55fb2d4a7f.js +1 -0
  357. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/workflows/layout-51cda6d882abcfca.js +1 -0
  358. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/workflows/new/{page-abd414c9c1602c90.js → page-6ca1cc2ff5b3e912.js} +1 -1
  359. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/workflows/page-33a541a152b061fc.js +1 -0
  360. package/dist/assets/app-runtime/.next/static/chunks/app/(auth)/change-password/{page-a984ad1a8e98b9e7.js → page-2f23af48cfbb0071.js} +1 -1
  361. package/dist/assets/app-runtime/.next/static/chunks/app/(auth)/layout-51cda6d882abcfca.js +1 -0
  362. package/dist/assets/app-runtime/.next/static/chunks/app/(auth)/login/layout-51cda6d882abcfca.js +1 -0
  363. package/dist/assets/app-runtime/.next/static/chunks/app/(auth)/setup/layout-51cda6d882abcfca.js +1 -0
  364. package/dist/assets/app-runtime/.next/static/chunks/app/_global-error/page-51cda6d882abcfca.js +1 -0
  365. package/dist/assets/app-runtime/.next/static/chunks/app/api/apikeys/[id]/route-51cda6d882abcfca.js +1 -0
  366. package/dist/assets/app-runtime/.next/static/chunks/app/api/apikeys/route-51cda6d882abcfca.js +1 -0
  367. package/dist/assets/app-runtime/.next/static/chunks/app/api/auth/change-password/route-51cda6d882abcfca.js +1 -0
  368. package/dist/assets/app-runtime/.next/static/chunks/app/api/auth/dashboard/route-51cda6d882abcfca.js +1 -0
  369. package/dist/assets/app-runtime/.next/static/chunks/app/api/auth/login/route-51cda6d882abcfca.js +1 -0
  370. package/dist/assets/app-runtime/.next/static/chunks/app/api/auth/logout/route-51cda6d882abcfca.js +1 -0
  371. package/dist/assets/app-runtime/.next/static/chunks/app/api/auth/me/groups/route-51cda6d882abcfca.js +1 -0
  372. package/dist/assets/app-runtime/.next/static/chunks/app/api/auth/me/route-51cda6d882abcfca.js +1 -0
  373. package/dist/assets/app-runtime/.next/static/chunks/app/api/auth/setup/route-51cda6d882abcfca.js +1 -0
  374. package/dist/assets/app-runtime/.next/static/chunks/app/api/credentials/[id]/reveal/route-51cda6d882abcfca.js +1 -0
  375. package/dist/assets/app-runtime/.next/static/chunks/app/api/credentials/[id]/route-51cda6d882abcfca.js +1 -0
  376. package/dist/assets/app-runtime/.next/static/chunks/app/api/credentials/[id]/shares/[groupId]/route-51cda6d882abcfca.js +1 -0
  377. package/dist/assets/app-runtime/.next/static/chunks/app/api/credentials/[id]/shares/route-51cda6d882abcfca.js +1 -0
  378. package/dist/assets/app-runtime/.next/static/chunks/app/api/credentials/[id]/transfer/route-51cda6d882abcfca.js +1 -0
  379. package/dist/assets/app-runtime/.next/static/chunks/app/api/credentials/route-51cda6d882abcfca.js +1 -0
  380. package/dist/assets/app-runtime/.next/static/chunks/app/api/design-systems/[id]/activate/route-51cda6d882abcfca.js +1 -0
  381. package/dist/assets/app-runtime/.next/static/chunks/app/api/design-systems/[id]/assets/[assetId]/route-51cda6d882abcfca.js +1 -0
  382. package/dist/assets/app-runtime/.next/static/chunks/app/api/design-systems/[id]/assets/route-51cda6d882abcfca.js +1 -0
  383. package/dist/assets/app-runtime/.next/static/chunks/app/api/design-systems/[id]/components/[name]/route-51cda6d882abcfca.js +1 -0
  384. package/dist/assets/app-runtime/.next/static/chunks/app/api/design-systems/[id]/events/route-51cda6d882abcfca.js +1 -0
  385. package/dist/assets/app-runtime/.next/static/chunks/app/api/design-systems/[id]/export/route-51cda6d882abcfca.js +1 -0
  386. package/dist/assets/app-runtime/.next/static/chunks/app/api/design-systems/[id]/lint/route-51cda6d882abcfca.js +1 -0
  387. package/dist/assets/app-runtime/.next/static/chunks/app/api/design-systems/[id]/preview/route-51cda6d882abcfca.js +1 -0
  388. package/dist/assets/app-runtime/.next/static/chunks/app/api/design-systems/[id]/route-51cda6d882abcfca.js +1 -0
  389. package/dist/assets/app-runtime/.next/static/chunks/app/api/design-systems/[id]/sections/[section]/[key]/route-51cda6d882abcfca.js +1 -0
  390. package/dist/assets/app-runtime/.next/static/chunks/app/api/design-systems/[id]/sections/[section]/route-51cda6d882abcfca.js +1 -0
  391. package/dist/assets/app-runtime/.next/static/chunks/app/api/design-systems/[id]/versions/compare/route-51cda6d882abcfca.js +1 -0
  392. package/dist/assets/app-runtime/.next/static/chunks/app/api/design-systems/[id]/versions/route-51cda6d882abcfca.js +1 -0
  393. package/dist/assets/app-runtime/.next/static/chunks/app/api/design-systems/active/route-51cda6d882abcfca.js +1 -0
  394. package/dist/assets/app-runtime/.next/static/chunks/app/api/design-systems/import/analyze/route-51cda6d882abcfca.js +1 -0
  395. package/dist/assets/app-runtime/.next/static/chunks/app/api/design-systems/import/route-51cda6d882abcfca.js +1 -0
  396. package/dist/assets/app-runtime/.next/static/chunks/app/api/design-systems/route-51cda6d882abcfca.js +1 -0
  397. package/dist/assets/app-runtime/.next/static/chunks/app/api/design-systems/seed/route-51cda6d882abcfca.js +1 -0
  398. package/dist/assets/app-runtime/.next/static/chunks/app/api/docs/route-51cda6d882abcfca.js +1 -0
  399. package/dist/assets/app-runtime/.next/static/chunks/app/api/folders/[id]/route-51cda6d882abcfca.js +1 -0
  400. package/dist/assets/app-runtime/.next/static/chunks/app/api/folders/[id]/shares/[groupId]/route-51cda6d882abcfca.js +1 -0
  401. package/dist/assets/app-runtime/.next/static/chunks/app/api/folders/[id]/shares/route-51cda6d882abcfca.js +1 -0
  402. package/dist/assets/app-runtime/.next/static/chunks/app/api/folders/[id]/transfer/route-51cda6d882abcfca.js +1 -0
  403. package/dist/assets/app-runtime/.next/static/chunks/app/api/folders/[id]/visibility/route-51cda6d882abcfca.js +1 -0
  404. package/dist/assets/app-runtime/.next/static/chunks/app/api/folders/route-51cda6d882abcfca.js +1 -0
  405. package/dist/assets/app-runtime/.next/static/chunks/app/api/guides/[slug]/route-51cda6d882abcfca.js +1 -0
  406. package/dist/assets/app-runtime/.next/static/chunks/app/api/guides/[slug]/workflow/route-51cda6d882abcfca.js +1 -0
  407. package/dist/assets/app-runtime/.next/static/chunks/app/api/guides/route-51cda6d882abcfca.js +1 -0
  408. package/dist/assets/app-runtime/.next/static/chunks/app/api/instructions/[id]/route-51cda6d882abcfca.js +1 -0
  409. package/dist/assets/app-runtime/.next/static/chunks/app/api/instructions/[id]/transfer/route-51cda6d882abcfca.js +1 -0
  410. package/dist/assets/app-runtime/.next/static/chunks/app/api/instructions/[id]/visibility/route-51cda6d882abcfca.js +1 -0
  411. package/dist/assets/app-runtime/.next/static/chunks/app/api/instructions/route-51cda6d882abcfca.js +1 -0
  412. package/dist/assets/app-runtime/.next/static/chunks/app/api/invites/[id]/route-51cda6d882abcfca.js +1 -0
  413. package/dist/assets/app-runtime/.next/static/chunks/app/api/invites/accept/[token]/route-51cda6d882abcfca.js +1 -0
  414. package/dist/assets/app-runtime/.next/static/chunks/app/api/invites/route-51cda6d882abcfca.js +1 -0
  415. package/dist/assets/app-runtime/.next/static/chunks/app/api/report/route-51cda6d882abcfca.js +1 -0
  416. package/dist/assets/app-runtime/.next/static/chunks/app/api/settings/cleanup-visual-html/route-51cda6d882abcfca.js +1 -0
  417. package/dist/assets/app-runtime/.next/static/chunks/app/api/settings/email/route-51cda6d882abcfca.js +1 -0
  418. package/dist/assets/app-runtime/.next/static/chunks/app/api/settings/groups/[id]/members/route-51cda6d882abcfca.js +1 -0
  419. package/dist/assets/app-runtime/.next/static/chunks/app/api/settings/groups/[id]/route-51cda6d882abcfca.js +1 -0
  420. package/dist/assets/app-runtime/.next/static/chunks/app/api/settings/groups/route-51cda6d882abcfca.js +1 -0
  421. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/advance/route-51cda6d882abcfca.js +1 -0
  422. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/approve/route-51cda6d882abcfca.js +1 -0
  423. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/cancel/route-51cda6d882abcfca.js +1 -0
  424. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/comments/route-51cda6d882abcfca.js +1 -0
  425. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/complete/route-51cda6d882abcfca.js +1 -0
  426. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/execute/route-51cda6d882abcfca.js +1 -0
  427. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/feedback/route-51cda6d882abcfca.js +1 -0
  428. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/findings/route-51cda6d882abcfca.js +1 -0
  429. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/heartbeat/route-51cda6d882abcfca.js +1 -0
  430. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/logs/route-51cda6d882abcfca.js +1 -0
  431. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/request-approval/route-51cda6d882abcfca.js +1 -0
  432. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/respond/route-51cda6d882abcfca.js +1 -0
  433. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/rewind/route-51cda6d882abcfca.js +1 -0
  434. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/route-51cda6d882abcfca.js +1 -0
  435. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/visual/route-51cda6d882abcfca.js +1 -0
  436. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/route-51cda6d882abcfca.js +1 -0
  437. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/start/route-51cda6d882abcfca.js +1 -0
  438. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/timeout-stale/route-51cda6d882abcfca.js +1 -0
  439. package/dist/assets/app-runtime/.next/static/chunks/app/api/users/[id]/route-51cda6d882abcfca.js +1 -0
  440. package/dist/assets/app-runtime/.next/static/chunks/app/api/users/route-51cda6d882abcfca.js +1 -0
  441. package/dist/assets/app-runtime/.next/static/chunks/app/api/version/route-51cda6d882abcfca.js +1 -0
  442. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/activate/route-51cda6d882abcfca.js +1 -0
  443. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/deactivate/route-51cda6d882abcfca.js +1 -0
  444. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/export/route-51cda6d882abcfca.js +1 -0
  445. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/node-items/[nodeId]/attachments/[attachId]/route-51cda6d882abcfca.js +1 -0
  446. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/node-items/[nodeId]/attachments/route-51cda6d882abcfca.js +1 -0
  447. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/node-items/[nodeId]/route-51cda6d882abcfca.js +1 -0
  448. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/nodes/[node_id]/attachments/[attachId]/route-51cda6d882abcfca.js +1 -0
  449. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/nodes/[node_id]/attachments/route-51cda6d882abcfca.js +1 -0
  450. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/nodes/[node_id]/route-51cda6d882abcfca.js +1 -0
  451. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/nodes/route-51cda6d882abcfca.js +1 -0
  452. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/route-51cda6d882abcfca.js +1 -0
  453. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/shares/[groupId]/route-51cda6d882abcfca.js +1 -0
  454. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/shares/route-51cda6d882abcfca.js +1 -0
  455. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/transfer/route-51cda6d882abcfca.js +1 -0
  456. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/versions/route-51cda6d882abcfca.js +1 -0
  457. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/visibility/route-51cda6d882abcfca.js +1 -0
  458. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/import/analyze/route-51cda6d882abcfca.js +1 -0
  459. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/import/route-51cda6d882abcfca.js +1 -0
  460. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/route-51cda6d882abcfca.js +1 -0
  461. package/dist/assets/app-runtime/.next/static/chunks/app/layout-a03e37c465149734.js +1 -0
  462. package/dist/assets/app-runtime/.next/static/chunks/next/dist/client/components/builtin/app-error-51cda6d882abcfca.js +1 -0
  463. package/dist/assets/app-runtime/.next/static/chunks/next/dist/client/components/builtin/forbidden-51cda6d882abcfca.js +1 -0
  464. package/dist/assets/app-runtime/.next/static/chunks/next/dist/client/components/builtin/not-found-51cda6d882abcfca.js +1 -0
  465. package/dist/assets/app-runtime/.next/static/chunks/next/dist/client/components/builtin/unauthorized-51cda6d882abcfca.js +1 -0
  466. package/dist/assets/app-runtime/.next/static/css/9d548bcfa765cd8e.css +1 -0
  467. package/dist/assets/app-runtime/.next/static/kR9ojEXg0R3roI-0eLui5/_buildManifest.js +1 -0
  468. package/dist/assets/app-runtime/docker/seed-design-systems/open-design-core.json +3452 -0
  469. package/dist/assets/app-runtime/docker/seed-workflows/design-system-creation.json +80 -0
  470. package/dist/assets/app-runtime/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  471. package/dist/assets/app-runtime/package.json +1 -1
  472. package/dist/assets/app-runtime/src/content/guides/en/01-market-research-ai-coding-assistants.md +7 -7
  473. package/dist/assets/app-runtime/src/content/guides/en/02-bk-import.md +5 -5
  474. package/dist/assets/app-runtime/src/content/guides/ko/01-market-research-ai-coding-assistants.md +7 -7
  475. package/dist/assets/app-runtime/src/content/guides/ko/02-bk-import.md +5 -5
  476. package/dist/assets/app-runtime/src/lib/db/migrations/sqlite/sql/013_design_systems.sql +61 -0
  477. package/dist/assets/app-runtime/src/lib/db/migrations/sqlite/sql/014_design_system_token_sections.sql +10 -0
  478. package/dist/assets/app-runtime/src/lib/db/migrations/sqlite/sql/015_design_system_taxonomy.sql +11 -0
  479. package/dist/assets/app-runtime/src/lib/db/migrations/sqlite/sql/016_user_settings.sql +11 -0
  480. package/dist/assets/app-runtime/src/lib/db/migrations/sqlite/sql/017_design_system_events.sql +15 -0
  481. package/dist/assets/index.js +27 -2
  482. package/dist/assets/mcp/server.js +771 -2
  483. package/dist/assets/skills/bk-create/SKILL.md +426 -0
  484. package/dist/assets/skills/bk-credential/SKILL.md +1 -1
  485. package/dist/assets/skills/bk-design/SKILL.md +546 -383
  486. package/dist/assets/skills/bk-design/references/craft-rules.md +75 -0
  487. package/dist/assets/skills/bk-design/references/hifi-design-playbook.md +390 -0
  488. package/dist/assets/skills/bk-help/SKILL.md +6 -4
  489. package/dist/assets/skills/bk-import/SKILL.md +2 -2
  490. package/dist/assets/skills/bk-improve/SKILL.md +1 -1
  491. package/dist/assets/skills/bk-instruction/SKILL.md +1 -1
  492. package/dist/assets/skills/bk-start/SKILL.md +3 -3
  493. package/dist/runtimes/skills-helper.js +14 -2
  494. package/package.json +1 -1
  495. package/scripts/bundle-assets.mjs +10 -0
  496. package/dist/assets/app-runtime/.next/server/chunks/2099.js +0 -1
  497. package/dist/assets/app-runtime/.next/server/chunks/6640.js +0 -7
  498. package/dist/assets/app-runtime/.next/server/chunks/7484.js +0 -1
  499. package/dist/assets/app-runtime/.next/server/chunks/9031.js +0 -5
  500. package/dist/assets/app-runtime/.next/static/chunks/2360-35e89e45b93e4b6e.js +0 -1
  501. package/dist/assets/app-runtime/.next/static/chunks/3199-4d641b94342c63dd.js +0 -1
  502. package/dist/assets/app-runtime/.next/static/chunks/4319-c621f9e5059ef246.js +0 -1
  503. package/dist/assets/app-runtime/.next/static/chunks/4637-78c9db381fdc0480.js +0 -1
  504. package/dist/assets/app-runtime/.next/static/chunks/4663-2b5d2783b27c738c.js +0 -1
  505. package/dist/assets/app-runtime/.next/static/chunks/6073-62ed9e571ecaf523.js +0 -7
  506. package/dist/assets/app-runtime/.next/static/chunks/7050-edc7d05dfb4620a7.js +0 -1
  507. package/dist/assets/app-runtime/.next/static/chunks/7533-42c44555b23bfae4.js +0 -1
  508. package/dist/assets/app-runtime/.next/static/chunks/7552-aa220264909ca9d9.js +0 -1
  509. package/dist/assets/app-runtime/.next/static/chunks/7659-42ae14ef25af3f5e.js +0 -1
  510. package/dist/assets/app-runtime/.next/static/chunks/8920-3a6e8e66a1cb7a75.js +0 -1
  511. package/dist/assets/app-runtime/.next/static/chunks/9243-9c99cc0df75c9121.js +0 -1
  512. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/credentials/page-5c7345b157145460.js +0 -7
  513. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/layout-d7f54b544bb8d2df.js +0 -1
  514. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/settings/groups/page-9254dcaa5d447e5b.js +0 -1
  515. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/settings/layout-d1d8a55a4b72308b.js +0 -1
  516. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/tasks/layout-d1d8a55a4b72308b.js +0 -1
  517. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/tutorial/page-e17231b0bc7cb6d6.js +0 -34
  518. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/workflows/[id]/page-66d44a2bc9f94668.js +0 -1
  519. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/workflows/layout-d1d8a55a4b72308b.js +0 -1
  520. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/workflows/page-a76941b77690f97c.js +0 -1
  521. package/dist/assets/app-runtime/.next/static/chunks/app/(auth)/layout-d1d8a55a4b72308b.js +0 -1
  522. package/dist/assets/app-runtime/.next/static/chunks/app/(auth)/login/layout-d1d8a55a4b72308b.js +0 -1
  523. package/dist/assets/app-runtime/.next/static/chunks/app/(auth)/setup/layout-d1d8a55a4b72308b.js +0 -1
  524. package/dist/assets/app-runtime/.next/static/chunks/app/_global-error/page-d1d8a55a4b72308b.js +0 -1
  525. package/dist/assets/app-runtime/.next/static/chunks/app/api/apikeys/[id]/route-d1d8a55a4b72308b.js +0 -1
  526. package/dist/assets/app-runtime/.next/static/chunks/app/api/apikeys/route-d1d8a55a4b72308b.js +0 -1
  527. package/dist/assets/app-runtime/.next/static/chunks/app/api/auth/change-password/route-d1d8a55a4b72308b.js +0 -1
  528. package/dist/assets/app-runtime/.next/static/chunks/app/api/auth/dashboard/route-d1d8a55a4b72308b.js +0 -1
  529. package/dist/assets/app-runtime/.next/static/chunks/app/api/auth/login/route-d1d8a55a4b72308b.js +0 -1
  530. package/dist/assets/app-runtime/.next/static/chunks/app/api/auth/logout/route-d1d8a55a4b72308b.js +0 -1
  531. package/dist/assets/app-runtime/.next/static/chunks/app/api/auth/me/groups/route-d1d8a55a4b72308b.js +0 -1
  532. package/dist/assets/app-runtime/.next/static/chunks/app/api/auth/me/route-d1d8a55a4b72308b.js +0 -1
  533. package/dist/assets/app-runtime/.next/static/chunks/app/api/auth/setup/route-d1d8a55a4b72308b.js +0 -1
  534. package/dist/assets/app-runtime/.next/static/chunks/app/api/credentials/[id]/reveal/route-d1d8a55a4b72308b.js +0 -1
  535. package/dist/assets/app-runtime/.next/static/chunks/app/api/credentials/[id]/route-d1d8a55a4b72308b.js +0 -1
  536. package/dist/assets/app-runtime/.next/static/chunks/app/api/credentials/[id]/shares/[groupId]/route-d1d8a55a4b72308b.js +0 -1
  537. package/dist/assets/app-runtime/.next/static/chunks/app/api/credentials/[id]/shares/route-d1d8a55a4b72308b.js +0 -1
  538. package/dist/assets/app-runtime/.next/static/chunks/app/api/credentials/[id]/transfer/route-d1d8a55a4b72308b.js +0 -1
  539. package/dist/assets/app-runtime/.next/static/chunks/app/api/credentials/route-d1d8a55a4b72308b.js +0 -1
  540. package/dist/assets/app-runtime/.next/static/chunks/app/api/docs/route-d1d8a55a4b72308b.js +0 -1
  541. package/dist/assets/app-runtime/.next/static/chunks/app/api/folders/[id]/route-d1d8a55a4b72308b.js +0 -1
  542. package/dist/assets/app-runtime/.next/static/chunks/app/api/folders/[id]/shares/[groupId]/route-d1d8a55a4b72308b.js +0 -1
  543. package/dist/assets/app-runtime/.next/static/chunks/app/api/folders/[id]/shares/route-d1d8a55a4b72308b.js +0 -1
  544. package/dist/assets/app-runtime/.next/static/chunks/app/api/folders/[id]/transfer/route-d1d8a55a4b72308b.js +0 -1
  545. package/dist/assets/app-runtime/.next/static/chunks/app/api/folders/[id]/visibility/route-d1d8a55a4b72308b.js +0 -1
  546. package/dist/assets/app-runtime/.next/static/chunks/app/api/folders/route-d1d8a55a4b72308b.js +0 -1
  547. package/dist/assets/app-runtime/.next/static/chunks/app/api/guides/[slug]/route-d1d8a55a4b72308b.js +0 -1
  548. package/dist/assets/app-runtime/.next/static/chunks/app/api/guides/[slug]/workflow/route-d1d8a55a4b72308b.js +0 -1
  549. package/dist/assets/app-runtime/.next/static/chunks/app/api/guides/route-d1d8a55a4b72308b.js +0 -1
  550. package/dist/assets/app-runtime/.next/static/chunks/app/api/instructions/[id]/route-d1d8a55a4b72308b.js +0 -1
  551. package/dist/assets/app-runtime/.next/static/chunks/app/api/instructions/[id]/transfer/route-d1d8a55a4b72308b.js +0 -1
  552. package/dist/assets/app-runtime/.next/static/chunks/app/api/instructions/[id]/visibility/route-d1d8a55a4b72308b.js +0 -1
  553. package/dist/assets/app-runtime/.next/static/chunks/app/api/instructions/route-d1d8a55a4b72308b.js +0 -1
  554. package/dist/assets/app-runtime/.next/static/chunks/app/api/invites/[id]/route-d1d8a55a4b72308b.js +0 -1
  555. package/dist/assets/app-runtime/.next/static/chunks/app/api/invites/accept/[token]/route-d1d8a55a4b72308b.js +0 -1
  556. package/dist/assets/app-runtime/.next/static/chunks/app/api/invites/route-d1d8a55a4b72308b.js +0 -1
  557. package/dist/assets/app-runtime/.next/static/chunks/app/api/report/route-d1d8a55a4b72308b.js +0 -1
  558. package/dist/assets/app-runtime/.next/static/chunks/app/api/settings/cleanup-visual-html/route-d1d8a55a4b72308b.js +0 -1
  559. package/dist/assets/app-runtime/.next/static/chunks/app/api/settings/email/route-d1d8a55a4b72308b.js +0 -1
  560. package/dist/assets/app-runtime/.next/static/chunks/app/api/settings/groups/[id]/members/route-d1d8a55a4b72308b.js +0 -1
  561. package/dist/assets/app-runtime/.next/static/chunks/app/api/settings/groups/[id]/route-d1d8a55a4b72308b.js +0 -1
  562. package/dist/assets/app-runtime/.next/static/chunks/app/api/settings/groups/route-d1d8a55a4b72308b.js +0 -1
  563. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/advance/route-d1d8a55a4b72308b.js +0 -1
  564. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/approve/route-d1d8a55a4b72308b.js +0 -1
  565. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/cancel/route-d1d8a55a4b72308b.js +0 -1
  566. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/comments/route-d1d8a55a4b72308b.js +0 -1
  567. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/complete/route-d1d8a55a4b72308b.js +0 -1
  568. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/execute/route-d1d8a55a4b72308b.js +0 -1
  569. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/feedback/route-d1d8a55a4b72308b.js +0 -1
  570. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/findings/route-d1d8a55a4b72308b.js +0 -1
  571. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/heartbeat/route-d1d8a55a4b72308b.js +0 -1
  572. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/logs/route-d1d8a55a4b72308b.js +0 -1
  573. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/request-approval/route-d1d8a55a4b72308b.js +0 -1
  574. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/respond/route-d1d8a55a4b72308b.js +0 -1
  575. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/rewind/route-d1d8a55a4b72308b.js +0 -1
  576. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/route-d1d8a55a4b72308b.js +0 -1
  577. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/[id]/visual/route-d1d8a55a4b72308b.js +0 -1
  578. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/route-d1d8a55a4b72308b.js +0 -1
  579. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/start/route-d1d8a55a4b72308b.js +0 -1
  580. package/dist/assets/app-runtime/.next/static/chunks/app/api/tasks/timeout-stale/route-d1d8a55a4b72308b.js +0 -1
  581. package/dist/assets/app-runtime/.next/static/chunks/app/api/users/[id]/route-d1d8a55a4b72308b.js +0 -1
  582. package/dist/assets/app-runtime/.next/static/chunks/app/api/users/route-d1d8a55a4b72308b.js +0 -1
  583. package/dist/assets/app-runtime/.next/static/chunks/app/api/version/route-d1d8a55a4b72308b.js +0 -1
  584. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/activate/route-d1d8a55a4b72308b.js +0 -1
  585. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/deactivate/route-d1d8a55a4b72308b.js +0 -1
  586. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/export/route-d1d8a55a4b72308b.js +0 -1
  587. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/node-items/[nodeId]/attachments/[attachId]/route-d1d8a55a4b72308b.js +0 -1
  588. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/node-items/[nodeId]/attachments/route-d1d8a55a4b72308b.js +0 -1
  589. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/node-items/[nodeId]/route-d1d8a55a4b72308b.js +0 -1
  590. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/nodes/[node_id]/attachments/[attachId]/route-d1d8a55a4b72308b.js +0 -1
  591. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/nodes/[node_id]/attachments/route-d1d8a55a4b72308b.js +0 -1
  592. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/nodes/[node_id]/route-d1d8a55a4b72308b.js +0 -1
  593. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/nodes/route-d1d8a55a4b72308b.js +0 -1
  594. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/route-d1d8a55a4b72308b.js +0 -1
  595. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/shares/[groupId]/route-d1d8a55a4b72308b.js +0 -1
  596. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/shares/route-d1d8a55a4b72308b.js +0 -1
  597. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/transfer/route-d1d8a55a4b72308b.js +0 -1
  598. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/versions/route-d1d8a55a4b72308b.js +0 -1
  599. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/[id]/visibility/route-d1d8a55a4b72308b.js +0 -1
  600. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/import/analyze/route-d1d8a55a4b72308b.js +0 -1
  601. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/import/route-d1d8a55a4b72308b.js +0 -1
  602. package/dist/assets/app-runtime/.next/static/chunks/app/api/workflows/route-d1d8a55a4b72308b.js +0 -1
  603. package/dist/assets/app-runtime/.next/static/chunks/app/layout-e3f307ffaa2d11cc.js +0 -1
  604. package/dist/assets/app-runtime/.next/static/chunks/next/dist/client/components/builtin/app-error-d1d8a55a4b72308b.js +0 -1
  605. package/dist/assets/app-runtime/.next/static/chunks/next/dist/client/components/builtin/forbidden-d1d8a55a4b72308b.js +0 -1
  606. package/dist/assets/app-runtime/.next/static/chunks/next/dist/client/components/builtin/not-found-d1d8a55a4b72308b.js +0 -1
  607. package/dist/assets/app-runtime/.next/static/chunks/next/dist/client/components/builtin/unauthorized-d1d8a55a4b72308b.js +0 -1
  608. package/dist/assets/app-runtime/.next/static/css/2bc6b6e35d293c50.css +0 -1
  609. package/dist/assets/app-runtime/.next/static/ymP-zxwYrYDNi2qYSDfJr/_buildManifest.js +0 -1
  610. package/dist/assets/app-runtime/node_modules/@img/sharp-libvips-linux-arm64/lib/index.js +0 -1
  611. package/dist/assets/app-runtime/node_modules/@img/sharp-libvips-linux-arm64/lib/libvips-cpp.so.8.17.3 +0 -0
  612. package/dist/assets/app-runtime/node_modules/@img/sharp-libvips-linux-arm64/package.json +0 -42
  613. package/dist/assets/app-runtime/node_modules/@img/sharp-libvips-linux-arm64/versions.json +0 -30
  614. package/dist/assets/app-runtime/node_modules/@img/sharp-libvips-linuxmusl-arm64/lib/index.js +0 -1
  615. package/dist/assets/app-runtime/node_modules/@img/sharp-libvips-linuxmusl-arm64/lib/libvips-cpp.so.8.17.3 +0 -0
  616. package/dist/assets/app-runtime/node_modules/@img/sharp-libvips-linuxmusl-arm64/package.json +0 -42
  617. package/dist/assets/app-runtime/node_modules/@img/sharp-libvips-linuxmusl-arm64/versions.json +0 -30
  618. package/dist/assets/app-runtime/node_modules/@img/sharp-linux-arm64/LICENSE +0 -191
  619. package/dist/assets/app-runtime/node_modules/@img/sharp-linux-arm64/lib/sharp-linux-arm64.node +0 -0
  620. package/dist/assets/app-runtime/node_modules/@img/sharp-linux-arm64/package.json +0 -46
  621. package/dist/assets/app-runtime/node_modules/@img/sharp-linuxmusl-arm64/LICENSE +0 -191
  622. package/dist/assets/app-runtime/node_modules/@img/sharp-linuxmusl-arm64/lib/sharp-linuxmusl-arm64.node +0 -0
  623. package/dist/assets/app-runtime/node_modules/@img/sharp-linuxmusl-arm64/package.json +0 -46
  624. /package/dist/assets/app-runtime/.next/static/{ymP-zxwYrYDNi2qYSDfJr → kR9ojEXg0R3roI-0eLui5}/_ssgManifest.js +0 -0
@@ -1,7 +1,7 @@
1
- (()=>{var a={};a.id=4136,a.ids=[4136],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},1708:a=>{"use strict";a.exports=require("node:process")},2797:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(63871).A)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]])},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8204:(a,b,c)=>{"use strict";c.r(b),c.d(b,{VS_FRAME_TEMPLATE:()=>d});let d='<!doctype html>\n<html data-theme="light" data-lang="ko">\n <head>\n <meta charset="UTF-8" />\n <meta name="viewport" content="width=device-width, initial-scale=1.0" />\n <style>\n /* VS Design System — components.css\n * 12 built-in bk-* components using BlueKiwi design tokens.\n * Light theme by default; dark via [data-theme="dark"].\n * Auto-generated frames include this file inline. Do not import externally.\n */\n\n/* ─── Design Tokens ─── */\n\n:root,\n[data-theme="light"] {\n --bk-bg: #f8fbff;\n --bk-surface: #ffffff;\n --bk-surface-soft: #f3f7fb;\n --bk-surface-strong: #edf3fb;\n --bk-text: #1e2a44;\n --bk-text-muted: #6d7690;\n --bk-border: #dce4ef;\n --bk-primary: #4169e1;\n --bk-primary-light: #eaf0ff;\n --bk-primary-dark: #3557be;\n --bk-accent: #b7cf57;\n --bk-accent-light: #f4f8dd;\n --bk-success: #2f8f6b;\n --bk-warning: #b78226;\n --bk-danger: #c94d5d;\n --bk-radius: 1rem;\n --bk-radius-sm: 0.75rem;\n --bk-radius-lg: 1.5rem;\n --bk-shadow: 0 10px 24px rgba(30, 42, 68, 0.08);\n --bk-font: "Inter", system-ui, -apple-system, sans-serif;\n --bk-font-mono: ui-monospace, SFMono-Regular, Menlo, monospace;\n}\n\n[data-theme="dark"] {\n --bk-bg: #0f1728;\n --bk-surface: #162033;\n --bk-surface-soft: #1d2a40;\n --bk-surface-strong: #243249;\n --bk-text: #eef4ff;\n --bk-text-muted: #94a5bf;\n --bk-border: #2f3a50;\n --bk-primary: #6d8ef0;\n --bk-primary-light: rgba(109, 142, 240, 0.18);\n --bk-primary-dark: #4169e1;\n --bk-accent: #b7cf57;\n --bk-accent-light: rgba(183, 207, 87, 0.18);\n --bk-success: #4aba8a;\n --bk-warning: #d4a04a;\n --bk-danger: #de6a78;\n --bk-shadow: 0 10px 26px rgba(2, 6, 23, 0.3);\n}\n\n/* ─── Base Reset ─── */\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n\nbody {\n font-family: var(--bk-font);\n color: var(--bk-text);\n background: var(--bk-bg);\n line-height: 1.6;\n -webkit-font-smoothing: antialiased;\n}\n\n/* ─── Layout Utilities ─── */\n\nh2 {\n font-size: 1.375rem;\n font-weight: 700;\n letter-spacing: -0.01em;\n margin-bottom: 0.25rem;\n}\n\n.bk-subtitle {\n font-size: 0.9rem;\n color: var(--bk-text-muted);\n margin-bottom: 1.25rem;\n}\n\n.bk-section {\n border-top: 1px solid var(--bk-border);\n margin: 1.5rem 0;\n padding-top: 1.5rem;\n}\n\n.bk-label {\n font-size: 0.7rem;\n font-weight: 600;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--bk-text-muted);\n margin-bottom: 0.75rem;\n}\n\n/* ─── VS Container ─── */\n\n.bk-vs-container {\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n padding: 1.5rem;\n}\n\n.bk-vs-content {\n flex: 1;\n}\n\n.bk-vs-footer {\n position: sticky;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 0.75rem;\n padding: 1rem 0 0;\n margin-top: 1.5rem;\n border-top: 1px solid var(--bk-border);\n background: var(--bk-bg);\n}\n\n.bk-vs-status {\n font-size: 0.8rem;\n color: var(--bk-text-muted);\n}\n\n.bk-vs-submit {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 2.5rem;\n padding: 0 1.5rem;\n border: none;\n border-radius: 9999px;\n background: var(--bk-primary);\n color: #ffffff;\n font-family: var(--bk-font);\n font-size: 0.95rem;\n font-weight: 600;\n cursor: pointer;\n transition:\n background 0.15s,\n opacity 0.15s,\n transform 0.1s;\n box-shadow: 0 10px 18px rgba(53, 87, 190, 0.18);\n}\n\n.bk-vs-submit:hover:not(:disabled) {\n background: var(--bk-primary-dark);\n}\n\n.bk-vs-submit:active:not(:disabled) {\n transform: scale(0.97);\n}\n\n.bk-vs-submit:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n box-shadow: none;\n}\n\n.bk-vs-submit.submitted {\n background: var(--bk-success);\n pointer-events: none;\n}\n\n/* ─── Form Inputs ─── */\n\n.bk-input,\n.bk-textarea,\n.bk-option-comment {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n margin-top: 1rem;\n}\n\n.bk-field-label {\n font-size: 0.85rem;\n font-weight: 600;\n color: var(--bk-text);\n}\n\n.bk-field-label .required {\n color: var(--bk-danger);\n margin-left: 0.25rem;\n}\n\n.bk-field-help {\n font-size: 0.78rem;\n color: var(--bk-text-muted);\n}\n\n.bk-input-control,\n.bk-textarea-control {\n width: 100%;\n border: 1.5px solid var(--bk-border);\n border-radius: var(--bk-radius);\n background: var(--bk-surface);\n color: var(--bk-text);\n font: inherit;\n padding: 0.8rem 0.9rem;\n transition:\n border-color 0.15s,\n box-shadow 0.15s,\n background 0.15s;\n}\n\n.bk-input-control::placeholder,\n.bk-textarea-control::placeholder {\n color: var(--bk-text-muted);\n}\n\n.bk-input-control:focus,\n.bk-textarea-control:focus {\n outline: none;\n border-color: var(--bk-primary);\n box-shadow: 0 0 0 3px rgba(65, 105, 225, 0.15);\n}\n\n.bk-textarea-control {\n min-height: 7rem;\n resize: vertical;\n line-height: 1.55;\n}\n\n.bk-field-error {\n font-size: 0.78rem;\n color: var(--bk-danger);\n}\n\n.bk-option-comment[hidden] {\n display: none;\n}\n\n.bk-option-comment {\n border-top: 1px dashed var(--bk-border);\n padding-top: 0.9rem;\n}\n\n/* ─── 1. bk-options (A/B/C single select) ─── */\n\n.bk-options {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n}\n\n.bk-option {\n display: flex;\n align-items: flex-start;\n gap: 1rem;\n padding: 1.25rem;\n background: var(--bk-surface);\n border: 1.5px solid var(--bk-border);\n border-radius: var(--bk-radius-lg);\n cursor: pointer;\n transition:\n border-color 0.15s,\n background 0.15s,\n box-shadow 0.15s;\n box-shadow: var(--bk-shadow);\n position: relative;\n}\n\n.bk-option:hover {\n background: var(--bk-primary-light);\n border-color: var(--bk-primary);\n}\n\n.bk-option.selected {\n border-color: var(--bk-primary);\n background: var(--bk-primary-light);\n box-shadow: 0 0 0 3px rgba(65, 105, 225, 0.2);\n}\n\n.bk-option-letter {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2.25rem;\n height: 2.25rem;\n border-radius: 50%;\n background: var(--bk-surface-strong);\n font-weight: 700;\n font-size: 0.85rem;\n color: var(--bk-text-muted);\n flex-shrink: 0;\n}\n\n.bk-option.selected .bk-option-letter {\n background: var(--bk-primary);\n color: #ffffff;\n}\n\n.bk-option-body h3 {\n font-size: 1rem;\n font-weight: 600;\n margin-bottom: 0.15rem;\n}\n\n.bk-option-body p {\n font-size: 0.85rem;\n color: var(--bk-text-muted);\n line-height: 1.5;\n}\n\n.bk-option[data-recommended]::after {\n content: "Recommended";\n position: absolute;\n top: 0.75rem;\n right: 0.75rem;\n font-size: 0.65rem;\n font-weight: 600;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--bk-accent);\n background: var(--bk-accent-light);\n padding: 0.2rem 0.5rem;\n border-radius: 9999px;\n}\n\n/* ─── 2. bk-cards (visual cards with image preview) ─── */\n\n.bk-cards {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));\n gap: 1rem;\n}\n\n.bk-card {\n background: var(--bk-surface);\n border: 1.5px solid var(--bk-border);\n border-radius: var(--bk-radius-lg);\n overflow: hidden;\n cursor: pointer;\n transition:\n border-color 0.15s,\n box-shadow 0.15s;\n box-shadow: var(--bk-shadow);\n}\n\n.bk-card:hover {\n border-color: var(--bk-primary);\n}\n\n.bk-card.selected {\n border-color: var(--bk-primary);\n box-shadow: 0 0 0 3px rgba(65, 105, 225, 0.2);\n}\n\n.bk-card-image {\n width: 100%;\n aspect-ratio: 16/10;\n background: var(--bk-surface-soft);\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n border-bottom: 1px solid var(--bk-border);\n}\n\n.bk-card-image svg {\n max-width: 80%;\n max-height: 80%;\n}\n\n.bk-card-body {\n padding: 1rem;\n}\n\n.bk-card-body h3 {\n font-size: 0.95rem;\n font-weight: 600;\n margin-bottom: 0.15rem;\n}\n\n.bk-card-body p {\n font-size: 0.8rem;\n color: var(--bk-text-muted);\n}\n\n/* ─── 3. bk-checklist (multi-select) ─── */\n\n.bk-checklist {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.bk-check-item {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n padding: 0.75rem 1rem;\n background: var(--bk-surface);\n border: 1.5px solid var(--bk-border);\n border-radius: var(--bk-radius);\n cursor: pointer;\n font-size: 0.9rem;\n transition:\n border-color 0.15s,\n background 0.15s;\n}\n\n.bk-check-item::before {\n content: "";\n display: block;\n width: 1.25rem;\n height: 1.25rem;\n border: 2px solid var(--bk-border);\n border-radius: 0.35rem;\n flex-shrink: 0;\n transition:\n background 0.15s,\n border-color 0.15s;\n}\n\n.bk-check-item:hover {\n background: var(--bk-primary-light);\n border-color: var(--bk-primary);\n}\n\n.bk-check-item.checked {\n border-color: var(--bk-primary);\n background: var(--bk-primary-light);\n}\n\n.bk-check-item.checked::before {\n background: var(--bk-primary);\n border-color: var(--bk-primary);\n /* Checkmark via box-shadow trick */\n box-shadow:\n inset 0 0 0 2px var(--bk-primary),\n inset 0.15rem -0.15rem 0 0 #fff;\n}\n\n/* ─── 4. bk-code-compare (side-by-side code selection) ─── */\n\n.bk-code-compare {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));\n gap: 1rem;\n}\n\n.bk-code-option {\n background: var(--bk-surface);\n border: 1.5px solid var(--bk-border);\n border-radius: var(--bk-radius-lg);\n overflow: hidden;\n cursor: pointer;\n transition:\n border-color 0.15s,\n box-shadow 0.15s;\n}\n\n.bk-code-option:hover {\n border-color: var(--bk-primary);\n}\n\n.bk-code-option.selected {\n border-color: var(--bk-primary);\n box-shadow: 0 0 0 3px rgba(65, 105, 225, 0.2);\n}\n\n.bk-code-label {\n padding: 0.75rem 1rem;\n font-size: 0.8rem;\n font-weight: 600;\n color: var(--bk-text-muted);\n border-bottom: 1px solid var(--bk-border);\n background: var(--bk-surface-soft);\n}\n\npre.bk-code {\n margin: 0;\n padding: 1rem;\n font-family: var(--bk-font-mono);\n font-size: 0.8rem;\n line-height: 1.6;\n overflow-x: auto;\n color: var(--bk-text);\n background: transparent;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n/* ─── 5. bk-slider (numeric input) ─── */\n\n.bk-slider {\n padding: 1rem 1.25rem;\n background: var(--bk-surface);\n border: 1.5px solid var(--bk-border);\n border-radius: var(--bk-radius-lg);\n margin-bottom: 0.75rem;\n}\n\n.bk-slider label {\n display: block;\n font-size: 0.9rem;\n font-weight: 600;\n margin-bottom: 0.75rem;\n}\n\n.bk-slider-controls {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n\n.bk-slider-controls input[type="range"] {\n flex: 1;\n height: 6px;\n -webkit-appearance: none;\n appearance: none;\n background: var(--bk-surface-strong);\n border-radius: 3px;\n outline: none;\n}\n\n.bk-slider-controls input[type="range"]::-webkit-slider-thumb {\n -webkit-appearance: none;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: var(--bk-primary);\n cursor: pointer;\n box-shadow: 0 2px 6px rgba(65, 105, 225, 0.3);\n}\n\n.bk-slider-controls input[type="range"]::-moz-range-thumb {\n width: 20px;\n height: 20px;\n border: none;\n border-radius: 50%;\n background: var(--bk-primary);\n cursor: pointer;\n}\n\n.bk-slider-value {\n min-width: 3.5rem;\n text-align: right;\n font-size: 0.95rem;\n font-weight: 600;\n font-variant-numeric: tabular-nums;\n color: var(--bk-primary);\n}\n\n/* ─── 6. bk-ranking (drag-to-reorder) ─── */\n\n.bk-ranking {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.bk-rank-item {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n padding: 0.75rem 1rem;\n background: var(--bk-surface);\n border: 1.5px solid var(--bk-border);\n border-radius: var(--bk-radius);\n cursor: grab;\n font-size: 0.9rem;\n transition:\n border-color 0.15s,\n box-shadow 0.15s,\n transform 0.1s;\n user-select: none;\n}\n\n.bk-rank-item:active {\n cursor: grabbing;\n}\n\n.bk-rank-item.dragging {\n opacity: 0.5;\n border-color: var(--bk-primary);\n}\n\n.bk-rank-item.drag-over {\n border-color: var(--bk-primary);\n box-shadow: 0 0 0 2px rgba(65, 105, 225, 0.15);\n}\n\n.bk-rank-number {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1.75rem;\n height: 1.75rem;\n border-radius: 50%;\n background: var(--bk-surface-strong);\n font-weight: 700;\n font-size: 0.75rem;\n color: var(--bk-text-muted);\n flex-shrink: 0;\n}\n\n.bk-rank-grip {\n color: var(--bk-text-muted);\n font-size: 1rem;\n flex-shrink: 0;\n opacity: 0.5;\n}\n\n/* ─── 7. bk-matrix (2x2 matrix placement) ─── */\n\n.bk-matrix {\n position: relative;\n width: 100%;\n aspect-ratio: 1;\n max-width: 500px;\n margin: 0 auto;\n background: var(--bk-surface);\n border: 1.5px solid var(--bk-border);\n border-radius: var(--bk-radius-lg);\n overflow: hidden;\n}\n\n.bk-matrix-grid {\n position: absolute;\n inset: 2.5rem;\n}\n\n.bk-matrix-grid::before,\n.bk-matrix-grid::after {\n content: "";\n position: absolute;\n background: var(--bk-border);\n}\n\n/* Vertical center line */\n.bk-matrix-grid::before {\n left: 50%;\n top: 0;\n bottom: 0;\n width: 1px;\n transform: translateX(-0.5px);\n}\n\n/* Horizontal center line */\n.bk-matrix-grid::after {\n top: 50%;\n left: 0;\n right: 0;\n height: 1px;\n transform: translateY(-0.5px);\n}\n\n.bk-matrix-x-label,\n.bk-matrix-y-label {\n position: absolute;\n font-size: 0.7rem;\n font-weight: 600;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--bk-text-muted);\n}\n\n.bk-matrix-x-label {\n bottom: 0.5rem;\n left: 50%;\n transform: translateX(-50%);\n}\n\n.bk-matrix-y-label {\n top: 50%;\n left: 0.5rem;\n transform: translateY(-50%) rotate(-90deg);\n transform-origin: center;\n}\n\n.bk-matrix-item {\n position: absolute;\n padding: 0.4rem 0.75rem;\n background: var(--bk-primary);\n color: #ffffff;\n font-size: 0.75rem;\n font-weight: 600;\n border-radius: 9999px;\n cursor: grab;\n user-select: none;\n white-space: nowrap;\n z-index: 1;\n transition: box-shadow 0.1s;\n box-shadow: 0 2px 8px rgba(65, 105, 225, 0.25);\n}\n\n.bk-matrix-item:active {\n cursor: grabbing;\n}\n\n.bk-matrix-item.dragging {\n box-shadow: 0 4px 16px rgba(65, 105, 225, 0.4);\n z-index: 10;\n}\n\n/* ─── 8. bk-split (side-by-side comparison) ─── */\n\n.bk-split {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 1rem;\n}\n\n.bk-split-panel {\n padding: 1.25rem;\n background: var(--bk-surface);\n border: 1.5px solid var(--bk-border);\n border-radius: var(--bk-radius-lg);\n box-shadow: var(--bk-shadow);\n}\n\n.bk-split-panel h3 {\n font-size: 0.95rem;\n font-weight: 600;\n margin-bottom: 0.5rem;\n color: var(--bk-text);\n}\n\n.bk-split-panel p,\n.bk-split-panel ul,\n.bk-split-panel ol {\n font-size: 0.85rem;\n color: var(--bk-text-muted);\n line-height: 1.6;\n}\n\n/* ─── 9. bk-pros-cons ─── */\n\n.bk-pros-cons {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 1rem;\n}\n\n.bk-pros,\n.bk-cons {\n padding: 1.25rem;\n border-radius: var(--bk-radius-lg);\n}\n\n.bk-pros {\n background: rgba(47, 143, 107, 0.08);\n border: 1.5px solid rgba(47, 143, 107, 0.2);\n}\n\n.bk-cons {\n background: rgba(201, 77, 93, 0.08);\n border: 1.5px solid rgba(201, 77, 93, 0.2);\n}\n\n.bk-pros h4 {\n color: var(--bk-success);\n}\n.bk-cons h4 {\n color: var(--bk-danger);\n}\n\n.bk-pros h4,\n.bk-cons h4 {\n font-size: 0.85rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n margin-bottom: 0.5rem;\n}\n\n.bk-pros ul,\n.bk-cons ul {\n list-style: none;\n padding: 0;\n}\n\n.bk-pros li,\n.bk-cons li {\n font-size: 0.85rem;\n color: var(--bk-text);\n padding: 0.25rem 0;\n line-height: 1.5;\n}\n\n.bk-pros li::before {\n content: "+ ";\n color: var(--bk-success);\n font-weight: 600;\n}\n.bk-cons li::before {\n content: "- ";\n color: var(--bk-danger);\n font-weight: 600;\n}\n\n/* ─── 10. bk-mockup (wireframe container) ─── */\n\n.bk-mockup {\n background: var(--bk-surface);\n border: 1.5px solid var(--bk-border);\n border-radius: var(--bk-radius-lg);\n overflow: hidden;\n box-shadow: var(--bk-shadow);\n}\n\n.bk-mockup-header {\n padding: 0.75rem 1rem;\n font-size: 0.8rem;\n font-weight: 600;\n color: var(--bk-text-muted);\n background: var(--bk-surface-soft);\n border-bottom: 1px solid var(--bk-border);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.bk-mockup-header::before {\n content: "";\n display: flex;\n gap: 0.25rem;\n width: 3rem;\n height: 0.5rem;\n background:\n radial-gradient(\n circle at 0.25rem 0.25rem,\n var(--bk-danger) 3.5px,\n transparent 4px\n ),\n radial-gradient(\n circle at 1rem 0.25rem,\n var(--bk-warning) 3.5px,\n transparent 4px\n ),\n radial-gradient(\n circle at 1.75rem 0.25rem,\n var(--bk-success) 3.5px,\n transparent 4px\n );\n}\n\n.bk-mockup-body {\n padding: 1rem;\n min-height: 200px;\n}\n\n.bk-mock-nav {\n padding: 0.5rem 0.75rem;\n background: var(--bk-surface-soft);\n border-radius: var(--bk-radius-sm);\n font-size: 0.75rem;\n color: var(--bk-text-muted);\n margin-bottom: 0.75rem;\n}\n\n.bk-mock-content {\n padding: 0.75rem;\n background: var(--bk-surface-strong);\n border-radius: var(--bk-radius-sm);\n font-size: 0.8rem;\n color: var(--bk-text-muted);\n min-height: 120px;\n}\n\n/* ─── 10b. bk-mockup-gallery (selectable mockup cards) ─── */\n\n.bk-mockup-gallery {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));\n gap: 1rem;\n}\n\n.bk-mockup-item {\n background: var(--bk-surface);\n border: 1.5px solid var(--bk-border);\n border-radius: var(--bk-radius-lg);\n overflow: hidden;\n cursor: pointer;\n transition:\n border-color 0.15s,\n box-shadow 0.15s;\n box-shadow: var(--bk-shadow);\n}\n\n.bk-mockup-item:hover {\n border-color: var(--bk-primary);\n}\n\n.bk-mockup-item.selected {\n border-color: var(--bk-primary);\n box-shadow: 0 0 0 3px rgba(65, 105, 225, 0.2);\n}\n\n.bk-mockup-preview {\n padding: 0.75rem;\n background: var(--bk-surface-soft);\n border-bottom: 1px solid var(--bk-border);\n}\n\n.bk-mockup-frame {\n width: 100%;\n aspect-ratio: 4/3;\n background: var(--bk-surface);\n border-radius: var(--bk-radius-sm);\n overflow: hidden;\n border: 1px solid var(--bk-border);\n}\n\n.bk-mockup-label {\n padding: 0.625rem 0.875rem 0.25rem;\n font-size: 0.9rem;\n font-weight: 600;\n color: var(--bk-text);\n}\n\n.bk-mockup-desc {\n padding: 0 0.875rem 0.75rem;\n font-size: 0.8rem;\n color: var(--bk-text-muted);\n}\n\n/* ─── 11. bk-timeline ─── */\n\n.bk-timeline {\n display: flex;\n flex-direction: column;\n gap: 0;\n padding-left: 1.5rem;\n position: relative;\n}\n\n.bk-timeline::before {\n content: "";\n position: absolute;\n left: 0.5rem;\n top: 0.5rem;\n bottom: 0.5rem;\n width: 2px;\n background: var(--bk-border);\n}\n\n.bk-timeline-item {\n position: relative;\n padding: 0.75rem 0 0.75rem 1.25rem;\n font-size: 0.9rem;\n}\n\n.bk-timeline-item::before {\n content: "";\n position: absolute;\n left: -1.25rem;\n top: 1rem;\n width: 0.75rem;\n height: 0.75rem;\n border-radius: 50%;\n border: 2px solid var(--bk-border);\n background: var(--bk-surface);\n}\n\n.bk-timeline-item[data-status="done"]::before {\n background: var(--bk-success);\n border-color: var(--bk-success);\n}\n\n.bk-timeline-item[data-status="current"]::before {\n background: var(--bk-primary);\n border-color: var(--bk-primary);\n box-shadow: 0 0 0 3px rgba(65, 105, 225, 0.2);\n}\n\n.bk-timeline-item[data-status="pending"]::before {\n background: var(--bk-surface);\n border-color: var(--bk-border);\n}\n\n.bk-timeline-item[data-status="done"] {\n color: var(--bk-text-muted);\n}\n\n.bk-timeline-item[data-status="current"] {\n font-weight: 600;\n color: var(--bk-primary);\n}\n\n.bk-timeline-item[data-status="pending"] {\n color: var(--bk-text-muted);\n opacity: 0.7;\n}\n\n </style>\n </head>\n <body>\n <div class="bk-vs-container">\n <div class="bk-vs-content">{{AGENT_CONTENT}}</div>\n <div class="bk-vs-footer">\n <div class="bk-vs-status"></div>\n <button class="bk-vs-submit" disabled>확인</button>\n </div>\n </div>\n <script>\n /**\n * VS Design System — helper.js\n * ~200 lines vanilla JS. Runs inside iframe sandbox.\n * Handles: select, check, slider, ranking (drag), matrix (drag), submit.\n */\n(function () {\n "use strict";\n\n const COMMENTABLE_SELECTOR =\n ".bk-option, .bk-card, .bk-code-option, .bk-mockup-item, .bk-check-item";\n\n /* ── i18n ── */\n const UI_TEXT = {\n ko: {\n submit: "확인",\n submitted: "✓ 제출됨",\n selected: "{n}개 선택됨",\n detailsLabel: "추가 요청사항",\n detailsPlaceholder: "선택 이유나 보완 요청을 적어주세요",\n required: "필수",\n requiredComment: "선택한 항목에 대한 코멘트를 입력해 주세요",\n requiredField: "필수 입력 항목을 채워 주세요",\n },\n en: {\n submit: "Submit",\n submitted: "✓ Submitted",\n selected: "{n} selected",\n detailsLabel: "Additional details",\n detailsPlaceholder: "Add your reasoning or requested changes",\n required: "Required",\n requiredComment: "Add a comment for the selected option",\n requiredField: "Fill in the required fields",\n },\n };\n const lang = document.documentElement.dataset.lang || "en";\n const t = UI_TEXT[lang] || UI_TEXT.en;\n\n /* ── State ── */\n let hasInteracted = false;\n\n /* ── Init ── */\n function initVS() {\n bindSelectables(".bk-options", ".bk-option");\n bindSelectables(".bk-cards", ".bk-card");\n bindSelectables(".bk-code-compare", ".bk-code-option");\n bindSelectables(".bk-mockup-gallery", ".bk-mockup-item");\n bindOrphanMockupItems();\n bindChecklist();\n bindSliders();\n bindRanking();\n bindMatrix();\n bindFields();\n bindOptionComments();\n\n const btn = document.querySelector(".bk-vs-submit");\n if (btn) {\n btn.textContent = t.submit;\n btn.addEventListener("click", handleSubmit);\n }\n\n updateSubmitState();\n }\n\n /* ── Single-select toggle ── */\n function bindSelectables(containerSel, itemSel) {\n document.querySelectorAll(containerSel).forEach(function (container) {\n container.querySelectorAll(itemSel).forEach(function (item) {\n item.addEventListener("click", function () {\n toggleSelect(container, item, itemSel);\n });\n });\n });\n }\n\n function toggleSelect(container, item, itemSel) {\n var wasSelected = item.classList.contains("selected");\n container.querySelectorAll(itemSel).forEach(function (el) {\n el.classList.remove("selected");\n });\n if (!wasSelected) item.classList.add("selected");\n hasInteracted = true;\n syncConditionalFields();\n updateSubmitState();\n }\n\n /* ── bk-mockup-item without .bk-mockup-gallery wrapper ── */\n function bindOrphanMockupItems() {\n var orphans = [];\n document.querySelectorAll(".bk-mockup-item").forEach(function (item) {\n if (!item.closest(".bk-mockup-gallery")) orphans.push(item);\n });\n if (orphans.length === 0) return;\n orphans.forEach(function (item) {\n item.addEventListener("click", function () {\n var wasSelected = item.classList.contains("selected");\n orphans.forEach(function (el) {\n el.classList.remove("selected");\n });\n if (!wasSelected) item.classList.add("selected");\n hasInteracted = true;\n syncConditionalFields();\n updateSubmitState();\n });\n });\n }\n\n /* ── Multi-select checklist ── */\n function bindChecklist() {\n document.querySelectorAll(".bk-checklist").forEach(function (list) {\n list.querySelectorAll(".bk-check-item").forEach(function (item) {\n /* Apply defaults */\n if (item.hasAttribute("data-checked")) item.classList.add("checked");\n item.addEventListener("click", function () {\n toggleCheck(item);\n });\n });\n });\n }\n\n function toggleCheck(item) {\n item.classList.toggle("checked");\n hasInteracted = true;\n syncConditionalFields();\n updateSubmitState();\n }\n\n function bindFields() {\n document.querySelectorAll(".bk-textarea").forEach(function (container) {\n if (container.querySelector("textarea")) return;\n var textarea = document.createElement("textarea");\n textarea.className = "bk-textarea-control";\n textarea.name = container.dataset.name || "";\n textarea.placeholder = container.dataset.placeholder || "";\n textarea.rows = Number(container.dataset.rows || 4);\n if (container.dataset.maxlength) {\n textarea.maxLength = Number(container.dataset.maxlength);\n }\n mountField(container, textarea);\n });\n\n document.querySelectorAll(".bk-input").forEach(function (container) {\n if (container.querySelector("input")) return;\n var input = document.createElement("input");\n input.className = "bk-input-control";\n input.name = container.dataset.name || "";\n input.type = container.dataset.type || "text";\n input.placeholder = container.dataset.placeholder || "";\n if (container.dataset.maxlength) {\n input.maxLength = Number(container.dataset.maxlength);\n }\n mountField(container, input);\n });\n }\n\n function mountField(container, control) {\n container.classList.add("bk-field");\n\n if (container.dataset.label) {\n var label = document.createElement("label");\n label.className = "bk-field-label";\n label.textContent = container.dataset.label;\n if (container.hasAttribute("data-required")) {\n var required = document.createElement("span");\n required.className = "required";\n required.textContent = "*";\n label.appendChild(required);\n }\n container.appendChild(label);\n }\n\n if (container.dataset.help) {\n var help = document.createElement("div");\n help.className = "bk-field-help";\n help.textContent = container.dataset.help;\n container.appendChild(help);\n }\n\n control.addEventListener("click", function (e) {\n e.stopPropagation();\n });\n control.addEventListener("input", function () {\n hasInteracted = true;\n updateSubmitState();\n });\n\n container.appendChild(control);\n }\n\n function bindOptionComments() {\n document.querySelectorAll(COMMENTABLE_SELECTOR).forEach(function (item) {\n var needsComment =\n item.hasAttribute("data-requires-comment") ||\n !!item.dataset.commentName;\n if (!needsComment || item.querySelector(".bk-option-comment")) return;\n\n var wrapper = document.createElement("div");\n wrapper.className = "bk-option-comment";\n wrapper.hidden = true;\n\n var label = document.createElement("label");\n label.className = "bk-field-label";\n label.textContent = item.dataset.commentLabel || t.detailsLabel;\n if (item.hasAttribute("data-requires-comment")) {\n var required = document.createElement("span");\n required.className = "required";\n required.textContent = "*";\n label.appendChild(required);\n }\n wrapper.appendChild(label);\n\n var textarea = document.createElement("textarea");\n textarea.className = "bk-textarea-control";\n textarea.placeholder =\n item.dataset.commentPlaceholder || t.detailsPlaceholder;\n textarea.rows = Number(item.dataset.commentRows || 3);\n textarea.addEventListener("click", function (e) {\n e.stopPropagation();\n });\n textarea.addEventListener("input", function () {\n hasInteracted = true;\n updateSubmitState();\n });\n wrapper.appendChild(textarea);\n\n item.appendChild(wrapper);\n });\n\n syncConditionalFields();\n }\n\n function syncConditionalFields() {\n document.querySelectorAll(COMMENTABLE_SELECTOR).forEach(function (item) {\n var comment = item.querySelector(".bk-option-comment");\n if (!comment) return;\n var selected =\n item.classList.contains("selected") ||\n item.classList.contains("checked");\n comment.hidden = !selected;\n });\n }\n\n function readControlValue(container) {\n var control = container.querySelector("input, textarea");\n if (!control) return "";\n return String(control.value || "").trim();\n }\n\n function collectStandaloneFields(state) {\n var fields = {};\n var hasFields = false;\n\n document.querySelectorAll(".bk-textarea, .bk-input").forEach(function (el) {\n var name = el.dataset.name;\n if (!name) return;\n var value = readControlValue(el);\n if (!value) return;\n if (el.dataset.responseKey === "comment" || name === "comment") {\n state.comment = value;\n return;\n }\n fields[name] = value;\n hasFields = true;\n });\n\n if (hasFields) state.fields = fields;\n }\n\n function collectOptionComments(state) {\n var optionComments = {};\n var optionCommentCount = 0;\n var fields = state.fields || {};\n var hasFields = !!state.fields;\n\n document.querySelectorAll(COMMENTABLE_SELECTOR).forEach(function (item) {\n var selected =\n item.classList.contains("selected") ||\n item.classList.contains("checked");\n if (!selected) return;\n var commentWrap = item.querySelector(".bk-option-comment");\n if (!commentWrap) return;\n var textarea = commentWrap.querySelector("textarea");\n var value = textarea ? String(textarea.value || "").trim() : "";\n if (!value) return;\n if (item.dataset.value) {\n optionComments[item.dataset.value] = value;\n optionCommentCount += 1;\n }\n if (item.dataset.commentName) {\n fields[item.dataset.commentName] = value;\n hasFields = true;\n }\n });\n\n if (optionCommentCount > 0) state.option_comments = optionComments;\n if (hasFields) state.fields = fields;\n }\n\n function getValidationError() {\n var requiredFieldMissing = false;\n document.querySelectorAll(".bk-textarea, .bk-input").forEach(function (el) {\n if (!el.hasAttribute("data-required")) return;\n if (!readControlValue(el)) requiredFieldMissing = true;\n });\n if (requiredFieldMissing) return t.requiredField;\n\n var requiredCommentMissing = false;\n document.querySelectorAll(COMMENTABLE_SELECTOR).forEach(function (item) {\n var selected =\n item.classList.contains("selected") ||\n item.classList.contains("checked");\n if (!selected || !item.hasAttribute("data-requires-comment")) return;\n var commentWrap = item.querySelector(".bk-option-comment");\n if (!commentWrap || !readControlValue(commentWrap)) {\n requiredCommentMissing = true;\n }\n });\n if (requiredCommentMissing) return t.requiredComment;\n\n return "";\n }\n\n /* ── Sliders ── */\n function bindSliders() {\n document.querySelectorAll(".bk-slider").forEach(function (container) {\n var min = Number(container.dataset.min || 0);\n var max = Number(container.dataset.max || 100);\n var val = Number(container.dataset.value || Math.round((min + max) / 2));\n var unit = container.dataset.unit || "";\n\n var controls = document.createElement("div");\n controls.className = "bk-slider-controls";\n\n var input = document.createElement("input");\n input.type = "range";\n input.min = min;\n input.max = max;\n input.value = val;\n\n var display = document.createElement("span");\n display.className = "bk-slider-value";\n display.textContent = val + unit;\n\n input.addEventListener("input", function () {\n display.textContent = input.value + unit;\n container.dataset.value = input.value;\n hasInteracted = true;\n updateSubmitState();\n });\n\n controls.appendChild(input);\n controls.appendChild(display);\n container.appendChild(controls);\n });\n }\n\n /* ── Ranking (HTML5 drag-and-drop) ── */\n function bindRanking() {\n document.querySelectorAll(".bk-ranking").forEach(function (list) {\n var items = list.querySelectorAll(".bk-rank-item");\n items.forEach(function (item, i) {\n /* Add rank number */\n var num = document.createElement("span");\n num.className = "bk-rank-number";\n num.textContent = String(i + 1);\n item.insertBefore(num, item.firstChild);\n\n /* Add grip icon */\n var grip = document.createElement("span");\n grip.className = "bk-rank-grip";\n grip.textContent = "\\u2261";\n item.appendChild(grip);\n\n item.setAttribute("draggable", "true");\n\n item.addEventListener("dragstart", function (e) {\n item.classList.add("dragging");\n e.dataTransfer.effectAllowed = "move";\n e.dataTransfer.setData("text/plain", "");\n });\n\n item.addEventListener("dragend", function () {\n item.classList.remove("dragging");\n list.querySelectorAll(".bk-rank-item").forEach(function (el) {\n el.classList.remove("drag-over");\n });\n renumberRanking(list);\n hasInteracted = true;\n updateSubmitState();\n });\n\n item.addEventListener("dragover", function (e) {\n e.preventDefault();\n e.dataTransfer.dropEffect = "move";\n var dragging = list.querySelector(".dragging");\n if (dragging && dragging !== item) {\n item.classList.add("drag-over");\n var rect = item.getBoundingClientRect();\n var mid = rect.top + rect.height / 2;\n if (e.clientY < mid) {\n list.insertBefore(dragging, item);\n } else {\n list.insertBefore(dragging, item.nextSibling);\n }\n }\n });\n\n item.addEventListener("dragleave", function () {\n item.classList.remove("drag-over");\n });\n });\n });\n }\n\n function renumberRanking(list) {\n list.querySelectorAll(".bk-rank-item").forEach(function (item, i) {\n var num = item.querySelector(".bk-rank-number");\n if (num) num.textContent = String(i + 1);\n });\n }\n\n /* ── Matrix (mouse/touch drag placement) ── */\n function bindMatrix() {\n document.querySelectorAll(".bk-matrix").forEach(function (container) {\n /* Build grid overlay */\n var grid = document.createElement("div");\n grid.className = "bk-matrix-grid";\n container.appendChild(grid);\n\n /* Add axis labels */\n var xLabel = document.createElement("div");\n xLabel.className = "bk-matrix-x-label";\n xLabel.textContent = container.dataset.xLabel || "X";\n container.appendChild(xLabel);\n\n var yLabel = document.createElement("div");\n yLabel.className = "bk-matrix-y-label";\n yLabel.textContent = container.dataset.yLabel || "Y";\n container.appendChild(yLabel);\n\n /* Position items */\n var items = container.querySelectorAll(".bk-matrix-item");\n var n = items.length;\n items.forEach(function (item, i) {\n /* Default spread: distribute items in center area */\n var dx =\n item.dataset.x !== undefined\n ? Number(item.dataset.x)\n : 0.3 + 0.4 * (i / Math.max(n - 1, 1));\n var dy =\n item.dataset.y !== undefined\n ? Number(item.dataset.y)\n : 0.3 + 0.4 * (i / Math.max(n - 1, 1));\n placeMatrixItem(item, container, dx, dy);\n makeMatrixDraggable(item, container);\n });\n });\n }\n\n function placeMatrixItem(item, container, x, y) {\n item.dataset.x = String(Math.max(0, Math.min(1, x)).toFixed(2));\n item.dataset.y = String(Math.max(0, Math.min(1, y)).toFixed(2));\n /* CSS uses left/bottom but we need top offset (y inverted: 1=top, 0=bottom) */\n var pad = 40; /* px padding for labels */\n item.style.left = pad + x * (container.clientWidth - 2 * pad) + "px";\n item.style.top = pad + (1 - y) * (container.clientHeight - 2 * pad) + "px";\n item.style.transform = "translate(-50%, -50%)";\n }\n\n function makeMatrixDraggable(item, container) {\n function onStart(e) {\n e.preventDefault();\n item.classList.add("dragging");\n document.addEventListener("mousemove", onMove);\n document.addEventListener("mouseup", onEnd);\n document.addEventListener("touchmove", onMove, { passive: false });\n document.addEventListener("touchend", onEnd);\n }\n\n function onMove(e) {\n e.preventDefault();\n var pt = e.touches ? e.touches[0] : e;\n var rect = container.getBoundingClientRect();\n var pad = 40;\n var x = Math.max(\n 0,\n Math.min(1, (pt.clientX - rect.left - pad) / (rect.width - 2 * pad)),\n );\n var y = Math.max(\n 0,\n Math.min(\n 1,\n 1 - (pt.clientY - rect.top - pad) / (rect.height - 2 * pad),\n ),\n );\n placeMatrixItem(item, container, x, y);\n }\n\n function onEnd() {\n item.classList.remove("dragging");\n document.removeEventListener("mousemove", onMove);\n document.removeEventListener("mouseup", onEnd);\n document.removeEventListener("touchmove", onMove);\n document.removeEventListener("touchend", onEnd);\n hasInteracted = true;\n updateSubmitState();\n }\n\n item.addEventListener("mousedown", onStart);\n item.addEventListener("touchstart", onStart, { passive: false });\n }\n\n /* ── Collect State ── */\n function collectState() {\n var state = {};\n\n /* selections: bk-options, bk-cards, bk-code-compare (single select) */\n var selections = [];\n document\n .querySelectorAll(\n ".bk-option.selected, .bk-card.selected, .bk-code-option.selected, .bk-mockup-item.selected",\n )\n .forEach(function (el) {\n if (el.dataset.value) selections.push(el.dataset.value);\n });\n /* bk-checklist (multi select) */\n document.querySelectorAll(".bk-check-item.checked").forEach(function (el) {\n if (el.dataset.value) selections.push(el.dataset.value);\n });\n if (selections.length > 0) state.selections = selections;\n\n /* values: bk-slider */\n var values = {};\n var hasValues = false;\n document.querySelectorAll(".bk-slider").forEach(function (el) {\n if (el.dataset.name && el.dataset.value !== undefined) {\n values[el.dataset.name] = Number(el.dataset.value);\n hasValues = true;\n }\n });\n if (hasValues) state.values = values;\n\n /* ranking: bk-ranking */\n document.querySelectorAll(".bk-ranking").forEach(function (list) {\n var order = [];\n list.querySelectorAll(".bk-rank-item").forEach(function (item) {\n if (item.dataset.value) order.push(item.dataset.value);\n });\n if (order.length > 0) state.ranking = order;\n });\n\n /* matrix: bk-matrix */\n var matrix = {};\n var hasMatrix = false;\n document.querySelectorAll(".bk-matrix-item").forEach(function (item) {\n if (item.dataset.value) {\n matrix[item.dataset.value] = {\n x: Number(Number(item.dataset.x).toFixed(2)),\n y: Number(Number(item.dataset.y).toFixed(2)),\n };\n hasMatrix = true;\n }\n });\n if (hasMatrix) state.matrix = matrix;\n\n collectStandaloneFields(state);\n collectOptionComments(state);\n\n return state;\n }\n\n /* ── Submit ── */\n function handleSubmit() {\n var btn = document.querySelector(".bk-vs-submit");\n if (!btn || btn.disabled) return;\n var data = collectState();\n window.parent.postMessage({ type: "bk_visual_submit", data: data }, "*");\n btn.disabled = true;\n btn.classList.add("submitted");\n btn.textContent = t.submitted;\n var status = document.querySelector(".bk-vs-status");\n if (status) status.textContent = t.submitted;\n }\n\n /* ── Submit State ── */\n function updateSubmitState() {\n var btn = document.querySelector(".bk-vs-submit");\n if (!btn || btn.classList.contains("submitted")) return;\n var status = document.querySelector(".bk-vs-status");\n var validationError = getValidationError();\n var hasRequiredFields = !!document.querySelector(\n ".bk-input[data-required], .bk-textarea[data-required]",\n );\n var hasInteractable = document.querySelector(\n ".bk-options, .bk-cards, .bk-checklist, .bk-code-compare, .bk-slider, .bk-ranking, .bk-matrix, .bk-mockup-gallery, .bk-mockup-item, .bk-textarea, .bk-input",\n );\n // Required fields present → validation error alone gates the button.\n // No required fields → require at least one interaction before enabling.\n if (hasRequiredFields) {\n btn.disabled = !!validationError;\n } else {\n btn.disabled = !(hasInteractable && hasInteracted);\n }\n if (status) status.textContent = validationError;\n }\n\n /* ── Boot ── */\n if (document.readyState === "loading") {\n document.addEventListener("DOMContentLoaded", initVS);\n } else {\n initVS();\n }\n})();\n\n <\/script>\n </body>\n</html>\n'},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11525:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f,metadata:()=>e});var d=c(5735);let e={title:"Tasks"};function f({children:a}){return(0,d.jsx)(d.Fragment,{children:a})}},13576:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(63871).A)("clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]])},17891:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/get-segment-param")},18677:(a,b,c)=>{Promise.resolve().then(c.bind(c,32054))},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},22341:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(63871).A)("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]])},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},28354:a=>{"use strict";a.exports=require("util")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},32054:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/dante/workspace/dante-code/projects/bluekiwi/src/app/(app)/tasks/[id]/page.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/dante/workspace/dante-code/projects/bluekiwi/src/app/(app)/tasks/[id]/page.tsx","default")},33873:a=>{"use strict";a.exports=require("path")},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},42742:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(63871).A)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]])},42855:(a,b,c)=>{"use strict";function d(a,[b,c]){return Math.min(c,Math.max(b,a))}c.d(b,{q:()=>d})},43954:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/interception-routes")},54183:(a,b,c)=>{"use strict";c.d(b,{S:()=>g});var d=c(67484);let e=process.env.NEXT_PUBLIC_WS_URL?process.env.NEXT_PUBLIC_WS_URL:null,f=e?e.replace(/^http/,"ws"):null;function g(a){let b=(0,d.useRef)(null),c=(0,d.useRef)(a),g=(0,d.useRef)(()=>{}),h=(0,d.useRef)(null),i=(0,d.useRef)(!1);(0,d.useCallback)(()=>{if(f&&e&&b.current?.readyState!==WebSocket.OPEN&&b.current?.readyState!==WebSocket.CONNECTING)try{let a=()=>{let a=new WebSocket(f);a.onmessage=a=>{try{let b=JSON.parse(a.data);c.current(b)}catch{}},a.onclose=()=>{b.current=null,null!==h.current&&window.clearTimeout(h.current),h.current=window.setTimeout(()=>g.current(),3e3)},a.onerror=()=>{a.close()},b.current=a};if(i.current)return void a();fetch(`${e}/health`).then(b=>{if(!b.ok)throw Error("ws relay unavailable");i.current=!0,a()}).catch(()=>{i.current=!1})}catch{null!==h.current&&window.clearTimeout(h.current),h.current=window.setTimeout(()=>g.current(),3e3)}},[])}},60533:(a,b,c)=>{Promise.resolve().then(c.bind(c,92442))},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},63647:(a,b,c)=>{"use strict";c.d(b,{BT:()=>i,Wu:()=>j,ZB:()=>h,Zp:()=>f,aR:()=>g});var d=c(48249);c(67484);var e=c(14490);function f({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card",className:(0,e.cn)("flex flex-col rounded-[1.5rem] border border-border bg-card text-card-foreground shadow-card",a),...b})}function g({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card-header",className:(0,e.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 p-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",a),...b})}function h({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card-title",className:(0,e.cn)("leading-none font-semibold",a),...b})}function i({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card-description",className:(0,e.cn)("text-sm text-muted-foreground",a),...b})}function j({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card-content",className:(0,e.cn)("px-6 pb-6",a),...b})}},68810:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>M,handler:()=>O,routeModule:()=>N});var d=c(7553),e=c(84006),f=c(67798),g=c(34775),h=c(99373),i=c(73461),j=c(1020),k=c(26349),l=c(54365),m=c(16023),n=c(63747),o=c(24235),p=c(23938),q=c(261),r=c(66758),s=c(77243),t=c(26713),u=c(37527),v=c(22820),w=c(88216),x=c(47929),y=c(79551),z=c(71797),A=c(89125),B=c(86439),C=c(77068),D=c(27269),E=c(61287),F=c(81494),G=c(70722),H=c(70753),I=c(43954),J=c(17891),K={};for(let a in E)0>["default","__next_app__","routeModule","handler"].indexOf(a)&&(K[a]=()=>E[a]);c.d(b,K);let L={children:["",{children:["(app)",{children:["tasks",{children:["[id]",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,32054)),"/Users/dante/workspace/dante-code/projects/bluekiwi/src/app/(app)/tasks/[id]/page.tsx"]}]},{"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"]},[]]},{layout:[()=>Promise.resolve().then(c.bind(c,11525)),"/Users/dante/workspace/dante-code/projects/bluekiwi/src/app/(app)/tasks/layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"]},[]]},{layout:[()=>Promise.resolve().then(c.bind(c,43560)),"/Users/dante/workspace/dante-code/projects/bluekiwi/src/app/(app)/layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,55091,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,45270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,28193,23)),"next/dist/client/components/builtin/unauthorized.js"]},[]]},{layout:[()=>Promise.resolve().then(c.bind(c,76537)),"/Users/dante/workspace/dante-code/projects/bluekiwi/src/app/layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,55091,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,45270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,28193,23)),"next/dist/client/components/builtin/unauthorized.js"]},[]]}.children,M={require:c,loadChunk:()=>Promise.resolve()},N=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/(app)/tasks/[id]/page",pathname:"/tasks/[id]",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:L},distDir:".next",relativeProjectDir:""});async function O(a,b,d){var K,P,Q,R,S;d.requestMeta&&(0,h.setRequestMeta)(a,d.requestMeta),N.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let T=!!(0,h.getRequestMeta)(a,"minimalMode"),U="/(app)/tasks/[id]/page";"/index"===U&&(U="/");let V=await N.prepare(a,b,{srcPage:U,multiZoneDraftMode:!1});if(!V)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:W,query:X,params:Y,pageIsDynamic:Z,buildManifest:$,nextFontManifest:_,reactLoadableManifest:aa,serverActionsManifest:ab,clientReferenceManifest:ac,subresourceIntegrityManifest:ad,prerenderManifest:ae,isDraftMode:af,resolvedPathname:ag,revalidateOnlyGenerated:ah,routerServerContext:ai,nextConfig:aj,parsedUrl:ak,interceptionRoutePatterns:al,deploymentId:am,clientAssetToken:an}=V,ao=(0,q.normalizeAppPath)(U),{isOnDemandRevalidate:ap}=V,aq=aj.experimental.ppr&&!aj.cacheComponents&&(0,I.isInterceptionRouteAppPath)(ag)?null:N.match(ag,ae),ar=(null==aq?void 0:aq.route)??null,as=!!ae.routes[ag],at=a.headers["user-agent"]||"",au=(0,t.getBotType)(at),av=(0,p.isHtmlBotRequest)(a),aw=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[s.NEXT_ROUTER_PREFETCH_HEADER],ax=(0,h.getRequestMeta)(a,"isRSCRequest")??!!a.headers[s.RSC_HEADER],ay=(0,r.getIsPossibleServerAction)(a),az=(0,m.checkIsAppPPREnabled)(aj.experimental.ppr),aA=a.headers[x.NEXT_RESUME_STATE_LENGTH_HEADER];if(!(0,h.getRequestMeta)(a,"postponed")&&T&&az&&ay&&aA&&"string"==typeof aA){let e=parseInt(aA,10),{maxPostponedStateSize:f,maxPostponedStateSizeBytes:g}=(0,D.getMaxPostponedStateSize)(aj.experimental.maxPostponedStateSize);if(!isNaN(e)&&e>0){if(e>g)return b.statusCode=413,b.end((0,D.getPostponedStateExceededErrorMessage)(f)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let i="1 MB",j=(null==(S=aj.experimental.serverActions)?void 0:S.bodySizeLimit)??i,k=e+(j!==i?c(95726).parse(j):1048576),l=await (0,D.readBodyWithSizeLimit)(a,k);if(null===l)return b.statusCode=413,b.end("Request body exceeded limit. To configure the body size limit for Server Actions, see: https://nextjs.org/docs/app/api-reference/next-config-js/serverActions#bodysizelimit"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;if(l.length>=e){let b=l.subarray(0,e).toString("utf8");(0,h.addRequestMeta)(a,"postponed",b);let c=l.subarray(e);(0,h.addRequestMeta)(a,"actionBody",c)}else throw Object.defineProperty(Error(`invariant: expected ${e} bytes of postponed state but only received ${l.length} bytes`),"__NEXT_ERROR_CODE",{value:"E979",enumerable:!1,configurable:!0})}}if(!(0,h.getRequestMeta)(a,"postponed")&&az&&"1"===a.headers[x.NEXT_RESUME_HEADER]&&"POST"===a.method){let{maxPostponedStateSize:c,maxPostponedStateSizeBytes:e}=(0,D.getMaxPostponedStateSize)(aj.experimental.maxPostponedStateSize),f=await (0,D.readBodyWithSizeLimit)(a,e);if(null===f)return b.statusCode=413,b.end((0,D.getPostponedStateExceededErrorMessage)(c)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let g=f.toString("utf8");(0,h.addRequestMeta)(a,"postponed",g)}let aB=!0===N.isDev||!0===aj.experimental.exposeTestingApiInProductionBuild,aC=aB&&("1"===a.headers[s.NEXT_INSTANT_PREFETCH_HEADER]||void 0===a.headers[s.RSC_HEADER]&&"string"==typeof a.headers.cookie&&a.headers.cookie.includes(s.NEXT_INSTANT_TEST_COOKIE+"=")),aD=(az||aC)&&((null==(K=ae.routes[ao]??ae.dynamicRoutes[ao])?void 0:K.renderingMode)==="PARTIALLY_STATIC"||aC&&(aB||(null==ai?void 0:ai.experimentalTestProxy)===!0)),aE=aC&&aD,aF=aE&&!0===N.isDev,aG=!1,aH=aD?(0,h.getRequestMeta)(a,"postponed"):void 0,aI=null==(P=ae.routes[ag])?void 0:P.prefetchDataRoute,aJ=aD&&ax&&!aw&&!aI;T&&(aJ=aJ&&!!aH);let aK=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),aL=(!au||!aD)&&(!at||(0,p.shouldServeStreamingMetadata)(at,aj.htmlLimitedBots)),aM=!!((ar||as||ae.routes[ao])&&!(au&&aD)),aN=aD&&!0===aj.cacheComponents,aO=!0===N.isDev||!aM||"string"==typeof aH||(aN&&(0,h.getRequestMeta)(a,"onCacheEntryV2")?aJ&&!T:aJ),aP=!!au&&aD,aQ=(null==ar?void 0:ar.remainingPrerenderableParams)??[],aR=(null==ar?void 0:ar.fallback)===null&&((null==(Q=ar.fallbackRootParams)?void 0:Q.length)??0)>0,aS=null;if(!af&&aM&&!aO&&!ay&&!aH&&!aJ){let a=aq?"string"==typeof(null==ar?void 0:ar.fallback)?ar.fallback:aq.source:null;if(!0===aj.experimental.partialFallbacks&&a&&(null==ar?void 0:ar.fallbackRouteParams)&&!aR){if(aQ.length>0){let b,c=(b=new Map(aQ.map(a=>[a.paramName,a])),a.split("/").map(a=>{let c=(0,J.getSegmentParam)(a);if(!c)return a;let d=b.get(c.paramName);if(!d)return a;let e=null==Y?void 0:Y[d.paramName];if(!e)return a;let f=Array.isArray(e)?e.map(a=>encodeURIComponent(a)).join("/"):encodeURIComponent(e);return a.replace(function(a){let{repeat:b,optional:c}=(0,J.getParamProperties)(a.paramType);return c?`[[...${a.paramName}]]`:b?`[...${a.paramName}]`:`[${a.paramName}]`}(d),f)}).join("/")||"/");aS=c!==a?c:null}}else aS=ag}let aT=aS;!aT&&(N.isDev||aM&&Z&&(null==ar?void 0:ar.fallbackRouteParams)&&!ay)&&(aT=ag),N.isDev||af||!aM||!ax||aJ||(0,k.d)(a.headers);let aU={...E,tree:L,handler:O,routeModule:N,__next_app__:M};ab&&ac&&(0,o.setManifestsSingleton)({page:U,clientReferenceManifest:ac,serverActionsManifest:ab});let aV=a.method||"GET",aW=(0,g.getTracer)(),aX=aW.getActiveScopeSpan(),aY=!!(null==ai?void 0:ai.isWrappedByNextServer),aZ=!0===aj.experimental.partialFallbacks&&aQ.length>0?(null==ar||null==(R=ar.fallbackRouteParams)?void 0:R.filter(a=>!aQ.some(b=>b.paramName===a.paramName)))??[]:[],a$=async()=>((null==ai?void 0:ai.render404)?await ai.render404(a,b,ak,!1):b.end("This page could not be found"),null);try{let f,k=N.getVaryHeader(ag,al);b.setHeader("Vary",k);let m=async(c,d)=>{let e=new l.NodeNextRequest(a),g=new l.NodeNextResponse(b);return N.render(e,g,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aW.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let d=a.get("next.route");if(d){let a=`${aV} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a),f&&f!==c&&(f.setAttribute("http.route",d),f.updateName(a))}else c.updateName(`${aV} ${U}`)})},o=(0,h.getRequestMeta)(a,"incrementalCache")||await N.getIncrementalCache(a,aj,ae,T);null==o||o.resetRequestCache(),globalThis.__incrementalCache=o;let p=async({span:e,postponed:f,fallbackRouteParams:g,forceStaticRender:i})=>{let k={query:X,params:Y,page:ao,sharedContext:{buildId:W,deploymentId:am,clientAssetToken:an},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aU,Component:(0,j.T)(aU),params:Y,routeModule:N,page:U,postponed:f,shouldWaitOnAllReady:aP,serveStreamingMetadata:aL,supportsDynamicResponse:"string"==typeof f||aO,buildManifest:$,nextFontManifest:_,reactLoadableManifest:aa,subresourceIntegrityManifest:ad,setCacheStatus:null==ai?void 0:ai.setCacheStatus,setIsrStatus:null==ai?void 0:ai.setIsrStatus,setReactDebugChannel:null==ai?void 0:ai.setReactDebugChannel,sendErrorsToBrowser:null==ai?void 0:ai.sendErrorsToBrowser,dir:c(33873).join(process.cwd(),N.relativeProjectDir),isDraftMode:af,botType:au,isOnDemandRevalidate:ap,isPossibleServerAction:ay,assetPrefix:aj.assetPrefix,nextConfigOutput:aj.output,crossOrigin:aj.crossOrigin,trailingSlash:aj.trailingSlash,images:aj.images,previewProps:ae.preview,enableTainting:aj.experimental.taint,htmlLimitedBots:aj.htmlLimitedBots,reactMaxHeadersLength:aj.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:o,cacheLifeProfiles:aj.cacheLife,basePath:aj.basePath,serverActions:aj.experimental.serverActions,logServerFunctions:"object"==typeof aj.logging&&!!aj.logging.serverFunctions,...aE||aF||aG?{isBuildTimePrerendering:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:aF}:{},cacheComponents:!!aj.cacheComponents,experimental:{isRoutePPREnabled:aD,expireTime:aj.expireTime,staleTimes:aj.experimental.staleTimes,dynamicOnHover:!!aj.experimental.dynamicOnHover,optimisticRouting:!!aj.experimental.optimisticRouting,inlineCss:!!aj.experimental.inlineCss,prefetchInlining:aj.experimental.prefetchInlining??!1,authInterrupts:!!aj.experimental.authInterrupts,cachedNavigations:!!aj.experimental.cachedNavigations,clientTraceMetadata:aj.experimental.clientTraceMetadata||[],clientParamParsingOrigins:aj.experimental.clientParamParsingOrigins,maxPostponedStateSizeBytes:(0,C.parseMaxPostponedStateSize)(aj.experimental.maxPostponedStateSize)},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>N.onRequestError(a,b,d,e,ai),err:(0,h.getRequestMeta)(a,"invokeError")}};i&&(k.renderOpts.supportsDynamicResponse=!1);let l=await m(e,k),{metadata:n}=l,{cacheControl:p,headers:q={},fetchTags:r,fetchMetrics:s}=n;if(r&&(q[x.NEXT_CACHE_TAGS_HEADER]=r),a.fetchMetrics=s,aM&&(null==p?void 0:p.revalidate)===0&&!N.isDev&&!aD){let a=n.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${ag}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
2
- see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:u.CachedRouteKind.APP_PAGE,html:l,headers:q,rscData:n.flightData,postponed:n.postponed,status:n.statusCode,segmentData:n.segmentData},cacheControl:p}},q=async({hasResolved:c,previousCacheEntry:f,isRevalidating:g,span:i,forceStaticRender:j=!1})=>{let k,l=!1===N.isDev,m=c||b.writableEnded;if(ap&&ah&&!f&&!T)return(null==ai?void 0:ai.render404)?await ai.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(ar&&(k=(0,v.parseFallbackField)(ar.fallback)),!0===aj.experimental.partialFallbacks&&(null==ar?void 0:ar.fallback)===null&&!aR&&aQ.length>0&&(k=v.FallbackMode.PRERENDER),k===v.FallbackMode.PRERENDER&&(0,t.isBot)(at)&&(!aD||av)&&(k=v.FallbackMode.BLOCKING_STATIC_RENDER),(null==f?void 0:f.isStale)===-1&&(ap=!0),ap&&(k!==v.FallbackMode.NOT_FOUND||f)&&(k=v.FallbackMode.BLOCKING_STATIC_RENDER),!T&&k!==v.FallbackMode.BLOCKING_STATIC_RENDER&&aT&&!m&&!af&&Z&&(l||!as)){if((l||ar)&&k===v.FallbackMode.NOT_FOUND){if(aj.adapterPath)return await a$();throw new B.NoFallbackError}if(aD&&(aj.cacheComponents?!aJ:!ax)){let b=l&&"string"==typeof(null==ar?void 0:ar.fallback)?ar.fallback:ao,f=(l||aE)&&(null==ar?void 0:ar.fallbackRouteParams)?(0,n.createOpaqueFallbackRouteParams)(ar.fallbackRouteParams):aG?(0,n.getFallbackRouteParams)(ao,N):null;aE&&f&&(0,h.addRequestMeta)(a,"fallbackParams",f);let g=await N.handleResponse({cacheKey:b,req:a,nextConfig:aj,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:ae,isRoutePPREnabled:aD,responseGenerator:async()=>p({span:i,postponed:void 0,fallbackRouteParams:f,forceStaticRender:!0}),waitUntil:d.waitUntil,isMinimalMode:T});if(null===g)return null;if(g)return T||!aD||!(aQ.length>0)||!0!==aj.experimental.partialFallbacks||!aS||!o||ap||aG||aB||aC||aw||(0,H.scheduleOnNextTick)(async()=>{let b=N.getResponseCache(a);try{await b.revalidate(aS,o,aD,!1,a=>p({span:a.span,postponed:void 0,fallbackRouteParams:aZ.length>0?(0,n.createOpaqueFallbackRouteParams)(aZ):null,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}),delete g.cacheControl,g}}let r=ap||g||!aH?void 0:aH;if(aN&&!T&&o&&(aJ||ay)&&!j){let b=await o.get(ag,{kind:u.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});b&&b.value&&b.value.kind===u.CachedRouteKind.APP_PAGE&&(r=b.value.postponed,b&&(-1===b.isStale||!0===b.isStale)&&(0,H.scheduleOnNextTick)(async()=>{let b=N.getResponseCache(a);try{await b.revalidate(ag,o,aD,!1,a=>q({...a,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if((aE||aF)&&void 0!==r)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:u.CachedRouteKind.PAGES,html:w.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let s=(l&&(0,h.getRequestMeta)(a,"renderFallbackShell")||aE&&!as)&&(null==ar?void 0:ar.fallbackRouteParams)?(0,n.createOpaqueFallbackRouteParams)(ar.fallbackRouteParams):aG?(0,n.getFallbackRouteParams)(ao,N):null;if((l||aE)&&aj.cacheComponents&&!as&&(null==ar?void 0:ar.fallbackRouteParams)){let b=(0,n.createOpaqueFallbackRouteParams)(ar.fallbackRouteParams);b&&(0,h.addRequestMeta)(a,"fallbackParams",b)}return p({span:i,postponed:r,fallbackRouteParams:s,forceStaticRender:j})},r=async c=>{var f,g,i,j,k;let l,m=await N.handleResponse({cacheKey:aS,responseGenerator:a=>q({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ap,isRoutePPREnabled:aD,req:a,nextConfig:aj,prerenderManifest:ae,waitUntil:d.waitUntil,isMinimalMode:T});if(af&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),N.isDev&&b.setHeader("Cache-Control","no-cache, must-revalidate"),!m){if(aS)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=m.value)?void 0:f.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=m.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let n="string"==typeof m.value.postponed;ax&&!ay&&am&&b.setHeader(x.NEXT_NAV_DEPLOYMENT_ID_HEADER,am),aM&&!aJ&&(!n||aw)&&(T||b.setHeader("x-nextjs-cache",ap?"REVALIDATED":m.isMiss?"MISS":m.isStale?"STALE":"HIT"),b.setHeader(s.NEXT_IS_PRERENDER_HEADER,"1"));let{value:o}=m;if(aH)l={revalidate:0,expire:void 0};else if(aJ)l={revalidate:0,expire:void 0};else if(!N.isDev)if(af)l={revalidate:0,expire:void 0};else if(aM){if(m.cacheControl)if("number"==typeof m.cacheControl.revalidate){if(m.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${m.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});l={revalidate:m.cacheControl.revalidate,expire:(null==(j=m.cacheControl)?void 0:j.expire)??aj.expireTime}}else l={revalidate:x.CACHE_ONE_YEAR_SECONDS,expire:void 0}}else b.getHeader("Cache-Control")||(l={revalidate:0,expire:void 0});if(m.cacheControl=l,"string"==typeof aK&&(null==o?void 0:o.kind)===u.CachedRouteKind.APP_PAGE&&o.segmentData){b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=o.headers)?void 0:k[x.NEXT_CACHE_TAGS_HEADER];T&&aM&&c&&"string"==typeof c&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,c);let d=o.segmentData.get(aK);return void 0!==d?(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:w.default.fromStatic(d,s.RSC_CONTENT_TYPE_HEADER),cacheControl:m.cacheControl}):(b.statusCode=204,(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:w.default.EMPTY,cacheControl:m.cacheControl}))}let r=aN?(0,h.getRequestMeta)(a,"onCacheEntryV2")??(0,h.getRequestMeta)(a,"onCacheEntry"):(0,h.getRequestMeta)(a,"onCacheEntry");if(r&&await r(m,{url:(0,h.getRequestMeta)(a,"initURL")??a.url}))return null;if(o.headers){let a={...o.headers};for(let[c,d]of(T&&aM||delete a[x.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let t=null==(g=o.headers)?void 0:g[x.NEXT_CACHE_TAGS_HEADER];if(T&&aM&&t&&"string"==typeof t&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,t),!o.status||ax&&aD||(b.statusCode=o.status),!T&&o.status&&F.RedirectStatusCode[o.status]&&ax&&(b.statusCode=200),n&&!aJ&&b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"1"),ax&&!af){if(void 0===o.rscData){if(o.html.contentType!==s.RSC_CONTENT_TYPE_HEADER)if(aj.cacheComponents)return b.statusCode=404,(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:w.default.EMPTY,cacheControl:m.cacheControl});else throw Object.defineProperty(new G.InvariantError(`Expected RSC response, got ${o.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:o.html,cacheControl:m.cacheControl})}return(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:w.default.fromStatic(o.rscData,s.RSC_CONTENT_TYPE_HEADER),cacheControl:m.cacheControl})}let v=o.html;if(aC&&aE){let c=!0===N.isDev?crypto.randomUUID():null;return v.pipeThrough((0,z.createInstantTestScriptInsertionTransformStream)(c)),(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}})}if(!n||T||ax)return(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:v,cacheControl:m.cacheControl});if(aE||aF)return v.push(new ReadableStream({start(a){a.enqueue(y.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}});let B=new TransformStream;return v.push(B.readable),p({span:c,postponed:o.postponed,fallbackRouteParams:null,forceStaticRender:!1}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(B.writable)}).catch(a=>{B.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}})};if(!aY||!aX)return f=aW.getActiveScopeSpan(),await aW.withPropagatedContext(a.headers,()=>aW.trace(i.BaseServerSpan.handleRequest,{spanName:`${aV} ${U}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aV,"http.target":a.url}},r),void 0,!aY);await r(aX)}catch(b){throw b instanceof B.NoFallbackError||await N.onRequestError(a,b,{routerKind:"App Router",routePath:U,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:aM,isOnDemandRevalidate:ap})},!1,ai),b}}},70722:a=>{"use strict";a.exports=require("next/dist/shared/lib/invariant-error")},73136:a=>{"use strict";a.exports=require("node:url")},76760:a=>{"use strict";a.exports=require("node:path")},77068:a=>{"use strict";a.exports=require("next/dist/shared/lib/size-limit")},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},88282:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(63871).A)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]])},92442:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>a7});var d=c(48249),e=c(67484),f=c(19099),g=c(2116),h=c.n(g),i=c(54183),j=c(42742),k=c(40560),l=c(2797),m=c(63871);let n=(0,m.A)("rewind",[["path",{d:"M12 6a2 2 0 0 0-3.414-1.414l-6 6a2 2 0 0 0 0 2.828l6 6A2 2 0 0 0 12 18z",key:"2a1g8i"}],["path",{d:"M22 6a2 2 0 0 0-3.414-1.414l-6 6a2 2 0 0 0 0 2.828l6 6A2 2 0 0 0 22 18z",key:"rg3s36"}]]),o=(0,m.A)("circle-stop",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["rect",{x:"9",y:"9",width:"6",height:"6",rx:"1",key:"1ssd4o"}]]),p=(0,m.A)("ban",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}]]);var q=c(88282),r=c(2864),s=c(25297),t=c(50307);c(74429);var u=c(43980),v=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((a,b)=>{let c=(0,u.TL)(`Primitive.${b}`),f=e.forwardRef((a,e)=>{let{asChild:f,...g}=a;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,d.jsx)(f?c:b,{...g,ref:e})});return f.displayName=`Primitive.${b}`,{...a,[b]:f}},{}),w="Progress",[x,y]=(0,t.A)(w),[z,A]=x(w),B=e.forwardRef((a,b)=>{var c,e;let{__scopeProgress:f,value:g=null,max:h,getValueLabel:i=E,...j}=a;(h||0===h)&&!H(h)&&console.error((c=`${h}`,`Invalid prop \`max\` of value \`${c}\` supplied to \`Progress\`. Only numbers greater than 0 are valid max values. Defaulting to \`100\`.`));let k=H(h)?h:100;null===g||I(g,k)||console.error((e=`${g}`,`Invalid prop \`value\` of value \`${e}\` supplied to \`Progress\`. The \`value\` prop must be:
1
+ (()=>{var a={};a.id=4136,a.ids=[4136],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},1708:a=>{"use strict";a.exports=require("node:process")},2797:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(63871).A)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]])},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8204:(a,b,c)=>{"use strict";c.r(b),c.d(b,{VS_FRAME_TEMPLATE:()=>d});let d='<!doctype html>\n<html data-theme="light" data-lang="ko">\n <head>\n <meta charset="UTF-8" />\n <meta name="viewport" content="width=device-width, initial-scale=1.0" />\n <style>\n /* VS Design System — components.css\n * 12 built-in bk-* components using BlueKiwi design tokens.\n * Light theme by default; dark via [data-theme="dark"].\n * Auto-generated frames include this file inline. Do not import externally.\n */\n\n/* ─── Design Tokens ─── */\n\n:root,\n[data-theme="light"] {\n --bk-bg: #f8fbff;\n --bk-surface: #ffffff;\n --bk-surface-soft: #f3f7fb;\n --bk-surface-strong: #edf3fb;\n --bk-text: #1e2a44;\n --bk-text-muted: #6d7690;\n --bk-border: #dce4ef;\n --bk-primary: #4169e1;\n --bk-primary-light: #eaf0ff;\n --bk-primary-dark: #3557be;\n --bk-accent: #b7cf57;\n --bk-accent-light: #f4f8dd;\n --bk-success: #2f8f6b;\n --bk-warning: #b78226;\n --bk-danger: #c94d5d;\n --bk-radius: 1rem;\n --bk-radius-sm: 0.75rem;\n --bk-radius-lg: 1.5rem;\n --bk-shadow: 0 10px 24px rgba(30, 42, 68, 0.08);\n --bk-font: "Inter", system-ui, -apple-system, sans-serif;\n --bk-font-mono: ui-monospace, SFMono-Regular, Menlo, monospace;\n}\n\n[data-theme="dark"] {\n --bk-bg: #0f1728;\n --bk-surface: #162033;\n --bk-surface-soft: #1d2a40;\n --bk-surface-strong: #243249;\n --bk-text: #eef4ff;\n --bk-text-muted: #94a5bf;\n --bk-border: #2f3a50;\n --bk-primary: #6d8ef0;\n --bk-primary-light: rgba(109, 142, 240, 0.18);\n --bk-primary-dark: #4169e1;\n --bk-accent: #b7cf57;\n --bk-accent-light: rgba(183, 207, 87, 0.18);\n --bk-success: #4aba8a;\n --bk-warning: #d4a04a;\n --bk-danger: #de6a78;\n --bk-shadow: 0 10px 26px rgba(2, 6, 23, 0.3);\n}\n\n/* ─── Base Reset ─── */\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n\nbody {\n font-family: var(--bk-font);\n color: var(--bk-text);\n background: var(--bk-bg);\n line-height: 1.6;\n -webkit-font-smoothing: antialiased;\n}\n\n/* ─── Layout Utilities ─── */\n\nh2 {\n font-size: 1.375rem;\n font-weight: 700;\n letter-spacing: -0.01em;\n margin-bottom: 0.25rem;\n}\n\n.bk-subtitle {\n font-size: 0.9rem;\n color: var(--bk-text-muted);\n margin-bottom: 1.25rem;\n}\n\n.bk-section {\n border-top: 1px solid var(--bk-border);\n margin: 1.5rem 0;\n padding-top: 1.5rem;\n}\n\n.bk-label {\n font-size: 0.7rem;\n font-weight: 600;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--bk-text-muted);\n margin-bottom: 0.75rem;\n}\n\n/* ─── VS Container ─── */\n\n.bk-vs-container {\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n padding: 1.5rem;\n}\n\n.bk-vs-content {\n flex: 1;\n}\n\n.bk-vs-footer {\n position: sticky;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 0.75rem;\n padding: 1rem 0 0;\n margin-top: 1.5rem;\n border-top: 1px solid var(--bk-border);\n background: var(--bk-bg);\n}\n\n.bk-vs-status {\n font-size: 0.8rem;\n color: var(--bk-text-muted);\n}\n\n.bk-vs-submit {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 2.5rem;\n padding: 0 1.5rem;\n border: none;\n border-radius: 9999px;\n background: var(--bk-primary);\n color: #ffffff;\n font-family: var(--bk-font);\n font-size: 0.95rem;\n font-weight: 600;\n cursor: pointer;\n transition:\n background 0.15s,\n opacity 0.15s,\n transform 0.1s;\n box-shadow: 0 10px 18px rgba(53, 87, 190, 0.18);\n}\n\n.bk-vs-submit:hover:not(:disabled) {\n background: var(--bk-primary-dark);\n}\n\n.bk-vs-submit:active:not(:disabled) {\n transform: scale(0.97);\n}\n\n.bk-vs-submit:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n box-shadow: none;\n}\n\n.bk-vs-submit.submitted {\n background: var(--bk-success);\n pointer-events: none;\n}\n\n/* ─── Form Inputs ─── */\n\n.bk-input,\n.bk-textarea,\n.bk-option-comment {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n margin-top: 1rem;\n}\n\n.bk-field-label {\n font-size: 0.85rem;\n font-weight: 600;\n color: var(--bk-text);\n}\n\n.bk-field-label .required {\n color: var(--bk-danger);\n margin-left: 0.25rem;\n}\n\n.bk-field-help {\n font-size: 0.78rem;\n color: var(--bk-text-muted);\n}\n\n.bk-input-control,\n.bk-textarea-control {\n width: 100%;\n border: 1.5px solid var(--bk-border);\n border-radius: var(--bk-radius);\n background: var(--bk-surface);\n color: var(--bk-text);\n font: inherit;\n padding: 0.8rem 0.9rem;\n transition:\n border-color 0.15s,\n box-shadow 0.15s,\n background 0.15s;\n}\n\n.bk-input-control::placeholder,\n.bk-textarea-control::placeholder {\n color: var(--bk-text-muted);\n}\n\n.bk-input-control:focus,\n.bk-textarea-control:focus {\n outline: none;\n border-color: var(--bk-primary);\n box-shadow: 0 0 0 3px rgba(65, 105, 225, 0.15);\n}\n\n.bk-textarea-control {\n min-height: 7rem;\n resize: vertical;\n line-height: 1.55;\n}\n\n.bk-field-error {\n font-size: 0.78rem;\n color: var(--bk-danger);\n}\n\n.bk-option-comment[hidden] {\n display: none;\n}\n\n.bk-option-comment {\n border-top: 1px dashed var(--bk-border);\n padding-top: 0.9rem;\n}\n\n/* ─── 1. bk-options (A/B/C single select) ─── */\n\n.bk-options {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n}\n\n.bk-option {\n display: flex;\n align-items: flex-start;\n gap: 1rem;\n padding: 1.25rem;\n background: var(--bk-surface);\n border: 1.5px solid var(--bk-border);\n border-radius: var(--bk-radius-lg);\n cursor: pointer;\n transition:\n border-color 0.15s,\n background 0.15s,\n box-shadow 0.15s;\n box-shadow: var(--bk-shadow);\n position: relative;\n}\n\n.bk-option:hover {\n background: var(--bk-primary-light);\n border-color: var(--bk-primary);\n}\n\n.bk-option.selected {\n border-color: var(--bk-primary);\n background: var(--bk-primary-light);\n box-shadow: 0 0 0 3px rgba(65, 105, 225, 0.2);\n}\n\n.bk-option-letter {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2.25rem;\n height: 2.25rem;\n border-radius: 50%;\n background: var(--bk-surface-strong);\n font-weight: 700;\n font-size: 0.85rem;\n color: var(--bk-text-muted);\n flex-shrink: 0;\n}\n\n.bk-option.selected .bk-option-letter {\n background: var(--bk-primary);\n color: #ffffff;\n}\n\n.bk-option-body h3 {\n font-size: 1rem;\n font-weight: 600;\n margin-bottom: 0.15rem;\n}\n\n.bk-option-body p {\n font-size: 0.85rem;\n color: var(--bk-text-muted);\n line-height: 1.5;\n}\n\n.bk-option[data-recommended]::after {\n content: "Recommended";\n position: absolute;\n top: 0.75rem;\n right: 0.75rem;\n font-size: 0.65rem;\n font-weight: 600;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--bk-accent);\n background: var(--bk-accent-light);\n padding: 0.2rem 0.5rem;\n border-radius: 9999px;\n}\n\n/* ─── 2. bk-cards (visual cards with image preview) ─── */\n\n.bk-cards {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));\n gap: 1rem;\n}\n\n.bk-card {\n background: var(--bk-surface);\n border: 1.5px solid var(--bk-border);\n border-radius: var(--bk-radius-lg);\n overflow: hidden;\n cursor: pointer;\n transition:\n border-color 0.15s,\n box-shadow 0.15s;\n box-shadow: var(--bk-shadow);\n}\n\n.bk-card:hover {\n border-color: var(--bk-primary);\n}\n\n.bk-card.selected {\n border-color: var(--bk-primary);\n box-shadow: 0 0 0 3px rgba(65, 105, 225, 0.2);\n}\n\n.bk-card-image {\n width: 100%;\n aspect-ratio: 16/10;\n background: var(--bk-surface-soft);\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n border-bottom: 1px solid var(--bk-border);\n}\n\n.bk-card-image svg {\n max-width: 80%;\n max-height: 80%;\n}\n\n.bk-card-body {\n padding: 1rem;\n}\n\n.bk-card-body h3 {\n font-size: 0.95rem;\n font-weight: 600;\n margin-bottom: 0.15rem;\n}\n\n.bk-card-body p {\n font-size: 0.8rem;\n color: var(--bk-text-muted);\n}\n\n/* ─── 3. bk-checklist (multi-select) ─── */\n\n.bk-checklist {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.bk-check-item {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n padding: 0.75rem 1rem;\n background: var(--bk-surface);\n border: 1.5px solid var(--bk-border);\n border-radius: var(--bk-radius);\n cursor: pointer;\n font-size: 0.9rem;\n transition:\n border-color 0.15s,\n background 0.15s;\n}\n\n.bk-check-item::before {\n content: "";\n display: block;\n width: 1.25rem;\n height: 1.25rem;\n border: 2px solid var(--bk-border);\n border-radius: 0.35rem;\n flex-shrink: 0;\n transition:\n background 0.15s,\n border-color 0.15s;\n}\n\n.bk-check-item:hover {\n background: var(--bk-primary-light);\n border-color: var(--bk-primary);\n}\n\n.bk-check-item.checked {\n border-color: var(--bk-primary);\n background: var(--bk-primary-light);\n}\n\n.bk-check-item.checked::before {\n background: var(--bk-primary);\n border-color: var(--bk-primary);\n /* Checkmark via box-shadow trick */\n box-shadow:\n inset 0 0 0 2px var(--bk-primary),\n inset 0.15rem -0.15rem 0 0 #fff;\n}\n\n/* ─── 4. bk-code-compare (side-by-side code selection) ─── */\n\n.bk-code-compare {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));\n gap: 1rem;\n}\n\n.bk-code-option {\n background: var(--bk-surface);\n border: 1.5px solid var(--bk-border);\n border-radius: var(--bk-radius-lg);\n overflow: hidden;\n cursor: pointer;\n transition:\n border-color 0.15s,\n box-shadow 0.15s;\n}\n\n.bk-code-option:hover {\n border-color: var(--bk-primary);\n}\n\n.bk-code-option.selected {\n border-color: var(--bk-primary);\n box-shadow: 0 0 0 3px rgba(65, 105, 225, 0.2);\n}\n\n.bk-code-label {\n padding: 0.75rem 1rem;\n font-size: 0.8rem;\n font-weight: 600;\n color: var(--bk-text-muted);\n border-bottom: 1px solid var(--bk-border);\n background: var(--bk-surface-soft);\n}\n\npre.bk-code {\n margin: 0;\n padding: 1rem;\n font-family: var(--bk-font-mono);\n font-size: 0.8rem;\n line-height: 1.6;\n overflow-x: auto;\n color: var(--bk-text);\n background: transparent;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n/* ─── 5. bk-slider (numeric input) ─── */\n\n.bk-slider {\n padding: 1rem 1.25rem;\n background: var(--bk-surface);\n border: 1.5px solid var(--bk-border);\n border-radius: var(--bk-radius-lg);\n margin-bottom: 0.75rem;\n}\n\n.bk-slider label {\n display: block;\n font-size: 0.9rem;\n font-weight: 600;\n margin-bottom: 0.75rem;\n}\n\n.bk-slider-controls {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n\n.bk-slider-controls input[type="range"] {\n flex: 1;\n height: 6px;\n -webkit-appearance: none;\n appearance: none;\n background: var(--bk-surface-strong);\n border-radius: 3px;\n outline: none;\n}\n\n.bk-slider-controls input[type="range"]::-webkit-slider-thumb {\n -webkit-appearance: none;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: var(--bk-primary);\n cursor: pointer;\n box-shadow: 0 2px 6px rgba(65, 105, 225, 0.3);\n}\n\n.bk-slider-controls input[type="range"]::-moz-range-thumb {\n width: 20px;\n height: 20px;\n border: none;\n border-radius: 50%;\n background: var(--bk-primary);\n cursor: pointer;\n}\n\n.bk-slider-value {\n min-width: 3.5rem;\n text-align: right;\n font-size: 0.95rem;\n font-weight: 600;\n font-variant-numeric: tabular-nums;\n color: var(--bk-primary);\n}\n\n/* ─── 6. bk-ranking (drag-to-reorder) ─── */\n\n.bk-ranking {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.bk-rank-item {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n padding: 0.75rem 1rem;\n background: var(--bk-surface);\n border: 1.5px solid var(--bk-border);\n border-radius: var(--bk-radius);\n cursor: grab;\n font-size: 0.9rem;\n transition:\n border-color 0.15s,\n box-shadow 0.15s,\n transform 0.1s;\n user-select: none;\n}\n\n.bk-rank-item:active {\n cursor: grabbing;\n}\n\n.bk-rank-item.dragging {\n opacity: 0.5;\n border-color: var(--bk-primary);\n}\n\n.bk-rank-item.drag-over {\n border-color: var(--bk-primary);\n box-shadow: 0 0 0 2px rgba(65, 105, 225, 0.15);\n}\n\n.bk-rank-number {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1.75rem;\n height: 1.75rem;\n border-radius: 50%;\n background: var(--bk-surface-strong);\n font-weight: 700;\n font-size: 0.75rem;\n color: var(--bk-text-muted);\n flex-shrink: 0;\n}\n\n.bk-rank-grip {\n color: var(--bk-text-muted);\n font-size: 1rem;\n flex-shrink: 0;\n opacity: 0.5;\n}\n\n/* ─── 7. bk-matrix (2x2 matrix placement) ─── */\n\n.bk-matrix {\n position: relative;\n width: 100%;\n aspect-ratio: 1;\n max-width: 500px;\n margin: 0 auto;\n background: var(--bk-surface);\n border: 1.5px solid var(--bk-border);\n border-radius: var(--bk-radius-lg);\n overflow: hidden;\n}\n\n.bk-matrix-grid {\n position: absolute;\n inset: 2.5rem;\n}\n\n.bk-matrix-grid::before,\n.bk-matrix-grid::after {\n content: "";\n position: absolute;\n background: var(--bk-border);\n}\n\n/* Vertical center line */\n.bk-matrix-grid::before {\n left: 50%;\n top: 0;\n bottom: 0;\n width: 1px;\n transform: translateX(-0.5px);\n}\n\n/* Horizontal center line */\n.bk-matrix-grid::after {\n top: 50%;\n left: 0;\n right: 0;\n height: 1px;\n transform: translateY(-0.5px);\n}\n\n.bk-matrix-x-label,\n.bk-matrix-y-label {\n position: absolute;\n font-size: 0.7rem;\n font-weight: 600;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--bk-text-muted);\n}\n\n.bk-matrix-x-label {\n bottom: 0.5rem;\n left: 50%;\n transform: translateX(-50%);\n}\n\n.bk-matrix-y-label {\n top: 50%;\n left: 0.5rem;\n transform: translateY(-50%) rotate(-90deg);\n transform-origin: center;\n}\n\n.bk-matrix-item {\n position: absolute;\n padding: 0.4rem 0.75rem;\n background: var(--bk-primary);\n color: #ffffff;\n font-size: 0.75rem;\n font-weight: 600;\n border-radius: 9999px;\n cursor: grab;\n user-select: none;\n white-space: nowrap;\n z-index: 1;\n transition: box-shadow 0.1s;\n box-shadow: 0 2px 8px rgba(65, 105, 225, 0.25);\n}\n\n.bk-matrix-item:active {\n cursor: grabbing;\n}\n\n.bk-matrix-item.dragging {\n box-shadow: 0 4px 16px rgba(65, 105, 225, 0.4);\n z-index: 10;\n}\n\n/* ─── 8. bk-split (side-by-side comparison) ─── */\n\n.bk-split {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 1rem;\n}\n\n.bk-split-panel {\n padding: 1.25rem;\n background: var(--bk-surface);\n border: 1.5px solid var(--bk-border);\n border-radius: var(--bk-radius-lg);\n box-shadow: var(--bk-shadow);\n}\n\n.bk-split-panel h3 {\n font-size: 0.95rem;\n font-weight: 600;\n margin-bottom: 0.5rem;\n color: var(--bk-text);\n}\n\n.bk-split-panel p,\n.bk-split-panel ul,\n.bk-split-panel ol {\n font-size: 0.85rem;\n color: var(--bk-text-muted);\n line-height: 1.6;\n}\n\n/* ─── 9. bk-pros-cons ─── */\n\n.bk-pros-cons {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 1rem;\n}\n\n.bk-pros,\n.bk-cons {\n padding: 1.25rem;\n border-radius: var(--bk-radius-lg);\n}\n\n.bk-pros {\n background: rgba(47, 143, 107, 0.08);\n border: 1.5px solid rgba(47, 143, 107, 0.2);\n}\n\n.bk-cons {\n background: rgba(201, 77, 93, 0.08);\n border: 1.5px solid rgba(201, 77, 93, 0.2);\n}\n\n.bk-pros h4 {\n color: var(--bk-success);\n}\n.bk-cons h4 {\n color: var(--bk-danger);\n}\n\n.bk-pros h4,\n.bk-cons h4 {\n font-size: 0.85rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n margin-bottom: 0.5rem;\n}\n\n.bk-pros ul,\n.bk-cons ul {\n list-style: none;\n padding: 0;\n}\n\n.bk-pros li,\n.bk-cons li {\n font-size: 0.85rem;\n color: var(--bk-text);\n padding: 0.25rem 0;\n line-height: 1.5;\n}\n\n.bk-pros li::before {\n content: "+ ";\n color: var(--bk-success);\n font-weight: 600;\n}\n.bk-cons li::before {\n content: "- ";\n color: var(--bk-danger);\n font-weight: 600;\n}\n\n/* ─── 10. bk-mockup (wireframe container) ─── */\n\n.bk-mockup {\n background: var(--bk-surface);\n border: 1.5px solid var(--bk-border);\n border-radius: var(--bk-radius-lg);\n overflow: hidden;\n box-shadow: var(--bk-shadow);\n}\n\n.bk-mockup-header {\n padding: 0.75rem 1rem;\n font-size: 0.8rem;\n font-weight: 600;\n color: var(--bk-text-muted);\n background: var(--bk-surface-soft);\n border-bottom: 1px solid var(--bk-border);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.bk-mockup-header::before {\n content: "";\n display: flex;\n gap: 0.25rem;\n width: 3rem;\n height: 0.5rem;\n background:\n radial-gradient(\n circle at 0.25rem 0.25rem,\n var(--bk-danger) 3.5px,\n transparent 4px\n ),\n radial-gradient(\n circle at 1rem 0.25rem,\n var(--bk-warning) 3.5px,\n transparent 4px\n ),\n radial-gradient(\n circle at 1.75rem 0.25rem,\n var(--bk-success) 3.5px,\n transparent 4px\n );\n}\n\n.bk-mockup-body {\n padding: 1rem;\n min-height: 200px;\n}\n\n.bk-mock-nav {\n padding: 0.5rem 0.75rem;\n background: var(--bk-surface-soft);\n border-radius: var(--bk-radius-sm);\n font-size: 0.75rem;\n color: var(--bk-text-muted);\n margin-bottom: 0.75rem;\n}\n\n.bk-mock-content {\n padding: 0.75rem;\n background: var(--bk-surface-strong);\n border-radius: var(--bk-radius-sm);\n font-size: 0.8rem;\n color: var(--bk-text-muted);\n min-height: 120px;\n}\n\n/* ─── 10b. bk-mockup-gallery (selectable mockup cards) ─── */\n\n.bk-mockup-gallery {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));\n gap: 1rem;\n}\n\n.bk-mockup-item {\n background: var(--bk-surface);\n border: 1.5px solid var(--bk-border);\n border-radius: var(--bk-radius-lg);\n overflow: hidden;\n cursor: pointer;\n transition:\n border-color 0.15s,\n box-shadow 0.15s;\n box-shadow: var(--bk-shadow);\n}\n\n.bk-mockup-item:hover {\n border-color: var(--bk-primary);\n}\n\n.bk-mockup-item.selected {\n border-color: var(--bk-primary);\n box-shadow: 0 0 0 3px rgba(65, 105, 225, 0.2);\n}\n\n.bk-mockup-preview {\n padding: 0.75rem;\n background: var(--bk-surface-soft);\n border-bottom: 1px solid var(--bk-border);\n}\n\n.bk-mockup-frame {\n width: 100%;\n aspect-ratio: 4/3;\n background: var(--bk-surface);\n border-radius: var(--bk-radius-sm);\n overflow: hidden;\n border: 1px solid var(--bk-border);\n}\n\n.bk-mockup-label {\n padding: 0.625rem 0.875rem 0.25rem;\n font-size: 0.9rem;\n font-weight: 600;\n color: var(--bk-text);\n}\n\n.bk-mockup-desc {\n padding: 0 0.875rem 0.75rem;\n font-size: 0.8rem;\n color: var(--bk-text-muted);\n}\n\n/* ─── 11. bk-timeline ─── */\n\n.bk-timeline {\n display: flex;\n flex-direction: column;\n gap: 0;\n padding-left: 1.5rem;\n position: relative;\n}\n\n.bk-timeline::before {\n content: "";\n position: absolute;\n left: 0.5rem;\n top: 0.5rem;\n bottom: 0.5rem;\n width: 2px;\n background: var(--bk-border);\n}\n\n.bk-timeline-item {\n position: relative;\n padding: 0.75rem 0 0.75rem 1.25rem;\n font-size: 0.9rem;\n}\n\n.bk-timeline-item::before {\n content: "";\n position: absolute;\n left: -1.25rem;\n top: 1rem;\n width: 0.75rem;\n height: 0.75rem;\n border-radius: 50%;\n border: 2px solid var(--bk-border);\n background: var(--bk-surface);\n}\n\n.bk-timeline-item[data-status="done"]::before {\n background: var(--bk-success);\n border-color: var(--bk-success);\n}\n\n.bk-timeline-item[data-status="current"]::before {\n background: var(--bk-primary);\n border-color: var(--bk-primary);\n box-shadow: 0 0 0 3px rgba(65, 105, 225, 0.2);\n}\n\n.bk-timeline-item[data-status="pending"]::before {\n background: var(--bk-surface);\n border-color: var(--bk-border);\n}\n\n.bk-timeline-item[data-status="done"] {\n color: var(--bk-text-muted);\n}\n\n.bk-timeline-item[data-status="current"] {\n font-weight: 600;\n color: var(--bk-primary);\n}\n\n.bk-timeline-item[data-status="pending"] {\n color: var(--bk-text-muted);\n opacity: 0.7;\n}\n\n </style>\n </head>\n <body>\n <div class="bk-vs-container">\n <div class="bk-vs-content">{{AGENT_CONTENT}}</div>\n <div class="bk-vs-footer">\n <div class="bk-vs-status"></div>\n <button class="bk-vs-submit" disabled>확인</button>\n </div>\n </div>\n <script>\n /**\n * VS Design System — helper.js\n * ~200 lines vanilla JS. Runs inside iframe sandbox.\n * Handles: select, check, slider, ranking (drag), matrix (drag), submit.\n */\n(function () {\n "use strict";\n\n const COMMENTABLE_SELECTOR =\n ".bk-option, .bk-card, .bk-code-option, .bk-mockup-item, .bk-check-item";\n\n /* ── i18n ── */\n const UI_TEXT = {\n ko: {\n submit: "확인",\n submitted: "✓ 제출됨",\n selected: "{n}개 선택됨",\n detailsLabel: "추가 요청사항",\n detailsPlaceholder: "선택 이유나 보완 요청을 적어주세요",\n required: "필수",\n requiredComment: "선택한 항목에 대한 코멘트를 입력해 주세요",\n requiredField: "필수 입력 항목을 채워 주세요",\n },\n en: {\n submit: "Submit",\n submitted: "✓ Submitted",\n selected: "{n} selected",\n detailsLabel: "Additional details",\n detailsPlaceholder: "Add your reasoning or requested changes",\n required: "Required",\n requiredComment: "Add a comment for the selected option",\n requiredField: "Fill in the required fields",\n },\n };\n const lang = document.documentElement.dataset.lang || "en";\n const t = UI_TEXT[lang] || UI_TEXT.en;\n\n /* ── State ── */\n let hasInteracted = false;\n\n /* ── Init ── */\n function initVS() {\n bindSelectables(".bk-options", ".bk-option");\n bindSelectables(".bk-cards", ".bk-card");\n bindSelectables(".bk-code-compare", ".bk-code-option");\n bindSelectables(".bk-mockup-gallery", ".bk-mockup-item");\n bindOrphanMockupItems();\n bindChecklist();\n bindSliders();\n bindRanking();\n bindMatrix();\n bindFields();\n bindOptionComments();\n\n const btn = document.querySelector(".bk-vs-submit");\n if (btn) {\n btn.textContent = t.submit;\n btn.addEventListener("click", handleSubmit);\n }\n\n updateSubmitState();\n }\n\n /* ── Single-select toggle ── */\n function bindSelectables(containerSel, itemSel) {\n document.querySelectorAll(containerSel).forEach(function (container) {\n container.querySelectorAll(itemSel).forEach(function (item) {\n item.addEventListener("click", function () {\n toggleSelect(container, item, itemSel);\n });\n });\n });\n }\n\n function toggleSelect(container, item, itemSel) {\n var wasSelected = item.classList.contains("selected");\n container.querySelectorAll(itemSel).forEach(function (el) {\n el.classList.remove("selected");\n });\n if (!wasSelected) item.classList.add("selected");\n hasInteracted = true;\n syncConditionalFields();\n updateSubmitState();\n }\n\n /* ── bk-mockup-item without .bk-mockup-gallery wrapper ── */\n function bindOrphanMockupItems() {\n var orphans = [];\n document.querySelectorAll(".bk-mockup-item").forEach(function (item) {\n if (!item.closest(".bk-mockup-gallery")) orphans.push(item);\n });\n if (orphans.length === 0) return;\n orphans.forEach(function (item) {\n item.addEventListener("click", function () {\n var wasSelected = item.classList.contains("selected");\n orphans.forEach(function (el) {\n el.classList.remove("selected");\n });\n if (!wasSelected) item.classList.add("selected");\n hasInteracted = true;\n syncConditionalFields();\n updateSubmitState();\n });\n });\n }\n\n /* ── Multi-select checklist ── */\n function bindChecklist() {\n document.querySelectorAll(".bk-checklist").forEach(function (list) {\n list.querySelectorAll(".bk-check-item").forEach(function (item) {\n /* Apply defaults */\n if (item.hasAttribute("data-checked")) item.classList.add("checked");\n item.addEventListener("click", function () {\n toggleCheck(item);\n });\n });\n });\n }\n\n function toggleCheck(item) {\n item.classList.toggle("checked");\n hasInteracted = true;\n syncConditionalFields();\n updateSubmitState();\n }\n\n function bindFields() {\n document.querySelectorAll(".bk-textarea").forEach(function (container) {\n if (container.querySelector("textarea")) return;\n var textarea = document.createElement("textarea");\n textarea.className = "bk-textarea-control";\n textarea.name = container.dataset.name || "";\n textarea.placeholder = container.dataset.placeholder || "";\n textarea.rows = Number(container.dataset.rows || 4);\n if (container.dataset.maxlength) {\n textarea.maxLength = Number(container.dataset.maxlength);\n }\n mountField(container, textarea);\n });\n\n document.querySelectorAll(".bk-input").forEach(function (container) {\n if (container.querySelector("input")) return;\n var input = document.createElement("input");\n input.className = "bk-input-control";\n input.name = container.dataset.name || "";\n input.type = container.dataset.type || "text";\n input.placeholder = container.dataset.placeholder || "";\n if (container.dataset.maxlength) {\n input.maxLength = Number(container.dataset.maxlength);\n }\n mountField(container, input);\n });\n }\n\n function mountField(container, control) {\n container.classList.add("bk-field");\n\n if (container.dataset.label) {\n var label = document.createElement("label");\n label.className = "bk-field-label";\n label.textContent = container.dataset.label;\n if (container.hasAttribute("data-required")) {\n var required = document.createElement("span");\n required.className = "required";\n required.textContent = "*";\n label.appendChild(required);\n }\n container.appendChild(label);\n }\n\n if (container.dataset.help) {\n var help = document.createElement("div");\n help.className = "bk-field-help";\n help.textContent = container.dataset.help;\n container.appendChild(help);\n }\n\n control.addEventListener("click", function (e) {\n e.stopPropagation();\n });\n control.addEventListener("input", function () {\n hasInteracted = true;\n updateSubmitState();\n });\n\n container.appendChild(control);\n }\n\n function bindOptionComments() {\n document.querySelectorAll(COMMENTABLE_SELECTOR).forEach(function (item) {\n var needsComment =\n item.hasAttribute("data-requires-comment") ||\n !!item.dataset.commentName;\n if (!needsComment || item.querySelector(".bk-option-comment")) return;\n\n var wrapper = document.createElement("div");\n wrapper.className = "bk-option-comment";\n wrapper.hidden = true;\n\n var label = document.createElement("label");\n label.className = "bk-field-label";\n label.textContent = item.dataset.commentLabel || t.detailsLabel;\n if (item.hasAttribute("data-requires-comment")) {\n var required = document.createElement("span");\n required.className = "required";\n required.textContent = "*";\n label.appendChild(required);\n }\n wrapper.appendChild(label);\n\n var textarea = document.createElement("textarea");\n textarea.className = "bk-textarea-control";\n textarea.placeholder =\n item.dataset.commentPlaceholder || t.detailsPlaceholder;\n textarea.rows = Number(item.dataset.commentRows || 3);\n textarea.addEventListener("click", function (e) {\n e.stopPropagation();\n });\n textarea.addEventListener("input", function () {\n hasInteracted = true;\n updateSubmitState();\n });\n wrapper.appendChild(textarea);\n\n item.appendChild(wrapper);\n });\n\n syncConditionalFields();\n }\n\n function syncConditionalFields() {\n document.querySelectorAll(COMMENTABLE_SELECTOR).forEach(function (item) {\n var comment = item.querySelector(".bk-option-comment");\n if (!comment) return;\n var selected =\n item.classList.contains("selected") ||\n item.classList.contains("checked");\n comment.hidden = !selected;\n });\n }\n\n function readControlValue(container) {\n var control = container.querySelector("input, textarea");\n if (!control) return "";\n return String(control.value || "").trim();\n }\n\n function collectStandaloneFields(state) {\n var fields = {};\n var hasFields = false;\n\n document.querySelectorAll(".bk-textarea, .bk-input").forEach(function (el) {\n var name = el.dataset.name;\n if (!name) return;\n var value = readControlValue(el);\n if (!value) return;\n if (el.dataset.responseKey === "comment" || name === "comment") {\n state.comment = value;\n return;\n }\n fields[name] = value;\n hasFields = true;\n });\n\n if (hasFields) state.fields = fields;\n }\n\n function collectOptionComments(state) {\n var optionComments = {};\n var optionCommentCount = 0;\n var fields = state.fields || {};\n var hasFields = !!state.fields;\n\n document.querySelectorAll(COMMENTABLE_SELECTOR).forEach(function (item) {\n var selected =\n item.classList.contains("selected") ||\n item.classList.contains("checked");\n if (!selected) return;\n var commentWrap = item.querySelector(".bk-option-comment");\n if (!commentWrap) return;\n var textarea = commentWrap.querySelector("textarea");\n var value = textarea ? String(textarea.value || "").trim() : "";\n if (!value) return;\n if (item.dataset.value) {\n optionComments[item.dataset.value] = value;\n optionCommentCount += 1;\n }\n if (item.dataset.commentName) {\n fields[item.dataset.commentName] = value;\n hasFields = true;\n }\n });\n\n if (optionCommentCount > 0) state.option_comments = optionComments;\n if (hasFields) state.fields = fields;\n }\n\n function getValidationError() {\n var requiredFieldMissing = false;\n document.querySelectorAll(".bk-textarea, .bk-input").forEach(function (el) {\n if (!el.hasAttribute("data-required")) return;\n if (!readControlValue(el)) requiredFieldMissing = true;\n });\n if (requiredFieldMissing) return t.requiredField;\n\n var requiredCommentMissing = false;\n document.querySelectorAll(COMMENTABLE_SELECTOR).forEach(function (item) {\n var selected =\n item.classList.contains("selected") ||\n item.classList.contains("checked");\n if (!selected || !item.hasAttribute("data-requires-comment")) return;\n var commentWrap = item.querySelector(".bk-option-comment");\n if (!commentWrap || !readControlValue(commentWrap)) {\n requiredCommentMissing = true;\n }\n });\n if (requiredCommentMissing) return t.requiredComment;\n\n return "";\n }\n\n /* ── Sliders ── */\n function bindSliders() {\n document.querySelectorAll(".bk-slider").forEach(function (container) {\n var min = Number(container.dataset.min || 0);\n var max = Number(container.dataset.max || 100);\n var val = Number(container.dataset.value || Math.round((min + max) / 2));\n var unit = container.dataset.unit || "";\n\n var controls = document.createElement("div");\n controls.className = "bk-slider-controls";\n\n var input = document.createElement("input");\n input.type = "range";\n input.min = min;\n input.max = max;\n input.value = val;\n\n var display = document.createElement("span");\n display.className = "bk-slider-value";\n display.textContent = val + unit;\n\n input.addEventListener("input", function () {\n display.textContent = input.value + unit;\n container.dataset.value = input.value;\n hasInteracted = true;\n updateSubmitState();\n });\n\n controls.appendChild(input);\n controls.appendChild(display);\n container.appendChild(controls);\n });\n }\n\n /* ── Ranking (HTML5 drag-and-drop) ── */\n function bindRanking() {\n document.querySelectorAll(".bk-ranking").forEach(function (list) {\n var items = list.querySelectorAll(".bk-rank-item");\n items.forEach(function (item, i) {\n /* Add rank number */\n var num = document.createElement("span");\n num.className = "bk-rank-number";\n num.textContent = String(i + 1);\n item.insertBefore(num, item.firstChild);\n\n /* Add grip icon */\n var grip = document.createElement("span");\n grip.className = "bk-rank-grip";\n grip.textContent = "\\u2261";\n item.appendChild(grip);\n\n item.setAttribute("draggable", "true");\n\n item.addEventListener("dragstart", function (e) {\n item.classList.add("dragging");\n e.dataTransfer.effectAllowed = "move";\n e.dataTransfer.setData("text/plain", "");\n });\n\n item.addEventListener("dragend", function () {\n item.classList.remove("dragging");\n list.querySelectorAll(".bk-rank-item").forEach(function (el) {\n el.classList.remove("drag-over");\n });\n renumberRanking(list);\n hasInteracted = true;\n updateSubmitState();\n });\n\n item.addEventListener("dragover", function (e) {\n e.preventDefault();\n e.dataTransfer.dropEffect = "move";\n var dragging = list.querySelector(".dragging");\n if (dragging && dragging !== item) {\n item.classList.add("drag-over");\n var rect = item.getBoundingClientRect();\n var mid = rect.top + rect.height / 2;\n if (e.clientY < mid) {\n list.insertBefore(dragging, item);\n } else {\n list.insertBefore(dragging, item.nextSibling);\n }\n }\n });\n\n item.addEventListener("dragleave", function () {\n item.classList.remove("drag-over");\n });\n });\n });\n }\n\n function renumberRanking(list) {\n list.querySelectorAll(".bk-rank-item").forEach(function (item, i) {\n var num = item.querySelector(".bk-rank-number");\n if (num) num.textContent = String(i + 1);\n });\n }\n\n /* ── Matrix (mouse/touch drag placement) ── */\n function bindMatrix() {\n document.querySelectorAll(".bk-matrix").forEach(function (container) {\n /* Build grid overlay */\n var grid = document.createElement("div");\n grid.className = "bk-matrix-grid";\n container.appendChild(grid);\n\n /* Add axis labels */\n var xLabel = document.createElement("div");\n xLabel.className = "bk-matrix-x-label";\n xLabel.textContent = container.dataset.xLabel || "X";\n container.appendChild(xLabel);\n\n var yLabel = document.createElement("div");\n yLabel.className = "bk-matrix-y-label";\n yLabel.textContent = container.dataset.yLabel || "Y";\n container.appendChild(yLabel);\n\n /* Position items */\n var items = container.querySelectorAll(".bk-matrix-item");\n var n = items.length;\n items.forEach(function (item, i) {\n /* Default spread: distribute items in center area */\n var dx =\n item.dataset.x !== undefined\n ? Number(item.dataset.x)\n : 0.3 + 0.4 * (i / Math.max(n - 1, 1));\n var dy =\n item.dataset.y !== undefined\n ? Number(item.dataset.y)\n : 0.3 + 0.4 * (i / Math.max(n - 1, 1));\n placeMatrixItem(item, container, dx, dy);\n makeMatrixDraggable(item, container);\n });\n });\n }\n\n function placeMatrixItem(item, container, x, y) {\n item.dataset.x = String(Math.max(0, Math.min(1, x)).toFixed(2));\n item.dataset.y = String(Math.max(0, Math.min(1, y)).toFixed(2));\n /* CSS uses left/bottom but we need top offset (y inverted: 1=top, 0=bottom) */\n var pad = 40; /* px padding for labels */\n item.style.left = pad + x * (container.clientWidth - 2 * pad) + "px";\n item.style.top = pad + (1 - y) * (container.clientHeight - 2 * pad) + "px";\n item.style.transform = "translate(-50%, -50%)";\n }\n\n function makeMatrixDraggable(item, container) {\n function onStart(e) {\n e.preventDefault();\n item.classList.add("dragging");\n document.addEventListener("mousemove", onMove);\n document.addEventListener("mouseup", onEnd);\n document.addEventListener("touchmove", onMove, { passive: false });\n document.addEventListener("touchend", onEnd);\n }\n\n function onMove(e) {\n e.preventDefault();\n var pt = e.touches ? e.touches[0] : e;\n var rect = container.getBoundingClientRect();\n var pad = 40;\n var x = Math.max(\n 0,\n Math.min(1, (pt.clientX - rect.left - pad) / (rect.width - 2 * pad)),\n );\n var y = Math.max(\n 0,\n Math.min(\n 1,\n 1 - (pt.clientY - rect.top - pad) / (rect.height - 2 * pad),\n ),\n );\n placeMatrixItem(item, container, x, y);\n }\n\n function onEnd() {\n item.classList.remove("dragging");\n document.removeEventListener("mousemove", onMove);\n document.removeEventListener("mouseup", onEnd);\n document.removeEventListener("touchmove", onMove);\n document.removeEventListener("touchend", onEnd);\n hasInteracted = true;\n updateSubmitState();\n }\n\n item.addEventListener("mousedown", onStart);\n item.addEventListener("touchstart", onStart, { passive: false });\n }\n\n /* ── Collect State ── */\n function collectState() {\n var state = {};\n\n /* selections: bk-options, bk-cards, bk-code-compare (single select) */\n var selections = [];\n document\n .querySelectorAll(\n ".bk-option.selected, .bk-card.selected, .bk-code-option.selected, .bk-mockup-item.selected",\n )\n .forEach(function (el) {\n if (el.dataset.value) selections.push(el.dataset.value);\n });\n /* bk-checklist (multi select) */\n document.querySelectorAll(".bk-check-item.checked").forEach(function (el) {\n if (el.dataset.value) selections.push(el.dataset.value);\n });\n if (selections.length > 0) state.selections = selections;\n\n /* values: bk-slider */\n var values = {};\n var hasValues = false;\n document.querySelectorAll(".bk-slider").forEach(function (el) {\n if (el.dataset.name && el.dataset.value !== undefined) {\n values[el.dataset.name] = Number(el.dataset.value);\n hasValues = true;\n }\n });\n if (hasValues) state.values = values;\n\n /* ranking: bk-ranking */\n document.querySelectorAll(".bk-ranking").forEach(function (list) {\n var order = [];\n list.querySelectorAll(".bk-rank-item").forEach(function (item) {\n if (item.dataset.value) order.push(item.dataset.value);\n });\n if (order.length > 0) state.ranking = order;\n });\n\n /* matrix: bk-matrix */\n var matrix = {};\n var hasMatrix = false;\n document.querySelectorAll(".bk-matrix-item").forEach(function (item) {\n if (item.dataset.value) {\n matrix[item.dataset.value] = {\n x: Number(Number(item.dataset.x).toFixed(2)),\n y: Number(Number(item.dataset.y).toFixed(2)),\n };\n hasMatrix = true;\n }\n });\n if (hasMatrix) state.matrix = matrix;\n\n collectStandaloneFields(state);\n collectOptionComments(state);\n\n return state;\n }\n\n /* ── Submit ── */\n function handleSubmit() {\n var btn = document.querySelector(".bk-vs-submit");\n if (!btn || btn.disabled) return;\n var data = collectState();\n window.parent.postMessage({ type: "bk_visual_submit", data: data }, "*");\n btn.disabled = true;\n btn.classList.add("submitted");\n btn.textContent = t.submitted;\n var status = document.querySelector(".bk-vs-status");\n if (status) status.textContent = t.submitted;\n }\n\n /* ── Submit State ── */\n function updateSubmitState() {\n var btn = document.querySelector(".bk-vs-submit");\n if (!btn || btn.classList.contains("submitted")) return;\n var status = document.querySelector(".bk-vs-status");\n var validationError = getValidationError();\n var hasRequiredFields = !!document.querySelector(\n ".bk-input[data-required], .bk-textarea[data-required]",\n );\n var hasInteractable = document.querySelector(\n ".bk-options, .bk-cards, .bk-checklist, .bk-code-compare, .bk-slider, .bk-ranking, .bk-matrix, .bk-mockup-gallery, .bk-mockup-item, .bk-textarea, .bk-input",\n );\n // Required fields present → validation error alone gates the button.\n // No required fields → require at least one interaction before enabling.\n if (hasRequiredFields) {\n btn.disabled = !!validationError;\n } else {\n btn.disabled = !(hasInteractable && hasInteracted);\n }\n if (status) status.textContent = validationError;\n }\n\n /* ── Boot ── */\n if (document.readyState === "loading") {\n document.addEventListener("DOMContentLoaded", initVS);\n } else {\n initVS();\n }\n})();\n\n <\/script>\n </body>\n</html>\n'},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11525:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f,metadata:()=>e});var d=c(5735);let e={title:"Tasks"};function f({children:a}){return(0,d.jsx)(d.Fragment,{children:a})}},13576:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(63871).A)("clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]])},17891:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/get-segment-param")},18677:(a,b,c)=>{Promise.resolve().then(c.bind(c,32054))},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},22341:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(63871).A)("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]])},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},28354:a=>{"use strict";a.exports=require("util")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},32054:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/dante/workspace/dante-code/projects/bluekiwi/src/app/(app)/tasks/[id]/page.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/dante/workspace/dante-code/projects/bluekiwi/src/app/(app)/tasks/[id]/page.tsx","default")},33647:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>M,handler:()=>O,routeModule:()=>N});var d=c(7553),e=c(84006),f=c(67798),g=c(34775),h=c(99373),i=c(73461),j=c(1020),k=c(26349),l=c(54365),m=c(16023),n=c(63747),o=c(24235),p=c(23938),q=c(261),r=c(66758),s=c(77243),t=c(26713),u=c(37527),v=c(22820),w=c(88216),x=c(47929),y=c(79551),z=c(71797),A=c(89125),B=c(86439),C=c(77068),D=c(27269),E=c(61287),F=c(81494),G=c(70722),H=c(70753),I=c(43954),J=c(17891),K={};for(let a in E)0>["default","__next_app__","routeModule","handler"].indexOf(a)&&(K[a]=()=>E[a]);c.d(b,K);let L={children:["",{children:["(app)",{children:["tasks",{children:["[id]",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,32054)),"/Users/dante/workspace/dante-code/projects/bluekiwi/src/app/(app)/tasks/[id]/page.tsx"]}]},{"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"]},[]]},{layout:[()=>Promise.resolve().then(c.bind(c,11525)),"/Users/dante/workspace/dante-code/projects/bluekiwi/src/app/(app)/tasks/layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"]},[]]},{layout:[()=>Promise.resolve().then(c.bind(c,43560)),"/Users/dante/workspace/dante-code/projects/bluekiwi/src/app/(app)/layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,55091,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,45270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,28193,23)),"next/dist/client/components/builtin/unauthorized.js"]},[]]},{layout:[()=>Promise.resolve().then(c.bind(c,76537)),"/Users/dante/workspace/dante-code/projects/bluekiwi/src/app/layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,55091,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,45270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,28193,23)),"next/dist/client/components/builtin/unauthorized.js"]},[]]}.children,M={require:c,loadChunk:()=>Promise.resolve()},N=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/(app)/tasks/[id]/page",pathname:"/tasks/[id]",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:L},distDir:".next",relativeProjectDir:""});async function O(a,b,d){var K,P,Q,R,S;d.requestMeta&&(0,h.setRequestMeta)(a,d.requestMeta),N.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let T=!!(0,h.getRequestMeta)(a,"minimalMode"),U="/(app)/tasks/[id]/page";"/index"===U&&(U="/");let V=await N.prepare(a,b,{srcPage:U,multiZoneDraftMode:!1});if(!V)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:W,query:X,params:Y,pageIsDynamic:Z,buildManifest:$,nextFontManifest:_,reactLoadableManifest:aa,serverActionsManifest:ab,clientReferenceManifest:ac,subresourceIntegrityManifest:ad,prerenderManifest:ae,isDraftMode:af,resolvedPathname:ag,revalidateOnlyGenerated:ah,routerServerContext:ai,nextConfig:aj,parsedUrl:ak,interceptionRoutePatterns:al,deploymentId:am,clientAssetToken:an}=V,ao=(0,q.normalizeAppPath)(U),{isOnDemandRevalidate:ap}=V,aq=aj.experimental.ppr&&!aj.cacheComponents&&(0,I.isInterceptionRouteAppPath)(ag)?null:N.match(ag,ae),ar=(null==aq?void 0:aq.route)??null,as=!!ae.routes[ag],at=a.headers["user-agent"]||"",au=(0,t.getBotType)(at),av=(0,p.isHtmlBotRequest)(a),aw=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[s.NEXT_ROUTER_PREFETCH_HEADER],ax=(0,h.getRequestMeta)(a,"isRSCRequest")??!!a.headers[s.RSC_HEADER],ay=(0,r.getIsPossibleServerAction)(a),az=(0,m.checkIsAppPPREnabled)(aj.experimental.ppr),aA=a.headers[x.NEXT_RESUME_STATE_LENGTH_HEADER];if(!(0,h.getRequestMeta)(a,"postponed")&&T&&az&&ay&&aA&&"string"==typeof aA){let e=parseInt(aA,10),{maxPostponedStateSize:f,maxPostponedStateSizeBytes:g}=(0,D.getMaxPostponedStateSize)(aj.experimental.maxPostponedStateSize);if(!isNaN(e)&&e>0){if(e>g)return b.statusCode=413,b.end((0,D.getPostponedStateExceededErrorMessage)(f)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let i="1 MB",j=(null==(S=aj.experimental.serverActions)?void 0:S.bodySizeLimit)??i,k=e+(j!==i?c(95726).parse(j):1048576),l=await (0,D.readBodyWithSizeLimit)(a,k);if(null===l)return b.statusCode=413,b.end("Request body exceeded limit. To configure the body size limit for Server Actions, see: https://nextjs.org/docs/app/api-reference/next-config-js/serverActions#bodysizelimit"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;if(l.length>=e){let b=l.subarray(0,e).toString("utf8");(0,h.addRequestMeta)(a,"postponed",b);let c=l.subarray(e);(0,h.addRequestMeta)(a,"actionBody",c)}else throw Object.defineProperty(Error(`invariant: expected ${e} bytes of postponed state but only received ${l.length} bytes`),"__NEXT_ERROR_CODE",{value:"E979",enumerable:!1,configurable:!0})}}if(!(0,h.getRequestMeta)(a,"postponed")&&az&&"1"===a.headers[x.NEXT_RESUME_HEADER]&&"POST"===a.method){let{maxPostponedStateSize:c,maxPostponedStateSizeBytes:e}=(0,D.getMaxPostponedStateSize)(aj.experimental.maxPostponedStateSize),f=await (0,D.readBodyWithSizeLimit)(a,e);if(null===f)return b.statusCode=413,b.end((0,D.getPostponedStateExceededErrorMessage)(c)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let g=f.toString("utf8");(0,h.addRequestMeta)(a,"postponed",g)}let aB=!0===N.isDev||!0===aj.experimental.exposeTestingApiInProductionBuild,aC=aB&&("1"===a.headers[s.NEXT_INSTANT_PREFETCH_HEADER]||void 0===a.headers[s.RSC_HEADER]&&"string"==typeof a.headers.cookie&&a.headers.cookie.includes(s.NEXT_INSTANT_TEST_COOKIE+"=")),aD=(az||aC)&&((null==(K=ae.routes[ao]??ae.dynamicRoutes[ao])?void 0:K.renderingMode)==="PARTIALLY_STATIC"||aC&&(aB||(null==ai?void 0:ai.experimentalTestProxy)===!0)),aE=aC&&aD,aF=aE&&!0===N.isDev,aG=!1,aH=aD?(0,h.getRequestMeta)(a,"postponed"):void 0,aI=null==(P=ae.routes[ag])?void 0:P.prefetchDataRoute,aJ=aD&&ax&&!aw&&!aI;T&&(aJ=aJ&&!!aH);let aK=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),aL=(!au||!aD)&&(!at||(0,p.shouldServeStreamingMetadata)(at,aj.htmlLimitedBots)),aM=!!((ar||as||ae.routes[ao])&&!(au&&aD)),aN=aD&&!0===aj.cacheComponents,aO=!0===N.isDev||!aM||"string"==typeof aH||(aN&&(0,h.getRequestMeta)(a,"onCacheEntryV2")?aJ&&!T:aJ),aP=!!au&&aD,aQ=(null==ar?void 0:ar.remainingPrerenderableParams)??[],aR=(null==ar?void 0:ar.fallback)===null&&((null==(Q=ar.fallbackRootParams)?void 0:Q.length)??0)>0,aS=null;if(!af&&aM&&!aO&&!ay&&!aH&&!aJ){let a=aq?"string"==typeof(null==ar?void 0:ar.fallback)?ar.fallback:aq.source:null;if(!0===aj.experimental.partialFallbacks&&a&&(null==ar?void 0:ar.fallbackRouteParams)&&!aR){if(aQ.length>0){let b,c=(b=new Map(aQ.map(a=>[a.paramName,a])),a.split("/").map(a=>{let c=(0,J.getSegmentParam)(a);if(!c)return a;let d=b.get(c.paramName);if(!d)return a;let e=null==Y?void 0:Y[d.paramName];if(!e)return a;let f=Array.isArray(e)?e.map(a=>encodeURIComponent(a)).join("/"):encodeURIComponent(e);return a.replace(function(a){let{repeat:b,optional:c}=(0,J.getParamProperties)(a.paramType);return c?`[[...${a.paramName}]]`:b?`[...${a.paramName}]`:`[${a.paramName}]`}(d),f)}).join("/")||"/");aS=c!==a?c:null}}else aS=ag}let aT=aS;!aT&&(N.isDev||aM&&Z&&(null==ar?void 0:ar.fallbackRouteParams)&&!ay)&&(aT=ag),N.isDev||af||!aM||!ax||aJ||(0,k.d)(a.headers);let aU={...E,tree:L,handler:O,routeModule:N,__next_app__:M};ab&&ac&&(0,o.setManifestsSingleton)({page:U,clientReferenceManifest:ac,serverActionsManifest:ab});let aV=a.method||"GET",aW=(0,g.getTracer)(),aX=aW.getActiveScopeSpan(),aY=!!(null==ai?void 0:ai.isWrappedByNextServer),aZ=!0===aj.experimental.partialFallbacks&&aQ.length>0?(null==ar||null==(R=ar.fallbackRouteParams)?void 0:R.filter(a=>!aQ.some(b=>b.paramName===a.paramName)))??[]:[],a$=async()=>((null==ai?void 0:ai.render404)?await ai.render404(a,b,ak,!1):b.end("This page could not be found"),null);try{let f,k=N.getVaryHeader(ag,al);b.setHeader("Vary",k);let m=async(c,d)=>{let e=new l.NodeNextRequest(a),g=new l.NodeNextResponse(b);return N.render(e,g,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aW.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let d=a.get("next.route");if(d){let a=`${aV} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a),f&&f!==c&&(f.setAttribute("http.route",d),f.updateName(a))}else c.updateName(`${aV} ${U}`)})},o=(0,h.getRequestMeta)(a,"incrementalCache")||await N.getIncrementalCache(a,aj,ae,T);null==o||o.resetRequestCache(),globalThis.__incrementalCache=o;let p=async({span:e,postponed:f,fallbackRouteParams:g,forceStaticRender:i})=>{let k={query:X,params:Y,page:ao,sharedContext:{buildId:W,deploymentId:am,clientAssetToken:an},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aU,Component:(0,j.T)(aU),params:Y,routeModule:N,page:U,postponed:f,shouldWaitOnAllReady:aP,serveStreamingMetadata:aL,supportsDynamicResponse:"string"==typeof f||aO,buildManifest:$,nextFontManifest:_,reactLoadableManifest:aa,subresourceIntegrityManifest:ad,setCacheStatus:null==ai?void 0:ai.setCacheStatus,setIsrStatus:null==ai?void 0:ai.setIsrStatus,setReactDebugChannel:null==ai?void 0:ai.setReactDebugChannel,sendErrorsToBrowser:null==ai?void 0:ai.sendErrorsToBrowser,dir:c(33873).join(process.cwd(),N.relativeProjectDir),isDraftMode:af,botType:au,isOnDemandRevalidate:ap,isPossibleServerAction:ay,assetPrefix:aj.assetPrefix,nextConfigOutput:aj.output,crossOrigin:aj.crossOrigin,trailingSlash:aj.trailingSlash,images:aj.images,previewProps:ae.preview,enableTainting:aj.experimental.taint,htmlLimitedBots:aj.htmlLimitedBots,reactMaxHeadersLength:aj.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:o,cacheLifeProfiles:aj.cacheLife,basePath:aj.basePath,serverActions:aj.experimental.serverActions,logServerFunctions:"object"==typeof aj.logging&&!!aj.logging.serverFunctions,...aE||aF||aG?{isBuildTimePrerendering:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:aF}:{},cacheComponents:!!aj.cacheComponents,experimental:{isRoutePPREnabled:aD,expireTime:aj.expireTime,staleTimes:aj.experimental.staleTimes,dynamicOnHover:!!aj.experimental.dynamicOnHover,optimisticRouting:!!aj.experimental.optimisticRouting,inlineCss:!!aj.experimental.inlineCss,prefetchInlining:aj.experimental.prefetchInlining??!1,authInterrupts:!!aj.experimental.authInterrupts,cachedNavigations:!!aj.experimental.cachedNavigations,clientTraceMetadata:aj.experimental.clientTraceMetadata||[],clientParamParsingOrigins:aj.experimental.clientParamParsingOrigins,maxPostponedStateSizeBytes:(0,C.parseMaxPostponedStateSize)(aj.experimental.maxPostponedStateSize)},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>N.onRequestError(a,b,d,e,ai),err:(0,h.getRequestMeta)(a,"invokeError")}};i&&(k.renderOpts.supportsDynamicResponse=!1);let l=await m(e,k),{metadata:n}=l,{cacheControl:p,headers:q={},fetchTags:r,fetchMetrics:s}=n;if(r&&(q[x.NEXT_CACHE_TAGS_HEADER]=r),a.fetchMetrics=s,aM&&(null==p?void 0:p.revalidate)===0&&!N.isDev&&!aD){let a=n.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${ag}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
2
+ see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:u.CachedRouteKind.APP_PAGE,html:l,headers:q,rscData:n.flightData,postponed:n.postponed,status:n.statusCode,segmentData:n.segmentData},cacheControl:p}},q=async({hasResolved:c,previousCacheEntry:f,isRevalidating:g,span:i,forceStaticRender:j=!1})=>{let k,l=!1===N.isDev,m=c||b.writableEnded;if(ap&&ah&&!f&&!T)return(null==ai?void 0:ai.render404)?await ai.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(ar&&(k=(0,v.parseFallbackField)(ar.fallback)),!0===aj.experimental.partialFallbacks&&(null==ar?void 0:ar.fallback)===null&&!aR&&aQ.length>0&&(k=v.FallbackMode.PRERENDER),k===v.FallbackMode.PRERENDER&&(0,t.isBot)(at)&&(!aD||av)&&(k=v.FallbackMode.BLOCKING_STATIC_RENDER),(null==f?void 0:f.isStale)===-1&&(ap=!0),ap&&(k!==v.FallbackMode.NOT_FOUND||f)&&(k=v.FallbackMode.BLOCKING_STATIC_RENDER),!T&&k!==v.FallbackMode.BLOCKING_STATIC_RENDER&&aT&&!m&&!af&&Z&&(l||!as)){if((l||ar)&&k===v.FallbackMode.NOT_FOUND){if(aj.adapterPath)return await a$();throw new B.NoFallbackError}if(aD&&(aj.cacheComponents?!aJ:!ax)){let b=l&&"string"==typeof(null==ar?void 0:ar.fallback)?ar.fallback:ao,f=(l||aE)&&(null==ar?void 0:ar.fallbackRouteParams)?(0,n.createOpaqueFallbackRouteParams)(ar.fallbackRouteParams):aG?(0,n.getFallbackRouteParams)(ao,N):null;aE&&f&&(0,h.addRequestMeta)(a,"fallbackParams",f);let g=await N.handleResponse({cacheKey:b,req:a,nextConfig:aj,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:ae,isRoutePPREnabled:aD,responseGenerator:async()=>p({span:i,postponed:void 0,fallbackRouteParams:f,forceStaticRender:!0}),waitUntil:d.waitUntil,isMinimalMode:T});if(null===g)return null;if(g)return T||!aD||!(aQ.length>0)||!0!==aj.experimental.partialFallbacks||!aS||!o||ap||aG||aB||aC||aw||(0,H.scheduleOnNextTick)(async()=>{let b=N.getResponseCache(a);try{await b.revalidate(aS,o,aD,!1,a=>p({span:a.span,postponed:void 0,fallbackRouteParams:aZ.length>0?(0,n.createOpaqueFallbackRouteParams)(aZ):null,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}),delete g.cacheControl,g}}let r=ap||g||!aH?void 0:aH;if(aN&&!T&&o&&(aJ||ay)&&!j){let b=await o.get(ag,{kind:u.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});b&&b.value&&b.value.kind===u.CachedRouteKind.APP_PAGE&&(r=b.value.postponed,b&&(-1===b.isStale||!0===b.isStale)&&(0,H.scheduleOnNextTick)(async()=>{let b=N.getResponseCache(a);try{await b.revalidate(ag,o,aD,!1,a=>q({...a,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if((aE||aF)&&void 0!==r)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:u.CachedRouteKind.PAGES,html:w.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let s=(l&&(0,h.getRequestMeta)(a,"renderFallbackShell")||aE&&!as)&&(null==ar?void 0:ar.fallbackRouteParams)?(0,n.createOpaqueFallbackRouteParams)(ar.fallbackRouteParams):aG?(0,n.getFallbackRouteParams)(ao,N):null;if((l||aE)&&aj.cacheComponents&&!as&&(null==ar?void 0:ar.fallbackRouteParams)){let b=(0,n.createOpaqueFallbackRouteParams)(ar.fallbackRouteParams);b&&(0,h.addRequestMeta)(a,"fallbackParams",b)}return p({span:i,postponed:r,fallbackRouteParams:s,forceStaticRender:j})},r=async c=>{var f,g,i,j,k;let l,m=await N.handleResponse({cacheKey:aS,responseGenerator:a=>q({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ap,isRoutePPREnabled:aD,req:a,nextConfig:aj,prerenderManifest:ae,waitUntil:d.waitUntil,isMinimalMode:T});if(af&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),N.isDev&&b.setHeader("Cache-Control","no-cache, must-revalidate"),!m){if(aS)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=m.value)?void 0:f.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=m.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let n="string"==typeof m.value.postponed;ax&&!ay&&am&&b.setHeader(x.NEXT_NAV_DEPLOYMENT_ID_HEADER,am),aM&&!aJ&&(!n||aw)&&(T||b.setHeader("x-nextjs-cache",ap?"REVALIDATED":m.isMiss?"MISS":m.isStale?"STALE":"HIT"),b.setHeader(s.NEXT_IS_PRERENDER_HEADER,"1"));let{value:o}=m;if(aH)l={revalidate:0,expire:void 0};else if(aJ)l={revalidate:0,expire:void 0};else if(!N.isDev)if(af)l={revalidate:0,expire:void 0};else if(aM){if(m.cacheControl)if("number"==typeof m.cacheControl.revalidate){if(m.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${m.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});l={revalidate:m.cacheControl.revalidate,expire:(null==(j=m.cacheControl)?void 0:j.expire)??aj.expireTime}}else l={revalidate:x.CACHE_ONE_YEAR_SECONDS,expire:void 0}}else b.getHeader("Cache-Control")||(l={revalidate:0,expire:void 0});if(m.cacheControl=l,"string"==typeof aK&&(null==o?void 0:o.kind)===u.CachedRouteKind.APP_PAGE&&o.segmentData){b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=o.headers)?void 0:k[x.NEXT_CACHE_TAGS_HEADER];T&&aM&&c&&"string"==typeof c&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,c);let d=o.segmentData.get(aK);return void 0!==d?(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:w.default.fromStatic(d,s.RSC_CONTENT_TYPE_HEADER),cacheControl:m.cacheControl}):(b.statusCode=204,(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:w.default.EMPTY,cacheControl:m.cacheControl}))}let r=aN?(0,h.getRequestMeta)(a,"onCacheEntryV2")??(0,h.getRequestMeta)(a,"onCacheEntry"):(0,h.getRequestMeta)(a,"onCacheEntry");if(r&&await r(m,{url:(0,h.getRequestMeta)(a,"initURL")??a.url}))return null;if(o.headers){let a={...o.headers};for(let[c,d]of(T&&aM||delete a[x.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let t=null==(g=o.headers)?void 0:g[x.NEXT_CACHE_TAGS_HEADER];if(T&&aM&&t&&"string"==typeof t&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,t),!o.status||ax&&aD||(b.statusCode=o.status),!T&&o.status&&F.RedirectStatusCode[o.status]&&ax&&(b.statusCode=200),n&&!aJ&&b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"1"),ax&&!af){if(void 0===o.rscData){if(o.html.contentType!==s.RSC_CONTENT_TYPE_HEADER)if(aj.cacheComponents)return b.statusCode=404,(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:w.default.EMPTY,cacheControl:m.cacheControl});else throw Object.defineProperty(new G.InvariantError(`Expected RSC response, got ${o.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:o.html,cacheControl:m.cacheControl})}return(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:w.default.fromStatic(o.rscData,s.RSC_CONTENT_TYPE_HEADER),cacheControl:m.cacheControl})}let v=o.html;if(aC&&aE){let c=!0===N.isDev?crypto.randomUUID():null;return v.pipeThrough((0,z.createInstantTestScriptInsertionTransformStream)(c)),(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}})}if(!n||T||ax)return(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:v,cacheControl:m.cacheControl});if(aE||aF)return v.push(new ReadableStream({start(a){a.enqueue(y.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}});let B=new TransformStream;return v.push(B.readable),p({span:c,postponed:o.postponed,fallbackRouteParams:null,forceStaticRender:!1}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(B.writable)}).catch(a=>{B.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}})};if(!aY||!aX)return f=aW.getActiveScopeSpan(),await aW.withPropagatedContext(a.headers,()=>aW.trace(i.BaseServerSpan.handleRequest,{spanName:`${aV} ${U}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aV,"http.target":a.url}},r),void 0,!aY);await r(aX)}catch(b){throw b instanceof B.NoFallbackError||await N.onRequestError(a,b,{routerKind:"App Router",routePath:U,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:aM,isOnDemandRevalidate:ap})},!1,ai),b}}},33873:a=>{"use strict";a.exports=require("path")},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},42742:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(63871).A)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]])},42855:(a,b,c)=>{"use strict";function d(a,[b,c]){return Math.min(c,Math.max(b,a))}c.d(b,{q:()=>d})},43954:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/interception-routes")},54183:(a,b,c)=>{"use strict";c.d(b,{S:()=>g});var d=c(67484);let e=process.env.NEXT_PUBLIC_WS_URL?process.env.NEXT_PUBLIC_WS_URL:null,f=e?e.replace(/^http/,"ws"):null;function g(a){let b=(0,d.useRef)(null),c=(0,d.useRef)(a),g=(0,d.useRef)(()=>{}),h=(0,d.useRef)(null),i=(0,d.useRef)(!1);(0,d.useCallback)(()=>{if(f&&e&&b.current?.readyState!==WebSocket.OPEN&&b.current?.readyState!==WebSocket.CONNECTING)try{let a=()=>{let a=new WebSocket(f);a.onmessage=a=>{try{let b=JSON.parse(a.data);c.current(b)}catch{}},a.onclose=()=>{b.current=null,null!==h.current&&window.clearTimeout(h.current),h.current=window.setTimeout(()=>g.current(),3e3)},a.onerror=()=>{a.close()},b.current=a};if(i.current)return void a();fetch(`${e}/health`).then(b=>{if(!b.ok)throw Error("ws relay unavailable");i.current=!0,a()}).catch(()=>{i.current=!1})}catch{null!==h.current&&window.clearTimeout(h.current),h.current=window.setTimeout(()=>g.current(),3e3)}},[])}},60533:(a,b,c)=>{Promise.resolve().then(c.bind(c,92442))},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},63647:(a,b,c)=>{"use strict";c.d(b,{BT:()=>i,Wu:()=>j,ZB:()=>h,Zp:()=>f,aR:()=>g});var d=c(48249);c(67484);var e=c(14490);function f({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card",className:(0,e.cn)("flex flex-col rounded-[1.5rem] border border-border bg-card text-card-foreground shadow-card",a),...b})}function g({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card-header",className:(0,e.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 p-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",a),...b})}function h({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card-title",className:(0,e.cn)("leading-none font-semibold",a),...b})}function i({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card-description",className:(0,e.cn)("text-sm text-muted-foreground",a),...b})}function j({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card-content",className:(0,e.cn)("px-6 pb-6",a),...b})}},70722:a=>{"use strict";a.exports=require("next/dist/shared/lib/invariant-error")},73136:a=>{"use strict";a.exports=require("node:url")},76760:a=>{"use strict";a.exports=require("node:path")},77068:a=>{"use strict";a.exports=require("next/dist/shared/lib/size-limit")},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},88282:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(63871).A)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]])},92442:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>a7});var d=c(48249),e=c(67484),f=c(19099),g=c(2116),h=c.n(g),i=c(54183),j=c(42742),k=c(40560),l=c(2797),m=c(63871);let n=(0,m.A)("rewind",[["path",{d:"M12 6a2 2 0 0 0-3.414-1.414l-6 6a2 2 0 0 0 0 2.828l6 6A2 2 0 0 0 12 18z",key:"2a1g8i"}],["path",{d:"M22 6a2 2 0 0 0-3.414-1.414l-6 6a2 2 0 0 0 0 2.828l6 6A2 2 0 0 0 22 18z",key:"rg3s36"}]]),o=(0,m.A)("circle-stop",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["rect",{x:"9",y:"9",width:"6",height:"6",rx:"1",key:"1ssd4o"}]]),p=(0,m.A)("ban",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}]]);var q=c(88282),r=c(2864),s=c(25297),t=c(50307);c(74429);var u=c(43980),v=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((a,b)=>{let c=(0,u.TL)(`Primitive.${b}`),f=e.forwardRef((a,e)=>{let{asChild:f,...g}=a;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,d.jsx)(f?c:b,{...g,ref:e})});return f.displayName=`Primitive.${b}`,{...a,[b]:f}},{}),w="Progress",[x,y]=(0,t.A)(w),[z,A]=x(w),B=e.forwardRef((a,b)=>{var c,e;let{__scopeProgress:f,value:g=null,max:h,getValueLabel:i=E,...j}=a;(h||0===h)&&!H(h)&&console.error((c=`${h}`,`Invalid prop \`max\` of value \`${c}\` supplied to \`Progress\`. Only numbers greater than 0 are valid max values. Defaulting to \`100\`.`));let k=H(h)?h:100;null===g||I(g,k)||console.error((e=`${g}`,`Invalid prop \`value\` of value \`${e}\` supplied to \`Progress\`. The \`value\` prop must be:
3
3
  - a positive number
4
4
  - less than the value passed to \`max\` (or 100 if no \`max\` prop is set)
5
5
  - \`null\` or \`undefined\` if the progress is indeterminate.
6
6
 
7
- Defaulting to \`null\`.`));let l=I(g,k)?g:null,m=G(l)?i(l,k):void 0;return(0,d.jsx)(z,{scope:f,value:l,max:k,children:(0,d.jsx)(v.div,{"aria-valuemax":k,"aria-valuemin":0,"aria-valuenow":G(l)?l:void 0,"aria-valuetext":m,role:"progressbar","data-state":F(l,k),"data-value":l??void 0,"data-max":k,...j,ref:b})})});B.displayName=w;var C="ProgressIndicator",D=e.forwardRef((a,b)=>{let{__scopeProgress:c,...e}=a,f=A(C,c);return(0,d.jsx)(v.div,{"data-state":F(f.value,f.max),"data-value":f.value??void 0,"data-max":f.max,...e,ref:b})});function E(a,b){return`${Math.round(a/b*100)}%`}function F(a,b){return null==a?"indeterminate":a===b?"complete":"loading"}function G(a){return"number"==typeof a}function H(a){return G(a)&&!isNaN(a)&&a>0}function I(a,b){return G(a)&&!isNaN(a)&&a<=b&&a>=0}D.displayName=C;var J=c(14490);function K({className:a,value:b,...c}){return(0,d.jsx)(B,{"data-slot":"progress",className:(0,J.cn)("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",a),...c,children:(0,d.jsx)(D,{"data-slot":"progress-indicator",className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(b||0)}%)`}})})}var L=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((a,b)=>{let c=(0,u.TL)(`Primitive.${b}`),f=e.forwardRef((a,e)=>{let{asChild:f,...g}=a;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,d.jsx)(f?c:b,{...g,ref:e})});return f.displayName=`Primitive.${b}`,{...a,[b]:f}},{}),M=c(70085),N=c(58221),O=c(76293),P=c(45433),Q=c(69134),R=c(42855),S=c(39471),T="ScrollArea",[U,V]=(0,t.A)(T),[W,X]=U(T),Y=e.forwardRef((a,b)=>{let{__scopeScrollArea:c,type:f="hover",dir:g,scrollHideDelay:h=600,...i}=a,[j,k]=e.useState(null),[l,m]=e.useState(null),[n,o]=e.useState(null),[p,q]=e.useState(null),[r,s]=e.useState(null),[t,u]=e.useState(0),[v,w]=e.useState(0),[x,y]=e.useState(!1),[z,A]=e.useState(!1),B=(0,N.s)(b,a=>k(a)),C=(0,P.jH)(g);return(0,d.jsx)(W,{scope:c,type:f,dir:C,scrollHideDelay:h,scrollArea:j,viewport:l,onViewportChange:m,content:n,onContentChange:o,scrollbarX:p,onScrollbarXChange:q,scrollbarXEnabled:x,onScrollbarXEnabledChange:y,scrollbarY:r,onScrollbarYChange:s,scrollbarYEnabled:z,onScrollbarYEnabledChange:A,onCornerWidthChange:u,onCornerHeightChange:w,children:(0,d.jsx)(L.div,{dir:C,...i,ref:B,style:{position:"relative","--radix-scroll-area-corner-width":t+"px","--radix-scroll-area-corner-height":v+"px",...a.style}})})});Y.displayName=T;var Z="ScrollAreaViewport",$=e.forwardRef((a,b)=>{let{__scopeScrollArea:c,children:f,nonce:g,...h}=a,i=X(Z,c),j=e.useRef(null),k=(0,N.s)(b,j,i.onViewportChange);return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:g}),(0,d.jsx)(L.div,{"data-radix-scroll-area-viewport":"",...h,ref:k,style:{overflowX:i.scrollbarXEnabled?"scroll":"hidden",overflowY:i.scrollbarYEnabled?"scroll":"hidden",...a.style},children:(0,d.jsx)("div",{ref:i.onContentChange,style:{minWidth:"100%",display:"table"},children:f})})]})});$.displayName=Z;var _="ScrollAreaScrollbar",aa=e.forwardRef((a,b)=>{let{forceMount:c,...f}=a,g=X(_,a.__scopeScrollArea),{onScrollbarXEnabledChange:h,onScrollbarYEnabledChange:i}=g,j="horizontal"===a.orientation;return e.useEffect(()=>(j?h(!0):i(!0),()=>{j?h(!1):i(!1)}),[j,h,i]),"hover"===g.type?(0,d.jsx)(ab,{...f,ref:b,forceMount:c}):"scroll"===g.type?(0,d.jsx)(ac,{...f,ref:b,forceMount:c}):"auto"===g.type?(0,d.jsx)(ad,{...f,ref:b,forceMount:c}):"always"===g.type?(0,d.jsx)(ae,{...f,ref:b}):null});aa.displayName=_;var ab=e.forwardRef((a,b)=>{let{forceMount:c,...f}=a,g=X(_,a.__scopeScrollArea),[h,i]=e.useState(!1);return e.useEffect(()=>{let a=g.scrollArea,b=0;if(a){let c=()=>{window.clearTimeout(b),i(!0)},d=()=>{b=window.setTimeout(()=>i(!1),g.scrollHideDelay)};return a.addEventListener("pointerenter",c),a.addEventListener("pointerleave",d),()=>{window.clearTimeout(b),a.removeEventListener("pointerenter",c),a.removeEventListener("pointerleave",d)}}},[g.scrollArea,g.scrollHideDelay]),(0,d.jsx)(M.C,{present:c||h,children:(0,d.jsx)(ad,{"data-state":h?"visible":"hidden",...f,ref:b})})}),ac=e.forwardRef((a,b)=>{var c;let{forceMount:f,...g}=a,h=X(_,a.__scopeScrollArea),i="horizontal"===a.orientation,j=aw(()=>l("SCROLL_END"),100),[k,l]=(c={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},e.useReducer((a,b)=>c[a][b]??a,"hidden"));return e.useEffect(()=>{if("idle"===k){let a=window.setTimeout(()=>l("HIDE"),h.scrollHideDelay);return()=>window.clearTimeout(a)}},[k,h.scrollHideDelay,l]),e.useEffect(()=>{let a=h.viewport,b=i?"scrollLeft":"scrollTop";if(a){let c=a[b],d=()=>{let d=a[b];c!==d&&(l("SCROLL"),j()),c=d};return a.addEventListener("scroll",d),()=>a.removeEventListener("scroll",d)}},[h.viewport,i,l,j]),(0,d.jsx)(M.C,{present:f||"hidden"!==k,children:(0,d.jsx)(ae,{"data-state":"hidden"===k?"hidden":"visible",...g,ref:b,onPointerEnter:(0,S.mK)(a.onPointerEnter,()=>l("POINTER_ENTER")),onPointerLeave:(0,S.mK)(a.onPointerLeave,()=>l("POINTER_LEAVE"))})})}),ad=e.forwardRef((a,b)=>{let c=X(_,a.__scopeScrollArea),{forceMount:f,...g}=a,[h,i]=e.useState(!1),j="horizontal"===a.orientation,k=aw(()=>{if(c.viewport){let a=c.viewport.offsetWidth<c.viewport.scrollWidth,b=c.viewport.offsetHeight<c.viewport.scrollHeight;i(j?a:b)}},10);return ax(c.viewport,k),ax(c.content,k),(0,d.jsx)(M.C,{present:f||h,children:(0,d.jsx)(ae,{"data-state":h?"visible":"hidden",...g,ref:b})})}),ae=e.forwardRef((a,b)=>{let{orientation:c="vertical",...f}=a,g=X(_,a.__scopeScrollArea),h=e.useRef(null),i=e.useRef(0),[j,k]=e.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),l=ar(j.viewport,j.content),m={...f,sizes:j,onSizesChange:k,hasThumb:!!(l>0&&l<1),onThumbChange:a=>h.current=a,onThumbPointerUp:()=>i.current=0,onThumbPointerDown:a=>i.current=a};function n(a,b){return function(a,b,c,d="ltr"){let e=as(c),f=b||e/2,g=c.scrollbar.paddingStart+f,h=c.scrollbar.size-c.scrollbar.paddingEnd-(e-f),i=c.content-c.viewport;return au([g,h],"ltr"===d?[0,i]:[-1*i,0])(a)}(a,i.current,j,b)}return"horizontal"===c?(0,d.jsx)(af,{...m,ref:b,onThumbPositionChange:()=>{if(g.viewport&&h.current){let a=at(g.viewport.scrollLeft,j,g.dir);h.current.style.transform=`translate3d(${a}px, 0, 0)`}},onWheelScroll:a=>{g.viewport&&(g.viewport.scrollLeft=a)},onDragScroll:a=>{g.viewport&&(g.viewport.scrollLeft=n(a,g.dir))}}):"vertical"===c?(0,d.jsx)(ag,{...m,ref:b,onThumbPositionChange:()=>{if(g.viewport&&h.current){let a=at(g.viewport.scrollTop,j);h.current.style.transform=`translate3d(0, ${a}px, 0)`}},onWheelScroll:a=>{g.viewport&&(g.viewport.scrollTop=a)},onDragScroll:a=>{g.viewport&&(g.viewport.scrollTop=n(a))}}):null}),af=e.forwardRef((a,b)=>{let{sizes:c,onSizesChange:f,...g}=a,h=X(_,a.__scopeScrollArea),[i,j]=e.useState(),k=e.useRef(null),l=(0,N.s)(b,k,h.onScrollbarXChange);return e.useEffect(()=>{k.current&&j(getComputedStyle(k.current))},[k]),(0,d.jsx)(aj,{"data-orientation":"horizontal",...g,ref:l,sizes:c,style:{bottom:0,left:"rtl"===h.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===h.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":as(c)+"px",...a.style},onThumbPointerDown:b=>a.onThumbPointerDown(b.x),onDragScroll:b=>a.onDragScroll(b.x),onWheelScroll:(b,c)=>{if(h.viewport){var d,e;let f=h.viewport.scrollLeft+b.deltaX;a.onWheelScroll(f),d=f,e=c,d>0&&d<e&&b.preventDefault()}},onResize:()=>{k.current&&h.viewport&&i&&f({content:h.viewport.scrollWidth,viewport:h.viewport.offsetWidth,scrollbar:{size:k.current.clientWidth,paddingStart:aq(i.paddingLeft),paddingEnd:aq(i.paddingRight)}})}})}),ag=e.forwardRef((a,b)=>{let{sizes:c,onSizesChange:f,...g}=a,h=X(_,a.__scopeScrollArea),[i,j]=e.useState(),k=e.useRef(null),l=(0,N.s)(b,k,h.onScrollbarYChange);return e.useEffect(()=>{k.current&&j(getComputedStyle(k.current))},[k]),(0,d.jsx)(aj,{"data-orientation":"vertical",...g,ref:l,sizes:c,style:{top:0,right:"ltr"===h.dir?0:void 0,left:"rtl"===h.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":as(c)+"px",...a.style},onThumbPointerDown:b=>a.onThumbPointerDown(b.y),onDragScroll:b=>a.onDragScroll(b.y),onWheelScroll:(b,c)=>{if(h.viewport){var d,e;let f=h.viewport.scrollTop+b.deltaY;a.onWheelScroll(f),d=f,e=c,d>0&&d<e&&b.preventDefault()}},onResize:()=>{k.current&&h.viewport&&i&&f({content:h.viewport.scrollHeight,viewport:h.viewport.offsetHeight,scrollbar:{size:k.current.clientHeight,paddingStart:aq(i.paddingTop),paddingEnd:aq(i.paddingBottom)}})}})}),[ah,ai]=U(_),aj=e.forwardRef((a,b)=>{let{__scopeScrollArea:c,sizes:f,hasThumb:g,onThumbChange:h,onThumbPointerUp:i,onThumbPointerDown:j,onThumbPositionChange:k,onDragScroll:l,onWheelScroll:m,onResize:n,...o}=a,p=X(_,c),[q,r]=e.useState(null),s=(0,N.s)(b,a=>r(a)),t=e.useRef(null),u=e.useRef(""),v=p.viewport,w=f.content-f.viewport,x=(0,O.c)(m),y=(0,O.c)(k),z=aw(n,10);function A(a){t.current&&l({x:a.clientX-t.current.left,y:a.clientY-t.current.top})}return e.useEffect(()=>{let a=a=>{let b=a.target;q?.contains(b)&&x(a,w)};return document.addEventListener("wheel",a,{passive:!1}),()=>document.removeEventListener("wheel",a,{passive:!1})},[v,q,w,x]),e.useEffect(y,[f,y]),ax(q,z),ax(p.content,z),(0,d.jsx)(ah,{scope:c,scrollbar:q,hasThumb:g,onThumbChange:(0,O.c)(h),onThumbPointerUp:(0,O.c)(i),onThumbPositionChange:y,onThumbPointerDown:(0,O.c)(j),children:(0,d.jsx)(L.div,{...o,ref:s,style:{position:"absolute",...o.style},onPointerDown:(0,S.mK)(a.onPointerDown,a=>{0===a.button&&(a.target.setPointerCapture(a.pointerId),t.current=q.getBoundingClientRect(),u.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",p.viewport&&(p.viewport.style.scrollBehavior="auto"),A(a))}),onPointerMove:(0,S.mK)(a.onPointerMove,A),onPointerUp:(0,S.mK)(a.onPointerUp,a=>{let b=a.target;b.hasPointerCapture(a.pointerId)&&b.releasePointerCapture(a.pointerId),document.body.style.webkitUserSelect=u.current,p.viewport&&(p.viewport.style.scrollBehavior=""),t.current=null})})})}),ak="ScrollAreaThumb",al=e.forwardRef((a,b)=>{let{forceMount:c,...e}=a,f=ai(ak,a.__scopeScrollArea);return(0,d.jsx)(M.C,{present:c||f.hasThumb,children:(0,d.jsx)(am,{ref:b,...e})})}),am=e.forwardRef((a,b)=>{let{__scopeScrollArea:c,style:f,...g}=a,h=X(ak,c),i=ai(ak,c),{onThumbPositionChange:j}=i,k=(0,N.s)(b,a=>i.onThumbChange(a)),l=e.useRef(void 0),m=aw(()=>{l.current&&(l.current(),l.current=void 0)},100);return e.useEffect(()=>{let a=h.viewport;if(a){let b=()=>{m(),l.current||(l.current=av(a,j),j())};return j(),a.addEventListener("scroll",b),()=>a.removeEventListener("scroll",b)}},[h.viewport,m,j]),(0,d.jsx)(L.div,{"data-state":i.hasThumb?"visible":"hidden",...g,ref:k,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...f},onPointerDownCapture:(0,S.mK)(a.onPointerDownCapture,a=>{let b=a.target.getBoundingClientRect(),c=a.clientX-b.left,d=a.clientY-b.top;i.onThumbPointerDown({x:c,y:d})}),onPointerUp:(0,S.mK)(a.onPointerUp,i.onThumbPointerUp)})});al.displayName=ak;var an="ScrollAreaCorner",ao=e.forwardRef((a,b)=>{let c=X(an,a.__scopeScrollArea),e=!!(c.scrollbarX&&c.scrollbarY);return"scroll"!==c.type&&e?(0,d.jsx)(ap,{...a,ref:b}):null});ao.displayName=an;var ap=e.forwardRef((a,b)=>{let{__scopeScrollArea:c,...f}=a,g=X(an,c),[h,i]=e.useState(0),[j,k]=e.useState(0),l=!!(h&&j);return ax(g.scrollbarX,()=>{let a=g.scrollbarX?.offsetHeight||0;g.onCornerHeightChange(a),k(a)}),ax(g.scrollbarY,()=>{let a=g.scrollbarY?.offsetWidth||0;g.onCornerWidthChange(a),i(a)}),l?(0,d.jsx)(L.div,{...f,ref:b,style:{width:h,height:j,position:"absolute",right:"ltr"===g.dir?0:void 0,left:"rtl"===g.dir?0:void 0,bottom:0,...a.style}}):null});function aq(a){return a?parseInt(a,10):0}function ar(a,b){let c=a/b;return isNaN(c)?0:c}function as(a){let b=ar(a.viewport,a.content),c=a.scrollbar.paddingStart+a.scrollbar.paddingEnd;return Math.max((a.scrollbar.size-c)*b,18)}function at(a,b,c="ltr"){let d=as(b),e=b.scrollbar.paddingStart+b.scrollbar.paddingEnd,f=b.scrollbar.size-e,g=b.content-b.viewport,h=(0,R.q)(a,"ltr"===c?[0,g]:[-1*g,0]);return au([0,g],[0,f-d])(h)}function au(a,b){return c=>{if(a[0]===a[1]||b[0]===b[1])return b[0];let d=(b[1]-b[0])/(a[1]-a[0]);return b[0]+d*(c-a[0])}}var av=(a,b=()=>{})=>{let c={left:a.scrollLeft,top:a.scrollTop},d=0;return!function e(){let f={left:a.scrollLeft,top:a.scrollTop},g=c.left!==f.left,h=c.top!==f.top;(g||h)&&b(),c=f,d=window.requestAnimationFrame(e)}(),()=>window.cancelAnimationFrame(d)};function aw(a,b){let c=(0,O.c)(a),d=e.useRef(0);return e.useEffect(()=>()=>window.clearTimeout(d.current),[]),e.useCallback(()=>{window.clearTimeout(d.current),d.current=window.setTimeout(c,b)},[c,b])}function ax(a,b){let c=(0,O.c)(b);(0,Q.N)(()=>{let b=0;if(a){let d=new ResizeObserver(()=>{cancelAnimationFrame(b),b=window.requestAnimationFrame(c)});return d.observe(a),()=>{window.cancelAnimationFrame(b),d.unobserve(a)}}},[a,c])}function ay({className:a,children:b,...c}){return(0,d.jsxs)(Y,{"data-slot":"scroll-area",className:(0,J.cn)("relative",a),...c,children:[(0,d.jsx)($,{"data-slot":"scroll-area-viewport",className:"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",children:b}),(0,d.jsx)(az,{}),(0,d.jsx)(ao,{})]})}function az({className:a,orientation:b="vertical",...c}){return(0,d.jsx)(aa,{"data-slot":"scroll-area-scrollbar",orientation:b,className:(0,J.cn)("flex touch-none p-px transition-colors select-none","vertical"===b&&"h-full w-2.5 border-l border-l-transparent","horizontal"===b&&"h-2.5 flex-col border-t border-t-transparent",a),...c,children:(0,d.jsx)(al,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}var aA=c(45729);function aB({taskTitle:a,taskSubtitle:b,taskStatus:c,provider:e,model:f,steps:g,currentStep:h,totalSteps:i,selectedStep:m,onSelectStep:t,onRewind:u,onCancel:v,onClose:w,onResume:x}){let{t:y}=(0,aA.B)(),z=g.filter(a=>"completed"===a.status).length,A=i>0?Math.round(z/i*100):0;return(0,d.jsxs)("div",{className:"flex h-full w-full shrink-0 flex-col border-r border-[var(--border)] bg-surface-soft/60",children:[(0,d.jsxs)("div",{className:"shrink-0 border-b border-[var(--border)] px-5 py-5",children:[(0,d.jsx)("h2",{className:"truncate text-sm font-semibold",title:a,children:a}),b&&(0,d.jsx)("p",{className:"mt-0.5 truncate text-xs text-[var(--muted-foreground)]",title:b,children:b}),(0,d.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,d.jsx)(aC,{status:c}),(0,d.jsxs)("span",{className:"text-xs text-[var(--muted-foreground)]",children:[z," / ",i]})]}),(e||f)&&(0,d.jsxs)("div",{className:"mt-2 flex items-center gap-2 text-xs text-[var(--muted-foreground)]",children:[e&&(0,d.jsx)("span",{className:"rounded bg-[var(--card)] px-1.5 py-0.5 font-mono text-[10px]",children:e}),f&&(0,d.jsx)("span",{className:"rounded bg-[var(--card)] px-1.5 py-0.5 font-mono text-[10px]",children:f})]}),(0,d.jsx)(K,{value:A,className:"mt-3 h-1.5"})]}),(0,d.jsx)(ay,{className:"flex-1",children:(0,d.jsx)("div",{className:"px-4 py-4",children:g.map((a,b)=>{var e;let f=a.stepOrder===m,i="completed"===a.status,n=a.stepOrder===h&&"running"===c,o="failed"===a.status,p=!i&&!n&&!o,q=b===g.length-1,s=(e=a.nodeType,"gate"===e?{label:y("editor.gate"),cls:"bg-kiwi-100 text-kiwi-700"}:"loop"===e?{label:y("editor.loop"),cls:"border-[var(--border)] bg-transparent text-[var(--muted-foreground)]"}:{label:y("editor.action"),cls:"bg-brand-blue-100 text-brand-blue-700"});return(0,d.jsxs)("div",{className:"grid grid-cols-[28px_1fr] items-center gap-x-3",children:[(0,d.jsx)("button",{onClick:()=>t(a.stepOrder),className:(0,J.cn)("justify-self-center flex h-7 w-7 shrink-0 items-center justify-center rounded-full text-xs font-medium transition-all",i&&"bg-brand-blue-600 text-white",n&&"bg-kiwi-600 text-white ring-[3px] ring-kiwi-600/30",o&&"bg-[var(--destructive)] text-white",p&&"bg-[var(--muted)] border border-[var(--border)] text-[var(--muted-foreground)] opacity-60",f&&"ring-2 ring-brand-blue-700"),children:i?(0,d.jsx)(j.A,{className:"h-3.5 w-3.5"}):n?(0,d.jsx)(k.A,{className:"h-3.5 w-3.5 animate-spin"}):o?(0,d.jsx)(l.A,{className:"h-3.5 w-3.5"}):a.stepOrder}),(0,d.jsxs)("button",{onClick:()=>t(a.stepOrder),className:(0,J.cn)("rounded-2xl border px-3 py-2.5 pb-3 text-left transition-colors",f&&"border-brand-blue-200 bg-[var(--card)] shadow-[var(--shadow-soft)]",!f&&"border-transparent bg-transparent hover:border-border/70 hover:bg-[var(--card)]/80"),children:[(0,d.jsx)("p",{className:(0,J.cn)("truncate text-[13px] font-medium leading-tight",p&&"opacity-60"),title:a.title||y("tasks.stepTitleFallback",{step:a.stepOrder}),children:a.title||y("tasks.stepTitleFallback",{step:a.stepOrder})}),(0,d.jsxs)("div",{className:"mt-1 flex items-center gap-1.5 flex-wrap",children:[(0,d.jsx)(r.E,{variant:"outline",className:(0,J.cn)("px-1.5 py-0 text-[10px]",s.cls),children:s.label}),a.iterations&&a.iterations>1&&(0,d.jsxs)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:["x",a.iterations]}),a.duration&&(0,d.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:a.duration})]})]}),!q&&(0,d.jsx)("div",{className:(0,J.cn)("h-5 w-0.5 justify-self-center",i?"bg-brand-blue-600":"bg-[var(--border)]")})]},a.stepOrder)})})}),"running"===c&&(u||v||w)&&(0,d.jsxs)("div",{className:"shrink-0 border-t border-[var(--border)] px-4 py-3 flex gap-2",children:[u&&(0,d.jsxs)(s.$,{variant:"outline",size:"sm",className:"flex-1 gap-1.5",onClick:u,children:[(0,d.jsx)(n,{className:"h-3.5 w-3.5"}),y("tasks.rewind")]}),v&&(0,d.jsxs)(s.$,{variant:"outline",size:"sm",className:"flex-1 gap-1.5 text-amber-600 border-amber-300 hover:bg-amber-50 hover:text-amber-700",onClick:v,children:[(0,d.jsx)(o,{className:"h-3.5 w-3.5"}),y("tasks.stopTask")]}),w&&(0,d.jsxs)(s.$,{variant:"outline",size:"sm",className:"flex-1 gap-1.5 text-[var(--destructive)] hover:bg-destructive/10",onClick:w,children:[(0,d.jsx)(p,{className:"h-3.5 w-3.5"}),y("tasks.closeTask")]})]}),"cancelled"===c&&(u||x||w)&&(0,d.jsxs)("div",{className:"shrink-0 border-t border-[var(--border)] px-4 py-3 flex gap-2",children:[u&&(0,d.jsxs)(s.$,{variant:"outline",size:"sm",className:"flex-1 gap-1.5",onClick:u,children:[(0,d.jsx)(n,{className:"h-3.5 w-3.5"}),y("tasks.rewind")]}),x&&(0,d.jsxs)(s.$,{variant:"outline",size:"sm",className:"flex-1 gap-1.5 text-brand-blue-600 border-brand-blue-300 hover:bg-brand-blue-50 hover:text-brand-blue-700",onClick:x,children:[(0,d.jsx)(q.A,{className:"h-3.5 w-3.5"}),y("tasks.resumeTask")]}),w&&(0,d.jsxs)(s.$,{variant:"outline",size:"sm",className:"flex-1 gap-1.5 text-[var(--destructive)] hover:bg-destructive/10",onClick:w,children:[(0,d.jsx)(p,{className:"h-3.5 w-3.5"}),y("tasks.closeTask")]})]})]})}function aC({status:a}){let b={running:"border-brand-blue-600/20 bg-brand-blue-100 text-brand-blue-700",completed:"border-brand-blue-600/20 bg-transparent text-brand-blue-700",failed:"border-[color:var(--destructive)] bg-destructive/10 text-[var(--destructive)]",timed_out:"border-amber-400/40 bg-amber-50 text-amber-700 dark:bg-amber-950/30 dark:text-amber-400",cancelled:"border-slate-300 bg-slate-100 text-slate-500 dark:bg-slate-800/40 dark:text-slate-400",pending:"border-[var(--border)] bg-transparent text-[var(--muted-foreground)]"},{t:c}=(0,aA.B)(),e=c("completed"===a?"tasks.completed":"failed"===a?"tasks.failed":"running"===a?"tasks.running":"timed_out"===a?"tasks.timedOut":"cancelled"===a?"tasks.cancelled":"tasks.pending");return(0,d.jsx)(r.E,{className:b[a]||b.pending,children:e})}var aD=c(77405),aE=c(36815);let aF=(0,m.A)("shield-check",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);var aG=c(49681);let aH=(0,m.A)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);var aI=c(13576),aJ=c(22341),aK=c(98971),aL=c(95801),aM=c(96845),aN=c(80600);let aO=(0,m.A)("send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);var aP=c(63647),aQ=c(38393);function aR({taskId:a,onApproved:b}){let{t:c}=(0,aA.B)(),[f,g]=(0,e.useState)(!1),h=async()=>{g(!0);try{await fetch(`/api/tasks/${a}/approve`,{method:"POST"}),b?.()}finally{g(!1)}};return(0,d.jsxs)("div",{className:"mb-4 flex items-center justify-between gap-3 rounded-[1.25rem] border border-amber-200 bg-amber-50 px-4 py-3 dark:border-amber-900/40 dark:bg-amber-950/30",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-amber-700 dark:text-amber-400",children:[(0,d.jsx)(aF,{className:"h-4 w-4 shrink-0"}),(0,d.jsx)("span",{children:c("tasks.hitlPendingApproval")})]}),(0,d.jsxs)(s.$,{size:"sm",disabled:f,onClick:()=>void h(),className:"shrink-0 bg-amber-600 text-white hover:bg-amber-700 dark:bg-amber-500 dark:hover:bg-amber-600",children:[f?(0,d.jsx)(k.A,{className:"mr-1.5 h-3.5 w-3.5 animate-spin"}):(0,d.jsx)(aF,{className:"mr-1.5 h-3.5 w-3.5"}),c("tasks.hitlApprove")]})]})}let aS="prose prose-sm dark:prose-invert prose-headings:text-base prose-headings:font-semibold prose-headings:mt-4 prose-headings:mb-2 prose-p:my-2 prose-ul:my-2 prose-li:my-0.5 prose-table:my-3 prose-pre:bg-gray-800 prose-pre:text-gray-200 prose-strong:text-[var(--foreground)] max-w-none";function aT(a){if(!a)return"";let b=a.replace(/\\n/g,"\n");return b.replace(/(?<=^|\s|`)([\w./-]+\/[\w./-]+\.\w{1,5})(?=\s|$|`|[),;:])/gm,"**`$1`**")}function aU(a,b){if(!b)return"";let c=a=>{let b=new Date(a);return isNaN(b.getTime())?new Date(a+"Z"):b},d=c(b).getTime()-c(a).getTime();if(isNaN(d)||d<0)return"";let e=Math.round(d/1e3);if(e<60)return`${e}s`;let f=Math.floor(e/60),g=e%60;if(f<60)return g>0?`${f}m ${g}s`:`${f}m`;let h=Math.floor(f/60),i=f%60;return i>0?`${h}h ${i}m`:`${h}h`}function aV({status:a}){return"completed"===a?(0,d.jsx)(aG.A,{className:"h-4 w-4 text-brand-blue-700"}):"failed"===a?(0,d.jsx)(aH,{className:"h-4 w-4 text-[var(--destructive)]"}):"running"===a?(0,d.jsx)(k.A,{className:"h-4 w-4 animate-spin text-brand-blue-700"}):(0,d.jsx)(aI.A,{className:"h-4 w-4 text-[var(--muted-foreground)]"})}function aW({nodeType:a}){let{t:b}=(0,aA.B)(),c="gate"===a?{Icon:aJ.A,cls:"bg-kiwi-100 text-kiwi-700",label:b("editor.gate")}:"loop"===a?{Icon:aK.A,cls:"border-[var(--border)] bg-transparent text-[var(--muted-foreground)]",label:b("editor.loop")}:{Icon:aL.A,cls:"bg-brand-blue-100 text-brand-blue-700",label:b("editor.action")};return(0,d.jsxs)(r.E,{className:c.cls,children:[(0,d.jsx)(c.Icon,{className:"h-3.5 w-3.5"}),c.label]})}function aX({so:a,defaultOpen:b}){let{t:c}=(0,aA.B)(),[f,g]=(0,e.useState)(b),h=null!=a.user_input||null!=a.thinking||null!=a.assistant_output,i=Object.keys(a).filter(a=>"user_input"!==a&&"thinking"!==a&&"assistant_output"!==a),j=!h&&i.length>0;return(0,d.jsxs)("div",{className:"text-sm text-[var(--foreground)] bg-[var(--card)] rounded-[var(--radius)] border border-[var(--border)] overflow-hidden",children:[j&&(0,d.jsxs)("div",{className:"px-5 py-4",children:[(0,d.jsxs)("div",{className:"text-[10px] font-medium uppercase tracking-wider text-[var(--muted-foreground)] mb-2",children:["\uD83D\uDCE4"," ",c("tasks.output")]}),(0,d.jsx)("pre",{className:"max-h-[32rem] overflow-auto rounded-[var(--radius-sm)] bg-[var(--muted)] p-3 text-xs leading-relaxed text-[var(--foreground)]",children:JSON.stringify(a,null,2)})]}),a.user_input&&(0,d.jsxs)("div",{className:"px-5 pt-4 pb-3 bg-kiwi-100 border-b border-[var(--border)]",children:[(0,d.jsxs)("div",{className:"text-[10px] font-medium uppercase tracking-wider text-[var(--muted-foreground)] mb-1.5",children:["\uD83D\uDCE5"," ",c("tasks.input")]}),(0,d.jsx)("div",{className:"text-sm",children:a.user_input})]}),a.thinking&&(0,d.jsxs)("div",{className:"border-b border-[var(--border)]",children:[(0,d.jsxs)("button",{onClick:()=>g(!f),className:"w-full px-5 py-2.5 flex items-center gap-2 text-[10px] font-medium uppercase tracking-wider text-[var(--muted-foreground)] hover:bg-brand-blue-100 transition-colors",children:[(0,d.jsx)("span",{className:"transition-transform inline-block",style:{transform:f?"rotate(90deg)":"rotate(0deg)"},children:"▶"}),"\uD83E\uDDE0"," ",c("tasks.thinking")]}),f&&(0,d.jsx)("div",{className:`px-5 pb-4 italic text-[var(--muted-foreground)] ${aS}`,children:(0,d.jsx)(aD.oz,{remarkPlugins:[aE.A],children:aT(a.thinking)})})]}),a.assistant_output&&(0,d.jsxs)("div",{className:"px-5 py-4",children:[(a.user_input||a.thinking)&&(0,d.jsxs)("div",{className:"text-[10px] font-medium uppercase tracking-wider text-[var(--muted-foreground)] mb-2",children:["\uD83D\uDCE4"," ",c("tasks.output")]}),(0,d.jsx)("div",{className:`${aS} max-h-[32rem] overflow-y-auto`,children:(0,d.jsx)(aD.oz,{remarkPlugins:[aE.A],children:aT(a.assistant_output)})})]})]})}let aY={sm:"",md:"sm:max-w-2xl",lg:"sm:max-w-4xl",xl:"sm:max-w-6xl",full:"sm:max-w-[95vw]"},aZ={sm:"max-h-[70vh]",md:"max-h-[80vh]",lg:"max-h-[85vh]",xl:"max-h-[88vh]",full:"max-h-[90vh]"},a$={sm:"min-h-[400px]",md:"min-h-[500px]",lg:"min-h-[600px]",xl:"min-h-[700px]",full:"min-h-[80vh]"};function a_({html:a,taskId:b,nodeId:f,isVisualSelection:g,logStatus:h,existingResponse:i,onSelected:j,autoOpen:l,onAutoOpened:m}){let{t:n}=(0,aA.B)(),[o,p]=(0,e.useState)(!1),[q,r]=(0,e.useState)(!!i),[t,u]=(0,e.useState)(!1),v=(0,e.useRef)(null),w=g&&("pending"===h||"running"===h||"completed"===h)&&!q,x=(0,e.useMemo)(()=>{let b,c;return b=a.match(/<!--\s*@bk\b[^>]*?\bsize=["']?(\w+)/i),["sm","md","lg","xl","full"].includes(c=b?.[1])?c:"sm"},[a]),y=(0,e.useMemo)(()=>{let b;if((b=a.trim()).startsWith("<!DOCTYPE")||b.startsWith("<!doctype")||b.startsWith("<html"))return a;try{let{VS_FRAME_TEMPLATE:b}=c(8204),d="u">typeof document&&document.documentElement.classList.contains("dark")?"dark":"light",e="u">typeof document&&document.documentElement.lang||"ko";return b.replace("{{AGENT_CONTENT}}",a).replace('data-theme="light"',`data-theme="${d}"`).replace('data-lang="ko"',`data-lang="${e}"`)}catch{return a}},[a]);return(0,d.jsxs)(aQ.lG,{open:t,onOpenChange:u,children:[(0,d.jsx)(aQ.zM,{asChild:!0,children:(0,d.jsx)(s.$,{variant:"outline",size:"sm",children:n(g&&w?"tasks.selectVisual":"tasks.viewVisual")})}),(0,d.jsxs)(aQ.Cf,{className:(0,J.cn)("overflow-hidden p-0",aY[x]),children:[(0,d.jsx)(aQ.c7,{className:"border-b border-[var(--border)] p-5",children:(0,d.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,d.jsx)(aQ.L3,{children:n(g&&w?"tasks.selectVisual":"tasks.visualViewer")}),o&&(0,d.jsx)(k.A,{className:"h-4 w-4 animate-spin text-[var(--muted-foreground)]"}),q&&(0,d.jsx)(aG.A,{className:"h-4 w-4 text-green-500"}),(0,d.jsx)(aQ.HM,{asChild:!0,children:(0,d.jsx)(s.$,{variant:"ghost",size:"sm",children:n("common.close")})})]})}),w&&(0,d.jsx)("div",{className:"border-b border-[var(--border)] bg-amber-50 px-5 py-2 text-xs text-amber-700 dark:bg-amber-950/20 dark:text-amber-400",children:n("tasks.visualSelectHint")}),(0,d.jsx)(ay,{className:aZ[x],children:(0,d.jsx)("div",{className:"p-5",children:(0,d.jsx)("div",{className:"overflow-hidden rounded-[var(--radius)] border border-[var(--border)]",children:(0,d.jsx)("iframe",{ref:v,srcDoc:y,className:(0,J.cn)("w-full",a$[x]),sandbox:"allow-scripts"})})})})]})]})}function a0(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function a1({value:a}){let{t:b}=(0,aA.B)(),c=function(a){if(!a)return null;try{return JSON.parse(a)}catch{return a}}(a);if(null==c)return null;if(!a0(c))return(0,d.jsxs)("div",{className:"rounded-[var(--radius)] border border-brand-blue-600 bg-brand-blue-100 p-3",children:[(0,d.jsx)("p",{className:"mb-1 text-xs font-medium text-brand-blue-700",children:b("tasks.responseSubmitted")}),(0,d.jsx)("p",{className:"text-sm text-[var(--foreground)]",children:String(c)})]});let e=Array.isArray(c.selections)?c.selections.filter(a=>"string"==typeof a):[],f=Array.isArray(c.ranking)?c.ranking.filter(a=>"string"==typeof a):[],g=a0(c.values)?c.values:null,h=a0(c.fields)?c.fields:null,i=a0(c.option_comments)?c.option_comments:null,j=a0(c.matrix)?c.matrix:null,k="string"==typeof c.comment&&c.comment.trim()?c.comment.trim():null;return(0,d.jsxs)("div",{className:"rounded-[var(--radius)] border border-brand-blue-600 bg-brand-blue-100 p-3",children:[(0,d.jsx)("p",{className:"mb-3 text-xs font-medium text-brand-blue-700",children:b("tasks.responseSubmitted")}),(0,d.jsxs)("div",{className:"space-y-3 text-sm text-[var(--foreground)]",children:[e.length>0&&(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"mb-1 text-xs font-medium text-brand-blue-700",children:b("tasks.responseSelections")}),(0,d.jsx)("div",{className:"flex flex-wrap gap-2",children:e.map(a=>(0,d.jsx)("span",{className:"rounded-full border border-brand-blue-600/20 bg-white/80 px-2.5 py-1 text-xs font-medium",children:a},a))})]}),k&&(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"mb-1 text-xs font-medium text-brand-blue-700",children:b("tasks.responseComment")}),(0,d.jsx)("p",{className:"whitespace-pre-wrap",children:k})]}),h&&Object.keys(h).length>0&&(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"mb-1 text-xs font-medium text-brand-blue-700",children:b("tasks.responseFields")}),(0,d.jsx)("div",{className:"space-y-1.5",children:Object.entries(h).map(([a,b])=>(0,d.jsxs)("div",{className:"rounded-[0.9rem] border border-brand-blue-600/15 bg-white/70 px-3 py-2",children:[(0,d.jsx)("p",{className:"text-[11px] font-medium uppercase tracking-[0.08em] text-brand-blue-700",children:a}),(0,d.jsx)("p",{className:"mt-0.5 whitespace-pre-wrap",children:String(b)})]},a))})]}),i&&Object.keys(i).length>0&&(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"mb-1 text-xs font-medium text-brand-blue-700",children:b("tasks.responseOptionComments")}),(0,d.jsx)("div",{className:"space-y-1.5",children:Object.entries(i).map(([a,b])=>(0,d.jsxs)("div",{className:"rounded-[0.9rem] border border-brand-blue-600/15 bg-white/70 px-3 py-2",children:[(0,d.jsx)("p",{className:"text-[11px] font-medium uppercase tracking-[0.08em] text-brand-blue-700",children:a}),(0,d.jsx)("p",{className:"mt-0.5 whitespace-pre-wrap",children:String(b)})]},a))})]}),g&&Object.keys(g).length>0&&(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"mb-1 text-xs font-medium text-brand-blue-700",children:b("tasks.responseValues")}),(0,d.jsx)("div",{className:"space-y-1",children:Object.entries(g).map(([a,b])=>(0,d.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,d.jsx)("span",{className:"text-[var(--muted-foreground)]",children:a}),(0,d.jsx)("span",{className:"font-medium",children:String(b)})]},a))})]}),f.length>0&&(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"mb-1 text-xs font-medium text-brand-blue-700",children:b("tasks.responseRanking")}),(0,d.jsx)("ol",{className:"space-y-1",children:f.map((a,b)=>(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-flex h-5 w-5 items-center justify-center rounded-full bg-white/80 text-[11px] font-semibold text-brand-blue-700",children:b+1}),(0,d.jsx)("span",{children:a})]},a))})]}),j&&Object.keys(j).length>0&&(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"mb-1 text-xs font-medium text-brand-blue-700",children:b("tasks.responseMatrix")}),(0,d.jsx)("div",{className:"space-y-1.5",children:Object.entries(j).map(([a,b])=>{let c=a0(b)?b:{};return(0,d.jsxs)("div",{className:"flex items-center justify-between gap-3 rounded-[0.9rem] border border-brand-blue-600/15 bg-white/70 px-3 py-2",children:[(0,d.jsx)("span",{className:"font-medium",children:a}),(0,d.jsxs)("span",{className:"text-xs text-[var(--muted-foreground)]",children:["x: ",String(c.x??"-"),", y: ",String(c.y??"-")]})]},a)})})]})]})]})}function a2({taskId:a,nodeId:b,existingResponse:c,onSubmit:f}){let{t:g}=(0,aA.B)(),[h,i]=(0,e.useState)(""),[j,k]=(0,e.useState)(!1);if(c)return(0,d.jsx)(a1,{value:c});let l=async()=>{h.trim()&&(k(!0),await fetch(`/api/tasks/${a}/respond`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({node_id:b,response:h.trim()})}),k(!1),i(""),f())};return(0,d.jsxs)("div",{className:"rounded-[var(--radius)] border border-kiwi-600 bg-kiwi-100 p-3",children:[(0,d.jsx)("p",{className:"mb-2 text-xs font-medium text-[var(--foreground)]",children:g("tasks.awaitingResponse")}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("input",{type:"text",value:h,onChange:a=>i(a.target.value),onKeyDown:a=>"Enter"===a.key&&!a.nativeEvent.isComposing&&l(),placeholder:g("tasks.typeResponse"),className:"flex-1 rounded-[var(--radius)] border border-[var(--border)] bg-[var(--card)] px-3 py-1.5 text-sm focus:outline-none focus:ring-2 focus:ring-brand-blue-500"}),(0,d.jsx)(s.$,{onClick:l,disabled:j||!h.trim(),size:"sm",children:g(j?"common.loading":"tasks.send")})]})]})}function a3({logs:a,taskId:b,workflowId:c,taskStatus:f,registry:g,artifacts:h,comments:i,onAddComment:j,onRefresh:k,autoOpenVs:l,onVsOpened:m}){let{t:n}=(0,aA.B)(),[o,p]=(0,e.useState)(""),[q,t]=(0,e.useState)([]),u=a[a.length-1],v=a.length>1;if(0===a.length)return(0,d.jsx)("div",{className:"flex flex-1 items-center justify-center text-sm text-[var(--muted-foreground)]",children:n("tasks.selectStep")});let w=()=>{o.trim()&&j&&(j(o.trim()),p(""))};return(0,d.jsx)(ay,{className:"flex-1",children:(0,d.jsxs)("div",{className:"mx-auto w-full max-w-5xl p-6",children:[(0,d.jsxs)("div",{className:"mb-6 rounded-[1.75rem] border border-border/80 bg-surface-soft/60 p-5",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3 flex-wrap",children:[(0,d.jsx)("h2",{className:"text-xl font-semibold tracking-tight",children:u.title||n("tasks.stepTitleFallback",{step:u.step_order})}),(0,d.jsx)(aW,{nodeType:u.node_type}),(0,d.jsxs)(r.E,{className:(0,J.cn)("completed"===u.status&&"border-brand-blue-600/20 bg-brand-blue-100 text-brand-blue-700","failed"===u.status&&"border-[color:var(--destructive)] bg-destructive/10 text-[var(--destructive)]","running"===u.status&&"border-brand-blue-600/20 bg-brand-blue-100 text-brand-blue-700","cancelled"===u.status&&"border-slate-300 bg-slate-100 text-slate-500","pending"===u.status&&"border-[var(--border)] bg-transparent text-[var(--muted-foreground)]"),children:[(0,d.jsx)(aV,{status:u.status}),"completed"===u.status?n("tasks.completed"):"failed"===u.status?n("tasks.failed"):"running"===u.status?n("tasks.running"):"cancelled"===u.status?n("tasks.cancelled"):n("tasks.pending")]})]}),(0,d.jsxs)("div",{className:"mt-3 flex items-center gap-3 text-xs text-[var(--muted-foreground)] flex-wrap",children:[u.provider_slug&&(0,d.jsx)("span",{className:"rounded bg-[var(--card)] px-1.5 py-0.5 font-mono text-[10px]",children:g[u.provider_slug]??u.provider_slug}),u.model_slug&&(0,d.jsx)("span",{className:"rounded bg-[var(--card)] px-1.5 py-0.5 font-mono text-[10px]",children:g[u.model_slug]??u.model_slug}),u.user_name&&(0,d.jsx)("span",{children:u.user_name}),u.credential_service&&(0,d.jsxs)("span",{className:"rounded bg-[var(--card)] px-1.5 py-0.5 font-mono text-[10px]",children:["\uD83D\uDD11",u.credential_service]}),u.completed_at&&(0,d.jsxs)("span",{className:"flex items-center gap-1",children:[(0,d.jsx)(aI.A,{className:"h-3 w-3"}),aU(u.started_at,u.completed_at)]}),v&&(0,d.jsxs)("span",{className:"text-[10px]",children:["(",a.length," ",n("tasks.iteration"),")"]})]})]}),u.hitl&&u.approval_requested_at&&!u.approved_at&&(0,d.jsx)(aR,{taskId:b,onApproved:k}),u.hitl&&u.approved_at&&(0,d.jsxs)("div",{className:"mb-4 flex items-center gap-2 rounded-[1.25rem] border border-green-200 bg-green-50 px-4 py-3 text-sm text-green-700 dark:border-green-900/40 dark:bg-green-950/30 dark:text-green-400",children:[(0,d.jsx)(aF,{className:"h-4 w-4 shrink-0"}),(0,d.jsx)("span",{children:n("tasks.hitlApproved")})]}),v&&(0,d.jsx)(a5,{logs:a,taskId:b,taskStatus:f,onRefresh:k,autoOpenVs:l,onVsOpened:m}),!v&&(0,d.jsx)(a4,{log:u,taskId:b,taskStatus:f,thinkingOpen:"running"===u.status,onRefresh:k,autoOpenVs:l,onVsOpened:m}),q.length>0&&(0,d.jsxs)("div",{className:"mt-6 rounded-[1.25rem] border border-border/80 bg-[var(--card)] p-4",children:[(0,d.jsxs)("h3",{className:"mb-3 flex items-center gap-2 text-sm font-semibold",children:[(0,d.jsx)(aM.A,{className:"h-4 w-4"}),"Attachments"]}),(0,d.jsx)("div",{className:"space-y-2",children:q.map(a=>(0,d.jsxs)("div",{className:"flex items-center justify-between gap-3 rounded-[0.875rem] border border-border/80 bg-surface-soft/35 px-3 py-2 text-sm",children:[(0,d.jsx)("span",{className:"truncate font-medium",children:a.filename}),(0,d.jsx)("span",{className:"shrink-0 text-xs text-[var(--muted-foreground)]",children:function(a){if(!Number.isFinite(a)||a<1024)return`${a||0} B`;let b=["KB","MB","GB"],c=a,d=-1;for(;c>=1024&&d<b.length-1;)c/=1024,d+=1;return`${c>=10||0===d?c.toFixed(0):c.toFixed(1)} ${b[d]}`}(a.size_bytes)})]},a.id))})]}),h&&h.length>0&&(0,d.jsxs)("div",{className:"mt-6",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold mb-2",children:n("tasks.artifacts")}),(0,d.jsx)("div",{className:"flex flex-wrap gap-2",children:h.map(a=>(0,d.jsxs)("a",{href:`/api/tasks/${b}/artifacts/${a.id}`,className:"inline-flex items-center gap-1.5 rounded-full border border-[var(--border)] bg-[var(--card)] px-3 py-1 text-xs hover:bg-brand-blue-100 transition-colors",children:[(0,d.jsx)(aN.A,{className:"h-3 w-3"}),a.filename]},a.id))})]}),(i||j)&&(0,d.jsxs)("div",{className:"mt-6 rounded-[1.5rem] border border-border/80 bg-[var(--card)] p-5",children:[(0,d.jsxs)("h3",{className:"text-sm font-semibold mb-3 flex items-center gap-1.5",children:[(0,d.jsx)(aJ.A,{className:"h-4 w-4"}),n("tasks.comments"),i&&i.length>0&&(0,d.jsxs)("span",{className:"text-[var(--muted-foreground)] font-normal",children:["(",i.length,")"]})]}),i&&i.length>0&&(0,d.jsx)("div",{className:"space-y-3 mb-4",children:i.map(a=>{var b;return(0,d.jsxs)("div",{className:"rounded-[1rem] border border-border/80 bg-surface-soft/35 p-3.5",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,d.jsx)("span",{className:"text-xs font-medium capitalize",children:a.author??n("tasks.defaultAuthor")}),(0,d.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:(b=a.created_at,new Intl.DateTimeFormat("ko-KR",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}).format(new Date(b)))})]}),(0,d.jsx)("p",{className:"text-sm",children:a.comment})]},a.id)})}),j&&(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("input",{type:"text",value:o,onChange:a=>p(a.target.value),onKeyDown:a=>"Enter"===a.key&&!a.nativeEvent.isComposing&&w(),placeholder:n("tasks.addComment"),className:"flex-1 rounded-[var(--radius)] border border-[var(--border)] bg-[var(--card)] px-3 py-1.5 text-sm focus:outline-none focus:ring-2 focus:ring-brand-blue-500"}),(0,d.jsx)(s.$,{onClick:w,disabled:!o.trim(),size:"sm",variant:"outline",children:(0,d.jsx)(aO,{className:"h-3.5 w-3.5"})})]})]})]})})}function a4({log:a,taskId:b,taskStatus:c,thinkingOpen:e,onRefresh:f,autoOpenVs:g,onVsOpened:h}){return(0,d.jsxs)("div",{className:"space-y-4",children:[a.structured_output?(0,d.jsx)(aX,{so:a.structured_output,defaultOpen:e}):a.output?(0,d.jsx)("div",{className:(0,J.cn)("max-h-[40rem] overflow-y-auto rounded-[1.5rem] border border-border/80 bg-[var(--card)] p-5 text-sm text-[var(--foreground)] shadow-[var(--shadow-soft)]",aS),children:(0,d.jsx)(aD.oz,{remarkPlugins:[aE.A],children:aT(a.output)})}):null,a.visual_html&&(0,d.jsx)(a_,{html:a.visual_html,taskId:b,nodeId:a.node_id,isVisualSelection:!!a.visual_selection,logStatus:a.status,existingResponse:a.web_response,onSelected:()=>f?.(),autoOpen:g,onAutoOpened:h}),"pending"===a.status&&"completed"!==c&&(0,d.jsx)(a2,{taskId:b,nodeId:a.node_id,existingResponse:a.web_response,onSubmit:()=>f?.()}),"pending"!==a.status&&a.web_response&&(0,d.jsx)(a1,{value:a.web_response})]})}function a5({logs:a,taskId:b,taskStatus:c,onRefresh:f,autoOpenVs:g,onVsOpened:h}){let{t:i}=(0,aA.B)(),[j,k]=(0,e.useState)(!1),l=a.slice(0,-1),m=a[a.length-1];return(0,d.jsxs)("div",{className:"space-y-4",children:[l.length>0&&(0,d.jsx)("button",{onClick:()=>k(!j),className:"text-xs text-brand-blue-600 hover:text-brand-blue-700 transition-colors",children:j?i("tasks.hidePreviousIterations"):i("tasks.showPreviousIterations").replace("{n}",String(l.length))}),j&&l.map((e,j)=>(0,d.jsxs)(aP.Zp,{className:"border-border/80 opacity-75",children:[(0,d.jsx)(aP.aR,{className:"p-4 pb-2",children:(0,d.jsxs)(aP.ZB,{className:"text-xs text-[var(--muted-foreground)]",children:[i("tasks.iteration")," ",j+1," / ",a.length,e.completed_at&&(0,d.jsx)("span",{className:"ml-2 font-normal",children:aU(e.started_at,e.completed_at)})]})}),(0,d.jsx)(aP.Wu,{className:"p-4 pt-0",children:(0,d.jsx)(a4,{log:e,taskId:b,taskStatus:c,thinkingOpen:!1,onRefresh:f,autoOpenVs:g,onVsOpened:h})})]},e.id)),(0,d.jsxs)("div",{children:[a.length>1&&(0,d.jsxs)("p",{className:"text-[10px] uppercase tracking-wider text-[var(--muted-foreground)] mb-2 font-medium",children:[i("tasks.latest")," (",i("tasks.iteration")," ",a.length,")"]}),(0,d.jsx)(a4,{log:m,taskId:b,taskStatus:c,thinkingOpen:"running"===m.status,onRefresh:f,autoOpenVs:g,onVsOpened:h})]})]})}function a6(a){let b=new Date(a);return isNaN(b.getTime())?new Date(a+"Z"):b}function a7(){let a=(0,f.useParams)(),b=(0,f.useSearchParams)(),{t:c}=(0,aA.B)(),g=a.id,j=b.get("step"),k=b.get("vs"),[l,m]=(0,e.useState)(null),[n,o]=(0,e.useState)(!0),[p,q]=(0,e.useState)(()=>{if(!j)return null;let a=Number(j);return Number.isFinite(a)?a:null}),[r,s]=(0,e.useState)([]),[t,u]=(0,e.useState)("true"===k),v=(0,e.useRef)(null),w=(0,e.useCallback)(async()=>{let a=await fetch(`/api/tasks/${g}`);if(a.ok){let b=(await a.json()).data,c=v.current;m(b),b&&q(a=>null===a||null!==c&&a===c?b.current_step:a)}o(!1)},[g]),x=(0,e.useCallback)(async()=>{let a=await fetch(`/api/tasks/${g}/comments`);if(a.ok){var b;let c;s((b=await a.json(),(Array.isArray(c=b?.data)?c:[]).map(a=>{let b=a.id;if(null==b||Number.isNaN(Number(b)))return null;let c="string"==typeof a.comment?a.comment.trim():"",d=c.match(/^\[([^\]]+)\]\s*(.*)$/),e=d?.[2]??c,f=d?.[1],g="number"==typeof a.step_order?a.step_order:null,h="string"==typeof a.created_at?a.created_at:void 0;return{id:Number(b),comment:e,...f?{author:f}:{},created_at:h??new Date(Date.now()-Math.floor(1e3*Math.random()*3600)).toISOString(),...null===g?{}:{step_order:g}}}).filter(a=>null!==a)))}else s([])},[g]);(0,i.S)(a=>{"task_update"===a.type&&a.task_id===Number(g)&&w()});let y=(0,e.useMemo)(()=>l?function(a,b){let c=new Map;for(let b of a){let a=c.get(b.step_order)||[];a.push(b),c.set(b.step_order,a)}let d=[];for(let[a,e]of c){let c=e[e.length-1];if(a>b&&"cancelled"===c.status)continue;let f=e.reduce((a,b)=>b.completed_at?a+(a6(b.completed_at).getTime()-a6(b.started_at).getTime()):a,0);d.push({stepOrder:a,nodeId:c.node_id,title:c.node_title||"",nodeType:c.node_type,status:c.status,duration:f>0?function(a,b){if(!b)return"";let c=a6(b).getTime()-a6(a).getTime();if(isNaN(c)||c<0)return"";let d=Math.round(c/1e3);if(d<60)return`${d}s`;let e=Math.floor(d/60),f=d%60;if(e<60)return f>0?`${e}m ${f}s`:`${e}m`;let g=Math.floor(e/60),h=e%60;return h>0?`${g}h ${h}m`:`${g}h`}(c.started_at,new Date(a6(c.started_at).getTime()+f).toISOString()):"",iterations:e.length>1?e.length:void 0})}return d.sort((a,b)=>a.stepOrder-b.stepOrder)}(l.logs,l.current_step):[],[l]),z=l?.total_steps||0,A=(0,e.useMemo)(()=>{if(!l)return[];let a=p??l.current_step;return l.logs.filter(b=>b.step_order===a).map(a=>({id:a.id,node_id:a.node_id,step_order:a.step_order,title:a.node_title,node_type:a.node_type,status:a.status,output:a.output,structured_output:a.structured_output,visual_html:a.visual_html,visual_selection:a.visual_selection??null,web_response:a.web_response,hitl:a.hitl??null,approved_at:a.approved_at??null,approval_requested_at:a.approval_requested_at??null,provider_slug:a.provider_slug,model_slug:a.model_slug,user_name:a.user_name,credential_service:a.credential_service,started_at:a.started_at,completed_at:a.completed_at}))},[l,p]),B=async()=>{await fetch(`/api/tasks/${g}/rewind`,{method:"POST"}),w()},C=async()=>{await fetch(`/api/tasks/${g}/cancel`,{method:"POST"}),w()},D=async()=>{await fetch(`/api/tasks/${g}/complete`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:"completed",summary:"사용자 요청으로 종료됨"})}),w()},E=async()=>{await fetch(`/api/tasks/${g}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:"running"})}),w()},F=async a=>{if(!l)return;let b=p??l.current_step;await fetch(`/api/tasks/${g}/comments`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({comment:a,step_order:b})}),x()};if(n)return(0,d.jsx)("main",{className:"flex h-[calc(100vh-3rem)] items-center justify-center",children:(0,d.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:c("common.loading")})});if(!l)return(0,d.jsxs)("main",{className:"flex h-[calc(100vh-3rem)] flex-col items-center justify-center gap-3",children:[(0,d.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:c("tasks.taskNotFound")}),(0,d.jsxs)(h(),{href:"/tasks",className:"text-sm text-brand-blue-600 hover:underline",children:["← ",c("tasks.backToList")]})]});let G=l.workflow_title??c("tasks.taskFallback",{id:l.id}),H=l.provider_slug?l.registry?.[l.provider_slug]??l.provider_slug:null,I=l.model_slug?l.registry?.[l.model_slug]??l.model_slug:null;return(0,d.jsxs)("div",{className:"grid h-[calc(100vh-3rem)] grid-cols-[320px_minmax(0,1fr)]",children:[(0,d.jsx)(aB,{taskTitle:G,taskSubtitle:l.title??void 0,taskStatus:l.status,provider:H,model:I,steps:y,currentStep:l.current_step,totalSteps:z,selectedStep:p??l.current_step,onSelectStep:q,onRewind:"running"===l.status||"cancelled"===l.status?B:void 0,onCancel:"running"===l.status?C:void 0,onClose:"running"===l.status||"cancelled"===l.status?D:void 0,onResume:"cancelled"===l.status?E:void 0}),(0,d.jsx)(a3,{logs:A,taskId:l.id,workflowId:l.workflow_id,taskStatus:l.status,registry:l.registry??{},comments:r.filter(a=>a.step_order===(p??l.current_step)),onAddComment:F,onRefresh:w,autoOpenVs:t,onVsOpened:()=>u(!1)})]})}},95801:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(63871).A)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]])},96845:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(63871).A)("paperclip",[["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",key:"1miecu"}]])},98971:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(63871).A)("repeat",[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]])}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[3445,7111,63,3879,1588,1220,5573,9031,211,5589,4024],()=>b(b.s=68810));module.exports=c})();
7
+ Defaulting to \`null\`.`));let l=I(g,k)?g:null,m=G(l)?i(l,k):void 0;return(0,d.jsx)(z,{scope:f,value:l,max:k,children:(0,d.jsx)(v.div,{"aria-valuemax":k,"aria-valuemin":0,"aria-valuenow":G(l)?l:void 0,"aria-valuetext":m,role:"progressbar","data-state":F(l,k),"data-value":l??void 0,"data-max":k,...j,ref:b})})});B.displayName=w;var C="ProgressIndicator",D=e.forwardRef((a,b)=>{let{__scopeProgress:c,...e}=a,f=A(C,c);return(0,d.jsx)(v.div,{"data-state":F(f.value,f.max),"data-value":f.value??void 0,"data-max":f.max,...e,ref:b})});function E(a,b){return`${Math.round(a/b*100)}%`}function F(a,b){return null==a?"indeterminate":a===b?"complete":"loading"}function G(a){return"number"==typeof a}function H(a){return G(a)&&!isNaN(a)&&a>0}function I(a,b){return G(a)&&!isNaN(a)&&a<=b&&a>=0}D.displayName=C;var J=c(14490);function K({className:a,value:b,...c}){return(0,d.jsx)(B,{"data-slot":"progress",className:(0,J.cn)("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",a),...c,children:(0,d.jsx)(D,{"data-slot":"progress-indicator",className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(b||0)}%)`}})})}var L=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((a,b)=>{let c=(0,u.TL)(`Primitive.${b}`),f=e.forwardRef((a,e)=>{let{asChild:f,...g}=a;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,d.jsx)(f?c:b,{...g,ref:e})});return f.displayName=`Primitive.${b}`,{...a,[b]:f}},{}),M=c(70085),N=c(58221),O=c(76293),P=c(45433),Q=c(69134),R=c(42855),S=c(39471),T="ScrollArea",[U,V]=(0,t.A)(T),[W,X]=U(T),Y=e.forwardRef((a,b)=>{let{__scopeScrollArea:c,type:f="hover",dir:g,scrollHideDelay:h=600,...i}=a,[j,k]=e.useState(null),[l,m]=e.useState(null),[n,o]=e.useState(null),[p,q]=e.useState(null),[r,s]=e.useState(null),[t,u]=e.useState(0),[v,w]=e.useState(0),[x,y]=e.useState(!1),[z,A]=e.useState(!1),B=(0,N.s)(b,a=>k(a)),C=(0,P.jH)(g);return(0,d.jsx)(W,{scope:c,type:f,dir:C,scrollHideDelay:h,scrollArea:j,viewport:l,onViewportChange:m,content:n,onContentChange:o,scrollbarX:p,onScrollbarXChange:q,scrollbarXEnabled:x,onScrollbarXEnabledChange:y,scrollbarY:r,onScrollbarYChange:s,scrollbarYEnabled:z,onScrollbarYEnabledChange:A,onCornerWidthChange:u,onCornerHeightChange:w,children:(0,d.jsx)(L.div,{dir:C,...i,ref:B,style:{position:"relative","--radix-scroll-area-corner-width":t+"px","--radix-scroll-area-corner-height":v+"px",...a.style}})})});Y.displayName=T;var Z="ScrollAreaViewport",$=e.forwardRef((a,b)=>{let{__scopeScrollArea:c,children:f,nonce:g,...h}=a,i=X(Z,c),j=e.useRef(null),k=(0,N.s)(b,j,i.onViewportChange);return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:g}),(0,d.jsx)(L.div,{"data-radix-scroll-area-viewport":"",...h,ref:k,style:{overflowX:i.scrollbarXEnabled?"scroll":"hidden",overflowY:i.scrollbarYEnabled?"scroll":"hidden",...a.style},children:(0,d.jsx)("div",{ref:i.onContentChange,style:{minWidth:"100%",display:"table"},children:f})})]})});$.displayName=Z;var _="ScrollAreaScrollbar",aa=e.forwardRef((a,b)=>{let{forceMount:c,...f}=a,g=X(_,a.__scopeScrollArea),{onScrollbarXEnabledChange:h,onScrollbarYEnabledChange:i}=g,j="horizontal"===a.orientation;return e.useEffect(()=>(j?h(!0):i(!0),()=>{j?h(!1):i(!1)}),[j,h,i]),"hover"===g.type?(0,d.jsx)(ab,{...f,ref:b,forceMount:c}):"scroll"===g.type?(0,d.jsx)(ac,{...f,ref:b,forceMount:c}):"auto"===g.type?(0,d.jsx)(ad,{...f,ref:b,forceMount:c}):"always"===g.type?(0,d.jsx)(ae,{...f,ref:b}):null});aa.displayName=_;var ab=e.forwardRef((a,b)=>{let{forceMount:c,...f}=a,g=X(_,a.__scopeScrollArea),[h,i]=e.useState(!1);return e.useEffect(()=>{let a=g.scrollArea,b=0;if(a){let c=()=>{window.clearTimeout(b),i(!0)},d=()=>{b=window.setTimeout(()=>i(!1),g.scrollHideDelay)};return a.addEventListener("pointerenter",c),a.addEventListener("pointerleave",d),()=>{window.clearTimeout(b),a.removeEventListener("pointerenter",c),a.removeEventListener("pointerleave",d)}}},[g.scrollArea,g.scrollHideDelay]),(0,d.jsx)(M.C,{present:c||h,children:(0,d.jsx)(ad,{"data-state":h?"visible":"hidden",...f,ref:b})})}),ac=e.forwardRef((a,b)=>{var c;let{forceMount:f,...g}=a,h=X(_,a.__scopeScrollArea),i="horizontal"===a.orientation,j=aw(()=>l("SCROLL_END"),100),[k,l]=(c={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},e.useReducer((a,b)=>c[a][b]??a,"hidden"));return e.useEffect(()=>{if("idle"===k){let a=window.setTimeout(()=>l("HIDE"),h.scrollHideDelay);return()=>window.clearTimeout(a)}},[k,h.scrollHideDelay,l]),e.useEffect(()=>{let a=h.viewport,b=i?"scrollLeft":"scrollTop";if(a){let c=a[b],d=()=>{let d=a[b];c!==d&&(l("SCROLL"),j()),c=d};return a.addEventListener("scroll",d),()=>a.removeEventListener("scroll",d)}},[h.viewport,i,l,j]),(0,d.jsx)(M.C,{present:f||"hidden"!==k,children:(0,d.jsx)(ae,{"data-state":"hidden"===k?"hidden":"visible",...g,ref:b,onPointerEnter:(0,S.mK)(a.onPointerEnter,()=>l("POINTER_ENTER")),onPointerLeave:(0,S.mK)(a.onPointerLeave,()=>l("POINTER_LEAVE"))})})}),ad=e.forwardRef((a,b)=>{let c=X(_,a.__scopeScrollArea),{forceMount:f,...g}=a,[h,i]=e.useState(!1),j="horizontal"===a.orientation,k=aw(()=>{if(c.viewport){let a=c.viewport.offsetWidth<c.viewport.scrollWidth,b=c.viewport.offsetHeight<c.viewport.scrollHeight;i(j?a:b)}},10);return ax(c.viewport,k),ax(c.content,k),(0,d.jsx)(M.C,{present:f||h,children:(0,d.jsx)(ae,{"data-state":h?"visible":"hidden",...g,ref:b})})}),ae=e.forwardRef((a,b)=>{let{orientation:c="vertical",...f}=a,g=X(_,a.__scopeScrollArea),h=e.useRef(null),i=e.useRef(0),[j,k]=e.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),l=ar(j.viewport,j.content),m={...f,sizes:j,onSizesChange:k,hasThumb:!!(l>0&&l<1),onThumbChange:a=>h.current=a,onThumbPointerUp:()=>i.current=0,onThumbPointerDown:a=>i.current=a};function n(a,b){return function(a,b,c,d="ltr"){let e=as(c),f=b||e/2,g=c.scrollbar.paddingStart+f,h=c.scrollbar.size-c.scrollbar.paddingEnd-(e-f),i=c.content-c.viewport;return au([g,h],"ltr"===d?[0,i]:[-1*i,0])(a)}(a,i.current,j,b)}return"horizontal"===c?(0,d.jsx)(af,{...m,ref:b,onThumbPositionChange:()=>{if(g.viewport&&h.current){let a=at(g.viewport.scrollLeft,j,g.dir);h.current.style.transform=`translate3d(${a}px, 0, 0)`}},onWheelScroll:a=>{g.viewport&&(g.viewport.scrollLeft=a)},onDragScroll:a=>{g.viewport&&(g.viewport.scrollLeft=n(a,g.dir))}}):"vertical"===c?(0,d.jsx)(ag,{...m,ref:b,onThumbPositionChange:()=>{if(g.viewport&&h.current){let a=at(g.viewport.scrollTop,j);h.current.style.transform=`translate3d(0, ${a}px, 0)`}},onWheelScroll:a=>{g.viewport&&(g.viewport.scrollTop=a)},onDragScroll:a=>{g.viewport&&(g.viewport.scrollTop=n(a))}}):null}),af=e.forwardRef((a,b)=>{let{sizes:c,onSizesChange:f,...g}=a,h=X(_,a.__scopeScrollArea),[i,j]=e.useState(),k=e.useRef(null),l=(0,N.s)(b,k,h.onScrollbarXChange);return e.useEffect(()=>{k.current&&j(getComputedStyle(k.current))},[k]),(0,d.jsx)(aj,{"data-orientation":"horizontal",...g,ref:l,sizes:c,style:{bottom:0,left:"rtl"===h.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===h.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":as(c)+"px",...a.style},onThumbPointerDown:b=>a.onThumbPointerDown(b.x),onDragScroll:b=>a.onDragScroll(b.x),onWheelScroll:(b,c)=>{if(h.viewport){var d,e;let f=h.viewport.scrollLeft+b.deltaX;a.onWheelScroll(f),d=f,e=c,d>0&&d<e&&b.preventDefault()}},onResize:()=>{k.current&&h.viewport&&i&&f({content:h.viewport.scrollWidth,viewport:h.viewport.offsetWidth,scrollbar:{size:k.current.clientWidth,paddingStart:aq(i.paddingLeft),paddingEnd:aq(i.paddingRight)}})}})}),ag=e.forwardRef((a,b)=>{let{sizes:c,onSizesChange:f,...g}=a,h=X(_,a.__scopeScrollArea),[i,j]=e.useState(),k=e.useRef(null),l=(0,N.s)(b,k,h.onScrollbarYChange);return e.useEffect(()=>{k.current&&j(getComputedStyle(k.current))},[k]),(0,d.jsx)(aj,{"data-orientation":"vertical",...g,ref:l,sizes:c,style:{top:0,right:"ltr"===h.dir?0:void 0,left:"rtl"===h.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":as(c)+"px",...a.style},onThumbPointerDown:b=>a.onThumbPointerDown(b.y),onDragScroll:b=>a.onDragScroll(b.y),onWheelScroll:(b,c)=>{if(h.viewport){var d,e;let f=h.viewport.scrollTop+b.deltaY;a.onWheelScroll(f),d=f,e=c,d>0&&d<e&&b.preventDefault()}},onResize:()=>{k.current&&h.viewport&&i&&f({content:h.viewport.scrollHeight,viewport:h.viewport.offsetHeight,scrollbar:{size:k.current.clientHeight,paddingStart:aq(i.paddingTop),paddingEnd:aq(i.paddingBottom)}})}})}),[ah,ai]=U(_),aj=e.forwardRef((a,b)=>{let{__scopeScrollArea:c,sizes:f,hasThumb:g,onThumbChange:h,onThumbPointerUp:i,onThumbPointerDown:j,onThumbPositionChange:k,onDragScroll:l,onWheelScroll:m,onResize:n,...o}=a,p=X(_,c),[q,r]=e.useState(null),s=(0,N.s)(b,a=>r(a)),t=e.useRef(null),u=e.useRef(""),v=p.viewport,w=f.content-f.viewport,x=(0,O.c)(m),y=(0,O.c)(k),z=aw(n,10);function A(a){t.current&&l({x:a.clientX-t.current.left,y:a.clientY-t.current.top})}return e.useEffect(()=>{let a=a=>{let b=a.target;q?.contains(b)&&x(a,w)};return document.addEventListener("wheel",a,{passive:!1}),()=>document.removeEventListener("wheel",a,{passive:!1})},[v,q,w,x]),e.useEffect(y,[f,y]),ax(q,z),ax(p.content,z),(0,d.jsx)(ah,{scope:c,scrollbar:q,hasThumb:g,onThumbChange:(0,O.c)(h),onThumbPointerUp:(0,O.c)(i),onThumbPositionChange:y,onThumbPointerDown:(0,O.c)(j),children:(0,d.jsx)(L.div,{...o,ref:s,style:{position:"absolute",...o.style},onPointerDown:(0,S.mK)(a.onPointerDown,a=>{0===a.button&&(a.target.setPointerCapture(a.pointerId),t.current=q.getBoundingClientRect(),u.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",p.viewport&&(p.viewport.style.scrollBehavior="auto"),A(a))}),onPointerMove:(0,S.mK)(a.onPointerMove,A),onPointerUp:(0,S.mK)(a.onPointerUp,a=>{let b=a.target;b.hasPointerCapture(a.pointerId)&&b.releasePointerCapture(a.pointerId),document.body.style.webkitUserSelect=u.current,p.viewport&&(p.viewport.style.scrollBehavior=""),t.current=null})})})}),ak="ScrollAreaThumb",al=e.forwardRef((a,b)=>{let{forceMount:c,...e}=a,f=ai(ak,a.__scopeScrollArea);return(0,d.jsx)(M.C,{present:c||f.hasThumb,children:(0,d.jsx)(am,{ref:b,...e})})}),am=e.forwardRef((a,b)=>{let{__scopeScrollArea:c,style:f,...g}=a,h=X(ak,c),i=ai(ak,c),{onThumbPositionChange:j}=i,k=(0,N.s)(b,a=>i.onThumbChange(a)),l=e.useRef(void 0),m=aw(()=>{l.current&&(l.current(),l.current=void 0)},100);return e.useEffect(()=>{let a=h.viewport;if(a){let b=()=>{m(),l.current||(l.current=av(a,j),j())};return j(),a.addEventListener("scroll",b),()=>a.removeEventListener("scroll",b)}},[h.viewport,m,j]),(0,d.jsx)(L.div,{"data-state":i.hasThumb?"visible":"hidden",...g,ref:k,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...f},onPointerDownCapture:(0,S.mK)(a.onPointerDownCapture,a=>{let b=a.target.getBoundingClientRect(),c=a.clientX-b.left,d=a.clientY-b.top;i.onThumbPointerDown({x:c,y:d})}),onPointerUp:(0,S.mK)(a.onPointerUp,i.onThumbPointerUp)})});al.displayName=ak;var an="ScrollAreaCorner",ao=e.forwardRef((a,b)=>{let c=X(an,a.__scopeScrollArea),e=!!(c.scrollbarX&&c.scrollbarY);return"scroll"!==c.type&&e?(0,d.jsx)(ap,{...a,ref:b}):null});ao.displayName=an;var ap=e.forwardRef((a,b)=>{let{__scopeScrollArea:c,...f}=a,g=X(an,c),[h,i]=e.useState(0),[j,k]=e.useState(0),l=!!(h&&j);return ax(g.scrollbarX,()=>{let a=g.scrollbarX?.offsetHeight||0;g.onCornerHeightChange(a),k(a)}),ax(g.scrollbarY,()=>{let a=g.scrollbarY?.offsetWidth||0;g.onCornerWidthChange(a),i(a)}),l?(0,d.jsx)(L.div,{...f,ref:b,style:{width:h,height:j,position:"absolute",right:"ltr"===g.dir?0:void 0,left:"rtl"===g.dir?0:void 0,bottom:0,...a.style}}):null});function aq(a){return a?parseInt(a,10):0}function ar(a,b){let c=a/b;return isNaN(c)?0:c}function as(a){let b=ar(a.viewport,a.content),c=a.scrollbar.paddingStart+a.scrollbar.paddingEnd;return Math.max((a.scrollbar.size-c)*b,18)}function at(a,b,c="ltr"){let d=as(b),e=b.scrollbar.paddingStart+b.scrollbar.paddingEnd,f=b.scrollbar.size-e,g=b.content-b.viewport,h=(0,R.q)(a,"ltr"===c?[0,g]:[-1*g,0]);return au([0,g],[0,f-d])(h)}function au(a,b){return c=>{if(a[0]===a[1]||b[0]===b[1])return b[0];let d=(b[1]-b[0])/(a[1]-a[0]);return b[0]+d*(c-a[0])}}var av=(a,b=()=>{})=>{let c={left:a.scrollLeft,top:a.scrollTop},d=0;return!function e(){let f={left:a.scrollLeft,top:a.scrollTop},g=c.left!==f.left,h=c.top!==f.top;(g||h)&&b(),c=f,d=window.requestAnimationFrame(e)}(),()=>window.cancelAnimationFrame(d)};function aw(a,b){let c=(0,O.c)(a),d=e.useRef(0);return e.useEffect(()=>()=>window.clearTimeout(d.current),[]),e.useCallback(()=>{window.clearTimeout(d.current),d.current=window.setTimeout(c,b)},[c,b])}function ax(a,b){let c=(0,O.c)(b);(0,Q.N)(()=>{let b=0;if(a){let d=new ResizeObserver(()=>{cancelAnimationFrame(b),b=window.requestAnimationFrame(c)});return d.observe(a),()=>{window.cancelAnimationFrame(b),d.unobserve(a)}}},[a,c])}function ay({className:a,children:b,...c}){return(0,d.jsxs)(Y,{"data-slot":"scroll-area",className:(0,J.cn)("relative",a),...c,children:[(0,d.jsx)($,{"data-slot":"scroll-area-viewport",className:"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",children:b}),(0,d.jsx)(az,{}),(0,d.jsx)(ao,{})]})}function az({className:a,orientation:b="vertical",...c}){return(0,d.jsx)(aa,{"data-slot":"scroll-area-scrollbar",orientation:b,className:(0,J.cn)("flex touch-none p-px transition-colors select-none","vertical"===b&&"h-full w-2.5 border-l border-l-transparent","horizontal"===b&&"h-2.5 flex-col border-t border-t-transparent",a),...c,children:(0,d.jsx)(al,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}var aA=c(45729);function aB({taskTitle:a,taskSubtitle:b,taskStatus:c,provider:e,model:f,steps:g,currentStep:h,totalSteps:i,selectedStep:m,onSelectStep:t,onRewind:u,onCancel:v,onClose:w,onResume:x}){let{t:y}=(0,aA.B)(),z=g.filter(a=>"completed"===a.status).length,A=i>0?Math.round(z/i*100):0;return(0,d.jsxs)("div",{className:"flex h-full w-full shrink-0 flex-col border-r border-[var(--border)] bg-surface-soft/60",children:[(0,d.jsxs)("div",{className:"shrink-0 border-b border-[var(--border)] px-5 py-5",children:[(0,d.jsx)("h2",{className:"truncate text-sm font-semibold",title:a,children:a}),b&&(0,d.jsx)("p",{className:"mt-0.5 truncate text-xs text-[var(--muted-foreground)]",title:b,children:b}),(0,d.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,d.jsx)(aC,{status:c}),(0,d.jsxs)("span",{className:"text-xs text-[var(--muted-foreground)]",children:[z," / ",i]})]}),(e||f)&&(0,d.jsxs)("div",{className:"mt-2 flex items-center gap-2 text-xs text-[var(--muted-foreground)]",children:[e&&(0,d.jsx)("span",{className:"rounded bg-[var(--card)] px-1.5 py-0.5 font-mono text-[10px]",children:e}),f&&(0,d.jsx)("span",{className:"rounded bg-[var(--card)] px-1.5 py-0.5 font-mono text-[10px]",children:f})]}),(0,d.jsx)(K,{value:A,className:"mt-3 h-1.5"})]}),(0,d.jsx)(ay,{className:"flex-1",children:(0,d.jsx)("div",{className:"px-4 py-4",children:g.map((a,b)=>{var e;let f=a.stepOrder===m,i="completed"===a.status,n=a.stepOrder===h&&"running"===c,o="failed"===a.status,p=!i&&!n&&!o,q=b===g.length-1,s=(e=a.nodeType,"gate"===e?{label:y("editor.gate"),cls:"bg-kiwi-100 text-kiwi-700"}:"loop"===e?{label:y("editor.loop"),cls:"border-[var(--border)] bg-transparent text-[var(--muted-foreground)]"}:{label:y("editor.action"),cls:"bg-brand-blue-100 text-brand-blue-700"});return(0,d.jsxs)("div",{className:"grid grid-cols-[28px_1fr] items-center gap-x-3",children:[(0,d.jsx)("button",{onClick:()=>t(a.stepOrder),className:(0,J.cn)("justify-self-center flex h-7 w-7 shrink-0 items-center justify-center rounded-full text-xs font-medium transition-all",i&&"bg-brand-blue-600 text-white",n&&"bg-kiwi-600 text-white ring-[3px] ring-kiwi-600/30",o&&"bg-[var(--destructive)] text-white",p&&"bg-[var(--muted)] border border-[var(--border)] text-[var(--muted-foreground)] opacity-60",f&&"ring-2 ring-brand-blue-700"),children:i?(0,d.jsx)(j.A,{className:"h-3.5 w-3.5"}):n?(0,d.jsx)(k.A,{className:"h-3.5 w-3.5 animate-spin"}):o?(0,d.jsx)(l.A,{className:"h-3.5 w-3.5"}):a.stepOrder}),(0,d.jsxs)("button",{onClick:()=>t(a.stepOrder),className:(0,J.cn)("rounded-2xl border px-3 py-2.5 pb-3 text-left transition-colors",f&&"border-brand-blue-200 bg-[var(--card)] shadow-[var(--shadow-soft)]",!f&&"border-transparent bg-transparent hover:border-border/70 hover:bg-[var(--card)]/80"),children:[(0,d.jsx)("p",{className:(0,J.cn)("truncate text-[13px] font-medium leading-tight",p&&"opacity-60"),title:a.title||y("tasks.stepTitleFallback",{step:a.stepOrder}),children:a.title||y("tasks.stepTitleFallback",{step:a.stepOrder})}),(0,d.jsxs)("div",{className:"mt-1 flex items-center gap-1.5 flex-wrap",children:[(0,d.jsx)(r.E,{variant:"outline",className:(0,J.cn)("px-1.5 py-0 text-[10px]",s.cls),children:s.label}),a.iterations&&a.iterations>1&&(0,d.jsxs)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:["x",a.iterations]}),a.duration&&(0,d.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:a.duration})]})]}),!q&&(0,d.jsx)("div",{className:(0,J.cn)("h-5 w-0.5 justify-self-center",i?"bg-brand-blue-600":"bg-[var(--border)]")})]},a.stepOrder)})})}),"running"===c&&(u||v||w)&&(0,d.jsxs)("div",{className:"shrink-0 border-t border-[var(--border)] px-4 py-3 flex gap-2",children:[u&&(0,d.jsxs)(s.$,{variant:"outline",size:"sm",className:"flex-1 gap-1.5",onClick:u,children:[(0,d.jsx)(n,{className:"h-3.5 w-3.5"}),y("tasks.rewind")]}),v&&(0,d.jsxs)(s.$,{variant:"outline",size:"sm",className:"flex-1 gap-1.5 text-amber-600 border-amber-300 hover:bg-amber-50 hover:text-amber-700",onClick:v,children:[(0,d.jsx)(o,{className:"h-3.5 w-3.5"}),y("tasks.stopTask")]}),w&&(0,d.jsxs)(s.$,{variant:"outline",size:"sm",className:"flex-1 gap-1.5 text-[var(--destructive)] hover:bg-destructive/10",onClick:w,children:[(0,d.jsx)(p,{className:"h-3.5 w-3.5"}),y("tasks.closeTask")]})]}),"cancelled"===c&&(u||x||w)&&(0,d.jsxs)("div",{className:"shrink-0 border-t border-[var(--border)] px-4 py-3 flex gap-2",children:[u&&(0,d.jsxs)(s.$,{variant:"outline",size:"sm",className:"flex-1 gap-1.5",onClick:u,children:[(0,d.jsx)(n,{className:"h-3.5 w-3.5"}),y("tasks.rewind")]}),x&&(0,d.jsxs)(s.$,{variant:"outline",size:"sm",className:"flex-1 gap-1.5 text-brand-blue-600 border-brand-blue-300 hover:bg-brand-blue-50 hover:text-brand-blue-700",onClick:x,children:[(0,d.jsx)(q.A,{className:"h-3.5 w-3.5"}),y("tasks.resumeTask")]}),w&&(0,d.jsxs)(s.$,{variant:"outline",size:"sm",className:"flex-1 gap-1.5 text-[var(--destructive)] hover:bg-destructive/10",onClick:w,children:[(0,d.jsx)(p,{className:"h-3.5 w-3.5"}),y("tasks.closeTask")]})]})]})}function aC({status:a}){let b={running:"border-brand-blue-600/20 bg-brand-blue-100 text-brand-blue-700",completed:"border-brand-blue-600/20 bg-transparent text-brand-blue-700",failed:"border-[color:var(--destructive)] bg-destructive/10 text-[var(--destructive)]",timed_out:"border-amber-400/40 bg-amber-50 text-amber-700 dark:bg-amber-950/30 dark:text-amber-400",cancelled:"border-slate-300 bg-slate-100 text-slate-500 dark:bg-slate-800/40 dark:text-slate-400",pending:"border-[var(--border)] bg-transparent text-[var(--muted-foreground)]"},{t:c}=(0,aA.B)(),e=c("completed"===a?"tasks.completed":"failed"===a?"tasks.failed":"running"===a?"tasks.running":"timed_out"===a?"tasks.timedOut":"cancelled"===a?"tasks.cancelled":"tasks.pending");return(0,d.jsx)(r.E,{className:b[a]||b.pending,children:e})}var aD=c(77405),aE=c(36815);let aF=(0,m.A)("shield-check",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);var aG=c(49681);let aH=(0,m.A)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);var aI=c(13576),aJ=c(22341),aK=c(98971),aL=c(95801),aM=c(96845),aN=c(80600);let aO=(0,m.A)("send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);var aP=c(63647),aQ=c(38393);function aR({taskId:a,onApproved:b}){let{t:c}=(0,aA.B)(),[f,g]=(0,e.useState)(!1),h=async()=>{g(!0);try{await fetch(`/api/tasks/${a}/approve`,{method:"POST"}),b?.()}finally{g(!1)}};return(0,d.jsxs)("div",{className:"mb-4 flex items-center justify-between gap-3 rounded-[1.25rem] border border-amber-200 bg-amber-50 px-4 py-3 dark:border-amber-900/40 dark:bg-amber-950/30",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-amber-700 dark:text-amber-400",children:[(0,d.jsx)(aF,{className:"h-4 w-4 shrink-0"}),(0,d.jsx)("span",{children:c("tasks.hitlPendingApproval")})]}),(0,d.jsxs)(s.$,{size:"sm",disabled:f,onClick:()=>void h(),className:"shrink-0 bg-amber-600 text-white hover:bg-amber-700 dark:bg-amber-500 dark:hover:bg-amber-600",children:[f?(0,d.jsx)(k.A,{className:"mr-1.5 h-3.5 w-3.5 animate-spin"}):(0,d.jsx)(aF,{className:"mr-1.5 h-3.5 w-3.5"}),c("tasks.hitlApprove")]})]})}let aS="prose prose-sm dark:prose-invert prose-headings:text-base prose-headings:font-semibold prose-headings:mt-4 prose-headings:mb-2 prose-p:my-2 prose-ul:my-2 prose-li:my-0.5 prose-table:my-3 prose-pre:bg-gray-800 prose-pre:text-gray-200 prose-strong:text-[var(--foreground)] max-w-none";function aT(a){if(!a)return"";let b=a.replace(/\\n/g,"\n");return b.replace(/(?<=^|\s|`)([\w./-]+\/[\w./-]+\.\w{1,5})(?=\s|$|`|[),;:])/gm,"**`$1`**")}function aU(a,b){if(!b)return"";let c=a=>{let b=new Date(a);return isNaN(b.getTime())?new Date(a+"Z"):b},d=c(b).getTime()-c(a).getTime();if(isNaN(d)||d<0)return"";let e=Math.round(d/1e3);if(e<60)return`${e}s`;let f=Math.floor(e/60),g=e%60;if(f<60)return g>0?`${f}m ${g}s`:`${f}m`;let h=Math.floor(f/60),i=f%60;return i>0?`${h}h ${i}m`:`${h}h`}function aV({status:a}){return"completed"===a?(0,d.jsx)(aG.A,{className:"h-4 w-4 text-brand-blue-700"}):"failed"===a?(0,d.jsx)(aH,{className:"h-4 w-4 text-[var(--destructive)]"}):"running"===a?(0,d.jsx)(k.A,{className:"h-4 w-4 animate-spin text-brand-blue-700"}):(0,d.jsx)(aI.A,{className:"h-4 w-4 text-[var(--muted-foreground)]"})}function aW({nodeType:a}){let{t:b}=(0,aA.B)(),c="gate"===a?{Icon:aJ.A,cls:"bg-kiwi-100 text-kiwi-700",label:b("editor.gate")}:"loop"===a?{Icon:aK.A,cls:"border-[var(--border)] bg-transparent text-[var(--muted-foreground)]",label:b("editor.loop")}:{Icon:aL.A,cls:"bg-brand-blue-100 text-brand-blue-700",label:b("editor.action")};return(0,d.jsxs)(r.E,{className:c.cls,children:[(0,d.jsx)(c.Icon,{className:"h-3.5 w-3.5"}),c.label]})}function aX({so:a,defaultOpen:b}){let{t:c}=(0,aA.B)(),[f,g]=(0,e.useState)(b),h=null!=a.user_input||null!=a.thinking||null!=a.assistant_output,i=Object.keys(a).filter(a=>"user_input"!==a&&"thinking"!==a&&"assistant_output"!==a),j=!h&&i.length>0;return(0,d.jsxs)("div",{className:"text-sm text-[var(--foreground)] bg-[var(--card)] rounded-[var(--radius)] border border-[var(--border)] overflow-hidden",children:[j&&(0,d.jsxs)("div",{className:"px-5 py-4",children:[(0,d.jsxs)("div",{className:"text-[10px] font-medium uppercase tracking-wider text-[var(--muted-foreground)] mb-2",children:["\uD83D\uDCE4"," ",c("tasks.output")]}),(0,d.jsx)("pre",{className:"max-h-[32rem] overflow-auto rounded-[var(--radius-sm)] bg-[var(--muted)] p-3 text-xs leading-relaxed text-[var(--foreground)]",children:JSON.stringify(a,null,2)})]}),a.user_input&&(0,d.jsxs)("div",{className:"px-5 pt-4 pb-3 bg-kiwi-100 border-b border-[var(--border)]",children:[(0,d.jsxs)("div",{className:"text-[10px] font-medium uppercase tracking-wider text-[var(--muted-foreground)] mb-1.5",children:["\uD83D\uDCE5"," ",c("tasks.input")]}),(0,d.jsx)("div",{className:"text-sm",children:a.user_input})]}),a.thinking&&(0,d.jsxs)("div",{className:"border-b border-[var(--border)]",children:[(0,d.jsxs)("button",{onClick:()=>g(!f),className:"w-full px-5 py-2.5 flex items-center gap-2 text-[10px] font-medium uppercase tracking-wider text-[var(--muted-foreground)] hover:bg-brand-blue-100 transition-colors",children:[(0,d.jsx)("span",{className:"transition-transform inline-block",style:{transform:f?"rotate(90deg)":"rotate(0deg)"},children:"▶"}),"\uD83E\uDDE0"," ",c("tasks.thinking")]}),f&&(0,d.jsx)("div",{className:`px-5 pb-4 italic text-[var(--muted-foreground)] ${aS}`,children:(0,d.jsx)(aD.oz,{remarkPlugins:[aE.A],children:aT(a.thinking)})})]}),a.assistant_output&&(0,d.jsxs)("div",{className:"px-5 py-4",children:[(a.user_input||a.thinking)&&(0,d.jsxs)("div",{className:"text-[10px] font-medium uppercase tracking-wider text-[var(--muted-foreground)] mb-2",children:["\uD83D\uDCE4"," ",c("tasks.output")]}),(0,d.jsx)("div",{className:`${aS} max-h-[32rem] overflow-y-auto`,children:(0,d.jsx)(aD.oz,{remarkPlugins:[aE.A],children:aT(a.assistant_output)})})]})]})}let aY={sm:"",md:"sm:max-w-2xl",lg:"sm:max-w-4xl",xl:"sm:max-w-6xl",full:"sm:max-w-[95vw]"},aZ={sm:"max-h-[70vh]",md:"max-h-[80vh]",lg:"max-h-[85vh]",xl:"max-h-[88vh]",full:"max-h-[90vh]"},a$={sm:"min-h-[400px]",md:"min-h-[500px]",lg:"min-h-[600px]",xl:"min-h-[700px]",full:"min-h-[80vh]"};function a_({html:a,taskId:b,nodeId:f,isVisualSelection:g,logStatus:h,existingResponse:i,onSelected:j,autoOpen:l,onAutoOpened:m}){let{t:n}=(0,aA.B)(),[o,p]=(0,e.useState)(!1),[q,r]=(0,e.useState)(!!i),[t,u]=(0,e.useState)(!1),v=(0,e.useRef)(null),w=g&&("pending"===h||"running"===h||"completed"===h)&&!q,x=(0,e.useMemo)(()=>{let b,c;return b=a.match(/<!--\s*@bk\b[^>]*?\bsize=["']?(\w+)/i),["sm","md","lg","xl","full"].includes(c=b?.[1])?c:"sm"},[a]),y=(0,e.useMemo)(()=>{let b;if((b=a.trim()).startsWith("<!DOCTYPE")||b.startsWith("<!doctype")||b.startsWith("<html"))return a;try{let{VS_FRAME_TEMPLATE:b}=c(8204),d="u">typeof document&&document.documentElement.classList.contains("dark")?"dark":"light",e="u">typeof document&&document.documentElement.lang||"ko";return b.replace("{{AGENT_CONTENT}}",a).replace('data-theme="light"',`data-theme="${d}"`).replace('data-lang="ko"',`data-lang="${e}"`)}catch{return a}},[a]);return(0,d.jsxs)(aQ.lG,{open:t,onOpenChange:u,children:[(0,d.jsx)(aQ.zM,{asChild:!0,children:(0,d.jsx)(s.$,{variant:"outline",size:"sm",children:n(g&&w?"tasks.selectVisual":"tasks.viewVisual")})}),(0,d.jsxs)(aQ.Cf,{className:(0,J.cn)("overflow-hidden p-0",aY[x]),children:[(0,d.jsx)(aQ.c7,{className:"border-b border-[var(--border)] p-5",children:(0,d.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,d.jsx)(aQ.L3,{children:n(g&&w?"tasks.selectVisual":"tasks.visualViewer")}),o&&(0,d.jsx)(k.A,{className:"h-4 w-4 animate-spin text-[var(--muted-foreground)]"}),q&&(0,d.jsx)(aG.A,{className:"h-4 w-4 text-green-500"}),(0,d.jsx)(aQ.HM,{asChild:!0,children:(0,d.jsx)(s.$,{variant:"ghost",size:"sm",children:n("common.close")})})]})}),w&&(0,d.jsx)("div",{className:"border-b border-[var(--border)] bg-amber-50 px-5 py-2 text-xs text-amber-700 dark:bg-amber-950/20 dark:text-amber-400",children:n("tasks.visualSelectHint")}),(0,d.jsx)(ay,{className:aZ[x],children:(0,d.jsx)("div",{className:"p-5",children:(0,d.jsx)("div",{className:"overflow-hidden rounded-[var(--radius)] border border-[var(--border)]",children:(0,d.jsx)("iframe",{ref:v,srcDoc:y,className:(0,J.cn)("w-full",a$[x]),sandbox:"allow-scripts"})})})})]})]})}function a0(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function a1({value:a}){let{t:b}=(0,aA.B)(),c=function(a){if(!a)return null;try{return JSON.parse(a)}catch{return a}}(a);if(null==c)return null;if(!a0(c))return(0,d.jsxs)("div",{className:"rounded-[var(--radius)] border border-brand-blue-600 bg-brand-blue-100 p-3",children:[(0,d.jsx)("p",{className:"mb-1 text-xs font-medium text-brand-blue-700",children:b("tasks.responseSubmitted")}),(0,d.jsx)("p",{className:"text-sm text-[var(--foreground)]",children:String(c)})]});let e=Array.isArray(c.selections)?c.selections.filter(a=>"string"==typeof a):[],f=Array.isArray(c.ranking)?c.ranking.filter(a=>"string"==typeof a):[],g=a0(c.values)?c.values:null,h=a0(c.fields)?c.fields:null,i=a0(c.option_comments)?c.option_comments:null,j=a0(c.matrix)?c.matrix:null,k="string"==typeof c.comment&&c.comment.trim()?c.comment.trim():null;return(0,d.jsxs)("div",{className:"rounded-[var(--radius)] border border-brand-blue-600 bg-brand-blue-100 p-3",children:[(0,d.jsx)("p",{className:"mb-3 text-xs font-medium text-brand-blue-700",children:b("tasks.responseSubmitted")}),(0,d.jsxs)("div",{className:"space-y-3 text-sm text-[var(--foreground)]",children:[e.length>0&&(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"mb-1 text-xs font-medium text-brand-blue-700",children:b("tasks.responseSelections")}),(0,d.jsx)("div",{className:"flex flex-wrap gap-2",children:e.map(a=>(0,d.jsx)("span",{className:"rounded-full border border-brand-blue-600/20 bg-white/80 px-2.5 py-1 text-xs font-medium",children:a},a))})]}),k&&(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"mb-1 text-xs font-medium text-brand-blue-700",children:b("tasks.responseComment")}),(0,d.jsx)("p",{className:"whitespace-pre-wrap",children:k})]}),h&&Object.keys(h).length>0&&(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"mb-1 text-xs font-medium text-brand-blue-700",children:b("tasks.responseFields")}),(0,d.jsx)("div",{className:"space-y-1.5",children:Object.entries(h).map(([a,b])=>(0,d.jsxs)("div",{className:"rounded-[0.9rem] border border-brand-blue-600/15 bg-white/70 px-3 py-2",children:[(0,d.jsx)("p",{className:"text-[11px] font-medium uppercase tracking-[0.08em] text-brand-blue-700",children:a}),(0,d.jsx)("p",{className:"mt-0.5 whitespace-pre-wrap",children:String(b)})]},a))})]}),i&&Object.keys(i).length>0&&(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"mb-1 text-xs font-medium text-brand-blue-700",children:b("tasks.responseOptionComments")}),(0,d.jsx)("div",{className:"space-y-1.5",children:Object.entries(i).map(([a,b])=>(0,d.jsxs)("div",{className:"rounded-[0.9rem] border border-brand-blue-600/15 bg-white/70 px-3 py-2",children:[(0,d.jsx)("p",{className:"text-[11px] font-medium uppercase tracking-[0.08em] text-brand-blue-700",children:a}),(0,d.jsx)("p",{className:"mt-0.5 whitespace-pre-wrap",children:String(b)})]},a))})]}),g&&Object.keys(g).length>0&&(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"mb-1 text-xs font-medium text-brand-blue-700",children:b("tasks.responseValues")}),(0,d.jsx)("div",{className:"space-y-1",children:Object.entries(g).map(([a,b])=>(0,d.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,d.jsx)("span",{className:"text-[var(--muted-foreground)]",children:a}),(0,d.jsx)("span",{className:"font-medium",children:String(b)})]},a))})]}),f.length>0&&(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"mb-1 text-xs font-medium text-brand-blue-700",children:b("tasks.responseRanking")}),(0,d.jsx)("ol",{className:"space-y-1",children:f.map((a,b)=>(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-flex h-5 w-5 items-center justify-center rounded-full bg-white/80 text-[11px] font-semibold text-brand-blue-700",children:b+1}),(0,d.jsx)("span",{children:a})]},a))})]}),j&&Object.keys(j).length>0&&(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"mb-1 text-xs font-medium text-brand-blue-700",children:b("tasks.responseMatrix")}),(0,d.jsx)("div",{className:"space-y-1.5",children:Object.entries(j).map(([a,b])=>{let c=a0(b)?b:{};return(0,d.jsxs)("div",{className:"flex items-center justify-between gap-3 rounded-[0.9rem] border border-brand-blue-600/15 bg-white/70 px-3 py-2",children:[(0,d.jsx)("span",{className:"font-medium",children:a}),(0,d.jsxs)("span",{className:"text-xs text-[var(--muted-foreground)]",children:["x: ",String(c.x??"-"),", y: ",String(c.y??"-")]})]},a)})})]})]})]})}function a2({taskId:a,nodeId:b,existingResponse:c,onSubmit:f}){let{t:g}=(0,aA.B)(),[h,i]=(0,e.useState)(""),[j,k]=(0,e.useState)(!1);if(c)return(0,d.jsx)(a1,{value:c});let l=async()=>{h.trim()&&(k(!0),await fetch(`/api/tasks/${a}/respond`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({node_id:b,response:h.trim()})}),k(!1),i(""),f())};return(0,d.jsxs)("div",{className:"rounded-[var(--radius)] border border-kiwi-600 bg-kiwi-100 p-3",children:[(0,d.jsx)("p",{className:"mb-2 text-xs font-medium text-[var(--foreground)]",children:g("tasks.awaitingResponse")}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("input",{type:"text",value:h,onChange:a=>i(a.target.value),onKeyDown:a=>"Enter"===a.key&&!a.nativeEvent.isComposing&&l(),placeholder:g("tasks.typeResponse"),className:"flex-1 rounded-[var(--radius)] border border-[var(--border)] bg-[var(--card)] px-3 py-1.5 text-sm focus:outline-none focus:ring-2 focus:ring-brand-blue-500"}),(0,d.jsx)(s.$,{onClick:l,disabled:j||!h.trim(),size:"sm",children:g(j?"common.loading":"tasks.send")})]})]})}function a3({logs:a,taskId:b,workflowId:c,taskStatus:f,registry:g,artifacts:h,comments:i,onAddComment:j,onRefresh:k,autoOpenVs:l,onVsOpened:m}){let{t:n}=(0,aA.B)(),[o,p]=(0,e.useState)(""),[q,t]=(0,e.useState)([]),u=a[a.length-1],v=a.length>1;if(0===a.length)return(0,d.jsx)("div",{className:"flex flex-1 items-center justify-center text-sm text-[var(--muted-foreground)]",children:n("tasks.selectStep")});let w=()=>{o.trim()&&j&&(j(o.trim()),p(""))};return(0,d.jsx)(ay,{className:"flex-1",children:(0,d.jsxs)("div",{className:"mx-auto w-full max-w-5xl p-6",children:[(0,d.jsxs)("div",{className:"mb-6 rounded-[1.75rem] border border-border/80 bg-surface-soft/60 p-5",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3 flex-wrap",children:[(0,d.jsx)("h2",{className:"text-xl font-semibold tracking-tight",children:u.title||n("tasks.stepTitleFallback",{step:u.step_order})}),(0,d.jsx)(aW,{nodeType:u.node_type}),(0,d.jsxs)(r.E,{className:(0,J.cn)("completed"===u.status&&"border-brand-blue-600/20 bg-brand-blue-100 text-brand-blue-700","failed"===u.status&&"border-[color:var(--destructive)] bg-destructive/10 text-[var(--destructive)]","running"===u.status&&"border-brand-blue-600/20 bg-brand-blue-100 text-brand-blue-700","cancelled"===u.status&&"border-slate-300 bg-slate-100 text-slate-500","pending"===u.status&&"border-[var(--border)] bg-transparent text-[var(--muted-foreground)]"),children:[(0,d.jsx)(aV,{status:u.status}),"completed"===u.status?n("tasks.completed"):"failed"===u.status?n("tasks.failed"):"running"===u.status?n("tasks.running"):"cancelled"===u.status?n("tasks.cancelled"):n("tasks.pending")]})]}),(0,d.jsxs)("div",{className:"mt-3 flex items-center gap-3 text-xs text-[var(--muted-foreground)] flex-wrap",children:[u.provider_slug&&(0,d.jsx)("span",{className:"rounded bg-[var(--card)] px-1.5 py-0.5 font-mono text-[10px]",children:g[u.provider_slug]??u.provider_slug}),u.model_slug&&(0,d.jsx)("span",{className:"rounded bg-[var(--card)] px-1.5 py-0.5 font-mono text-[10px]",children:g[u.model_slug]??u.model_slug}),u.user_name&&(0,d.jsx)("span",{children:u.user_name}),u.credential_service&&(0,d.jsxs)("span",{className:"rounded bg-[var(--card)] px-1.5 py-0.5 font-mono text-[10px]",children:["\uD83D\uDD11",u.credential_service]}),u.completed_at&&(0,d.jsxs)("span",{className:"flex items-center gap-1",children:[(0,d.jsx)(aI.A,{className:"h-3 w-3"}),aU(u.started_at,u.completed_at)]}),v&&(0,d.jsxs)("span",{className:"text-[10px]",children:["(",a.length," ",n("tasks.iteration"),")"]})]})]}),u.hitl&&u.approval_requested_at&&!u.approved_at&&(0,d.jsx)(aR,{taskId:b,onApproved:k}),u.hitl&&u.approved_at&&(0,d.jsxs)("div",{className:"mb-4 flex items-center gap-2 rounded-[1.25rem] border border-green-200 bg-green-50 px-4 py-3 text-sm text-green-700 dark:border-green-900/40 dark:bg-green-950/30 dark:text-green-400",children:[(0,d.jsx)(aF,{className:"h-4 w-4 shrink-0"}),(0,d.jsx)("span",{children:n("tasks.hitlApproved")})]}),v&&(0,d.jsx)(a5,{logs:a,taskId:b,taskStatus:f,onRefresh:k,autoOpenVs:l,onVsOpened:m}),!v&&(0,d.jsx)(a4,{log:u,taskId:b,taskStatus:f,thinkingOpen:"running"===u.status,onRefresh:k,autoOpenVs:l,onVsOpened:m}),q.length>0&&(0,d.jsxs)("div",{className:"mt-6 rounded-[1.25rem] border border-border/80 bg-[var(--card)] p-4",children:[(0,d.jsxs)("h3",{className:"mb-3 flex items-center gap-2 text-sm font-semibold",children:[(0,d.jsx)(aM.A,{className:"h-4 w-4"}),"Attachments"]}),(0,d.jsx)("div",{className:"space-y-2",children:q.map(a=>(0,d.jsxs)("div",{className:"flex items-center justify-between gap-3 rounded-[0.875rem] border border-border/80 bg-surface-soft/35 px-3 py-2 text-sm",children:[(0,d.jsx)("span",{className:"truncate font-medium",children:a.filename}),(0,d.jsx)("span",{className:"shrink-0 text-xs text-[var(--muted-foreground)]",children:function(a){if(!Number.isFinite(a)||a<1024)return`${a||0} B`;let b=["KB","MB","GB"],c=a,d=-1;for(;c>=1024&&d<b.length-1;)c/=1024,d+=1;return`${c>=10||0===d?c.toFixed(0):c.toFixed(1)} ${b[d]}`}(a.size_bytes)})]},a.id))})]}),h&&h.length>0&&(0,d.jsxs)("div",{className:"mt-6",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold mb-2",children:n("tasks.artifacts")}),(0,d.jsx)("div",{className:"flex flex-wrap gap-2",children:h.map(a=>(0,d.jsxs)("a",{href:`/api/tasks/${b}/artifacts/${a.id}`,className:"inline-flex items-center gap-1.5 rounded-full border border-[var(--border)] bg-[var(--card)] px-3 py-1 text-xs hover:bg-brand-blue-100 transition-colors",children:[(0,d.jsx)(aN.A,{className:"h-3 w-3"}),a.filename]},a.id))})]}),(i||j)&&(0,d.jsxs)("div",{className:"mt-6 rounded-[1.5rem] border border-border/80 bg-[var(--card)] p-5",children:[(0,d.jsxs)("h3",{className:"text-sm font-semibold mb-3 flex items-center gap-1.5",children:[(0,d.jsx)(aJ.A,{className:"h-4 w-4"}),n("tasks.comments"),i&&i.length>0&&(0,d.jsxs)("span",{className:"text-[var(--muted-foreground)] font-normal",children:["(",i.length,")"]})]}),i&&i.length>0&&(0,d.jsx)("div",{className:"space-y-3 mb-4",children:i.map(a=>{var b;return(0,d.jsxs)("div",{className:"rounded-[1rem] border border-border/80 bg-surface-soft/35 p-3.5",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,d.jsx)("span",{className:"text-xs font-medium capitalize",children:a.author??n("tasks.defaultAuthor")}),(0,d.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:(b=a.created_at,new Intl.DateTimeFormat("ko-KR",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}).format(new Date(b)))})]}),(0,d.jsx)("p",{className:"text-sm",children:a.comment})]},a.id)})}),j&&(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("input",{type:"text",value:o,onChange:a=>p(a.target.value),onKeyDown:a=>"Enter"===a.key&&!a.nativeEvent.isComposing&&w(),placeholder:n("tasks.addComment"),className:"flex-1 rounded-[var(--radius)] border border-[var(--border)] bg-[var(--card)] px-3 py-1.5 text-sm focus:outline-none focus:ring-2 focus:ring-brand-blue-500"}),(0,d.jsx)(s.$,{onClick:w,disabled:!o.trim(),size:"sm",variant:"outline",children:(0,d.jsx)(aO,{className:"h-3.5 w-3.5"})})]})]})]})})}function a4({log:a,taskId:b,taskStatus:c,thinkingOpen:e,onRefresh:f,autoOpenVs:g,onVsOpened:h}){return(0,d.jsxs)("div",{className:"space-y-4",children:[a.structured_output?(0,d.jsx)(aX,{so:a.structured_output,defaultOpen:e}):a.output?(0,d.jsx)("div",{className:(0,J.cn)("max-h-[40rem] overflow-y-auto rounded-[1.5rem] border border-border/80 bg-[var(--card)] p-5 text-sm text-[var(--foreground)] shadow-[var(--shadow-soft)]",aS),children:(0,d.jsx)(aD.oz,{remarkPlugins:[aE.A],children:aT(a.output)})}):null,a.visual_html&&(0,d.jsx)(a_,{html:a.visual_html,taskId:b,nodeId:a.node_id,isVisualSelection:!!a.visual_selection,logStatus:a.status,existingResponse:a.web_response,onSelected:()=>f?.(),autoOpen:g,onAutoOpened:h}),"pending"===a.status&&"completed"!==c&&(0,d.jsx)(a2,{taskId:b,nodeId:a.node_id,existingResponse:a.web_response,onSubmit:()=>f?.()}),"pending"!==a.status&&a.web_response&&(0,d.jsx)(a1,{value:a.web_response})]})}function a5({logs:a,taskId:b,taskStatus:c,onRefresh:f,autoOpenVs:g,onVsOpened:h}){let{t:i}=(0,aA.B)(),[j,k]=(0,e.useState)(!1),l=a.slice(0,-1),m=a[a.length-1];return(0,d.jsxs)("div",{className:"space-y-4",children:[l.length>0&&(0,d.jsx)("button",{onClick:()=>k(!j),className:"text-xs text-brand-blue-600 hover:text-brand-blue-700 transition-colors",children:j?i("tasks.hidePreviousIterations"):i("tasks.showPreviousIterations").replace("{n}",String(l.length))}),j&&l.map((e,j)=>(0,d.jsxs)(aP.Zp,{className:"border-border/80 opacity-75",children:[(0,d.jsx)(aP.aR,{className:"p-4 pb-2",children:(0,d.jsxs)(aP.ZB,{className:"text-xs text-[var(--muted-foreground)]",children:[i("tasks.iteration")," ",j+1," / ",a.length,e.completed_at&&(0,d.jsx)("span",{className:"ml-2 font-normal",children:aU(e.started_at,e.completed_at)})]})}),(0,d.jsx)(aP.Wu,{className:"p-4 pt-0",children:(0,d.jsx)(a4,{log:e,taskId:b,taskStatus:c,thinkingOpen:!1,onRefresh:f,autoOpenVs:g,onVsOpened:h})})]},e.id)),(0,d.jsxs)("div",{children:[a.length>1&&(0,d.jsxs)("p",{className:"text-[10px] uppercase tracking-wider text-[var(--muted-foreground)] mb-2 font-medium",children:[i("tasks.latest")," (",i("tasks.iteration")," ",a.length,")"]}),(0,d.jsx)(a4,{log:m,taskId:b,taskStatus:c,thinkingOpen:"running"===m.status,onRefresh:f,autoOpenVs:g,onVsOpened:h})]})]})}function a6(a){let b=new Date(a);return isNaN(b.getTime())?new Date(a+"Z"):b}function a7(){let a=(0,f.useParams)(),b=(0,f.useSearchParams)(),{t:c}=(0,aA.B)(),g=a.id,j=b.get("step"),k=b.get("vs"),[l,m]=(0,e.useState)(null),[n,o]=(0,e.useState)(!0),[p,q]=(0,e.useState)(()=>{if(!j)return null;let a=Number(j);return Number.isFinite(a)?a:null}),[r,s]=(0,e.useState)([]),[t,u]=(0,e.useState)("true"===k),v=(0,e.useRef)(null),w=(0,e.useCallback)(async()=>{let a=await fetch(`/api/tasks/${g}`);if(a.ok){let b=(await a.json()).data,c=v.current;m(b),b&&q(a=>null===a||null!==c&&a===c?b.current_step:a)}o(!1)},[g]),x=(0,e.useCallback)(async()=>{let a=await fetch(`/api/tasks/${g}/comments`);if(a.ok){var b;let c;s((b=await a.json(),(Array.isArray(c=b?.data)?c:[]).map(a=>{let b=a.id;if(null==b||Number.isNaN(Number(b)))return null;let c="string"==typeof a.comment?a.comment.trim():"",d=c.match(/^\[([^\]]+)\]\s*(.*)$/),e=d?.[2]??c,f=d?.[1],g="number"==typeof a.step_order?a.step_order:null,h="string"==typeof a.created_at?a.created_at:void 0;return{id:Number(b),comment:e,...f?{author:f}:{},created_at:h??new Date(Date.now()-Math.floor(1e3*Math.random()*3600)).toISOString(),...null===g?{}:{step_order:g}}}).filter(a=>null!==a)))}else s([])},[g]);(0,i.S)(a=>{"task_update"===a.type&&a.task_id===Number(g)&&w()});let y=(0,e.useMemo)(()=>l?function(a,b){let c=new Map;for(let b of a){let a=c.get(b.step_order)||[];a.push(b),c.set(b.step_order,a)}let d=[];for(let[a,e]of c){let c=e[e.length-1];if(a>b&&"cancelled"===c.status)continue;let f=e.reduce((a,b)=>b.completed_at?a+(a6(b.completed_at).getTime()-a6(b.started_at).getTime()):a,0);d.push({stepOrder:a,nodeId:c.node_id,title:c.node_title||"",nodeType:c.node_type,status:c.status,duration:f>0?function(a,b){if(!b)return"";let c=a6(b).getTime()-a6(a).getTime();if(isNaN(c)||c<0)return"";let d=Math.round(c/1e3);if(d<60)return`${d}s`;let e=Math.floor(d/60),f=d%60;if(e<60)return f>0?`${e}m ${f}s`:`${e}m`;let g=Math.floor(e/60),h=e%60;return h>0?`${g}h ${h}m`:`${g}h`}(c.started_at,new Date(a6(c.started_at).getTime()+f).toISOString()):"",iterations:e.length>1?e.length:void 0})}return d.sort((a,b)=>a.stepOrder-b.stepOrder)}(l.logs,l.current_step):[],[l]),z=l?.total_steps||0,A=(0,e.useMemo)(()=>{if(!l)return[];let a=p??l.current_step;return l.logs.filter(b=>b.step_order===a).map(a=>({id:a.id,node_id:a.node_id,step_order:a.step_order,title:a.node_title,node_type:a.node_type,status:a.status,output:a.output,structured_output:a.structured_output,visual_html:a.visual_html,visual_selection:a.visual_selection??null,web_response:a.web_response,hitl:a.hitl??null,approved_at:a.approved_at??null,approval_requested_at:a.approval_requested_at??null,provider_slug:a.provider_slug,model_slug:a.model_slug,user_name:a.user_name,credential_service:a.credential_service,started_at:a.started_at,completed_at:a.completed_at}))},[l,p]),B=async()=>{await fetch(`/api/tasks/${g}/rewind`,{method:"POST"}),w()},C=async()=>{await fetch(`/api/tasks/${g}/cancel`,{method:"POST"}),w()},D=async()=>{await fetch(`/api/tasks/${g}/complete`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:"completed",summary:"사용자 요청으로 종료됨"})}),w()},E=async()=>{await fetch(`/api/tasks/${g}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:"running"})}),w()},F=async a=>{if(!l)return;let b=p??l.current_step;await fetch(`/api/tasks/${g}/comments`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({comment:a,step_order:b})}),x()};if(n)return(0,d.jsx)("main",{className:"flex h-[calc(100vh-3rem)] items-center justify-center",children:(0,d.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:c("common.loading")})});if(!l)return(0,d.jsxs)("main",{className:"flex h-[calc(100vh-3rem)] flex-col items-center justify-center gap-3",children:[(0,d.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:c("tasks.taskNotFound")}),(0,d.jsxs)(h(),{href:"/tasks",className:"text-sm text-brand-blue-600 hover:underline",children:["← ",c("tasks.backToList")]})]});let G=l.workflow_title??c("tasks.taskFallback",{id:l.id}),H=l.provider_slug?l.registry?.[l.provider_slug]??l.provider_slug:null,I=l.model_slug?l.registry?.[l.model_slug]??l.model_slug:null;return(0,d.jsxs)("div",{className:"grid h-[calc(100vh-3rem)] grid-cols-[320px_minmax(0,1fr)]",children:[(0,d.jsx)(aB,{taskTitle:G,taskSubtitle:l.title??void 0,taskStatus:l.status,provider:H,model:I,steps:y,currentStep:l.current_step,totalSteps:z,selectedStep:p??l.current_step,onSelectStep:q,onRewind:"running"===l.status||"cancelled"===l.status?B:void 0,onCancel:"running"===l.status?C:void 0,onClose:"running"===l.status||"cancelled"===l.status?D:void 0,onResume:"cancelled"===l.status?E:void 0}),(0,d.jsx)(a3,{logs:A,taskId:l.id,workflowId:l.workflow_id,taskStatus:l.status,registry:l.registry??{},comments:r.filter(a=>a.step_order===(p??l.current_step)),onAddComment:F,onRefresh:w,autoOpenVs:t,onVsOpened:()=>u(!1)})]})}},95801:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(63871).A)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]])},96845:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(63871).A)("paperclip",[["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",key:"1miecu"}]])},98971:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(63871).A)("repeat",[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]])}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[3445,7111,63,3879,1588,1220,5573,1371,211,5589,4024],()=>b(b.s=33647));module.exports=c})();