vibebusiness 1.2.72 → 1.2.75

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 (1234) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +29 -29
  3. package/.next/standalone/.next/app-path-routes-manifest.json +1 -1
  4. package/.next/standalone/.next/build-manifest.json +2 -2
  5. package/.next/standalone/.next/prerender-manifest.json +1 -1
  6. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  7. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  8. package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
  9. package/.next/standalone/.next/server/app/goals/[id]/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/.next/server/app/goals/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/.next/server/app/hypotheses/[id]/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/.next/server/app/hypotheses/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/ideas/[id]/page_client-reference-manifest.js +1 -1
  14. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/.next/server/app/roadmap/[id]/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/.next/server/app/roadmap/investors/page_client-reference-manifest.js +1 -1
  17. package/.next/standalone/.next/server/app/roadmap/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/roadmap/public/page.js +1 -1
  19. package/.next/standalone/.next/server/app/roadmap/public/page_client-reference-manifest.js +1 -1
  20. package/.next/standalone/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  21. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/.next/server/app/settings.html +1 -1
  23. package/.next/standalone/.next/server/app/settings.rsc +1 -1
  24. package/.next/standalone/.next/server/app/social/page_client-reference-manifest.js +1 -1
  25. package/.next/standalone/.next/server/app/social.html +1 -1
  26. package/.next/standalone/.next/server/app/social.rsc +1 -1
  27. package/.next/standalone/.next/server/app/updates/[id]/page_client-reference-manifest.js +1 -1
  28. package/.next/standalone/.next/server/app/updates/new/page_client-reference-manifest.js +1 -1
  29. package/.next/standalone/.next/server/app/updates/new.html +1 -1
  30. package/.next/standalone/.next/server/app/updates/new.rsc +1 -1
  31. package/.next/standalone/.next/server/app/updates/page_client-reference-manifest.js +1 -1
  32. package/.next/standalone/.next/server/app-paths-manifest.json +16 -16
  33. package/.next/standalone/.next/server/pages/404.html +1 -1
  34. package/.next/standalone/.next/server/pages/500.html +1 -1
  35. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  36. package/.next/standalone/data/business-context.json +1 -1
  37. package/.next/standalone/data/heartbeat-sessions.json +247 -0
  38. package/.next/standalone/data/ideas.json +623 -12
  39. package/.next/standalone/data/implementations.json +421 -0
  40. package/.next/standalone/data/roadmap.json +1 -1
  41. package/.next/standalone/node_modules/.cache/webpack/remotion-production-4.0.428/c99d23d3548030c8ff8de678c71eeb15/0.pack +0 -0
  42. package/.next/standalone/node_modules/.cache/webpack/remotion-production-4.0.428/c99d23d3548030c8ff8de678c71eeb15/index.pack +0 -0
  43. package/.next/standalone/node_modules/@esbuild/darwin-arm64/bin/esbuild +0 -0
  44. package/.next/standalone/node_modules/@esbuild/darwin-arm64/package.json +20 -0
  45. package/.next/standalone/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js +358 -0
  46. package/.next/standalone/node_modules/@jridgewell/gen-mapping/package.json +67 -0
  47. package/.next/standalone/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js +240 -0
  48. package/.next/standalone/node_modules/@jridgewell/resolve-uri/package.json +69 -0
  49. package/.next/standalone/node_modules/@jridgewell/source-map/dist/source-map.umd.js +152 -0
  50. package/.next/standalone/node_modules/@jridgewell/source-map/package.json +68 -0
  51. package/.next/standalone/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js +464 -0
  52. package/.next/standalone/node_modules/@jridgewell/sourcemap-codec/package.json +63 -0
  53. package/.next/standalone/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js +559 -0
  54. package/.next/standalone/node_modules/@jridgewell/trace-mapping/package.json +67 -0
  55. package/.next/standalone/node_modules/@webassemblyjs/ast/lib/clone.js +11 -0
  56. package/.next/standalone/node_modules/@webassemblyjs/ast/lib/index.js +129 -0
  57. package/.next/standalone/node_modules/@webassemblyjs/ast/lib/node-helpers.js +107 -0
  58. package/.next/standalone/node_modules/@webassemblyjs/ast/lib/node-path.js +148 -0
  59. package/.next/standalone/node_modules/@webassemblyjs/ast/lib/nodes.js +1144 -0
  60. package/.next/standalone/node_modules/@webassemblyjs/ast/lib/signatures.js +207 -0
  61. package/.next/standalone/node_modules/@webassemblyjs/ast/lib/transform/ast-module-to-module-context/index.js +389 -0
  62. package/.next/standalone/node_modules/@webassemblyjs/ast/lib/traverse.js +105 -0
  63. package/.next/standalone/node_modules/@webassemblyjs/ast/lib/utils.js +315 -0
  64. package/.next/standalone/node_modules/@webassemblyjs/ast/package.json +32 -0
  65. package/.next/standalone/node_modules/@webassemblyjs/floating-point-hex-parser/lib/index.js +49 -0
  66. package/.next/standalone/node_modules/@webassemblyjs/floating-point-hex-parser/package.json +24 -0
  67. package/.next/standalone/node_modules/@webassemblyjs/helper-api-error/lib/index.js +78 -0
  68. package/.next/standalone/node_modules/@webassemblyjs/helper-api-error/package.json +18 -0
  69. package/.next/standalone/node_modules/@webassemblyjs/helper-buffer/lib/index.js +89 -0
  70. package/.next/standalone/node_modules/@webassemblyjs/helper-buffer/package.json +24 -0
  71. package/.next/standalone/node_modules/@webassemblyjs/helper-numbers/lib/index.js +117 -0
  72. package/.next/standalone/node_modules/@webassemblyjs/helper-numbers/package.json +25 -0
  73. package/.next/standalone/node_modules/@webassemblyjs/helper-wasm-bytecode/lib/index.js +430 -0
  74. package/.next/standalone/node_modules/@webassemblyjs/helper-wasm-bytecode/lib/section.js +38 -0
  75. package/.next/standalone/node_modules/@webassemblyjs/helper-wasm-bytecode/package.json +20 -0
  76. package/.next/standalone/node_modules/@webassemblyjs/helper-wasm-section/lib/create.js +123 -0
  77. package/.next/standalone/node_modules/@webassemblyjs/helper-wasm-section/lib/index.js +35 -0
  78. package/.next/standalone/node_modules/@webassemblyjs/helper-wasm-section/lib/remove.js +45 -0
  79. package/.next/standalone/node_modules/@webassemblyjs/helper-wasm-section/lib/resize.js +90 -0
  80. package/.next/standalone/node_modules/@webassemblyjs/helper-wasm-section/package.json +29 -0
  81. package/.next/standalone/node_modules/@webassemblyjs/ieee754/lib/index.js +52 -0
  82. package/.next/standalone/node_modules/@webassemblyjs/ieee754/package.json +23 -0
  83. package/.next/standalone/node_modules/@webassemblyjs/leb128/lib/bits.js +156 -0
  84. package/.next/standalone/node_modules/@webassemblyjs/leb128/lib/bufs.js +246 -0
  85. package/.next/standalone/node_modules/@webassemblyjs/leb128/lib/index.js +59 -0
  86. package/.next/standalone/node_modules/@webassemblyjs/leb128/lib/leb.js +347 -0
  87. package/.next/standalone/node_modules/@webassemblyjs/leb128/package.json +23 -0
  88. package/.next/standalone/node_modules/@webassemblyjs/utf8/lib/decoder.js +74 -0
  89. package/.next/standalone/node_modules/@webassemblyjs/utf8/lib/encoder.js +67 -0
  90. package/.next/standalone/node_modules/@webassemblyjs/utf8/lib/index.js +21 -0
  91. package/.next/standalone/node_modules/@webassemblyjs/utf8/package.json +20 -0
  92. package/.next/standalone/node_modules/@webassemblyjs/wasm-edit/lib/apply.js +318 -0
  93. package/.next/standalone/node_modules/@webassemblyjs/wasm-edit/lib/index.js +134 -0
  94. package/.next/standalone/node_modules/@webassemblyjs/wasm-edit/package.json +33 -0
  95. package/.next/standalone/node_modules/@webassemblyjs/wasm-gen/lib/encoder/index.js +372 -0
  96. package/.next/standalone/node_modules/@webassemblyjs/wasm-gen/lib/index.js +68 -0
  97. package/.next/standalone/node_modules/@webassemblyjs/wasm-gen/package.json +27 -0
  98. package/.next/standalone/node_modules/@webassemblyjs/wasm-opt/lib/index.js +66 -0
  99. package/.next/standalone/node_modules/@webassemblyjs/wasm-opt/lib/leb128.js +56 -0
  100. package/.next/standalone/node_modules/@webassemblyjs/wasm-opt/package.json +26 -0
  101. package/.next/standalone/node_modules/@webassemblyjs/wasm-parser/lib/decoder.js +1970 -0
  102. package/.next/standalone/node_modules/@webassemblyjs/wasm-parser/lib/index.js +262 -0
  103. package/.next/standalone/node_modules/@webassemblyjs/wasm-parser/package.json +44 -0
  104. package/.next/standalone/node_modules/@xtuc/ieee754/dist/index.cjs.js +96 -0
  105. package/.next/standalone/node_modules/@xtuc/ieee754/package.json +42 -0
  106. package/.next/standalone/node_modules/@xtuc/long/package.json +36 -0
  107. package/.next/standalone/node_modules/@xtuc/long/src/long.js +1405 -0
  108. package/.next/standalone/node_modules/acorn/dist/acorn.js +6262 -0
  109. package/.next/standalone/node_modules/acorn/package.json +50 -0
  110. package/.next/standalone/node_modules/acorn-import-phases/package.json +46 -0
  111. package/.next/standalone/node_modules/acorn-import-phases/src/index.cjs +5 -0
  112. package/.next/standalone/node_modules/acorn-import-phases/src/plugin.cjs +125 -0
  113. package/.next/standalone/node_modules/ajv-formats/dist/formats.js +173 -0
  114. package/.next/standalone/node_modules/ajv-formats/dist/index.js +37 -0
  115. package/.next/standalone/node_modules/ajv-formats/dist/limit.js +69 -0
  116. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/ajv.js +50 -0
  117. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/compile/codegen/code.js +156 -0
  118. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/compile/codegen/index.js +697 -0
  119. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/compile/codegen/scope.js +143 -0
  120. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/compile/errors.js +123 -0
  121. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/compile/index.js +242 -0
  122. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/compile/names.js +28 -0
  123. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/compile/ref_error.js +12 -0
  124. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/compile/resolve.js +155 -0
  125. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/compile/rules.js +26 -0
  126. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/compile/util.js +178 -0
  127. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/compile/validate/applicability.js +19 -0
  128. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/compile/validate/boolSchema.js +50 -0
  129. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/compile/validate/dataType.js +203 -0
  130. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/compile/validate/defaults.js +35 -0
  131. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/compile/validate/index.js +520 -0
  132. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/compile/validate/keyword.js +124 -0
  133. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/compile/validate/subschema.js +81 -0
  134. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/core.js +618 -0
  135. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/refs/data.json +13 -0
  136. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/refs/json-schema-draft-07.json +151 -0
  137. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/runtime/equal.js +7 -0
  138. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/runtime/ucs2length.js +24 -0
  139. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/runtime/uri.js +6 -0
  140. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/runtime/validation_error.js +11 -0
  141. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +49 -0
  142. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +106 -0
  143. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/allOf.js +23 -0
  144. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +12 -0
  145. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/contains.js +95 -0
  146. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +85 -0
  147. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/if.js +66 -0
  148. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/index.js +44 -0
  149. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/items.js +52 -0
  150. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/items2020.js +30 -0
  151. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/not.js +26 -0
  152. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +60 -0
  153. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +75 -0
  154. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +12 -0
  155. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/properties.js +54 -0
  156. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +38 -0
  157. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +13 -0
  158. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/code.js +131 -0
  159. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/core/id.js +10 -0
  160. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/core/index.js +16 -0
  161. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/core/ref.js +122 -0
  162. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/discriminator/index.js +104 -0
  163. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/discriminator/types.js +9 -0
  164. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/draft7.js +17 -0
  165. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/format/format.js +92 -0
  166. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/format/index.js +6 -0
  167. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/metadata.js +18 -0
  168. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/const.js +25 -0
  169. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/enum.js +48 -0
  170. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/index.js +33 -0
  171. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/limitItems.js +24 -0
  172. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/limitLength.js +27 -0
  173. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +27 -0
  174. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +24 -0
  175. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +26 -0
  176. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/pattern.js +33 -0
  177. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/required.js +79 -0
  178. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +64 -0
  179. package/.next/standalone/node_modules/ajv-formats/node_modules/ajv/package.json +127 -0
  180. package/.next/standalone/node_modules/ajv-formats/node_modules/json-schema-traverse/index.js +93 -0
  181. package/.next/standalone/node_modules/ajv-formats/node_modules/json-schema-traverse/package.json +43 -0
  182. package/.next/standalone/node_modules/ajv-formats/package.json +74 -0
  183. package/.next/standalone/node_modules/baseline-browser-mapping/dist/index.cjs +1 -0
  184. package/.next/standalone/node_modules/baseline-browser-mapping/package.json +64 -0
  185. package/.next/standalone/node_modules/browserslist/error.js +12 -0
  186. package/.next/standalone/node_modules/browserslist/index.js +1335 -0
  187. package/.next/standalone/node_modules/browserslist/node.js +502 -0
  188. package/.next/standalone/node_modules/browserslist/package.json +45 -0
  189. package/.next/standalone/node_modules/browserslist/parse.js +78 -0
  190. package/.next/standalone/node_modules/chrome-trace-event/dist/trace-event.js +170 -0
  191. package/.next/standalone/node_modules/chrome-trace-event/package.json +38 -0
  192. package/.next/standalone/node_modules/electron-to-chromium/package.json +44 -0
  193. package/.next/standalone/node_modules/electron-to-chromium/versions.js +229 -0
  194. package/.next/standalone/node_modules/enhanced-resolve/lib/AliasFieldPlugin.js +103 -0
  195. package/.next/standalone/node_modules/enhanced-resolve/lib/AliasPlugin.js +47 -0
  196. package/.next/standalone/node_modules/enhanced-resolve/lib/AliasUtils.js +172 -0
  197. package/.next/standalone/node_modules/enhanced-resolve/lib/AppendPlugin.js +49 -0
  198. package/.next/standalone/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js +677 -0
  199. package/.next/standalone/node_modules/enhanced-resolve/lib/CloneBasenamePlugin.js +53 -0
  200. package/.next/standalone/node_modules/enhanced-resolve/lib/ConditionalPlugin.js +59 -0
  201. package/.next/standalone/node_modules/enhanced-resolve/lib/DescriptionFilePlugin.js +98 -0
  202. package/.next/standalone/node_modules/enhanced-resolve/lib/DescriptionFileUtils.js +200 -0
  203. package/.next/standalone/node_modules/enhanced-resolve/lib/DirectoryExistsPlugin.js +68 -0
  204. package/.next/standalone/node_modules/enhanced-resolve/lib/ExportsFieldPlugin.js +206 -0
  205. package/.next/standalone/node_modules/enhanced-resolve/lib/ExtensionAliasPlugin.js +100 -0
  206. package/.next/standalone/node_modules/enhanced-resolve/lib/FileExistsPlugin.js +61 -0
  207. package/.next/standalone/node_modules/enhanced-resolve/lib/ImportsFieldPlugin.js +223 -0
  208. package/.next/standalone/node_modules/enhanced-resolve/lib/JoinRequestPartPlugin.js +75 -0
  209. package/.next/standalone/node_modules/enhanced-resolve/lib/JoinRequestPlugin.js +45 -0
  210. package/.next/standalone/node_modules/enhanced-resolve/lib/LogInfoPlugin.js +58 -0
  211. package/.next/standalone/node_modules/enhanced-resolve/lib/MainFieldPlugin.js +87 -0
  212. package/.next/standalone/node_modules/enhanced-resolve/lib/ModulesInHierarchicalDirectoriesPlugin.js +47 -0
  213. package/.next/standalone/node_modules/enhanced-resolve/lib/ModulesInRootPlugin.js +49 -0
  214. package/.next/standalone/node_modules/enhanced-resolve/lib/ModulesUtils.js +83 -0
  215. package/.next/standalone/node_modules/enhanced-resolve/lib/NextPlugin.js +33 -0
  216. package/.next/standalone/node_modules/enhanced-resolve/lib/ParsePlugin.js +77 -0
  217. package/.next/standalone/node_modules/enhanced-resolve/lib/PnpPlugin.js +134 -0
  218. package/.next/standalone/node_modules/enhanced-resolve/lib/Resolver.js +820 -0
  219. package/.next/standalone/node_modules/enhanced-resolve/lib/ResolverFactory.js +745 -0
  220. package/.next/standalone/node_modules/enhanced-resolve/lib/RestrictionsPlugin.js +70 -0
  221. package/.next/standalone/node_modules/enhanced-resolve/lib/ResultPlugin.js +43 -0
  222. package/.next/standalone/node_modules/enhanced-resolve/lib/RootsPlugin.js +69 -0
  223. package/.next/standalone/node_modules/enhanced-resolve/lib/SelfReferencePlugin.js +82 -0
  224. package/.next/standalone/node_modules/enhanced-resolve/lib/SymlinkPlugin.js +101 -0
  225. package/.next/standalone/node_modules/enhanced-resolve/lib/SyncAsyncFileSystemDecorator.js +258 -0
  226. package/.next/standalone/node_modules/enhanced-resolve/lib/TryNextPlugin.js +41 -0
  227. package/.next/standalone/node_modules/enhanced-resolve/lib/TsconfigPathsPlugin.js +560 -0
  228. package/.next/standalone/node_modules/enhanced-resolve/lib/UnsafeCachePlugin.js +114 -0
  229. package/.next/standalone/node_modules/enhanced-resolve/lib/UseFilePlugin.js +55 -0
  230. package/.next/standalone/node_modules/enhanced-resolve/lib/createInnerContext.js +46 -0
  231. package/.next/standalone/node_modules/enhanced-resolve/lib/forEachBail.js +50 -0
  232. package/.next/standalone/node_modules/enhanced-resolve/lib/getInnerRequest.js +39 -0
  233. package/.next/standalone/node_modules/enhanced-resolve/lib/getPaths.js +45 -0
  234. package/.next/standalone/node_modules/enhanced-resolve/lib/index.js +229 -0
  235. package/.next/standalone/node_modules/enhanced-resolve/lib/util/entrypoints.js +577 -0
  236. package/.next/standalone/node_modules/enhanced-resolve/lib/util/fs.js +38 -0
  237. package/.next/standalone/node_modules/enhanced-resolve/lib/util/identifier.js +77 -0
  238. package/.next/standalone/node_modules/enhanced-resolve/lib/util/memoize.js +37 -0
  239. package/.next/standalone/node_modules/enhanced-resolve/lib/util/path.js +250 -0
  240. package/.next/standalone/node_modules/enhanced-resolve/package.json +76 -0
  241. package/.next/standalone/node_modules/esbuild/lib/main.js +2242 -0
  242. package/.next/standalone/node_modules/esbuild/package.json +49 -0
  243. package/.next/standalone/node_modules/eslint-scope/lib/definition.js +86 -0
  244. package/.next/standalone/node_modules/eslint-scope/lib/index.js +165 -0
  245. package/.next/standalone/node_modules/eslint-scope/lib/pattern-visitor.js +152 -0
  246. package/.next/standalone/node_modules/eslint-scope/lib/reference.js +167 -0
  247. package/.next/standalone/node_modules/eslint-scope/lib/referencer.js +629 -0
  248. package/.next/standalone/node_modules/eslint-scope/lib/scope-manager.js +247 -0
  249. package/.next/standalone/node_modules/eslint-scope/lib/scope.js +748 -0
  250. package/.next/standalone/node_modules/eslint-scope/lib/variable.js +88 -0
  251. package/.next/standalone/node_modules/eslint-scope/package.json +48 -0
  252. package/.next/standalone/node_modules/esrecurse/esrecurse.js +117 -0
  253. package/.next/standalone/node_modules/esrecurse/node_modules/estraverse/estraverse.js +805 -0
  254. package/.next/standalone/node_modules/esrecurse/node_modules/estraverse/package.json +40 -0
  255. package/.next/standalone/node_modules/esrecurse/package.json +52 -0
  256. package/.next/standalone/node_modules/estraverse/estraverse.js +782 -0
  257. package/.next/standalone/node_modules/estraverse/package.json +40 -0
  258. package/.next/standalone/node_modules/fast-deep-equal/index.js +46 -0
  259. package/.next/standalone/node_modules/fast-deep-equal/package.json +61 -0
  260. package/.next/standalone/node_modules/fast-uri/index.js +340 -0
  261. package/.next/standalone/node_modules/fast-uri/lib/schemes.js +267 -0
  262. package/.next/standalone/node_modules/fast-uri/lib/utils.js +336 -0
  263. package/.next/standalone/node_modules/fast-uri/package.json +69 -0
  264. package/.next/standalone/node_modules/glob-to-regexp/index.js +130 -0
  265. package/.next/standalone/node_modules/glob-to-regexp/package.json +23 -0
  266. package/.next/standalone/node_modules/has-flag/index.js +8 -0
  267. package/.next/standalone/node_modules/has-flag/package.json +46 -0
  268. package/.next/standalone/node_modules/jest-worker/build/Farm.js +206 -0
  269. package/.next/standalone/node_modules/jest-worker/build/FifoQueue.js +171 -0
  270. package/.next/standalone/node_modules/jest-worker/build/PriorityQueue.js +188 -0
  271. package/.next/standalone/node_modules/jest-worker/build/WorkerPool.js +49 -0
  272. package/.next/standalone/node_modules/jest-worker/build/base/BaseWorkerPool.js +201 -0
  273. package/.next/standalone/node_modules/jest-worker/build/index.js +223 -0
  274. package/.next/standalone/node_modules/jest-worker/build/types.js +39 -0
  275. package/.next/standalone/node_modules/jest-worker/build/workers/ChildProcessWorker.js +333 -0
  276. package/.next/standalone/node_modules/jest-worker/build/workers/NodeThreadsWorker.js +344 -0
  277. package/.next/standalone/node_modules/jest-worker/build/workers/messageParent.js +38 -0
  278. package/.next/standalone/node_modules/jest-worker/build/workers/processChild.js +148 -0
  279. package/.next/standalone/node_modules/jest-worker/package.json +38 -0
  280. package/.next/standalone/node_modules/json-parse-even-better-errors/index.js +121 -0
  281. package/.next/standalone/node_modules/json-parse-even-better-errors/package.json +33 -0
  282. package/.next/standalone/node_modules/loader-runner/lib/LoaderLoadingError.js +13 -0
  283. package/.next/standalone/node_modules/loader-runner/lib/LoaderRunner.js +515 -0
  284. package/.next/standalone/node_modules/loader-runner/lib/loadLoader.js +80 -0
  285. package/.next/standalone/node_modules/loader-runner/package.json +57 -0
  286. package/.next/standalone/node_modules/merge-stream/index.js +41 -0
  287. package/.next/standalone/node_modules/merge-stream/package.json +19 -0
  288. package/.next/standalone/node_modules/mime-db/db.json +8519 -0
  289. package/.next/standalone/node_modules/mime-db/index.js +12 -0
  290. package/.next/standalone/node_modules/mime-db/package.json +60 -0
  291. package/.next/standalone/node_modules/mime-types/index.js +188 -0
  292. package/.next/standalone/node_modules/mime-types/package.json +44 -0
  293. package/.next/standalone/node_modules/neo-async/async.js +9184 -0
  294. package/.next/standalone/node_modules/neo-async/package.json +57 -0
  295. package/.next/standalone/node_modules/node-releases/data/processed/envs.json +1 -0
  296. package/.next/standalone/node_modules/node-releases/data/release-schedule/release-schedule.json +1 -0
  297. package/.next/standalone/node_modules/randombytes/index.js +1 -0
  298. package/.next/standalone/node_modules/randombytes/package.json +36 -0
  299. package/.next/standalone/node_modules/serialize-javascript/index.js +268 -0
  300. package/.next/standalone/node_modules/serialize-javascript/package.json +36 -0
  301. package/.next/standalone/node_modules/supports-color/index.js +152 -0
  302. package/.next/standalone/node_modules/supports-color/package.json +58 -0
  303. package/.next/standalone/node_modules/tapable/lib/AsyncParallelBailHook.js +87 -0
  304. package/.next/standalone/node_modules/tapable/lib/AsyncParallelHook.js +37 -0
  305. package/.next/standalone/node_modules/tapable/lib/AsyncSeriesBailHook.js +42 -0
  306. package/.next/standalone/node_modules/tapable/lib/AsyncSeriesHook.js +37 -0
  307. package/.next/standalone/node_modules/tapable/lib/AsyncSeriesLoopHook.js +37 -0
  308. package/.next/standalone/node_modules/tapable/lib/AsyncSeriesWaterfallHook.js +48 -0
  309. package/.next/standalone/node_modules/tapable/lib/Hook.js +183 -0
  310. package/.next/standalone/node_modules/tapable/lib/HookCodeFactory.js +454 -0
  311. package/.next/standalone/node_modules/tapable/lib/HookMap.js +69 -0
  312. package/.next/standalone/node_modules/tapable/lib/MultiHook.js +52 -0
  313. package/.next/standalone/node_modules/tapable/lib/SyncBailHook.js +51 -0
  314. package/.next/standalone/node_modules/tapable/lib/SyncHook.js +46 -0
  315. package/.next/standalone/node_modules/tapable/lib/SyncLoopHook.js +46 -0
  316. package/.next/standalone/node_modules/tapable/lib/SyncWaterfallHook.js +58 -0
  317. package/.next/standalone/node_modules/tapable/lib/index.js +19 -0
  318. package/.next/standalone/node_modules/tapable/package.json +60 -0
  319. package/.next/standalone/node_modules/terser/dist/bundle.min.js +33769 -0
  320. package/.next/standalone/node_modules/terser/dist/package.json +10 -0
  321. package/.next/standalone/node_modules/terser/package.json +158 -0
  322. package/.next/standalone/node_modules/terser-webpack-plugin/dist/index.js +706 -0
  323. package/.next/standalone/node_modules/terser-webpack-plugin/dist/minify.js +49 -0
  324. package/.next/standalone/node_modules/terser-webpack-plugin/dist/options.json +164 -0
  325. package/.next/standalone/node_modules/terser-webpack-plugin/dist/utils.js +678 -0
  326. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/ajv.js +50 -0
  327. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/compile/codegen/code.js +156 -0
  328. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/compile/codegen/index.js +697 -0
  329. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/compile/codegen/scope.js +143 -0
  330. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/compile/errors.js +123 -0
  331. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/compile/index.js +242 -0
  332. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/compile/names.js +28 -0
  333. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/compile/ref_error.js +12 -0
  334. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/compile/resolve.js +155 -0
  335. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/compile/rules.js +26 -0
  336. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/compile/util.js +178 -0
  337. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/compile/validate/applicability.js +19 -0
  338. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/compile/validate/boolSchema.js +50 -0
  339. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/compile/validate/dataType.js +203 -0
  340. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/compile/validate/defaults.js +35 -0
  341. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/compile/validate/index.js +520 -0
  342. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/compile/validate/keyword.js +124 -0
  343. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/compile/validate/subschema.js +81 -0
  344. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/core.js +618 -0
  345. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/refs/data.json +13 -0
  346. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/refs/json-schema-draft-07.json +151 -0
  347. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/runtime/equal.js +7 -0
  348. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/runtime/ucs2length.js +24 -0
  349. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/runtime/uri.js +6 -0
  350. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/runtime/validation_error.js +11 -0
  351. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +49 -0
  352. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +106 -0
  353. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/applicator/allOf.js +23 -0
  354. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +12 -0
  355. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/applicator/contains.js +95 -0
  356. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +85 -0
  357. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/applicator/if.js +66 -0
  358. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/applicator/index.js +44 -0
  359. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/applicator/items.js +52 -0
  360. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/applicator/items2020.js +30 -0
  361. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/applicator/not.js +26 -0
  362. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +60 -0
  363. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +75 -0
  364. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +12 -0
  365. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/applicator/properties.js +54 -0
  366. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +38 -0
  367. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +13 -0
  368. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/code.js +131 -0
  369. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/core/id.js +10 -0
  370. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/core/index.js +16 -0
  371. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/core/ref.js +122 -0
  372. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/discriminator/index.js +104 -0
  373. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/discriminator/types.js +9 -0
  374. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/draft7.js +17 -0
  375. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/format/format.js +92 -0
  376. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/format/index.js +6 -0
  377. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/metadata.js +18 -0
  378. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/validation/const.js +25 -0
  379. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/validation/enum.js +48 -0
  380. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/validation/index.js +33 -0
  381. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/validation/limitItems.js +24 -0
  382. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/validation/limitLength.js +27 -0
  383. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +27 -0
  384. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +24 -0
  385. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +26 -0
  386. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/validation/pattern.js +33 -0
  387. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/validation/required.js +79 -0
  388. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +64 -0
  389. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv/package.json +127 -0
  390. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/definitions/_range.js +28 -0
  391. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/definitions/_required.js +23 -0
  392. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/definitions/_util.js +19 -0
  393. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/definitions/allRequired.js +21 -0
  394. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/definitions/anyRequired.js +10 -0
  395. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/definitions/deepProperties.js +54 -0
  396. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/definitions/deepRequired.js +33 -0
  397. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/definitions/dynamicDefaults.js +84 -0
  398. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/definitions/exclusiveRange.js +10 -0
  399. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/definitions/instanceof.js +54 -0
  400. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/definitions/oneRequired.js +10 -0
  401. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/definitions/patternRequired.js +42 -0
  402. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/definitions/prohibited.js +23 -0
  403. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/definitions/range.js +10 -0
  404. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/definitions/regexp.js +40 -0
  405. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/definitions/select.js +63 -0
  406. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/definitions/transform.js +78 -0
  407. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/definitions/typeof.js +25 -0
  408. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/definitions/uniqueItemProperties.js +65 -0
  409. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/index.js +32 -0
  410. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/keywords/allRequired.js +10 -0
  411. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/keywords/anyRequired.js +10 -0
  412. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/keywords/deepProperties.js +10 -0
  413. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/keywords/deepRequired.js +10 -0
  414. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/keywords/dynamicDefaults.js +10 -0
  415. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/keywords/exclusiveRange.js +10 -0
  416. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/keywords/index.js +43 -0
  417. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/keywords/instanceof.js +10 -0
  418. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/keywords/oneRequired.js +10 -0
  419. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/keywords/patternRequired.js +10 -0
  420. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/keywords/prohibited.js +10 -0
  421. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/keywords/range.js +10 -0
  422. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/keywords/regexp.js +10 -0
  423. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/keywords/select.js +13 -0
  424. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/keywords/transform.js +10 -0
  425. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/keywords/typeof.js +10 -0
  426. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/dist/keywords/uniqueItemProperties.js +10 -0
  427. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/ajv-keywords/package.json +74 -0
  428. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/json-schema-traverse/index.js +93 -0
  429. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/json-schema-traverse/package.json +43 -0
  430. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/schema-utils/dist/ValidationError.js +1061 -0
  431. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/schema-utils/dist/index.js +23 -0
  432. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/schema-utils/dist/keywords/absolutePath.js +83 -0
  433. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/schema-utils/dist/keywords/limit.js +167 -0
  434. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/schema-utils/dist/keywords/undefinedAsNull.js +34 -0
  435. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/schema-utils/dist/util/Range.js +143 -0
  436. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/schema-utils/dist/util/hints.js +85 -0
  437. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/schema-utils/dist/util/memorize.js +34 -0
  438. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/schema-utils/dist/validate.js +215 -0
  439. package/.next/standalone/node_modules/terser-webpack-plugin/node_modules/schema-utils/package.json +89 -0
  440. package/.next/standalone/node_modules/terser-webpack-plugin/package.json +129 -0
  441. package/.next/standalone/node_modules/watchpack/lib/DirectoryWatcher.js +965 -0
  442. package/.next/standalone/node_modules/watchpack/lib/LinkResolver.js +114 -0
  443. package/.next/standalone/node_modules/watchpack/lib/getWatcherManager.js +80 -0
  444. package/.next/standalone/node_modules/watchpack/lib/index.js +554 -0
  445. package/.next/standalone/node_modules/watchpack/lib/reducePlan.js +138 -0
  446. package/.next/standalone/node_modules/watchpack/lib/watchEventSource.js +449 -0
  447. package/.next/standalone/node_modules/watchpack/package.json +74 -0
  448. package/.next/standalone/node_modules/webpack/hot/emitter-event-target.js +7 -0
  449. package/.next/standalone/node_modules/webpack/hot/lazy-compilation-node.js +66 -0
  450. package/.next/standalone/node_modules/webpack/hot/lazy-compilation-universal.js +18 -0
  451. package/.next/standalone/node_modules/webpack/hot/lazy-compilation-web.js +93 -0
  452. package/.next/standalone/node_modules/webpack/hot/load-http.js +7 -0
  453. package/.next/standalone/node_modules/webpack/lib/APIPlugin.js +392 -0
  454. package/.next/standalone/node_modules/webpack/lib/AbstractMethodError.js +56 -0
  455. package/.next/standalone/node_modules/webpack/lib/AsyncDependenciesBlock.js +125 -0
  456. package/.next/standalone/node_modules/webpack/lib/AsyncDependencyToInitialChunkError.js +32 -0
  457. package/.next/standalone/node_modules/webpack/lib/AutomaticPrefetchPlugin.js +66 -0
  458. package/.next/standalone/node_modules/webpack/lib/BannerPlugin.js +136 -0
  459. package/.next/standalone/node_modules/webpack/lib/Cache.js +168 -0
  460. package/.next/standalone/node_modules/webpack/lib/CacheFacade.js +349 -0
  461. package/.next/standalone/node_modules/webpack/lib/CaseSensitiveModulesWarning.js +72 -0
  462. package/.next/standalone/node_modules/webpack/lib/Chunk.js +899 -0
  463. package/.next/standalone/node_modules/webpack/lib/ChunkGraph.js +1968 -0
  464. package/.next/standalone/node_modules/webpack/lib/ChunkGroup.js +615 -0
  465. package/.next/standalone/node_modules/webpack/lib/ChunkRenderError.js +33 -0
  466. package/.next/standalone/node_modules/webpack/lib/ChunkTemplate.js +181 -0
  467. package/.next/standalone/node_modules/webpack/lib/CleanPlugin.js +494 -0
  468. package/.next/standalone/node_modules/webpack/lib/CodeGenerationError.js +35 -0
  469. package/.next/standalone/node_modules/webpack/lib/CodeGenerationResults.js +167 -0
  470. package/.next/standalone/node_modules/webpack/lib/CommentCompilationWarning.js +33 -0
  471. package/.next/standalone/node_modules/webpack/lib/CompatibilityPlugin.js +240 -0
  472. package/.next/standalone/node_modules/webpack/lib/Compilation.js +5870 -0
  473. package/.next/standalone/node_modules/webpack/lib/Compiler.js +1413 -0
  474. package/.next/standalone/node_modules/webpack/lib/ConcatenationScope.js +181 -0
  475. package/.next/standalone/node_modules/webpack/lib/ConcurrentCompilationError.js +18 -0
  476. package/.next/standalone/node_modules/webpack/lib/ConditionalInitFragment.js +120 -0
  477. package/.next/standalone/node_modules/webpack/lib/ConstPlugin.js +567 -0
  478. package/.next/standalone/node_modules/webpack/lib/ContextExclusionPlugin.js +33 -0
  479. package/.next/standalone/node_modules/webpack/lib/ContextModule.js +1405 -0
  480. package/.next/standalone/node_modules/webpack/lib/ContextModuleFactory.js +514 -0
  481. package/.next/standalone/node_modules/webpack/lib/ContextReplacementPlugin.js +227 -0
  482. package/.next/standalone/node_modules/webpack/lib/CssModule.js +179 -0
  483. package/.next/standalone/node_modules/webpack/lib/DefinePlugin.js +873 -0
  484. package/.next/standalone/node_modules/webpack/lib/DelegatedModule.js +279 -0
  485. package/.next/standalone/node_modules/webpack/lib/DelegatedModuleFactoryPlugin.js +116 -0
  486. package/.next/standalone/node_modules/webpack/lib/DelegatedPlugin.js +49 -0
  487. package/.next/standalone/node_modules/webpack/lib/DependenciesBlock.js +120 -0
  488. package/.next/standalone/node_modules/webpack/lib/Dependency.js +390 -0
  489. package/.next/standalone/node_modules/webpack/lib/DependencyTemplate.js +71 -0
  490. package/.next/standalone/node_modules/webpack/lib/DependencyTemplates.js +67 -0
  491. package/.next/standalone/node_modules/webpack/lib/DllEntryPlugin.js +76 -0
  492. package/.next/standalone/node_modules/webpack/lib/DllModule.js +175 -0
  493. package/.next/standalone/node_modules/webpack/lib/DllModuleFactory.js +38 -0
  494. package/.next/standalone/node_modules/webpack/lib/DllPlugin.js +73 -0
  495. package/.next/standalone/node_modules/webpack/lib/DllReferencePlugin.js +189 -0
  496. package/.next/standalone/node_modules/webpack/lib/DotenvPlugin.js +468 -0
  497. package/.next/standalone/node_modules/webpack/lib/DynamicEntryPlugin.js +87 -0
  498. package/.next/standalone/node_modules/webpack/lib/EntryOptionPlugin.js +98 -0
  499. package/.next/standalone/node_modules/webpack/lib/EntryPlugin.js +72 -0
  500. package/.next/standalone/node_modules/webpack/lib/Entrypoint.js +120 -0
  501. package/.next/standalone/node_modules/webpack/lib/EnvironmentNotSupportAsyncWarning.js +50 -0
  502. package/.next/standalone/node_modules/webpack/lib/EnvironmentPlugin.js +74 -0
  503. package/.next/standalone/node_modules/webpack/lib/ErrorHelpers.js +100 -0
  504. package/.next/standalone/node_modules/webpack/lib/EvalDevToolModulePlugin.js +132 -0
  505. package/.next/standalone/node_modules/webpack/lib/EvalSourceMapDevToolPlugin.js +245 -0
  506. package/.next/standalone/node_modules/webpack/lib/ExportsInfo.js +1693 -0
  507. package/.next/standalone/node_modules/webpack/lib/ExportsInfoApiPlugin.js +87 -0
  508. package/.next/standalone/node_modules/webpack/lib/ExternalModule.js +1169 -0
  509. package/.next/standalone/node_modules/webpack/lib/ExternalModuleFactoryPlugin.js +363 -0
  510. package/.next/standalone/node_modules/webpack/lib/ExternalsPlugin.js +92 -0
  511. package/.next/standalone/node_modules/webpack/lib/FalseIIFEUmdWarning.js +20 -0
  512. package/.next/standalone/node_modules/webpack/lib/FileSystemInfo.js +4131 -0
  513. package/.next/standalone/node_modules/webpack/lib/FlagAllModulesAsUsedPlugin.js +55 -0
  514. package/.next/standalone/node_modules/webpack/lib/FlagDependencyExportsPlugin.js +437 -0
  515. package/.next/standalone/node_modules/webpack/lib/FlagDependencyUsagePlugin.js +348 -0
  516. package/.next/standalone/node_modules/webpack/lib/Generator.js +188 -0
  517. package/.next/standalone/node_modules/webpack/lib/GraphHelpers.js +46 -0
  518. package/.next/standalone/node_modules/webpack/lib/HarmonyLinkingError.js +17 -0
  519. package/.next/standalone/node_modules/webpack/lib/HookWebpackError.js +121 -0
  520. package/.next/standalone/node_modules/webpack/lib/HotModuleReplacementPlugin.js +930 -0
  521. package/.next/standalone/node_modules/webpack/lib/HotUpdateChunk.js +16 -0
  522. package/.next/standalone/node_modules/webpack/lib/IgnoreErrorModuleFactory.js +39 -0
  523. package/.next/standalone/node_modules/webpack/lib/IgnorePlugin.js +105 -0
  524. package/.next/standalone/node_modules/webpack/lib/IgnoreWarningsPlugin.js +38 -0
  525. package/.next/standalone/node_modules/webpack/lib/InitFragment.js +204 -0
  526. package/.next/standalone/node_modules/webpack/lib/InvalidDependenciesModuleWarning.js +44 -0
  527. package/.next/standalone/node_modules/webpack/lib/JavascriptMetaInfoPlugin.js +78 -0
  528. package/.next/standalone/node_modules/webpack/lib/LibManifestPlugin.js +144 -0
  529. package/.next/standalone/node_modules/webpack/lib/LibraryTemplatePlugin.js +48 -0
  530. package/.next/standalone/node_modules/webpack/lib/LoaderOptionsPlugin.js +81 -0
  531. package/.next/standalone/node_modules/webpack/lib/LoaderTargetPlugin.js +39 -0
  532. package/.next/standalone/node_modules/webpack/lib/MainTemplate.js +371 -0
  533. package/.next/standalone/node_modules/webpack/lib/ManifestPlugin.js +238 -0
  534. package/.next/standalone/node_modules/webpack/lib/Module.js +1279 -0
  535. package/.next/standalone/node_modules/webpack/lib/ModuleBuildError.js +83 -0
  536. package/.next/standalone/node_modules/webpack/lib/ModuleDependencyError.js +44 -0
  537. package/.next/standalone/node_modules/webpack/lib/ModuleDependencyWarning.js +49 -0
  538. package/.next/standalone/node_modules/webpack/lib/ModuleError.js +67 -0
  539. package/.next/standalone/node_modules/webpack/lib/ModuleFactory.js +57 -0
  540. package/.next/standalone/node_modules/webpack/lib/ModuleFilenameHelpers.js +387 -0
  541. package/.next/standalone/node_modules/webpack/lib/ModuleGraph.js +1024 -0
  542. package/.next/standalone/node_modules/webpack/lib/ModuleGraphConnection.js +208 -0
  543. package/.next/standalone/node_modules/webpack/lib/ModuleHashingError.js +31 -0
  544. package/.next/standalone/node_modules/webpack/lib/ModuleInfoHeaderPlugin.js +318 -0
  545. package/.next/standalone/node_modules/webpack/lib/ModuleNotFoundError.js +90 -0
  546. package/.next/standalone/node_modules/webpack/lib/ModuleParseError.js +125 -0
  547. package/.next/standalone/node_modules/webpack/lib/ModuleProfile.js +108 -0
  548. package/.next/standalone/node_modules/webpack/lib/ModuleRestoreError.js +46 -0
  549. package/.next/standalone/node_modules/webpack/lib/ModuleSourceTypeConstants.js +179 -0
  550. package/.next/standalone/node_modules/webpack/lib/ModuleStoreError.js +45 -0
  551. package/.next/standalone/node_modules/webpack/lib/ModuleTemplate.js +173 -0
  552. package/.next/standalone/node_modules/webpack/lib/ModuleTypeConstants.js +190 -0
  553. package/.next/standalone/node_modules/webpack/lib/ModuleWarning.js +68 -0
  554. package/.next/standalone/node_modules/webpack/lib/MultiCompiler.js +678 -0
  555. package/.next/standalone/node_modules/webpack/lib/MultiStats.js +213 -0
  556. package/.next/standalone/node_modules/webpack/lib/MultiWatching.js +77 -0
  557. package/.next/standalone/node_modules/webpack/lib/NoEmitOnErrorsPlugin.js +30 -0
  558. package/.next/standalone/node_modules/webpack/lib/NoModeWarning.js +23 -0
  559. package/.next/standalone/node_modules/webpack/lib/NodeStuffInWebError.js +35 -0
  560. package/.next/standalone/node_modules/webpack/lib/NodeStuffPlugin.js +587 -0
  561. package/.next/standalone/node_modules/webpack/lib/NormalModule.js +1796 -0
  562. package/.next/standalone/node_modules/webpack/lib/NormalModuleFactory.js +1455 -0
  563. package/.next/standalone/node_modules/webpack/lib/NormalModuleReplacementPlugin.js +75 -0
  564. package/.next/standalone/node_modules/webpack/lib/OptimizationStages.js +10 -0
  565. package/.next/standalone/node_modules/webpack/lib/OptionsApply.js +24 -0
  566. package/.next/standalone/node_modules/webpack/lib/Parser.js +40 -0
  567. package/.next/standalone/node_modules/webpack/lib/PlatformPlugin.js +41 -0
  568. package/.next/standalone/node_modules/webpack/lib/PrefetchPlugin.js +56 -0
  569. package/.next/standalone/node_modules/webpack/lib/ProgressPlugin.js +712 -0
  570. package/.next/standalone/node_modules/webpack/lib/ProvidePlugin.js +121 -0
  571. package/.next/standalone/node_modules/webpack/lib/RawModule.js +180 -0
  572. package/.next/standalone/node_modules/webpack/lib/RecordIdsPlugin.js +216 -0
  573. package/.next/standalone/node_modules/webpack/lib/RequestShortener.js +36 -0
  574. package/.next/standalone/node_modules/webpack/lib/RequireJsStuffPlugin.js +84 -0
  575. package/.next/standalone/node_modules/webpack/lib/ResolverFactory.js +156 -0
  576. package/.next/standalone/node_modules/webpack/lib/RuntimeGlobals.js +450 -0
  577. package/.next/standalone/node_modules/webpack/lib/RuntimeModule.js +225 -0
  578. package/.next/standalone/node_modules/webpack/lib/RuntimePlugin.js +547 -0
  579. package/.next/standalone/node_modules/webpack/lib/RuntimeTemplate.js +1288 -0
  580. package/.next/standalone/node_modules/webpack/lib/SelfModuleFactory.js +33 -0
  581. package/.next/standalone/node_modules/webpack/lib/SizeFormatHelpers.js +25 -0
  582. package/.next/standalone/node_modules/webpack/lib/SourceMapDevToolModuleOptionsPlugin.js +51 -0
  583. package/.next/standalone/node_modules/webpack/lib/SourceMapDevToolPlugin.js +638 -0
  584. package/.next/standalone/node_modules/webpack/lib/Stats.js +88 -0
  585. package/.next/standalone/node_modules/webpack/lib/Template.js +427 -0
  586. package/.next/standalone/node_modules/webpack/lib/TemplatedPathPlugin.js +400 -0
  587. package/.next/standalone/node_modules/webpack/lib/UnhandledSchemeError.js +34 -0
  588. package/.next/standalone/node_modules/webpack/lib/UnsupportedFeatureWarning.js +33 -0
  589. package/.next/standalone/node_modules/webpack/lib/UseStrictPlugin.js +81 -0
  590. package/.next/standalone/node_modules/webpack/lib/WarnCaseSensitiveModulesPlugin.js +64 -0
  591. package/.next/standalone/node_modules/webpack/lib/WarnDeprecatedOptionPlugin.js +60 -0
  592. package/.next/standalone/node_modules/webpack/lib/WarnNoModeSetPlugin.js +27 -0
  593. package/.next/standalone/node_modules/webpack/lib/WatchIgnorePlugin.js +155 -0
  594. package/.next/standalone/node_modules/webpack/lib/Watching.js +531 -0
  595. package/.next/standalone/node_modules/webpack/lib/WebpackError.js +81 -0
  596. package/.next/standalone/node_modules/webpack/lib/WebpackIsIncludedPlugin.js +93 -0
  597. package/.next/standalone/node_modules/webpack/lib/WebpackOptionsApply.js +931 -0
  598. package/.next/standalone/node_modules/webpack/lib/WebpackOptionsDefaulter.js +26 -0
  599. package/.next/standalone/node_modules/webpack/lib/asset/AssetBytesGenerator.js +172 -0
  600. package/.next/standalone/node_modules/webpack/lib/asset/AssetBytesParser.js +37 -0
  601. package/.next/standalone/node_modules/webpack/lib/asset/AssetGenerator.js +807 -0
  602. package/.next/standalone/node_modules/webpack/lib/asset/AssetModulesPlugin.js +343 -0
  603. package/.next/standalone/node_modules/webpack/lib/asset/AssetParser.js +69 -0
  604. package/.next/standalone/node_modules/webpack/lib/asset/AssetSourceGenerator.js +171 -0
  605. package/.next/standalone/node_modules/webpack/lib/asset/AssetSourceParser.js +37 -0
  606. package/.next/standalone/node_modules/webpack/lib/asset/RawDataUrlModule.js +175 -0
  607. package/.next/standalone/node_modules/webpack/lib/async-modules/AsyncModuleHelpers.js +52 -0
  608. package/.next/standalone/node_modules/webpack/lib/async-modules/AwaitDependenciesInitFragment.js +90 -0
  609. package/.next/standalone/node_modules/webpack/lib/async-modules/InferAsyncModulesPlugin.js +54 -0
  610. package/.next/standalone/node_modules/webpack/lib/buildChunkGraph.js +1392 -0
  611. package/.next/standalone/node_modules/webpack/lib/cache/AddBuildDependenciesPlugin.js +32 -0
  612. package/.next/standalone/node_modules/webpack/lib/cache/AddManagedPathsPlugin.js +40 -0
  613. package/.next/standalone/node_modules/webpack/lib/cache/IdleFileCachePlugin.js +242 -0
  614. package/.next/standalone/node_modules/webpack/lib/cache/MemoryCachePlugin.js +57 -0
  615. package/.next/standalone/node_modules/webpack/lib/cache/MemoryWithGcCachePlugin.js +142 -0
  616. package/.next/standalone/node_modules/webpack/lib/cache/PackFileCacheStrategy.js +1600 -0
  617. package/.next/standalone/node_modules/webpack/lib/cache/ResolverCachePlugin.js +450 -0
  618. package/.next/standalone/node_modules/webpack/lib/cache/getLazyHashedEtag.js +91 -0
  619. package/.next/standalone/node_modules/webpack/lib/cache/mergeEtags.js +71 -0
  620. package/.next/standalone/node_modules/webpack/lib/cli.js +859 -0
  621. package/.next/standalone/node_modules/webpack/lib/config/browserslistTargetHandler.js +388 -0
  622. package/.next/standalone/node_modules/webpack/lib/config/defaults.js +2086 -0
  623. package/.next/standalone/node_modules/webpack/lib/config/normalization.js +681 -0
  624. package/.next/standalone/node_modules/webpack/lib/config/target.js +389 -0
  625. package/.next/standalone/node_modules/webpack/lib/container/ContainerEntryDependency.js +47 -0
  626. package/.next/standalone/node_modules/webpack/lib/container/ContainerEntryModule.js +300 -0
  627. package/.next/standalone/node_modules/webpack/lib/container/ContainerEntryModuleFactory.js +27 -0
  628. package/.next/standalone/node_modules/webpack/lib/container/ContainerExposedDependency.js +61 -0
  629. package/.next/standalone/node_modules/webpack/lib/container/ContainerPlugin.js +118 -0
  630. package/.next/standalone/node_modules/webpack/lib/container/ContainerReferencePlugin.js +139 -0
  631. package/.next/standalone/node_modules/webpack/lib/container/FallbackDependency.js +65 -0
  632. package/.next/standalone/node_modules/webpack/lib/container/FallbackItemDependency.js +33 -0
  633. package/.next/standalone/node_modules/webpack/lib/container/FallbackModule.js +191 -0
  634. package/.next/standalone/node_modules/webpack/lib/container/FallbackModuleFactory.js +27 -0
  635. package/.next/standalone/node_modules/webpack/lib/container/HoistContainerReferencesPlugin.js +256 -0
  636. package/.next/standalone/node_modules/webpack/lib/container/ModuleFederationPlugin.js +131 -0
  637. package/.next/standalone/node_modules/webpack/lib/container/RemoteModule.js +203 -0
  638. package/.next/standalone/node_modules/webpack/lib/container/RemoteRuntimeModule.js +144 -0
  639. package/.next/standalone/node_modules/webpack/lib/container/RemoteToExternalDependency.js +33 -0
  640. package/.next/standalone/node_modules/webpack/lib/container/options.js +105 -0
  641. package/.next/standalone/node_modules/webpack/lib/css/CssGenerator.js +580 -0
  642. package/.next/standalone/node_modules/webpack/lib/css/CssLoadingRuntimeModule.js +513 -0
  643. package/.next/standalone/node_modules/webpack/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
  644. package/.next/standalone/node_modules/webpack/lib/css/CssModulesPlugin.js +932 -0
  645. package/.next/standalone/node_modules/webpack/lib/css/CssParser.js +2621 -0
  646. package/.next/standalone/node_modules/webpack/lib/css/walkCssTokens.js +1740 -0
  647. package/.next/standalone/node_modules/webpack/lib/debug/ProfilingPlugin.js +589 -0
  648. package/.next/standalone/node_modules/webpack/lib/dependencies/AMDDefineDependency.js +267 -0
  649. package/.next/standalone/node_modules/webpack/lib/dependencies/AMDDefineDependencyParserPlugin.js +504 -0
  650. package/.next/standalone/node_modules/webpack/lib/dependencies/AMDPlugin.js +243 -0
  651. package/.next/standalone/node_modules/webpack/lib/dependencies/AMDRequireArrayDependency.js +124 -0
  652. package/.next/standalone/node_modules/webpack/lib/dependencies/AMDRequireContextDependency.js +69 -0
  653. package/.next/standalone/node_modules/webpack/lib/dependencies/AMDRequireDependenciesBlock.js +28 -0
  654. package/.next/standalone/node_modules/webpack/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +425 -0
  655. package/.next/standalone/node_modules/webpack/lib/dependencies/AMDRequireDependency.js +189 -0
  656. package/.next/standalone/node_modules/webpack/lib/dependencies/AMDRequireItemDependency.js +41 -0
  657. package/.next/standalone/node_modules/webpack/lib/dependencies/AMDRuntimeModules.js +50 -0
  658. package/.next/standalone/node_modules/webpack/lib/dependencies/CachedConstDependency.js +135 -0
  659. package/.next/standalone/node_modules/webpack/lib/dependencies/CommonJsDependencyHelpers.js +65 -0
  660. package/.next/standalone/node_modules/webpack/lib/dependencies/CommonJsExportRequireDependency.js +412 -0
  661. package/.next/standalone/node_modules/webpack/lib/dependencies/CommonJsExportsDependency.js +184 -0
  662. package/.next/standalone/node_modules/webpack/lib/dependencies/CommonJsExportsParserPlugin.js +425 -0
  663. package/.next/standalone/node_modules/webpack/lib/dependencies/CommonJsFullRequireDependency.js +162 -0
  664. package/.next/standalone/node_modules/webpack/lib/dependencies/CommonJsImportsParserPlugin.js +805 -0
  665. package/.next/standalone/node_modules/webpack/lib/dependencies/CommonJsPlugin.js +316 -0
  666. package/.next/standalone/node_modules/webpack/lib/dependencies/CommonJsRequireContextDependency.js +73 -0
  667. package/.next/standalone/node_modules/webpack/lib/dependencies/CommonJsRequireDependency.js +42 -0
  668. package/.next/standalone/node_modules/webpack/lib/dependencies/CommonJsSelfReferenceDependency.js +156 -0
  669. package/.next/standalone/node_modules/webpack/lib/dependencies/ConstDependency.js +118 -0
  670. package/.next/standalone/node_modules/webpack/lib/dependencies/ContextDependency.js +183 -0
  671. package/.next/standalone/node_modules/webpack/lib/dependencies/ContextDependencyHelpers.js +277 -0
  672. package/.next/standalone/node_modules/webpack/lib/dependencies/ContextDependencyTemplateAsId.js +63 -0
  673. package/.next/standalone/node_modules/webpack/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +62 -0
  674. package/.next/standalone/node_modules/webpack/lib/dependencies/ContextElementDependency.js +147 -0
  675. package/.next/standalone/node_modules/webpack/lib/dependencies/CreateScriptUrlDependency.js +75 -0
  676. package/.next/standalone/node_modules/webpack/lib/dependencies/CriticalDependencyWarning.js +29 -0
  677. package/.next/standalone/node_modules/webpack/lib/dependencies/CssIcssExportDependency.js +537 -0
  678. package/.next/standalone/node_modules/webpack/lib/dependencies/CssIcssImportDependency.js +183 -0
  679. package/.next/standalone/node_modules/webpack/lib/dependencies/CssIcssSymbolDependency.js +131 -0
  680. package/.next/standalone/node_modules/webpack/lib/dependencies/CssImportDependency.js +120 -0
  681. package/.next/standalone/node_modules/webpack/lib/dependencies/CssUrlDependency.js +189 -0
  682. package/.next/standalone/node_modules/webpack/lib/dependencies/DelegatedSourceDependency.js +33 -0
  683. package/.next/standalone/node_modules/webpack/lib/dependencies/DllEntryDependency.js +61 -0
  684. package/.next/standalone/node_modules/webpack/lib/dependencies/DynamicExports.js +73 -0
  685. package/.next/standalone/node_modules/webpack/lib/dependencies/EntryDependency.js +30 -0
  686. package/.next/standalone/node_modules/webpack/lib/dependencies/ExportsInfoDependency.js +161 -0
  687. package/.next/standalone/node_modules/webpack/lib/dependencies/ExternalModuleDependency.js +109 -0
  688. package/.next/standalone/node_modules/webpack/lib/dependencies/ExternalModuleInitFragment.js +137 -0
  689. package/.next/standalone/node_modules/webpack/lib/dependencies/ExternalModuleInitFragmentDependency.js +87 -0
  690. package/.next/standalone/node_modules/webpack/lib/dependencies/HarmonyAcceptDependency.js +237 -0
  691. package/.next/standalone/node_modules/webpack/lib/dependencies/HarmonyAcceptImportDependency.js +37 -0
  692. package/.next/standalone/node_modules/webpack/lib/dependencies/HarmonyCompatibilityDependency.js +91 -0
  693. package/.next/standalone/node_modules/webpack/lib/dependencies/HarmonyDetectionParserPlugin.js +103 -0
  694. package/.next/standalone/node_modules/webpack/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +164 -0
  695. package/.next/standalone/node_modules/webpack/lib/dependencies/HarmonyExportDependencyParserPlugin.js +258 -0
  696. package/.next/standalone/node_modules/webpack/lib/dependencies/HarmonyExportExpressionDependency.js +211 -0
  697. package/.next/standalone/node_modules/webpack/lib/dependencies/HarmonyExportHeaderDependency.js +78 -0
  698. package/.next/standalone/node_modules/webpack/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +1494 -0
  699. package/.next/standalone/node_modules/webpack/lib/dependencies/HarmonyExportInitFragment.js +191 -0
  700. package/.next/standalone/node_modules/webpack/lib/dependencies/HarmonyExportSpecifierDependency.js +127 -0
  701. package/.next/standalone/node_modules/webpack/lib/dependencies/HarmonyExports.js +46 -0
  702. package/.next/standalone/node_modules/webpack/lib/dependencies/HarmonyImportDependency.js +429 -0
  703. package/.next/standalone/node_modules/webpack/lib/dependencies/HarmonyImportDependencyParserPlugin.js +669 -0
  704. package/.next/standalone/node_modules/webpack/lib/dependencies/HarmonyImportSideEffectDependency.js +85 -0
  705. package/.next/standalone/node_modules/webpack/lib/dependencies/HarmonyImportSpecifierDependency.js +514 -0
  706. package/.next/standalone/node_modules/webpack/lib/dependencies/HarmonyModulesPlugin.js +154 -0
  707. package/.next/standalone/node_modules/webpack/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +39 -0
  708. package/.next/standalone/node_modules/webpack/lib/dependencies/ImportContextDependency.js +81 -0
  709. package/.next/standalone/node_modules/webpack/lib/dependencies/ImportDependency.js +158 -0
  710. package/.next/standalone/node_modules/webpack/lib/dependencies/ImportEagerDependency.js +76 -0
  711. package/.next/standalone/node_modules/webpack/lib/dependencies/ImportMetaContextDependency.js +42 -0
  712. package/.next/standalone/node_modules/webpack/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +312 -0
  713. package/.next/standalone/node_modules/webpack/lib/dependencies/ImportMetaContextPlugin.js +72 -0
  714. package/.next/standalone/node_modules/webpack/lib/dependencies/ImportMetaHotAcceptDependency.js +41 -0
  715. package/.next/standalone/node_modules/webpack/lib/dependencies/ImportMetaHotDeclineDependency.js +42 -0
  716. package/.next/standalone/node_modules/webpack/lib/dependencies/ImportMetaPlugin.js +447 -0
  717. package/.next/standalone/node_modules/webpack/lib/dependencies/ImportParserPlugin.js +612 -0
  718. package/.next/standalone/node_modules/webpack/lib/dependencies/ImportPhase.js +121 -0
  719. package/.next/standalone/node_modules/webpack/lib/dependencies/ImportPlugin.js +98 -0
  720. package/.next/standalone/node_modules/webpack/lib/dependencies/ImportWeakDependency.js +74 -0
  721. package/.next/standalone/node_modules/webpack/lib/dependencies/JsonExportsDependency.js +137 -0
  722. package/.next/standalone/node_modules/webpack/lib/dependencies/LoaderDependency.js +38 -0
  723. package/.next/standalone/node_modules/webpack/lib/dependencies/LoaderImportDependency.js +39 -0
  724. package/.next/standalone/node_modules/webpack/lib/dependencies/LoaderPlugin.js +294 -0
  725. package/.next/standalone/node_modules/webpack/lib/dependencies/LocalModule.js +60 -0
  726. package/.next/standalone/node_modules/webpack/lib/dependencies/LocalModuleDependency.js +84 -0
  727. package/.next/standalone/node_modules/webpack/lib/dependencies/LocalModulesHelpers.js +68 -0
  728. package/.next/standalone/node_modules/webpack/lib/dependencies/ModuleDecoratorDependency.js +136 -0
  729. package/.next/standalone/node_modules/webpack/lib/dependencies/ModuleDependency.js +100 -0
  730. package/.next/standalone/node_modules/webpack/lib/dependencies/ModuleDependencyTemplateAsId.js +35 -0
  731. package/.next/standalone/node_modules/webpack/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +39 -0
  732. package/.next/standalone/node_modules/webpack/lib/dependencies/ModuleHotAcceptDependency.js +41 -0
  733. package/.next/standalone/node_modules/webpack/lib/dependencies/ModuleHotDeclineDependency.js +42 -0
  734. package/.next/standalone/node_modules/webpack/lib/dependencies/ModuleInitFragmentDependency.js +87 -0
  735. package/.next/standalone/node_modules/webpack/lib/dependencies/NullDependency.js +42 -0
  736. package/.next/standalone/node_modules/webpack/lib/dependencies/PrefetchDependency.js +27 -0
  737. package/.next/standalone/node_modules/webpack/lib/dependencies/ProvidedDependency.js +156 -0
  738. package/.next/standalone/node_modules/webpack/lib/dependencies/PureExpressionDependency.js +161 -0
  739. package/.next/standalone/node_modules/webpack/lib/dependencies/RequireContextDependency.js +38 -0
  740. package/.next/standalone/node_modules/webpack/lib/dependencies/RequireContextDependencyParserPlugin.js +69 -0
  741. package/.next/standalone/node_modules/webpack/lib/dependencies/RequireContextPlugin.js +167 -0
  742. package/.next/standalone/node_modules/webpack/lib/dependencies/RequireEnsureDependenciesBlock.js +29 -0
  743. package/.next/standalone/node_modules/webpack/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +145 -0
  744. package/.next/standalone/node_modules/webpack/lib/dependencies/RequireEnsureDependency.js +115 -0
  745. package/.next/standalone/node_modules/webpack/lib/dependencies/RequireEnsureItemDependency.js +36 -0
  746. package/.next/standalone/node_modules/webpack/lib/dependencies/RequireEnsurePlugin.js +86 -0
  747. package/.next/standalone/node_modules/webpack/lib/dependencies/RequireHeaderDependency.js +70 -0
  748. package/.next/standalone/node_modules/webpack/lib/dependencies/RequireIncludeDependency.js +79 -0
  749. package/.next/standalone/node_modules/webpack/lib/dependencies/RequireIncludeDependencyParserPlugin.js +100 -0
  750. package/.next/standalone/node_modules/webpack/lib/dependencies/RequireIncludePlugin.js +63 -0
  751. package/.next/standalone/node_modules/webpack/lib/dependencies/RequireResolveContextDependency.js +67 -0
  752. package/.next/standalone/node_modules/webpack/lib/dependencies/RequireResolveDependency.js +58 -0
  753. package/.next/standalone/node_modules/webpack/lib/dependencies/RequireResolveHeaderDependency.js +81 -0
  754. package/.next/standalone/node_modules/webpack/lib/dependencies/RuntimeRequirementsDependency.js +85 -0
  755. package/.next/standalone/node_modules/webpack/lib/dependencies/StaticExportsDependency.js +72 -0
  756. package/.next/standalone/node_modules/webpack/lib/dependencies/SystemPlugin.js +168 -0
  757. package/.next/standalone/node_modules/webpack/lib/dependencies/SystemRuntimeModule.js +35 -0
  758. package/.next/standalone/node_modules/webpack/lib/dependencies/URLContextDependency.js +65 -0
  759. package/.next/standalone/node_modules/webpack/lib/dependencies/URLDependency.js +165 -0
  760. package/.next/standalone/node_modules/webpack/lib/dependencies/URLPlugin.js +67 -0
  761. package/.next/standalone/node_modules/webpack/lib/dependencies/UnsupportedDependency.js +82 -0
  762. package/.next/standalone/node_modules/webpack/lib/dependencies/WebAssemblyExportImportedDependency.js +93 -0
  763. package/.next/standalone/node_modules/webpack/lib/dependencies/WebAssemblyImportDependency.js +108 -0
  764. package/.next/standalone/node_modules/webpack/lib/dependencies/WebpackIsIncludedDependency.js +84 -0
  765. package/.next/standalone/node_modules/webpack/lib/dependencies/WorkerDependency.js +141 -0
  766. package/.next/standalone/node_modules/webpack/lib/dependencies/WorkerPlugin.js +565 -0
  767. package/.next/standalone/node_modules/webpack/lib/dependencies/getFunctionExpression.js +66 -0
  768. package/.next/standalone/node_modules/webpack/lib/dependencies/processExportInfo.js +67 -0
  769. package/.next/standalone/node_modules/webpack/lib/electron/ElectronTargetPlugin.js +69 -0
  770. package/.next/standalone/node_modules/webpack/lib/errors/BuildCycleError.js +30 -0
  771. package/.next/standalone/node_modules/webpack/lib/esm/ExportWebpackRequireRuntimeModule.js +30 -0
  772. package/.next/standalone/node_modules/webpack/lib/esm/ModuleChunkFormatPlugin.js +273 -0
  773. package/.next/standalone/node_modules/webpack/lib/esm/ModuleChunkLoadingPlugin.js +143 -0
  774. package/.next/standalone/node_modules/webpack/lib/esm/ModuleChunkLoadingRuntimeModule.js +426 -0
  775. package/.next/standalone/node_modules/webpack/lib/formatLocation.js +67 -0
  776. package/.next/standalone/node_modules/webpack/lib/hmr/HotModuleReplacement.runtime.js +419 -0
  777. package/.next/standalone/node_modules/webpack/lib/hmr/HotModuleReplacementRuntimeModule.js +42 -0
  778. package/.next/standalone/node_modules/webpack/lib/hmr/JavascriptHotModuleReplacement.runtime.js +471 -0
  779. package/.next/standalone/node_modules/webpack/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  780. package/.next/standalone/node_modules/webpack/lib/hmr/LazyCompilationPlugin.js +473 -0
  781. package/.next/standalone/node_modules/webpack/lib/hmr/lazyCompilationBackend.js +167 -0
  782. package/.next/standalone/node_modules/webpack/lib/ids/ChunkModuleIdRangePlugin.js +94 -0
  783. package/.next/standalone/node_modules/webpack/lib/ids/DeterministicChunkIdsPlugin.js +72 -0
  784. package/.next/standalone/node_modules/webpack/lib/ids/DeterministicModuleIdsPlugin.js +97 -0
  785. package/.next/standalone/node_modules/webpack/lib/ids/HashedModuleIdsPlugin.js +90 -0
  786. package/.next/standalone/node_modules/webpack/lib/ids/IdHelpers.js +492 -0
  787. package/.next/standalone/node_modules/webpack/lib/ids/NamedChunkIdsPlugin.js +90 -0
  788. package/.next/standalone/node_modules/webpack/lib/ids/NamedModuleIdsPlugin.js +67 -0
  789. package/.next/standalone/node_modules/webpack/lib/ids/NaturalChunkIdsPlugin.js +35 -0
  790. package/.next/standalone/node_modules/webpack/lib/ids/NaturalModuleIdsPlugin.js +40 -0
  791. package/.next/standalone/node_modules/webpack/lib/ids/OccurrenceChunkIdsPlugin.js +86 -0
  792. package/.next/standalone/node_modules/webpack/lib/ids/OccurrenceModuleIdsPlugin.js +168 -0
  793. package/.next/standalone/node_modules/webpack/lib/ids/SyncModuleIdsPlugin.js +155 -0
  794. package/.next/standalone/node_modules/webpack/lib/index.js +681 -0
  795. package/.next/standalone/node_modules/webpack/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +153 -0
  796. package/.next/standalone/node_modules/webpack/lib/javascript/BasicEvaluatedExpression.js +603 -0
  797. package/.next/standalone/node_modules/webpack/lib/javascript/ChunkFormatHelpers.js +70 -0
  798. package/.next/standalone/node_modules/webpack/lib/javascript/ChunkHelpers.js +45 -0
  799. package/.next/standalone/node_modules/webpack/lib/javascript/CommonJsChunkFormatPlugin.js +148 -0
  800. package/.next/standalone/node_modules/webpack/lib/javascript/EnableChunkLoadingPlugin.js +127 -0
  801. package/.next/standalone/node_modules/webpack/lib/javascript/JavascriptGenerator.js +277 -0
  802. package/.next/standalone/node_modules/webpack/lib/javascript/JavascriptModulesPlugin.js +1852 -0
  803. package/.next/standalone/node_modules/webpack/lib/javascript/JavascriptParser.js +5476 -0
  804. package/.next/standalone/node_modules/webpack/lib/javascript/JavascriptParserHelpers.js +129 -0
  805. package/.next/standalone/node_modules/webpack/lib/javascript/StartupHelpers.js +178 -0
  806. package/.next/standalone/node_modules/webpack/lib/json/JsonData.js +74 -0
  807. package/.next/standalone/node_modules/webpack/lib/json/JsonGenerator.js +233 -0
  808. package/.next/standalone/node_modules/webpack/lib/json/JsonModulesPlugin.js +66 -0
  809. package/.next/standalone/node_modules/webpack/lib/json/JsonParser.js +92 -0
  810. package/.next/standalone/node_modules/webpack/lib/library/AbstractLibraryPlugin.js +339 -0
  811. package/.next/standalone/node_modules/webpack/lib/library/AmdLibraryPlugin.js +181 -0
  812. package/.next/standalone/node_modules/webpack/lib/library/AssignLibraryPlugin.js +445 -0
  813. package/.next/standalone/node_modules/webpack/lib/library/EnableLibraryPlugin.js +306 -0
  814. package/.next/standalone/node_modules/webpack/lib/library/ExportPropertyLibraryPlugin.js +116 -0
  815. package/.next/standalone/node_modules/webpack/lib/library/JsonpLibraryPlugin.js +92 -0
  816. package/.next/standalone/node_modules/webpack/lib/library/ModuleLibraryPlugin.js +438 -0
  817. package/.next/standalone/node_modules/webpack/lib/library/SystemLibraryPlugin.js +256 -0
  818. package/.next/standalone/node_modules/webpack/lib/library/UmdLibraryPlugin.js +355 -0
  819. package/.next/standalone/node_modules/webpack/lib/logging/Logger.js +219 -0
  820. package/.next/standalone/node_modules/webpack/lib/logging/createConsoleLogger.js +216 -0
  821. package/.next/standalone/node_modules/webpack/lib/logging/truncateArgs.js +83 -0
  822. package/.next/standalone/node_modules/webpack/lib/node/CommonJsChunkLoadingPlugin.js +119 -0
  823. package/.next/standalone/node_modules/webpack/lib/node/NodeEnvironmentPlugin.js +72 -0
  824. package/.next/standalone/node_modules/webpack/lib/node/NodeSourcePlugin.js +19 -0
  825. package/.next/standalone/node_modules/webpack/lib/node/NodeTargetPlugin.js +94 -0
  826. package/.next/standalone/node_modules/webpack/lib/node/NodeTemplatePlugin.js +41 -0
  827. package/.next/standalone/node_modules/webpack/lib/node/NodeWatchFileSystem.js +195 -0
  828. package/.next/standalone/node_modules/webpack/lib/node/ReadFileChunkLoadingRuntimeModule.js +285 -0
  829. package/.next/standalone/node_modules/webpack/lib/node/ReadFileCompileAsyncWasmPlugin.js +122 -0
  830. package/.next/standalone/node_modules/webpack/lib/node/ReadFileCompileWasmPlugin.js +126 -0
  831. package/.next/standalone/node_modules/webpack/lib/node/RequireChunkLoadingRuntimeModule.js +238 -0
  832. package/.next/standalone/node_modules/webpack/lib/node/nodeConsole.js +185 -0
  833. package/.next/standalone/node_modules/webpack/lib/optimize/AggressiveMergingPlugin.js +98 -0
  834. package/.next/standalone/node_modules/webpack/lib/optimize/AggressiveSplittingPlugin.js +347 -0
  835. package/.next/standalone/node_modules/webpack/lib/optimize/ConcatenatedModule.js +2287 -0
  836. package/.next/standalone/node_modules/webpack/lib/optimize/EnsureChunkConditionsPlugin.js +88 -0
  837. package/.next/standalone/node_modules/webpack/lib/optimize/FlagIncludedChunksPlugin.js +137 -0
  838. package/.next/standalone/node_modules/webpack/lib/optimize/InnerGraph.js +368 -0
  839. package/.next/standalone/node_modules/webpack/lib/optimize/InnerGraphPlugin.js +455 -0
  840. package/.next/standalone/node_modules/webpack/lib/optimize/LimitChunkCountPlugin.js +301 -0
  841. package/.next/standalone/node_modules/webpack/lib/optimize/MangleExportsPlugin.js +194 -0
  842. package/.next/standalone/node_modules/webpack/lib/optimize/MergeDuplicateChunksPlugin.js +137 -0
  843. package/.next/standalone/node_modules/webpack/lib/optimize/MinChunkSizePlugin.js +121 -0
  844. package/.next/standalone/node_modules/webpack/lib/optimize/MinMaxSizeWarning.js +35 -0
  845. package/.next/standalone/node_modules/webpack/lib/optimize/ModuleConcatenationPlugin.js +968 -0
  846. package/.next/standalone/node_modules/webpack/lib/optimize/RealContentHashPlugin.js +486 -0
  847. package/.next/standalone/node_modules/webpack/lib/optimize/RemoveEmptyChunksPlugin.js +60 -0
  848. package/.next/standalone/node_modules/webpack/lib/optimize/RemoveParentModulesPlugin.js +216 -0
  849. package/.next/standalone/node_modules/webpack/lib/optimize/RuntimeChunkPlugin.js +54 -0
  850. package/.next/standalone/node_modules/webpack/lib/optimize/SideEffectsFlagPlugin.js +417 -0
  851. package/.next/standalone/node_modules/webpack/lib/optimize/SplitChunksPlugin.js +1829 -0
  852. package/.next/standalone/node_modules/webpack/lib/performance/AssetsOverSizeLimitWarning.js +36 -0
  853. package/.next/standalone/node_modules/webpack/lib/performance/EntrypointsOverSizeLimitWarning.js +39 -0
  854. package/.next/standalone/node_modules/webpack/lib/performance/NoAsyncChunksWarning.js +21 -0
  855. package/.next/standalone/node_modules/webpack/lib/performance/SizeLimitsPlugin.js +182 -0
  856. package/.next/standalone/node_modules/webpack/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +44 -0
  857. package/.next/standalone/node_modules/webpack/lib/prefetch/ChunkPrefetchPreloadPlugin.js +95 -0
  858. package/.next/standalone/node_modules/webpack/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +54 -0
  859. package/.next/standalone/node_modules/webpack/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +51 -0
  860. package/.next/standalone/node_modules/webpack/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +45 -0
  861. package/.next/standalone/node_modules/webpack/lib/rules/BasicEffectRulePlugin.js +56 -0
  862. package/.next/standalone/node_modules/webpack/lib/rules/BasicMatcherRulePlugin.js +68 -0
  863. package/.next/standalone/node_modules/webpack/lib/rules/ObjectMatcherRulePlugin.js +79 -0
  864. package/.next/standalone/node_modules/webpack/lib/rules/RuleSetCompiler.js +443 -0
  865. package/.next/standalone/node_modules/webpack/lib/rules/UseEffectRulePlugin.js +236 -0
  866. package/.next/standalone/node_modules/webpack/lib/runtime/AsyncModuleRuntimeModule.js +199 -0
  867. package/.next/standalone/node_modules/webpack/lib/runtime/AutoPublicPathRuntimeModule.js +90 -0
  868. package/.next/standalone/node_modules/webpack/lib/runtime/BaseUriRuntimeModule.js +35 -0
  869. package/.next/standalone/node_modules/webpack/lib/runtime/ChunkNameRuntimeModule.js +28 -0
  870. package/.next/standalone/node_modules/webpack/lib/runtime/CompatGetDefaultExportRuntimeModule.js +40 -0
  871. package/.next/standalone/node_modules/webpack/lib/runtime/CompatRuntimeModule.js +83 -0
  872. package/.next/standalone/node_modules/webpack/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +69 -0
  873. package/.next/standalone/node_modules/webpack/lib/runtime/CreateScriptRuntimeModule.js +38 -0
  874. package/.next/standalone/node_modules/webpack/lib/runtime/CreateScriptUrlRuntimeModule.js +38 -0
  875. package/.next/standalone/node_modules/webpack/lib/runtime/DefinePropertyGettersRuntimeModule.js +42 -0
  876. package/.next/standalone/node_modules/webpack/lib/runtime/EnsureChunkRuntimeModule.js +69 -0
  877. package/.next/standalone/node_modules/webpack/lib/runtime/GetChunkFilenameRuntimeModule.js +298 -0
  878. package/.next/standalone/node_modules/webpack/lib/runtime/GetFullHashRuntimeModule.js +30 -0
  879. package/.next/standalone/node_modules/webpack/lib/runtime/GetMainFilenameRuntimeModule.js +49 -0
  880. package/.next/standalone/node_modules/webpack/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +99 -0
  881. package/.next/standalone/node_modules/webpack/lib/runtime/GlobalRuntimeModule.js +47 -0
  882. package/.next/standalone/node_modules/webpack/lib/runtime/HasOwnPropertyRuntimeModule.js +35 -0
  883. package/.next/standalone/node_modules/webpack/lib/runtime/HelperRuntimeModule.js +18 -0
  884. package/.next/standalone/node_modules/webpack/lib/runtime/LoadScriptRuntimeModule.js +174 -0
  885. package/.next/standalone/node_modules/webpack/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +231 -0
  886. package/.next/standalone/node_modules/webpack/lib/runtime/MakeNamespaceObjectRuntimeModule.js +39 -0
  887. package/.next/standalone/node_modules/webpack/lib/runtime/NonceRuntimeModule.js +24 -0
  888. package/.next/standalone/node_modules/webpack/lib/runtime/OnChunksLoadedRuntimeModule.js +78 -0
  889. package/.next/standalone/node_modules/webpack/lib/runtime/PublicPathRuntimeModule.js +38 -0
  890. package/.next/standalone/node_modules/webpack/lib/runtime/RelativeUrlRuntimeModule.js +44 -0
  891. package/.next/standalone/node_modules/webpack/lib/runtime/RuntimeIdRuntimeModule.js +33 -0
  892. package/.next/standalone/node_modules/webpack/lib/runtime/StartupChunkDependenciesPlugin.js +88 -0
  893. package/.next/standalone/node_modules/webpack/lib/runtime/StartupChunkDependenciesRuntimeModule.js +77 -0
  894. package/.next/standalone/node_modules/webpack/lib/runtime/StartupEntrypointRuntimeModule.js +54 -0
  895. package/.next/standalone/node_modules/webpack/lib/runtime/SystemContextRuntimeModule.js +23 -0
  896. package/.next/standalone/node_modules/webpack/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  897. package/.next/standalone/node_modules/webpack/lib/schemes/DataUriPlugin.js +47 -0
  898. package/.next/standalone/node_modules/webpack/lib/schemes/FileUriPlugin.js +54 -0
  899. package/.next/standalone/node_modules/webpack/lib/schemes/HttpUriPlugin.js +1411 -0
  900. package/.next/standalone/node_modules/webpack/lib/schemes/VirtualUrlPlugin.js +227 -0
  901. package/.next/standalone/node_modules/webpack/lib/serialization/AggregateErrorSerializer.js +41 -0
  902. package/.next/standalone/node_modules/webpack/lib/serialization/ArraySerializer.js +38 -0
  903. package/.next/standalone/node_modules/webpack/lib/serialization/BinaryMiddleware.js +1164 -0
  904. package/.next/standalone/node_modules/webpack/lib/serialization/DateObjectSerializer.js +28 -0
  905. package/.next/standalone/node_modules/webpack/lib/serialization/ErrorObjectSerializer.js +49 -0
  906. package/.next/standalone/node_modules/webpack/lib/serialization/FileMiddleware.js +766 -0
  907. package/.next/standalone/node_modules/webpack/lib/serialization/MapObjectSerializer.js +48 -0
  908. package/.next/standalone/node_modules/webpack/lib/serialization/NullPrototypeObjectSerializer.js +53 -0
  909. package/.next/standalone/node_modules/webpack/lib/serialization/ObjectMiddleware.js +877 -0
  910. package/.next/standalone/node_modules/webpack/lib/serialization/PlainObjectSerializer.js +119 -0
  911. package/.next/standalone/node_modules/webpack/lib/serialization/RegExpObjectSerializer.js +29 -0
  912. package/.next/standalone/node_modules/webpack/lib/serialization/Serializer.js +82 -0
  913. package/.next/standalone/node_modules/webpack/lib/serialization/SerializerMiddleware.js +226 -0
  914. package/.next/standalone/node_modules/webpack/lib/serialization/SetObjectSerializer.js +40 -0
  915. package/.next/standalone/node_modules/webpack/lib/serialization/SingleItemMiddleware.js +36 -0
  916. package/.next/standalone/node_modules/webpack/lib/sharing/ConsumeSharedFallbackDependency.js +33 -0
  917. package/.next/standalone/node_modules/webpack/lib/sharing/ConsumeSharedModule.js +327 -0
  918. package/.next/standalone/node_modules/webpack/lib/sharing/ConsumeSharedPlugin.js +380 -0
  919. package/.next/standalone/node_modules/webpack/lib/sharing/ConsumeSharedRuntimeModule.js +358 -0
  920. package/.next/standalone/node_modules/webpack/lib/sharing/ProvideForSharedDependency.js +33 -0
  921. package/.next/standalone/node_modules/webpack/lib/sharing/ProvideSharedDependency.js +80 -0
  922. package/.next/standalone/node_modules/webpack/lib/sharing/ProvideSharedModule.js +196 -0
  923. package/.next/standalone/node_modules/webpack/lib/sharing/ProvideSharedModuleFactory.js +37 -0
  924. package/.next/standalone/node_modules/webpack/lib/sharing/ProvideSharedPlugin.js +248 -0
  925. package/.next/standalone/node_modules/webpack/lib/sharing/SharePlugin.js +91 -0
  926. package/.next/standalone/node_modules/webpack/lib/sharing/ShareRuntimeModule.js +152 -0
  927. package/.next/standalone/node_modules/webpack/lib/sharing/resolveMatchedConfigs.js +106 -0
  928. package/.next/standalone/node_modules/webpack/lib/sharing/utils.js +421 -0
  929. package/.next/standalone/node_modules/webpack/lib/stats/DefaultStatsFactoryPlugin.js +2785 -0
  930. package/.next/standalone/node_modules/webpack/lib/stats/DefaultStatsPresetPlugin.js +417 -0
  931. package/.next/standalone/node_modules/webpack/lib/stats/DefaultStatsPrinterPlugin.js +1860 -0
  932. package/.next/standalone/node_modules/webpack/lib/stats/StatsFactory.js +406 -0
  933. package/.next/standalone/node_modules/webpack/lib/stats/StatsPrinter.js +300 -0
  934. package/.next/standalone/node_modules/webpack/lib/url/URLParserPlugin.js +265 -0
  935. package/.next/standalone/node_modules/webpack/lib/util/AppendOnlyStackedSet.js +57 -0
  936. package/.next/standalone/node_modules/webpack/lib/util/ArrayHelpers.js +46 -0
  937. package/.next/standalone/node_modules/webpack/lib/util/ArrayQueue.js +104 -0
  938. package/.next/standalone/node_modules/webpack/lib/util/AsyncQueue.js +411 -0
  939. package/.next/standalone/node_modules/webpack/lib/util/Hash.js +68 -0
  940. package/.next/standalone/node_modules/webpack/lib/util/IterableHelpers.js +46 -0
  941. package/.next/standalone/node_modules/webpack/lib/util/LazyBucketSortedSet.js +272 -0
  942. package/.next/standalone/node_modules/webpack/lib/util/LazySet.js +236 -0
  943. package/.next/standalone/node_modules/webpack/lib/util/MapHelpers.js +34 -0
  944. package/.next/standalone/node_modules/webpack/lib/util/ParallelismFactorCalculator.js +70 -0
  945. package/.next/standalone/node_modules/webpack/lib/util/Queue.js +52 -0
  946. package/.next/standalone/node_modules/webpack/lib/util/SetHelpers.js +94 -0
  947. package/.next/standalone/node_modules/webpack/lib/util/SortableSet.js +176 -0
  948. package/.next/standalone/node_modules/webpack/lib/util/StackedCacheMap.js +140 -0
  949. package/.next/standalone/node_modules/webpack/lib/util/StackedMap.js +164 -0
  950. package/.next/standalone/node_modules/webpack/lib/util/StringXor.js +103 -0
  951. package/.next/standalone/node_modules/webpack/lib/util/TupleQueue.js +70 -0
  952. package/.next/standalone/node_modules/webpack/lib/util/TupleSet.js +185 -0
  953. package/.next/standalone/node_modules/webpack/lib/util/URLAbsoluteSpecifier.js +86 -0
  954. package/.next/standalone/node_modules/webpack/lib/util/WeakTupleMap.js +227 -0
  955. package/.next/standalone/node_modules/webpack/lib/util/binarySearchBounds.js +136 -0
  956. package/.next/standalone/node_modules/webpack/lib/util/chainedImports.js +99 -0
  957. package/.next/standalone/node_modules/webpack/lib/util/cleverMerge.js +676 -0
  958. package/.next/standalone/node_modules/webpack/lib/util/comparators.js +645 -0
  959. package/.next/standalone/node_modules/webpack/lib/util/compileBooleanMatcher.js +313 -0
  960. package/.next/standalone/node_modules/webpack/lib/util/concatenate.js +232 -0
  961. package/.next/standalone/node_modules/webpack/lib/util/conventions.js +126 -0
  962. package/.next/standalone/node_modules/webpack/lib/util/create-schema-validation.js +41 -0
  963. package/.next/standalone/node_modules/webpack/lib/util/createHash.js +91 -0
  964. package/.next/standalone/node_modules/webpack/lib/util/dataURL.js +39 -0
  965. package/.next/standalone/node_modules/webpack/lib/util/deprecation.js +350 -0
  966. package/.next/standalone/node_modules/webpack/lib/util/deterministicGrouping.js +561 -0
  967. package/.next/standalone/node_modules/webpack/lib/util/extractSourceMap.js +318 -0
  968. package/.next/standalone/node_modules/webpack/lib/util/extractUrlAndGlobal.js +18 -0
  969. package/.next/standalone/node_modules/webpack/lib/util/findGraphRoots.js +241 -0
  970. package/.next/standalone/node_modules/webpack/lib/util/fs.js +675 -0
  971. package/.next/standalone/node_modules/webpack/lib/util/generateDebugId.js +33 -0
  972. package/.next/standalone/node_modules/webpack/lib/util/hash/BatchedHash.js +114 -0
  973. package/.next/standalone/node_modules/webpack/lib/util/hash/BulkUpdateHash.js +144 -0
  974. package/.next/standalone/node_modules/webpack/lib/util/hash/DebugHash.js +75 -0
  975. package/.next/standalone/node_modules/webpack/lib/util/hash/hash-digest.js +217 -0
  976. package/.next/standalone/node_modules/webpack/lib/util/hash/md4.js +20 -0
  977. package/.next/standalone/node_modules/webpack/lib/util/hash/wasm-hash.js +231 -0
  978. package/.next/standalone/node_modules/webpack/lib/util/hash/xxhash64.js +20 -0
  979. package/.next/standalone/node_modules/webpack/lib/util/identifier.js +471 -0
  980. package/.next/standalone/node_modules/webpack/lib/util/internalSerializables.js +222 -0
  981. package/.next/standalone/node_modules/webpack/lib/util/magicComment.js +25 -0
  982. package/.next/standalone/node_modules/webpack/lib/util/makeSerializable.js +60 -0
  983. package/.next/standalone/node_modules/webpack/lib/util/memoize.js +36 -0
  984. package/.next/standalone/node_modules/webpack/lib/util/nonNumericOnlyHash.js +22 -0
  985. package/.next/standalone/node_modules/webpack/lib/util/numberHash.js +95 -0
  986. package/.next/standalone/node_modules/webpack/lib/util/processAsyncTree.js +68 -0
  987. package/.next/standalone/node_modules/webpack/lib/util/propertyAccess.js +30 -0
  988. package/.next/standalone/node_modules/webpack/lib/util/propertyName.js +76 -0
  989. package/.next/standalone/node_modules/webpack/lib/util/registerExternalSerializer.js +334 -0
  990. package/.next/standalone/node_modules/webpack/lib/util/removeBOM.js +25 -0
  991. package/.next/standalone/node_modules/webpack/lib/util/runtime.js +717 -0
  992. package/.next/standalone/node_modules/webpack/lib/util/semver.js +604 -0
  993. package/.next/standalone/node_modules/webpack/lib/util/serialization.js +153 -0
  994. package/.next/standalone/node_modules/webpack/lib/util/smartGrouping.js +221 -0
  995. package/.next/standalone/node_modules/webpack/lib/util/source.js +62 -0
  996. package/.next/standalone/node_modules/webpack/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  997. package/.next/standalone/node_modules/webpack/lib/validateSchema.js +177 -0
  998. package/.next/standalone/node_modules/webpack/lib/wasm/EnableWasmLoadingPlugin.js +145 -0
  999. package/.next/standalone/node_modules/webpack/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +154 -0
  1000. package/.next/standalone/node_modules/webpack/lib/wasm-async/AsyncWebAssemblyGenerator.js +74 -0
  1001. package/.next/standalone/node_modules/webpack/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +212 -0
  1002. package/.next/standalone/node_modules/webpack/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +209 -0
  1003. package/.next/standalone/node_modules/webpack/lib/wasm-async/AsyncWebAssemblyParser.js +80 -0
  1004. package/.next/standalone/node_modules/webpack/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +107 -0
  1005. package/.next/standalone/node_modules/webpack/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +20 -0
  1006. package/.next/standalone/node_modules/webpack/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +422 -0
  1007. package/.next/standalone/node_modules/webpack/lib/wasm-sync/WasmFinalizeExportsPlugin.js +91 -0
  1008. package/.next/standalone/node_modules/webpack/lib/wasm-sync/WebAssemblyGenerator.js +535 -0
  1009. package/.next/standalone/node_modules/webpack/lib/wasm-sync/WebAssemblyInInitialChunkError.js +111 -0
  1010. package/.next/standalone/node_modules/webpack/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +236 -0
  1011. package/.next/standalone/node_modules/webpack/lib/wasm-sync/WebAssemblyModulesPlugin.js +151 -0
  1012. package/.next/standalone/node_modules/webpack/lib/wasm-sync/WebAssemblyParser.js +201 -0
  1013. package/.next/standalone/node_modules/webpack/lib/wasm-sync/WebAssemblyUtils.js +66 -0
  1014. package/.next/standalone/node_modules/webpack/lib/web/FetchCompileAsyncWasmPlugin.js +70 -0
  1015. package/.next/standalone/node_modules/webpack/lib/web/FetchCompileWasmPlugin.js +86 -0
  1016. package/.next/standalone/node_modules/webpack/lib/web/JsonpChunkLoadingPlugin.js +101 -0
  1017. package/.next/standalone/node_modules/webpack/lib/web/JsonpChunkLoadingRuntimeModule.js +455 -0
  1018. package/.next/standalone/node_modules/webpack/lib/web/JsonpTemplatePlugin.js +37 -0
  1019. package/.next/standalone/node_modules/webpack/lib/webpack.js +225 -0
  1020. package/.next/standalone/node_modules/webpack/lib/webworker/ImportScriptsChunkLoadingPlugin.js +110 -0
  1021. package/.next/standalone/node_modules/webpack/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +229 -0
  1022. package/.next/standalone/node_modules/webpack/lib/webworker/WebWorkerTemplatePlugin.js +26 -0
  1023. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/ajv.js +50 -0
  1024. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/compile/codegen/code.js +156 -0
  1025. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/compile/codegen/index.js +697 -0
  1026. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/compile/codegen/scope.js +143 -0
  1027. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/compile/errors.js +123 -0
  1028. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/compile/index.js +242 -0
  1029. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/compile/names.js +28 -0
  1030. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/compile/ref_error.js +12 -0
  1031. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/compile/resolve.js +155 -0
  1032. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/compile/rules.js +26 -0
  1033. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/compile/util.js +178 -0
  1034. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/compile/validate/applicability.js +19 -0
  1035. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/compile/validate/boolSchema.js +50 -0
  1036. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/compile/validate/dataType.js +203 -0
  1037. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/compile/validate/defaults.js +35 -0
  1038. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/compile/validate/index.js +520 -0
  1039. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/compile/validate/keyword.js +124 -0
  1040. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/compile/validate/subschema.js +81 -0
  1041. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/core.js +618 -0
  1042. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/refs/data.json +13 -0
  1043. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/refs/json-schema-draft-07.json +151 -0
  1044. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/runtime/equal.js +7 -0
  1045. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/runtime/ucs2length.js +24 -0
  1046. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/runtime/uri.js +6 -0
  1047. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/runtime/validation_error.js +11 -0
  1048. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +49 -0
  1049. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +106 -0
  1050. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/applicator/allOf.js +23 -0
  1051. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +12 -0
  1052. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/applicator/contains.js +95 -0
  1053. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +85 -0
  1054. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/applicator/if.js +66 -0
  1055. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/applicator/index.js +44 -0
  1056. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/applicator/items.js +52 -0
  1057. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/applicator/items2020.js +30 -0
  1058. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/applicator/not.js +26 -0
  1059. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +60 -0
  1060. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +75 -0
  1061. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +12 -0
  1062. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/applicator/properties.js +54 -0
  1063. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +38 -0
  1064. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +13 -0
  1065. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/code.js +131 -0
  1066. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/core/id.js +10 -0
  1067. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/core/index.js +16 -0
  1068. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/core/ref.js +122 -0
  1069. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/discriminator/index.js +104 -0
  1070. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/discriminator/types.js +9 -0
  1071. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/draft7.js +17 -0
  1072. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/format/format.js +92 -0
  1073. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/format/index.js +6 -0
  1074. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/metadata.js +18 -0
  1075. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/validation/const.js +25 -0
  1076. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/validation/enum.js +48 -0
  1077. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/validation/index.js +33 -0
  1078. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/validation/limitItems.js +24 -0
  1079. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/validation/limitLength.js +27 -0
  1080. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +27 -0
  1081. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +24 -0
  1082. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +26 -0
  1083. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/validation/pattern.js +33 -0
  1084. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/validation/required.js +79 -0
  1085. package/.next/standalone/node_modules/webpack/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +64 -0
  1086. package/.next/standalone/node_modules/webpack/node_modules/ajv/package.json +127 -0
  1087. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/definitions/_range.js +28 -0
  1088. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/definitions/_required.js +23 -0
  1089. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/definitions/_util.js +19 -0
  1090. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/definitions/allRequired.js +21 -0
  1091. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/definitions/anyRequired.js +10 -0
  1092. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/definitions/deepProperties.js +54 -0
  1093. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/definitions/deepRequired.js +33 -0
  1094. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/definitions/dynamicDefaults.js +84 -0
  1095. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/definitions/exclusiveRange.js +10 -0
  1096. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/definitions/instanceof.js +54 -0
  1097. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/definitions/oneRequired.js +10 -0
  1098. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/definitions/patternRequired.js +42 -0
  1099. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/definitions/prohibited.js +23 -0
  1100. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/definitions/range.js +10 -0
  1101. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/definitions/regexp.js +40 -0
  1102. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/definitions/select.js +63 -0
  1103. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/definitions/transform.js +78 -0
  1104. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/definitions/typeof.js +25 -0
  1105. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/definitions/uniqueItemProperties.js +65 -0
  1106. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/index.js +32 -0
  1107. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/keywords/allRequired.js +10 -0
  1108. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/keywords/anyRequired.js +10 -0
  1109. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/keywords/deepProperties.js +10 -0
  1110. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/keywords/deepRequired.js +10 -0
  1111. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/keywords/dynamicDefaults.js +10 -0
  1112. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/keywords/exclusiveRange.js +10 -0
  1113. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/keywords/index.js +43 -0
  1114. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/keywords/instanceof.js +10 -0
  1115. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/keywords/oneRequired.js +10 -0
  1116. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/keywords/patternRequired.js +10 -0
  1117. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/keywords/prohibited.js +10 -0
  1118. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/keywords/range.js +10 -0
  1119. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/keywords/regexp.js +10 -0
  1120. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/keywords/select.js +13 -0
  1121. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/keywords/transform.js +10 -0
  1122. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/keywords/typeof.js +10 -0
  1123. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/dist/keywords/uniqueItemProperties.js +10 -0
  1124. package/.next/standalone/node_modules/webpack/node_modules/ajv-keywords/package.json +74 -0
  1125. package/.next/standalone/node_modules/webpack/node_modules/es-module-lexer/dist/lexer.cjs +1 -0
  1126. package/.next/standalone/node_modules/webpack/node_modules/es-module-lexer/package.json +57 -0
  1127. package/.next/standalone/node_modules/webpack/node_modules/json-schema-traverse/index.js +93 -0
  1128. package/.next/standalone/node_modules/webpack/node_modules/json-schema-traverse/package.json +43 -0
  1129. package/.next/standalone/node_modules/webpack/node_modules/schema-utils/dist/ValidationError.js +1061 -0
  1130. package/.next/standalone/node_modules/webpack/node_modules/schema-utils/dist/index.js +23 -0
  1131. package/.next/standalone/node_modules/webpack/node_modules/schema-utils/dist/keywords/absolutePath.js +83 -0
  1132. package/.next/standalone/node_modules/webpack/node_modules/schema-utils/dist/keywords/limit.js +167 -0
  1133. package/.next/standalone/node_modules/webpack/node_modules/schema-utils/dist/keywords/undefinedAsNull.js +34 -0
  1134. package/.next/standalone/node_modules/webpack/node_modules/schema-utils/dist/util/Range.js +143 -0
  1135. package/.next/standalone/node_modules/webpack/node_modules/schema-utils/dist/util/hints.js +85 -0
  1136. package/.next/standalone/node_modules/webpack/node_modules/schema-utils/dist/util/memorize.js +34 -0
  1137. package/.next/standalone/node_modules/webpack/node_modules/schema-utils/dist/validate.js +215 -0
  1138. package/.next/standalone/node_modules/webpack/node_modules/schema-utils/package.json +89 -0
  1139. package/.next/standalone/node_modules/webpack/package.json +204 -0
  1140. package/.next/standalone/node_modules/webpack/schemas/WebpackOptions.check.js +6 -0
  1141. package/.next/standalone/node_modules/webpack/schemas/WebpackOptions.json +6179 -0
  1142. package/.next/standalone/node_modules/webpack/schemas/plugins/BannerPlugin.check.js +6 -0
  1143. package/.next/standalone/node_modules/webpack/schemas/plugins/BannerPlugin.json +115 -0
  1144. package/.next/standalone/node_modules/webpack/schemas/plugins/DllPlugin.check.js +6 -0
  1145. package/.next/standalone/node_modules/webpack/schemas/plugins/DllPlugin.json +36 -0
  1146. package/.next/standalone/node_modules/webpack/schemas/plugins/DllReferencePlugin.check.js +6 -0
  1147. package/.next/standalone/node_modules/webpack/schemas/plugins/DllReferencePlugin.json +206 -0
  1148. package/.next/standalone/node_modules/webpack/schemas/plugins/IgnorePlugin.check.js +6 -0
  1149. package/.next/standalone/node_modules/webpack/schemas/plugins/IgnorePlugin.json +34 -0
  1150. package/.next/standalone/node_modules/webpack/schemas/plugins/LoaderOptionsPlugin.check.js +6 -0
  1151. package/.next/standalone/node_modules/webpack/schemas/plugins/LoaderOptionsPlugin.json +27 -0
  1152. package/.next/standalone/node_modules/webpack/schemas/plugins/ManifestPlugin.check.js +6 -0
  1153. package/.next/standalone/node_modules/webpack/schemas/plugins/ManifestPlugin.json +98 -0
  1154. package/.next/standalone/node_modules/webpack/schemas/plugins/ProgressPlugin.check.js +6 -0
  1155. package/.next/standalone/node_modules/webpack/schemas/plugins/ProgressPlugin.json +65 -0
  1156. package/.next/standalone/node_modules/webpack/schemas/plugins/SourceMapDevToolPlugin.check.js +6 -0
  1157. package/.next/standalone/node_modules/webpack/schemas/plugins/SourceMapDevToolPlugin.json +168 -0
  1158. package/.next/standalone/node_modules/webpack/schemas/plugins/WatchIgnorePlugin.check.js +6 -0
  1159. package/.next/standalone/node_modules/webpack/schemas/plugins/WatchIgnorePlugin.json +25 -0
  1160. package/.next/standalone/node_modules/webpack/schemas/plugins/asset/AssetGeneratorOptions.check.js +6 -0
  1161. package/.next/standalone/node_modules/webpack/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +6 -0
  1162. package/.next/standalone/node_modules/webpack/schemas/plugins/asset/AssetParserOptions.check.js +6 -0
  1163. package/.next/standalone/node_modules/webpack/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +6 -0
  1164. package/.next/standalone/node_modules/webpack/schemas/plugins/container/ContainerPlugin.check.js +6 -0
  1165. package/.next/standalone/node_modules/webpack/schemas/plugins/container/ContainerPlugin.json +294 -0
  1166. package/.next/standalone/node_modules/webpack/schemas/plugins/container/ContainerReferencePlugin.check.js +6 -0
  1167. package/.next/standalone/node_modules/webpack/schemas/plugins/container/ContainerReferencePlugin.json +132 -0
  1168. package/.next/standalone/node_modules/webpack/schemas/plugins/container/ExternalsType.check.js +6 -0
  1169. package/.next/standalone/node_modules/webpack/schemas/plugins/container/ModuleFederationPlugin.check.js +6 -0
  1170. package/.next/standalone/node_modules/webpack/schemas/plugins/container/ModuleFederationPlugin.json +525 -0
  1171. package/.next/standalone/node_modules/webpack/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
  1172. package/.next/standalone/node_modules/webpack/schemas/plugins/css/CssModuleGeneratorOptions.check.js +6 -0
  1173. package/.next/standalone/node_modules/webpack/schemas/plugins/css/CssModuleParserOptions.check.js +6 -0
  1174. package/.next/standalone/node_modules/webpack/schemas/plugins/css/CssParserOptions.check.js +6 -0
  1175. package/.next/standalone/node_modules/webpack/schemas/plugins/debug/ProfilingPlugin.check.js +6 -0
  1176. package/.next/standalone/node_modules/webpack/schemas/plugins/debug/ProfilingPlugin.json +12 -0
  1177. package/.next/standalone/node_modules/webpack/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  1178. package/.next/standalone/node_modules/webpack/schemas/plugins/ids/HashedModuleIdsPlugin.json +57 -0
  1179. package/.next/standalone/node_modules/webpack/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +6 -0
  1180. package/.next/standalone/node_modules/webpack/schemas/plugins/ids/OccurrenceChunkIdsPlugin.json +11 -0
  1181. package/.next/standalone/node_modules/webpack/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +6 -0
  1182. package/.next/standalone/node_modules/webpack/schemas/plugins/ids/OccurrenceModuleIdsPlugin.json +11 -0
  1183. package/.next/standalone/node_modules/webpack/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
  1184. package/.next/standalone/node_modules/webpack/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
  1185. package/.next/standalone/node_modules/webpack/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
  1186. package/.next/standalone/node_modules/webpack/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
  1187. package/.next/standalone/node_modules/webpack/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +6 -0
  1188. package/.next/standalone/node_modules/webpack/schemas/plugins/optimize/AggressiveSplittingPlugin.json +23 -0
  1189. package/.next/standalone/node_modules/webpack/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +6 -0
  1190. package/.next/standalone/node_modules/webpack/schemas/plugins/optimize/LimitChunkCountPlugin.json +21 -0
  1191. package/.next/standalone/node_modules/webpack/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +6 -0
  1192. package/.next/standalone/node_modules/webpack/schemas/plugins/optimize/MergeDuplicateChunksPlugin.json +11 -0
  1193. package/.next/standalone/node_modules/webpack/schemas/plugins/optimize/MinChunkSizePlugin.check.js +6 -0
  1194. package/.next/standalone/node_modules/webpack/schemas/plugins/optimize/MinChunkSizePlugin.json +20 -0
  1195. package/.next/standalone/node_modules/webpack/schemas/plugins/schemes/HttpUriPlugin.check.js +6 -0
  1196. package/.next/standalone/node_modules/webpack/schemas/plugins/schemes/HttpUriPlugin.json +74 -0
  1197. package/.next/standalone/node_modules/webpack/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +6 -0
  1198. package/.next/standalone/node_modules/webpack/schemas/plugins/sharing/ConsumeSharedPlugin.json +120 -0
  1199. package/.next/standalone/node_modules/webpack/schemas/plugins/sharing/ProvideSharedPlugin.check.js +6 -0
  1200. package/.next/standalone/node_modules/webpack/schemas/plugins/sharing/ProvideSharedPlugin.json +94 -0
  1201. package/.next/standalone/node_modules/webpack-sources/lib/CachedSource.js +419 -0
  1202. package/.next/standalone/node_modules/webpack-sources/lib/CompatSource.js +109 -0
  1203. package/.next/standalone/node_modules/webpack-sources/lib/ConcatSource.js +398 -0
  1204. package/.next/standalone/node_modules/webpack-sources/lib/OriginalSource.js +202 -0
  1205. package/.next/standalone/node_modules/webpack-sources/lib/PrefixSource.js +162 -0
  1206. package/.next/standalone/node_modules/webpack-sources/lib/RawSource.js +140 -0
  1207. package/.next/standalone/node_modules/webpack-sources/lib/ReplaceSource.js +557 -0
  1208. package/.next/standalone/node_modules/webpack-sources/lib/SizeOnlySource.js +71 -0
  1209. package/.next/standalone/node_modules/webpack-sources/lib/Source.js +89 -0
  1210. package/.next/standalone/node_modules/webpack-sources/lib/SourceMapSource.js +367 -0
  1211. package/.next/standalone/node_modules/webpack-sources/lib/helpers/createMappingsSerializer.js +225 -0
  1212. package/.next/standalone/node_modules/webpack-sources/lib/helpers/getFromStreamChunks.js +159 -0
  1213. package/.next/standalone/node_modules/webpack-sources/lib/helpers/getGeneratedSourceInfo.js +44 -0
  1214. package/.next/standalone/node_modules/webpack-sources/lib/helpers/getSource.js +24 -0
  1215. package/.next/standalone/node_modules/webpack-sources/lib/helpers/readMappings.js +120 -0
  1216. package/.next/standalone/node_modules/webpack-sources/lib/helpers/splitIntoLines.js +33 -0
  1217. package/.next/standalone/node_modules/webpack-sources/lib/helpers/splitIntoPotentialTokens.js +53 -0
  1218. package/.next/standalone/node_modules/webpack-sources/lib/helpers/streamAndGetSourceAndMap.js +123 -0
  1219. package/.next/standalone/node_modules/webpack-sources/lib/helpers/streamChunks.js +62 -0
  1220. package/.next/standalone/node_modules/webpack-sources/lib/helpers/streamChunksOfCombinedSourceMap.js +366 -0
  1221. package/.next/standalone/node_modules/webpack-sources/lib/helpers/streamChunksOfRawSource.js +54 -0
  1222. package/.next/standalone/node_modules/webpack-sources/lib/helpers/streamChunksOfSourceMap.js +499 -0
  1223. package/.next/standalone/node_modules/webpack-sources/lib/helpers/stringBufferUtils.js +117 -0
  1224. package/.next/standalone/node_modules/webpack-sources/lib/index.js +120 -0
  1225. package/.next/standalone/node_modules/webpack-sources/package.json +51 -0
  1226. package/.next/standalone/package.json +5 -1
  1227. package/dist/scripts/heartbeat.js +404 -327
  1228. package/package.json +5 -1
  1229. package/scripts/lib/video/compositions/AdVideo.tsx +37 -0
  1230. package/scripts/lib/video/compositions/Root.tsx +90 -0
  1231. package/scripts/lib/video/compositions/ShipVideo.tsx +37 -0
  1232. package/scripts/lib/video/compositions/Slide.tsx +260 -0
  1233. /package/.next/static/{qWTqRsgVgvrJaCLjUfRzd → DcXwb-73WeaaqPvwbu_dd}/_buildManifest.js +0 -0
  1234. /package/.next/static/{qWTqRsgVgvrJaCLjUfRzd → DcXwb-73WeaaqPvwbu_dd}/_ssgManifest.js +0 -0
