test-lah 1.0.9 → 1.0.10

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 (754) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +51 -37
  3. package/.next/standalone/.next/app-path-routes-manifest.json +3 -1
  4. package/.next/standalone/.next/build-manifest.json +5 -5
  5. package/.next/standalone/.next/prerender-manifest.json +21 -21
  6. package/.next/standalone/.next/server/app/(dashboard)/integrations/page.js +2 -2
  7. package/.next/standalone/.next/server/app/(dashboard)/integrations/page_client-reference-manifest.js +1 -1
  8. package/.next/standalone/.next/server/app/(dashboard)/projects/[projectId]/page.js +6 -6
  9. package/.next/standalone/.next/server/app/(dashboard)/projects/[projectId]/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/.next/server/app/(dashboard)/projects/[projectId]/summary/page.js +1 -1
  11. package/.next/standalone/.next/server/app/(dashboard)/projects/[projectId]/summary/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js +4 -4
  13. package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  14. package/.next/standalone/.next/server/app/_not-found/page.js +1 -1
  15. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  17. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  18. package/.next/standalone/.next/server/app/api/e2e/route.js +8 -8
  19. package/.next/standalone/.next/server/app/api/e2e/route_client-reference-manifest.js +1 -1
  20. package/.next/standalone/.next/server/app/api/generate/route.js +1 -29
  21. package/.next/standalone/.next/server/app/api/generate/route.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/api/generate/route_client-reference-manifest.js +1 -1
  23. package/.next/standalone/.next/server/app/api/llm/encrypt/route_client-reference-manifest.js +1 -1
  24. package/.next/standalone/.next/server/app/api/llm/test/route.js +1 -29
  25. package/.next/standalone/.next/server/app/api/llm/test/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/llm/test/route_client-reference-manifest.js +1 -1
  27. package/.next/standalone/.next/server/app/api/mcp/route.js +50 -0
  28. package/.next/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -0
  29. package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -0
  30. package/.next/standalone/.next/server/app/api/refine-notes/route.js +7 -7
  31. package/.next/standalone/.next/server/app/api/refine-notes/route_client-reference-manifest.js +1 -1
  32. package/.next/standalone/.next/server/app/api/state/route.js +1 -0
  33. package/.next/standalone/.next/server/app/api/state/route.js.nft.json +1 -0
  34. package/.next/standalone/.next/server/app/api/state/route_client-reference-manifest.js +1 -0
  35. package/.next/standalone/.next/server/app/api/weather/route_client-reference-manifest.js +1 -1
  36. package/.next/standalone/.next/server/app/index.html +1 -1
  37. package/.next/standalone/.next/server/app/index.rsc +3 -3
  38. package/.next/standalone/.next/server/app/integrations.html +1 -1
  39. package/.next/standalone/.next/server/app/integrations.rsc +4 -4
  40. package/.next/standalone/.next/server/app/login/page.js +1 -1
  41. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  42. package/.next/standalone/.next/server/app/login.html +1 -1
  43. package/.next/standalone/.next/server/app/login.rsc +2 -2
  44. package/.next/standalone/.next/server/app/page.js +2 -2
  45. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/projects.html +1 -1
  47. package/.next/standalone/.next/server/app/projects.rsc +4 -4
  48. package/.next/standalone/.next/server/app-paths-manifest.json +3 -1
  49. package/.next/standalone/.next/server/chunks/496.js +33 -0
  50. package/.next/standalone/.next/server/chunks/611.js +3 -3
  51. package/.next/standalone/.next/server/chunks/615.js +2 -2
  52. package/.next/standalone/.next/server/chunks/736.js +2 -2
  53. package/.next/standalone/.next/server/chunks/845.js +23 -20
  54. package/.next/standalone/.next/server/chunks/898.js +2 -2
  55. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  56. package/.next/standalone/.next/server/pages/404.html +1 -1
  57. package/.next/standalone/.next/server/pages/500.html +1 -1
  58. package/.next/standalone/.next/server/pages-manifest.json +1 -1
  59. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  60. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  61. package/.next/standalone/.next/static/BI7koHWCC15MOwsCfxo2O/_buildManifest.js +1 -0
  62. package/.next/standalone/.next/static/chunks/{255-4f84124391a7dac4.js → 255-98a0bdaa30757bda.js} +1 -1
  63. package/.next/standalone/.next/static/chunks/642-75adb59cbb062e44.js +1 -0
  64. package/.next/standalone/.next/static/chunks/798-8424899efd598f73.js +1 -0
  65. package/.next/standalone/.next/static/chunks/app/(dashboard)/integrations/page-25d6f67123a8a2ef.js +1 -0
  66. package/.next/{static/chunks/app/(dashboard)/layout-e4ed5abcbb7c8802.js → standalone/.next/static/chunks/app/(dashboard)/layout-a63b3fef68015cb5.js} +1 -1
  67. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[projectId]/page-cfab61233220bde3.js +1 -0
  68. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[projectId]/summary/{page-1b2e89d37c95e30f.js → page-1650386b60d0337f.js} +1 -1
  69. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/page-420d60cc1ac676f3.js +1 -0
  70. package/.next/standalone/.next/static/chunks/app/api/e2e/route-4f053c4f9dcca3c0.js +1 -0
  71. package/.next/standalone/.next/static/chunks/app/api/generate/route-4f053c4f9dcca3c0.js +1 -0
  72. package/.next/standalone/.next/static/chunks/app/api/llm/encrypt/route-4f053c4f9dcca3c0.js +1 -0
  73. package/.next/standalone/.next/static/chunks/app/api/llm/test/route-4f053c4f9dcca3c0.js +1 -0
  74. package/.next/standalone/.next/static/chunks/app/api/mcp/route-4f053c4f9dcca3c0.js +1 -0
  75. package/.next/standalone/.next/static/chunks/app/api/refine-notes/route-4f053c4f9dcca3c0.js +1 -0
  76. package/.next/standalone/.next/static/chunks/app/api/state/route-4f053c4f9dcca3c0.js +1 -0
  77. package/.next/standalone/.next/static/chunks/app/api/weather/route-4f053c4f9dcca3c0.js +1 -0
  78. package/.next/standalone/.next/static/chunks/app/page-3e00e649355cd3ac.js +1 -0
  79. package/.next/{static/chunks/main-646068343426c12d.js → standalone/.next/static/chunks/main-2af68c75fbdc984e.js} +1 -1
  80. package/.next/standalone/.next/static/css/d95cfd16ee2f56f9.css +3 -0
  81. package/.next/standalone/node_modules/@next/env/package.json +1 -1
  82. package/.next/standalone/node_modules/caniuse-lite/data/agents.js +1 -1
  83. package/.next/standalone/node_modules/caniuse-lite/data/browserVersions.js +1 -1
  84. package/.next/standalone/node_modules/caniuse-lite/data/features/aac.js +1 -1
  85. package/.next/standalone/node_modules/caniuse-lite/data/features/abortcontroller.js +1 -1
  86. package/.next/standalone/node_modules/caniuse-lite/data/features/ac3-ec3.js +1 -1
  87. package/.next/standalone/node_modules/caniuse-lite/data/features/accelerometer.js +1 -1
  88. package/.next/standalone/node_modules/caniuse-lite/data/features/addeventlistener.js +1 -1
  89. package/.next/standalone/node_modules/caniuse-lite/data/features/alternate-stylesheet.js +1 -1
  90. package/.next/standalone/node_modules/caniuse-lite/data/features/ambient-light.js +1 -1
  91. package/.next/standalone/node_modules/caniuse-lite/data/features/apng.js +1 -1
  92. package/.next/standalone/node_modules/caniuse-lite/data/features/array-find-index.js +1 -1
  93. package/.next/standalone/node_modules/caniuse-lite/data/features/array-find.js +1 -1
  94. package/.next/standalone/node_modules/caniuse-lite/data/features/array-flat.js +1 -1
  95. package/.next/standalone/node_modules/caniuse-lite/data/features/array-includes.js +1 -1
  96. package/.next/standalone/node_modules/caniuse-lite/data/features/arrow-functions.js +1 -1
  97. package/.next/standalone/node_modules/caniuse-lite/data/features/asmjs.js +1 -1
  98. package/.next/standalone/node_modules/caniuse-lite/data/features/async-clipboard.js +1 -1
  99. package/.next/standalone/node_modules/caniuse-lite/data/features/async-functions.js +1 -1
  100. package/.next/standalone/node_modules/caniuse-lite/data/features/atob-btoa.js +1 -1
  101. package/.next/standalone/node_modules/caniuse-lite/data/features/audio-api.js +1 -1
  102. package/.next/standalone/node_modules/caniuse-lite/data/features/audio.js +1 -1
  103. package/.next/standalone/node_modules/caniuse-lite/data/features/audiotracks.js +1 -1
  104. package/.next/standalone/node_modules/caniuse-lite/data/features/autofocus.js +1 -1
  105. package/.next/standalone/node_modules/caniuse-lite/data/features/auxclick.js +1 -1
  106. package/.next/standalone/node_modules/caniuse-lite/data/features/av1.js +1 -1
  107. package/.next/standalone/node_modules/caniuse-lite/data/features/avif.js +1 -1
  108. package/.next/standalone/node_modules/caniuse-lite/data/features/background-attachment.js +1 -1
  109. package/.next/standalone/node_modules/caniuse-lite/data/features/background-clip-text.js +1 -1
  110. package/.next/standalone/node_modules/caniuse-lite/data/features/background-img-opts.js +1 -1
  111. package/.next/standalone/node_modules/caniuse-lite/data/features/background-position-x-y.js +1 -1
  112. package/.next/standalone/node_modules/caniuse-lite/data/features/background-repeat-round-space.js +1 -1
  113. package/.next/standalone/node_modules/caniuse-lite/data/features/background-sync.js +1 -1
  114. package/.next/standalone/node_modules/caniuse-lite/data/features/battery-status.js +1 -1
  115. package/.next/standalone/node_modules/caniuse-lite/data/features/beacon.js +1 -1
  116. package/.next/standalone/node_modules/caniuse-lite/data/features/beforeafterprint.js +1 -1
  117. package/.next/standalone/node_modules/caniuse-lite/data/features/bigint.js +1 -1
  118. package/.next/standalone/node_modules/caniuse-lite/data/features/blobbuilder.js +1 -1
  119. package/.next/standalone/node_modules/caniuse-lite/data/features/bloburls.js +1 -1
  120. package/.next/standalone/node_modules/caniuse-lite/data/features/border-image.js +1 -1
  121. package/.next/standalone/node_modules/caniuse-lite/data/features/border-radius.js +1 -1
  122. package/.next/standalone/node_modules/caniuse-lite/data/features/broadcastchannel.js +1 -1
  123. package/.next/standalone/node_modules/caniuse-lite/data/features/brotli.js +1 -1
  124. package/.next/standalone/node_modules/caniuse-lite/data/features/calc.js +1 -1
  125. package/.next/standalone/node_modules/caniuse-lite/data/features/canvas-blending.js +1 -1
  126. package/.next/standalone/node_modules/caniuse-lite/data/features/canvas-text.js +1 -1
  127. package/.next/standalone/node_modules/caniuse-lite/data/features/canvas.js +1 -1
  128. package/.next/standalone/node_modules/caniuse-lite/data/features/ch-unit.js +1 -1
  129. package/.next/standalone/node_modules/caniuse-lite/data/features/chacha20-poly1305.js +1 -1
  130. package/.next/standalone/node_modules/caniuse-lite/data/features/channel-messaging.js +1 -1
  131. package/.next/standalone/node_modules/caniuse-lite/data/features/childnode-remove.js +1 -1
  132. package/.next/standalone/node_modules/caniuse-lite/data/features/classlist.js +1 -1
  133. package/.next/standalone/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js +1 -1
  134. package/.next/standalone/node_modules/caniuse-lite/data/features/clipboard.js +1 -1
  135. package/.next/standalone/node_modules/caniuse-lite/data/features/colr-v1.js +1 -1
  136. package/.next/standalone/node_modules/caniuse-lite/data/features/colr.js +1 -1
  137. package/.next/standalone/node_modules/caniuse-lite/data/features/comparedocumentposition.js +1 -1
  138. package/.next/standalone/node_modules/caniuse-lite/data/features/console-basic.js +1 -1
  139. package/.next/standalone/node_modules/caniuse-lite/data/features/console-time.js +1 -1
  140. package/.next/standalone/node_modules/caniuse-lite/data/features/const.js +1 -1
  141. package/.next/standalone/node_modules/caniuse-lite/data/features/constraint-validation.js +1 -1
  142. package/.next/standalone/node_modules/caniuse-lite/data/features/contenteditable.js +1 -1
  143. package/.next/standalone/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js +1 -1
  144. package/.next/standalone/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js +1 -1
  145. package/.next/standalone/node_modules/caniuse-lite/data/features/cookie-store-api.js +1 -1
  146. package/.next/standalone/node_modules/caniuse-lite/data/features/cors.js +1 -1
  147. package/.next/standalone/node_modules/caniuse-lite/data/features/createimagebitmap.js +1 -1
  148. package/.next/standalone/node_modules/caniuse-lite/data/features/credential-management.js +1 -1
  149. package/.next/standalone/node_modules/caniuse-lite/data/features/cross-document-view-transitions.js +1 -1
  150. package/.next/standalone/node_modules/caniuse-lite/data/features/cryptography.js +1 -1
  151. package/.next/standalone/node_modules/caniuse-lite/data/features/css-all.js +1 -1
  152. package/.next/standalone/node_modules/caniuse-lite/data/features/css-anchor-positioning.js +1 -1
  153. package/.next/standalone/node_modules/caniuse-lite/data/features/css-animation.js +1 -1
  154. package/.next/standalone/node_modules/caniuse-lite/data/features/css-any-link.js +1 -1
  155. package/.next/standalone/node_modules/caniuse-lite/data/features/css-appearance.js +1 -1
  156. package/.next/standalone/node_modules/caniuse-lite/data/features/css-at-counter-style.js +1 -1
  157. package/.next/standalone/node_modules/caniuse-lite/data/features/css-autofill.js +1 -1
  158. package/.next/standalone/node_modules/caniuse-lite/data/features/css-backdrop-filter.js +1 -1
  159. package/.next/standalone/node_modules/caniuse-lite/data/features/css-background-offsets.js +1 -1
  160. package/.next/standalone/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js +1 -1
  161. package/.next/standalone/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js +1 -1
  162. package/.next/standalone/node_modules/caniuse-lite/data/features/css-boxshadow.js +1 -1
  163. package/.next/standalone/node_modules/caniuse-lite/data/features/css-canvas.js +1 -1
  164. package/.next/standalone/node_modules/caniuse-lite/data/features/css-caret-color.js +1 -1
  165. package/.next/standalone/node_modules/caniuse-lite/data/features/css-cascade-layers.js +1 -1
  166. package/.next/standalone/node_modules/caniuse-lite/data/features/css-cascade-scope.js +1 -1
  167. package/.next/standalone/node_modules/caniuse-lite/data/features/css-case-insensitive.js +1 -1
  168. package/.next/standalone/node_modules/caniuse-lite/data/features/css-clip-path.js +1 -1
  169. package/.next/standalone/node_modules/caniuse-lite/data/features/css-color-adjust.js +1 -1
  170. package/.next/standalone/node_modules/caniuse-lite/data/features/css-color-function.js +1 -1
  171. package/.next/standalone/node_modules/caniuse-lite/data/features/css-conic-gradients.js +1 -1
  172. package/.next/standalone/node_modules/caniuse-lite/data/features/css-container-queries-style.js +1 -1
  173. package/.next/standalone/node_modules/caniuse-lite/data/features/css-container-queries.js +1 -1
  174. package/.next/standalone/node_modules/caniuse-lite/data/features/css-container-query-units.js +1 -1
  175. package/.next/standalone/node_modules/caniuse-lite/data/features/css-containment.js +1 -1
  176. package/.next/standalone/node_modules/caniuse-lite/data/features/css-content-visibility.js +1 -1
  177. package/.next/standalone/node_modules/caniuse-lite/data/features/css-counters.js +1 -1
  178. package/.next/standalone/node_modules/caniuse-lite/data/features/css-crisp-edges.js +1 -1
  179. package/.next/standalone/node_modules/caniuse-lite/data/features/css-cross-fade.js +1 -1
  180. package/.next/standalone/node_modules/caniuse-lite/data/features/css-default-pseudo.js +1 -1
  181. package/.next/standalone/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js +1 -1
  182. package/.next/standalone/node_modules/caniuse-lite/data/features/css-deviceadaptation.js +1 -1
  183. package/.next/standalone/node_modules/caniuse-lite/data/features/css-dir-pseudo.js +1 -1
  184. package/.next/standalone/node_modules/caniuse-lite/data/features/css-display-contents.js +1 -1
  185. package/.next/standalone/node_modules/caniuse-lite/data/features/css-element-function.js +1 -1
  186. package/.next/standalone/node_modules/caniuse-lite/data/features/css-env-function.js +1 -1
  187. package/.next/standalone/node_modules/caniuse-lite/data/features/css-exclusions.js +1 -1
  188. package/.next/standalone/node_modules/caniuse-lite/data/features/css-featurequeries.js +1 -1
  189. package/.next/standalone/node_modules/caniuse-lite/data/features/css-file-selector-button.js +1 -1
  190. package/.next/standalone/node_modules/caniuse-lite/data/features/css-filter-function.js +1 -1
  191. package/.next/standalone/node_modules/caniuse-lite/data/features/css-filters.js +1 -1
  192. package/.next/standalone/node_modules/caniuse-lite/data/features/css-first-letter.js +1 -1
  193. package/.next/standalone/node_modules/caniuse-lite/data/features/css-first-line.js +1 -1
  194. package/.next/standalone/node_modules/caniuse-lite/data/features/css-fixed.js +1 -1
  195. package/.next/standalone/node_modules/caniuse-lite/data/features/css-focus-visible.js +1 -1
  196. package/.next/standalone/node_modules/caniuse-lite/data/features/css-focus-within.js +1 -1
  197. package/.next/standalone/node_modules/caniuse-lite/data/features/css-font-palette.js +1 -1
  198. package/.next/standalone/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js +1 -1
  199. package/.next/standalone/node_modules/caniuse-lite/data/features/css-font-stretch.js +1 -1
  200. package/.next/standalone/node_modules/caniuse-lite/data/features/css-gencontent.js +1 -1
  201. package/.next/standalone/node_modules/caniuse-lite/data/features/css-gradients.js +1 -1
  202. package/.next/standalone/node_modules/caniuse-lite/data/features/css-grid-animation.js +1 -1
  203. package/.next/standalone/node_modules/caniuse-lite/data/features/css-grid-lanes.js +1 -1
  204. package/.next/standalone/node_modules/caniuse-lite/data/features/css-grid.js +1 -1
  205. package/.next/standalone/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js +1 -1
  206. package/.next/standalone/node_modules/caniuse-lite/data/features/css-has.js +1 -1
  207. package/.next/standalone/node_modules/caniuse-lite/data/features/css-hyphens.js +1 -1
  208. package/.next/standalone/node_modules/caniuse-lite/data/features/css-if.js +1 -1
  209. package/.next/standalone/node_modules/caniuse-lite/data/features/css-image-orientation.js +1 -1
  210. package/.next/standalone/node_modules/caniuse-lite/data/features/css-image-set.js +1 -1
  211. package/.next/standalone/node_modules/caniuse-lite/data/features/css-in-out-of-range.js +1 -1
  212. package/.next/standalone/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js +1 -1
  213. package/.next/standalone/node_modules/caniuse-lite/data/features/css-initial-letter.js +1 -1
  214. package/.next/standalone/node_modules/caniuse-lite/data/features/css-initial-value.js +1 -1
  215. package/.next/standalone/node_modules/caniuse-lite/data/features/css-lch-lab.js +1 -1
  216. package/.next/standalone/node_modules/caniuse-lite/data/features/css-letter-spacing.js +1 -1
  217. package/.next/standalone/node_modules/caniuse-lite/data/features/css-line-clamp.js +1 -1
  218. package/.next/standalone/node_modules/caniuse-lite/data/features/css-logical-props.js +1 -1
  219. package/.next/standalone/node_modules/caniuse-lite/data/features/css-marker-pseudo.js +1 -1
  220. package/.next/standalone/node_modules/caniuse-lite/data/features/css-masks.js +1 -1
  221. package/.next/standalone/node_modules/caniuse-lite/data/features/css-matches-pseudo.js +1 -1
  222. package/.next/standalone/node_modules/caniuse-lite/data/features/css-math-functions.js +1 -1
  223. package/.next/standalone/node_modules/caniuse-lite/data/features/css-media-interaction.js +1 -1
  224. package/.next/standalone/node_modules/caniuse-lite/data/features/css-media-range-syntax.js +1 -1
  225. package/.next/standalone/node_modules/caniuse-lite/data/features/css-media-resolution.js +1 -1
  226. package/.next/standalone/node_modules/caniuse-lite/data/features/css-media-scripting.js +1 -1
  227. package/.next/standalone/node_modules/caniuse-lite/data/features/css-mediaqueries.js +1 -1
  228. package/.next/standalone/node_modules/caniuse-lite/data/features/css-mixblendmode.js +1 -1
  229. package/.next/standalone/node_modules/caniuse-lite/data/features/css-module-scripts.js +1 -1
  230. package/.next/standalone/node_modules/caniuse-lite/data/features/css-motion-paths.js +1 -1
  231. package/.next/standalone/node_modules/caniuse-lite/data/features/css-namespaces.js +1 -1
  232. package/.next/standalone/node_modules/caniuse-lite/data/features/css-nesting.js +1 -1
  233. package/.next/standalone/node_modules/caniuse-lite/data/features/css-not-sel-list.js +1 -1
  234. package/.next/standalone/node_modules/caniuse-lite/data/features/css-nth-child-of.js +1 -1
  235. package/.next/standalone/node_modules/caniuse-lite/data/features/css-opacity.js +1 -1
  236. package/.next/standalone/node_modules/caniuse-lite/data/features/css-optional-pseudo.js +1 -1
  237. package/.next/standalone/node_modules/caniuse-lite/data/features/css-overflow-anchor.js +1 -1
  238. package/.next/standalone/node_modules/caniuse-lite/data/features/css-overflow-overlay.js +1 -1
  239. package/.next/standalone/node_modules/caniuse-lite/data/features/css-overflow.js +1 -1
  240. package/.next/standalone/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js +1 -1
  241. package/.next/standalone/node_modules/caniuse-lite/data/features/css-page-break.js +1 -1
  242. package/.next/standalone/node_modules/caniuse-lite/data/features/css-paged-media.js +1 -1
  243. package/.next/standalone/node_modules/caniuse-lite/data/features/css-paint-api.js +1 -1
  244. package/.next/standalone/node_modules/caniuse-lite/data/features/css-placeholder-shown.js +1 -1
  245. package/.next/standalone/node_modules/caniuse-lite/data/features/css-placeholder.js +1 -1
  246. package/.next/standalone/node_modules/caniuse-lite/data/features/css-print-color-adjust.js +1 -1
  247. package/.next/standalone/node_modules/caniuse-lite/data/features/css-read-only-write.js +1 -1
  248. package/.next/standalone/node_modules/caniuse-lite/data/features/css-rebeccapurple.js +1 -1
  249. package/.next/standalone/node_modules/caniuse-lite/data/features/css-reflections.js +1 -1
  250. package/.next/standalone/node_modules/caniuse-lite/data/features/css-regions.js +1 -1
  251. package/.next/standalone/node_modules/caniuse-lite/data/features/css-relative-colors.js +1 -1
  252. package/.next/standalone/node_modules/caniuse-lite/data/features/css-repeating-gradients.js +1 -1
  253. package/.next/standalone/node_modules/caniuse-lite/data/features/css-resize.js +1 -1
  254. package/.next/standalone/node_modules/caniuse-lite/data/features/css-revert-value.js +1 -1
  255. package/.next/standalone/node_modules/caniuse-lite/data/features/css-rrggbbaa.js +1 -1
  256. package/.next/standalone/node_modules/caniuse-lite/data/features/css-scroll-behavior.js +1 -1
  257. package/.next/standalone/node_modules/caniuse-lite/data/features/css-scrollbar.js +1 -1
  258. package/.next/standalone/node_modules/caniuse-lite/data/features/css-sel2.js +1 -1
  259. package/.next/standalone/node_modules/caniuse-lite/data/features/css-sel3.js +1 -1
  260. package/.next/standalone/node_modules/caniuse-lite/data/features/css-selection.js +1 -1
  261. package/.next/standalone/node_modules/caniuse-lite/data/features/css-shapes.js +1 -1
  262. package/.next/standalone/node_modules/caniuse-lite/data/features/css-snappoints.js +1 -1
  263. package/.next/standalone/node_modules/caniuse-lite/data/features/css-sticky.js +1 -1
  264. package/.next/standalone/node_modules/caniuse-lite/data/features/css-subgrid.js +1 -1
  265. package/.next/standalone/node_modules/caniuse-lite/data/features/css-supports-api.js +1 -1
  266. package/.next/standalone/node_modules/caniuse-lite/data/features/css-table.js +1 -1
  267. package/.next/standalone/node_modules/caniuse-lite/data/features/css-text-align-last.js +1 -1
  268. package/.next/standalone/node_modules/caniuse-lite/data/features/css-text-box-trim.js +1 -1
  269. package/.next/standalone/node_modules/caniuse-lite/data/features/css-text-indent.js +1 -1
  270. package/.next/standalone/node_modules/caniuse-lite/data/features/css-text-justify.js +1 -1
  271. package/.next/standalone/node_modules/caniuse-lite/data/features/css-text-orientation.js +1 -1
  272. package/.next/standalone/node_modules/caniuse-lite/data/features/css-text-spacing.js +1 -1
  273. package/.next/standalone/node_modules/caniuse-lite/data/features/css-text-wrap-balance.js +1 -1
  274. package/.next/standalone/node_modules/caniuse-lite/data/features/css-textshadow.js +1 -1
  275. package/.next/standalone/node_modules/caniuse-lite/data/features/css-touch-action.js +1 -1
  276. package/.next/standalone/node_modules/caniuse-lite/data/features/css-transitions.js +1 -1
  277. package/.next/standalone/node_modules/caniuse-lite/data/features/css-unicode-bidi.js +1 -1
  278. package/.next/standalone/node_modules/caniuse-lite/data/features/css-unset-value.js +1 -1
  279. package/.next/standalone/node_modules/caniuse-lite/data/features/css-variables.js +1 -1
  280. package/.next/standalone/node_modules/caniuse-lite/data/features/css-when-else.js +1 -1
  281. package/.next/standalone/node_modules/caniuse-lite/data/features/css-widows-orphans.js +1 -1
  282. package/.next/standalone/node_modules/caniuse-lite/data/features/css-width-stretch.js +1 -1
  283. package/.next/standalone/node_modules/caniuse-lite/data/features/css-writing-mode.js +1 -1
  284. package/.next/standalone/node_modules/caniuse-lite/data/features/css-zoom.js +1 -1
  285. package/.next/standalone/node_modules/caniuse-lite/data/features/css3-attr.js +1 -1
  286. package/.next/standalone/node_modules/caniuse-lite/data/features/css3-boxsizing.js +1 -1
  287. package/.next/standalone/node_modules/caniuse-lite/data/features/css3-colors.js +1 -1
  288. package/.next/standalone/node_modules/caniuse-lite/data/features/css3-cursors-grab.js +1 -1
  289. package/.next/standalone/node_modules/caniuse-lite/data/features/css3-cursors-newer.js +1 -1
  290. package/.next/standalone/node_modules/caniuse-lite/data/features/css3-cursors.js +1 -1
  291. package/.next/standalone/node_modules/caniuse-lite/data/features/css3-tabsize.js +1 -1
  292. package/.next/standalone/node_modules/caniuse-lite/data/features/currentcolor.js +1 -1
  293. package/.next/standalone/node_modules/caniuse-lite/data/features/custom-elements.js +1 -1
  294. package/.next/standalone/node_modules/caniuse-lite/data/features/custom-elementsv1.js +1 -1
  295. package/.next/standalone/node_modules/caniuse-lite/data/features/customevent.js +1 -1
  296. package/.next/standalone/node_modules/caniuse-lite/data/features/customizable-select.js +1 -1
  297. package/.next/standalone/node_modules/caniuse-lite/data/features/datalist.js +1 -1
  298. package/.next/standalone/node_modules/caniuse-lite/data/features/dataset.js +1 -1
  299. package/.next/standalone/node_modules/caniuse-lite/data/features/datauri.js +1 -1
  300. package/.next/standalone/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js +1 -1
  301. package/.next/standalone/node_modules/caniuse-lite/data/features/declarative-shadow-dom.js +1 -1
  302. package/.next/standalone/node_modules/caniuse-lite/data/features/decorators.js +1 -1
  303. package/.next/standalone/node_modules/caniuse-lite/data/features/details.js +1 -1
  304. package/.next/standalone/node_modules/caniuse-lite/data/features/deviceorientation.js +1 -1
  305. package/.next/standalone/node_modules/caniuse-lite/data/features/devicepixelratio.js +1 -1
  306. package/.next/standalone/node_modules/caniuse-lite/data/features/dialog.js +1 -1
  307. package/.next/standalone/node_modules/caniuse-lite/data/features/dispatchevent.js +1 -1
  308. package/.next/standalone/node_modules/caniuse-lite/data/features/dnssec.js +1 -1
  309. package/.next/standalone/node_modules/caniuse-lite/data/features/do-not-track.js +1 -1
  310. package/.next/standalone/node_modules/caniuse-lite/data/features/document-currentscript.js +1 -1
  311. package/.next/standalone/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js +1 -1
  312. package/.next/standalone/node_modules/caniuse-lite/data/features/document-execcommand.js +1 -1
  313. package/.next/standalone/node_modules/caniuse-lite/data/features/document-policy.js +1 -1
  314. package/.next/standalone/node_modules/caniuse-lite/data/features/document-scrollingelement.js +1 -1
  315. package/.next/standalone/node_modules/caniuse-lite/data/features/documenthead.js +1 -1
  316. package/.next/standalone/node_modules/caniuse-lite/data/features/dom-manip-convenience.js +1 -1
  317. package/.next/standalone/node_modules/caniuse-lite/data/features/dom-range.js +1 -1
  318. package/.next/standalone/node_modules/caniuse-lite/data/features/domcontentloaded.js +1 -1
  319. package/.next/standalone/node_modules/caniuse-lite/data/features/dommatrix.js +1 -1
  320. package/.next/standalone/node_modules/caniuse-lite/data/features/download.js +1 -1
  321. package/.next/standalone/node_modules/caniuse-lite/data/features/dragndrop.js +1 -1
  322. package/.next/standalone/node_modules/caniuse-lite/data/features/element-closest.js +1 -1
  323. package/.next/standalone/node_modules/caniuse-lite/data/features/element-from-point.js +1 -1
  324. package/.next/standalone/node_modules/caniuse-lite/data/features/element-scroll-methods.js +1 -1
  325. package/.next/standalone/node_modules/caniuse-lite/data/features/eme.js +1 -1
  326. package/.next/standalone/node_modules/caniuse-lite/data/features/eot.js +1 -1
  327. package/.next/standalone/node_modules/caniuse-lite/data/features/es5.js +1 -1
  328. package/.next/standalone/node_modules/caniuse-lite/data/features/es6-class.js +1 -1
  329. package/.next/standalone/node_modules/caniuse-lite/data/features/es6-generators.js +1 -1
  330. package/.next/standalone/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js +1 -1
  331. package/.next/standalone/node_modules/caniuse-lite/data/features/es6-module.js +1 -1
  332. package/.next/standalone/node_modules/caniuse-lite/data/features/es6-number.js +1 -1
  333. package/.next/standalone/node_modules/caniuse-lite/data/features/es6-string-includes.js +1 -1
  334. package/.next/standalone/node_modules/caniuse-lite/data/features/es6.js +1 -1
  335. package/.next/standalone/node_modules/caniuse-lite/data/features/eventsource.js +1 -1
  336. package/.next/standalone/node_modules/caniuse-lite/data/features/extended-system-fonts.js +1 -1
  337. package/.next/standalone/node_modules/caniuse-lite/data/features/feature-policy.js +1 -1
  338. package/.next/standalone/node_modules/caniuse-lite/data/features/fetch.js +1 -1
  339. package/.next/standalone/node_modules/caniuse-lite/data/features/fieldset-disabled.js +1 -1
  340. package/.next/standalone/node_modules/caniuse-lite/data/features/fileapi.js +1 -1
  341. package/.next/standalone/node_modules/caniuse-lite/data/features/filereader.js +1 -1
  342. package/.next/standalone/node_modules/caniuse-lite/data/features/filereadersync.js +1 -1
  343. package/.next/standalone/node_modules/caniuse-lite/data/features/filesystem.js +1 -1
  344. package/.next/standalone/node_modules/caniuse-lite/data/features/flac.js +1 -1
  345. package/.next/standalone/node_modules/caniuse-lite/data/features/flexbox-gap.js +1 -1
  346. package/.next/standalone/node_modules/caniuse-lite/data/features/flexbox.js +1 -1
  347. package/.next/standalone/node_modules/caniuse-lite/data/features/flow-root.js +1 -1
  348. package/.next/standalone/node_modules/caniuse-lite/data/features/focusin-focusout-events.js +1 -1
  349. package/.next/standalone/node_modules/caniuse-lite/data/features/font-family-system-ui.js +1 -1
  350. package/.next/standalone/node_modules/caniuse-lite/data/features/font-feature.js +1 -1
  351. package/.next/standalone/node_modules/caniuse-lite/data/features/font-kerning.js +1 -1
  352. package/.next/standalone/node_modules/caniuse-lite/data/features/font-loading.js +1 -1
  353. package/.next/standalone/node_modules/caniuse-lite/data/features/font-size-adjust.js +1 -1
  354. package/.next/standalone/node_modules/caniuse-lite/data/features/font-smooth.js +1 -1
  355. package/.next/standalone/node_modules/caniuse-lite/data/features/font-unicode-range.js +1 -1
  356. package/.next/standalone/node_modules/caniuse-lite/data/features/font-variant-alternates.js +1 -1
  357. package/.next/standalone/node_modules/caniuse-lite/data/features/font-variant-numeric.js +1 -1
  358. package/.next/standalone/node_modules/caniuse-lite/data/features/fontface.js +1 -1
  359. package/.next/standalone/node_modules/caniuse-lite/data/features/form-attribute.js +1 -1
  360. package/.next/standalone/node_modules/caniuse-lite/data/features/form-submit-attributes.js +1 -1
  361. package/.next/standalone/node_modules/caniuse-lite/data/features/form-validation.js +1 -1
  362. package/.next/standalone/node_modules/caniuse-lite/data/features/forms.js +1 -1
  363. package/.next/standalone/node_modules/caniuse-lite/data/features/fullscreen.js +1 -1
  364. package/.next/standalone/node_modules/caniuse-lite/data/features/gamepad.js +1 -1
  365. package/.next/standalone/node_modules/caniuse-lite/data/features/geolocation.js +1 -1
  366. package/.next/standalone/node_modules/caniuse-lite/data/features/getboundingclientrect.js +1 -1
  367. package/.next/standalone/node_modules/caniuse-lite/data/features/getcomputedstyle.js +1 -1
  368. package/.next/standalone/node_modules/caniuse-lite/data/features/getelementsbyclassname.js +1 -1
  369. package/.next/standalone/node_modules/caniuse-lite/data/features/getrandomvalues.js +1 -1
  370. package/.next/standalone/node_modules/caniuse-lite/data/features/gyroscope.js +1 -1
  371. package/.next/standalone/node_modules/caniuse-lite/data/features/hardwareconcurrency.js +1 -1
  372. package/.next/standalone/node_modules/caniuse-lite/data/features/hashchange.js +1 -1
  373. package/.next/standalone/node_modules/caniuse-lite/data/features/heif.js +1 -1
  374. package/.next/standalone/node_modules/caniuse-lite/data/features/hevc.js +1 -1
  375. package/.next/standalone/node_modules/caniuse-lite/data/features/hidden.js +1 -1
  376. package/.next/standalone/node_modules/caniuse-lite/data/features/high-resolution-time.js +1 -1
  377. package/.next/standalone/node_modules/caniuse-lite/data/features/history.js +1 -1
  378. package/.next/standalone/node_modules/caniuse-lite/data/features/html-media-capture.js +1 -1
  379. package/.next/standalone/node_modules/caniuse-lite/data/features/html5semantic.js +1 -1
  380. package/.next/standalone/node_modules/caniuse-lite/data/features/http-live-streaming.js +1 -1
  381. package/.next/standalone/node_modules/caniuse-lite/data/features/http2.js +1 -1
  382. package/.next/standalone/node_modules/caniuse-lite/data/features/http3.js +1 -1
  383. package/.next/standalone/node_modules/caniuse-lite/data/features/iframe-sandbox.js +1 -1
  384. package/.next/standalone/node_modules/caniuse-lite/data/features/iframe-seamless.js +1 -1
  385. package/.next/standalone/node_modules/caniuse-lite/data/features/iframe-srcdoc.js +1 -1
  386. package/.next/standalone/node_modules/caniuse-lite/data/features/imagecapture.js +1 -1
  387. package/.next/standalone/node_modules/caniuse-lite/data/features/ime.js +1 -1
  388. package/.next/standalone/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js +1 -1
  389. package/.next/standalone/node_modules/caniuse-lite/data/features/import-maps.js +1 -1
  390. package/.next/standalone/node_modules/caniuse-lite/data/features/imports.js +1 -1
  391. package/.next/standalone/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js +1 -1
  392. package/.next/standalone/node_modules/caniuse-lite/data/features/indexeddb.js +1 -1
  393. package/.next/standalone/node_modules/caniuse-lite/data/features/indexeddb2.js +1 -1
  394. package/.next/standalone/node_modules/caniuse-lite/data/features/inline-block.js +1 -1
  395. package/.next/standalone/node_modules/caniuse-lite/data/features/innertext.js +1 -1
  396. package/.next/standalone/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js +1 -1
  397. package/.next/standalone/node_modules/caniuse-lite/data/features/input-color.js +1 -1
  398. package/.next/standalone/node_modules/caniuse-lite/data/features/input-datetime.js +1 -1
  399. package/.next/standalone/node_modules/caniuse-lite/data/features/input-email-tel-url.js +1 -1
  400. package/.next/standalone/node_modules/caniuse-lite/data/features/input-event.js +1 -1
  401. package/.next/standalone/node_modules/caniuse-lite/data/features/input-file-accept.js +1 -1
  402. package/.next/standalone/node_modules/caniuse-lite/data/features/input-file-directory.js +1 -1
  403. package/.next/standalone/node_modules/caniuse-lite/data/features/input-file-multiple.js +1 -1
  404. package/.next/standalone/node_modules/caniuse-lite/data/features/input-inputmode.js +1 -1
  405. package/.next/standalone/node_modules/caniuse-lite/data/features/input-minlength.js +1 -1
  406. package/.next/standalone/node_modules/caniuse-lite/data/features/input-number.js +1 -1
  407. package/.next/standalone/node_modules/caniuse-lite/data/features/input-pattern.js +1 -1
  408. package/.next/standalone/node_modules/caniuse-lite/data/features/input-placeholder.js +1 -1
  409. package/.next/standalone/node_modules/caniuse-lite/data/features/input-range.js +1 -1
  410. package/.next/standalone/node_modules/caniuse-lite/data/features/input-search.js +1 -1
  411. package/.next/standalone/node_modules/caniuse-lite/data/features/input-selection.js +1 -1
  412. package/.next/standalone/node_modules/caniuse-lite/data/features/insert-adjacent.js +1 -1
  413. package/.next/standalone/node_modules/caniuse-lite/data/features/insertadjacenthtml.js +1 -1
  414. package/.next/standalone/node_modules/caniuse-lite/data/features/internationalization.js +1 -1
  415. package/.next/standalone/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js +1 -1
  416. package/.next/standalone/node_modules/caniuse-lite/data/features/intersectionobserver.js +1 -1
  417. package/.next/standalone/node_modules/caniuse-lite/data/features/intl-pluralrules.js +1 -1
  418. package/.next/standalone/node_modules/caniuse-lite/data/features/intrinsic-width.js +1 -1
  419. package/.next/standalone/node_modules/caniuse-lite/data/features/jpeg2000.js +1 -1
  420. package/.next/standalone/node_modules/caniuse-lite/data/features/jpegxl.js +1 -1
  421. package/.next/standalone/node_modules/caniuse-lite/data/features/jpegxr.js +1 -1
  422. package/.next/standalone/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js +1 -1
  423. package/.next/standalone/node_modules/caniuse-lite/data/features/json.js +1 -1
  424. package/.next/standalone/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js +1 -1
  425. package/.next/standalone/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js +1 -1
  426. package/.next/standalone/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js +1 -1
  427. package/.next/standalone/node_modules/caniuse-lite/data/features/keyboardevent-code.js +1 -1
  428. package/.next/standalone/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js +1 -1
  429. package/.next/standalone/node_modules/caniuse-lite/data/features/keyboardevent-key.js +1 -1
  430. package/.next/standalone/node_modules/caniuse-lite/data/features/keyboardevent-location.js +1 -1
  431. package/.next/standalone/node_modules/caniuse-lite/data/features/keyboardevent-which.js +1 -1
  432. package/.next/standalone/node_modules/caniuse-lite/data/features/lazyload.js +1 -1
  433. package/.next/standalone/node_modules/caniuse-lite/data/features/let.js +1 -1
  434. package/.next/standalone/node_modules/caniuse-lite/data/features/link-icon-png.js +1 -1
  435. package/.next/standalone/node_modules/caniuse-lite/data/features/link-icon-svg.js +1 -1
  436. package/.next/standalone/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js +1 -1
  437. package/.next/standalone/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js +1 -1
  438. package/.next/standalone/node_modules/caniuse-lite/data/features/link-rel-preconnect.js +1 -1
  439. package/.next/standalone/node_modules/caniuse-lite/data/features/link-rel-prefetch.js +1 -1
  440. package/.next/standalone/node_modules/caniuse-lite/data/features/link-rel-preload.js +1 -1
  441. package/.next/standalone/node_modules/caniuse-lite/data/features/link-rel-prerender.js +1 -1
  442. package/.next/standalone/node_modules/caniuse-lite/data/features/loading-lazy-attr.js +1 -1
  443. package/.next/standalone/node_modules/caniuse-lite/data/features/loading-lazy-media.js +1 -1
  444. package/.next/standalone/node_modules/caniuse-lite/data/features/localecompare.js +1 -1
  445. package/.next/standalone/node_modules/caniuse-lite/data/features/magnetometer.js +1 -1
  446. package/.next/standalone/node_modules/caniuse-lite/data/features/matchesselector.js +1 -1
  447. package/.next/standalone/node_modules/caniuse-lite/data/features/matchmedia.js +1 -1
  448. package/.next/standalone/node_modules/caniuse-lite/data/features/mathml.js +1 -1
  449. package/.next/standalone/node_modules/caniuse-lite/data/features/maxlength.js +1 -1
  450. package/.next/standalone/node_modules/caniuse-lite/data/features/mdn-css-backdrop-pseudo-element.js +1 -1
  451. package/.next/standalone/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate-override.js +1 -1
  452. package/.next/standalone/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate.js +1 -1
  453. package/.next/standalone/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-plaintext.js +1 -1
  454. package/.next/standalone/node_modules/caniuse-lite/data/features/mdn-text-decoration-color.js +1 -1
  455. package/.next/standalone/node_modules/caniuse-lite/data/features/mdn-text-decoration-line.js +1 -1
  456. package/.next/standalone/node_modules/caniuse-lite/data/features/mdn-text-decoration-shorthand.js +1 -1
  457. package/.next/standalone/node_modules/caniuse-lite/data/features/mdn-text-decoration-style.js +1 -1
  458. package/.next/standalone/node_modules/caniuse-lite/data/features/media-fragments.js +1 -1
  459. package/.next/standalone/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js +1 -1
  460. package/.next/standalone/node_modules/caniuse-lite/data/features/mediarecorder.js +1 -1
  461. package/.next/standalone/node_modules/caniuse-lite/data/features/mediasource.js +1 -1
  462. package/.next/standalone/node_modules/caniuse-lite/data/features/menu.js +1 -1
  463. package/.next/standalone/node_modules/caniuse-lite/data/features/meta-theme-color.js +1 -1
  464. package/.next/standalone/node_modules/caniuse-lite/data/features/meter.js +1 -1
  465. package/.next/standalone/node_modules/caniuse-lite/data/features/midi.js +1 -1
  466. package/.next/standalone/node_modules/caniuse-lite/data/features/minmaxwh.js +1 -1
  467. package/.next/standalone/node_modules/caniuse-lite/data/features/mp3.js +1 -1
  468. package/.next/standalone/node_modules/caniuse-lite/data/features/mpeg-dash.js +1 -1
  469. package/.next/standalone/node_modules/caniuse-lite/data/features/mpeg4.js +1 -1
  470. package/.next/standalone/node_modules/caniuse-lite/data/features/multibackgrounds.js +1 -1
  471. package/.next/standalone/node_modules/caniuse-lite/data/features/multicolumn.js +1 -1
  472. package/.next/standalone/node_modules/caniuse-lite/data/features/mutation-events.js +1 -1
  473. package/.next/standalone/node_modules/caniuse-lite/data/features/mutationobserver.js +1 -1
  474. package/.next/standalone/node_modules/caniuse-lite/data/features/namevalue-storage.js +1 -1
  475. package/.next/standalone/node_modules/caniuse-lite/data/features/native-filesystem-api.js +1 -1
  476. package/.next/standalone/node_modules/caniuse-lite/data/features/nav-timing.js +1 -1
  477. package/.next/standalone/node_modules/caniuse-lite/data/features/netinfo.js +1 -1
  478. package/.next/standalone/node_modules/caniuse-lite/data/features/notifications.js +1 -1
  479. package/.next/standalone/node_modules/caniuse-lite/data/features/object-entries.js +1 -1
  480. package/.next/standalone/node_modules/caniuse-lite/data/features/object-fit.js +1 -1
  481. package/.next/standalone/node_modules/caniuse-lite/data/features/object-observe.js +1 -1
  482. package/.next/standalone/node_modules/caniuse-lite/data/features/object-values.js +1 -1
  483. package/.next/standalone/node_modules/caniuse-lite/data/features/objectrtc.js +1 -1
  484. package/.next/standalone/node_modules/caniuse-lite/data/features/offline-apps.js +1 -1
  485. package/.next/standalone/node_modules/caniuse-lite/data/features/offscreencanvas.js +1 -1
  486. package/.next/standalone/node_modules/caniuse-lite/data/features/ogg-vorbis.js +1 -1
  487. package/.next/standalone/node_modules/caniuse-lite/data/features/ogv.js +1 -1
  488. package/.next/standalone/node_modules/caniuse-lite/data/features/ol-reversed.js +1 -1
  489. package/.next/standalone/node_modules/caniuse-lite/data/features/once-event-listener.js +1 -1
  490. package/.next/standalone/node_modules/caniuse-lite/data/features/online-status.js +1 -1
  491. package/.next/standalone/node_modules/caniuse-lite/data/features/opus.js +1 -1
  492. package/.next/standalone/node_modules/caniuse-lite/data/features/orientation-sensor.js +1 -1
  493. package/.next/standalone/node_modules/caniuse-lite/data/features/outline.js +1 -1
  494. package/.next/standalone/node_modules/caniuse-lite/data/features/pad-start-end.js +1 -1
  495. package/.next/standalone/node_modules/caniuse-lite/data/features/page-transition-events.js +1 -1
  496. package/.next/standalone/node_modules/caniuse-lite/data/features/pagevisibility.js +1 -1
  497. package/.next/standalone/node_modules/caniuse-lite/data/features/passive-event-listener.js +1 -1
  498. package/.next/standalone/node_modules/caniuse-lite/data/features/passkeys.js +1 -1
  499. package/.next/standalone/node_modules/caniuse-lite/data/features/passwordrules.js +1 -1
  500. package/.next/standalone/node_modules/caniuse-lite/data/features/path2d.js +1 -1
  501. package/.next/standalone/node_modules/caniuse-lite/data/features/payment-request.js +1 -1
  502. package/.next/standalone/node_modules/caniuse-lite/data/features/pdf-viewer.js +1 -1
  503. package/.next/standalone/node_modules/caniuse-lite/data/features/permissions-api.js +1 -1
  504. package/.next/standalone/node_modules/caniuse-lite/data/features/permissions-policy.js +1 -1
  505. package/.next/standalone/node_modules/caniuse-lite/data/features/picture-in-picture.js +1 -1
  506. package/.next/standalone/node_modules/caniuse-lite/data/features/picture.js +1 -1
  507. package/.next/standalone/node_modules/caniuse-lite/data/features/ping.js +1 -1
  508. package/.next/standalone/node_modules/caniuse-lite/data/features/png-alpha.js +1 -1
  509. package/.next/standalone/node_modules/caniuse-lite/data/features/pointer-events.js +1 -1
  510. package/.next/standalone/node_modules/caniuse-lite/data/features/pointer.js +1 -1
  511. package/.next/standalone/node_modules/caniuse-lite/data/features/pointerlock.js +1 -1
  512. package/.next/standalone/node_modules/caniuse-lite/data/features/portals.js +1 -1
  513. package/.next/standalone/node_modules/caniuse-lite/data/features/prefers-color-scheme.js +1 -1
  514. package/.next/standalone/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js +1 -1
  515. package/.next/standalone/node_modules/caniuse-lite/data/features/progress.js +1 -1
  516. package/.next/standalone/node_modules/caniuse-lite/data/features/promise-finally.js +1 -1
  517. package/.next/standalone/node_modules/caniuse-lite/data/features/promises.js +1 -1
  518. package/.next/standalone/node_modules/caniuse-lite/data/features/proximity.js +1 -1
  519. package/.next/standalone/node_modules/caniuse-lite/data/features/proxy.js +1 -1
  520. package/.next/standalone/node_modules/caniuse-lite/data/features/publickeypinning.js +1 -1
  521. package/.next/standalone/node_modules/caniuse-lite/data/features/push-api.js +1 -1
  522. package/.next/standalone/node_modules/caniuse-lite/data/features/queryselector.js +1 -1
  523. package/.next/standalone/node_modules/caniuse-lite/data/features/readonly-attr.js +1 -1
  524. package/.next/standalone/node_modules/caniuse-lite/data/features/referrer-policy.js +1 -1
  525. package/.next/standalone/node_modules/caniuse-lite/data/features/registerprotocolhandler.js +1 -1
  526. package/.next/standalone/node_modules/caniuse-lite/data/features/rel-noopener.js +1 -1
  527. package/.next/standalone/node_modules/caniuse-lite/data/features/rel-noreferrer.js +1 -1
  528. package/.next/standalone/node_modules/caniuse-lite/data/features/rellist.js +1 -1
  529. package/.next/standalone/node_modules/caniuse-lite/data/features/rem.js +1 -1
  530. package/.next/standalone/node_modules/caniuse-lite/data/features/requestanimationframe.js +1 -1
  531. package/.next/standalone/node_modules/caniuse-lite/data/features/requestidlecallback.js +1 -1
  532. package/.next/standalone/node_modules/caniuse-lite/data/features/resizeobserver.js +1 -1
  533. package/.next/standalone/node_modules/caniuse-lite/data/features/resource-timing.js +1 -1
  534. package/.next/standalone/node_modules/caniuse-lite/data/features/rest-parameters.js +1 -1
  535. package/.next/standalone/node_modules/caniuse-lite/data/features/rtcpeerconnection.js +1 -1
  536. package/.next/standalone/node_modules/caniuse-lite/data/features/ruby.js +1 -1
  537. package/.next/standalone/node_modules/caniuse-lite/data/features/run-in.js +1 -1
  538. package/.next/standalone/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js +1 -1
  539. package/.next/standalone/node_modules/caniuse-lite/data/features/screen-orientation.js +1 -1
  540. package/.next/standalone/node_modules/caniuse-lite/data/features/script-async.js +1 -1
  541. package/.next/standalone/node_modules/caniuse-lite/data/features/script-defer.js +1 -1
  542. package/.next/standalone/node_modules/caniuse-lite/data/features/scrollintoview.js +1 -1
  543. package/.next/standalone/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js +1 -1
  544. package/.next/standalone/node_modules/caniuse-lite/data/features/sdch.js +1 -1
  545. package/.next/standalone/node_modules/caniuse-lite/data/features/selection-api.js +1 -1
  546. package/.next/standalone/node_modules/caniuse-lite/data/features/server-timing.js +1 -1
  547. package/.next/standalone/node_modules/caniuse-lite/data/features/serviceworkers.js +1 -1
  548. package/.next/standalone/node_modules/caniuse-lite/data/features/setimmediate.js +1 -1
  549. package/.next/standalone/node_modules/caniuse-lite/data/features/shadowdom.js +1 -1
  550. package/.next/standalone/node_modules/caniuse-lite/data/features/shadowdomv1.js +1 -1
  551. package/.next/standalone/node_modules/caniuse-lite/data/features/sharedarraybuffer.js +1 -1
  552. package/.next/standalone/node_modules/caniuse-lite/data/features/sharedworkers.js +1 -1
  553. package/.next/standalone/node_modules/caniuse-lite/data/features/sni.js +1 -1
  554. package/.next/standalone/node_modules/caniuse-lite/data/features/spdy.js +1 -1
  555. package/.next/standalone/node_modules/caniuse-lite/data/features/speech-recognition.js +1 -1
  556. package/.next/standalone/node_modules/caniuse-lite/data/features/speech-synthesis.js +1 -1
  557. package/.next/standalone/node_modules/caniuse-lite/data/features/spellcheck-attribute.js +1 -1
  558. package/.next/standalone/node_modules/caniuse-lite/data/features/sql-storage.js +1 -1
  559. package/.next/standalone/node_modules/caniuse-lite/data/features/srcset.js +1 -1
  560. package/.next/standalone/node_modules/caniuse-lite/data/features/stream.js +1 -1
  561. package/.next/standalone/node_modules/caniuse-lite/data/features/streams.js +1 -1
  562. package/.next/standalone/node_modules/caniuse-lite/data/features/stricttransportsecurity.js +1 -1
  563. package/.next/standalone/node_modules/caniuse-lite/data/features/style-scoped.js +1 -1
  564. package/.next/standalone/node_modules/caniuse-lite/data/features/subresource-bundling.js +1 -1
  565. package/.next/standalone/node_modules/caniuse-lite/data/features/subresource-integrity.js +1 -1
  566. package/.next/standalone/node_modules/caniuse-lite/data/features/svg-css.js +1 -1
  567. package/.next/standalone/node_modules/caniuse-lite/data/features/svg-filters.js +1 -1
  568. package/.next/standalone/node_modules/caniuse-lite/data/features/svg-fonts.js +1 -1
  569. package/.next/standalone/node_modules/caniuse-lite/data/features/svg-fragment.js +1 -1
  570. package/.next/standalone/node_modules/caniuse-lite/data/features/svg-html.js +1 -1
  571. package/.next/standalone/node_modules/caniuse-lite/data/features/svg-html5.js +1 -1
  572. package/.next/standalone/node_modules/caniuse-lite/data/features/svg-img.js +1 -1
  573. package/.next/standalone/node_modules/caniuse-lite/data/features/svg-smil.js +1 -1
  574. package/.next/standalone/node_modules/caniuse-lite/data/features/svg.js +1 -1
  575. package/.next/standalone/node_modules/caniuse-lite/data/features/sxg.js +1 -1
  576. package/.next/standalone/node_modules/caniuse-lite/data/features/tabindex-attr.js +1 -1
  577. package/.next/standalone/node_modules/caniuse-lite/data/features/template-literals.js +1 -1
  578. package/.next/standalone/node_modules/caniuse-lite/data/features/template.js +1 -1
  579. package/.next/standalone/node_modules/caniuse-lite/data/features/temporal.js +1 -1
  580. package/.next/standalone/node_modules/caniuse-lite/data/features/testfeat.js +1 -1
  581. package/.next/standalone/node_modules/caniuse-lite/data/features/text-decoration.js +1 -1
  582. package/.next/standalone/node_modules/caniuse-lite/data/features/text-emphasis.js +1 -1
  583. package/.next/standalone/node_modules/caniuse-lite/data/features/text-overflow.js +1 -1
  584. package/.next/standalone/node_modules/caniuse-lite/data/features/text-size-adjust.js +1 -1
  585. package/.next/standalone/node_modules/caniuse-lite/data/features/text-stroke.js +1 -1
  586. package/.next/standalone/node_modules/caniuse-lite/data/features/textcontent.js +1 -1
  587. package/.next/standalone/node_modules/caniuse-lite/data/features/textencoder.js +1 -1
  588. package/.next/standalone/node_modules/caniuse-lite/data/features/tls1-1.js +1 -1
  589. package/.next/standalone/node_modules/caniuse-lite/data/features/tls1-2.js +1 -1
  590. package/.next/standalone/node_modules/caniuse-lite/data/features/tls1-3.js +1 -1
  591. package/.next/standalone/node_modules/caniuse-lite/data/features/touch.js +1 -1
  592. package/.next/standalone/node_modules/caniuse-lite/data/features/transforms2d.js +1 -1
  593. package/.next/standalone/node_modules/caniuse-lite/data/features/transforms3d.js +1 -1
  594. package/.next/standalone/node_modules/caniuse-lite/data/features/trusted-types.js +1 -1
  595. package/.next/standalone/node_modules/caniuse-lite/data/features/ttf.js +1 -1
  596. package/.next/standalone/node_modules/caniuse-lite/data/features/typedarrays.js +1 -1
  597. package/.next/standalone/node_modules/caniuse-lite/data/features/u2f.js +1 -1
  598. package/.next/standalone/node_modules/caniuse-lite/data/features/unhandledrejection.js +1 -1
  599. package/.next/standalone/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js +1 -1
  600. package/.next/standalone/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js +1 -1
  601. package/.next/standalone/node_modules/caniuse-lite/data/features/url.js +1 -1
  602. package/.next/standalone/node_modules/caniuse-lite/data/features/urlsearchparams.js +1 -1
  603. package/.next/standalone/node_modules/caniuse-lite/data/features/use-strict.js +1 -1
  604. package/.next/standalone/node_modules/caniuse-lite/data/features/user-select-none.js +1 -1
  605. package/.next/standalone/node_modules/caniuse-lite/data/features/user-timing.js +1 -1
  606. package/.next/standalone/node_modules/caniuse-lite/data/features/variable-fonts.js +1 -1
  607. package/.next/standalone/node_modules/caniuse-lite/data/features/vector-effect.js +1 -1
  608. package/.next/standalone/node_modules/caniuse-lite/data/features/vibration.js +1 -1
  609. package/.next/standalone/node_modules/caniuse-lite/data/features/video.js +1 -1
  610. package/.next/standalone/node_modules/caniuse-lite/data/features/videotracks.js +1 -1
  611. package/.next/standalone/node_modules/caniuse-lite/data/features/view-transitions.js +1 -1
  612. package/.next/standalone/node_modules/caniuse-lite/data/features/viewport-unit-variants.js +1 -1
  613. package/.next/standalone/node_modules/caniuse-lite/data/features/viewport-units.js +1 -1
  614. package/.next/standalone/node_modules/caniuse-lite/data/features/wai-aria.js +1 -1
  615. package/.next/standalone/node_modules/caniuse-lite/data/features/wake-lock.js +1 -1
  616. package/.next/standalone/node_modules/caniuse-lite/data/features/wasm-bigint.js +1 -1
  617. package/.next/standalone/node_modules/caniuse-lite/data/features/wasm-bulk-memory.js +1 -1
  618. package/.next/standalone/node_modules/caniuse-lite/data/features/wasm-extended-const.js +1 -1
  619. package/.next/standalone/node_modules/caniuse-lite/data/features/wasm-gc.js +1 -1
  620. package/.next/standalone/node_modules/caniuse-lite/data/features/wasm-multi-memory.js +1 -1
  621. package/.next/standalone/node_modules/caniuse-lite/data/features/wasm-multi-value.js +1 -1
  622. package/.next/standalone/node_modules/caniuse-lite/data/features/wasm-mutable-globals.js +1 -1
  623. package/.next/standalone/node_modules/caniuse-lite/data/features/wasm-nontrapping-fptoint.js +1 -1
  624. package/.next/standalone/node_modules/caniuse-lite/data/features/wasm-reference-types.js +1 -1
  625. package/.next/standalone/node_modules/caniuse-lite/data/features/wasm-relaxed-simd.js +1 -1
  626. package/.next/standalone/node_modules/caniuse-lite/data/features/wasm-signext.js +1 -1
  627. package/.next/standalone/node_modules/caniuse-lite/data/features/wasm-simd.js +1 -1
  628. package/.next/standalone/node_modules/caniuse-lite/data/features/wasm-tail-calls.js +1 -1
  629. package/.next/standalone/node_modules/caniuse-lite/data/features/wasm-threads.js +1 -1
  630. package/.next/standalone/node_modules/caniuse-lite/data/features/wasm.js +1 -1
  631. package/.next/standalone/node_modules/caniuse-lite/data/features/wav.js +1 -1
  632. package/.next/standalone/node_modules/caniuse-lite/data/features/wbr-element.js +1 -1
  633. package/.next/standalone/node_modules/caniuse-lite/data/features/web-animation.js +1 -1
  634. package/.next/standalone/node_modules/caniuse-lite/data/features/web-app-manifest.js +1 -1
  635. package/.next/standalone/node_modules/caniuse-lite/data/features/web-bluetooth.js +1 -1
  636. package/.next/standalone/node_modules/caniuse-lite/data/features/web-serial.js +1 -1
  637. package/.next/standalone/node_modules/caniuse-lite/data/features/web-share.js +1 -1
  638. package/.next/standalone/node_modules/caniuse-lite/data/features/webauthn.js +1 -1
  639. package/.next/standalone/node_modules/caniuse-lite/data/features/webcodecs.js +1 -1
  640. package/.next/standalone/node_modules/caniuse-lite/data/features/webgl.js +1 -1
  641. package/.next/standalone/node_modules/caniuse-lite/data/features/webgl2.js +1 -1
  642. package/.next/standalone/node_modules/caniuse-lite/data/features/webgpu.js +1 -1
  643. package/.next/standalone/node_modules/caniuse-lite/data/features/webhid.js +1 -1
  644. package/.next/standalone/node_modules/caniuse-lite/data/features/webkit-user-drag.js +1 -1
  645. package/.next/standalone/node_modules/caniuse-lite/data/features/webm.js +1 -1
  646. package/.next/standalone/node_modules/caniuse-lite/data/features/webnfc.js +1 -1
  647. package/.next/standalone/node_modules/caniuse-lite/data/features/webp.js +1 -1
  648. package/.next/standalone/node_modules/caniuse-lite/data/features/websockets.js +1 -1
  649. package/.next/standalone/node_modules/caniuse-lite/data/features/webtransport.js +1 -1
  650. package/.next/standalone/node_modules/caniuse-lite/data/features/webusb.js +1 -1
  651. package/.next/standalone/node_modules/caniuse-lite/data/features/webvr.js +1 -1
  652. package/.next/standalone/node_modules/caniuse-lite/data/features/webvtt.js +1 -1
  653. package/.next/standalone/node_modules/caniuse-lite/data/features/webworkers.js +1 -1
  654. package/.next/standalone/node_modules/caniuse-lite/data/features/webxr.js +1 -1
  655. package/.next/standalone/node_modules/caniuse-lite/data/features/will-change.js +1 -1
  656. package/.next/standalone/node_modules/caniuse-lite/data/features/woff.js +1 -1
  657. package/.next/standalone/node_modules/caniuse-lite/data/features/woff2.js +1 -1
  658. package/.next/standalone/node_modules/caniuse-lite/data/features/word-break.js +1 -1
  659. package/.next/standalone/node_modules/caniuse-lite/data/features/wordwrap.js +1 -1
  660. package/.next/standalone/node_modules/caniuse-lite/data/features/x-doc-messaging.js +1 -1
  661. package/.next/standalone/node_modules/caniuse-lite/data/features/x-frame-options.js +1 -1
  662. package/.next/standalone/node_modules/caniuse-lite/data/features/xhr2.js +1 -1
  663. package/.next/standalone/node_modules/caniuse-lite/data/features/xhtml.js +1 -1
  664. package/.next/standalone/node_modules/caniuse-lite/data/features/xhtmlsmil.js +1 -1
  665. package/.next/standalone/node_modules/caniuse-lite/data/features/xml-serializer.js +1 -1
  666. package/.next/standalone/node_modules/caniuse-lite/data/features/zstd.js +1 -1
  667. package/.next/standalone/node_modules/caniuse-lite/package.json +1 -1
  668. package/.next/standalone/node_modules/next/dist/build/swc/index.js +1 -1
  669. package/.next/standalone/node_modules/next/dist/build/webpack-config.js +2 -2
  670. package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-experimental.runtime.prod.js +1 -1
  671. package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +1 -1
  672. package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +13 -13
  673. package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js +12 -12
  674. package/.next/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +1 -1
  675. package/.next/standalone/node_modules/next/dist/compiled/next-server/pages.runtime.prod.js +1 -1
  676. package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +1 -1
  677. package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
  678. package/.next/standalone/node_modules/next/dist/server/lib/app-info-log.js +1 -1
  679. package/.next/standalone/node_modules/next/dist/server/lib/start-server.js +3 -1
  680. package/.next/standalone/node_modules/next/dist/shared/lib/canary-only.js +1 -1
  681. package/.next/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
  682. package/.next/standalone/node_modules/next/dist/telemetry/events/version.js +2 -2
  683. package/.next/standalone/node_modules/next/package.json +15 -15
  684. package/.next/standalone/node_modules/semver/classes/range.js +9 -0
  685. package/.next/standalone/node_modules/semver/package.json +1 -1
  686. package/.next/standalone/package.json +3 -2
  687. package/.next/static/BI7koHWCC15MOwsCfxo2O/_buildManifest.js +1 -0
  688. package/.next/static/chunks/{255-4f84124391a7dac4.js → 255-98a0bdaa30757bda.js} +1 -1
  689. package/.next/static/chunks/642-75adb59cbb062e44.js +1 -0
  690. package/.next/static/chunks/798-8424899efd598f73.js +1 -0
  691. package/.next/static/chunks/app/(dashboard)/integrations/page-25d6f67123a8a2ef.js +1 -0
  692. package/.next/{standalone/.next/static/chunks/app/(dashboard)/layout-e4ed5abcbb7c8802.js → static/chunks/app/(dashboard)/layout-a63b3fef68015cb5.js} +1 -1
  693. package/.next/static/chunks/app/(dashboard)/projects/[projectId]/page-cfab61233220bde3.js +1 -0
  694. package/.next/static/chunks/app/(dashboard)/projects/[projectId]/summary/{page-1b2e89d37c95e30f.js → page-1650386b60d0337f.js} +1 -1
  695. package/.next/static/chunks/app/(dashboard)/projects/page-420d60cc1ac676f3.js +1 -0
  696. package/.next/static/chunks/app/api/e2e/route-4f053c4f9dcca3c0.js +1 -0
  697. package/.next/static/chunks/app/api/generate/route-4f053c4f9dcca3c0.js +1 -0
  698. package/.next/static/chunks/app/api/llm/encrypt/route-4f053c4f9dcca3c0.js +1 -0
  699. package/.next/static/chunks/app/api/llm/test/route-4f053c4f9dcca3c0.js +1 -0
  700. package/.next/static/chunks/app/api/mcp/route-4f053c4f9dcca3c0.js +1 -0
  701. package/.next/static/chunks/app/api/refine-notes/route-4f053c4f9dcca3c0.js +1 -0
  702. package/.next/static/chunks/app/api/state/route-4f053c4f9dcca3c0.js +1 -0
  703. package/.next/static/chunks/app/api/weather/route-4f053c4f9dcca3c0.js +1 -0
  704. package/.next/static/chunks/app/page-3e00e649355cd3ac.js +1 -0
  705. package/.next/{standalone/.next/static/chunks/main-646068343426c12d.js → static/chunks/main-2af68c75fbdc984e.js} +1 -1
  706. package/.next/static/css/d95cfd16ee2f56f9.css +3 -0
  707. package/README.md +30 -17
  708. package/package.json +3 -2
  709. package/.next/standalone/.next/static/chunks/246-28370f424ce95be6.js +0 -1
  710. package/.next/standalone/.next/static/chunks/642-d84ad067810dd35b.js +0 -1
  711. package/.next/standalone/.next/static/chunks/app/(dashboard)/integrations/page-d62f7774ba0ed3ab.js +0 -1
  712. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[projectId]/page-0d320c1bd8d89d9c.js +0 -1
  713. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/page-5f4191feafff095a.js +0 -1
  714. package/.next/standalone/.next/static/chunks/app/api/e2e/route-234cc6154c5cd194.js +0 -1
  715. package/.next/standalone/.next/static/chunks/app/api/generate/route-234cc6154c5cd194.js +0 -1
  716. package/.next/standalone/.next/static/chunks/app/api/llm/encrypt/route-234cc6154c5cd194.js +0 -1
  717. package/.next/standalone/.next/static/chunks/app/api/llm/test/route-234cc6154c5cd194.js +0 -1
  718. package/.next/standalone/.next/static/chunks/app/api/refine-notes/route-234cc6154c5cd194.js +0 -1
  719. package/.next/standalone/.next/static/chunks/app/api/weather/route-234cc6154c5cd194.js +0 -1
  720. package/.next/standalone/.next/static/chunks/app/page-dd12a450edb4a44d.js +0 -1
  721. package/.next/standalone/.next/static/css/d31bdcc43c2da03c.css +0 -3
  722. package/.next/standalone/.next/static/pu5ThH8RrsP9e4dTXjYwA/_buildManifest.js +0 -1
  723. package/.next/standalone/node_modules/buffer-from/index.js +0 -72
  724. package/.next/standalone/node_modules/buffer-from/package.json +0 -19
  725. package/.next/standalone/node_modules/source-map/lib/array-set.js +0 -121
  726. package/.next/standalone/node_modules/source-map/lib/base64-vlq.js +0 -140
  727. package/.next/standalone/node_modules/source-map/lib/base64.js +0 -67
  728. package/.next/standalone/node_modules/source-map/lib/binary-search.js +0 -111
  729. package/.next/standalone/node_modules/source-map/lib/mapping-list.js +0 -79
  730. package/.next/standalone/node_modules/source-map/lib/quick-sort.js +0 -114
  731. package/.next/standalone/node_modules/source-map/lib/source-map-consumer.js +0 -1145
  732. package/.next/standalone/node_modules/source-map/lib/source-map-generator.js +0 -425
  733. package/.next/standalone/node_modules/source-map/lib/source-node.js +0 -413
  734. package/.next/standalone/node_modules/source-map/lib/util.js +0 -488
  735. package/.next/standalone/node_modules/source-map/package.json +0 -73
  736. package/.next/standalone/node_modules/source-map/source-map.js +0 -8
  737. package/.next/standalone/node_modules/source-map-support/package.json +0 -31
  738. package/.next/standalone/node_modules/source-map-support/source-map-support.js +0 -625
  739. package/.next/static/chunks/246-28370f424ce95be6.js +0 -1
  740. package/.next/static/chunks/642-d84ad067810dd35b.js +0 -1
  741. package/.next/static/chunks/app/(dashboard)/integrations/page-d62f7774ba0ed3ab.js +0 -1
  742. package/.next/static/chunks/app/(dashboard)/projects/[projectId]/page-0d320c1bd8d89d9c.js +0 -1
  743. package/.next/static/chunks/app/(dashboard)/projects/page-5f4191feafff095a.js +0 -1
  744. package/.next/static/chunks/app/api/e2e/route-234cc6154c5cd194.js +0 -1
  745. package/.next/static/chunks/app/api/generate/route-234cc6154c5cd194.js +0 -1
  746. package/.next/static/chunks/app/api/llm/encrypt/route-234cc6154c5cd194.js +0 -1
  747. package/.next/static/chunks/app/api/llm/test/route-234cc6154c5cd194.js +0 -1
  748. package/.next/static/chunks/app/api/refine-notes/route-234cc6154c5cd194.js +0 -1
  749. package/.next/static/chunks/app/api/weather/route-234cc6154c5cd194.js +0 -1
  750. package/.next/static/chunks/app/page-dd12a450edb4a44d.js +0 -1
  751. package/.next/static/css/d31bdcc43c2da03c.css +0 -3
  752. package/.next/static/pu5ThH8RrsP9e4dTXjYwA/_buildManifest.js +0 -1
  753. /package/.next/standalone/.next/static/{pu5ThH8RrsP9e4dTXjYwA → BI7koHWCC15MOwsCfxo2O}/_ssgManifest.js +0 -0
  754. /package/.next/static/{pu5ThH8RrsP9e4dTXjYwA → BI7koHWCC15MOwsCfxo2O}/_ssgManifest.js +0 -0