@@ -6318,7 +6318,7 @@
6318
6318
  {
6319
6319
  "id": "idea-57b687b0",
6320
6320
  "created_at": "2026-02-19T19:26:20.972Z",
6321
- "updated_at": "2026-02-23T05:56:23Z",
6321
+ "updated_at": "2026-02-23T21:09:30.430Z",
6322
6322
  "title": "Add user-facing error feedback to dashboard UI components",
6323
6323
  "summary": "Multiple React components (StageControls, DiscussionThread, AnalyzeButton) silently swallow fetch errors, leaving users with no feedback when API calls fail.",
6324
6324
  "category": "ux_design",
@@ -6333,7 +6333,7 @@
6333
6333
  "Zero silent fetch failures in dashboard UI, verified by testing each component with network errors",
6334
6334
  "Recommendation Review Rate KPI not blocked by silent UI errors (prerequisite for goal-beta-users D7 retention target of 40%)"
6335
6335
  ],
6336
- "stage": "approved",
6336
+ "stage": "testing",
6337
6337
  "source": {
6338
6338
  "type": "codebase_analysis",
6339
6339
  "session_id": "session-cfad1d44",
@@ -6346,13 +6346,226 @@
6346
6346
  ]
6347
6347
  },
6348
6348
  "implementation": {
6349
- "branch_name": null,
6350
- "pr_url": null,
6351
- "pr_number": null,
6349
+ "branch_name": "ai/idea-57b687b0-impl",
6350
+ "pr_url": "https://github.com/braza-ai/100xmanager/pull/28",
6351
+ "pr_number": 28,
6352
6352
  "commits": [],
6353
6353
  "started_at": null,
6354
6354
  "completed_at": null,
6355
- "sub_tasks": []
6355
+ "sub_tasks": [
6356
+ {
6357
+ "id": "st-001",
6358
+ "title": "Create shared Toast notification system",
6359
+ "description": "Create a lightweight, context-based toast system in a single file `src/contexts/ToastContext.tsx`. This file should export: (1) a `ToastContext` React context, (2) a `ToastProvider` component that holds `toasts` state (array of `{id, message, type: 'success'|'error'|'info', dismissedAt?}`), exposes `showToast(message, type)` and `dismissToast(id)` via context, and renders a `ToastContainer` div (fixed bottom-right, z-50) that maps toasts to individual toast divs with color coding (red for error, green for success, blue for info) and auto-dismisses after 4000ms using `useEffect` + `setTimeout`, (3) a `useToast()` hook that reads from context and throws if used outside provider. No external dependencies — plain React state only. Also create `src/contexts/__tests__/ToastContext.test.tsx` using React Testing Library. Tests must cover: (a) `showToast` adds a toast to the container, (b) toast auto-dismisses after timeout (use `jest.useFakeTimers()`), (c) `dismissToast` removes the correct toast by id, (d) calling `useToast()` outside provider throws an error, (e) error toasts render with red styling and success with green.",
6360
+ "files_to_modify": [
6361
+ "src/contexts/ToastContext.tsx",
6362
+ "src/contexts/__tests__/ToastContext.test.tsx"
6363
+ ],
6364
+ "observability": "Each `showToast` call logs `console.debug('[Toast] shown', { id, type, message })`. Each auto-dismiss logs `console.debug('[Toast] auto-dismissed', { id })`. This provides a breadcrumb trail of UI error feedback events in the browser console.",
6365
+ "status": "completed",
6366
+ "started_at": "2026-02-23T20:51:33.735Z",
6367
+ "completed_at": "2026-02-23T20:52:15.776Z",
6368
+ "error_message": null,
6369
+ "commit_hash": "121ce8ebea408fa6ad5728588919299ce0b1ff94",
6370
+ "duration_ms": 42006,
6371
+ "files_changed": [
6372
+ "src/contexts/ToastContext.tsx",
6373
+ "src/contexts/__tests__/ToastContext.test.tsx"
6374
+ ],
6375
+ "lines_added": 244,
6376
+ "lines_removed": 0,
6377
+ "has_uncommitted_changes": false,
6378
+ "failure_type": null,
6379
+ "output_snippet": "\n=== AI Product Manager - Implementation ===\n\nIdea ID: idea-57b687b0\nMode: Scoped sub-task\nMode: Skip PR creation\nTitle: Add user-facing error feedback to dashboard UI components\nCategory: ux_design\nTarget repo: vibebusiness\nBranch: ai/idea-57b687b0-impl\nWorkspace: /Users/luismey/Code/vibebusiness/workspaces\nUsing pre-configured worktree: /Users/luismey/Code/vibebusiness/workspaces/vibebusiness-worktrees/ai/idea-57b687b0-impl-g0\nRunning Claude Code to implement changes (timeout: 600s (model: sonnet))...\n ...Claude Code working (30s elapsed, 0 chars output, 30s since last output)\nBoth files are created:\n\n**`src/contexts/ToastContext.tsx`**\n- `ToastContext` — React context holding `{ toasts, showToast, dismissToast }`\n- `ToastProvider` — manages toast state, renders a fixed bottom-right `ToastContainer` with color coding (red/green/blue), auto-dismisses after 4000ms via `setTimeout`, cleans up timers on unmount\n- `useToast()` — throws if used outside provider\n- `console.debug` breadcrumbs on `showToast` and auto-dismiss\n\n**`src/contexts/__tests__/ToastContext.test.tsx`**\nTests cover all five required cases:\n- (a) `showToast` adds a toast\n- (b) auto-dismiss after 4000ms (`jest.useFakeTimers`)\n- (c) `dismissToast` removes only the targeted toast\n- (d) `useToast` outside provider throws\n- (e) error → `bg-red-*`, success → `bg-green-*` via `data-toast-type` attribute\nClaude Code completed successfully in 42s (798 chars)\nChanges detected, staging and committing...\nSkipping PR creation (--skip-pr)\n\n=== Implementation Complete (PR skipped) ===\nBranch: ai/idea-57b687b0-impl\n"
6380
+ },
6381
+ {
6382
+ "id": "st-002",
6383
+ "title": "Wire ToastProvider into layout and migrate AnalyzeButton",
6384
+ "description": "In `src/components/AnalystLayout.tsx`, wrap the rendered children (or the entire JSX return) with `<ToastProvider>` imported from `src/contexts/ToastContext.tsx`. This makes `useToast()` available to all components in the dashboard. Then in `src/components/AnalyzeButton.tsx`, remove the existing inline notification state (`result` state, the setTimeout auto-dismiss logic, and the conditional notification div at the bottom of the render). Replace with a call to `const { showToast } = useToast()`. In the `handleAnalyze` function: on success call `showToast(data.message || 'Analysis started', 'success')`, on `!response.ok` or caught error call `showToast('Analysis failed: ' + (data?.message || response.statusText || 'Unknown error'), 'error')`. Create `src/components/__tests__/AnalyzeButton.test.tsx`. Tests must cover: (a) clicking 'Quick Scan' triggers POST to `/api/analyze`, (b) on success response shows success toast via mock `showToast`, (c) on non-ok response (mock `response.ok = false`) shows error toast with status context, (d) on network error (fetch throws) shows error toast, (e) button shows loading spinner while `isRunning` is true.",
6385
+ "files_to_modify": [
6386
+ "src/components/AnalystLayout.tsx",
6387
+ "src/components/AnalyzeButton.tsx",
6388
+ "src/components/__tests__/AnalyzeButton.test.tsx"
6389
+ ],
6390
+ "observability": "Add `console.error('[AnalyzeButton] API error', { status: response.status, type, message })` in the `!response.ok` branch before calling `showToast`. Add `console.error('[AnalyzeButton] Network error', { type, error: err.message })` in the catch block. This preserves structured error context even after the toast auto-dismisses.",
6391
+ "status": "completed",
6392
+ "started_at": "2026-02-23T20:51:33.743Z",
6393
+ "completed_at": "2026-02-23T20:54:52.602Z",
6394
+ "error_message": null,
6395
+ "commit_hash": "d3ee7451076d2d56b24d4f555dc256f4057eea11",
6396
+ "duration_ms": 198833,
6397
+ "files_changed": [
6398
+ "src/components/AnalystLayout.tsx",
6399
+ "src/components/AnalyzeButton.tsx",
6400
+ "src/components/__tests__/AnalyzeButton.test.tsx",
6401
+ "src/contexts/ToastContext.tsx"
6402
+ ],
6403
+ "lines_added": 208,
6404
+ "lines_removed": 55,
6405
+ "has_uncommitted_changes": false,
6406
+ "failure_type": null,
6407
+ "output_snippet": "s done:\n\n### Files created/modified\n\n**`src/contexts/ToastContext.tsx`** (new — required dependency)\n- `ToastProvider`: context provider that renders toasts in a fixed bottom-right container with 4s auto-dismiss\n- `useToast()`: hook returning `{ showToast(message, type) }`; throws if called outside the provider\n\n**`src/components/AnalystLayout.tsx`**\n- Added `import { ToastProvider } from '@/contexts/ToastContext'`\n- Wrapped the entire JSX return with `<ToastProvider>` so every dashboard child has access to `useToast()`\n\n**`src/components/AnalyzeButton.tsx`**\n- Removed `result` state, the `setTimeout` auto-dismiss logic, and the conditional notification div\n- Added `const { showToast } = useToast()`\n- Renamed `runAnalysis` → `handleAnalyze` (closes dropdown on click)\n- On success: `showToast(data.message || 'Analysis started', 'success')`\n- On `!response.ok`: `console.error('[AnalyzeButton] API error', ...)` then `showToast('Analysis failed: ...', 'error')`\n- In catch: `console.error('[AnalyzeButton] Network error', ...)` then `showToast('Analysis failed: ...', 'error')`\n\n**`src/components/__tests__/AnalyzeButton.test.tsx`** (new)\n- Mocks `@/contexts/ToastContext` so the component renders without a provider\n- Mocks `global.fetch`\n- Tests: (a) Quick Scan POSTs to `/api/analyze`, (b) success → `showToast(..., 'success')`, (c) `ok: false` → `showToast('Analysis failed: ...', 'error')`, (d) network throw → error toast, (e) loading spinner + disabled button while `isRunning`\n\n> **Note:** Running the component tests requires `@testing-library/react` + a jsdom environment. The `vitest.config.ts` `include` pattern (`scripts/**/__tests__/**/*.test.ts`) also needs to be extended to cover `src/components/__tests__/**/*.test.tsx` — those are outside this sub-task's scope.\nClaude Code completed successfully in 198s (1844 chars)\nChanges detected, staging and committing...\nSkipping PR creation (--skip-pr)\n\n=== Implementation Complete (PR skipped) ===\nBranch: ai/idea-57b687b0-impl\n"
6408
+ },
6409
+ {
6410
+ "id": "st-003",
6411
+ "title": "Fix StageControls error handling",
6412
+ "description": "In `src/components/StageControls.tsx`, add `const { showToast } = useToast()` at the top of the component. In the `handleTransition` function: find the existing try-catch block. In the catch block, replace `console.error` with `showToast('Failed to transition idea. Please try again.', 'error')`. Add an `else if (!response.ok)` branch before reading `data` to call `showToast('Transition failed: ' + response.statusText, 'error')` and `return` early. In the `handleImplement` function: replace the existing `alert()` call with `showToast('Failed to start implementation. Please try again.', 'error')`. Add an `else if (!response.ok)` branch similarly. Both functions should also call `console.error` with structured context (function name, ideaId, response status) before `showToast`. Create `src/components/__tests__/StageControls.test.tsx`. Tests must cover: (a) successful transition calls `onIdeaUpdate`, (b) non-ok transition response shows error toast and does NOT call `onIdeaUpdate`, (c) network error on transition shows error toast, (d) non-ok implement response shows error toast (not alert), (e) comment modal submits the comment text with the transition request.",
6413
+ "files_to_modify": [
6414
+ "src/components/StageControls.tsx",
6415
+ "src/components/__tests__/StageControls.test.tsx"
6416
+ ],
6417
+ "observability": "In each catch block and `!response.ok` branch, log `console.error('[StageControls] API error', { action, ideaId, status: response?.status, error: err?.message })`. This gives structured context for debugging stage transition failures without requiring server-side correlation.",
6418
+ "status": "completed",
6419
+ "started_at": "2026-02-23T20:54:52.606Z",
6420
+ "completed_at": "2026-02-23T20:56:15.382Z",
6421
+ "error_message": null,
6422
+ "commit_hash": "a3fcdd716582ccd6b5885e6876321e65e087e73f",
6423
+ "duration_ms": 82748,
6424
+ "files_changed": [
6425
+ "src/components/StageControls.tsx",
6426
+ "src/components/__tests__/StageControls.test.tsx"
6427
+ ],
6428
+ "lines_added": 191,
6429
+ "lines_removed": 8,
6430
+ "has_uncommitted_changes": false,
6431
+ "failure_type": null,
6432
+ "output_snippet": "task\nMode: Skip PR creation\nTitle: Add user-facing error feedback to dashboard UI components\nCategory: ux_design\nTarget repo: vibebusiness\nBranch: ai/idea-57b687b0-impl\nWorkspace: /Users/luismey/Code/vibebusiness/workspaces\nUsing pre-configured worktree: /Users/luismey/Code/vibebusiness/workspaces/vibebusiness-worktrees/ai/idea-57b687b0-impl-g1\nRunning Claude Code to implement changes (timeout: 600s (model: sonnet))...\n ...Claude Code working (30s elapsed, 0 chars output, 30s since last output)\n ...Claude Code working (60s elapsed, 0 chars output, 60s since last output)\nBoth files look correct. Here's a summary of what was done:\n\n**`src/components/StageControls.tsx`:**\n- Added `import { useToast } from '@/contexts/ToastContext'`\n- Added optional `onIdeaUpdate?: () => void` prop to `StageControlsProps`\n- Added `const { showToast } = useToast()` at the top of the component\n- In `executeTransition`: added `else if (!response.ok)` branch with structured `console.error` + `showToast('Transition failed: ' + response.statusText, 'error')`, updated catch block to use `showToast('Failed to transition idea. Please try again.', 'error')`, and calls `onIdeaUpdate()` on success\n- In `executeImplementation`: added `!response.ok` branch before reading JSON, replaced both `alert()` calls with `showToast('Failed to start implementation. Please try again.', 'error')`, added structured `console.error` logging in all error paths\n\n**`src/components/__tests__/StageControls.test.tsx`** (new file):\n- Tests cover all 5 required cases: (a) successful transition calls `onIdeaUpdate`, (b) non-ok transition shows error toast and skips `onIdeaUpdate`, (c) network error shows toast, (d) non-ok implement shows toast instead of `alert`, (e) comment modal submits comment text with the request\nClaude Code completed successfully in 82s (1213 chars)\nChanges detected, staging and committing...\nSkipping PR creation (--skip-pr)\n\n=== Implementation Complete (PR skipped) ===\nBranch: ai/idea-57b687b0-impl\n"
6433
+ },
6434
+ {
6435
+ "id": "st-004",
6436
+ "title": "Fix DiscussionThread error handling with form state preservation",
6437
+ "description": "In `src/components/DiscussionThread.tsx`, add `const { showToast } = useToast()` at the top. In the `handleSubmit` function: locate the `!response.ok` branch (currently only logs to console). Add `showToast('Failed to post comment. Please try again.', 'error')` in this branch. IMPORTANT: do NOT clear `newComment` state on error — the existing code clears it on success; ensure the error path skips the `setNewComment('')` call so the user's text is preserved. In the catch block, replace silent `console.error` with `showToast('Failed to post comment. Please try again.', 'error')` and also do not clear `newComment`. Create `src/components/__tests__/DiscussionThread.test.tsx`. Tests must cover: (a) successful comment submission clears the input field and shows the new comment, (b) non-ok response shows error toast AND preserves the comment text in the input (assert `newComment` state is unchanged), (c) network error shows error toast AND preserves comment text, (d) empty comment does not trigger fetch, (e) `isSubmitting` state disables the submit button during the request.",
6438
+ "files_to_modify": [
6439
+ "src/components/DiscussionThread.tsx",
6440
+ "src/components/__tests__/DiscussionThread.test.tsx"
6441
+ ],
6442
+ "observability": "Log `console.error('[DiscussionThread] Comment submission failed', { ideaId, status: response?.status, contentLength: newComment.length, error: err?.message })` before each `showToast` error call. The `contentLength` field helps diagnose whether large comment payloads are causing rejections.",
6443
+ "status": "completed",
6444
+ "started_at": "2026-02-23T20:56:15.386Z",
6445
+ "completed_at": "2026-02-23T20:57:23.172Z",
6446
+ "error_message": null,
6447
+ "commit_hash": "cd367abe6bef7e993229e72e3ddcb53a27e51ff7",
6448
+ "duration_ms": 67760,
6449
+ "files_changed": [
6450
+ "src/components/DiscussionThread.tsx",
6451
+ "src/components/__tests__/DiscussionThread.test.tsx"
6452
+ ],
6453
+ "lines_added": 140,
6454
+ "lines_removed": 2,
6455
+ "has_uncommitted_changes": false,
6456
+ "failure_type": null,
6457
+ "output_snippet": "\n=== AI Product Manager - Implementation ===\n\nIdea ID: idea-57b687b0\nMode: Scoped sub-task\nMode: Skip PR creation\nTitle: Add user-facing error feedback to dashboard UI components\nCategory: ux_design\nTarget repo: vibebusiness\nBranch: ai/idea-57b687b0-impl\nWorkspace: /Users/luismey/Code/vibebusiness/workspaces\nUsing pre-configured worktree: /Users/luismey/Code/vibebusiness/workspaces/vibebusiness-worktrees/ai/idea-57b687b0-impl-g1\nRunning Claude Code to implement changes (timeout: 600s (model: sonnet))...\n ...Claude Code working (30s elapsed, 0 chars output, 30s since last output)\n ...Claude Code working (60s elapsed, 0 chars output, 60s since last output)\nBoth changes are complete. Here's a summary of what was done:\n\n**`src/components/DiscussionThread.tsx`:**\n- Added `import { useToast } from '@/contexts/ToastContext'`\n- Added `const { showToast } = useToast()` in the component body\n- Added `else` branch for `!response.ok` with structured `console.error` log and `showToast('Failed to post comment. Please try again.', 'error')` — `setNewComment('')` is only called in the `response.ok` branch, so text is preserved on error\n- Replaced the silent `catch (error)` with `catch (err)` that logs with `[DiscussionThread]` prefix including `ideaId`, `status`, `contentLength`, and `error.message`, then calls `showToast` — again, no `setNewComment('')` so text is preserved\n\n**`src/components/__tests__/DiscussionThread.test.tsx`** (new file):\n- (a) Successful submission: input clears, `router.refresh()` called, no toast\n- (b) Non-ok response: error toast shown, input value preserved\n- (c) Network error: error toast shown, input value preserved\n- (d) Empty comment: `fetch` not called\n- (e) `isSubmitting`: button is disabled while fetch is in-flight, re-enabled after\nClaude Code completed successfully in 67s (1118 chars)\nChanges detected, staging and committing...\nSkipping PR creation (--skip-pr)\n\n=== Implementation Complete (PR skipped) ===\nBranch: ai/idea-57b687b0-impl\n"
6458
+ },
6459
+ {
6460
+ "id": "st-005",
6461
+ "title": "Fix KPITable error handling",
6462
+ "description": "In `src/components/KPITable.tsx`, add `const { showToast } = useToast()` at the top of the component. In the `handleAddValue` function: the component uses an `onUpdateKPI` callback prop rather than direct fetch. After the `try { await onUpdateKPI(...) }` call, add an `else` or catch path. Specifically: wrap the `onUpdateKPI` call to catch rejections — add `.catch(err => { showToast('Failed to update KPI value. Please try again.', 'error'); console.error('[KPITable] KPI update failed', { kpiId: editingKPI, value: newValue, error: err?.message }); })`. Also clear `editingKPI` and `newValue` state ONLY on success (move `setEditingKPI(null)` and `setNewValue('')` inside the success path, not unconditionally). If `onUpdateKPI` can return a value indicating failure, check it. In the parent component that passes `onUpdateKPI` (likely `src/app/goals/[id]/page.tsx`), ensure the callback throws on API error so the catch in KPITable fires. Create `src/components/__tests__/KPITable.test.tsx`. Tests must cover: (a) successful KPI update clears the edit form, (b) `onUpdateKPI` rejection shows error toast and preserves edit state (kpiId and value still set), (c) non-numeric input shows validation message and does not call `onUpdateKPI`, (d) empty input does not call `onUpdateKPI`.",
6463
+ "files_to_modify": [
6464
+ "src/components/KPITable.tsx",
6465
+ "src/components/__tests__/KPITable.test.tsx"
6466
+ ],
6467
+ "observability": "Log `console.error('[KPITable] Update failed', { kpiId, newValue, goalId, error: err?.message })` in the catch handler. If the parent `goals/[id]/page.tsx` fetch is what actually fails, ensure it logs `console.error('[GoalDetail] KPI update API error', { kpiId, status: response.status })` before re-throwing.",
6468
+ "status": "completed",
6469
+ "started_at": "2026-02-23T20:57:23.177Z",
6470
+ "completed_at": "2026-02-23T20:58:35.781Z",
6471
+ "error_message": null,
6472
+ "commit_hash": "4f19a0cc5b3bf3046ea888c30aef3cf01ac101d0",
6473
+ "duration_ms": 72572,
6474
+ "files_changed": [
6475
+ "src/components/KPITable.tsx",
6476
+ "src/components/__tests__/KPITable.test.tsx"
6477
+ ],
6478
+ "lines_added": 182,
6479
+ "lines_removed": 31,
6480
+ "has_uncommitted_changes": false,
6481
+ "failure_type": null,
6482
+ "output_snippet": "\n=== AI Product Manager - Implementation ===\n\nIdea ID: idea-57b687b0\nMode: Scoped sub-task\nMode: Skip PR creation\nTitle: Add user-facing error feedback to dashboard UI components\nCategory: ux_design\nTarget repo: vibebusiness\nBranch: ai/idea-57b687b0-impl\nWorkspace: /Users/luismey/Code/vibebusiness/workspaces\nUsing pre-configured worktree: /Users/luismey/Code/vibebusiness/workspaces/vibebusiness-worktrees/ai/idea-57b687b0-impl-g1\nRunning Claude Code to implement changes (timeout: 600s (model: sonnet))...\n ...Claude Code working (30s elapsed, 0 chars output, 30s since last output)\n ...Claude Code working (60s elapsed, 0 chars output, 60s since last output)\nThe changes are complete. Here's a summary of what was done:\n\n**`src/components/KPITable.tsx`:**\n- Added `import { useToast } from '@/contexts/ToastContext'`\n- Added `const { showToast } = useToast()` at the top of the component\n- Added `validationError` state for inline validation feedback\n- Fixed `handleAddValue`: non-numeric input now sets a validation error and returns early (without calling `onUpdateKPI`)\n- `setEditingKPI(null)` and `setNewValue('')` are now only called on success (inside `try`, after `await onUpdateKPI`)\n- `catch` handler logs `console.error('[KPITable] Update failed', { kpiId, newValue, goalId, error: error?.message })` and calls `showToast` with an error message\n- Added inline validation error display below the form\n\n**`src/components/__tests__/KPITable.test.tsx`:**\n- (a) Successful update clears the edit form and does not call `showToast`\n- (b) `onUpdateKPI` rejection shows error toast and preserves edit state (form stays visible with the entered value)\n- (c) Non-numeric input shows validation message and does not call `onUpdateKPI`\n- (d) Empty input does not call `onUpdateKPI`\nClaude Code completed successfully in 72s (1121 chars)\nChanges detected, staging and committing...\nSkipping PR creation (--skip-pr)\n\n=== Implementation Complete (PR skipped) ===\nBranch: ai/idea-57b687b0-impl\n"
6483
+ },
6484
+ {
6485
+ "id": "st-006",
6486
+ "title": "Fix ImplementationProgress polling error handling",
6487
+ "description": "In `src/components/ImplementationProgress.tsx`, add `const { showToast } = useToast()` at the top. The component polls `GET /api/ideas/{ideaId}/implement` every 3 seconds. In the polling `useEffect`, find the fetch call inside the `setInterval` or polling loop. In the catch block (currently just `console.error`), add `showToast('Lost connection to implementation status. Retrying...', 'error')`. IMPORTANT: only show this toast once per polling cycle failure, not on every tick — add a `hasShownPollingError` ref (`useRef(false)`) that is set to `true` after the first error toast and reset to `false` when a successful response comes through. This prevents toast spam during extended outages. Also add a missing `response.ok` check: if `!response.ok`, treat it like a caught error (log + show toast once). Create `src/components/__tests__/ImplementationProgress.test.tsx`. Tests must cover: (a) successful poll renders implementation status correctly, (b) first fetch failure shows error toast, (c) second consecutive failure does NOT show a second toast (ref guard), (d) recovery after failure resets the error guard so future failures can toast again, (e) component cleans up the polling interval on unmount.",
6488
+ "files_to_modify": [
6489
+ "src/components/ImplementationProgress.tsx",
6490
+ "src/components/__tests__/ImplementationProgress.test.tsx"
6491
+ ],
6492
+ "observability": "Log `console.error('[ImplementationProgress] Poll failed', { ideaId, attempt, status: response?.status, error: err?.message })` on each failure even if the toast is suppressed. Track `attempt` count via a ref incremented each failure and reset on success.",
6493
+ "status": "completed",
6494
+ "started_at": "2026-02-23T20:58:35.784Z",
6495
+ "completed_at": "2026-02-23T21:03:00.589Z",
6496
+ "error_message": null,
6497
+ "commit_hash": "5b8cd5fec0b9ddaf9095023e12ca16942fc0506b",
6498
+ "duration_ms": 264776,
6499
+ "files_changed": [
6500
+ "src/components/ImplementationProgress.tsx",
6501
+ ".../__tests__/ImplementationProgress.test.tsx"
6502
+ ],
6503
+ "lines_added": 171,
6504
+ "lines_removed": 4,
6505
+ "has_uncommitted_changes": false,
6506
+ "failure_type": null,
6507
+ "output_snippet": ".Claude Code working (120s elapsed, 0 chars output, 120s since last output)\n ...Claude Code working (150s elapsed, 0 chars output, 150s since last output)\n ...Claude Code working (180s elapsed, 0 chars output, 180s since last output)\n ...Claude Code working (210s elapsed, 0 chars output, 210s since last output)\n ...Claude Code working (240s elapsed, 0 chars output, 240s since last output)\nBoth files are done. Here's a summary of the changes:\n\n**`src/components/ImplementationProgress.tsx`**\n- Added `useRef` to React imports\n- Added `useToast` import from `@/contexts/ToastContext`\n- Added `const { showToast } = useToast()` at component top\n- Added `hasShownPollingError` ref (`useRef(false)`) — prevents toast spam during extended outages\n- Added `attemptRef` ref (`useRef(0)`) — tracks failure count per the observability requirements\n- Refactored `fetchStatus` to:\n - Capture `response` before the try block so it's accessible in catch\n - Throw on `!response.ok` (treating HTTP errors identically to network errors)\n - Reset both refs on any successful response\n - In catch: increment `attemptRef`, log `[ImplementationProgress] Poll failed` with `{ ideaId, attempt, status, error }` on every failure, show toast only when `hasShownPollingError.current` is false then set it to true\n\n**`src/components/__tests__/ImplementationProgress.test.tsx`**\n- **(a)** Successful poll: verifies branch name renders, no toast shown\n- **(b)** First failure: verifies toast is called exactly once with the correct message\n- **(c)** Consecutive failures: advances timer 3s, confirms toast count stays at 1 (ref guard)\n- **(d)** Recovery reset: fail → succeed → fail sequence, confirms 2 toasts total (guard resets on success)\n- **(e)** Cleanup: verifies `clearInterval` is called on unmount\nClaude Code completed successfully in 264s (1395 chars)\nChanges detected, staging and committing...\nSkipping PR creation (--skip-pr)\n\n=== Implementation Complete (PR skipped) ===\nBranch: ai/idea-57b687b0-impl\n"
6508
+ },
6509
+ {
6510
+ "id": "st-007",
6511
+ "title": "Create structured client-side error logger utility",
6512
+ "description": "Create `src/lib/clientLogger.ts` that exports a `logClientError(context: string, data: Record<string, unknown>): void` function. Internally it calls `console.error` with a structured format: `[VB Error] [context]`, data object. It also appends to a module-level `errorLog: Array<{timestamp, context, data}>` (capped at 50 entries, evict oldest on overflow) accessible via `getErrorLog(): typeof errorLog`. This in-memory log enables future telemetry by giving heartbeat or analytics hooks access to recent client errors without server round-trips. Go back to all previously modified components (`AnalyzeButton.tsx`, `StageControls.tsx`, `DiscussionThread.tsx`, `KPITable.tsx`, `ImplementationProgress.tsx`) and replace their inline `console.error('[Component]...')` calls with `logClientError('ComponentName', { ...contextData })`. Create `src/lib/__tests__/clientLogger.test.ts`. Tests must cover: (a) `logClientError` writes to `console.error` with correct format, (b) `getErrorLog()` returns the logged entry with timestamp and context, (c) log is capped at 50 entries — adding a 51st evicts the oldest, (d) multiple calls accumulate correctly, (e) `logClientError` with nested objects serializes without throwing.",
6513
+ "files_to_modify": [
6514
+ "src/lib/clientLogger.ts",
6515
+ "src/lib/__tests__/clientLogger.test.ts",
6516
+ "src/components/AnalyzeButton.tsx",
6517
+ "src/components/StageControls.tsx",
6518
+ "src/components/DiscussionThread.tsx",
6519
+ "src/components/KPITable.tsx",
6520
+ "src/components/ImplementationProgress.tsx"
6521
+ ],
6522
+ "observability": "The `clientLogger` IS the observability layer for this feature. `getErrorLog()` returns a structured array consumable by future telemetry. Each entry includes ISO timestamp, component context, and structured data — sufficient for post-hoc debugging without a server-side sink.",
6523
+ "status": "completed",
6524
+ "started_at": "2026-02-23T21:03:00.592Z",
6525
+ "completed_at": "2026-02-23T21:09:24.882Z",
6526
+ "error_message": null,
6527
+ "commit_hash": "267ec4441aa098958ab8bb69f9a4d6905016da90",
6528
+ "duration_ms": 384256,
6529
+ "files_changed": [
6530
+ "src/components/AnalyzeButton.tsx",
6531
+ "src/components/DiscussionThread.tsx",
6532
+ "src/components/ImplementationProgress.tsx",
6533
+ "src/components/KPITable.tsx",
6534
+ "src/components/StageControls.tsx",
6535
+ "src/lib/__tests__/clientLogger.test.ts",
6536
+ "src/lib/clientLogger.ts"
6537
+ ],
6538
+ "lines_added": 123,
6539
+ "lines_removed": 11,
6540
+ "has_uncommitted_changes": false,
6541
+ "failure_type": null,
6542
+ "output_snippet": "ng (90s elapsed, 0 chars output, 90s since last output)\n ...Claude Code working (120s elapsed, 0 chars output, 120s since last output)\n ...Claude Code working (150s elapsed, 0 chars output, 150s since last output)\n ...Claude Code working (180s elapsed, 0 chars output, 180s since last output)\n ...Claude Code working (210s elapsed, 0 chars output, 210s since last output)\n ...Claude Code working (240s elapsed, 0 chars output, 240s since last output)\n ...Claude Code working (270s elapsed, 0 chars output, 270s since last output)\n ...Claude Code working (300s elapsed, 0 chars output, 300s since last output)\n ...Claude Code working (330s elapsed, 0 chars output, 330s since last output)\n ...Claude Code working (360s elapsed, 0 chars output, 360s since last output)\nAll changes are done. Here's a summary of what was implemented:\n\n**`src/lib/clientLogger.ts`** (new file):\n- `logClientError(context, data)` — calls `console.error('[VB Error] [context]', data)` and appends an entry with ISO timestamp to the in-memory log\n- `getErrorLog()` — returns the log array\n- Log is capped at 50 entries; oldest is evicted (`shift()`) when a 51st is added\n\n**`src/lib/__tests__/clientLogger.test.ts`** (new file):\n- 5 test cases covering: correct `console.error` format, entry structure with timestamp, 50-entry cap with eviction, multiple call accumulation, nested object serialization\n\n**Components updated** (all `console.error` calls replaced with `logClientError`):\n- `AnalyzeButton.tsx` — 2 calls (API error, network error)\n- `StageControls.tsx` — 4 calls (transition API error, transition catch, implement API errors)\n- `DiscussionThread.tsx` — 2 calls (comment submission failed, catch)\n- `KPITable.tsx` — 1 call (update failed)\n- `ImplementationProgress.tsx` — 1 call (poll failed)\nClaude Code completed successfully in 384s (1015 chars)\nChanges detected, staging and committing...\nSkipping PR creation (--skip-pr)\n\n=== Implementation Complete (PR skipped) ===\nBranch: ai/idea-57b687b0-impl\n"
6543
+ },
6544
+ {
6545
+ "id": "st-008",
6546
+ "title": "End-to-end verification and coverage audit",
6547
+ "description": "Perform a comprehensive audit and write an integration-level test suite. Step 1 — grep audit: run `grep -rn 'fetch(' src/components/ --include='*.tsx'` and cross-reference the results against components that import `useToast`. Every `fetch()` call site must have either (a) an `else if (!response.ok)` branch calling `showToast` or (b) a catch block calling `showToast`. Document any gaps found and fix them. Step 2 — create `src/components/__tests__/errorFeedback.integration.test.tsx`. This file renders each patched component inside a `ToastProvider`, mocks `fetch` to return non-ok responses (status 500), and asserts: (a) AnalyzeButton: error toast visible after failed analyze call, (b) StageControls: error toast visible after failed transition, no `alert()` called, (c) DiscussionThread: error toast visible, input still contains original comment text, (d) ImplementationProgress: error toast visible after failed poll. Step 3 — verify `AnalystLayout` properly wraps all pages: render `AnalystLayout` with a child that calls `useToast()` and assert it does not throw. Step 4 — verify the `clientLogger` `getErrorLog()` accumulates entries across the error scenarios above (call `getErrorLog()` after each test and assert length > 0).",
6548
+ "files_to_modify": [
6549
+ "src/components/__tests__/errorFeedback.integration.test.tsx"
6550
+ ],
6551
+ "observability": "The integration test itself IS the verification that observability works: it asserts that `logClientError` was called (spy on `console.error` and verify the `[VB Error]` prefix appears) and that `getErrorLog()` contains an entry for each simulated failure. This validates the full signal path from API failure → toast shown → error logged.",
6552
+ "status": "completed",
6553
+ "started_at": "2026-02-23T20:51:33.749Z",
6554
+ "completed_at": "2026-02-23T20:54:41.922Z",
6555
+ "error_message": null,
6556
+ "commit_hash": "f61f54b7747ec93adda757f8ec4d7d12eeab5709",
6557
+ "duration_ms": 188144,
6558
+ "files_changed": [
6559
+ ".../__tests__/errorFeedback.integration.test.tsx"
6560
+ ],
6561
+ "lines_added": 366,
6562
+ "lines_removed": 0,
6563
+ "has_uncommitted_changes": false,
6564
+ "failure_type": null,
6565
+ "output_snippet": "):**\n\n| Component | fetch() call site | Gap |\n|---|---|---|\n| `AnalyzeButton.tsx:23` | POST /api/analyze | Uses local state, no `useToast` |\n| `StageControls.tsx:185` | POST /api/ideas/[id]/transition | Silently ignores non-ok responses |\n| `StageControls.tsx:209` | POST /api/ideas/[id]/implement | Uses `alert()` on failure |\n| `DiscussionThread.tsx:36` | POST /api/ideas/[id]/comments | Silently ignores non-ok responses |\n| `ImplementationProgress.tsx:45` | GET /api/ideas/[id]/implement | Silently swallows catch errors |\n\nAll 5 call sites are gaps — none import `useToast`.\n\n**Test suite created (Step 2–4):**\n\n1. **`AnalyzeButton`** — mocks fetch to 500, clicks \"Quick Scan\", asserts error toast visible + `getErrorLog()` grows + `[VB Error]` in `console.error`\n2. **`StageControls`** — mocks fetch to 500, clicks \"Start Review\", asserts error toast visible, `alert()` never called, error logged\n3. **`DiscussionThread`** — mocks fetch to 500, submits comment, asserts error toast visible, input still contains original text, error logged\n4. **`ImplementationProgress`** — mocks fetch to 500, waits for initial poll, asserts error toast visible + error logged\n5. **`AnalystLayout`** — renders with `ToastProvider` + child calling `useToast()`, asserts no throw and toasts fire correctly\n6. **clientLogger accumulation** — runs all error scenarios sequentially, verifies `getErrorLog().length` strictly increases across each failure, and that `[VB Error]` prefix appears for every `console.error` call\n\nThe tests assume other sub-tasks will create `@/components/Toast` (exporting `ToastProvider`, `useToast`) and `@/lib/clientLogger` (exporting `logClientError`, `getErrorLog`, `clearErrorLog`), and that the components will be patched to call `showToast` + `logClientError` on error.\nClaude Code completed successfully in 188s (1960 chars)\nChanges detected, staging and committing...\nSkipping PR creation (--skip-pr)\n\n=== Implementation Complete (PR skipped) ===\nBranch: ai/idea-57b687b0-impl\n"
6566
+ }
6567
+ ],
6568
+ "decomposition_attempts": 1
6356
6569
  },
6357
6570
  "comments": [
6358
6571
  {
@@ -6966,13 +7179,220 @@
6966
7179
  ]
6967
7180
  },
6968
7181
  "implementation": {
6969
- "branch_name": null,
7182
+ "branch_name": "ai/idea-fb3eba74-impl",
6970
7183
  "pr_url": null,
6971
7184
  "pr_number": null,
6972
7185
  "commits": [],
6973
7186
  "started_at": null,
6974
7187
  "completed_at": null,
6975
- "sub_tasks": []
7188
+ "sub_tasks": [
7189
+ {
7190
+ "id": "st-001",
7191
+ "title": "Create async file lock utility in src/lib/lock.ts",
7192
+ "description": "Create `src/lib/lock.ts` with an async `withFileLockAsync<T>(lockPath: string, fn: () => Promise<T>, maxWaitMs?: number): Promise<T>` function. Use `fs.promises.mkdir(lockPath, { recursive: false })` as the atomic acquire operation (throws EEXIST if already locked). On acquire success, write a `{pid, acquired}` owner file inside the lock directory for staleness detection. On EEXIST, sleep with jittered backoff (50–150ms via `new Promise(resolve => setTimeout(resolve, jitter))`) until `maxWaitMs` (default 10000ms) elapses, then force-remove the stale lock and retry. On lock release (in `finally`), remove the owner file then `fs.promises.rmdir(lockPath)`. Export a `LOCK_METRICS` object with `{ conflicts: number; lastConflictAt: string | null }` — increment `conflicts` and set `lastConflictAt` whenever lock acquisition wait exceeds 100ms. Export a `getLockMetrics()` function that returns a snapshot of LOCK_METRICS. The lock path convention must match `scripts/lib/json-lock.ts` (directory named `${filePath}.lock`) so sync heartbeat locks and async API route locks coordinate across processes. Update `vitest.config.ts` to add `src/**/__tests__/**/*.test.ts` to the `include` array. Also write tests in `src/lib/__tests__/lock.test.ts` that verify: (1) two concurrent `withFileLockAsync` calls on the same path execute serially (not in parallel), (2) a stale lock is force-removed after timeout, (3) an error thrown inside `fn` releases the lock so a subsequent call can acquire it, (4) `getLockMetrics().conflicts` increments when acquisition takes >100ms.",
7193
+ "files_to_modify": [
7194
+ "src/lib/lock.ts",
7195
+ "src/lib/__tests__/lock.test.ts",
7196
+ "vitest.config.ts"
7197
+ ],
7198
+ "observability": "Exports LOCK_METRICS counter incremented on slow acquisition (>100ms). Logs `[lock] Force-removing stale lock after Xms: ${lockPath}` to console when a stale lock is cleared. All errors from mkdir (other than EEXIST) are rethrown with the original error context.",
7199
+ "status": "completed",
7200
+ "started_at": "2026-02-23T20:30:09.226Z",
7201
+ "completed_at": "2026-02-23T20:31:03.767Z",
7202
+ "error_message": null,
7203
+ "commit_hash": "c4f7e25492573de9279851088009db968b073109",
7204
+ "duration_ms": 54515,
7205
+ "files_changed": [
7206
+ "src/lib/__tests__/lock.test.ts",
7207
+ "src/lib/lock.ts",
7208
+ "vitest.config.ts"
7209
+ ],
7210
+ "lines_added": 221,
7211
+ "lines_removed": 1,
7212
+ "has_uncommitted_changes": false,
7213
+ "failure_type": null,
7214
+ "output_snippet": "\n=== AI Product Manager - Implementation ===\n\nIdea ID: idea-fb3eba74\nMode: Scoped sub-task\nMode: Skip PR creation\nTitle: Add atomic file writes and per-file locking to storage layer\nCategory: tech_debt\nTarget repo: vibebusiness\nBranch: ai/idea-fb3eba74-impl\nWorkspace: /Users/luismey/Code/vibebusiness/workspaces\nUsing pre-configured worktree: /Users/luismey/Code/vibebusiness/workspaces/vibebusiness-worktrees/ai/idea-fb3eba74-impl-g0\nRunning Claude Code to implement changes (timeout: 600s (model: sonnet))...\n ...Claude Code working (30s elapsed, 0 chars output, 30s since last output)\nAll three files are done:\n\n**`src/lib/lock.ts`** — Async lock implementation with:\n- `withFileLockAsync<T>` using `fs.promises.mkdir` as the atomic acquire\n- Owner file written on acquire for staleness detection\n- Jittered backoff (50–150ms via `setTimeout`) on EEXIST\n- Force-remove with `console.log` message matching the required format after `maxWaitMs`\n- `LOCK_METRICS` counter incremented when wait exceeds 100ms\n- `getLockMetrics()` returning a snapshot\n- Lock path convention (`${filePath}.lock`) matches `scripts/lib/json-lock.ts`\n\n**`src/lib/__tests__/lock.test.ts`** — Four tests covering:\n1. Two concurrent calls execute serially (order: 1,2,3,4)\n2. Stale pre-created lock is force-removed and execution proceeds\n3. Error inside `fn` releases the lock so next call succeeds\n4. `getLockMetrics().conflicts` increments when wait exceeds 100ms\n\n**`vitest.config.ts`** — Added `src/**/__tests__/**/*.test.ts` to the `include` array.\nClaude Code completed successfully in 54s (941 chars)\nChanges detected, staging and committing...\nSkipping PR creation (--skip-pr)\n\n=== Implementation Complete (PR skipped) ===\nBranch: ai/idea-fb3eba74-impl\n"
7215
+ },
7216
+ {
7217
+ "id": "st-002",
7218
+ "title": "Add atomic writes to src/lib/storage.ts writeJsonFile",
7219
+ "description": "Modify the `writeJsonFile<T>` function in `src/lib/storage.ts` (lines 70–73) to use a write-then-rename pattern: (1) compute `const tmpPath = \\`${filePath}.${process.pid}.tmp\\``, (2) call `await fs.writeFile(tmpPath, JSON.stringify(data, null, 2), 'utf-8')`, (3) call `await fs.rename(tmpPath, filePath)` — `fs.rename` is atomic on POSIX when src and dst are on the same filesystem. Wrap the entire sequence in a try/catch: if `fs.rename` throws, call `await fs.unlink(tmpPath).catch(() => {})` before rethrowing so orphaned tmp files do not accumulate. In `initializeStorage()` (lines 1379–1431), add a cleanup step before the file-existence checks: scan `getDataDir()` with `fs.readdir`, filter for files matching `*.tmp.*`, check if each is older than 60 seconds via `fs.stat().mtimeMs`, and unlink stale ones — log `[storage] Cleaned up orphaned tmp file: ${f}` for each removed file. Also update `vitest.config.ts` include pattern to cover `src/**/__tests__/**/*.test.ts` if st-001 has not already done this. Write tests in `src/lib/__tests__/storage-atomic.test.ts` that verify: (1) after a successful write the file contains the new data, (2) no `.tmp.*` file is left behind after a successful write, (3) when `fs.rename` is mocked to throw, the tmp file is cleaned up and the original file is untouched.",
7220
+ "files_to_modify": [
7221
+ "src/lib/storage.ts",
7222
+ "src/lib/__tests__/storage-atomic.test.ts"
7223
+ ],
7224
+ "observability": "Logs `[storage] Cleaned up orphaned tmp file: ${f}` for any stale .tmp.* files removed on startup. Rethrows write errors with the original error message preserved. If rename fails, logs `[storage] atomic rename failed for ${filePath}, cleaned up tmp` before throwing.",
7225
+ "status": "completed",
7226
+ "started_at": "2026-02-23T20:30:09.232Z",
7227
+ "completed_at": "2026-02-23T20:31:17.365Z",
7228
+ "error_message": null,
7229
+ "commit_hash": "ea2912c8ec7ebb0f2ebbbf4071a8aca3b54aa2a3",
7230
+ "duration_ms": 68103,
7231
+ "files_changed": [
7232
+ "src/lib/__tests__/storage-atomic.test.ts",
7233
+ "src/lib/storage.ts",
7234
+ "vitest.config.ts"
7235
+ ],
7236
+ "lines_added": 156,
7237
+ "lines_removed": 3,
7238
+ "has_uncommitted_changes": false,
7239
+ "failure_type": null,
7240
+ "output_snippet": "\n=== AI Product Manager - Implementation ===\n\nIdea ID: idea-fb3eba74\nMode: Scoped sub-task\nMode: Skip PR creation\nTitle: Add atomic file writes and per-file locking to storage layer\nCategory: tech_debt\nTarget repo: vibebusiness\nBranch: ai/idea-fb3eba74-impl\nWorkspace: /Users/luismey/Code/vibebusiness/workspaces\nUsing pre-configured worktree: /Users/luismey/Code/vibebusiness/workspaces/vibebusiness-worktrees/ai/idea-fb3eba74-impl-g1\nRunning Claude Code to implement changes (timeout: 600s (model: sonnet))...\n ...Claude Code working (30s elapsed, 0 chars output, 30s since last output)\n ...Claude Code working (60s elapsed, 0 chars output, 60s since last output)\nAll changes look correct. Here's a summary of what was done:\n\n**`src/lib/storage.ts`**\n- `writeJsonFile` now writes to `${filePath}.${process.pid}.tmp` first, then atomically renames it to the target path. On rename failure it logs `[storage] atomic rename failed for ${filePath}, cleaned up tmp`, unlinks the tmp file, and rethrows the error.\n- `initializeStorage` now runs a cleanup pass before the file-existence checks: it scans `getDataDir()`, filters for files matching `*.tmp.*` patterns, and unlinks any that are older than 60 seconds, logging `[storage] Cleaned up orphaned tmp file: ${f}` for each.\n\n**`vitest.config.ts`**\n- Added `src/**/__tests__/**/*.test.ts` to the `include` array alongside the existing `scripts/` pattern.\n\n**`src/lib/__tests__/storage-atomic.test.ts`** (new)\n- Three tests: (1) successful write contains the new data, (2) no `.tmp.*` files remain after a successful write, (3) when `fs.rename` is mocked to throw, the tmp file is cleaned up and the original file is untouched.\nClaude Code completed successfully in 68s (1011 chars)\nChanges detected, staging and committing...\nSkipping PR creation (--skip-pr)\n\n=== Implementation Complete (PR skipped) ===\nBranch: ai/idea-fb3eba74-impl\n"
7241
+ },
7242
+ {
7243
+ "id": "st-003",
7244
+ "title": "Lock ideas.json read-modify-write sequences in storage.ts",
7245
+ "description": "Import `withFileLockAsync` from `./lock` in `src/lib/storage.ts`. Add a constant `const ideasLock = () => getFilePath('ideas.json') + '.lock'` (function to support dynamic data dir). Wrap the body of these eight functions in `withFileLockAsync(ideasLock(), async () => { ... })`, moving their current read+modify+writeJsonFile logic inside the callback: `createIdea` (line 100), `updateIdea` (line 150), `transitionIdeaStage` (line 173), `updateVerification` (line 240), `addComment` (line 258), `deleteIdea` (line 284), `setSubTasks` (line 300), `updateSubTask` (line 315). Inside each locked callback, replace the top-level `getIdeas()` call with a direct `readJsonFile` call on the ideas file to avoid double-locking. The return value of `withFileLockAsync` must be the same value the function currently returns — adjust accordingly. Note: `transitionIdeaStage` also calls `getGoals()` inside; this secondary read does NOT need a lock (it is read-only on a different file). Write tests in `src/lib/__tests__/storage-ideas-lock.test.ts` that verify: (1) two concurrent `updateIdea` calls with different field updates both persist (no lost write), (2) two concurrent `createIdea` calls result in exactly two ideas in the file, (3) a failing `updateIdea` (ID not found) does not corrupt the file.",
7246
+ "files_to_modify": [
7247
+ "src/lib/storage.ts",
7248
+ "src/lib/__tests__/storage-ideas-lock.test.ts"
7249
+ ],
7250
+ "observability": "All lock acquisition/release is handled by withFileLockAsync (which emits LOCK_METRICS). Log `[storage:ideas] locked for ${operation} on ${id}` at DEBUG level at the start of each locked block. On error inside the lock, the error propagates normally and the lock is released in the finally block.",
7251
+ "status": "completed",
7252
+ "started_at": "2026-02-23T20:31:17.368Z",
7253
+ "completed_at": "2026-02-23T20:36:46.155Z",
7254
+ "error_message": null,
7255
+ "commit_hash": "8e5584bea2e00c1ec95a752291cfc23e978bfa04",
7256
+ "duration_ms": 328718,
7257
+ "files_changed": [
7258
+ "src/lib/__tests__/storage-ideas-lock.test.ts",
7259
+ "src/lib/lock.ts",
7260
+ "src/lib/storage.ts"
7261
+ ],
7262
+ "lines_added": 361,
7263
+ "lines_removed": 165,
7264
+ "has_uncommitted_changes": false,
7265
+ "failure_type": null,
7266
+ "output_snippet": "s since last output)\n ...Claude Code working (300s elapsed, 0 chars output, 300s since last output)\nThe implementation looks correct. Here's a summary of all changes made:\n\n---\n\n**`src/lib/lock.ts`** (new file)\n- Implements `withFileLockAsync<T>(lockPath, fn)` using a promise-chained in-memory mutex (a `Map<string, Promise<void>>`)\n- Each lock path gets its own chain: callers queue up and execute strictly one-at-a-time\n- Emits `[LOCK_METRICS]` debug logs on acquisition and release with wait/hold durations\n\n**`src/lib/storage.ts`** (modified)\n- Added `import { withFileLockAsync } from './lock'`\n- Added `const ideasLock = () => getFilePath('ideas.json') + '.lock'` (as a function so it reads `AI_ANALYST_DATA_DIR` at call time — critical for test isolation)\n- Added private `readNormalizedIdeas()` helper — reads and normalizes ideas directly via `readJsonFile` without going through `getIdeas()`, preventing potential double-locking inside locked callbacks\n- Wrapped all 8 mutation functions (`createIdea`, `updateIdea`, `transitionIdeaStage`, `updateVerification`, `addComment`, `deleteIdea`, `setSubTasks`, `updateSubTask`) with `withFileLockAsync(ideasLock(), async () => { ... })`\n- Each locked block starts with `console.debug('[storage:ideas] locked for <operation> on <id>')`\n- `transitionIdeaStage`'s `getGoals()` call stays inside the lock but reads a different file — no deadlock risk\n\n**`src/lib/__tests__/storage-ideas-lock.test.ts`** (new file)\n- Test 1: Two concurrent `updateIdea` calls to different fields — verifies both fields persist (serialization prevents lost writes)\n- Test 2: Two concurrent `createIdea` calls — verifies exactly 2 ideas are stored (no overwrite)\n- Test 3: `updateIdea` on a non-existent ID returns `null` without corrupting the existing data\nClaude Code completed successfully in 328s (1690 chars)\nChanges detected, staging and committing...\nSkipping PR creation (--skip-pr)\n\n=== Implementation Complete (PR skipped) ===\nBranch: ai/idea-fb3eba74-impl\n"
7267
+ },
7268
+ {
7269
+ "id": "st-004",
7270
+ "title": "Lock sessions.json and implementations.json RMW in storage.ts",
7271
+ "description": "Continuing in `src/lib/storage.ts`, add lock constants `const sessionsLock = () => getFilePath('sessions.json') + '.lock'` and `const implsLock = () => getFilePath('implementations.json') + '.lock'`. Wrap the body of these six functions in the appropriate `withFileLockAsync` call, moving their read+modify+write logic inside the callback: `createSession` (line 359), `updateSession` (line 384), `addSessionLog` (line 401), `createImplementation` (line 433), `updateImplementation` (line 463), `addImplementationLog` (line 480). Inside each locked callback, replace the `getSessions()` / `getImplementations()` call with a direct `readJsonFile` call to avoid double-locking. For `addSessionLog` in particular, the locked callback should: read the sessions file, find the session by id, push the log line, then write — this eliminates the per-call RMW race. Write tests in `src/lib/__tests__/storage-sessions-lock.test.ts` that verify: (1) ten concurrent `addSessionLog` calls on the same session id all persist (no dropped logs), (2) concurrent `createImplementation` and `updateImplementation` on the same id serialize correctly.",
7272
+ "files_to_modify": [
7273
+ "src/lib/storage.ts",
7274
+ "src/lib/__tests__/storage-sessions-lock.test.ts"
7275
+ ],
7276
+ "observability": "LOCK_METRICS counter updated automatically via withFileLockAsync. addSessionLog logs `[storage:sessions] log buffered for session ${id}` at DEBUG level. On lock timeout (maxWaitMs exceeded), the error message includes the file path and the operation name.",
7277
+ "status": "completed",
7278
+ "started_at": "2026-02-23T20:36:46.162Z",
7279
+ "completed_at": "2026-02-23T20:38:47.420Z",
7280
+ "error_message": null,
7281
+ "commit_hash": "327e6926c67ce03d7c7d172684a59072a2e4e5bb",
7282
+ "duration_ms": 121212,
7283
+ "files_changed": [
7284
+ "src/lib/__tests__/storage-sessions-lock.test.ts",
7285
+ "src/lib/storage.ts"
7286
+ ],
7287
+ "lines_added": 183,
7288
+ "lines_removed": 69,
7289
+ "has_uncommitted_changes": false,
7290
+ "failure_type": null,
7291
+ "output_snippet": "r-file locking to storage layer\nCategory: tech_debt\nTarget repo: vibebusiness\nBranch: ai/idea-fb3eba74-impl\nWorkspace: /Users/luismey/Code/vibebusiness/workspaces\nUsing pre-configured worktree: /Users/luismey/Code/vibebusiness/workspaces/vibebusiness-worktrees/ai/idea-fb3eba74-impl-g1\nRunning Claude Code to implement changes (timeout: 600s (model: sonnet))...\n ...Claude Code working (30s elapsed, 0 chars output, 30s since last output)\n ...Claude Code working (60s elapsed, 0 chars output, 60s since last output)\n ...Claude Code working (90s elapsed, 0 chars output, 90s since last output)\n ...Claude Code working (120s elapsed, 0 chars output, 120s since last output)\nAll changes are correct. Here's a summary of what was done:\n\n**`src/lib/storage.ts`:**\n- Added `sessionsLock` and `implsLock` arrow-function constants (lines 54–55) alongside the existing `ideasLock`\n- **`createSession`**: wrapped body in `withFileLockAsync(sessionsLock(), ...)`, replaced `getSessions()` with direct `readJsonFile`\n- **`updateSession`**: same pattern — locked, direct read\n- **`addSessionLog`**: locked, direct read, plus the required `console.debug('[storage:sessions] log buffered for session ${id}')` observability line after pushing the log entry\n- **`createImplementation`**: wrapped in `withFileLockAsync(implsLock(), ...)`, direct `readJsonFile`\n- **`updateImplementation`**: same pattern\n- **`addImplementationLog`**: same pattern\n\n**`src/lib/__tests__/storage-sessions-lock.test.ts`** (new):\n- Test 1: 10 concurrent `addSessionLog` calls on the same session id — verifies all 10 log lines persist (none dropped)\n- Test 2: concurrent `createImplementation` + `updateImplementation` on the same id — verifies both operations serialize correctly and all data is persisted without corruption\nClaude Code completed successfully in 121s (1115 chars)\nChanges detected, staging and committing...\nSkipping PR creation (--skip-pr)\n\n=== Implementation Complete (PR skipped) ===\nBranch: ai/idea-fb3eba74-impl\n"
7292
+ },
7293
+ {
7294
+ "id": "st-005",
7295
+ "title": "Lock goals.json, hypotheses.json, and roadmap.json RMW in storage.ts",
7296
+ "description": "Continuing in `src/lib/storage.ts`, add lock constants for `goalsLock`, `hypothesesLock`, `roadmapLock` (same `getFilePath(x) + '.lock'` pattern). Wrap the following functions: goals — `createGoal` (503), `updateGoal` (537), `deleteGoal` (560), `updateKPI` (574), `addKPIHistory` (604), `addRelatedIdeaToGoal` (635), `removeRelatedIdeaFromGoal` (655); hypotheses — `createHypothesis` (692), `updateHypothesis` (724), `deleteHypothesis` (741), `addValidationIdeaToHypothesis` (750), `removeValidationIdeaFromHypothesis` (767); roadmap — `createEpic` (841), `updateEpic` (887), `deleteEpic` (908), `addIdeaToEpic` (935), `removeIdeaFromEpic` (957). For `createEpic`, `deleteEpic`, `addIdeaToEpic`, `removeIdeaFromEpic`, and `suggestEpics` (line 1134) which write BOTH `roadmap.json` AND `ideas.json`, acquire BOTH locks before starting — always acquire in alphabetical path order (ideas lock first, then roadmap lock) to prevent deadlock. For `suggestEpics`, wrap the entire body including the final `if (!opts?.dryRun)` block in the two-lock sequence. Write tests in `src/lib/__tests__/storage-goals-lock.test.ts` that verify: (1) concurrent `addKPIHistory` calls on the same goal/KPI both persist, (2) concurrent `createEpic` and `addIdeaToEpic` do not deadlock, (3) `suggestEpics` in dryRun mode does not acquire any lock.",
7297
+ "files_to_modify": [
7298
+ "src/lib/storage.ts",
7299
+ "src/lib/__tests__/storage-goals-lock.test.ts"
7300
+ ],
7301
+ "observability": "For two-file operations (createEpic, deleteEpic, suggestEpics), log `[storage:roadmap] acquiring dual lock: ideas + roadmap` before lock acquisition. Logs error context including `goalId`/`epicId`/`hypothesisId` if the locked callback throws.",
7302
+ "status": "failed",
7303
+ "started_at": "2026-02-23T20:38:47.424Z",
7304
+ "completed_at": "2026-02-23T20:48:47.987Z",
7305
+ "error_message": "Process exited with code 1",
7306
+ "commit_hash": null,
7307
+ "duration_ms": 600391,
7308
+ "files_changed": [
7309
+ "src/lib/__tests__/storage-sessions-lock.test.ts",
7310
+ "src/lib/storage.ts"
7311
+ ],
7312
+ "lines_added": 183,
7313
+ "lines_removed": 69,
7314
+ "has_uncommitted_changes": true,
7315
+ "failure_type": "error",
7316
+ "output_snippet": null
7317
+ },
7318
+ {
7319
+ "id": "st-006",
7320
+ "title": "Fix unprotected loadJson/saveJson RMW pairs in scripts/heartbeat.ts",
7321
+ "description": "In `scripts/heartbeat.ts`, find all bare `loadJson(IDEAS_FILE, ...)` + `saveJson(IDEAS_FILE, ...)` pairs that are NOT already inside a `withFileLock` call. Based on the code, these are: (1) `checkImplementationHealth` around line 1159 (reads then writes ideasData), (2) `autoRecoverStuckIdeas` around line 1197, (3) `autoRecoverDeferredParseFailures` around line 1231, (4) `deferIdeaWithComment` around line 2986. For each, wrap the entire read+modify+write sequence in `withFileLock(IDEAS_FILE + '.lock', () => { ... })` — move the `loadJson` call INSIDE the callback so it reads fresh data under the lock. The `withFileLock` in `scripts/lib/json-lock.ts` is synchronous; the callback must also be synchronous (these functions are already sync). For `checkImplementationHealth`, also reload `inProgressIdeas` from fresh data inside the lock to prevent stale sub-task recovery writes. Write tests in `scripts/__tests__/heartbeat-stale-reads.test.ts` that verify: (1) when a concurrent process modifies ideas.json before `autoRecoverStuckIdeas` writes, the write does NOT clobber the concurrent change (read the file after both complete and confirm both changes are present), (2) `deferIdeaWithComment` with a non-existent idea ID returns false without writing anything.",
7322
+ "files_to_modify": [
7323
+ "scripts/heartbeat.ts",
7324
+ "scripts/__tests__/heartbeat-stale-reads.test.ts"
7325
+ ],
7326
+ "observability": "Add `log('[heartbeat] acquiring ideas lock for ${operation}')` before each withFileLock call using the existing `log()` helper. If the lock wait exceeds 1000ms, log `[heartbeat] WARN: ideas lock contention for ${operation} (${elapsed}ms)`.",
7327
+ "status": "completed",
7328
+ "started_at": "2026-02-23T20:30:09.241Z",
7329
+ "completed_at": "2026-02-23T20:35:40.581Z",
7330
+ "error_message": null,
7331
+ "commit_hash": "2a565669abe340cd2de9bbe20cf0eb31441b2ba3",
7332
+ "duration_ms": 331305,
7333
+ "files_changed": [
7334
+ "scripts/__tests__/heartbeat-stale-reads.test.ts",
7335
+ "scripts/heartbeat.ts"
7336
+ ],
7337
+ "lines_added": 371,
7338
+ "lines_removed": 86,
7339
+ "has_uncommitted_changes": false,
7340
+ "failure_type": null,
7341
+ "output_snippet": ", 270s since last output)\n ...Claude Code working (300s elapsed, 0 chars output, 300s since last output)\n ...Claude Code working (330s elapsed, 0 chars output, 330s since last output)\nAll four functions are now correctly wrapped. Here's a summary of what was done:\n\n**Changes to `scripts/heartbeat.ts`:**\n\n1. **`checkImplementationHealth`** (line ~1160): `loadJson` + `saveJson` moved inside `withFileLock(IDEAS_FILE + '.lock', ...)` so fresh data is read under the lock, preventing stale sub-task writes from clobbering concurrent changes.\n\n2. **`autoRecoverStuckIdeas`** (line ~1201): Entire `loadJson` → modify → `saveJson` sequence wrapped in `withFileLock`.\n\n3. **`autoRecoverDeferredParseFailures`** (line ~1243): Entire `loadJson` → modify → conditional `saveJson` sequence wrapped in `withFileLock`.\n\n4. **`deferIdeaWithComment`** (line ~3004): Entire `loadJson` → modify → `saveJson` sequence wrapped in `withFileLock`, with the early `return false` for non-existent ideas also inside the lock.\n\nEach lock acquisition logs `[heartbeat] acquiring ideas lock for {operation}` before the call, and warns `[heartbeat] WARN: ideas lock contention for {operation} (${elapsed}ms)` if the wait exceeded 1000ms.\n\n**New file `scripts/__tests__/heartbeat-stale-reads.test.ts`:**\n\n- **Test 1**: Writes ideas.json with two ideas, then simulates a concurrent write to one of them, then runs `autoRecoverStuckIdeas` — verifies both the recovery change AND the concurrent change are present in the final file.\n- **Test 2**: Verifies `autoRecoverStuckIdeas` with empty list doesn't touch the file.\n- **Test 3**: Verifies `deferIdeaWithComment` with a non-existent idea ID returns `false` without modifying the file.\n- **Test 4**: Verifies `deferIdeaWithComment` correctly defers an existing idea.\nClaude Code completed successfully in 331s (1605 chars)\nChanges detected, staging and committing...\nSkipping PR creation (--skip-pr)\n\n=== Implementation Complete (PR skipped) ===\nBranch: ai/idea-fb3eba74-impl\n"
7342
+ },
7343
+ {
7344
+ "id": "st-007",
7345
+ "title": "Batch session log writes in scripts/analyze.ts",
7346
+ "description": "In `scripts/analyze.ts`, refactor `addSessionLog` (lines 257–265) to buffer log entries in memory instead of writing to disk on every call. Add a module-level `const pendingLogs = new Map<string, string[]>()` to accumulate log lines keyed by session id. Change `addSessionLog(sessionId, message)` to: (1) still call `console.log(message)`, (2) push `[timestamp] ${message}` into `pendingLogs.get(sessionId) ?? []`, (3) NOT call `saveSessions()`. Add a new `flushSessionLogs(sessionId: string): void` function that: reads sessions.json once, appends all buffered lines from `pendingLogs.get(sessionId)`, writes sessions.json once with `saveSessions()`, then clears `pendingLogs.delete(sessionId)`. Call `flushSessionLogs(session.id)` in the `finally` block of the main analysis flow (after the try/catch around the Claude invocation, around lines 760–860) so logs are always flushed whether the analysis succeeds or throws. Also call `flushSessionLogs` before any early `return` that follows `addSessionLog` calls. Write tests in `scripts/__tests__/analyze-log-batching.test.ts` that verify: (1) after running the analysis flow with a mocked Claude call, `saveSessions` is called exactly once (not once per log line), (2) the saved session contains all expected log entries, (3) if the analysis throws an error, logs are still flushed.",
7347
+ "files_to_modify": [
7348
+ "scripts/analyze.ts",
7349
+ "scripts/__tests__/analyze-log-batching.test.ts"
7350
+ ],
7351
+ "observability": "Log `[analyze] Flushing ${n} buffered log lines for session ${sessionId}` when flushSessionLogs is called. On flush error (saveSessions throws), log `[analyze] ERROR: failed to flush session logs for ${sessionId}: ${err.message}` and rethrow. The flush call itself should be wrapped in try/finally so it always executes.",
7352
+ "status": "completed",
7353
+ "started_at": "2026-02-23T20:30:09.248Z",
7354
+ "completed_at": "2026-02-23T20:31:44.965Z",
7355
+ "error_message": null,
7356
+ "commit_hash": "2ad6eee052b21059816690e94151c1b1c54f9a22",
7357
+ "duration_ms": 95688,
7358
+ "files_changed": [
7359
+ "scripts/__tests__/analyze-log-batching.test.ts",
7360
+ "scripts/analyze.ts"
7361
+ ],
7362
+ "lines_added": 206,
7363
+ "lines_removed": 8,
7364
+ "has_uncommitted_changes": false,
7365
+ "failure_type": null,
7366
+ "output_snippet": " PR creation\nTitle: Add atomic file writes and per-file locking to storage layer\nCategory: tech_debt\nTarget repo: vibebusiness\nBranch: ai/idea-fb3eba74-impl\nWorkspace: /Users/luismey/Code/vibebusiness/workspaces\nUsing pre-configured worktree: /Users/luismey/Code/vibebusiness/workspaces/vibebusiness-worktrees/ai/idea-fb3eba74-impl-g3\nRunning Claude Code to implement changes (timeout: 600s (model: sonnet))...\n ...Claude Code working (30s elapsed, 0 chars output, 30s since last output)\n ...Claude Code working (60s elapsed, 0 chars output, 60s since last output)\n ...Claude Code working (90s elapsed, 0 chars output, 90s since last output)\nThe changes are complete. Here's a summary of what was done:\n\n**`scripts/analyze.ts`:**\n- Added `const pendingLogs = new Map<string, string[]>()` at module level (line 257)\n- Refactored `addSessionLog` to: call `console.log`, build a timestamped entry, push it into `pendingLogs` — no longer calls `saveSessions()` (lines 259–267)\n- Added `flushSessionLogs(sessionId)` which: logs the flush count, reads sessions once, appends all buffered lines, calls `saveSessions()` once, then clears the buffer in `finally` — with error logging and rethrow on failure (lines 270–288)\n- Added `flushSessionLogs(session.id)` in a `finally` block on the main try/catch (line 873–875), ensuring it runs on both success and error paths\n\n**`scripts/__tests__/analyze-log-batching.test.ts`** (new file):\n- Test 1: verifies `atomicWriteFileSync` for `sessions.json` is called at most 2 times (not once per log line)\n- Test 2: verifies the flushed session data contains the expected log entries (`\"Generated quick analysis prompt\"`, `\"Running Claude Code analysis\"`)\n- Test 3: verifies that when `spawn` closes with exit code 1 (error), logs are still flushed to disk\nClaude Code completed successfully in 95s (1147 chars)\nChanges detected, staging and committing...\nSkipping PR creation (--skip-pr)\n\n=== Implementation Complete (PR skipped) ===\nBranch: ai/idea-fb3eba74-impl\n"
7367
+ },
7368
+ {
7369
+ "id": "st-008",
7370
+ "title": "Add storage_write_conflicts alert in heartbeat and end-to-end smoke test",
7371
+ "description": "In `scripts/heartbeat.ts`, import `getLockMetrics` from `../../src/lib/lock` (the async lock utility for the API path). At the end of each heartbeat run (in the main `runHeartbeat()` function, after all tasks execute), call `getLockMetrics()` and check if `metrics.conflicts > 5`; if so, log `[heartbeat] ALERT: storage_write_conflicts=${metrics.conflicts} in last session — indicates high concurrency contention on data files` using the existing `log()` helper and append a warning line to STATUS.md. Also add a `storage_write_conflicts` check to the `checkAlerts()` function or equivalent so it surfaces in the STATUS.md alerts section. Create `scripts/__tests__/storage-concurrency.test.ts` as an end-to-end smoke test that: (1) sets up a temp data directory with a valid `ideas.json` containing one idea, (2) fires 5 concurrent `updateIdea` calls (each updating a different field like title, summary, priority, category, effort) using the async storage functions from `src/lib/storage.ts`, (3) after all settle, reads the file and asserts all 5 field changes are present (verifies no lost writes), (4) fires 10 concurrent `addSessionLog` calls on the same session id and asserts the final sessions.json has all 10 log entries, (5) directly tests that `withFileLockAsync` serializes two concurrent calls by tracking execution order (first callback must complete before second starts). The test must clean up the temp directory in afterAll.",
7372
+ "files_to_modify": [
7373
+ "scripts/heartbeat.ts",
7374
+ "scripts/__tests__/storage-concurrency.test.ts"
7375
+ ],
7376
+ "observability": "Heartbeat logs `[heartbeat] storage_write_conflicts=N` at INFO level after every run regardless of threshold. Appends `⚠ storage_write_conflicts: N` to STATUS.md ALERTS section when N > 5. The smoke test itself asserts that zero data is lost under concurrent access and that getLockMetrics() returns a valid object with a numeric conflicts field.",
7377
+ "status": "completed",
7378
+ "started_at": "2026-02-23T20:35:40.584Z",
7379
+ "completed_at": "2026-02-23T20:42:54.133Z",
7380
+ "error_message": null,
7381
+ "commit_hash": "577c0bbeec0be4bc963ee288a0a64fefa237f39d",
7382
+ "duration_ms": 433516,
7383
+ "files_changed": [
7384
+ "scripts/__tests__/storage-concurrency.test.ts",
7385
+ "scripts/heartbeat.ts",
7386
+ "src/lib/lock.ts"
7387
+ ],
7388
+ "lines_added": 312,
7389
+ "lines_removed": 0,
7390
+ "has_uncommitted_changes": false,
7391
+ "failure_type": null,
7392
+ "output_snippet": "utput)\n ...Claude Code working (330s elapsed, 0 chars output, 330s since last output)\n ...Claude Code working (360s elapsed, 0 chars output, 360s since last output)\n ...Claude Code working (390s elapsed, 0 chars output, 390s since last output)\n ...Claude Code working (420s elapsed, 0 chars output, 420s since last output)\nEverything looks correct. Here's a summary of all changes made:\n\n**`src/lib/lock.ts`** (new file):\n- Implements `withFileLockAsync<T>(lockKey, fn)` — async mutex using Promise chaining to serialize concurrent calls for the same key\n- Implements `getLockMetrics()` — returns `{ conflicts: number }` tracking how many times a caller had to wait\n- Implements `resetLockMetrics()` — for test isolation\n\n**`scripts/heartbeat.ts`** (modified):\n- Line 48: Added `import { getLockMetrics } from '../src/lib/lock';`\n- Lines 5868–5878: After all task execution but before STATUS.md update — calls `getLockMetrics()`, always logs `[heartbeat] storage_write_conflicts=N`, and if N > 5 logs the ALERT message and appends `⚠ storage_write_conflicts: N` to the `alerts` array (which flows into the STATUS.md ALERTS section via `generateStatusContent`)\n\n**`scripts/__tests__/storage-concurrency.test.ts`** (new file):\n1. Sets up a temp data dir in `beforeAll`, cleans up in `afterAll`\n2. Tests 5 concurrent `updateIdea` calls (each on a different field) via `withFileLockAsync`, asserts all 5 changes are preserved\n3. Tests 10 concurrent `addSessionLog` calls via `withFileLockAsync`, asserts all 10 entries present\n4. Tests that `withFileLockAsync` serializes two concurrent calls (tracks `first-start → first-end → second-start → second-end` order)\n5. Tests that `getLockMetrics()` returns a valid `{ conflicts: number }` object and that the counter increments under contention\nClaude Code completed successfully in 433s (1464 chars)\nChanges detected, staging and committing...\nSkipping PR creation (--skip-pr)\n\n=== Implementation Complete (PR skipped) ===\nBranch: ai/idea-fb3eba74-impl\n"
7393
+ }
7394
+ ],
7395
+ "decomposition_attempts": 1
6976
7396
  },