@@ -0,0 +1,3 @@
1
+ @font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/ba9851c3c22cd980-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/21350d82a1f187e9-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/c5fe6dc8356a8c31-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/19cfc7226ec3afaa-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/df0a9ae256c0569c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/8e9860b6e62d6359-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/e4af272ccee01ff0-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Inter Fallback;src:local("Arial");ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.00%;size-adjust:107.12%}.__className_f367f3{font-family:Inter,Inter Fallback;font-style:normal}.__variable_f367f3{--font-inter:"Inter","Inter Fallback"}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*
2
+ ! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
3
+ */*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background:40 20% 97%;--foreground:30 5% 12%;--card:0 0% 100%;--card-foreground:30 5% 12%;--popover:0 0% 100%;--popover-foreground:30 5% 12%;--primary:30 5% 12%;--primary-foreground:40 20% 97%;--secondary:40 15% 90%;--secondary-foreground:30 5% 12%;--muted:40 10% 93%;--muted-foreground:30 5% 48%;--accent:30 5% 12%;--accent-foreground:40 20% 97%;--destructive:0 72% 42%;--destructive-foreground:0 0% 98%;--border:30 10% 88%;--input:30 10% 88%;--ring:30 5% 12%;--radius:10px;--chart-1:12 76% 61%;--chart-2:173 58% 39%;--chart-3:197 37% 24%;--chart-4:43 74% 66%;--chart-5:27 87% 67%}.theme{--animate-marquee:marquee var(--duration) infinite linear;--animate-marquee-vertical:marquee-vertical var(--duration) linear infinite;--animate-shimmer-slide:shimmer-slide var(--speed) ease-in-out infinite alternate;--animate-spin-around:spin-around calc(var(--speed) * 2) infinite linear;--animate-gradient:gradient 8s linear infinite;--animate-rippling:rippling var(--duration) ease-out;--animate-ripple:ripple var(--duration,2s) ease calc(var(--i, 0)*.2s) infinite;--animate-shine:shine var(--duration) infinite linear}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-inset-full{inset:-100%}.inset-0{inset:0}.inset-px{inset:1px}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.-left-2{left:-.5rem}.-right-2{right:-.5rem}.-top-2{top:-.5rem}.bottom-0{bottom:0}.bottom-2{bottom:.5rem}.bottom-3{bottom:.75rem}.bottom-4{bottom:1rem}.bottom-full{bottom:100%}.left-0{left:0}.left-0\.5{left:.125rem}.left-1\/2{left:50%}.left-2{left:.5rem}.left-3{left:.75rem}.left-3\.5{left:.875rem}.left-4{left:1rem}.right-0{right:0}.right-0\.5{right:.125rem}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-0\.5{top:.125rem}.top-1\/2{top:50%}.top-11{top:2.75rem}.top-2{top:.5rem}.top-3{top:.75rem}.top-4{top:1rem}.top-full{top:100%}.isolate{isolation:isolate}.-z-20{z-index:-20}.-z-30{z-index:-30}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[300\]{z-index:300}.z-\[350\]{z-index:350}.z-\[400\]{z-index:400}.z-\[410\]{z-index:410}.z-\[450\]{z-index:450}.z-\[500\]{z-index:500}.z-\[600\]{z-index:600}.z-\[60\]{z-index:60}.m-auto{margin:auto}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-\[1\]{aspect-ratio:1}.size-2\.5{width:.625rem;height:.625rem}.size-full{width:100%;height:100%}.h-0{height:0}.h-0\.5{height:.125rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-20{height:5rem}.h-24{height:6rem}.h-28{height:7rem}.h-3{height:.75rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[100cqh\]{height:100cqh}.h-\[54px\]{height:54px}.h-\[70\%\]{height:70%}.h-\[85\%\]{height:85%}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.max-h-0{max-height:0}.max-h-24{max-height:6rem}.max-h-48{max-height:12rem}.max-h-\[150px\]{max-height:150px}.max-h-\[200px\]{max-height:200px}.max-h-\[240px\]{max-height:240px}.max-h-\[300px\]{max-height:300px}.max-h-\[30vh\]{max-height:30vh}.max-h-\[35vh\]{max-height:35vh}.max-h-\[40vh\]{max-height:40vh}.max-h-\[45vh\]{max-height:45vh}.max-h-\[80vh\]{max-height:80vh}.max-h-\[95vh\]{max-height:95vh}.max-h-full{max-height:100%}.min-h-0{min-height:0}.min-h-\[100px\]{min-height:100px}.min-h-\[300px\]{min-height:300px}.w-0{width:0}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-32{width:8rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-\[1px\]{width:1px}.w-\[280px\]{width:280px}.w-\[2px\]{width:2px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-\[140px\]{min-width:140px}.min-w-\[16px\]{min-width:16px}.min-w-\[320px\]{min-width:320px}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-\[120px\]{max-width:120px}.max-w-\[150px\]{max-width:150px}.max-w-\[200px\]{max-width:200px}.max-w-\[280px\]{max-width:280px}.max-w-\[320px\]{max-width:320px}.max-w-\[480px\]{max-width:480px}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-y-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%}.translate-x-0\.5{--tw-translate-x:0.125rem}.translate-x-0\.5,.translate-x-12{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-12{--tw-translate-x:3rem}.translate-y-\[calc\(-50\%-2px\)\]{--tw-translate-y:calc(-50% - 2px)}.rotate-0,.translate-y-\[calc\(-50\%-2px\)\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-0{--tw-rotate:0deg}.rotate-45{--tw-rotate:45deg}.rotate-45,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform-gpu{transform:translate3d(var(--tw-translate-x),var(--tw-translate-y),0) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-col-resize{cursor:col-resize}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.select-none{user-select:none}.resize-none{resize:none}.resize{resize:both}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-10{gap:2.5rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[10px\]{border-radius:10px}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.rounded-t-full{border-top-left-radius:9999px;border-top-right-radius:9999px}.rounded-t-md{border-top-left-radius:calc(var(--radius) - 2px);border-top-right-radius:calc(var(--radius) - 2px)}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-gray-400\/30{border-color:rgb(156 163 175/.3)}.border-transparent{border-color:transparent}.border-white\/10{border-color:rgb(255 255 255/.1)}.bg-background{background-color:hsl(var(--background))}.bg-border{background-color:hsl(var(--border))}.bg-foreground{background-color:hsl(var(--foreground))}.bg-foreground\/25{background-color:hsl(var(--foreground)/.25)}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.bg-primary{background-color:hsl(var(--primary))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-white\/10{background-color:rgb(255 255 255/.1)}.bg-white\/20{background-color:rgb(255 255 255/.2)}.bg-clip-text{background-clip:text}.fill-foreground{fill:hsl(var(--foreground))}.fill-gray-300\/30{fill:rgb(209 213 219/.3)}.fill-gray-400\/30{fill:rgb(156 163 175/.3)}.fill-neutral-200\/20{fill:rgb(229 229 229/.2)}.fill-transparent{fill:transparent}.stroke-gray-400\/30{stroke:rgb(156 163 175/.3)}.stroke-2{stroke-width:2}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[2px\]{padding:2px}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pl-10{padding-left:2.5rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-7{padding-top:1.75rem}.pt-\[15vh\]{padding-top:15vh}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-bottom{vertical-align:bottom}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-6xl{font-size:3.75rem;line-height:1}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[40pt\]{font-size:40pt}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-\[100\%\]{line-height:100%}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-background{color:hsl(var(--background))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.text-inherit{color:inherit}.text-neutral-300\/60{color:rgb(212 212 212/.6)}.text-neutral-400\/20{color:rgb(163 163 163/.2)}.text-neutral-400\/80{color:rgb(163 163 163/.8)}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-transparent{color:transparent}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-white\/60{color:rgb(255 255 255/.6)}.text-white\/70{color:rgb(255 255 255/.7)}.underline{text-decoration-line:underline}.placeholder-white\/50::placeholder{color:rgb(255 255 255/.5)}.accent-\[var\(--accent\)\]{accent-color:var(--accent)}.accent-current{accent-color:currentColor}.opacity-0{opacity:0}.opacity-10{opacity:.1}.opacity-15{opacity:.15}.opacity-20{opacity:.2}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-80{opacity:.8}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-\[inset_0_-8px_10px_\#ffffff1f\]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[inset_0_-8px_10px_\#ffffff1f\]{--tw-shadow:inset 0 -8px 10px #ffffff1f;--tw-shadow-colored:inset 0 -8px 10px var(--tw-shadow-color)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgb(0 0 0/0.1),0 4px 6px -4px rgb(0 0 0/0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgb(0 0 0/0.1),0 8px 10px -6px rgb(0 0 0/0.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.blur{--tw-blur:blur(8px)}.blur,.blur-\[2px\]{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[2px\]{--tw-blur:blur(2px)}.drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px rgb(0 0 0/0.1)) drop-shadow(0 1px 1px rgb(0 0 0/0.06))}.drop-shadow,.drop-shadow-sm{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow-sm{--tw-drop-shadow:drop-shadow(0 1px 1px rgb(0 0 0/0.05))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.will-change-\[background-position\]{will-change:background-position}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.duration-100{animation-duration:.1s}.duration-150{animation-duration:.15s}.duration-200{animation-duration:.2s}.duration-300{animation-duration:.3s}.duration-500{animation-duration:.5s}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{animation-timing-function:cubic-bezier(0,0,.2,1)}.running{animation-play-state:running}.\[--duration\:40s\]{--duration:40s}.\[--gap\:1rem\]{--gap:1rem}.\[animation-direction\:reverse\]{animation-direction:reverse}.\[background\:conic-gradient\(from_calc\(270deg-\(var\(--spread\)\*0\.5\)\)\2c transparent_0\2c var\(--shimmer-color\)_var\(--spread\)\2c transparent_var\(--spread\)\)\]{background:conic-gradient(from calc(270deg - (var(--spread) * .5)),transparent 0,var(--shimmer-color) var(--spread),transparent var(--spread))}.\[background\:var\(--bg\)\]{background:var(--bg)}.\[border-radius\:var\(--radius\)\]{border-radius:var(--radius)}.\[mask\:none\]{mask:none}.\[translate\:0_0\]{translate:0 0}:root{--bg-primary:#F7F5F1;--bg-secondary:#EDEAE3;--bg-highlight:#F0EDD8;--bg-card:#FFFFFF;--text-primary:#1A1A1A;--text-secondary:#7A7872;--text-tertiary:#A8A49E;--accent:#1A1A1A;--border:rgba(0,0,0,0.08);--border-hover:rgba(0,0,0,0.16);--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-pill:99px;--status-pass-bg:#E8F0E0;--status-pass-text:#3B6011;--status-fail-bg:#FCEAEA;--status-fail-text:#8B1A1A;--status-skip-bg:#FDF3DC;--status-skip-text:#7A5000;--status-untested-bg:#EFEFED;--status-untested-text:#5A5A56;--status-blocked-bg:#E8E0F0;--status-blocked-text:#5B1A8B;--shadow-sm:0 1px 4px rgba(0,0,0,0.06);--shadow-md:0 4px 16px rgba(0,0,0,0.08);--shadow-lg:0 8px 30px rgba(0,0,0,0.12);--shadow-xl:0 12px 40px rgba(0,0,0,0.16)}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%}body{color:var(--text-primary);background:var(--bg-primary);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{font-weight:500}::selection{background:var(--bg-highlight);color:var(--text-primary)}button,input,select,textarea{font-family:inherit;font-size:inherit}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-hover);border-radius:var(--radius-pill)}::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%)}}@keyframes borderShine{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}@keyframes shimmer{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}@keyframes toastSlideIn{0%{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}@keyframes beamFlow{0%{opacity:.3}50%{opacity:.6}to{opacity:.3}}@keyframes shimmerText{0%{background-position:100% 50%}to{background-position:-100% 50%}}@keyframes dockShimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@theme inline{@keyframes marquee{0%{transform:translateX(0)}to{transform:translateX(calc(-100% - var(--gap)))}}@keyframes marquee-vertical{0%{transform:translateY(0)}to{transform:translateY(calc(-100% - var(--gap)))}}@keyframes shimmer-slide{to{transform:translate(calc(100cqw - 100%))}}@keyframes spin-around{0%{transform:translateZ(0) rotate(0)}15%,35%{transform:translateZ(0) rotate(90deg)}65%,85%{transform:translateZ(0) rotate(270deg)}to{transform:translateZ(0) rotate(1turn)}}@keyframes gradient{to{background-position:var(--bg-size,300%) 0}}@keyframes rippling{0%{opacity:1}to{transform:scale(2);opacity:0}}@keyframes ripple{0%,to{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-50%) scale(.9)}}@keyframes shine{0%{background-position:0 0}50%{background-position:100% 100%}to{background-position:0 0}}}.last\:border-b-0:last-child{border-bottom-width:0}.hover\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05}.hover\:scale-105:hover,.hover\:scale-110:hover{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1}.hover\:border-\[var\(--border-hover\)\]:hover{border-color:var(--border-hover)}.hover\:border-\[var\(--status-fail-text\)\]:hover{border-color:var(--status-fail-text)}.hover\:bg-\[var\(--accent\)\]:hover{background-color:var(--accent)}.hover\:bg-\[var\(--bg-card\)\]:hover{background-color:var(--bg-card)}.hover\:bg-\[var\(--bg-secondary\)\]:hover{background-color:var(--bg-secondary)}.hover\:bg-\[var\(--status-fail-bg\)\]:hover{background-color:var(--status-fail-bg)}.hover\:bg-black\/5:hover{background-color:rgb(0 0 0/.05)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:opacity-70:hover{opacity:.7}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px rgb(0 0 0/0.1),0 4px 6px -4px rgb(0 0 0/0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.hover\:shadow-lg:hover,.hover\:shadow-md:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px rgb(0 0 0/0.1),0 2px 4px -2px rgb(0 0 0/0.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.focus\:border-\[var\(--accent\)\]:focus{border-color:var(--accent)}.focus\:border-\[var\(--border-hover\)\]:focus{border-color:var(--border-hover)}.active\:translate-y-px:active{--tw-translate-y:1px}.active\:scale-\[0\.98\]:active,.active\:translate-y-px:active{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:scale-\[0\.98\]:active{--tw-scale-x:0.98;--tw-scale-y:0.98}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-20:disabled{opacity:.2}.disabled\:opacity-25:disabled{opacity:.25}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:-translate-x-5{--tw-translate-x:-1.25rem}.group:hover .group-hover\:-translate-x-5,.group:hover .group-hover\:translate-x-12{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:translate-x-12{--tw-translate-x:3rem}.group\/duck:hover .group-hover\/duck\:scale-110{--tw-scale-x:1.1;--tw-scale-y:1.1}.group:hover .group-hover\:scale-\[100\.8\],.group\/duck:hover .group-hover\/duck\:scale-110{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:scale-\[100\.8\]{--tw-scale-x:100.8;--tw-scale-y:100.8}.group\/col:hover .group-hover\/col\:opacity-100{opacity:1}.group\/duck:hover .group-hover\/duck\:opacity-\[0\.15\]{opacity:.15}.group\/nathan:hover .group-hover\/nathan\:opacity-100,.group\/tested:hover .group-hover\/tested\:opacity-100{opacity:1}.group:hover .group-hover\:opacity-0{opacity:0}.group:hover .group-hover\:opacity-100{opacity:1}.group:hover .group-hover\:shadow-\[inset_0_-6px_10px_\#ffffff3f\]{--tw-shadow:inset 0 -6px 10px #ffffff3f;--tw-shadow-colored:inset 0 -6px 10px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.group:hover .group-hover\:\[animation-play-state\:paused\]{animation-play-state:paused}.group:active .group-active\:shadow-\[inset_0_-10px_10px_\#ffffff3f\]{--tw-shadow:inset 0 -10px 10px #ffffff3f;--tw-shadow-colored:inset 0 -10px 10px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.data-\[side\=bottom\]\:top-1[data-side=bottom]{top:.25rem}.data-\[side\=inline-end\]\:-left-1[data-side=inline-end]{left:-.25rem}.data-\[side\=inline-start\]\:-right-1[data-side=inline-start],.data-\[side\=left\]\:-right-1[data-side=left]{right:-.25rem}.data-\[side\=right\]\:-left-1[data-side=right]{left:-.25rem}.data-\[side\=top\]\:-bottom-2\.5[data-side=top]{bottom:-.625rem}.data-\[side\=inline-end\]\:-translate-y-1\/2[data-side=inline-end],.data-\[side\=inline-start\]\:-translate-y-1\/2[data-side=inline-start],.data-\[side\=left\]\:-translate-y-1\/2[data-side=left],.data-\[side\=right\]\:-translate-y-1\/2[data-side=right]{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=delayed-open\]\:animate-in[data-state=delayed-open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\[state\=delayed-open\]\:fade-in-0[data-state=delayed-open]{--tw-enter-opacity:0}.data-\[state\=delayed-open\]\:zoom-in-95[data-state=delayed-open]{--tw-enter-scale:.95}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-0.5rem}.data-\[side\=inline-end\]\:slide-in-from-left-2[data-side=inline-end]{--tw-enter-translate-x:-0.5rem}.data-\[side\=inline-start\]\:slide-in-from-right-2[data-side=inline-start],.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:0.5rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-0.5rem}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:0.5rem}.dark\:text-neutral-600\/40:is(.dark *){color:rgb(82 82 82/.4)}.dark\:text-white:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}@media (min-width:640px){.sm\:block{display:block}.sm\:inline{display:inline}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width:768px){.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-24{height:6rem}.md\:h-8{height:2rem}.md\:max-h-\[200px\]{max-height:200px}.md\:max-h-\[92vh\]{max-height:92vh}.md\:max-h-none{max-height:none}.md\:w-1\.5{width:.375rem}.md\:w-12{width:3rem}.md\:w-64{width:16rem}.md\:w-80{width:20rem}.md\:max-w-none{max-width:none}.md\:flex-\[0_0_28\%\]{flex:0 0 28%}.md\:flex-row{flex-direction:row}.md\:gap-4{gap:1rem}.md\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.md\:border-b-0{border-bottom-width:0}.md\:border-l{border-left-width:1px}.md\:border-r{border-right-width:1px}.md\:border-t-0{border-top-width:0}.md\:p-3{padding:.75rem}.md\:p-4{padding:1rem}.md\:px-4{padding-left:1rem;padding-right:1rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width:1024px){.lg\:flex{display:flex}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:text-\[6rem\]{font-size:6rem}}@media (min-width:1280px){.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}
package/README.md CHANGED
@@ -54,11 +54,12 @@ npm install
54
54
  npm run dev
55
55
  ```
56
56
 
57
- Open [http://localhost:3000](http://localhost:3000). Enter any name containing **"ayu"** to login.
57
+ Open [http://localhost:3000](http://localhost:3000). Enter any name to login.
58
58
 
59
59
  ### AI Setup
60
60
 
61
- <img width="1427" height="1024" alt="image" src="https://github.com/user-attachments/assets/26840fcf-35ee-4bed-b666-d882064cbbb7" />
61
+ <img width="1425" height="1076" alt="Screenshot 2026-06-28 143556" src="https://github.com/user-attachments/assets/b475e08d-0299-461a-afd1-bf96b1cfc38a" />
62
+
62
63
 
63
64
  1. Go to **Integrations** → choose a provider
64
65
  2. Enter API key → click **Test** → click **Connect**
@@ -75,9 +76,9 @@ Open [http://localhost:3000](http://localhost:3000). Enter any name containing *
75
76
 
76
77
  ### Step 1: Login
77
78
 
78
- Open the app. Type your name (make sure it contains **"ayu"** ). You're in.
79
+ Open the app. Type your name. You're in.
79
80
 
80
- <img width="400" height="248" alt="cursorful-video-1780634327507" src="https://github.com/user-attachments/assets/fe2077c5-7f13-4218-b938-a76c10d32e87" />
81
+ <img width="540" height="336" alt="cursorful-video-1780634327507 (1)" src="https://github.com/user-attachments/assets/68276b5e-2e66-4806-948b-5abbcf5dfe20" />
81
82
 
82
83
  ### Step 2: Create a Project
83
84
 
@@ -95,8 +96,7 @@ Click into the project. Start adding nodes to map out the user flow:
95
96
 
96
97
  Drag nodes around. Right-click to add children. This is the fun part — enjoy it while it lasts.
97
98
 
98
- <img width="400" height="238" alt="cursorful-video-1780634587900" src="https://github.com/user-attachments/assets/be2aa7c5-792e-4560-a2a1-04e75b00c327" />
99
-
99
+ <img width="540" height="512" alt="Recording 2026-06-28 143736" src="https://github.com/user-attachments/assets/1c33c626-4733-433a-86c3-1a06a742619f" />
100
100
 
101
101
  ### Step 4: Generate Test Cases
102
102
 
@@ -104,8 +104,7 @@ Click on a node (say, "Checkout"). Hit the **Generate** button in the dock. Past
104
104
 
105
105
  Watch the cat pictures while AI does the heavy lifting. In seconds, you have a full set of test cases.
106
106
 
107
- <img width="400" height="240" alt="cursorful-video-1780634832516" src="https://github.com/user-attachments/assets/8e56ad2a-445e-4dc0-870e-d3d7b55a94bd" />
108
-
107
+ <img width="540" height="324" alt="cursorful-video-1780634832516 (1)" src="https://github.com/user-attachments/assets/5e2b0cfa-e08d-4390-b467-f64e00356f4a" />
109
108
 
110
109
  ### Step 5: Run E2E Tests
111
110
 
@@ -113,8 +112,6 @@ Click on a node. Hit the **E2E** button in the dock. Pick your browser — Chrom
113
112
 
114
113
  The AI takes over: clicking buttons, filling forms, navigating pages — all while you watch a live browser preview. If a step breaks, it tries to fix itself. Because debugging on a Friday afternoon is nobody's idea of fun.
115
114
 
116
- <img width="400" height="240" alt="E2E Test Runner" src="https://github.com/user-attachments/assets/placeholder-e2e" />
117
-
118
115
  ### Step 6: Switch AI Provider
119
116
 
120
117
  Go to **Integrations**. Pick from 6 providers:
@@ -132,25 +129,41 @@ Your API keys are encrypted with AES-256-GCM before hitting localStorage. Securi
132
129
 
133
130
  Go through each test case. Run them. Mark them as **Pass**, **Fail**, or **Skip**. Add notes for the ones that failed (blame the FE team, obviously).
134
131
 
135
- <img width="2217" height="1004" alt="image" src="https://github.com/user-attachments/assets/36fe61af-7ce7-4e21-a4e0-cb89e0f0d42f" />
132
+ <img width="540" height="270" alt="Recording 2026-06-28 144018" src="https://github.com/user-attachments/assets/6a115413-c7e3-4df9-8d49-d84cc9163117" />
133
+
136
134
 
137
135
  ### Step 8: Export & Share
138
136
 
139
137
  Click the export button. Download as **Markdown** for the wiki or **JSON** for the automation pipeline.
140
138
 
141
- <img width="585" height="446" alt="image" src="https://github.com/user-attachments/assets/abb7c331-a006-4617-af7a-6c8d9449b3c9" />
142
-
143
- ### Step 9: Logout (If You Must)
139
+ <img width="540" height="212" alt="Recording 2026-06-28 143828" src="https://github.com/user-attachments/assets/418ddba8-651f-45da-9f9a-eee11b2bca0a" />
144
140
 
145
- Click the logout button. A friendly modal asks for Donation. because the developer would appreciate a coffee. You can either bail or buy them one.
141
+ <img width="589" height="715" alt="Screenshot 2026-06-28 143925" src="https://github.com/user-attachments/assets/d0aa0b85-03c1-40d9-94d9-34d8278eb14c" />
146
142
 
143
+ \
147
144
  ---
148
145
 
149
146
  ## Tech Stack
150
147
 
151
- Next.js 14 · TypeScript · Tailwind CSS · Motion · Lottie · Playwright · `@google/generative-ai` · `openai` · `@ai-sdk/groq` · OpenRouter · AES-256-GCM encryption
148
+ Next.js 14 · TypeScript · Tailwind CSS · Motion · Lottie · Playwright · `@google/generative-ai` · `openai` · `@ai-sdk/groq` · OpenRouter · AES-256-GCM encryption · `@modelcontextprotocol/sdk`
149
+
150
+ Project/test-case data is kept in browser localStorage and mirrored to a local JSON file (`.ayu-data/state.json`) so the MCP server below can read and write it too. No external database.
151
+
152
+ ## MCP Server (Claude Code integration)
153
+
154
+ While running the app locally (`npm run dev` or `test-lah`), it also exposes an MCP endpoint at `/api/mcp` so [Claude Code](https://claude.com/product/claude-code) can read and write your projects, nodes, and test cases directly.
155
+
156
+ ```bash
157
+ claude mcp add --transport http ayu-tools http://localhost:3000/api/mcp
158
+ ```
159
+
160
+ Available tools: `list_projects`, `get_project`, `list_nodes`, `get_node`, `add_test_case`, `update_test_case`, `delete_test_case`, and `generate_test_cases` (optional — calls a pay-per-token LLM provider with a caller-supplied API key).
161
+
162
+ To generate test cases using your own Claude subscription rather than a pay-per-token API key, just ask Claude Code directly in a session connected to this server — e.g. "read node X via MCP and add relevant test cases" — Claude Code does the reasoning itself and writes results back with `add_test_case`.
163
+
164
+ There's also an in-app **"Claude (Local CLI)"** option in the provider dropdown (Integrations page / Generate modal) that shells out to your locally installed, logged-in `claude` CLI — no API key needed in the app for that path, as long as `claude` is installed and authenticated on the machine running the server.
152
165
 
153
- Data stored in browser localStorage. No backend required.
166
+ > **Note:** `/api/mcp` and `/api/state` have no authentication, matching the rest of the app — intended for local/self-hosted use. Don't expose this server beyond localhost without adding your own auth layer in front of it.
154
167
 
155
168
  ## Brand
156
169
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "test-lah",
3
- "version": "1.0.9",
3
+ "version": "1.0.10",
4
4
  "description": "QA Test Case Management — AI-powered test case generation and management",
5
5
  "private": false,
6
6
  "bin": {
@@ -23,7 +23,7 @@
23
23
  "postinstall": "node scripts/postinstall.js",
24
24
  "prepare:publish": "npm run build && node scripts/prepare-publish.js",
25
25
  "publish:github": "npm run prepare:publish && set -a && . ./.env.local && set +a && npm version patch --no-git-tag-version && npm publish --registry=https://npm.pkg.github.com",
26
- "publish:npm": "npm run prepare:publish && npm pkg set name=test-lah && npm version patch --no-git-tag-version && npm publish --registry=https://registry.npmjs.org --otp=$OTP && npm pkg set name=@niamhramadhaan/test-lah"
26
+ "publish:npm": "npm run prepare:publish && npm pkg set name=test-lah && set -a && . ./.env.local && set +a && npm config set //registry.npmjs.org/:_authToken=$NPM_TOKEN && npm version patch --no-git-tag-version && npm publish --registry=https://registry.npmjs.org --otp=$OTP && npm pkg set name=@niamhramadhaan/test-lah"
27
27
  },
28
28
  "dependencies": {
29
29
  "@ai-sdk/anthropic": "^3.0.81",
@@ -32,6 +32,7 @@
32
32
  "@ai-sdk/openai": "^3.0.68",
33
33
  "@base-ui/react": "^1.5.0",
34
34
  "@lottiefiles/dotlottie-web": "^0.74.0",
35
+ "@modelcontextprotocol/sdk": "^1.29.0",
35
36
  "@playwright/test": "^1.60.0",
36
37
  "ai": "^6.0.198",
37
38
  "canvas-confetti": "^1.9.4",
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[246],{7065:(e,t,r)=>{r.d(t,{q:()=>n,s:()=>a});var l=r(5155),s=r(2115);function a(){let[e,t]=(0,s.useState)(null),r=(0,s.useCallback)((e,r)=>new Promise(l=>{t({type:"alert",title:e,message:r,resolve:()=>{t(null),l()}})}),[]);return{dialog:e,alert:r,confirm:(0,s.useCallback)((e,r)=>new Promise(l=>{t({type:"confirm",title:e,message:r,resolve:e=>{t(null),l(!0===e)}})}),[]),prompt:(0,s.useCallback)(function(e,r){let l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return new Promise(s=>{t({type:"prompt",title:e,message:r,defaultValue:l,resolve:e=>{t(null),s("string"==typeof e?e:null)}})})},[])}}function n(e){let{dialog:t}=e,[r,a]=(0,s.useState)(""),n=(0,s.useRef)(null);return((0,s.useEffect)(()=>{if((null==t?void 0:t.type)==="prompt"){var e;a(null!=(e=t.defaultValue)?e:""),setTimeout(()=>{var e;return null==(e=n.current)?void 0:e.focus()},50)}},[t]),(0,s.useEffect)(()=>{if(!t)return;let e=e=>{"Escape"===e.key&&t.resolve("prompt"===t.type&&null),"Enter"===e.key&&"prompt"!==t.type&&t.resolve("confirm"===t.type||null)};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[t]),t)?(0,l.jsx)("div",{className:"fixed inset-0 z-[400] flex items-center justify-center",style:{backgroundColor:"rgba(0,0,0,0.3)",animation:"fadeIn 150ms ease-out"},onClick:()=>t.resolve("prompt"===t.type&&null),children:(0,l.jsx)("div",{className:"relative w-full max-w-sm mx-4",onClick:e=>e.stopPropagation(),children:(0,l.jsx)("div",{className:"p-[2px] rounded-xl overflow-hidden",style:{background:"linear-gradient(135deg, #9E7AFF 0%, #FE8BBB 50%, #9E7AFF 100%)",backgroundSize:"200% 200%",animation:"borderShine 3s linear infinite"},children:(0,l.jsxs)("div",{className:"rounded-[10px] p-5",style:{backgroundColor:"var(--bg-card)",boxShadow:"var(--shadow-xl)"},children:[(0,l.jsx)("h3",{className:"text-sm font-semibold mb-2",style:{color:"var(--text-primary)"},children:t.title}),(0,l.jsx)("p",{className:"text-xs mb-4",style:{color:"var(--text-secondary)"},children:t.message}),"prompt"===t.type&&(0,l.jsx)("input",{ref:n,value:r,onChange:e=>a(e.target.value),onKeyDown:e=>{"Enter"===e.key&&t.resolve(r.trim()||null)},className:"w-full px-3 py-2 text-sm rounded-lg border outline-none transition-colors focus:border-[var(--accent)] mb-4",style:{borderColor:"var(--border)",backgroundColor:"var(--bg-secondary)",color:"var(--text-primary)"},placeholder:"Enter value..."}),(0,l.jsxs)("div",{className:"flex gap-2 justify-end",children:["alert"!==t.type&&(0,l.jsx)("button",{onClick:()=>t.resolve("prompt"===t.type&&null),className:"px-3 py-1.5 text-xs font-medium rounded-lg border transition-colors hover:bg-[var(--bg-secondary)]",style:{borderColor:"var(--border)",color:"var(--text-secondary)"},children:"Cancel"}),(0,l.jsx)("button",{onClick:()=>{"confirm"===t.type?t.resolve(!0):"prompt"===t.type?t.resolve(r.trim()||null):t.resolve(null)},className:"px-3 py-1.5 text-xs font-medium rounded-lg transition-opacity hover:opacity-80",style:{backgroundColor:"var(--accent)",color:"var(--bg-primary)"},children:"confirm"===t.type?"Confirm":"OK"})]})]})})})}):null}},7246:(e,t,r)=>{r.d(t,{q:()=>f,M:()=>C});var l=r(5155),s=r(2115);function a(e,t){let[r,l]=(0,s.useState)(()=>(function(e,t){try{let r=localStorage.getItem(e);return r?JSON.parse(r):t}catch(e){return t}})(e,t)),[a,n]=(0,s.useState)(null),o=(0,s.useRef)(null);return(0,s.useEffect)(()=>{let t=t=>{if(t.key===e&&t.newValue)try{l(JSON.parse(t.newValue))}catch(e){}};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)},[e]),[r,(0,s.useCallback)(t=>{l(r=>{let l=t instanceof Function?t(r):t;return o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{try{localStorage.setItem(e,JSON.stringify(l))}catch(e){}n(new Date().toISOString())},300),l})},[e]),a]}var n=r(8566);let o={projects:{},activeProjectId:null,selectedNodeId:null},i={name:"",bannerColor:"#64B5F6",avatarUrl:"",role:"QA Engineer"};function c(e){try{localStorage.setItem("qa-last-test-activity",new Date().toISOString());let t=localStorage.getItem("qa-project-activity"),r=t?JSON.parse(t):{};r[e]=new Date().toISOString(),localStorage.setItem("qa-project-activity",JSON.stringify(r))}catch(e){}}let u={baseUrl:"http://localhost:3000",browser:"chromium",headless:!0,timeout:3e4};var d=r(7065);let p=(0,s.createContext)(null);function f(e){let{children:t}=e,r=function(){var e;let[t,r,l]=a("qa-dashboard",o),i=(0,s.useCallback)((e,t)=>{let l=crypto.randomUUID(),s={id:l,name:e,type:t||"",notes:"",createdAt:new Date().toISOString(),flows:[],testCases:{},columnConfig:[...n._X],columnConfigs:{},edges:[],userProfile:{name:"",bannerColor:"#64B5F6"},nodeCounter:0,tcCounter:{}};return r(e=>({...e,projects:{...e.projects,[l]:s},activeProjectId:l,selectedNodeId:null})),l},[r]),c=(0,s.useCallback)(e=>{r(t=>{var r;let{[e]:l,...s}=t.projects,a=Object.keys(s);return{...t,projects:s,activeProjectId:t.activeProjectId===e?null!=(r=a[0])?r:null:t.activeProjectId,selectedNodeId:t.activeProjectId===e?null:t.selectedNodeId}})},[r]),u=(0,s.useCallback)(e=>{r(t=>({...t,activeProjectId:e,selectedNodeId:null}))},[r]),d=(0,s.useCallback)((e,t)=>{r(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],name:t}}}))},[r]),p=(0,s.useCallback)(e=>{r(t=>{let r=t.projects[e];if(!r)return t;let l=crypto.randomUUID(),s=new Date().toISOString(),a={...JSON.parse(JSON.stringify(r)),id:l,name:"".concat(r.name," (Copy)"),createdAt:s};return{...t,projects:{...t.projects,[l]:a},activeProjectId:l,selectedNodeId:null}})},[r]),f=(0,s.useCallback)(e=>{try{let t=JSON.parse(e);if(!t||"object"!=typeof t)return{ok:!1,error:"Invalid JSON"};if(!t.name||!t.flows)return{ok:!1,error:"Missing required fields (name, flows)"};let l=crypto.randomUUID(),s={id:l,name:t.name,createdAt:t.createdAt||new Date().toISOString(),flows:Array.isArray(t.flows)?t.flows:[],testCases:t.testCases&&"object"==typeof t.testCases?t.testCases:{},columnConfig:Array.isArray(t.columnConfig)?t.columnConfig:[...n._X],columnConfigs:t.columnConfigs&&"object"==typeof t.columnConfigs?t.columnConfigs:{},edges:Array.isArray(t.edges)?t.edges:[],userProfile:t.userProfile&&"object"==typeof t.userProfile?t.userProfile:{name:"",bannerColor:"#64B5F6"},nodeCounter:"number"==typeof t.nodeCounter?t.nodeCounter:0,tcCounter:t.tcCounter&&"object"==typeof t.tcCounter?t.tcCounter:{}};return r(e=>({...e,projects:{...e.projects,[l]:s},activeProjectId:l,selectedNodeId:null})),{ok:!0}}catch(e){return{ok:!1,error:"Failed to parse project file"}}},[r]),C=(0,s.useCallback)(e=>{r(t=>({...t,selectedNodeId:e}))},[r]),m=(0,s.useCallback)((e,t)=>{r(r=>({...r,projects:{...r.projects,[e]:t(r.projects[e])}}))},[r]),v=t.activeProjectId&&null!=(e=t.projects[t.activeProjectId])?e:null;return{state:t,setState:r,projects:t.projects,activeProject:v,activeProjectId:t.activeProjectId,selectedNodeId:t.selectedNodeId,createProject:i,deleteProject:c,duplicateProject:p,importProject:f,switchProject:u,renameProject:d,setSelectedNodeId:C,updateProject:m,lastSaved:l}}(),f=function(){let[e,t]=a("qa-profile",i),r=e.name.split(" ").map(e=>e[0]).filter(Boolean).slice(0,2).join("").toUpperCase()||"?";return{profile:e,setName:e=>t(t=>({...t,name:e})),setBannerColor:e=>t(t=>({...t,bannerColor:e})),setAvatarUrl:e=>t(t=>({...t,avatarUrl:e})),setRole:e=>t(t=>({...t,role:e})),initials:r}}(),C=function(e,t){let[r,l]=(0,s.useState)([]),[a,n]=(0,s.useState)(-1),o=(0,s.useRef)(!1),i=(0,s.useCallback)(t=>{if(!e||o.current){o.current=!1;return}l(r=>{let l=[...r.slice(0,a+1),{label:t,projectSnapshot:JSON.parse(JSON.stringify(e))}];return l.length>50&&l.shift(),l}),n(e=>Math.min(e+1,49))},[e,a]),c=(0,s.useCallback)(()=>{if(a<0||!e)return;let l=r[a];l&&(o.current=!0,t(e.id,()=>l.projectSnapshot),n(e=>e-1))},[r,a,e,t]),u=(0,s.useCallback)(()=>{if(a>=r.length-1||!e)return;let l=r[a+1];l&&(o.current=!0,t(e.id,()=>l.projectSnapshot),n(e=>e+1))},[r,a,e,t]),d=a>=0;return{pushState:i,undo:c,redo:u,canUndo:d,canRedo:a<r.length-1,recentActions:r.slice(-10).map(e=>e.label).reverse()}}(r.activeProject,r.updateProject),m=function(e,t,r,l){var a,o;let i=null!=(a=null==e?void 0:e.flows)?a:[],c=null!=(o=null==e?void 0:e.edges)?o:[],u=(0,s.useCallback)((r,s,a,o)=>{if(!e)return null;let i=crypto.randomUUID(),c="";return t(e.id,e=>{var t;let l=(null!=(t=e.nodeCounter)?t:0)+1,u=(s||"").trim().replace(/[^a-zA-Z0-9\s]/g,"").split(/\s+/).filter(e=>e.length>0),d="";d=u.length>=2?u[0].charAt(0).toUpperCase()+u[u.length-1].charAt(0).toUpperCase():1===u.length&&u[0].length>=2?u[0].charAt(0).toUpperCase()+u[0].charAt(u[0].length-1).toUpperCase():"N";let p=e.flows.map(e=>e.code),f=d,C=1;for(;p.includes(f);)f=d+String(++C);c=f;let m=(0,n.IU)(i,c,s,r);a&&(m.position=a),o&&(m.direction=o);let v=[...e.flows];if(r){let e=v.findIndex(e=>e.id===r);-1!==e&&(v[e]={...v[e],children:[...v[e].children,i]})}return v.push(m),{...e,flows:v,testCases:{...e.testCases,[i]:[]},nodeCounter:l}}),l(i),i},[e,t,l]),d=(0,s.useCallback)(s=>{if(!e)return;let a=new Set,n=t=>{a.add(t);let r=e.flows.find(e=>e.id===t);null==r||r.children.forEach(n)};n(s),t(e.id,e=>{var t;let r=e.flows.filter(e=>!a.has(e.id)).map(e=>({...e,children:e.children.filter(e=>!a.has(e))})),l={...e.testCases};a.forEach(e=>delete l[e]);let s=(null!=(t=e.edges)?t:[]).filter(e=>!a.has(e.fromId)&&!a.has(e.toId));return{...e,flows:r,testCases:l,edges:s}}),a.has(null!=r?r:"")&&l(null)},[e,t,r,l]),p=(0,s.useCallback)(s=>{if(!e||0===s.length)return;let a=new Set,n=t=>{a.add(t);let r=e.flows.find(e=>e.id===t);null==r||r.children.forEach(n)};s.forEach(n),t(e.id,e=>{var t;let r=e.flows.filter(e=>!a.has(e.id)).map(e=>({...e,children:e.children.filter(e=>!a.has(e))})),l={...e.testCases};a.forEach(e=>delete l[e]);let s=(null!=(t=e.edges)?t:[]).filter(e=>!a.has(e.fromId)&&!a.has(e.toId));return{...e,flows:r,testCases:l,edges:s}}),a.has(null!=r?r:"")&&l(null)},[e,t,r,l]),f=(0,s.useCallback)((r,l)=>{e&&t(e.id,e=>({...e,flows:e.flows.map(e=>e.id===r?{...e,label:l}:e)}))},[e,t]),C=(0,s.useCallback)((r,l)=>{e&&t(e.id,e=>({...e,flows:e.flows.map(e=>e.id===r?{...e,...l}:e)}))},[e,t]),m=(0,s.useCallback)(r=>{e&&t(e.id,e=>{let t=e.flows.find(e=>e.id===r);return t&&t.parentId?{...e,flows:e.flows.map(e=>e.id===r?{...e,parentId:null}:e.id===t.parentId?{...e,children:e.children.filter(e=>e!==r)}:e)}:e})},[e,t]),v=(0,s.useCallback)(e=>{l(e)},[l]),g=(0,s.useCallback)((r,l,s)=>{if(!e)return;let a={id:crypto.randomUUID(),fromId:r,toId:l,type:s};t(e.id,e=>{var t;return{...e,edges:[...null!=(t=e.edges)?t:[],a]}})},[e,t]),b=(0,s.useCallback)(r=>{e&&t(e.id,e=>{var t;return{...e,edges:(null!=(t=e.edges)?t:[]).filter(e=>e.id!==r)}})},[e,t]);return{nodes:i,edges:c,selectedNodeId:r,addNode:u,deleteNode:d,deleteNodes:p,unlinkNode:m,renameNode:f,updateNode:C,selectNode:v,addEdge:g,deleteEdge:b,updateEdge:(0,s.useCallback)((r,l)=>{e&&t(e.id,e=>{var t;return{...e,edges:(null!=(t=e.edges)?t:[]).map(e=>e.id===r?{...e,...l}:e)}})},[e,t]),resetLayout:(0,s.useCallback)(()=>{e&&t(e.id,e=>({...e,flows:e.flows.map(e=>({...e,position:null}))}))},[e,t])}}(r.activeProject,r.updateProject,r.selectedNodeId,r.setSelectedNodeId),v=function(e,t,r){var l;let a=r&&e&&null!=(l=e.testCases[r])?l:[],o=function(e){let t=e.length,r=e.filter(e=>"pass"===e.status).length,l=e.filter(e=>"fail"===e.status).length,s=e.filter(e=>"skip"===e.status).length,a=e.filter(e=>"untested"===e.status).length,n=e.filter(e=>"blocked"===e.status).length,o=t-s,i=o>0?Math.round(r/o*100):0;return{total:t,pass:r,fail:l,skip:s,untested:a,blocked:n,passRate:i}}(a),i=(0,s.useCallback)((r,l,s,a)=>{var n,o;if(!e)return;let i=e.flows.find(e=>e.id===r),u=null!=(n=null==i?void 0:i.code)?n:"N000",d=null!=(o=e.testCases[r])?o:[],p="";t(e.id,e=>{var t,n,o;let i={...null!=(t=e.tcCounter)?t:{}},c=(null!=(n=i[r])?n:0)+1;i[r]=c,p="".concat(u,"-TC").concat(String(c).padStart(3,"0"));let f={id:crypto.randomUUID(),code:p,title:l,steps:null!=s?s:"",expected:null!=a?a:"",status:"untested",case_type:"General",notes:"",links:"",order:d.length};return{...e,testCases:{...e.testCases,[r]:[...null!=(o=e.testCases[r])?o:[],f]},tcCounter:i}}),c(e.id)},[e,t]),u=(0,s.useCallback)((r,l,s)=>{e&&(t(e.id,e=>{var t;return{...e,testCases:{...e.testCases,[r]:(null!=(t=e.testCases[r])?t:[]).map(e=>e.id===l?{...e,...s}:e)}}}),c(e.id))},[e,t]),d=(0,s.useCallback)((r,l)=>{e&&t(e.id,e=>{var t;return{...e,testCases:{...e.testCases,[r]:(null!=(t=e.testCases[r])?t:[]).filter(e=>e.id!==l)}}})},[e,t]),p=(0,s.useCallback)((r,l)=>{if(!e||0===l.length)return;let s=new Set(l);t(e.id,e=>{var t;return{...e,testCases:{...e.testCases,[r]:(null!=(t=e.testCases[r])?t:[]).filter(e=>!s.has(e.id))}}})},[e,t]),f=(0,s.useCallback)((r,l,s)=>{if(!e||0===l.length)return;let a=new Set(l);t(e.id,e=>{var t;return{...e,testCases:{...e.testCases,[r]:(null!=(t=e.testCases[r])?t:[]).map(e=>a.has(e.id)?{...e,...s}:e)}}})},[e,t]),C=(0,s.useCallback)((r,l)=>{e&&t(e.id,e=>{var t;let s=new Map((null!=(t=e.testCases[r])?t:[]).map(e=>[e.id,e])),a=l.map((e,t)=>{let r=s.get(e);return r?{...r,order:t}:null}).filter(Boolean);return{...e,testCases:{...e.testCases,[r]:a}}})},[e,t]),m=(0,s.useCallback)((r,l,s)=>{e&&t(e.id,e=>{var t,a;let o={...null!=(t=e.columnConfigs)?t:{}},i=null!=(a=o[r])?a:[...n._X];return o[r]=i.map(e=>e.key===l?{...e,label:s}:e),{...e,columnConfigs:o}})},[e,t]),v=(0,s.useCallback)((r,l)=>{e&&t(e.id,e=>{var t,s;let a={...null!=(t=e.columnConfigs)?t:{}},o=null!=(s=a[r])?s:[...n._X];return a[r]=o.map(e=>e.key===l?{...e,visible:!e.visible}:e),{...e,columnConfigs:a}})},[e,t]),g=(0,s.useCallback)((r,l)=>{if(!e)return;let s=l.toLowerCase().replace(/\s+/g,"_");t(e.id,e=>{var t,a;let o={...null!=(t=e.columnConfigs)?t:{}},i=null!=(a=o[r])?a:[...n._X];return o[r]=[...i,{key:s,label:l,visible:!0}],{...e,columnConfigs:o}})},[e,t]);return{testCases:a,stats:o,addTestCase:i,updateTestCase:u,deleteTestCase:d,bulkDeleteTestCases:p,bulkUpdateTestCases:f,reorderTestCases:C,updateColumnConfig:m,toggleColumnVisibility:v,addColumn:g,deleteColumn:(0,s.useCallback)((r,l)=>{e&&t(e.id,e=>{var t,s;let a={...null!=(t=e.columnConfigs)?t:{}},o=null!=(s=a[r])?s:[...n._X];return a[r]=o.filter(e=>e.key!==l),{...e,columnConfigs:a}})},[e,t]),reorderColumn:(0,s.useCallback)((r,l,s)=>{e&&t(e.id,e=>{var t,a;let o={...null!=(t=e.columnConfigs)?t:{}},i=[...null!=(a=o[r])?a:[...n._X]],c=i.findIndex(e=>e.key===l);if(-1===c)return e;let u="up"===s?c-1:c+1;if(u<0||u>=i.length)return e;let d=i[c];return i[c]=i[u],i[u]=d,o[r]=i,{...e,columnConfigs:o}})},[e,t])}}(r.activeProject,r.updateProject,r.selectedNodeId),g=function(e,t){let r=null==e?void 0:e.id,l=(0,s.useMemo)(()=>(null==e?void 0:e.e2eData)||{config:u,runs:[],savedScripts:[]},[null==e?void 0:e.e2eData]),a=(0,s.useCallback)(e=>{r&&t(r,t=>({...t,e2eData:e(t.e2eData||{config:u,runs:[],savedScripts:[]})}))},[r,t]),n=(0,s.useCallback)(e=>{a(t=>({...t,config:{...t.config,...e}}))},[a]),o=(0,s.useCallback)(e=>{let t={...e,id:"run-".concat(Date.now(),"-").concat(Math.random().toString(36).slice(2,8)),timestamp:new Date().toISOString()};return a(e=>({...e,runs:[t,...e.runs].slice(0,20)})),t},[a]),i=(0,s.useCallback)(e=>{a(t=>({...t,runs:t.runs.filter(t=>t.id!==e)}))},[a]),c=(0,s.useCallback)(()=>{a(e=>({...e,runs:[]}))},[a]),d=(0,s.useCallback)((e,t,l,s)=>{a(a=>{let n=a.savedScripts.findIndex(t=>t.testCaseId===e),o={id:n>=0?a.savedScripts[n].id:"script-".concat(Date.now()),projectId:r,testCaseId:e,title:t,code:l,script:s,updatedAt:new Date().toISOString()},i=[...a.savedScripts];return n>=0?i[n]=o:i.push(o),{...a,savedScripts:i}})},[r,a]),p=(0,s.useCallback)(e=>{a(t=>({...t,savedScripts:t.savedScripts.filter(t=>t.testCaseId!==e)}))},[a]),f=(0,s.useCallback)(e=>l.savedScripts.find(t=>t.testCaseId===e),[l.savedScripts]);return{config:l.config,runs:l.runs,savedScripts:l.savedScripts,saveConfig:n,saveRun:o,deleteRun:i,clearRuns:c,saveScript:d,deleteScript:p,getScript:f}}(r.activeProject,r.updateProject),b=(0,d.s)(),h=(0,s.useMemo)(()=>({projects:r.projects,activeProject:r.activeProject,activeProjectId:r.activeProjectId,selectedNodeId:r.selectedNodeId,createProject:r.createProject,deleteProject:r.deleteProject,duplicateProject:r.duplicateProject,importProject:r.importProject,switchProject:r.switchProject,renameProject:r.renameProject,setSelectedNodeId:r.setSelectedNodeId,updateProject:r.updateProject,profile:f.profile,profileInitials:f.initials,setProfileName:f.setName,setProfileBannerColor:f.setBannerColor,setProfileAvatarUrl:f.setAvatarUrl,setProfileRole:f.setRole,canUndo:C.canUndo,canRedo:C.canRedo,undo:C.undo,redo:C.redo,pushState:C.pushState,mindmap:m,testCases:v,e2e:g,dialog:b.dialog,alertDialog:b.alert,confirmDialog:b.confirm,promptDialog:b.prompt,lastSaved:r.lastSaved}),[r,f,C,m,v,g,b]);return(0,l.jsx)(p.Provider,{value:h,children:t})}function C(){let e=(0,s.useContext)(p);if(!e)throw Error("useDashboard must be used within DashboardProvider");return e}},8566:(e,t,r)=>{r.d(t,{D_:()=>s,IU:()=>n,T7:()=>a,_X:()=>l});let l=[{key:"code",label:"ID",visible:!0},{key:"title",label:"Test Case",visible:!0},{key:"steps",label:"Steps",visible:!0},{key:"expected",label:"Expected Result",visible:!0},{key:"status",label:"Status",visible:!0},{key:"case_type",label:"Case Type",visible:!1},{key:"notes",label:"Notes",visible:!0},{key:"links",label:"Links",visible:!1}],s=["General","Positive","Negative"],a=["#E57373","#F06292","#BA68C8","#9575CD","#7986CB","#64B5F6","#4FC3F7","#4DD0E1","#4DB6AC","#81C784","#AED581","#FFD54F","#FFB74D","#FF8A65","#A1887F","#90A4AE"];function n(e,t,r,l){return{id:e,code:t,label:r,parentId:l,children:[],shape:"rounded",notes:"",position:null}}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[642],{158:(e,t,o)=>{o.d(t,{Bf:()=>x,G$:()=>P,Rz:()=>k,Vj:()=>u,hX:()=>f,ii:()=>p,k5:()=>m,nN:()=>c,sy:()=>L,wy:()=>s});var n=o(8566),l=o(9280),i=o.n(l);let a={untested:"⬜ Untested",pass:"✅ Pass",fail:"❌ Fail",skip:"⏭ Skip",blocked:"\uD83D\uDEAB Blocked"},r=e=>e.replace(/\n/g,"<br>").replace(/\|/g,"\\|");function s(e,t,o){let l=(o.length>0?o:n._X).filter(e=>e.visible),i=l.map(e=>e.label).join(" | "),s=l.map(()=>"---").join(" | "),c="# ".concat(e.code?e.code+" — ":"").concat(e.label,"\n\n");c+="| # | ".concat(i," |\n"),c+="|---|".concat(s,"|\n"),t.forEach((e,t)=>{let o=l.map(t=>"status"===t.key?a[e.status]:r(e[t.key]||""));c+="| ".concat(t+1," | ").concat(o.join(" | ")," |\n")});let d=t.length,p=t.filter(e=>"skip"===e.status).length,u=t.filter(e=>"pass"===e.status).length,m=d-p>0?Math.round(u/(d-p)*100):0;return c+="\n**Pass rate: ".concat(u,"/").concat(d-p," (").concat(m,"%)**\n")}function c(e,t){return JSON.stringify({node:e,testCases:t},null,2)}function d(e,t,o){let n=new Blob([e],{type:o}),l=URL.createObjectURL(n),i=document.createElement("a");i.href=l,i.download=t,i.click(),URL.revokeObjectURL(l)}function p(e){d(function(e){let t="# ".concat(e.name,"\n\n");for(let p of e.flows){var o,l,i,s,c,d;let u=e.testCases[p.id];if(!u||0===u.length)continue;let m=((null!=(s=null!=(i=null==(o=e.columnConfigs)?void 0:o[p.id])?i:e.columnConfig)?s:[]).length>0?null!=(d=null!=(c=null==(l=e.columnConfigs)?void 0:l[p.id])?c:e.columnConfig)?d:[]:n._X).filter(e=>e.visible),f=m.map(e=>e.label).join(" | "),g=m.map(()=>"---").join(" | ");t+="## ".concat(p.code?p.code+" — ":"").concat(p.label,"\n\n"),t+="| # | ".concat(f," |\n"),t+="|---|".concat(g,"|\n"),u.forEach((e,o)=>{let n=m.map(t=>"status"===t.key?a[e.status]:r(e[t.key]||""));t+="| ".concat(o+1," | ").concat(n.join(" | ")," |\n")});let h=u.length,v=u.filter(e=>"skip"===e.status).length,k=u.filter(e=>"pass"===e.status).length,y=h-v>0?Math.round(k/(h-v)*100):0;t+="\n**Pass rate: ".concat(k,"/").concat(h-v," (").concat(y,"%)**\n\n---\n\n")}return t}(e),"".concat(e.name,".md"),"text/markdown")}function u(e){d(JSON.stringify(e,null,2),"".concat(e.name,".json"),"application/json")}function m(e,t,o){let n=(e.code||e.label).replace(/[^a-zA-Z0-9_-]/g,"_");d(s(e,t,o),"".concat(n,".md"),"text/markdown")}function f(e,t){let o=(e.code||e.label).replace(/[^a-zA-Z0-9_-]/g,"_");d(c(e,t),"".concat(o,".json"),"application/json")}function g(e,t){let o=e&&e.length>0?e:t;return o.length>0?o:n._X}function h(e,t){return t.map(t=>"status"===t.key?a[e.status]:e[t.key]||"")}function v(e){return e.includes(",")||e.includes('"')||e.includes("\n")?'"'.concat(e.replace(/"/g,'""'),'"'):e}function k(e,t,o){let l=(e.code||e.label).replace(/[^a-zA-Z0-9_-]/g,"_");d(function(e,t,o){let l=g(o,n._X).filter(e=>e.visible);return[["#",...l.map(e=>v(e.label))].join(","),...t.map((e,t)=>[String(t+1),...h(e,l).map(v)].join(","))].join("\n")}(0,t,o),"".concat(l,".csv"),"text/csv")}function y(e,t){var o,l,i;let a=null!=(i=null!=(l=null==(o=e.columnConfigs)?void 0:o[t])?l:e.columnConfig)?i:[];return a.length>0?a:n._X}function b(e){e.fill={type:"pattern",pattern:"solid",fgColor:{argb:"FFdbd8d3"}},e.font={name:"Inter",bold:!0,size:11},e.border={top:{style:"thin"},bottom:{style:"thin"},left:{style:"thin"},right:{style:"thin"}},e.alignment={vertical:"middle",horizontal:"left",wrapText:!0}}function w(e){e.border={top:{style:"thin"},bottom:{style:"thin"},left:{style:"thin"},right:{style:"thin"}},e.font={name:"Inter",size:11},e.alignment={vertical:"middle",horizontal:"left",wrapText:!0}}function j(e,t,o,n,l){let i=e.addWorksheet(t);return i.columns=[{header:"#",key:"row",width:6},...l.map(e=>({header:e.label,key:e.key,width:Math.max(e.label.length+4,18)}))],i.getRow(1).eachCell(b),n.forEach((e,t)=>{let o={row:t+1};l.forEach(t=>{"status"===t.key?o[t.key]=a[e.status]:o[t.key]=e[t.key]||""}),i.addRow(o).eachCell(w)}),i}async function U(e,t,o){let l=g(o,n._X).filter(e=>e.visible),a=new(i()).Workbook;return a.creator="Ayu Management Tools",j(a,e.label,e.label,t,l),new Blob([await a.xlsx.writeBuffer()],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"})}async function P(e,t,o){let n=(e.code||e.label).replace(/[^a-zA-Z0-9_-]/g,"_"),l=await U(e,t,o),i=URL.createObjectURL(l),a=document.createElement("a");a.href=i,a.download="".concat(n,".xlsx"),a.click(),URL.revokeObjectURL(i)}async function M(e){let t=new(i()).Workbook;for(let o of(t.creator="Ayu Management Tools",e.flows)){let n=e.testCases[o.id];if(!n||0===n.length)continue;let l=y(e,o.id).filter(e=>e.visible);j(t,(o.code||o.label).substring(0,31).replace(/[\\/*?[\]]/g,"_"),o.label,n,l)}return new Blob([await t.xlsx.writeBuffer()],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"})}async function L(e){let t=await M(e),o=URL.createObjectURL(t),n=document.createElement("a");n.href=o,n.download="".concat(e.name,".xlsx"),n.click(),URL.revokeObjectURL(o)}function x(e){d(function(e){let t="";for(let o of e.flows){let n=e.testCases[o.id];if(!n||0===n.length)continue;let l=y(e,o.id).filter(e=>e.visible);t+="# ".concat(o.code?o.code+" — ":"").concat(o.label,"\n"),t+=["#",...l.map(e=>v(e.label))].join(",")+"\n",n.forEach((e,o)=>{let n=[String(o+1),...h(e,l).map(v)];t+=n.join(",")+"\n"}),t+="\n"}return t}(e),"".concat(e.name,".csv"),"text/csv")}},3362:(e,t,o)=>{o.d(t,{Pj:()=>n});let n=Object.values({openai:{id:"openai",name:"OpenAI",type:"native",description:"GPT models powering ChatGPT. Industry-leading language understanding.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/openai.svg",keyUrl:"https://platform.openai.com/api-keys",keyPlaceholder:"sk-...",color:"#10A37F",sdkProvider:"openai",defaultModel:"gpt-4o-mini",popularModels:["gpt-4o","gpt-4o-mini","gpt-4-turbo","gpt-3.5-turbo"]},google:{id:"google",name:"Google Gemini",type:"native",description:"Google's multimodal AI with strong reasoning capabilities.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/googlegemini.svg",keyUrl:"https://aistudio.google.com/apikey",keyPlaceholder:"AIza...",color:"#4285F4",sdkProvider:"google",defaultModel:"gemini-2.5-flash",popularModels:["gemini-2.5-flash","gemini-2.5-pro","gemini-2.0-flash"]},anthropic:{id:"anthropic",name:"Anthropic",type:"native",description:"Claude models — safe, steerable, and highly capable.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/anthropic.svg",keyUrl:"https://console.anthropic.com/settings/keys",keyPlaceholder:"sk-ant-...",color:"#D97706",sdkProvider:"anthropic",defaultModel:"claude-sonnet-4-20250514",popularModels:["claude-sonnet-4-20250514","claude-haiku-4-20250514","claude-3-5-sonnet-20241022"]},deepseek:{id:"deepseek",name:"DeepSeek",type:"openai-compatible",description:"High-performance open-source models with competitive reasoning.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/deepseek.svg",keyUrl:"https://platform.deepseek.com/api_keys",keyPlaceholder:"sk-...",color:"#4D6BFE",sdkProvider:"openai",baseURL:"https://api.deepseek.com/v1",defaultModel:"deepseek-chat",popularModels:["deepseek-chat","deepseek-reasoner"]},xiaomi:{id:"xiaomi",name:"Xiaomi (MiMo)",type:"openai-compatible",description:"Xiaomi's MiMo models — OpenAI-compatible API.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/xiaomi.svg",keyUrl:"https://platform.xiaomimimo.com/",keyPlaceholder:"tp-...",color:"#FF6900",sdkProvider:"openai",baseURL:"https://token-plan-sgp.xiaomimimo.com/v1",defaultModel:"mimo-v2.5",popularModels:["mimo-v2.5","mimo-v2.5-pro"]},openrouter:{id:"openrouter",name:"OpenRouter",type:"openai-compatible",description:"Unified gateway to 200+ models — Claude, Llama, Mistral, Gemini, and more.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/openrouter.svg",keyUrl:"https://openrouter.ai/keys",keyPlaceholder:"sk-or-...",color:"#6366F1",sdkProvider:"openai",baseURL:"https://openrouter.ai/api/v1",defaultModel:"openrouter/free",popularModels:["openrouter/free","meta-llama/llama-4-maverick:free","google/gemini-2.5-flash:free","deepseek/deepseek-chat-v3-0324:free","mistralai/mistral-small-3.2-24b:free","qwen/qwen3-235b-a22b:free","microsoft/phi-4-reasoning-plus:free"]},groq:{id:"groq",name:"Groq",type:"native",description:"Ultra-fast inference with LPU hardware. Blazing speed for Llama, Mixtral, and Gemma models.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/groq.svg",keyUrl:"https://console.groq.com/keys",keyPlaceholder:"gsk_...",color:"#F55036",sdkProvider:"groq",defaultModel:"llama-3.3-70b-versatile",popularModels:["llama-3.3-70b-versatile","llama-3.1-8b-instant","mixtral-8x7b-32768","gemma2-9b-it","meta-llama/llama-4-scout-17b-16e-instruct","qwen-qwq-32b"]},custom:{id:"custom",name:"Custom (OpenAI-compatible)",type:"openai-compatible",description:"Any OpenAI-compatible API — Ollama, LM Studio, vLLM, LiteLLM, etc.",logoUrl:"",keyUrl:"",keyPlaceholder:"sk-... or any key",color:"#6B7280",sdkProvider:"openai",defaultModel:"",popularModels:[],requiresBaseURL:!0}})},7669:(e,t,o)=>{o.d(t,{P:()=>d});var n=o(2115),l=o(3362);let i="qa-llm-config",a={apiKey:"",baseURL:"",defaultModel:"",secondaryModel:"",models:[],connected:!1};function r(){let e={};for(let t of l.Pj)e[t.id]={...a,baseURL:t.baseURL||""};return{activeProvider:null,providers:e}}function s(){try{let t=localStorage.getItem(i);if(!t)return r();let o=JSON.parse(t);if(o.provider&&o.apiKey&&!o.providers){let e=r();return{...e,activeProvider:null,providers:{...e.providers,google:{...a,apiKey:o.apiKey,connected:!0}}}}let n=r(),s={...n,...o,providers:{...n.providers}};for(let t of l.Pj){var e;let n=null==(e=o.providers)?void 0:e[t.id];s.providers[t.id]={...a,baseURL:t.baseURL||"",...n}}return s}catch(e){return r()}}function c(e){try{localStorage.setItem(i,JSON.stringify(e))}catch(e){}}function d(){let[e,t]=(0,n.useState)(r),[o,l]=(0,n.useState)(!1);(0,n.useEffect)(()=>{t(s()),l(!0)},[]);let i=(0,n.useCallback)((e,o)=>{let n=s(),l={...n,providers:{...n.providers,[e]:{...n.providers[e],...o}}};c(l),t(l)},[]),a=(0,n.useCallback)(e=>{let o={...s(),activeProvider:e};c(o),t(o)},[]),d=e.activeProvider?e.providers[e.activeProvider]:null,p=o&&!!d&&d.apiKey.length>0&&d.connected;return{config:e,loaded:o,isConnected:p,activeProvider:d,activeProviderId:e.activeProvider,updateProvider:i,setActiveProvider:a}}},7711:(e,t,o)=>{o.d(t,{Z7:()=>l,Js:()=>i});var n=o(5653);async function l(e,t,o){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"google",l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"",i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"en",a=arguments.length>6?arguments[6]:void 0,r=arguments.length>7?arguments[7]:void 0,s=await fetch("/api/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:e,prompt:t,apiKey:o,provider:n,model:l,language:i,baseURL:a,images:r})});if(!s.ok)throw Error((await s.json().catch(()=>({error:"Request failed"}))).error||"HTTP ".concat(s.status));return(await s.json()).testCases}async function i(e,t,o){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"google",l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"",i=arguments.length>5?arguments[5]:void 0,a=await fetch("/api/refine-notes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:e,notes:t,apiKey:o,provider:n,model:l,baseURL:i})});if(!a.ok)throw Error((await a.json().catch(()=>({error:"Request failed"}))).error||"HTTP ".concat(a.status));return(await a.json()).refined}n.Ik({title:n.Yj().describe("Short descriptive title of the test case"),steps:n.Yj().describe("Numbered test steps separated by newlines"),expected:n.Yj().describe("Expected result of the test")})}}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[480],{469:(e,r,o)=>{Promise.resolve().then(o.bind(o,4071))},3362:(e,r,o)=>{"use strict";o.d(r,{Pj:()=>t});let t=Object.values({openai:{id:"openai",name:"OpenAI",type:"native",description:"GPT models powering ChatGPT. Industry-leading language understanding.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/openai.svg",keyUrl:"https://platform.openai.com/api-keys",keyPlaceholder:"sk-...",color:"#10A37F",sdkProvider:"openai",defaultModel:"gpt-4o-mini",popularModels:["gpt-4o","gpt-4o-mini","gpt-4-turbo","gpt-3.5-turbo"]},google:{id:"google",name:"Google Gemini",type:"native",description:"Google's multimodal AI with strong reasoning capabilities.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/googlegemini.svg",keyUrl:"https://aistudio.google.com/apikey",keyPlaceholder:"AIza...",color:"#4285F4",sdkProvider:"google",defaultModel:"gemini-2.5-flash",popularModels:["gemini-2.5-flash","gemini-2.5-pro","gemini-2.0-flash"]},anthropic:{id:"anthropic",name:"Anthropic",type:"native",description:"Claude models — safe, steerable, and highly capable.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/anthropic.svg",keyUrl:"https://console.anthropic.com/settings/keys",keyPlaceholder:"sk-ant-...",color:"#D97706",sdkProvider:"anthropic",defaultModel:"claude-sonnet-4-20250514",popularModels:["claude-sonnet-4-20250514","claude-haiku-4-20250514","claude-3-5-sonnet-20241022"]},deepseek:{id:"deepseek",name:"DeepSeek",type:"openai-compatible",description:"High-performance open-source models with competitive reasoning.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/deepseek.svg",keyUrl:"https://platform.deepseek.com/api_keys",keyPlaceholder:"sk-...",color:"#4D6BFE",sdkProvider:"openai",baseURL:"https://api.deepseek.com/v1",defaultModel:"deepseek-chat",popularModels:["deepseek-chat","deepseek-reasoner"]},xiaomi:{id:"xiaomi",name:"Xiaomi (MiMo)",type:"openai-compatible",description:"Xiaomi's MiMo models — OpenAI-compatible API.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/xiaomi.svg",keyUrl:"https://platform.xiaomimimo.com/",keyPlaceholder:"tp-...",color:"#FF6900",sdkProvider:"openai",baseURL:"https://token-plan-sgp.xiaomimimo.com/v1",defaultModel:"mimo-v2.5",popularModels:["mimo-v2.5","mimo-v2.5-pro"]},openrouter:{id:"openrouter",name:"OpenRouter",type:"openai-compatible",description:"Unified gateway to 200+ models — Claude, Llama, Mistral, Gemini, and more.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/openrouter.svg",keyUrl:"https://openrouter.ai/keys",keyPlaceholder:"sk-or-...",color:"#6366F1",sdkProvider:"openai",baseURL:"https://openrouter.ai/api/v1",defaultModel:"openrouter/free",popularModels:["openrouter/free","meta-llama/llama-4-maverick:free","google/gemini-2.5-flash:free","deepseek/deepseek-chat-v3-0324:free","mistralai/mistral-small-3.2-24b:free","qwen/qwen3-235b-a22b:free","microsoft/phi-4-reasoning-plus:free"]},groq:{id:"groq",name:"Groq",type:"native",description:"Ultra-fast inference with LPU hardware. Blazing speed for Llama, Mixtral, and Gemma models.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/groq.svg",keyUrl:"https://console.groq.com/keys",keyPlaceholder:"gsk_...",color:"#F55036",sdkProvider:"groq",defaultModel:"llama-3.3-70b-versatile",popularModels:["llama-3.3-70b-versatile","llama-3.1-8b-instant","mixtral-8x7b-32768","gemma2-9b-it","meta-llama/llama-4-scout-17b-16e-instruct","qwen-qwq-32b"]},custom:{id:"custom",name:"Custom (OpenAI-compatible)",type:"openai-compatible",description:"Any OpenAI-compatible API — Ollama, LM Studio, vLLM, LiteLLM, etc.",logoUrl:"",keyUrl:"",keyPlaceholder:"sk-... or any key",color:"#6B7280",sdkProvider:"openai",defaultModel:"",popularModels:[],requiresBaseURL:!0}})},4071:(e,r,o)=>{"use strict";o.r(r),o.d(r,{default:()=>n});var t=o(5155),l=o(2115),a=o(5307),s=o(7669),i=o(3362);function n(){let{activeProviderId:e,setActiveProvider:r}=(0,s.P)(),[o,n]=(0,l.useState)(e);return(0,l.useEffect)(()=>{o||n(e)},[e]),(0,t.jsxs)("div",{className:"h-full overflow-auto relative",children:[(0,t.jsxs)("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[(0,t.jsx)(a.b,{width:40,height:40,x:-1,y:-1,className:"opacity-20"}),(0,t.jsx)("div",{className:"absolute inset-0",style:{background:"linear-gradient(to bottom, var(--bg-primary) 0%, transparent 20%, transparent 80%, var(--bg-primary) 100%)"}})]}),(0,t.jsxs)("div",{className:"relative p-6 max-w-4xl",children:[(0,t.jsxs)("div",{className:"mb-6",children:[(0,t.jsx)("h2",{className:"text-lg font-medium",style:{color:"var(--text-primary)"},children:"Integrations"}),(0,t.jsx)("p",{className:"text-xs mt-0.5",style:{color:"var(--text-tertiary)"},children:"Connect an AI provider to enable test case generation."})]}),(0,t.jsx)("h3",{className:"text-xs font-medium uppercase tracking-wider mb-3",style:{color:"var(--text-tertiary)"},children:"AI Providers"}),(0,t.jsx)("div",{className:"space-y-3",children:i.Pj.map(l=>(0,t.jsx)(d,{def:l,expanded:o===l.id,onToggle:()=>n(e=>e===l.id?null:l.id),isActive:e===l.id,onSetActive:()=>r(l.id)},l.id))})]})]})}function d(e){let{def:r,expanded:o,onToggle:a,isActive:i,onSetActive:n}=e,{config:d,updateProvider:p}=(0,s.P)(),m=d.providers[r.id],[u,v]=(0,l.useState)(!1),[h,x]=(0,l.useState)((null==m?void 0:m.apiKey)||""),[y,g]=(0,l.useState)((null==m?void 0:m.baseURL)||r.baseURL||""),[b,f]=(0,l.useState)(!1),k=(null==m?void 0:m.defaultModel)||r.defaultModel,[j,N]=(0,l.useState)(null),[C,w]=(0,l.useState)(null);(0,l.useEffect)(()=>{o&&m&&!m.connected&&!u&&(x(m.apiKey),g(m.baseURL||r.baseURL||""))},[o]),(0,l.useEffect)(()=>{(null==m?void 0:m.connected)&&m.apiKey&&!m.apiKey.startsWith("enc:")&&fetch("/api/llm/encrypt",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:m.apiKey})}).then(e=>e.json()).then(e=>{e.encrypted&&p(r.id,{apiKey:e.encrypted})}).catch(()=>{})},[]);let U=async()=>{let e=h.trim();if(e){f(!0),N(null),w(null);try{let o=await fetch("/api/llm/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:r.id,apiKey:e,baseURL:y.trim()||void 0,model:k})}),t=await o.json();N(t),t.ok&&w(e)}catch(e){N({ok:!1,error:"Network error"})}finally{f(!1)}}},M=async()=>{let e=C||h.trim();if(!e)return;if(!C)return void await U();let o=e;try{let r=await fetch("/api/llm/encrypt",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:e})}),t=await r.json();t.encrypted&&(o=t.encrypted)}catch(e){}p(r.id,{apiKey:o,baseURL:y.trim()||r.baseURL||"",connected:!0,models:r.popularModels,defaultModel:(null==m?void 0:m.defaultModel)||r.defaultModel||r.popularModels[0]||"",secondaryModel:(null==m?void 0:m.secondaryModel)||""}),v(!1),N(null),w(null)},P=(e,o)=>{p(r.id,{[e]:o})};if(!m)return null;let L=r.color||"#6B7280";return(0,t.jsxs)("div",{className:"rounded-xl border transition-all overflow-hidden",style:{borderColor:i?L:o?"var(--border-hover)":"var(--border)",backgroundColor:"var(--bg-card)",boxShadow:i?"0 0 0 1px ".concat(L,"20"):void 0},children:[(0,t.jsxs)("button",{onClick:a,className:"w-full px-5 py-4 flex items-center gap-3 text-left transition-colors hover:bg-[var(--bg-secondary)]",children:[(0,t.jsx)("div",{className:"w-11 h-11 rounded-lg flex items-center justify-center overflow-hidden flex-shrink-0",style:{backgroundColor:"".concat(L,"10")},children:r.logoUrl?(0,t.jsx)("img",{src:r.logoUrl,alt:r.name,width:24,height:24,className:"opacity-80",style:{filter:"brightness(0.5)"},onError:e=>{e.target.style.display="none"}}):(0,t.jsx)("span",{className:"text-xs font-bold",style:{color:L},children:"API"})}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-sm font-semibold",style:{color:"var(--text-primary)"},children:r.name}),i&&m.connected&&(0,t.jsx)("span",{className:"text-[10px] font-medium px-1.5 py-0.5 rounded-full",style:{backgroundColor:"".concat(L,"15"),color:L},children:"Active"}),(0,t.jsx)("span",{className:"text-[10px] font-medium px-1.5 py-0.5 rounded-full",style:{backgroundColor:m.connected?"var(--status-pass-bg)":"var(--bg-secondary)",color:m.connected?"var(--status-pass-text)":"var(--text-tertiary)"},children:m.connected?"Connected":"Not configured"})]}),(0,t.jsx)("p",{className:"text-[11px] mt-0.5 truncate",style:{color:"var(--text-tertiary)"},children:r.description})]}),(0,t.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"var(--text-tertiary)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"flex-shrink-0 transition-transform duration-200",style:{transform:o?"rotate(180deg)":"rotate(0deg)"},children:(0,t.jsx)("polyline",{points:"6 9 12 15 18 9"})})]}),(0,t.jsx)("div",{style:{maxHeight:o?"600px":"0px",overflow:"hidden",transition:"max-height 250ms ease-out"},children:(0,t.jsxs)("div",{className:"px-5 pb-5 pt-1 space-y-3",children:[u||!m.connected?(0,t.jsxs)("div",{className:"space-y-2",children:[r.requiresBaseURL&&(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-[10px] font-medium uppercase tracking-wider block mb-1",style:{color:"var(--text-tertiary)"},children:"API Base URL"}),(0,t.jsx)("input",{type:"text",value:y,onChange:e=>{g(e.target.value),w(null),N(null)},placeholder:"https://api.example.com/v1",className:"w-full px-3 py-2 text-sm rounded-lg outline-none border transition-colors focus:border-[var(--accent)]",style:{borderColor:"var(--border)",backgroundColor:"var(--bg-primary)",color:"var(--text-primary)"}})]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)("input",{type:"password",value:h,onChange:e=>{x(e.target.value),w(null),N(null)},placeholder:r.keyPlaceholder,className:"flex-1 px-3 py-2 text-sm rounded-lg outline-none border transition-colors focus:border-[var(--accent)]",style:{borderColor:"var(--border)",backgroundColor:"var(--bg-primary)",color:"var(--text-primary)"},onKeyDown:e=>{"Enter"===e.key&&U()}}),(0,t.jsx)("button",{onClick:U,disabled:b||!h.trim(),className:"px-4 py-2 text-xs font-medium rounded-lg border transition-all hover:bg-[var(--bg-secondary)] disabled:opacity-40",style:{borderColor:"var(--border)",color:"var(--text-secondary)"},children:b?(0,t.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,t.jsx)("svg",{className:"animate-spin",width:12,height:12,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:(0,t.jsx)("circle",{cx:"12",cy:"12",r:"10",strokeDasharray:"30 70"})}),"Testing"]}):"Test"}),(0,t.jsx)("button",{onClick:M,disabled:!C&&!h.trim(),className:"px-4 py-2 text-xs font-medium rounded-lg transition-all hover:opacity-90 disabled:opacity-40",style:{backgroundColor:L,color:"#fff"},children:"Connect"}),u&&(0,t.jsx)("button",{onClick:()=>{v(!1),x(m.apiKey),g(m.baseURL||r.baseURL||""),w(null),N(null)},className:"px-3 py-2 text-xs font-medium rounded-lg border transition-colors hover:bg-[var(--bg-secondary)]",style:{borderColor:"var(--border)",color:"var(--text-secondary)"},children:"Cancel"})]}),j&&(0,t.jsx)("div",{className:"text-xs px-3 py-2 rounded-lg",style:{backgroundColor:j.ok?"var(--status-pass-bg)":"var(--status-fail-bg)",color:j.ok?"var(--status-pass-text)":"var(--status-fail-text)"},children:j.ok?"Connection verified! Click Connect to save.":"Failed: ".concat(j.error)}),r.keyUrl&&(0,t.jsxs)("p",{className:"text-[10px]",style:{color:"var(--text-tertiary)"},children:["Get your key at"," ",(0,t.jsx)("a",{href:r.keyUrl,target:"_blank",rel:"noopener noreferrer",style:{color:L,textDecoration:"underline"},children:r.keyUrl.replace("https://","").split("/")[0]})]})]}):(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)("button",{onClick:()=>{x(m.apiKey),g(m.baseURL||r.baseURL||""),v(!0)},className:"flex-1 px-3 py-2 text-xs font-medium rounded-lg border transition-all hover:bg-[var(--bg-secondary)]",style:{borderColor:"var(--border)",color:"var(--text-secondary)"},children:"Update API Key"}),(0,t.jsx)("button",{onClick:()=>{p(r.id,{apiKey:"",connected:!1,models:[],defaultModel:"",secondaryModel:""}),x(""),g(r.baseURL||""),v(!1),N(null)},className:"px-3 py-2 text-xs font-medium rounded-lg border transition-colors hover:bg-[var(--status-fail-bg)]",style:{borderColor:"var(--border)",color:"var(--text-tertiary)"},children:"Disconnect"}),!i&&(0,t.jsx)("button",{onClick:n,className:"px-3 py-2 text-xs font-medium rounded-lg transition-all hover:opacity-90",style:{backgroundColor:L,color:"#fff"},children:"Set Active"})]}),(0,t.jsxs)("div",{className:"pt-3 border-t",style:{borderColor:"var(--border)"},children:[(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-[10px] font-medium uppercase tracking-wider block mb-1.5",style:{color:"var(--text-tertiary)"},children:"Default Model"}),(0,t.jsx)(c,{value:m.defaultModel,models:m.models.length>0?m.models:r.popularModels,onChange:e=>P("defaultModel",e)})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-[10px] font-medium uppercase tracking-wider block mb-1.5",style:{color:"var(--text-tertiary)"},children:"Fallback Model"}),(0,t.jsx)(c,{value:m.secondaryModel,models:m.models.length>0?m.models:r.popularModels,onChange:e=>P("secondaryModel",e),allowEmpty:!0})]})]}),i&&m.connected&&(0,t.jsxs)("div",{className:"mt-2 text-[10px] flex items-center gap-1.5",style:{color:"var(--text-tertiary)"},children:[(0,t.jsx)("div",{className:"w-1.5 h-1.5 rounded-full",style:{backgroundColor:L}}),"Using ",m.defaultModel,m.secondaryModel?" (fallback: ".concat(m.secondaryModel,")"):""]})]})]})})]})}function c(e){let{value:r,models:o,onChange:a,allowEmpty:s}=e,[i,n]=(0,l.useState)(!1),d=o.includes(r);return i||!d&&""!==r?(0,t.jsxs)("div",{className:"flex gap-1",children:[(0,t.jsx)("input",{type:"text",value:r,onChange:e=>a(e.target.value),placeholder:"model-id",className:"flex-1 px-2.5 py-1.5 text-xs rounded-lg border outline-none transition-colors focus:border-[var(--accent)]",style:{borderColor:"var(--border)",backgroundColor:"var(--bg-primary)",color:"var(--text-primary)"}}),o.length>0&&(0,t.jsx)("button",{onClick:()=>{n(!1),a(o[0])},className:"px-2 py-1.5 text-[10px] rounded-lg border transition-colors hover:bg-[var(--bg-secondary)]",style:{borderColor:"var(--border)",color:"var(--text-tertiary)"},title:"Switch to preset list",children:(0,t.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("polyline",{points:"6 9 12 15 18 9"})})})]}):(0,t.jsxs)("div",{className:"flex gap-1",children:[(0,t.jsxs)("select",{value:r,onChange:e=>a(e.target.value),className:"flex-1 px-2.5 py-1.5 text-xs rounded-lg border outline-none transition-colors cursor-pointer",style:{borderColor:"var(--border)",backgroundColor:"var(--bg-primary)",color:"var(--text-primary)"},children:[s&&(0,t.jsx)("option",{value:"",children:"None"}),o.map(e=>(0,t.jsx)("option",{value:e,children:e},e))]}),(0,t.jsx)("button",{onClick:()=>n(!0),className:"px-2 py-1.5 text-[10px] rounded-lg border transition-colors hover:bg-[var(--bg-secondary)]",style:{borderColor:"var(--border)",color:"var(--text-tertiary)"},title:"Enter custom model ID",children:"✏️"})]})}},4269:(e,r,o)=>{"use strict";o.d(r,{cn:()=>a});var t=o(2821),l=o(5889);function a(){for(var e=arguments.length,r=Array(e),o=0;o<e;o++)r[o]=arguments[o];return(0,l.QP)((0,t.$)(r))}},5307:(e,r,o)=>{"use strict";o.d(r,{b:()=>s});var t=o(5155),l=o(2115),a=o(4269);function s(e){let{width:r=40,height:o=40,x:s=-1,y:i=-1,strokeDasharray:n="0",squares:d,className:c,...p}=e,m=(0,l.useId)();return(0,t.jsxs)("svg",{"aria-hidden":"true",className:(0,a.cn)("pointer-events-none absolute inset-0 h-full w-full fill-gray-400/30 stroke-gray-400/30",c),...p,children:[(0,t.jsx)("defs",{children:(0,t.jsx)("pattern",{id:m,width:r,height:o,patternUnits:"userSpaceOnUse",x:s,y:i,children:(0,t.jsx)("path",{d:"M.5 ".concat(o,"V.5H").concat(r),fill:"none",strokeDasharray:n})})}),(0,t.jsx)("rect",{width:"100%",height:"100%",strokeWidth:0,fill:"url(#".concat(m,")")}),d&&(0,t.jsx)("svg",{x:s,y:i,className:"overflow-visible",children:d.map(e=>{let[l,a]=e;return(0,t.jsx)("rect",{strokeWidth:"0",width:r-1,height:o-1,x:l*r+1,y:a*o+1},"".concat(l,"-").concat(a))})})]})}},7669:(e,r,o)=>{"use strict";o.d(r,{P:()=>c});var t=o(2115),l=o(3362);let a="qa-llm-config",s={apiKey:"",baseURL:"",defaultModel:"",secondaryModel:"",models:[],connected:!1};function i(){let e={};for(let r of l.Pj)e[r.id]={...s,baseURL:r.baseURL||""};return{activeProvider:null,providers:e}}function n(){try{let r=localStorage.getItem(a);if(!r)return i();let o=JSON.parse(r);if(o.provider&&o.apiKey&&!o.providers){let e=i();return{...e,activeProvider:null,providers:{...e.providers,google:{...s,apiKey:o.apiKey,connected:!0}}}}let t=i(),n={...t,...o,providers:{...t.providers}};for(let r of l.Pj){var e;let t=null==(e=o.providers)?void 0:e[r.id];n.providers[r.id]={...s,baseURL:r.baseURL||"",...t}}return n}catch(e){return i()}}function d(e){try{localStorage.setItem(a,JSON.stringify(e))}catch(e){}}function c(){let[e,r]=(0,t.useState)(i),[o,l]=(0,t.useState)(!1);(0,t.useEffect)(()=>{r(n()),l(!0)},[]);let a=(0,t.useCallback)((e,o)=>{let t=n(),l={...t,providers:{...t.providers,[e]:{...t.providers[e],...o}}};d(l),r(l)},[]),s=(0,t.useCallback)(e=>{let o={...n(),activeProvider:e};d(o),r(o)},[]),c=e.activeProvider?e.providers[e.activeProvider]:null,p=o&&!!c&&c.apiKey.length>0&&c.connected;return{config:e,loaded:o,isConnected:p,activeProvider:c,activeProviderId:e.activeProvider,updateProvider:a,setActiveProvider:s}}}},e=>{e.O(0,[909,441,255,358],()=>e(e.s=469)),_N_E=e.O()}]);