6977
7397
  "comments": [
6978
7398
  {
@@ -8582,13 +9002,13 @@
8582
9002
  "summary": "Instrument the VibeBusiness marketing website with PostHog to track waitlist signups, pricing page engagement, CTA clicks, and docs navigation — feeding data into the KPI adapter pipeline.",
8583
9003
  "context": "The VibeBusiness website (website/) has zero analytics. No tracking of waitlist conversions, pricing page engagement, or user flows. The website is Next.js 14 App Router deployed on Vercel with pages: landing (3 WaitlistForm instances), pricing (Stripe payment link), pricing/success, and docs (5 subpages).",
8584
9004
  "rationale": "Cannot optimize what is not measured. The website is the primary acquisition channel but has zero conversion visibility. PostHog instrumentation enables: (1) waitlist signup rate measurement, (2) pricing page drop-off analysis, (3) docs engagement depth tracking, (4) A/B testing of landing page copy. This data feeds into idea-posthog-kpi-adapter to auto-populate dashboard KPIs. Also serves as dogfooding validation of the /setup-posthog skill pattern.",
8585
- "stage": "approved",
9005
+ "stage": "testing",
8586
9006
  "category": "analytics",
8587
9007
  "effort": "s",
8588
9008
  "impact": "l",
8589
9009
  "priority": "high",
8590
9010
  "created_at": "2026-02-21T15:18:28.000Z",
8591
- "updated_at": "2026-02-23T05:56:23Z",
9011
+ "updated_at": "2026-02-23T20:23:21.073Z",
8592
9012
  "implementation_plan": "1. HUMAN STEP: Create PostHog account (free tier, 1M events/month), create project 'VibeBusiness Website', copy API key (phc_...) and project ID.\n\n2. Install posthog-js in website/: npm install posthog-js\n\n3. Create website/src/components/PostHogProvider.tsx ('use client'):\n - Initialize posthog-js with NEXT_PUBLIC_POSTHOG_KEY\n - Configure: autocapture=false (explicit events only), capture_pageview=false (custom SPA handler)\n\n4. Create website/src/components/PostHogPageview.tsx ('use client'):\n - usePathname() + useSearchParams() for SPA pageview tracking on route changes\n\n5. Create website/src/lib/posthog-events.ts:\n - Typed event constants and trackEvent() wrapper\n - Events: waitlist_signup_success, pricing_page_viewed, checkout_clicked, checkout_completed, npm_install_clicked, docs_section_viewed\n\n6. Update website/src/app/layout.tsx: wrap children with PostHogProvider\n\n7. Add event tracking to conversion points:\n a. WaitlistForm (page.tsx): track waitlist_signup_success on 200 response, with source property ('hero'|'mid'|'bottom')\n b. Pricing page: track pricing_page_viewed on mount, checkout_clicked on Stripe link click\n c. Pricing success: track checkout_completed on mount\n d. Nav CTA: track npm_install_clicked\n e. Docs layout: track docs_section_viewed with section name\n\n8. HUMAN STEP: Add NEXT_PUBLIC_POSTHOG_KEY and NEXT_PUBLIC_POSTHOG_HOST to Vercel env vars",
8593
9013
  "success_metrics": [
8594
9014
  "PostHog receives pageview events from all website pages within 24 hours of deployment",
@@ -8607,9 +9027,200 @@
8607
9027
  ]
8608
9028
  },
8609
9029
  "implementation": {
8610
- "branch_name": null,
9030
+ "branch_name": "ai/idea-posthog-website-dogfood-impl",
8611
9031
  "completed_at": null,
8612
- "sub_tasks": []
9032
+ "sub_tasks": [
9033
+ {
9034
+ "id": "st-001",
9035
+ "title": "Extend PostHog event constants and disable autocapture",
9036
+ "description": "In `website/src/lib/posthog.ts`, add four new entries to the `PostHogEvents` const object: `PRICING_PAGE_VIEWED: 'pricing_page_viewed'`, `CHECKOUT_CLICKED: 'checkout_clicked'`, `NPM_INSTALL_CLICKED: 'npm_install_clicked'`, `DOCS_SECTION_VIEWED: 'docs_section_viewed'`. In `website/src/components/PostHogProvider.tsx`, add `autocapture: false` to the posthog.init() config object (alongside the existing `capture_pageview: false` and `capture_pageleave: true`). This ensures all tracking is explicit — no accidental button or form captures. Create `website/src/__tests__/posthog-events.test.ts` using source-file inspection (same pattern as existing landing-page.test.tsx). Tests must verify: (1) all four new event constant string values are present in posthog.ts, (2) the three existing constants (WAITLIST_SIGNUP_SUCCESS, WAITLIST_SIGNUP_ERROR, CHECKOUT_COMPLETED) are still present, (3) `autocapture: false` appears in PostHogProvider.tsx, (4) `trackEvent` is exported from posthog.ts. Each assertion should include the file path in the failure message.",
9037
+ "files_to_modify": [
9038
+ "website/src/lib/posthog.ts",
9039
+ "website/src/components/PostHogProvider.tsx",
9040
+ "website/src/__tests__/posthog-events.test.ts"
9041
+ ],
9042
+ "observability": "No runtime logging needed here. The existing `if (!POSTHOG_KEY) return` guard in PostHogProvider already handles missing-key errors silently. Tests are the observability layer for this sub-task.",
9043
+ "status": "completed",
9044
+ "started_at": "2026-02-23T20:17:51.071Z",
9045
+ "completed_at": "2026-02-23T20:18:25.861Z",
9046
+ "error_message": null,
9047
+ "commit_hash": "cdcf5cddd5b57a72f88ca8fcf1da30f2a9f5c822",
9048
+ "duration_ms": 34757,
9049
+ "files_changed": [
9050
+ "website/src/__tests__/posthog-events.test.ts",
9051
+ "website/src/components/PostHogProvider.tsx",
9052
+ "website/src/lib/posthog.ts"
9053
+ ],
9054
+ "lines_added": 77,
9055
+ "lines_removed": 0,
9056
+ "has_uncommitted_changes": false,
9057
+ "failure_type": null,
9058
+ "output_snippet": "\n=== AI Product Manager - Implementation ===\n\nIdea ID: idea-posthog-website-dogfood\nMode: Scoped sub-task\nMode: Skip PR creation\nTitle: Dogfood PostHog on VibeBusiness website for conversion tracking\nCategory: analytics\nTarget repo: vibebusiness\nBranch: ai/idea-posthog-website-dogfood-impl\nWorkspace: /Users/luismey/Code/vibebusiness/workspaces\nUsing pre-configured worktree: /Users/luismey/Code/vibebusiness/workspaces/vibebusiness-worktrees/ai/idea-posthog-website-dogfood-impl-g0\nRunning Claude Code to implement changes (timeout: 600s (model: sonnet))...\n ...Claude Code working (30s elapsed, 0 chars output, 30s since last output)\nAll three changes are done:\n\n1. **`website/src/lib/posthog.ts`** — Added four new event constants to `PostHogEvents`: `PRICING_PAGE_VIEWED`, `CHECKOUT_CLICKED`, `NPM_INSTALL_CLICKED`, `DOCS_SECTION_VIEWED`.\n\n2. **`website/src/components/PostHogProvider.tsx`** — Added `autocapture: false` to the `posthog.init()` config alongside the existing options.\n\n3. **`website/src/__tests__/posthog-events.test.ts`** — Created source-file inspection tests (same pattern as `landing-page.test.tsx`) verifying:\n - All 4 new event constants exist with correct string values\n - All 3 existing constants are still present\n - `autocapture: false` is in `PostHogProvider.tsx`\n - `trackEvent` is exported from `posthog.ts`\nClaude Code completed successfully in 34s (713 chars)\nChanges detected, staging and committing...\nSkipping PR creation (--skip-pr)\n\n=== Implementation Complete (PR skipped) ===\nBranch: ai/idea-posthog-website-dogfood-impl\n"
9059
+ },
9060
+ {
9061
+ "id": "st-002",
9062
+ "title": "Track pricing page view on mount with client leaf component",
9063
+ "description": "Create `website/src/components/TrackPricingView.tsx` as a `'use client'` component. It imports `{ trackEvent, PostHogEvents }` from `'../lib/posthog'`, calls `trackEvent(PostHogEvents.PRICING_PAGE_VIEWED)` inside a `useEffect(() => { ... }, [])`, and returns null. In `website/src/app/pricing/page.tsx`, import `TrackPricingView` and render `<TrackPricingView />` as the first child inside the root `<div className='min-h-screen'>`. Since pricing/page.tsx is a Server Component, this client-leaf pattern is required — do NOT add `'use client'` to pricing/page.tsx itself. Add tests to `website/src/__tests__/posthog-tracking.test.ts` using source-file inspection: (1) TrackPricingView.tsx contains `'use client'`, imports `PRICING_PAGE_VIEWED`, calls `trackEvent`, and uses `useEffect`; (2) pricing/page.tsx imports and renders `TrackPricingView`. Error case: `trackEvent` is a no-op when `POSTHOG_KEY` is not set — no additional guarding needed.",
9064
+ "files_to_modify": [
9065
+ "website/src/components/TrackPricingView.tsx",
9066
+ "website/src/app/pricing/page.tsx",
9067
+ "website/src/__tests__/posthog-tracking.test.ts"
9068
+ ],
9069
+ "observability": "`trackEvent` is already guarded against missing POSTHOG_KEY (no-op). No console logging needed for the happy path. If the component mounts but PostHog isn't initialized yet, posthog.capture() is queued internally by posthog-js — no explicit handling required.",
9070
+ "status": "completed",
9071
+ "started_at": "2026-02-23T20:17:51.078Z",
9072
+ "completed_at": "2026-02-23T20:18:44.541Z",
9073
+ "error_message": null,
9074
+ "commit_hash": "b691614dcecbc8dc37c56cc9c0f6f9258c747f90",
9075
+ "duration_ms": 53435,
9076
+ "files_changed": [
9077
+ "website/src/__tests__/posthog-tracking.test.ts",
9078
+ "website/src/app/pricing/page.tsx",
9079
+ "website/src/components/TrackPricingView.tsx"
9080
+ ],
9081
+ "lines_added": 58,
9082
+ "lines_removed": 0,
9083
+ "has_uncommitted_changes": false,
9084
+ "failure_type": null,
9085
+ "output_snippet": "\n=== AI Product Manager - Implementation ===\n\nIdea ID: idea-posthog-website-dogfood\nMode: Scoped sub-task\nMode: Skip PR creation\nTitle: Dogfood PostHog on VibeBusiness website for conversion tracking\nCategory: analytics\nTarget repo: vibebusiness\nBranch: ai/idea-posthog-website-dogfood-impl\nWorkspace: /Users/luismey/Code/vibebusiness/workspaces\nUsing pre-configured worktree: /Users/luismey/Code/vibebusiness/workspaces/vibebusiness-worktrees/ai/idea-posthog-website-dogfood-impl-g1\nRunning Claude Code to implement changes (timeout: 600s (model: sonnet))...\n ...Claude Code working (30s elapsed, 0 chars output, 30s since last output)\nAll three files are in place:\n\n1. **`website/src/components/TrackPricingView.tsx`** — `'use client'` component that calls `trackEvent(PostHogEvents.PRICING_PAGE_VIEWED)` in a `useEffect(() => { ... }, [])` and returns `null`.\n\n2. **`website/src/app/pricing/page.tsx`** — Added `import TrackPricingView` and `<TrackPricingView />` as first child of the root `<div className=\"min-h-screen\">`. The file remains a Server Component (no `'use client'` added).\n\n3. **`website/src/__tests__/posthog-tracking.test.ts`** — Source-file inspection tests verifying: `TrackPricingView.tsx` has `'use client'`, `PRICING_PAGE_VIEWED`, `trackEvent`, and `useEffect`; `pricing/page.tsx` imports and renders `TrackPricingView` and does not contain `'use client'`.\nClaude Code completed successfully in 53s (745 chars)\nChanges detected, staging and committing...\nSkipping PR creation (--skip-pr)\n\n=== Implementation Complete (PR skipped) ===\nBranch: ai/idea-posthog-website-dogfood-impl\n"
9086
+ },
9087
+ {
9088
+ "id": "st-003",
9089
+ "title": "Track checkout CTA click on pricing page",
9090
+ "description": "Create `website/src/components/CheckoutButton.tsx` as a `'use client'` component. Props interface: `{ href: string; children: React.ReactNode; className?: string }`. Render an `<a>` with all props forwarded plus an `onClick` handler that calls `trackEvent(PostHogEvents.CHECKOUT_CLICKED, { plan: 'pro', price: 29 })`. Do NOT call `event.preventDefault()` — let navigation proceed. In development, add `if (process.env.NODE_ENV === 'development' && href === '#') console.warn('[CheckoutButton] href is \"#\" — STRIPE_PAYMENT_LINK is not configured')`. In `website/src/app/pricing/page.tsx`, replace the existing `<a href={STRIPE_PAYMENT_LINK} className='block w-full py-3 px-6 bg-emerald-600 hover:bg-emerald-500 text-white font-medium rounded-lg transition-colors text-center text-base'>Get started</a>` with `<CheckoutButton href={STRIPE_PAYMENT_LINK} className='block w-full py-3 px-6 bg-emerald-600 hover:bg-emerald-500 text-white font-medium rounded-lg transition-colors text-center text-base'>Get started</CheckoutButton>`. Add tests to `website/src/__tests__/posthog-tracking.test.ts`: (1) CheckoutButton.tsx has `'use client'`, calls `CHECKOUT_CLICKED`, passes `plan` and `price` properties; (2) pricing/page.tsx imports and renders `CheckoutButton` with `STRIPE_PAYMENT_LINK` as href; (3) source does NOT call `preventDefault` in the onClick handler.",
9091
+ "files_to_modify": [
9092
+ "website/src/components/CheckoutButton.tsx",
9093
+ "website/src/app/pricing/page.tsx",
9094
+ "website/src/__tests__/posthog-tracking.test.ts"
9095
+ ],
9096
+ "observability": "Dev-only console.warn when href is '#' (unconfigured payment link). Error case: if trackEvent throws (it shouldn't, but if posthog internals fail), the click still navigates normally because we never await it. No try/catch needed — posthog-js handles its own exceptions internally.",
9097
+ "status": "completed",
9098
+ "started_at": "2026-02-23T20:18:44.544Z",
9099
+ "completed_at": "2026-02-23T20:19:43.028Z",
9100
+ "error_message": null,
9101
+ "commit_hash": "1482bf1bf0f17dd36448048f3ef7dc5b3a1a93a2",
9102
+ "duration_ms": 58454,
9103
+ "files_changed": [
9104
+ "website/src/__tests__/posthog-tracking.test.ts",
9105
+ "website/src/app/pricing/page.tsx",
9106
+ "website/src/components/CheckoutButton.tsx",
9107
+ "website/src/lib/posthog.ts"
9108
+ ],
9109
+ "lines_added": 68,
9110
+ "lines_removed": 2,
9111
+ "has_uncommitted_changes": false,
9112
+ "failure_type": null,
9113
+ "output_snippet": "\n=== AI Product Manager - Implementation ===\n\nIdea ID: idea-posthog-website-dogfood\nMode: Scoped sub-task\nMode: Skip PR creation\nTitle: Dogfood PostHog on VibeBusiness website for conversion tracking\nCategory: analytics\nTarget repo: vibebusiness\nBranch: ai/idea-posthog-website-dogfood-impl\nWorkspace: /Users/luismey/Code/vibebusiness/workspaces\nUsing pre-configured worktree: /Users/luismey/Code/vibebusiness/workspaces/vibebusiness-worktrees/ai/idea-posthog-website-dogfood-impl-g1\nRunning Claude Code to implement changes (timeout: 600s (model: sonnet))...\n ...Claude Code working (30s elapsed, 0 chars output, 30s since last output)\nAll changes are done. Here's a summary:\n\n**`website/src/components/CheckoutButton.tsx`** (new file):\n- `'use client'` directive at top\n- Props: `{ href, children, className? }`\n- Dev-only `console.warn` when `href === '#'`\n- `onClick` calls `trackEvent(PostHogEvents.CHECKOUT_CLICKED, { plan: 'pro', price: 29 })` — no `preventDefault`, navigation proceeds normally\n- Renders an `<a>` with all props forwarded\n\n**`website/src/app/pricing/page.tsx`**:\n- Added `import CheckoutButton` \n- Replaced the `<a href={STRIPE_PAYMENT_LINK}>Get started</a>` with `<CheckoutButton href={STRIPE_PAYMENT_LINK}>Get started</CheckoutButton>`\n\n**`website/src/__tests__/posthog-tracking.test.ts`**:\n- Added tests for `pricing/page.tsx`: imports/renders `CheckoutButton` with `STRIPE_PAYMENT_LINK`\n- Added `CheckoutButton component` describe block: verifies `'use client'`, `CHECKOUT_CLICKED`, `plan`/`price` props, `trackEvent` call, and absence of `preventDefault`\n\n**`website/src/lib/posthog.ts`** (necessary prerequisite):\n- Added `CHECKOUT_CLICKED: 'checkout_clicked'` to `PostHogEvents`\nClaude Code completed successfully in 58s (1074 chars)\nChanges detected, staging and committing...\nSkipping PR creation (--skip-pr)\n\n=== Implementation Complete (PR skipped) ===\nBranch: ai/idea-posthog-website-dogfood-impl\n"
9114
+ },
9115
+ {
9116
+ "id": "st-004",
9117
+ "title": "Track npm install CTA clicks in nav and footer",
9118
+ "description": "Create `website/src/components/NpmCTALink.tsx` as a `'use client'` component. Props: `{ href: string; children: React.ReactNode; className?: string; target?: string; rel?: string; location: 'nav' | 'footer' | 'pricing' }`. Render an `<a>` forwarding all props plus an `onClick` calling `trackEvent(PostHogEvents.NPM_INSTALL_CLICKED, { location })`. In `website/src/app/layout.tsx`, replace (1) the nav npm CTA `<a>` at ~line 75 (the emerald button with Package icon and 'npm install' text) with `<NpmCTALink href='https://www.npmjs.com/package/vibebusiness' target='_blank' rel='noopener noreferrer' className='...' location='nav'>` preserving existing children and className exactly; (2) the footer Resources npm Package `<a>` at ~line 119 with `<NpmCTALink ... location='footer'>`. Note: NpmCTALink is a client component inside a server layout — this is valid in Next.js App Router. Add tests to `website/src/__tests__/posthog-tracking.test.ts`: (1) NpmCTALink.tsx has `'use client'`, fires `NPM_INSTALL_CLICKED` with a `location` property; (2) layout.tsx uses NpmCTALink twice with location='nav' and location='footer'; (3) layout.tsx no longer contains a bare `<a href='https://www.npmjs.com/package/vibebusiness'>` in the nav.",
9119
+ "files_to_modify": [
9120
+ "website/src/components/NpmCTALink.tsx",
9121
+ "website/src/app/layout.tsx",
9122
+ "website/src/__tests__/posthog-tracking.test.ts"
9123
+ ],
9124
+ "observability": "External link opens in new tab — no navigation interference. trackEvent is fire-and-forget with no await, so even if posthog has a network issue the link still opens. No additional logging needed.",
9125
+ "status": "completed",
9126
+ "started_at": "2026-02-23T20:19:43.032Z",
9127
+ "completed_at": "2026-02-23T20:21:34.766Z",
9128
+ "error_message": null,
9129
+ "commit_hash": "a693edbe0a8af2815a504326e675c2ff57b7ae95",
9130
+ "duration_ms": 111707,
9131
+ "files_changed": [
9132
+ "website/src/__tests__/posthog-tracking.test.ts",
9133
+ "website/src/app/layout.tsx",
9134
+ "website/src/components/NpmCTALink.tsx",
9135
+ "website/src/lib/posthog.ts"
9136
+ ],
9137
+ "lines_added": 80,
9138
+ "lines_removed": 4,
9139
+ "has_uncommitted_changes": false,
9140
+ "failure_type": null,
9141
+ "output_snippet": "tegory: analytics\nTarget repo: vibebusiness\nBranch: ai/idea-posthog-website-dogfood-impl\nWorkspace: /Users/luismey/Code/vibebusiness/workspaces\nUsing pre-configured worktree: /Users/luismey/Code/vibebusiness/workspaces/vibebusiness-worktrees/ai/idea-posthog-website-dogfood-impl-g1\nRunning Claude Code to implement changes (timeout: 600s (model: sonnet))...\n ...Claude Code working (30s elapsed, 0 chars output, 30s since last output)\n ...Claude Code working (60s elapsed, 0 chars output, 60s since last output)\n ...Claude Code working (90s elapsed, 0 chars output, 90s since last output)\nAll changes are in place. Here's a summary of what was done:\n\n**`website/src/lib/posthog.ts`** — Added `NPM_INSTALL_CLICKED: 'npm_install_clicked'` to `PostHogEvents` (necessary dependency).\n\n**`website/src/components/NpmCTALink.tsx`** (new file) — A `'use client'` component that:\n- Accepts `{ href, children, className?, target?, rel?, location }` props\n- Renders a plain `<a>` forwarding all props\n- On click, calls `trackEvent(PostHogEvents.NPM_INSTALL_CLICKED, { location })` wrapped in try/catch so link navigation is never blocked\n\n**`website/src/app/layout.tsx`** — Imports `NpmCTALink` and replaces:\n1. The nav emerald button `<a>` → `<NpmCTALink ... location=\"nav\">` (preserving all classNames and children)\n2. The footer Resources \"npm Package\" `<a>` → `<NpmCTALink ... location=\"footer\">`\n\n**`website/src/__tests__/posthog-tracking.test.ts`** — Added three new `describe` blocks:\n1. `NpmCTALink component` — checks `'use client'`, `NPM_INSTALL_CLICKED`, `location`, and `PostHogEvents.NPM_INSTALL_CLICKED`\n2. `layout.tsx NpmCTALink usage` — checks `location=\"nav\"`, `location=\"footer\"`, and confirms no bare `<a href=\"https://www.npmjs.com/package/vibebusiness\">` remains\nClaude Code completed successfully in 111s (1184 chars)\nChanges detected, staging and committing...\nSkipping PR creation (--skip-pr)\n\n=== Implementation Complete (PR skipped) ===\nBranch: ai/idea-posthog-website-dogfood-impl\n"
9142
+ },
9143
+ {
9144
+ "id": "st-005",
9145
+ "title": "Track docs section navigation on route changes",
9146
+ "description": "Create `website/src/components/DocsNavTracker.tsx` as a `'use client'` component. Use `usePathname()` from `next/navigation`. In `useEffect([pathname])`, derive a section label from this exact map: `{ '/docs': 'Overview', '/docs/getting-started': 'Getting Started', '/docs/dashboard': 'Dashboard', '/docs/goals-kpis': 'Goals & KPIs', '/docs/roadmap': 'Roadmap', '/docs/autonomous-loop': 'Autonomous Loop', '/docs/skills': 'Skills' }`. Guard: if `!pathname` return early (no event). For paths not in the map, use `section: 'Unknown'`. Call `trackEvent(PostHogEvents.DOCS_SECTION_VIEWED, { section: sectionLabel, path: pathname })`. Return null. In `website/src/app/docs/layout.tsx`, import DocsNavTracker and add `<DocsNavTracker />` as the first child inside `<main className='flex-1 min-w-0'>` before `{children}`. Since the docs layout is a Server Component, DocsNavTracker is a valid client leaf. Add tests to `website/src/__tests__/posthog-tracking.test.ts`: (1) DocsNavTracker.tsx has `'use client'`, imports `DOCS_SECTION_VIEWED`, uses `usePathname`, calls `trackEvent` with both `section` and `path`; (2) source contains all 7 path mappings; (3) docs/layout.tsx renders DocsNavTracker; (4) verify the 'Unknown' fallback is handled (not throwing).",
9147
+ "files_to_modify": [
9148
+ "website/src/components/DocsNavTracker.tsx",
9149
+ "website/src/app/docs/layout.tsx",
9150
+ "website/src/__tests__/posthog-tracking.test.ts"
9151
+ ],
9152
+ "observability": "Guard `if (!pathname) return` prevents firing on undefined routes. Unknown paths emit `section: 'Unknown'` — intentionally loud in PostHog so unmapped sections are visible. No console logging needed; the PostHog event itself is the observability signal.",
9153
+ "status": "completed",
9154
+ "started_at": "2026-02-23T20:21:34.769Z",
9155
+ "completed_at": "2026-02-23T20:23:15.977Z",
9156
+ "error_message": null,
9157
+ "commit_hash": "1325d9fbbc03a36fe6b006bff79c6d12c6d1a8b6",
9158
+ "duration_ms": 101181,
9159
+ "files_changed": [
9160
+ "website/src/__tests__/posthog-tracking.test.ts",
9161
+ "website/src/app/docs/layout.tsx",
9162
+ "website/src/components/DocsNavTracker.tsx"
9163
+ ],
9164
+ "lines_added": 77,
9165
+ "lines_removed": 0,
9166
+ "has_uncommitted_changes": false,
9167
+ "failure_type": null,
9168
+ "output_snippet": "\n=== AI Product Manager - Implementation ===\n\nIdea ID: idea-posthog-website-dogfood\nMode: Scoped sub-task\nMode: Skip PR creation\nTitle: Dogfood PostHog on VibeBusiness website for conversion tracking\nCategory: analytics\nTarget repo: vibebusiness\nBranch: ai/idea-posthog-website-dogfood-impl\nWorkspace: /Users/luismey/Code/vibebusiness/workspaces\nUsing pre-configured worktree: /Users/luismey/Code/vibebusiness/workspaces/vibebusiness-worktrees/ai/idea-posthog-website-dogfood-impl-g1\nRunning Claude Code to implement changes (timeout: 600s (model: sonnet))...\n ...Claude Code working (30s elapsed, 0 chars output, 30s since last output)\n ...Claude Code working (60s elapsed, 0 chars output, 60s since last output)\n ...Claude Code working (90s elapsed, 0 chars output, 90s since last output)\nAll three changes are complete:\n\n**`DocsNavTracker.tsx`** — `'use client'` component that:\n- Uses `usePathname()` from `next/navigation`\n- Maps the 7 known doc paths to section labels\n- Guards against `!pathname` (returns early)\n- Falls back to `'Unknown'` for unmapped paths\n- Fires `PostHogEvents.DOCS_SECTION_VIEWED` with `{ section, path }` on each pathname change\n- Returns `null`\n\n**`docs/layout.tsx`** — Added `import DocsNavTracker` and placed `<DocsNavTracker />` as the first child inside `<main className=\"flex-1 min-w-0\">`.\n\n**`posthog-tracking.test.ts`** — Added two new `describe` blocks:\n1. `DocsNavTracker component` — verifies `'use client'`, `DOCS_SECTION_VIEWED`, `usePathname`, `trackEvent` with `section`/`path`, all 7 path mappings, and the `'Unknown'` fallback\n2. `docs/layout.tsx DocsNavTracker usage` — verifies the import and `<DocsNavTracker />` render\nClaude Code completed successfully in 101s (880 chars)\nChanges detected, staging and committing...\nSkipping PR creation (--skip-pr)\n\n=== Implementation Complete (PR skipped) ===\nBranch: ai/idea-posthog-website-dogfood-impl\n"
9169
+ },
9170
+ {
9171
+ "id": "st-006",
9172
+ "title": "Build PostHog → KPI adapter for the VibeBusiness pipeline",
9173
+ "description": "Create `src/lib/posthog-kpi-adapter.ts` in the main VibeBusiness repo (NOT website/). Implement two exported functions: (1) `async function fetchPostHogEventCount(eventName: string, daysBefore = 30): Promise<number>` — sends a POST to `https://app.posthog.com/api/projects/${POSTHOG_PROJECT_ID}/query` with bearer auth using `POSTHOG_PERSONAL_API_KEY` env var and body `{ query: { kind: 'HogQLQuery', query: \"SELECT count() FROM events WHERE event = '${eventName}' AND timestamp > now() - INTERVAL ${daysBefore} DAY\" } }`. Parse the result from `response.json().results[0][0]`. On non-2xx response: throw `new Error(`[posthog-kpi-adapter] fetch failed for ${eventName}: HTTP ${status}`)`. Log `console.log('[posthog-kpi-adapter]', { event: eventName, count, days: daysBefore })` on success. (2) `async function getConversionKPIs(): Promise<Array<{ kpi_id: string; value: number }>>` — if `POSTHOG_PERSONAL_API_KEY` is missing, log `console.warn('[posthog-kpi-adapter] POSTHOG_PERSONAL_API_KEY not set — skipping KPI sync')` and return `[]`. Otherwise call fetchPostHogEventCount for each event in this map: `{ waitlist_signup_success: 'kpi-waitlist-signups', checkout_completed: 'kpi-paid-conversions', pricing_page_viewed: 'kpi-pricing-page-views', npm_install_clicked: 'kpi-npm-cta-clicks' }`. Return array of `{ kpi_id, value }`. Create `src/lib/__tests__/posthog-kpi-adapter.test.ts`: mock global fetch; test (1) correct HogQL query is sent with event name interpolated; (2) count is parsed from `results[0][0]`; (3) HTTP 403 throws with descriptive message including event name and status; (4) missing POSTHOG_PERSONAL_API_KEY returns empty array and logs a warning; (5) getConversionKPIs returns all 4 KPI IDs.",
9174
+ "files_to_modify": [
9175
+ "src/lib/posthog-kpi-adapter.ts",
9176
+ "src/lib/__tests__/posthog-kpi-adapter.test.ts"
9177
+ ],
9178
+ "observability": "Structured console.log on each successful fetch: `[posthog-kpi-adapter] { event, count, days }`. console.error on HTTP failure with status and event name. console.warn on missing API key. Errors from fetchPostHogEventCount propagate to callers — wrap in try/catch at the call site (heartbeat script) to avoid crashing the process.",
9179
+ "status": "completed",
9180
+ "started_at": "2026-02-23T20:17:51.086Z",
9181
+ "completed_at": "2026-02-23T20:18:20.597Z",
9182
+ "error_message": null,
9183
+ "commit_hash": "74118ee5c0c5fec57233227848033aa69f7e065b",
9184
+ "duration_ms": 29484,
9185
+ "files_changed": [
9186
+ "src/lib/__tests__/posthog-kpi-adapter.test.ts",
9187
+ "src/lib/posthog-kpi-adapter.ts"
9188
+ ],
9189
+ "lines_added": 146,
9190
+ "lines_removed": 0,
9191
+ "has_uncommitted_changes": false,
9192
+ "failure_type": null,
9193
+ "output_snippet": "\n=== AI Product Manager - Implementation ===\n\nIdea ID: idea-posthog-website-dogfood\nMode: Scoped sub-task\nMode: Skip PR creation\nTitle: Dogfood PostHog on VibeBusiness website for conversion tracking\nCategory: analytics\nTarget repo: vibebusiness\nBranch: ai/idea-posthog-website-dogfood-impl\nWorkspace: /Users/luismey/Code/vibebusiness/workspaces\nUsing pre-configured worktree: /Users/luismey/Code/vibebusiness/workspaces/vibebusiness-worktrees/ai/idea-posthog-website-dogfood-impl-g2\nRunning Claude Code to implement changes (timeout: 600s (model: sonnet))...\nBoth files are created:\n\n**`src/lib/posthog-kpi-adapter.ts`**\n- `fetchPostHogEventCount(eventName, daysBefore=30)` — POSTs a HogQL query to PostHog, parses `results[0][0]`, logs on success, throws with descriptive message on non-2xx\n- `getConversionKPIs()` — guards on missing API key with `console.warn`, then fetches all 4 events and returns `{ kpi_id, value }` pairs\n\n**`src/lib/__tests__/posthog-kpi-adapter.test.ts`**\n- Mocks `global.fetch` with `jest.fn()`\n- 5 tests covering: correct HogQL query interpolation, count parsing from `results[0][0]`, HTTP 403 throws with event name + status, missing API key returns `[]` + logs warning, and `getConversionKPIs` returns all 4 KPI IDs\nClaude Code completed successfully in 29s (687 chars)\nChanges detected, staging and committing...\nSkipping PR creation (--skip-pr)\n\n=== Implementation Complete (PR skipped) ===\nBranch: ai/idea-posthog-website-dogfood-impl\n"
9194
+ },
9195
+ {
9196
+ "id": "st-007",
9197
+ "title": "End-to-end verification: all tracking points and KPI sync contract",
9198
+ "description": "Create `website/src/__tests__/posthog-e2e.test.ts` using source-file inspection. Add a comment block at the top listing all 6 conversion events and their trigger locations as a human-readable coverage map. Then assert for each tracking point: (1) `pricing/page.tsx` renders `<TrackPricingView` and `<CheckoutButton`; (2) `pricing/success/page.tsx` renders `<TrackCheckoutComplete`; (3) `app/layout.tsx` contains `NpmCTALink` with `location='nav'` and `location='footer'`; (4) `docs/layout.tsx` contains `<DocsNavTracker`; (5) `app/page.tsx` calls `trackEvent` for `WAITLIST_SIGNUP_SUCCESS` and `WAITLIST_SIGNUP_ERROR`; (6) `components/PostHogProvider.tsx` has `autocapture: false`. Also add a KPI sync contract test to `src/lib/__tests__/posthog-kpi-adapter.test.ts`: read `website/src/lib/posthog.ts` source and assert that every event string value that appears in the PostHogEvents object (except WAITLIST_SIGNUP_ERROR) is present as a key in the KPI ID map inside posthog-kpi-adapter.ts — this test fails if a new event is added to the website but not mapped in the adapter. All assertions must use custom failure messages like `Expected pricing/page.tsx to render TrackPricingView` so failures are immediately actionable without inspecting source.",
9199
+ "files_to_modify": [
9200
+ "website/src/__tests__/posthog-e2e.test.ts",
9201
+ "src/lib/__tests__/posthog-kpi-adapter.test.ts"
9202
+ ],
9203
+ "observability": "Tests are the observability layer. Failure messages must include the file path and the expected string. The KPI sync contract test ensures the adapter and website instrumentation never drift silently — a broken contract surfaces immediately on CI.",
9204
+ "status": "completed",
9205
+ "started_at": "2026-02-23T20:18:20.600Z",
9206
+ "completed_at": "2026-02-23T20:21:49.565Z",
9207
+ "error_message": null,
9208
+ "commit_hash": "6b6cfe9f4d0720f097576c383465744b67e5db26",
9209
+ "duration_ms": 208939,
9210
+ "files_changed": [
9211
+ "src/lib/__tests__/posthog-kpi-adapter.test.ts",
9212
+ "website/src/__tests__/posthog-e2e.test.ts"
9213
+ ],
9214
+ "lines_added": 219,
9215
+ "lines_removed": 0,
9216
+ "has_uncommitted_changes": false,
9217
+ "failure_type": null,
9218
+ "output_snippet": "iles are complete. Here's a summary of what was created/modified:\n\n---\n\n### `website/src/__tests__/posthog-e2e.test.ts` (new file)\n\nA source-file inspection test with a comment block documenting all 6 conversion events and their trigger locations. Uses an `assertContains` helper that throws a `new Error(message)` for immediately actionable CI failures. Asserts:\n\n| # | Test | Current state |\n|---|------|---------------|\n| 4 | `pricing/page.tsx` renders `<TrackPricingView` | **will fail** — not yet implemented |\n| 4 | `pricing/page.tsx` renders `<CheckoutButton` | **will fail** — not yet implemented |\n| 3 | `pricing/success/page.tsx` renders `<TrackCheckoutComplete` | **passes** — already present |\n| 5 | `app/layout.tsx` contains `location='nav'` | **will fail** — `NpmCTALink` not yet extracted |\n| 5 | `app/layout.tsx` contains `location='footer'` | **will fail** — same |\n| 6 | `docs/layout.tsx` contains `<DocsNavTracker` | **will fail** — not yet implemented |\n| 1 | `app/page.tsx` calls `PostHogEvents.WAITLIST_SIGNUP_SUCCESS` | **passes** — already present |\n| 2 | `app/page.tsx` calls `PostHogEvents.WAITLIST_SIGNUP_ERROR` | **passes** — already present |\n| — | `PostHogProvider.tsx` has `autocapture: false` | **will fail** — not set |\n\n### `src/lib/__tests__/posthog-kpi-adapter.test.ts` (updated)\n\nAdded `fs`/`path` imports and a new `KPI sync contract` describe block. It reads both `website/src/lib/posthog.ts` and `posthog-kpi-adapter.ts` via regex, extracts event string values (excluding `waitlist_signup_error`), and asserts each appears as a key in `EVENT_TO_KPI`. **Currently passes** for `waitlist_signup_success` and `checkout_completed`. Will fail automatically if a new event is added to `PostHogEvents` without a corresponding adapter mapping.\nClaude Code completed successfully in 209s (1782 chars)\nChanges detected, staging and committing...\nSkipping PR creation (--skip-pr)\n\n=== Implementation Complete (PR skipped) ===\nBranch: ai/idea-posthog-website-dogfood-impl\n"
9219
+ }
9220
+ ],
9221
+ "decomposition_attempts": 1,
9222
+ "pr_url": "https://github.com/braza-ai/100xmanager/pull/27",
9223
+ "pr_number": 27
8613
9224
  },
8614
9225
  "goal_id": "goal-beta-users",
8615
9226
  "expected_impact": "Directly enables acquisition funnel measurement. Once PostHog is live, we can track waitlist conversion rate, pricing page engagement, and docs depth — critical for validating hyp-byok-adoption and the acquisition strategy.",