@reftrixmcp/mcp-server 0.1.7

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 (1614) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +1099 -0
  3. package/dist/api/health.d.ts +122 -0
  4. package/dist/api/health.d.ts.map +1 -0
  5. package/dist/api/health.js +267 -0
  6. package/dist/api/health.js.map +1 -0
  7. package/dist/config/index.d.ts +9 -0
  8. package/dist/config/index.d.ts.map +1 -0
  9. package/dist/config/index.js +27 -0
  10. package/dist/config/index.js.map +1 -0
  11. package/dist/config/redis.d.ts +99 -0
  12. package/dist/config/redis.d.ts.map +1 -0
  13. package/dist/config/redis.js +234 -0
  14. package/dist/config/redis.js.map +1 -0
  15. package/dist/index.d.ts +18 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +247 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/lib/index.d.ts +6 -0
  20. package/dist/lib/index.d.ts.map +1 -0
  21. package/dist/lib/index.js +14 -0
  22. package/dist/lib/index.js.map +1 -0
  23. package/dist/lib/project-context.d.ts +51 -0
  24. package/dist/lib/project-context.d.ts.map +1 -0
  25. package/dist/lib/project-context.js +109 -0
  26. package/dist/lib/project-context.js.map +1 -0
  27. package/dist/middleware/args-type-coercion.d.ts +59 -0
  28. package/dist/middleware/args-type-coercion.d.ts.map +1 -0
  29. package/dist/middleware/args-type-coercion.js +187 -0
  30. package/dist/middleware/args-type-coercion.js.map +1 -0
  31. package/dist/middleware/auth.d.ts +122 -0
  32. package/dist/middleware/auth.d.ts.map +1 -0
  33. package/dist/middleware/auth.js +430 -0
  34. package/dist/middleware/auth.js.map +1 -0
  35. package/dist/middleware/index.d.ts +10 -0
  36. package/dist/middleware/index.d.ts.map +1 -0
  37. package/dist/middleware/index.js +38 -0
  38. package/dist/middleware/index.js.map +1 -0
  39. package/dist/middleware/light-response-controller.d.ts +206 -0
  40. package/dist/middleware/light-response-controller.d.ts.map +1 -0
  41. package/dist/middleware/light-response-controller.js +555 -0
  42. package/dist/middleware/light-response-controller.js.map +1 -0
  43. package/dist/middleware/response-size-warning.d.ts +97 -0
  44. package/dist/middleware/response-size-warning.d.ts.map +1 -0
  45. package/dist/middleware/response-size-warning.js +137 -0
  46. package/dist/middleware/response-size-warning.js.map +1 -0
  47. package/dist/queues/batch-quality-queue.d.ts +225 -0
  48. package/dist/queues/batch-quality-queue.d.ts.map +1 -0
  49. package/dist/queues/batch-quality-queue.js +375 -0
  50. package/dist/queues/batch-quality-queue.js.map +1 -0
  51. package/dist/queues/index.d.ts +10 -0
  52. package/dist/queues/index.d.ts.map +1 -0
  53. package/dist/queues/index.js +28 -0
  54. package/dist/queues/index.js.map +1 -0
  55. package/dist/queues/page-analyze-queue.d.ts +287 -0
  56. package/dist/queues/page-analyze-queue.d.ts.map +1 -0
  57. package/dist/queues/page-analyze-queue.js +219 -0
  58. package/dist/queues/page-analyze-queue.js.map +1 -0
  59. package/dist/router.d.ts +144 -0
  60. package/dist/router.d.ts.map +1 -0
  61. package/dist/router.js +261 -0
  62. package/dist/router.js.map +1 -0
  63. package/dist/schemas/creative/index.d.ts +8 -0
  64. package/dist/schemas/creative/index.d.ts.map +1 -0
  65. package/dist/schemas/creative/index.js +23 -0
  66. package/dist/schemas/creative/index.js.map +1 -0
  67. package/dist/schemas/creative/palette.schema.d.ts +741 -0
  68. package/dist/schemas/creative/palette.schema.d.ts.map +1 -0
  69. package/dist/schemas/creative/palette.schema.js +154 -0
  70. package/dist/schemas/creative/palette.schema.js.map +1 -0
  71. package/dist/schemas/mood-brandtone-filters.d.ts +740 -0
  72. package/dist/schemas/mood-brandtone-filters.d.ts.map +1 -0
  73. package/dist/schemas/mood-brandtone-filters.js +265 -0
  74. package/dist/schemas/mood-brandtone-filters.js.map +1 -0
  75. package/dist/scripts/backfill-embeddings.d.ts +3 -0
  76. package/dist/scripts/backfill-embeddings.d.ts.map +1 -0
  77. package/dist/scripts/backfill-embeddings.js +385 -0
  78. package/dist/scripts/backfill-embeddings.js.map +1 -0
  79. package/dist/scripts/check-embedding-coverage.d.ts +3 -0
  80. package/dist/scripts/check-embedding-coverage.d.ts.map +1 -0
  81. package/dist/scripts/check-embedding-coverage.js +103 -0
  82. package/dist/scripts/check-embedding-coverage.js.map +1 -0
  83. package/dist/scripts/start-workers.d.ts +3 -0
  84. package/dist/scripts/start-workers.d.ts.map +1 -0
  85. package/dist/scripts/start-workers.js +447 -0
  86. package/dist/scripts/start-workers.js.map +1 -0
  87. package/dist/server.d.ts +49 -0
  88. package/dist/server.d.ts.map +1 -0
  89. package/dist/server.js +237 -0
  90. package/dist/server.js.map +1 -0
  91. package/dist/services/background/background-design-db.service.d.ts +65 -0
  92. package/dist/services/background/background-design-db.service.d.ts.map +1 -0
  93. package/dist/services/background/background-design-db.service.js +138 -0
  94. package/dist/services/background/background-design-db.service.js.map +1 -0
  95. package/dist/services/background/background-design-detector.service.d.ts +125 -0
  96. package/dist/services/background/background-design-detector.service.d.ts.map +1 -0
  97. package/dist/services/background/background-design-detector.service.js +1106 -0
  98. package/dist/services/background/background-design-detector.service.js.map +1 -0
  99. package/dist/services/background/background-design-embedding.service.d.ts +188 -0
  100. package/dist/services/background/background-design-embedding.service.d.ts.map +1 -0
  101. package/dist/services/background/background-design-embedding.service.js +386 -0
  102. package/dist/services/background/background-design-embedding.service.js.map +1 -0
  103. package/dist/services/background-search.service.d.ts +43 -0
  104. package/dist/services/background-search.service.d.ts.map +1 -0
  105. package/dist/services/background-search.service.js +235 -0
  106. package/dist/services/background-search.service.js.map +1 -0
  107. package/dist/services/backup-service.d.ts +135 -0
  108. package/dist/services/backup-service.d.ts.map +1 -0
  109. package/dist/services/backup-service.js +357 -0
  110. package/dist/services/backup-service.js.map +1 -0
  111. package/dist/services/brief/brief-parser-service.d.ts +47 -0
  112. package/dist/services/brief/brief-parser-service.d.ts.map +1 -0
  113. package/dist/services/brief/brief-parser-service.js +380 -0
  114. package/dist/services/brief/brief-parser-service.js.map +1 -0
  115. package/dist/services/brief/schemas/brief-parser-schemas.d.ts +278 -0
  116. package/dist/services/brief/schemas/brief-parser-schemas.d.ts.map +1 -0
  117. package/dist/services/brief/schemas/brief-parser-schemas.js +116 -0
  118. package/dist/services/brief/schemas/brief-parser-schemas.js.map +1 -0
  119. package/dist/services/browser-process-manager.d.ts +116 -0
  120. package/dist/services/browser-process-manager.d.ts.map +1 -0
  121. package/dist/services/browser-process-manager.js +259 -0
  122. package/dist/services/browser-process-manager.js.map +1 -0
  123. package/dist/services/cache.d.ts +119 -0
  124. package/dist/services/cache.d.ts.map +1 -0
  125. package/dist/services/cache.js +233 -0
  126. package/dist/services/cache.js.map +1 -0
  127. package/dist/services/checksum-service.d.ts +122 -0
  128. package/dist/services/checksum-service.d.ts.map +1 -0
  129. package/dist/services/checksum-service.js +270 -0
  130. package/dist/services/checksum-service.js.map +1 -0
  131. package/dist/services/css-analysis-cache.service.d.ts +248 -0
  132. package/dist/services/css-analysis-cache.service.d.ts.map +1 -0
  133. package/dist/services/css-analysis-cache.service.js +398 -0
  134. package/dist/services/css-analysis-cache.service.js.map +1 -0
  135. package/dist/services/database-dumper.service.d.ts +181 -0
  136. package/dist/services/database-dumper.service.d.ts.map +1 -0
  137. package/dist/services/database-dumper.service.js +550 -0
  138. package/dist/services/database-dumper.service.js.map +1 -0
  139. package/dist/services/embedding-backfill.service.d.ts +53 -0
  140. package/dist/services/embedding-backfill.service.d.ts.map +1 -0
  141. package/dist/services/embedding-backfill.service.js +672 -0
  142. package/dist/services/embedding-backfill.service.js.map +1 -0
  143. package/dist/services/embedding-validation.service.d.ts +64 -0
  144. package/dist/services/embedding-validation.service.d.ts.map +1 -0
  145. package/dist/services/embedding-validation.service.js +141 -0
  146. package/dist/services/embedding-validation.service.js.map +1 -0
  147. package/dist/services/encryption-service.d.ts +171 -0
  148. package/dist/services/encryption-service.d.ts.map +1 -0
  149. package/dist/services/encryption-service.js +343 -0
  150. package/dist/services/encryption-service.js.map +1 -0
  151. package/dist/services/external-css-fetcher.d.ts +185 -0
  152. package/dist/services/external-css-fetcher.d.ts.map +1 -0
  153. package/dist/services/external-css-fetcher.js +667 -0
  154. package/dist/services/external-css-fetcher.js.map +1 -0
  155. package/dist/services/gpu-resource-manager.d.ts +180 -0
  156. package/dist/services/gpu-resource-manager.d.ts.map +1 -0
  157. package/dist/services/gpu-resource-manager.js +485 -0
  158. package/dist/services/gpu-resource-manager.js.map +1 -0
  159. package/dist/services/index.d.ts +15 -0
  160. package/dist/services/index.d.ts.map +1 -0
  161. package/dist/services/index.js +73 -0
  162. package/dist/services/index.js.map +1 -0
  163. package/dist/services/layout/component-splitter.d.ts +63 -0
  164. package/dist/services/layout/component-splitter.d.ts.map +1 -0
  165. package/dist/services/layout/component-splitter.js +508 -0
  166. package/dist/services/layout/component-splitter.js.map +1 -0
  167. package/dist/services/layout/html-to-jsx-converter.d.ts +40 -0
  168. package/dist/services/layout/html-to-jsx-converter.d.ts.map +1 -0
  169. package/dist/services/layout/html-to-jsx-converter.js +484 -0
  170. package/dist/services/layout/html-to-jsx-converter.js.map +1 -0
  171. package/dist/services/layout/semantic-html-converter.d.ts +67 -0
  172. package/dist/services/layout/semantic-html-converter.d.ts.map +1 -0
  173. package/dist/services/layout/semantic-html-converter.js +247 -0
  174. package/dist/services/layout/semantic-html-converter.js.map +1 -0
  175. package/dist/services/layout/style-to-tailwind-mapper.d.ts +82 -0
  176. package/dist/services/layout/style-to-tailwind-mapper.d.ts.map +1 -0
  177. package/dist/services/layout/style-to-tailwind-mapper.js +1334 -0
  178. package/dist/services/layout/style-to-tailwind-mapper.js.map +1 -0
  179. package/dist/services/layout-embedding.service.d.ts +415 -0
  180. package/dist/services/layout-embedding.service.d.ts.map +1 -0
  181. package/dist/services/layout-embedding.service.js +1147 -0
  182. package/dist/services/layout-embedding.service.js.map +1 -0
  183. package/dist/services/layout-generate-code-service-export.d.ts +38 -0
  184. package/dist/services/layout-generate-code-service-export.d.ts.map +1 -0
  185. package/dist/services/layout-generate-code-service-export.js +77 -0
  186. package/dist/services/layout-generate-code-service-export.js.map +1 -0
  187. package/dist/services/layout-search-service-export.d.ts +31 -0
  188. package/dist/services/layout-search-service-export.d.ts.map +1 -0
  189. package/dist/services/layout-search-service-export.js +43 -0
  190. package/dist/services/layout-search-service-export.js.map +1 -0
  191. package/dist/services/layout-search.service.d.ts +111 -0
  192. package/dist/services/layout-search.service.d.ts.map +1 -0
  193. package/dist/services/layout-search.service.js +716 -0
  194. package/dist/services/layout-search.service.js.map +1 -0
  195. package/dist/services/layout-to-code.service.d.ts +85 -0
  196. package/dist/services/layout-to-code.service.d.ts.map +1 -0
  197. package/dist/services/layout-to-code.service.js +1368 -0
  198. package/dist/services/layout-to-code.service.js.map +1 -0
  199. package/dist/services/metrics-collector.d.ts +189 -0
  200. package/dist/services/metrics-collector.d.ts.map +1 -0
  201. package/dist/services/metrics-collector.js +344 -0
  202. package/dist/services/metrics-collector.js.map +1 -0
  203. package/dist/services/ml/mood-brandtone-embedding.service.d.ts +253 -0
  204. package/dist/services/ml/mood-brandtone-embedding.service.d.ts.map +1 -0
  205. package/dist/services/ml/mood-brandtone-embedding.service.js +678 -0
  206. package/dist/services/ml/mood-brandtone-embedding.service.js.map +1 -0
  207. package/dist/services/motion/analyzers/color-change.analyzer.d.ts +274 -0
  208. package/dist/services/motion/analyzers/color-change.analyzer.d.ts.map +1 -0
  209. package/dist/services/motion/analyzers/color-change.analyzer.js +644 -0
  210. package/dist/services/motion/analyzers/color-change.analyzer.js.map +1 -0
  211. package/dist/services/motion/analyzers/frame-diff.analyzer.d.ts +109 -0
  212. package/dist/services/motion/analyzers/frame-diff.analyzer.d.ts.map +1 -0
  213. package/dist/services/motion/analyzers/frame-diff.analyzer.js +315 -0
  214. package/dist/services/motion/analyzers/frame-diff.analyzer.js.map +1 -0
  215. package/dist/services/motion/analyzers/layout-shift.detector.d.ts +132 -0
  216. package/dist/services/motion/analyzers/layout-shift.detector.d.ts.map +1 -0
  217. package/dist/services/motion/analyzers/layout-shift.detector.js +179 -0
  218. package/dist/services/motion/analyzers/layout-shift.detector.js.map +1 -0
  219. package/dist/services/motion/analyzers/motion-vector.estimator.d.ts +88 -0
  220. package/dist/services/motion/analyzers/motion-vector.estimator.d.ts.map +1 -0
  221. package/dist/services/motion/analyzers/motion-vector.estimator.js +494 -0
  222. package/dist/services/motion/analyzers/motion-vector.estimator.js.map +1 -0
  223. package/dist/services/motion/analyzers/webgl-motion-analyzer.d.ts +167 -0
  224. package/dist/services/motion/analyzers/webgl-motion-analyzer.d.ts.map +1 -0
  225. package/dist/services/motion/analyzers/webgl-motion-analyzer.js +500 -0
  226. package/dist/services/motion/analyzers/webgl-motion-analyzer.js.map +1 -0
  227. package/dist/services/motion/animation-metrics-collector.service.d.ts +215 -0
  228. package/dist/services/motion/animation-metrics-collector.service.d.ts.map +1 -0
  229. package/dist/services/motion/animation-metrics-collector.service.js +502 -0
  230. package/dist/services/motion/animation-metrics-collector.service.js.map +1 -0
  231. package/dist/services/motion/cls-calculator.service.d.ts +186 -0
  232. package/dist/services/motion/cls-calculator.service.d.ts.map +1 -0
  233. package/dist/services/motion/cls-calculator.service.js +329 -0
  234. package/dist/services/motion/cls-calculator.service.js.map +1 -0
  235. package/dist/services/motion/existing-animation-detector.service.d.ts +208 -0
  236. package/dist/services/motion/existing-animation-detector.service.d.ts.map +1 -0
  237. package/dist/services/motion/existing-animation-detector.service.js +591 -0
  238. package/dist/services/motion/existing-animation-detector.service.js.map +1 -0
  239. package/dist/services/motion/fade-detector.service.d.ts +114 -0
  240. package/dist/services/motion/fade-detector.service.d.ts.map +1 -0
  241. package/dist/services/motion/fade-detector.service.js +249 -0
  242. package/dist/services/motion/fade-detector.service.js.map +1 -0
  243. package/dist/services/motion/frame-analysis-save.helper.d.ts +41 -0
  244. package/dist/services/motion/frame-analysis-save.helper.d.ts.map +1 -0
  245. package/dist/services/motion/frame-analysis-save.helper.js +235 -0
  246. package/dist/services/motion/frame-analysis-save.helper.js.map +1 -0
  247. package/dist/services/motion/frame-capture.service.d.ts +170 -0
  248. package/dist/services/motion/frame-capture.service.d.ts.map +1 -0
  249. package/dist/services/motion/frame-capture.service.js +476 -0
  250. package/dist/services/motion/frame-capture.service.js.map +1 -0
  251. package/dist/services/motion/frame-embedding.service.d.ts +315 -0
  252. package/dist/services/motion/frame-embedding.service.d.ts.map +1 -0
  253. package/dist/services/motion/frame-embedding.service.js +1023 -0
  254. package/dist/services/motion/frame-embedding.service.js.map +1 -0
  255. package/dist/services/motion/frame-image-analysis.service.d.ts +126 -0
  256. package/dist/services/motion/frame-image-analysis.service.d.ts.map +1 -0
  257. package/dist/services/motion/frame-image-analysis.service.js +982 -0
  258. package/dist/services/motion/frame-image-analysis.service.js.map +1 -0
  259. package/dist/services/motion/frame-image-analyzer.adapter.d.ts +168 -0
  260. package/dist/services/motion/frame-image-analyzer.adapter.d.ts.map +1 -0
  261. package/dist/services/motion/frame-image-analyzer.adapter.js +520 -0
  262. package/dist/services/motion/frame-image-analyzer.adapter.js.map +1 -0
  263. package/dist/services/motion/frame-worker-pool.service.d.ts +133 -0
  264. package/dist/services/motion/frame-worker-pool.service.d.ts.map +1 -0
  265. package/dist/services/motion/frame-worker-pool.service.js +410 -0
  266. package/dist/services/motion/frame-worker-pool.service.js.map +1 -0
  267. package/dist/services/motion/infrastructure/frame-loader.d.ts +77 -0
  268. package/dist/services/motion/infrastructure/frame-loader.d.ts.map +1 -0
  269. package/dist/services/motion/infrastructure/frame-loader.js +430 -0
  270. package/dist/services/motion/infrastructure/frame-loader.js.map +1 -0
  271. package/dist/services/motion/js-animation-detector.d.ts +382 -0
  272. package/dist/services/motion/js-animation-detector.d.ts.map +1 -0
  273. package/dist/services/motion/js-animation-detector.js +911 -0
  274. package/dist/services/motion/js-animation-detector.js.map +1 -0
  275. package/dist/services/motion/js-animation-embedding.service.d.ts +114 -0
  276. package/dist/services/motion/js-animation-embedding.service.d.ts.map +1 -0
  277. package/dist/services/motion/js-animation-embedding.service.js +289 -0
  278. package/dist/services/motion/js-animation-embedding.service.js.map +1 -0
  279. package/dist/services/motion/js-animation-search.service.d.ts +138 -0
  280. package/dist/services/motion/js-animation-search.service.d.ts.map +1 -0
  281. package/dist/services/motion/js-animation-search.service.js +503 -0
  282. package/dist/services/motion/js-animation-search.service.js.map +1 -0
  283. package/dist/services/motion/motion-db.service.d.ts +231 -0
  284. package/dist/services/motion/motion-db.service.d.ts.map +1 -0
  285. package/dist/services/motion/motion-db.service.js +676 -0
  286. package/dist/services/motion/motion-db.service.js.map +1 -0
  287. package/dist/services/motion/three-js-scene-extractor.d.ts +274 -0
  288. package/dist/services/motion/three-js-scene-extractor.d.ts.map +1 -0
  289. package/dist/services/motion/three-js-scene-extractor.js +1126 -0
  290. package/dist/services/motion/three-js-scene-extractor.js.map +1 -0
  291. package/dist/services/motion/types.d.ts +592 -0
  292. package/dist/services/motion/types.d.ts.map +1 -0
  293. package/dist/services/motion/types.js +121 -0
  294. package/dist/services/motion/types.js.map +1 -0
  295. package/dist/services/motion/visual-category-classifier.d.ts +273 -0
  296. package/dist/services/motion/visual-category-classifier.d.ts.map +1 -0
  297. package/dist/services/motion/visual-category-classifier.js +1060 -0
  298. package/dist/services/motion/visual-category-classifier.js.map +1 -0
  299. package/dist/services/motion/webgl-animation-categorizer.d.ts +151 -0
  300. package/dist/services/motion/webgl-animation-categorizer.d.ts.map +1 -0
  301. package/dist/services/motion/webgl-animation-categorizer.js +568 -0
  302. package/dist/services/motion/webgl-animation-categorizer.js.map +1 -0
  303. package/dist/services/motion/webgl-animation-detector.service.d.ts +204 -0
  304. package/dist/services/motion/webgl-animation-detector.service.d.ts.map +1 -0
  305. package/dist/services/motion/webgl-animation-detector.service.js +518 -0
  306. package/dist/services/motion/webgl-animation-detector.service.js.map +1 -0
  307. package/dist/services/motion/webgl-animation-embedding.service.d.ts +238 -0
  308. package/dist/services/motion/webgl-animation-embedding.service.d.ts.map +1 -0
  309. package/dist/services/motion/webgl-animation-embedding.service.js +368 -0
  310. package/dist/services/motion/webgl-animation-embedding.service.js.map +1 -0
  311. package/dist/services/motion-detect-service-export.d.ts +130 -0
  312. package/dist/services/motion-detect-service-export.d.ts.map +1 -0
  313. package/dist/services/motion-detect-service-export.js +160 -0
  314. package/dist/services/motion-detect-service-export.js.map +1 -0
  315. package/dist/services/motion-persistence.service.d.ts +144 -0
  316. package/dist/services/motion-persistence.service.d.ts.map +1 -0
  317. package/dist/services/motion-persistence.service.js +398 -0
  318. package/dist/services/motion-persistence.service.js.map +1 -0
  319. package/dist/services/motion-search-service.d.ts +10 -0
  320. package/dist/services/motion-search-service.d.ts.map +1 -0
  321. package/dist/services/motion-search-service.js +22 -0
  322. package/dist/services/motion-search-service.js.map +1 -0
  323. package/dist/services/motion-search.service.d.ts +210 -0
  324. package/dist/services/motion-search.service.d.ts.map +1 -0
  325. package/dist/services/motion-search.service.js +900 -0
  326. package/dist/services/motion-search.service.js.map +1 -0
  327. package/dist/services/narrative/analyzers/layout-structure.analyzer.d.ts +75 -0
  328. package/dist/services/narrative/analyzers/layout-structure.analyzer.d.ts.map +1 -0
  329. package/dist/services/narrative/analyzers/layout-structure.analyzer.js +489 -0
  330. package/dist/services/narrative/analyzers/layout-structure.analyzer.js.map +1 -0
  331. package/dist/services/narrative/analyzers/worldview.analyzer.d.ts +92 -0
  332. package/dist/services/narrative/analyzers/worldview.analyzer.d.ts.map +1 -0
  333. package/dist/services/narrative/analyzers/worldview.analyzer.js +477 -0
  334. package/dist/services/narrative/analyzers/worldview.analyzer.js.map +1 -0
  335. package/dist/services/narrative/generators/confidence-calculator.d.ts +65 -0
  336. package/dist/services/narrative/generators/confidence-calculator.d.ts.map +1 -0
  337. package/dist/services/narrative/generators/confidence-calculator.js +316 -0
  338. package/dist/services/narrative/generators/confidence-calculator.js.map +1 -0
  339. package/dist/services/narrative/generators/text-representation.generator.d.ts +67 -0
  340. package/dist/services/narrative/generators/text-representation.generator.d.ts.map +1 -0
  341. package/dist/services/narrative/generators/text-representation.generator.js +312 -0
  342. package/dist/services/narrative/generators/text-representation.generator.js.map +1 -0
  343. package/dist/services/narrative/index.d.ts +16 -0
  344. package/dist/services/narrative/index.d.ts.map +1 -0
  345. package/dist/services/narrative/index.js +63 -0
  346. package/dist/services/narrative/index.js.map +1 -0
  347. package/dist/services/narrative/narrative-analysis.service.d.ts +120 -0
  348. package/dist/services/narrative/narrative-analysis.service.d.ts.map +1 -0
  349. package/dist/services/narrative/narrative-analysis.service.js +479 -0
  350. package/dist/services/narrative/narrative-analysis.service.js.map +1 -0
  351. package/dist/services/narrative/narrative-search.service.d.ts +126 -0
  352. package/dist/services/narrative/narrative-search.service.d.ts.map +1 -0
  353. package/dist/services/narrative/narrative-search.service.js +516 -0
  354. package/dist/services/narrative/narrative-search.service.js.map +1 -0
  355. package/dist/services/narrative/types/narrative.types.d.ts +372 -0
  356. package/dist/services/narrative/types/narrative.types.d.ts.map +1 -0
  357. package/dist/services/narrative/types/narrative.types.js +5 -0
  358. package/dist/services/narrative/types/narrative.types.js.map +1 -0
  359. package/dist/services/orphaned-job-utils.d.ts +62 -0
  360. package/dist/services/orphaned-job-utils.d.ts.map +1 -0
  361. package/dist/services/orphaned-job-utils.js +130 -0
  362. package/dist/services/orphaned-job-utils.js.map +1 -0
  363. package/dist/services/page/css-animation-parser.service.d.ts +173 -0
  364. package/dist/services/page/css-animation-parser.service.d.ts.map +1 -0
  365. package/dist/services/page/css-animation-parser.service.js +537 -0
  366. package/dist/services/page/css-animation-parser.service.js.map +1 -0
  367. package/dist/services/page/fallback-analyzer.service.d.ts +140 -0
  368. package/dist/services/page/fallback-analyzer.service.d.ts.map +1 -0
  369. package/dist/services/page/fallback-analyzer.service.js +289 -0
  370. package/dist/services/page/fallback-analyzer.service.js.map +1 -0
  371. package/dist/services/page/frame-analyzer.service.d.ts +208 -0
  372. package/dist/services/page/frame-analyzer.service.d.ts.map +1 -0
  373. package/dist/services/page/frame-analyzer.service.js +628 -0
  374. package/dist/services/page/frame-analyzer.service.js.map +1 -0
  375. package/dist/services/page/layout-analyzer.service.d.ts +323 -0
  376. package/dist/services/page/layout-analyzer.service.d.ts.map +1 -0
  377. package/dist/services/page/layout-analyzer.service.js +2001 -0
  378. package/dist/services/page/layout-analyzer.service.js.map +1 -0
  379. package/dist/services/page/motion-category-classifier.service.d.ts +72 -0
  380. package/dist/services/page/motion-category-classifier.service.d.ts.map +1 -0
  381. package/dist/services/page/motion-category-classifier.service.js +340 -0
  382. package/dist/services/page/motion-category-classifier.service.js.map +1 -0
  383. package/dist/services/page/motion-detector.service.d.ts +76 -0
  384. package/dist/services/page/motion-detector.service.d.ts.map +1 -0
  385. package/dist/services/page/motion-detector.service.js +255 -0
  386. package/dist/services/page/motion-detector.service.js.map +1 -0
  387. package/dist/services/page/motion-performance-analyzer.service.d.ts +114 -0
  388. package/dist/services/page/motion-performance-analyzer.service.d.ts.map +1 -0
  389. package/dist/services/page/motion-performance-analyzer.service.js +315 -0
  390. package/dist/services/page/motion-performance-analyzer.service.js.map +1 -0
  391. package/dist/services/page/playwright-crawler.service.d.ts +106 -0
  392. package/dist/services/page/playwright-crawler.service.d.ts.map +1 -0
  393. package/dist/services/page/playwright-crawler.service.js +373 -0
  394. package/dist/services/page/playwright-crawler.service.js.map +1 -0
  395. package/dist/services/page/quality-evaluator.service.d.ts +107 -0
  396. package/dist/services/page/quality-evaluator.service.d.ts.map +1 -0
  397. package/dist/services/page/quality-evaluator.service.js +1138 -0
  398. package/dist/services/page/quality-evaluator.service.js.map +1 -0
  399. package/dist/services/page/runtime-animation-detector.service.d.ts +154 -0
  400. package/dist/services/page/runtime-animation-detector.service.d.ts.map +1 -0
  401. package/dist/services/page/runtime-animation-detector.service.js +480 -0
  402. package/dist/services/page/runtime-animation-detector.service.js.map +1 -0
  403. package/dist/services/page/section-postprocessor.service.d.ts +55 -0
  404. package/dist/services/page/section-postprocessor.service.d.ts.map +1 -0
  405. package/dist/services/page/section-postprocessor.service.js +708 -0
  406. package/dist/services/page/section-postprocessor.service.js.map +1 -0
  407. package/dist/services/page/video-recorder.service.d.ts +110 -0
  408. package/dist/services/page/video-recorder.service.d.ts.map +1 -0
  409. package/dist/services/page/video-recorder.service.js +441 -0
  410. package/dist/services/page/video-recorder.service.js.map +1 -0
  411. package/dist/services/page/webgl-detector.service.d.ts +113 -0
  412. package/dist/services/page/webgl-detector.service.d.ts.map +1 -0
  413. package/dist/services/page/webgl-detector.service.js +280 -0
  414. package/dist/services/page/webgl-detector.service.js.map +1 -0
  415. package/dist/services/page-analyze-service.d.ts +30 -0
  416. package/dist/services/page-analyze-service.d.ts.map +1 -0
  417. package/dist/services/page-analyze-service.js +58 -0
  418. package/dist/services/page-analyze-service.js.map +1 -0
  419. package/dist/services/page-ingest-adapter.d.ts +479 -0
  420. package/dist/services/page-ingest-adapter.d.ts.map +1 -0
  421. package/dist/services/page-ingest-adapter.js +1726 -0
  422. package/dist/services/page-ingest-adapter.js.map +1 -0
  423. package/dist/services/palette-service-export.d.ts +26 -0
  424. package/dist/services/palette-service-export.d.ts.map +1 -0
  425. package/dist/services/palette-service-export.js +22 -0
  426. package/dist/services/palette-service-export.js.map +1 -0
  427. package/dist/services/part/index.d.ts +22 -0
  428. package/dist/services/part/index.d.ts.map +1 -0
  429. package/dist/services/part/index.js +72 -0
  430. package/dist/services/part/index.js.map +1 -0
  431. package/dist/services/part/part-backfill.service.d.ts +66 -0
  432. package/dist/services/part/part-backfill.service.d.ts.map +1 -0
  433. package/dist/services/part/part-backfill.service.js +195 -0
  434. package/dist/services/part/part-backfill.service.js.map +1 -0
  435. package/dist/services/part/part-bbox-playwright.service.d.ts +85 -0
  436. package/dist/services/part/part-bbox-playwright.service.d.ts.map +1 -0
  437. package/dist/services/part/part-bbox-playwright.service.js +362 -0
  438. package/dist/services/part/part-bbox-playwright.service.js.map +1 -0
  439. package/dist/services/part/part-db.service.d.ts +41 -0
  440. package/dist/services/part/part-db.service.d.ts.map +1 -0
  441. package/dist/services/part/part-db.service.js +82 -0
  442. package/dist/services/part/part-db.service.js.map +1 -0
  443. package/dist/services/part/part-embedding-db.service.d.ts +52 -0
  444. package/dist/services/part/part-embedding-db.service.d.ts.map +1 -0
  445. package/dist/services/part/part-embedding-db.service.js +122 -0
  446. package/dist/services/part/part-embedding-db.service.js.map +1 -0
  447. package/dist/services/part/part-embedding.service.d.ts +140 -0
  448. package/dist/services/part/part-embedding.service.d.ts.map +1 -0
  449. package/dist/services/part/part-embedding.service.js +276 -0
  450. package/dist/services/part/part-embedding.service.js.map +1 -0
  451. package/dist/services/part/part-extraction.service.d.ts +75 -0
  452. package/dist/services/part/part-extraction.service.d.ts.map +1 -0
  453. package/dist/services/part/part-extraction.service.js +519 -0
  454. package/dist/services/part/part-extraction.service.js.map +1 -0
  455. package/dist/services/part/part-search.service.d.ts +180 -0
  456. package/dist/services/part/part-search.service.d.ts.map +1 -0
  457. package/dist/services/part/part-search.service.js +565 -0
  458. package/dist/services/part/part-search.service.js.map +1 -0
  459. package/dist/services/part/schemas.d.ts +232 -0
  460. package/dist/services/part/schemas.d.ts.map +1 -0
  461. package/dist/services/part/schemas.js +167 -0
  462. package/dist/services/part/schemas.js.map +1 -0
  463. package/dist/services/part/section-screenshot-fallback.service.d.ts +101 -0
  464. package/dist/services/part/section-screenshot-fallback.service.d.ts.map +1 -0
  465. package/dist/services/part/section-screenshot-fallback.service.js +489 -0
  466. package/dist/services/part/section-screenshot-fallback.service.js.map +1 -0
  467. package/dist/services/part/types.d.ts +189 -0
  468. package/dist/services/part/types.d.ts.map +1 -0
  469. package/dist/services/part/types.js +139 -0
  470. package/dist/services/part/types.js.map +1 -0
  471. package/dist/services/persistent-cache.d.ts +209 -0
  472. package/dist/services/persistent-cache.d.ts.map +1 -0
  473. package/dist/services/persistent-cache.js +633 -0
  474. package/dist/services/persistent-cache.js.map +1 -0
  475. package/dist/services/preference-profile.service.d.ts +143 -0
  476. package/dist/services/preference-profile.service.d.ts.map +1 -0
  477. package/dist/services/preference-profile.service.js +604 -0
  478. package/dist/services/preference-profile.service.js.map +1 -0
  479. package/dist/services/preference-rerank.helper.d.ts +128 -0
  480. package/dist/services/preference-rerank.helper.d.ts.map +1 -0
  481. package/dist/services/preference-rerank.helper.js +397 -0
  482. package/dist/services/preference-rerank.helper.js.map +1 -0
  483. package/dist/services/production-guard.d.ts +213 -0
  484. package/dist/services/production-guard.d.ts.map +1 -0
  485. package/dist/services/production-guard.js +357 -0
  486. package/dist/services/production-guard.js.map +1 -0
  487. package/dist/services/project-context-analyzer.d.ts +194 -0
  488. package/dist/services/project-context-analyzer.d.ts.map +1 -0
  489. package/dist/services/project-context-analyzer.js +747 -0
  490. package/dist/services/project-context-analyzer.js.map +1 -0
  491. package/dist/services/quality/axe-accessibility.service.d.ts +87 -0
  492. package/dist/services/quality/axe-accessibility.service.d.ts.map +1 -0
  493. package/dist/services/quality/axe-accessibility.service.js +188 -0
  494. package/dist/services/quality/axe-accessibility.service.js.map +1 -0
  495. package/dist/services/quality/axe-core-shared.d.ts +108 -0
  496. package/dist/services/quality/axe-core-shared.d.ts.map +1 -0
  497. package/dist/services/quality/axe-core-shared.js +136 -0
  498. package/dist/services/quality/axe-core-shared.js.map +1 -0
  499. package/dist/services/quality/benchmark.service.d.ts +178 -0
  500. package/dist/services/quality/benchmark.service.d.ts.map +1 -0
  501. package/dist/services/quality/benchmark.service.js +394 -0
  502. package/dist/services/quality/benchmark.service.js.map +1 -0
  503. package/dist/services/quality/content-gap-detector.service.d.ts +133 -0
  504. package/dist/services/quality/content-gap-detector.service.d.ts.map +1 -0
  505. package/dist/services/quality/content-gap-detector.service.js +364 -0
  506. package/dist/services/quality/content-gap-detector.service.js.map +1 -0
  507. package/dist/services/quality/index.d.ts +12 -0
  508. package/dist/services/quality/index.d.ts.map +1 -0
  509. package/dist/services/quality/index.js +12 -0
  510. package/dist/services/quality/index.js.map +1 -0
  511. package/dist/services/quality/pattern-matcher.service.d.ts +195 -0
  512. package/dist/services/quality/pattern-matcher.service.d.ts.map +1 -0
  513. package/dist/services/quality/pattern-matcher.service.js +630 -0
  514. package/dist/services/quality/pattern-matcher.service.js.map +1 -0
  515. package/dist/services/quality/playwright-axe.service.d.ts +84 -0
  516. package/dist/services/quality/playwright-axe.service.d.ts.map +1 -0
  517. package/dist/services/quality/playwright-axe.service.js +267 -0
  518. package/dist/services/quality/playwright-axe.service.js.map +1 -0
  519. package/dist/services/quality/quality-evaluate.service.interface.d.ts +216 -0
  520. package/dist/services/quality/quality-evaluate.service.interface.d.ts.map +1 -0
  521. package/dist/services/quality/quality-evaluate.service.interface.js +5 -0
  522. package/dist/services/quality/quality-evaluate.service.interface.js.map +1 -0
  523. package/dist/services/quality/visual-design-analyzer.service.d.ts +72 -0
  524. package/dist/services/quality/visual-design-analyzer.service.d.ts.map +1 -0
  525. package/dist/services/quality/visual-design-analyzer.service.js +762 -0
  526. package/dist/services/quality/visual-design-analyzer.service.js.map +1 -0
  527. package/dist/services/quality-evaluate-service-export.d.ts +122 -0
  528. package/dist/services/quality-evaluate-service-export.d.ts.map +1 -0
  529. package/dist/services/quality-evaluate-service-export.js +138 -0
  530. package/dist/services/quality-evaluate-service-export.js.map +1 -0
  531. package/dist/services/quality-search.service.d.ts +20 -0
  532. package/dist/services/quality-search.service.d.ts.map +1 -0
  533. package/dist/services/quality-search.service.js +260 -0
  534. package/dist/services/quality-search.service.js.map +1 -0
  535. package/dist/services/query-analyzer.d.ts +107 -0
  536. package/dist/services/query-analyzer.d.ts.map +1 -0
  537. package/dist/services/query-analyzer.js +222 -0
  538. package/dist/services/query-analyzer.js.map +1 -0
  539. package/dist/services/query-context-analyzer.d.ts +85 -0
  540. package/dist/services/query-context-analyzer.d.ts.map +1 -0
  541. package/dist/services/query-context-analyzer.js +728 -0
  542. package/dist/services/query-context-analyzer.js.map +1 -0
  543. package/dist/services/queue-cleanup.service.d.ts +102 -0
  544. package/dist/services/queue-cleanup.service.d.ts.map +1 -0
  545. package/dist/services/queue-cleanup.service.js +259 -0
  546. package/dist/services/queue-cleanup.service.js.map +1 -0
  547. package/dist/services/responsive/difference-detector.service.d.ts +77 -0
  548. package/dist/services/responsive/difference-detector.service.d.ts.map +1 -0
  549. package/dist/services/responsive/difference-detector.service.js +525 -0
  550. package/dist/services/responsive/difference-detector.service.js.map +1 -0
  551. package/dist/services/responsive/index.d.ts +16 -0
  552. package/dist/services/responsive/index.d.ts.map +1 -0
  553. package/dist/services/responsive/index.js +60 -0
  554. package/dist/services/responsive/index.js.map +1 -0
  555. package/dist/services/responsive/multi-viewport-capture.service.d.ts +103 -0
  556. package/dist/services/responsive/multi-viewport-capture.service.d.ts.map +1 -0
  557. package/dist/services/responsive/multi-viewport-capture.service.js +841 -0
  558. package/dist/services/responsive/multi-viewport-capture.service.js.map +1 -0
  559. package/dist/services/responsive/responsive-analysis-embedding.service.d.ts +114 -0
  560. package/dist/services/responsive/responsive-analysis-embedding.service.d.ts.map +1 -0
  561. package/dist/services/responsive/responsive-analysis-embedding.service.js +232 -0
  562. package/dist/services/responsive/responsive-analysis-embedding.service.js.map +1 -0
  563. package/dist/services/responsive/responsive-analysis.service.d.ts +37 -0
  564. package/dist/services/responsive/responsive-analysis.service.d.ts.map +1 -0
  565. package/dist/services/responsive/responsive-analysis.service.js +262 -0
  566. package/dist/services/responsive/responsive-analysis.service.js.map +1 -0
  567. package/dist/services/responsive/responsive-persistence.service.d.ts +45 -0
  568. package/dist/services/responsive/responsive-persistence.service.d.ts.map +1 -0
  569. package/dist/services/responsive/responsive-persistence.service.js +102 -0
  570. package/dist/services/responsive/responsive-persistence.service.js.map +1 -0
  571. package/dist/services/responsive/responsive-quality-evaluator.service.d.ts +80 -0
  572. package/dist/services/responsive/responsive-quality-evaluator.service.d.ts.map +1 -0
  573. package/dist/services/responsive/responsive-quality-evaluator.service.js +448 -0
  574. package/dist/services/responsive/responsive-quality-evaluator.service.js.map +1 -0
  575. package/dist/services/responsive/shared-browser-manager.d.ts +65 -0
  576. package/dist/services/responsive/shared-browser-manager.d.ts.map +1 -0
  577. package/dist/services/responsive/shared-browser-manager.js +112 -0
  578. package/dist/services/responsive/shared-browser-manager.js.map +1 -0
  579. package/dist/services/responsive/types.d.ts +367 -0
  580. package/dist/services/responsive/types.d.ts.map +1 -0
  581. package/dist/services/responsive/types.js +5 -0
  582. package/dist/services/responsive/types.js.map +1 -0
  583. package/dist/services/responsive/viewport-diff.service.d.ts +49 -0
  584. package/dist/services/responsive/viewport-diff.service.d.ts.map +1 -0
  585. package/dist/services/responsive/viewport-diff.service.js +178 -0
  586. package/dist/services/responsive/viewport-diff.service.js.map +1 -0
  587. package/dist/services/responsive-search.service.d.ts +52 -0
  588. package/dist/services/responsive-search.service.d.ts.map +1 -0
  589. package/dist/services/responsive-search.service.js +136 -0
  590. package/dist/services/responsive-search.service.js.map +1 -0
  591. package/dist/services/search/mood-brandtone-search.service.d.ts +99 -0
  592. package/dist/services/search/mood-brandtone-search.service.d.ts.map +1 -0
  593. package/dist/services/search/mood-brandtone-search.service.js +310 -0
  594. package/dist/services/search/mood-brandtone-search.service.js.map +1 -0
  595. package/dist/services/search-performance.service.d.ts +118 -0
  596. package/dist/services/search-performance.service.d.ts.map +1 -0
  597. package/dist/services/search-performance.service.js +181 -0
  598. package/dist/services/search-performance.service.js.map +1 -0
  599. package/dist/services/section-screenshot.service.d.ts +163 -0
  600. package/dist/services/section-screenshot.service.d.ts.map +1 -0
  601. package/dist/services/section-screenshot.service.js +363 -0
  602. package/dist/services/section-screenshot.service.js.map +1 -0
  603. package/dist/services/service-client.d.ts +181 -0
  604. package/dist/services/service-client.d.ts.map +1 -0
  605. package/dist/services/service-client.js +450 -0
  606. package/dist/services/service-client.js.map +1 -0
  607. package/dist/services/service-initializer.d.ts +174 -0
  608. package/dist/services/service-initializer.d.ts.map +1 -0
  609. package/dist/services/service-initializer.js +942 -0
  610. package/dist/services/service-initializer.js.map +1 -0
  611. package/dist/services/storage/index.d.ts +7 -0
  612. package/dist/services/storage/index.d.ts.map +1 -0
  613. package/dist/services/storage/index.js +14 -0
  614. package/dist/services/storage/index.js.map +1 -0
  615. package/dist/services/storage/local-storage.provider.d.ts +140 -0
  616. package/dist/services/storage/local-storage.provider.d.ts.map +1 -0
  617. package/dist/services/storage/local-storage.provider.js +333 -0
  618. package/dist/services/storage/local-storage.provider.js.map +1 -0
  619. package/dist/services/style/index.d.ts +7 -0
  620. package/dist/services/style/index.d.ts.map +1 -0
  621. package/dist/services/style/index.js +25 -0
  622. package/dist/services/style/index.js.map +1 -0
  623. package/dist/services/style/palette-service.d.ts +212 -0
  624. package/dist/services/style/palette-service.d.ts.map +1 -0
  625. package/dist/services/style/palette-service.js +423 -0
  626. package/dist/services/style/palette-service.js.map +1 -0
  627. package/dist/services/style/prisma-palette-repository.d.ts +35 -0
  628. package/dist/services/style/prisma-palette-repository.d.ts.map +1 -0
  629. package/dist/services/style/prisma-palette-repository.js +165 -0
  630. package/dist/services/style/prisma-palette-repository.js.map +1 -0
  631. package/dist/services/vision/brandtone.analyzer.d.ts +104 -0
  632. package/dist/services/vision/brandtone.analyzer.d.ts.map +1 -0
  633. package/dist/services/vision/brandtone.analyzer.js +279 -0
  634. package/dist/services/vision/brandtone.analyzer.js.map +1 -0
  635. package/dist/services/vision/hardware-detector.d.ts +166 -0
  636. package/dist/services/vision/hardware-detector.d.ts.map +1 -0
  637. package/dist/services/vision/hardware-detector.js +330 -0
  638. package/dist/services/vision/hardware-detector.js.map +1 -0
  639. package/dist/services/vision/image-optimizer.d.ts +152 -0
  640. package/dist/services/vision/image-optimizer.d.ts.map +1 -0
  641. package/dist/services/vision/image-optimizer.js +266 -0
  642. package/dist/services/vision/image-optimizer.js.map +1 -0
  643. package/dist/services/vision/index.d.ts +26 -0
  644. package/dist/services/vision/index.d.ts.map +1 -0
  645. package/dist/services/vision/index.js +80 -0
  646. package/dist/services/vision/index.js.map +1 -0
  647. package/dist/services/vision/llama-vision-adapter.d.ts +178 -0
  648. package/dist/services/vision/llama-vision-adapter.d.ts.map +1 -0
  649. package/dist/services/vision/llama-vision-adapter.js +307 -0
  650. package/dist/services/vision/llama-vision-adapter.js.map +1 -0
  651. package/dist/services/vision/mcp-progress-adapter.d.ts +128 -0
  652. package/dist/services/vision/mcp-progress-adapter.d.ts.map +1 -0
  653. package/dist/services/vision/mcp-progress-adapter.js +150 -0
  654. package/dist/services/vision/mcp-progress-adapter.js.map +1 -0
  655. package/dist/services/vision/mood.analyzer.d.ts +74 -0
  656. package/dist/services/vision/mood.analyzer.d.ts.map +1 -0
  657. package/dist/services/vision/mood.analyzer.js +258 -0
  658. package/dist/services/vision/mood.analyzer.js.map +1 -0
  659. package/dist/services/vision/ollama-readiness-probe.d.ts +87 -0
  660. package/dist/services/vision/ollama-readiness-probe.d.ts.map +1 -0
  661. package/dist/services/vision/ollama-readiness-probe.js +211 -0
  662. package/dist/services/vision/ollama-readiness-probe.js.map +1 -0
  663. package/dist/services/vision/ollama-vision-client.d.ts +129 -0
  664. package/dist/services/vision/ollama-vision-client.d.ts.map +1 -0
  665. package/dist/services/vision/ollama-vision-client.js +478 -0
  666. package/dist/services/vision/ollama-vision-client.js.map +1 -0
  667. package/dist/services/vision/progress-reporter.d.ts +140 -0
  668. package/dist/services/vision/progress-reporter.d.ts.map +1 -0
  669. package/dist/services/vision/progress-reporter.js +306 -0
  670. package/dist/services/vision/progress-reporter.js.map +1 -0
  671. package/dist/services/vision/scroll-vision-capture.service.d.ts +117 -0
  672. package/dist/services/vision/scroll-vision-capture.service.d.ts.map +1 -0
  673. package/dist/services/vision/scroll-vision-capture.service.js +266 -0
  674. package/dist/services/vision/scroll-vision-capture.service.js.map +1 -0
  675. package/dist/services/vision/scroll-vision-persistence.service.d.ts +48 -0
  676. package/dist/services/vision/scroll-vision-persistence.service.d.ts.map +1 -0
  677. package/dist/services/vision/scroll-vision-persistence.service.js +161 -0
  678. package/dist/services/vision/scroll-vision-persistence.service.js.map +1 -0
  679. package/dist/services/vision/scroll-vision.analyzer.d.ts +90 -0
  680. package/dist/services/vision/scroll-vision.analyzer.d.ts.map +1 -0
  681. package/dist/services/vision/scroll-vision.analyzer.js +280 -0
  682. package/dist/services/vision/scroll-vision.analyzer.js.map +1 -0
  683. package/dist/services/vision/theme.analyzer.d.ts +108 -0
  684. package/dist/services/vision/theme.analyzer.d.ts.map +1 -0
  685. package/dist/services/vision/theme.analyzer.js +315 -0
  686. package/dist/services/vision/theme.analyzer.js.map +1 -0
  687. package/dist/services/vision/timeout-calculator.d.ts +85 -0
  688. package/dist/services/vision/timeout-calculator.d.ts.map +1 -0
  689. package/dist/services/vision/timeout-calculator.js +142 -0
  690. package/dist/services/vision/timeout-calculator.js.map +1 -0
  691. package/dist/services/vision/vision-fallback.service.d.ts +121 -0
  692. package/dist/services/vision/vision-fallback.service.d.ts.map +1 -0
  693. package/dist/services/vision/vision-fallback.service.js +253 -0
  694. package/dist/services/vision/vision-fallback.service.js.map +1 -0
  695. package/dist/services/vision/vision.cache.d.ts +124 -0
  696. package/dist/services/vision/vision.cache.d.ts.map +1 -0
  697. package/dist/services/vision/vision.cache.js +261 -0
  698. package/dist/services/vision/vision.cache.js.map +1 -0
  699. package/dist/services/vision/vision.errors.d.ts +104 -0
  700. package/dist/services/vision/vision.errors.d.ts.map +1 -0
  701. package/dist/services/vision/vision.errors.js +133 -0
  702. package/dist/services/vision/vision.errors.js.map +1 -0
  703. package/dist/services/vision/vision.prompts.d.ts +47 -0
  704. package/dist/services/vision/vision.prompts.d.ts.map +1 -0
  705. package/dist/services/vision/vision.prompts.js +272 -0
  706. package/dist/services/vision/vision.prompts.js.map +1 -0
  707. package/dist/services/vision/vram-utils.d.ts +22 -0
  708. package/dist/services/vision/vram-utils.d.ts.map +1 -0
  709. package/dist/services/vision/vram-utils.js +57 -0
  710. package/dist/services/vision/vram-utils.js.map +1 -0
  711. package/dist/services/vision-adapter/index.d.ts +18 -0
  712. package/dist/services/vision-adapter/index.d.ts.map +1 -0
  713. package/dist/services/vision-adapter/index.js +31 -0
  714. package/dist/services/vision-adapter/index.js.map +1 -0
  715. package/dist/services/vision-adapter/interface.d.ts +1434 -0
  716. package/dist/services/vision-adapter/interface.d.ts.map +1 -0
  717. package/dist/services/vision-adapter/interface.js +326 -0
  718. package/dist/services/vision-adapter/interface.js.map +1 -0
  719. package/dist/services/vision-adapter/llama-vision.adapter.d.ts +373 -0
  720. package/dist/services/vision-adapter/llama-vision.adapter.d.ts.map +1 -0
  721. package/dist/services/vision-adapter/llama-vision.adapter.js +1751 -0
  722. package/dist/services/vision-adapter/llama-vision.adapter.js.map +1 -0
  723. package/dist/services/vision-adapter/llama-vision.prompts.d.ts +63 -0
  724. package/dist/services/vision-adapter/llama-vision.prompts.d.ts.map +1 -0
  725. package/dist/services/vision-adapter/llama-vision.prompts.js +234 -0
  726. package/dist/services/vision-adapter/llama-vision.prompts.js.map +1 -0
  727. package/dist/services/vision-adapter/llama-vision.types.d.ts +68 -0
  728. package/dist/services/vision-adapter/llama-vision.types.d.ts.map +1 -0
  729. package/dist/services/vision-adapter/llama-vision.types.js +21 -0
  730. package/dist/services/vision-adapter/llama-vision.types.js.map +1 -0
  731. package/dist/services/vision-adapter/local.adapter.d.ts +185 -0
  732. package/dist/services/vision-adapter/local.adapter.d.ts.map +1 -0
  733. package/dist/services/vision-adapter/local.adapter.js +835 -0
  734. package/dist/services/vision-adapter/local.adapter.js.map +1 -0
  735. package/dist/services/vision-adapter/mock.adapter.d.ts +174 -0
  736. package/dist/services/vision-adapter/mock.adapter.d.ts.map +1 -0
  737. package/dist/services/vision-adapter/mock.adapter.js +812 -0
  738. package/dist/services/vision-adapter/mock.adapter.js.map +1 -0
  739. package/dist/services/vision-embedding-search.service.d.ts +205 -0
  740. package/dist/services/vision-embedding-search.service.d.ts.map +1 -0
  741. package/dist/services/vision-embedding-search.service.js +742 -0
  742. package/dist/services/vision-embedding-search.service.js.map +1 -0
  743. package/dist/services/vision-embedding.service.d.ts +150 -0
  744. package/dist/services/vision-embedding.service.d.ts.map +1 -0
  745. package/dist/services/vision-embedding.service.js +461 -0
  746. package/dist/services/vision-embedding.service.js.map +1 -0
  747. package/dist/services/visual/css-variable-extractor.service.d.ts +97 -0
  748. package/dist/services/visual/css-variable-extractor.service.d.ts.map +1 -0
  749. package/dist/services/visual/css-variable-extractor.service.js +460 -0
  750. package/dist/services/visual/css-variable-extractor.service.js.map +1 -0
  751. package/dist/services/visual/typography-extractor.service.d.ts +137 -0
  752. package/dist/services/visual/typography-extractor.service.d.ts.map +1 -0
  753. package/dist/services/visual/typography-extractor.service.js +539 -0
  754. package/dist/services/visual/typography-extractor.service.js.map +1 -0
  755. package/dist/services/visual-extractor/color-extractor.service.d.ts +55 -0
  756. package/dist/services/visual-extractor/color-extractor.service.d.ts.map +1 -0
  757. package/dist/services/visual-extractor/color-extractor.service.js +281 -0
  758. package/dist/services/visual-extractor/color-extractor.service.js.map +1 -0
  759. package/dist/services/visual-extractor/density-calculator.service.d.ts +85 -0
  760. package/dist/services/visual-extractor/density-calculator.service.d.ts.map +1 -0
  761. package/dist/services/visual-extractor/density-calculator.service.js +369 -0
  762. package/dist/services/visual-extractor/density-calculator.service.js.map +1 -0
  763. package/dist/services/visual-extractor/gradient-detector.service.d.ts +134 -0
  764. package/dist/services/visual-extractor/gradient-detector.service.d.ts.map +1 -0
  765. package/dist/services/visual-extractor/gradient-detector.service.js +1172 -0
  766. package/dist/services/visual-extractor/gradient-detector.service.js.map +1 -0
  767. package/dist/services/visual-extractor/image-utils.d.ts +135 -0
  768. package/dist/services/visual-extractor/image-utils.d.ts.map +1 -0
  769. package/dist/services/visual-extractor/image-utils.js +305 -0
  770. package/dist/services/visual-extractor/image-utils.js.map +1 -0
  771. package/dist/services/visual-extractor/pixel-theme-detector.service.d.ts +58 -0
  772. package/dist/services/visual-extractor/pixel-theme-detector.service.d.ts.map +1 -0
  773. package/dist/services/visual-extractor/pixel-theme-detector.service.js +358 -0
  774. package/dist/services/visual-extractor/pixel-theme-detector.service.js.map +1 -0
  775. package/dist/services/visual-extractor/theme-detector.service.d.ts +101 -0
  776. package/dist/services/visual-extractor/theme-detector.service.d.ts.map +1 -0
  777. package/dist/services/visual-extractor/theme-detector.service.js +463 -0
  778. package/dist/services/visual-extractor/theme-detector.service.js.map +1 -0
  779. package/dist/services/visual-extractor/visual-decoration-detector.service.d.ts +43 -0
  780. package/dist/services/visual-extractor/visual-decoration-detector.service.d.ts.map +1 -0
  781. package/dist/services/visual-extractor/visual-decoration-detector.service.js +628 -0
  782. package/dist/services/visual-extractor/visual-decoration-detector.service.js.map +1 -0
  783. package/dist/services/visual-extractor/visual-feature-merger.service.d.ts +230 -0
  784. package/dist/services/visual-extractor/visual-feature-merger.service.d.ts.map +1 -0
  785. package/dist/services/visual-extractor/visual-feature-merger.service.js +482 -0
  786. package/dist/services/visual-extractor/visual-feature-merger.service.js.map +1 -0
  787. package/dist/services/web-page.service.d.ts +80 -0
  788. package/dist/services/web-page.service.d.ts.map +1 -0
  789. package/dist/services/web-page.service.js +211 -0
  790. package/dist/services/web-page.service.js.map +1 -0
  791. package/dist/services/worker-constants.d.ts +40 -0
  792. package/dist/services/worker-constants.d.ts.map +1 -0
  793. package/dist/services/worker-constants.js +51 -0
  794. package/dist/services/worker-constants.js.map +1 -0
  795. package/dist/services/worker-db-save.service.d.ts +311 -0
  796. package/dist/services/worker-db-save.service.d.ts.map +1 -0
  797. package/dist/services/worker-db-save.service.js +771 -0
  798. package/dist/services/worker-db-save.service.js.map +1 -0
  799. package/dist/services/worker-memory-monitor.service.d.ts +24 -0
  800. package/dist/services/worker-memory-monitor.service.d.ts.map +1 -0
  801. package/dist/services/worker-memory-monitor.service.js +105 -0
  802. package/dist/services/worker-memory-monitor.service.js.map +1 -0
  803. package/dist/services/worker-memory-profile.d.ts +65 -0
  804. package/dist/services/worker-memory-profile.d.ts.map +1 -0
  805. package/dist/services/worker-memory-profile.js +225 -0
  806. package/dist/services/worker-memory-profile.js.map +1 -0
  807. package/dist/services/worker-stall-recovery.service.d.ts +166 -0
  808. package/dist/services/worker-stall-recovery.service.d.ts.map +1 -0
  809. package/dist/services/worker-stall-recovery.service.js +335 -0
  810. package/dist/services/worker-stall-recovery.service.js.map +1 -0
  811. package/dist/services/worker-supervisor.service.d.ts +145 -0
  812. package/dist/services/worker-supervisor.service.d.ts.map +1 -0
  813. package/dist/services/worker-supervisor.service.js +635 -0
  814. package/dist/services/worker-supervisor.service.js.map +1 -0
  815. package/dist/tools/background/schemas.d.ts +85 -0
  816. package/dist/tools/background/schemas.d.ts.map +1 -0
  817. package/dist/tools/background/schemas.js +79 -0
  818. package/dist/tools/background/schemas.js.map +1 -0
  819. package/dist/tools/background/search.tool.d.ts +179 -0
  820. package/dist/tools/background/search.tool.d.ts.map +1 -0
  821. package/dist/tools/background/search.tool.js +318 -0
  822. package/dist/tools/background/search.tool.js.map +1 -0
  823. package/dist/tools/brief/index.d.ts +10 -0
  824. package/dist/tools/brief/index.d.ts.map +1 -0
  825. package/dist/tools/brief/index.js +54 -0
  826. package/dist/tools/brief/index.js.map +1 -0
  827. package/dist/tools/brief/schemas.d.ts +750 -0
  828. package/dist/tools/brief/schemas.d.ts.map +1 -0
  829. package/dist/tools/brief/schemas.js +212 -0
  830. package/dist/tools/brief/schemas.js.map +1 -0
  831. package/dist/tools/brief/validate.handler.d.ts +149 -0
  832. package/dist/tools/brief/validate.handler.d.ts.map +1 -0
  833. package/dist/tools/brief/validate.handler.js +247 -0
  834. package/dist/tools/brief/validate.handler.js.map +1 -0
  835. package/dist/tools/brief/validate.service.d.ts +100 -0
  836. package/dist/tools/brief/validate.service.d.ts.map +1 -0
  837. package/dist/tools/brief/validate.service.js +296 -0
  838. package/dist/tools/brief/validate.service.js.map +1 -0
  839. package/dist/tools/common/error-codes.d.ts +35 -0
  840. package/dist/tools/common/error-codes.d.ts.map +1 -0
  841. package/dist/tools/common/error-codes.js +92 -0
  842. package/dist/tools/common/error-codes.js.map +1 -0
  843. package/dist/tools/common/index.d.ts +7 -0
  844. package/dist/tools/common/index.d.ts.map +1 -0
  845. package/dist/tools/common/index.js +20 -0
  846. package/dist/tools/common/index.js.map +1 -0
  847. package/dist/tools/index.d.ts +2756 -0
  848. package/dist/tools/index.d.ts.map +1 -0
  849. package/dist/tools/index.js +506 -0
  850. package/dist/tools/index.js.map +1 -0
  851. package/dist/tools/layout/batch-ingest.tool.d.ts +82 -0
  852. package/dist/tools/layout/batch-ingest.tool.d.ts.map +1 -0
  853. package/dist/tools/layout/batch-ingest.tool.js +410 -0
  854. package/dist/tools/layout/batch-ingest.tool.js.map +1 -0
  855. package/dist/tools/layout/index.d.ts +13 -0
  856. package/dist/tools/layout/index.d.ts.map +1 -0
  857. package/dist/tools/layout/index.js +62 -0
  858. package/dist/tools/layout/index.js.map +1 -0
  859. package/dist/tools/layout/ingest.tool.d.ts +338 -0
  860. package/dist/tools/layout/ingest.tool.d.ts.map +1 -0
  861. package/dist/tools/layout/ingest.tool.js +1308 -0
  862. package/dist/tools/layout/ingest.tool.js.map +1 -0
  863. package/dist/tools/layout/inspect/index.d.ts +11 -0
  864. package/dist/tools/layout/inspect/index.d.ts.map +1 -0
  865. package/dist/tools/layout/inspect/index.js +55 -0
  866. package/dist/tools/layout/inspect/index.js.map +1 -0
  867. package/dist/tools/layout/inspect/inspect.schemas.d.ts +4130 -0
  868. package/dist/tools/layout/inspect/inspect.schemas.d.ts.map +1 -0
  869. package/dist/tools/layout/inspect/inspect.schemas.js +400 -0
  870. package/dist/tools/layout/inspect/inspect.schemas.js.map +1 -0
  871. package/dist/tools/layout/inspect/inspect.tool.d.ts +164 -0
  872. package/dist/tools/layout/inspect/inspect.tool.d.ts.map +1 -0
  873. package/dist/tools/layout/inspect/inspect.tool.js +738 -0
  874. package/dist/tools/layout/inspect/inspect.tool.js.map +1 -0
  875. package/dist/tools/layout/inspect/inspect.utils.d.ts +200 -0
  876. package/dist/tools/layout/inspect/inspect.utils.d.ts.map +1 -0
  877. package/dist/tools/layout/inspect/inspect.utils.js +1104 -0
  878. package/dist/tools/layout/inspect/inspect.utils.js.map +1 -0
  879. package/dist/tools/layout/inspect/visual-extractors.schemas.d.ts +3372 -0
  880. package/dist/tools/layout/inspect/visual-extractors.schemas.d.ts.map +1 -0
  881. package/dist/tools/layout/inspect/visual-extractors.schemas.js +558 -0
  882. package/dist/tools/layout/inspect/visual-extractors.schemas.js.map +1 -0
  883. package/dist/tools/layout/inspect/visual-extractors.utils.d.ts +86 -0
  884. package/dist/tools/layout/inspect/visual-extractors.utils.d.ts.map +1 -0
  885. package/dist/tools/layout/inspect/visual-extractors.utils.js +231 -0
  886. package/dist/tools/layout/inspect/visual-extractors.utils.js.map +1 -0
  887. package/dist/tools/layout/schemas.d.ts +11074 -0
  888. package/dist/tools/layout/schemas.d.ts.map +1 -0
  889. package/dist/tools/layout/schemas.js +1497 -0
  890. package/dist/tools/layout/schemas.js.map +1 -0
  891. package/dist/tools/layout/search.tool.d.ts +470 -0
  892. package/dist/tools/layout/search.tool.d.ts.map +1 -0
  893. package/dist/tools/layout/search.tool.js +1582 -0
  894. package/dist/tools/layout/search.tool.js.map +1 -0
  895. package/dist/tools/layout/to-code.tool.d.ts +280 -0
  896. package/dist/tools/layout/to-code.tool.d.ts.map +1 -0
  897. package/dist/tools/layout/to-code.tool.js +317 -0
  898. package/dist/tools/layout/to-code.tool.js.map +1 -0
  899. package/dist/tools/motion/analyze-frames.handler.d.ts +157 -0
  900. package/dist/tools/motion/analyze-frames.handler.d.ts.map +1 -0
  901. package/dist/tools/motion/analyze-frames.handler.js +263 -0
  902. package/dist/tools/motion/analyze-frames.handler.js.map +1 -0
  903. package/dist/tools/motion/analyze-frames.schema.d.ts +4599 -0
  904. package/dist/tools/motion/analyze-frames.schema.d.ts.map +1 -0
  905. package/dist/tools/motion/analyze-frames.schema.js +420 -0
  906. package/dist/tools/motion/analyze-frames.schema.js.map +1 -0
  907. package/dist/tools/motion/css-mode-handler.d.ts +70 -0
  908. package/dist/tools/motion/css-mode-handler.d.ts.map +1 -0
  909. package/dist/tools/motion/css-mode-handler.js +754 -0
  910. package/dist/tools/motion/css-mode-handler.js.map +1 -0
  911. package/dist/tools/motion/detect.schemas.d.ts +14288 -0
  912. package/dist/tools/motion/detect.schemas.d.ts.map +1 -0
  913. package/dist/tools/motion/detect.schemas.js +1715 -0
  914. package/dist/tools/motion/detect.schemas.js.map +1 -0
  915. package/dist/tools/motion/detect.tool.d.ts +195 -0
  916. package/dist/tools/motion/detect.tool.d.ts.map +1 -0
  917. package/dist/tools/motion/detect.tool.js +1421 -0
  918. package/dist/tools/motion/detect.tool.js.map +1 -0
  919. package/dist/tools/motion/detection-modes.d.ts +72 -0
  920. package/dist/tools/motion/detection-modes.d.ts.map +1 -0
  921. package/dist/tools/motion/detection-modes.js +353 -0
  922. package/dist/tools/motion/detection-modes.js.map +1 -0
  923. package/dist/tools/motion/di-factories.d.ts +341 -0
  924. package/dist/tools/motion/di-factories.d.ts.map +1 -0
  925. package/dist/tools/motion/di-factories.js +376 -0
  926. package/dist/tools/motion/di-factories.js.map +1 -0
  927. package/dist/tools/motion/index.d.ts +12 -0
  928. package/dist/tools/motion/index.d.ts.map +1 -0
  929. package/dist/tools/motion/index.js +146 -0
  930. package/dist/tools/motion/index.js.map +1 -0
  931. package/dist/tools/motion/pattern-converter.d.ts +49 -0
  932. package/dist/tools/motion/pattern-converter.d.ts.map +1 -0
  933. package/dist/tools/motion/pattern-converter.js +493 -0
  934. package/dist/tools/motion/pattern-converter.js.map +1 -0
  935. package/dist/tools/motion/schemas.d.ts +10 -0
  936. package/dist/tools/motion/schemas.d.ts.map +1 -0
  937. package/dist/tools/motion/schemas.js +28 -0
  938. package/dist/tools/motion/schemas.js.map +1 -0
  939. package/dist/tools/motion/search.schemas.d.ts +7500 -0
  940. package/dist/tools/motion/search.schemas.d.ts.map +1 -0
  941. package/dist/tools/motion/search.schemas.js +596 -0
  942. package/dist/tools/motion/search.schemas.js.map +1 -0
  943. package/dist/tools/motion/search.tool.d.ts +416 -0
  944. package/dist/tools/motion/search.tool.d.ts.map +1 -0
  945. package/dist/tools/motion/search.tool.js +2088 -0
  946. package/dist/tools/motion/search.tool.js.map +1 -0
  947. package/dist/tools/motion/shared.schemas.d.ts +994 -0
  948. package/dist/tools/motion/shared.schemas.d.ts.map +1 -0
  949. package/dist/tools/motion/shared.schemas.js +354 -0
  950. package/dist/tools/motion/shared.schemas.js.map +1 -0
  951. package/dist/tools/narrative/analyze.tool.d.ts +96 -0
  952. package/dist/tools/narrative/analyze.tool.d.ts.map +1 -0
  953. package/dist/tools/narrative/analyze.tool.js +396 -0
  954. package/dist/tools/narrative/analyze.tool.js.map +1 -0
  955. package/dist/tools/narrative/index.d.ts +15 -0
  956. package/dist/tools/narrative/index.d.ts.map +1 -0
  957. package/dist/tools/narrative/index.js +83 -0
  958. package/dist/tools/narrative/index.js.map +1 -0
  959. package/dist/tools/narrative/schemas.d.ts +5553 -0
  960. package/dist/tools/narrative/schemas.d.ts.map +1 -0
  961. package/dist/tools/narrative/schemas.js +747 -0
  962. package/dist/tools/narrative/schemas.js.map +1 -0
  963. package/dist/tools/narrative/search.tool.d.ts +160 -0
  964. package/dist/tools/narrative/search.tool.d.ts.map +1 -0
  965. package/dist/tools/narrative/search.tool.js +434 -0
  966. package/dist/tools/narrative/search.tool.js.map +1 -0
  967. package/dist/tools/page/analyze.tool.d.ts +502 -0
  968. package/dist/tools/page/analyze.tool.d.ts.map +1 -0
  969. package/dist/tools/page/analyze.tool.js +875 -0
  970. package/dist/tools/page/analyze.tool.js.map +1 -0
  971. package/dist/tools/page/get-job-status.tool.d.ts +43 -0
  972. package/dist/tools/page/get-job-status.tool.d.ts.map +1 -0
  973. package/dist/tools/page/get-job-status.tool.js +178 -0
  974. package/dist/tools/page/get-job-status.tool.js.map +1 -0
  975. package/dist/tools/page/handlers/db-handler.d.ts +155 -0
  976. package/dist/tools/page/handlers/db-handler.d.ts.map +1 -0
  977. package/dist/tools/page/handlers/db-handler.js +368 -0
  978. package/dist/tools/page/handlers/db-handler.js.map +1 -0
  979. package/dist/tools/page/handlers/embedding-handler.d.ts +200 -0
  980. package/dist/tools/page/handlers/embedding-handler.d.ts.map +1 -0
  981. package/dist/tools/page/handlers/embedding-handler.js +541 -0
  982. package/dist/tools/page/handlers/embedding-handler.js.map +1 -0
  983. package/dist/tools/page/handlers/execution-status-tracker.d.ts +146 -0
  984. package/dist/tools/page/handlers/execution-status-tracker.d.ts.map +1 -0
  985. package/dist/tools/page/handlers/execution-status-tracker.js +348 -0
  986. package/dist/tools/page/handlers/execution-status-tracker.js.map +1 -0
  987. package/dist/tools/page/handlers/js-animation-handler.d.ts +197 -0
  988. package/dist/tools/page/handlers/js-animation-handler.d.ts.map +1 -0
  989. package/dist/tools/page/handlers/js-animation-handler.js +952 -0
  990. package/dist/tools/page/handlers/js-animation-handler.js.map +1 -0
  991. package/dist/tools/page/handlers/layout-handler.d.ts +31 -0
  992. package/dist/tools/page/handlers/layout-handler.d.ts.map +1 -0
  993. package/dist/tools/page/handlers/layout-handler.js +1181 -0
  994. package/dist/tools/page/handlers/layout-handler.js.map +1 -0
  995. package/dist/tools/page/handlers/motion-handler.d.ts +31 -0
  996. package/dist/tools/page/handlers/motion-handler.d.ts.map +1 -0
  997. package/dist/tools/page/handlers/motion-handler.js +940 -0
  998. package/dist/tools/page/handlers/motion-handler.js.map +1 -0
  999. package/dist/tools/page/handlers/narrative-handler.d.ts +23 -0
  1000. package/dist/tools/page/handlers/narrative-handler.d.ts.map +1 -0
  1001. package/dist/tools/page/handlers/narrative-handler.js +279 -0
  1002. package/dist/tools/page/handlers/narrative-handler.js.map +1 -0
  1003. package/dist/tools/page/handlers/phased-db-handler.d.ts +83 -0
  1004. package/dist/tools/page/handlers/phased-db-handler.d.ts.map +1 -0
  1005. package/dist/tools/page/handlers/phased-db-handler.js +120 -0
  1006. package/dist/tools/page/handlers/phased-db-handler.js.map +1 -0
  1007. package/dist/tools/page/handlers/phased-executor.d.ts +123 -0
  1008. package/dist/tools/page/handlers/phased-executor.d.ts.map +1 -0
  1009. package/dist/tools/page/handlers/phased-executor.js +205 -0
  1010. package/dist/tools/page/handlers/phased-executor.js.map +1 -0
  1011. package/dist/tools/page/handlers/quality-handler.d.ts +9 -0
  1012. package/dist/tools/page/handlers/quality-handler.d.ts.map +1 -0
  1013. package/dist/tools/page/handlers/quality-handler.js +100 -0
  1014. package/dist/tools/page/handlers/quality-handler.js.map +1 -0
  1015. package/dist/tools/page/handlers/result-builder.d.ts +105 -0
  1016. package/dist/tools/page/handlers/result-builder.d.ts.map +1 -0
  1017. package/dist/tools/page/handlers/result-builder.js +447 -0
  1018. package/dist/tools/page/handlers/result-builder.js.map +1 -0
  1019. package/dist/tools/page/handlers/retry-strategy.d.ts +106 -0
  1020. package/dist/tools/page/handlers/retry-strategy.d.ts.map +1 -0
  1021. package/dist/tools/page/handlers/retry-strategy.js +169 -0
  1022. package/dist/tools/page/handlers/retry-strategy.js.map +1 -0
  1023. package/dist/tools/page/handlers/sync-processing.d.ts +26 -0
  1024. package/dist/tools/page/handlers/sync-processing.d.ts.map +1 -0
  1025. package/dist/tools/page/handlers/sync-processing.js +1659 -0
  1026. package/dist/tools/page/handlers/sync-processing.js.map +1 -0
  1027. package/dist/tools/page/handlers/timeout-utils.d.ts +278 -0
  1028. package/dist/tools/page/handlers/timeout-utils.d.ts.map +1 -0
  1029. package/dist/tools/page/handlers/timeout-utils.js +600 -0
  1030. package/dist/tools/page/handlers/timeout-utils.js.map +1 -0
  1031. package/dist/tools/page/handlers/types.d.ts +1229 -0
  1032. package/dist/tools/page/handlers/types.d.ts.map +1 -0
  1033. package/dist/tools/page/handlers/types.js +21 -0
  1034. package/dist/tools/page/handlers/types.js.map +1 -0
  1035. package/dist/tools/page/handlers/video-handler.d.ts +11 -0
  1036. package/dist/tools/page/handlers/video-handler.d.ts.map +1 -0
  1037. package/dist/tools/page/handlers/video-handler.js +235 -0
  1038. package/dist/tools/page/handlers/video-handler.js.map +1 -0
  1039. package/dist/tools/page/handlers/webgl-animation-handler.d.ts +48 -0
  1040. package/dist/tools/page/handlers/webgl-animation-handler.d.ts.map +1 -0
  1041. package/dist/tools/page/handlers/webgl-animation-handler.js +237 -0
  1042. package/dist/tools/page/handlers/webgl-animation-handler.js.map +1 -0
  1043. package/dist/tools/page/handlers/webgl-detector.d.ts +184 -0
  1044. package/dist/tools/page/handlers/webgl-detector.d.ts.map +1 -0
  1045. package/dist/tools/page/handlers/webgl-detector.js +680 -0
  1046. package/dist/tools/page/handlers/webgl-detector.js.map +1 -0
  1047. package/dist/tools/page/handlers/webgl-domains.d.ts +133 -0
  1048. package/dist/tools/page/handlers/webgl-domains.d.ts.map +1 -0
  1049. package/dist/tools/page/handlers/webgl-domains.js +420 -0
  1050. package/dist/tools/page/handlers/webgl-domains.js.map +1 -0
  1051. package/dist/tools/page/handlers/webgl-pre-detector.d.ts +100 -0
  1052. package/dist/tools/page/handlers/webgl-pre-detector.d.ts.map +1 -0
  1053. package/dist/tools/page/handlers/webgl-pre-detector.js +248 -0
  1054. package/dist/tools/page/handlers/webgl-pre-detector.js.map +1 -0
  1055. package/dist/tools/page/index.d.ts +10 -0
  1056. package/dist/tools/page/index.d.ts.map +1 -0
  1057. package/dist/tools/page/index.js +84 -0
  1058. package/dist/tools/page/index.js.map +1 -0
  1059. package/dist/tools/page/input.schemas.d.ts +2223 -0
  1060. package/dist/tools/page/input.schemas.d.ts.map +1 -0
  1061. package/dist/tools/page/input.schemas.js +853 -0
  1062. package/dist/tools/page/input.schemas.js.map +1 -0
  1063. package/dist/tools/page/output.schemas.d.ts +26026 -0
  1064. package/dist/tools/page/output.schemas.d.ts.map +1 -0
  1065. package/dist/tools/page/output.schemas.js +1414 -0
  1066. package/dist/tools/page/output.schemas.js.map +1 -0
  1067. package/dist/tools/page/schemas.d.ts +10 -0
  1068. package/dist/tools/page/schemas.d.ts.map +1 -0
  1069. package/dist/tools/page/schemas.js +28 -0
  1070. package/dist/tools/page/schemas.js.map +1 -0
  1071. package/dist/tools/page/shared.schemas.d.ts +38 -0
  1072. package/dist/tools/page/shared.schemas.d.ts.map +1 -0
  1073. package/dist/tools/page/shared.schemas.js +69 -0
  1074. package/dist/tools/page/shared.schemas.js.map +1 -0
  1075. package/dist/tools/part/compare.tool.d.ts +106 -0
  1076. package/dist/tools/part/compare.tool.d.ts.map +1 -0
  1077. package/dist/tools/part/compare.tool.js +421 -0
  1078. package/dist/tools/part/compare.tool.js.map +1 -0
  1079. package/dist/tools/part/inspect.tool.d.ts +108 -0
  1080. package/dist/tools/part/inspect.tool.d.ts.map +1 -0
  1081. package/dist/tools/part/inspect.tool.js +279 -0
  1082. package/dist/tools/part/inspect.tool.js.map +1 -0
  1083. package/dist/tools/part/search.tool.d.ts +121 -0
  1084. package/dist/tools/part/search.tool.d.ts.map +1 -0
  1085. package/dist/tools/part/search.tool.js +381 -0
  1086. package/dist/tools/part/search.tool.js.map +1 -0
  1087. package/dist/tools/preference/get.tool.d.ts +74 -0
  1088. package/dist/tools/preference/get.tool.d.ts.map +1 -0
  1089. package/dist/tools/preference/get.tool.js +175 -0
  1090. package/dist/tools/preference/get.tool.js.map +1 -0
  1091. package/dist/tools/preference/hear.tool.d.ts +267 -0
  1092. package/dist/tools/preference/hear.tool.d.ts.map +1 -0
  1093. package/dist/tools/preference/hear.tool.js +268 -0
  1094. package/dist/tools/preference/hear.tool.js.map +1 -0
  1095. package/dist/tools/preference/index.d.ts +16 -0
  1096. package/dist/tools/preference/index.d.ts.map +1 -0
  1097. package/dist/tools/preference/index.js +43 -0
  1098. package/dist/tools/preference/index.js.map +1 -0
  1099. package/dist/tools/preference/reset.tool.d.ts +71 -0
  1100. package/dist/tools/preference/reset.tool.d.ts.map +1 -0
  1101. package/dist/tools/preference/reset.tool.js +205 -0
  1102. package/dist/tools/preference/reset.tool.js.map +1 -0
  1103. package/dist/tools/preference/schemas.d.ts +174 -0
  1104. package/dist/tools/preference/schemas.d.ts.map +1 -0
  1105. package/dist/tools/preference/schemas.js +142 -0
  1106. package/dist/tools/preference/schemas.js.map +1 -0
  1107. package/dist/tools/project-get.d.ts +42 -0
  1108. package/dist/tools/project-get.d.ts.map +1 -0
  1109. package/dist/tools/project-get.js +152 -0
  1110. package/dist/tools/project-get.js.map +1 -0
  1111. package/dist/tools/project-list.d.ts +66 -0
  1112. package/dist/tools/project-list.d.ts.map +1 -0
  1113. package/dist/tools/project-list.js +201 -0
  1114. package/dist/tools/project-list.js.map +1 -0
  1115. package/dist/tools/quality/batch-evaluate.tool.d.ts +101 -0
  1116. package/dist/tools/quality/batch-evaluate.tool.d.ts.map +1 -0
  1117. package/dist/tools/quality/batch-evaluate.tool.js +393 -0
  1118. package/dist/tools/quality/batch-evaluate.tool.js.map +1 -0
  1119. package/dist/tools/quality/evaluate-engine.d.ts +166 -0
  1120. package/dist/tools/quality/evaluate-engine.d.ts.map +1 -0
  1121. package/dist/tools/quality/evaluate-engine.js +1061 -0
  1122. package/dist/tools/quality/evaluate-engine.js.map +1 -0
  1123. package/dist/tools/quality/evaluate.tool.d.ts +286 -0
  1124. package/dist/tools/quality/evaluate.tool.d.ts.map +1 -0
  1125. package/dist/tools/quality/evaluate.tool.js +815 -0
  1126. package/dist/tools/quality/evaluate.tool.js.map +1 -0
  1127. package/dist/tools/quality/get-job-status.tool.d.ts +44 -0
  1128. package/dist/tools/quality/get-job-status.tool.d.ts.map +1 -0
  1129. package/dist/tools/quality/get-job-status.tool.js +291 -0
  1130. package/dist/tools/quality/get-job-status.tool.js.map +1 -0
  1131. package/dist/tools/quality/improvement-utils.d.ts +24 -0
  1132. package/dist/tools/quality/improvement-utils.d.ts.map +1 -0
  1133. package/dist/tools/quality/improvement-utils.js +307 -0
  1134. package/dist/tools/quality/improvement-utils.js.map +1 -0
  1135. package/dist/tools/quality/index.d.ts +11 -0
  1136. package/dist/tools/quality/index.d.ts.map +1 -0
  1137. package/dist/tools/quality/index.js +49 -0
  1138. package/dist/tools/quality/index.js.map +1 -0
  1139. package/dist/tools/quality/schemas.d.ts +14098 -0
  1140. package/dist/tools/quality/schemas.d.ts.map +1 -0
  1141. package/dist/tools/quality/schemas.js +950 -0
  1142. package/dist/tools/quality/schemas.js.map +1 -0
  1143. package/dist/tools/responsive/schemas.d.ts +156 -0
  1144. package/dist/tools/responsive/schemas.d.ts.map +1 -0
  1145. package/dist/tools/responsive/schemas.js +86 -0
  1146. package/dist/tools/responsive/schemas.js.map +1 -0
  1147. package/dist/tools/responsive/search.tool.d.ts +130 -0
  1148. package/dist/tools/responsive/search.tool.d.ts.map +1 -0
  1149. package/dist/tools/responsive/search.tool.js +324 -0
  1150. package/dist/tools/responsive/search.tool.js.map +1 -0
  1151. package/dist/tools/schemas/index.d.ts +10 -0
  1152. package/dist/tools/schemas/index.d.ts.map +1 -0
  1153. package/dist/tools/schemas/index.js +45 -0
  1154. package/dist/tools/schemas/index.js.map +1 -0
  1155. package/dist/tools/schemas/layout-schemas.d.ts +521 -0
  1156. package/dist/tools/schemas/layout-schemas.d.ts.map +1 -0
  1157. package/dist/tools/schemas/layout-schemas.js +281 -0
  1158. package/dist/tools/schemas/layout-schemas.js.map +1 -0
  1159. package/dist/tools/schemas/project-schemas.d.ts +417 -0
  1160. package/dist/tools/schemas/project-schemas.d.ts.map +1 -0
  1161. package/dist/tools/schemas/project-schemas.js +159 -0
  1162. package/dist/tools/schemas/project-schemas.js.map +1 -0
  1163. package/dist/tools/schemas/shared.d.ts +107 -0
  1164. package/dist/tools/schemas/shared.d.ts.map +1 -0
  1165. package/dist/tools/schemas/shared.js +150 -0
  1166. package/dist/tools/schemas/shared.js.map +1 -0
  1167. package/dist/tools/schemas/style-schemas.d.ts +114 -0
  1168. package/dist/tools/schemas/style-schemas.d.ts.map +1 -0
  1169. package/dist/tools/schemas/style-schemas.js +61 -0
  1170. package/dist/tools/schemas/style-schemas.js.map +1 -0
  1171. package/dist/tools/style-get-palette.d.ts +136 -0
  1172. package/dist/tools/style-get-palette.d.ts.map +1 -0
  1173. package/dist/tools/style-get-palette.js +259 -0
  1174. package/dist/tools/style-get-palette.js.map +1 -0
  1175. package/dist/tools/system-health.d.ts +255 -0
  1176. package/dist/tools/system-health.d.ts.map +1 -0
  1177. package/dist/tools/system-health.js +463 -0
  1178. package/dist/tools/system-health.js.map +1 -0
  1179. package/dist/transport.d.ts +29 -0
  1180. package/dist/transport.d.ts.map +1 -0
  1181. package/dist/transport.js +50 -0
  1182. package/dist/transport.js.map +1 -0
  1183. package/dist/types/creative/index.d.ts +8 -0
  1184. package/dist/types/creative/index.d.ts.map +1 -0
  1185. package/dist/types/creative/index.js +5 -0
  1186. package/dist/types/creative/index.js.map +1 -0
  1187. package/dist/types/creative/palette.d.ts +142 -0
  1188. package/dist/types/creative/palette.d.ts.map +1 -0
  1189. package/dist/types/creative/palette.js +5 -0
  1190. package/dist/types/creative/palette.js.map +1 -0
  1191. package/dist/types/reftrix-window.d.ts +124 -0
  1192. package/dist/types/reftrix-window.d.ts.map +1 -0
  1193. package/dist/types/reftrix-window.js +68 -0
  1194. package/dist/types/reftrix-window.js.map +1 -0
  1195. package/dist/utils/actionable-warning.d.ts +170 -0
  1196. package/dist/utils/actionable-warning.d.ts.map +1 -0
  1197. package/dist/utils/actionable-warning.js +818 -0
  1198. package/dist/utils/actionable-warning.js.map +1 -0
  1199. package/dist/utils/blank-image-detector.d.ts +22 -0
  1200. package/dist/utils/blank-image-detector.d.ts.map +1 -0
  1201. package/dist/utils/blank-image-detector.js +133 -0
  1202. package/dist/utils/blank-image-detector.js.map +1 -0
  1203. package/dist/utils/color.d.ts +203 -0
  1204. package/dist/utils/color.d.ts.map +1 -0
  1205. package/dist/utils/color.js +442 -0
  1206. package/dist/utils/color.js.map +1 -0
  1207. package/dist/utils/deprecation-warning.d.ts +43 -0
  1208. package/dist/utils/deprecation-warning.d.ts.map +1 -0
  1209. package/dist/utils/deprecation-warning.js +112 -0
  1210. package/dist/utils/deprecation-warning.js.map +1 -0
  1211. package/dist/utils/error-messages.d.ts +233 -0
  1212. package/dist/utils/error-messages.d.ts.map +1 -0
  1213. package/dist/utils/error-messages.js +721 -0
  1214. package/dist/utils/error-messages.js.map +1 -0
  1215. package/dist/utils/errors.d.ts +64 -0
  1216. package/dist/utils/errors.d.ts.map +1 -0
  1217. package/dist/utils/errors.js +82 -0
  1218. package/dist/utils/errors.js.map +1 -0
  1219. package/dist/utils/gpu-browser-args.d.ts +27 -0
  1220. package/dist/utils/gpu-browser-args.d.ts.map +1 -0
  1221. package/dist/utils/gpu-browser-args.js +42 -0
  1222. package/dist/utils/gpu-browser-args.js.map +1 -0
  1223. package/dist/utils/html-sanitizer.d.ts +116 -0
  1224. package/dist/utils/html-sanitizer.d.ts.map +1 -0
  1225. package/dist/utils/html-sanitizer.js +630 -0
  1226. package/dist/utils/html-sanitizer.js.map +1 -0
  1227. package/dist/utils/logger.d.ts +141 -0
  1228. package/dist/utils/logger.d.ts.map +1 -0
  1229. package/dist/utils/logger.js +249 -0
  1230. package/dist/utils/logger.js.map +1 -0
  1231. package/dist/utils/mcp-response.d.ts +317 -0
  1232. package/dist/utils/mcp-response.d.ts.map +1 -0
  1233. package/dist/utils/mcp-response.js +270 -0
  1234. package/dist/utils/mcp-response.js.map +1 -0
  1235. package/dist/utils/path-security.d.ts +73 -0
  1236. package/dist/utils/path-security.d.ts.map +1 -0
  1237. package/dist/utils/path-security.js +389 -0
  1238. package/dist/utils/path-security.js.map +1 -0
  1239. package/dist/utils/prisma-wrapper-factory.d.ts +152 -0
  1240. package/dist/utils/prisma-wrapper-factory.d.ts.map +1 -0
  1241. package/dist/utils/prisma-wrapper-factory.js +124 -0
  1242. package/dist/utils/prisma-wrapper-factory.js.map +1 -0
  1243. package/dist/utils/safe-parse-int.d.ts +41 -0
  1244. package/dist/utils/safe-parse-int.d.ts.map +1 -0
  1245. package/dist/utils/safe-parse-int.js +49 -0
  1246. package/dist/utils/safe-parse-int.js.map +1 -0
  1247. package/dist/utils/url-normalizer.d.ts +38 -0
  1248. package/dist/utils/url-normalizer.d.ts.map +1 -0
  1249. package/dist/utils/url-normalizer.js +103 -0
  1250. package/dist/utils/url-normalizer.js.map +1 -0
  1251. package/dist/utils/url-validator.d.ts +86 -0
  1252. package/dist/utils/url-validator.d.ts.map +1 -0
  1253. package/dist/utils/url-validator.js +533 -0
  1254. package/dist/utils/url-validator.js.map +1 -0
  1255. package/dist/workers/batch-quality-worker.d.ts +87 -0
  1256. package/dist/workers/batch-quality-worker.d.ts.map +1 -0
  1257. package/dist/workers/batch-quality-worker.js +300 -0
  1258. package/dist/workers/batch-quality-worker.js.map +1 -0
  1259. package/dist/workers/page-analyze-worker.d.ts +63 -0
  1260. package/dist/workers/page-analyze-worker.d.ts.map +1 -0
  1261. package/dist/workers/page-analyze-worker.js +872 -0
  1262. package/dist/workers/page-analyze-worker.js.map +1 -0
  1263. package/dist/workers/phases/phase-0-ingest.d.ts +42 -0
  1264. package/dist/workers/phases/phase-0-ingest.d.ts.map +1 -0
  1265. package/dist/workers/phases/phase-0-ingest.js +197 -0
  1266. package/dist/workers/phases/phase-0-ingest.js.map +1 -0
  1267. package/dist/workers/phases/phase-1-layout.d.ts +63 -0
  1268. package/dist/workers/phases/phase-1-layout.d.ts.map +1 -0
  1269. package/dist/workers/phases/phase-1-layout.js +362 -0
  1270. package/dist/workers/phases/phase-1-layout.js.map +1 -0
  1271. package/dist/workers/phases/phase-2-motion.d.ts +93 -0
  1272. package/dist/workers/phases/phase-2-motion.d.ts.map +1 -0
  1273. package/dist/workers/phases/phase-2-motion.js +408 -0
  1274. package/dist/workers/phases/phase-2-motion.js.map +1 -0
  1275. package/dist/workers/phases/phase-3-quality.d.ts +61 -0
  1276. package/dist/workers/phases/phase-3-quality.d.ts.map +1 -0
  1277. package/dist/workers/phases/phase-3-quality.js +191 -0
  1278. package/dist/workers/phases/phase-3-quality.js.map +1 -0
  1279. package/dist/workers/phases/phase-4-narrative.d.ts +37 -0
  1280. package/dist/workers/phases/phase-4-narrative.d.ts.map +1 -0
  1281. package/dist/workers/phases/phase-4-narrative.js +309 -0
  1282. package/dist/workers/phases/phase-4-narrative.js.map +1 -0
  1283. package/dist/workers/phases/phase-5-embedding.d.ts +56 -0
  1284. package/dist/workers/phases/phase-5-embedding.d.ts.map +1 -0
  1285. package/dist/workers/phases/phase-5-embedding.js +1350 -0
  1286. package/dist/workers/phases/phase-5-embedding.js.map +1 -0
  1287. package/dist/workers/phases/types.d.ts +411 -0
  1288. package/dist/workers/phases/types.d.ts.map +1 -0
  1289. package/dist/workers/phases/types.js +540 -0
  1290. package/dist/workers/phases/types.js.map +1 -0
  1291. package/package.json +117 -0
  1292. package/src/api/health.ts +372 -0
  1293. package/src/config/index.ts +12 -0
  1294. package/src/config/redis.ts +280 -0
  1295. package/src/index.ts +360 -0
  1296. package/src/lib/index.ts +9 -0
  1297. package/src/lib/project-context.ts +109 -0
  1298. package/src/middleware/args-type-coercion.ts +220 -0
  1299. package/src/middleware/auth.ts +558 -0
  1300. package/src/middleware/index.ts +56 -0
  1301. package/src/middleware/light-response-controller.ts +723 -0
  1302. package/src/middleware/response-size-warning.ts +196 -0
  1303. package/src/queues/batch-quality-queue.ts +580 -0
  1304. package/src/queues/index.ts +13 -0
  1305. package/src/queues/page-analyze-queue.ts +472 -0
  1306. package/src/router.ts +343 -0
  1307. package/src/schemas/creative/index.ts +34 -0
  1308. package/src/schemas/creative/palette.schema.ts +191 -0
  1309. package/src/schemas/mood-brandtone-filters.ts +306 -0
  1310. package/src/scripts/backfill-embeddings.ts +454 -0
  1311. package/src/scripts/check-embedding-coverage.ts +119 -0
  1312. package/src/scripts/start-workers.ts +560 -0
  1313. package/src/server.ts +290 -0
  1314. package/src/services/background/background-design-db.service.ts +206 -0
  1315. package/src/services/background/background-design-detector.service.ts +1442 -0
  1316. package/src/services/background/background-design-embedding.service.ts +599 -0
  1317. package/src/services/background-search.service.ts +372 -0
  1318. package/src/services/backup-service.ts +441 -0
  1319. package/src/services/brief/brief-parser-service.ts +435 -0
  1320. package/src/services/brief/schemas/brief-parser-schemas.ts +138 -0
  1321. package/src/services/browser-process-manager.ts +334 -0
  1322. package/src/services/cache.ts +297 -0
  1323. package/src/services/checksum-service.ts +293 -0
  1324. package/src/services/css-analysis-cache.service.ts +547 -0
  1325. package/src/services/database-dumper.service.ts +675 -0
  1326. package/src/services/embedding-backfill.service.ts +1055 -0
  1327. package/src/services/embedding-validation.service.ts +194 -0
  1328. package/src/services/encryption-service.ts +433 -0
  1329. package/src/services/external-css-fetcher.ts +872 -0
  1330. package/src/services/gpu-resource-manager.ts +615 -0
  1331. package/src/services/index.ts +169 -0
  1332. package/src/services/layout/component-splitter.ts +656 -0
  1333. package/src/services/layout/html-to-jsx-converter.ts +591 -0
  1334. package/src/services/layout/semantic-html-converter.ts +293 -0
  1335. package/src/services/layout/style-to-tailwind-mapper.ts +1530 -0
  1336. package/src/services/layout-embedding.service.ts +1552 -0
  1337. package/src/services/layout-generate-code-service-export.ts +109 -0
  1338. package/src/services/layout-search-service-export.ts +55 -0
  1339. package/src/services/layout-search.service.ts +933 -0
  1340. package/src/services/layout-to-code.service.ts +1631 -0
  1341. package/src/services/metrics-collector.ts +473 -0
  1342. package/src/services/ml/mood-brandtone-embedding.service.ts +1115 -0
  1343. package/src/services/motion/analyzers/color-change.analyzer.ts +935 -0
  1344. package/src/services/motion/analyzers/frame-diff.analyzer.ts +372 -0
  1345. package/src/services/motion/analyzers/layout-shift.detector.ts +296 -0
  1346. package/src/services/motion/analyzers/motion-vector.estimator.ts +698 -0
  1347. package/src/services/motion/analyzers/webgl-motion-analyzer.ts +700 -0
  1348. package/src/services/motion/animation-metrics-collector.service.ts +726 -0
  1349. package/src/services/motion/cls-calculator.service.ts +519 -0
  1350. package/src/services/motion/existing-animation-detector.service.ts +751 -0
  1351. package/src/services/motion/fade-detector.service.ts +383 -0
  1352. package/src/services/motion/frame-analysis-save.helper.ts +333 -0
  1353. package/src/services/motion/frame-capture.service.ts +654 -0
  1354. package/src/services/motion/frame-embedding.service.ts +1419 -0
  1355. package/src/services/motion/frame-image-analysis.service.ts +1271 -0
  1356. package/src/services/motion/frame-image-analyzer.adapter.ts +747 -0
  1357. package/src/services/motion/frame-worker-pool.service.ts +519 -0
  1358. package/src/services/motion/infrastructure/frame-loader.ts +450 -0
  1359. package/src/services/motion/js-animation-detector.ts +1563 -0
  1360. package/src/services/motion/js-animation-embedding.service.ts +423 -0
  1361. package/src/services/motion/js-animation-search.service.ts +715 -0
  1362. package/src/services/motion/motion-db.service.ts +952 -0
  1363. package/src/services/motion/three-js-scene-extractor.ts +1556 -0
  1364. package/src/services/motion/types.ts +820 -0
  1365. package/src/services/motion/visual-category-classifier.ts +1426 -0
  1366. package/src/services/motion/webgl-animation-categorizer.ts +761 -0
  1367. package/src/services/motion/webgl-animation-detector.service.ts +772 -0
  1368. package/src/services/motion/webgl-animation-embedding.service.ts +558 -0
  1369. package/src/services/motion-detect-service-export.ts +300 -0
  1370. package/src/services/motion-persistence.service.ts +541 -0
  1371. package/src/services/motion-search-service.ts +38 -0
  1372. package/src/services/motion-search.service.ts +1159 -0
  1373. package/src/services/narrative/analyzers/layout-structure.analyzer.ts +628 -0
  1374. package/src/services/narrative/analyzers/worldview.analyzer.ts +639 -0
  1375. package/src/services/narrative/generators/confidence-calculator.ts +419 -0
  1376. package/src/services/narrative/generators/text-representation.generator.ts +362 -0
  1377. package/src/services/narrative/index.ts +72 -0
  1378. package/src/services/narrative/narrative-analysis.service.ts +610 -0
  1379. package/src/services/narrative/narrative-search.service.ts +704 -0
  1380. package/src/services/narrative/types/narrative.types.ts +451 -0
  1381. package/src/services/orphaned-job-utils.ts +160 -0
  1382. package/src/services/page/css-animation-parser.service.ts +650 -0
  1383. package/src/services/page/fallback-analyzer.service.ts +435 -0
  1384. package/src/services/page/frame-analyzer.service.ts +824 -0
  1385. package/src/services/page/layout-analyzer.service.ts +2534 -0
  1386. package/src/services/page/motion-category-classifier.service.ts +463 -0
  1387. package/src/services/page/motion-detector.service.ts +430 -0
  1388. package/src/services/page/motion-performance-analyzer.service.ts +390 -0
  1389. package/src/services/page/playwright-crawler.service.ts +478 -0
  1390. package/src/services/page/quality-evaluator.service.ts +1473 -0
  1391. package/src/services/page/runtime-animation-detector.service.ts +743 -0
  1392. package/src/services/page/section-postprocessor.service.ts +874 -0
  1393. package/src/services/page/video-recorder.service.ts +516 -0
  1394. package/src/services/page/webgl-detector.service.ts +361 -0
  1395. package/src/services/page-analyze-service.ts +83 -0
  1396. package/src/services/page-ingest-adapter.ts +2256 -0
  1397. package/src/services/palette-service-export.ts +50 -0
  1398. package/src/services/part/index.ts +81 -0
  1399. package/src/services/part/part-backfill.service.ts +308 -0
  1400. package/src/services/part/part-bbox-playwright.service.ts +502 -0
  1401. package/src/services/part/part-db.service.ts +121 -0
  1402. package/src/services/part/part-embedding-db.service.ts +184 -0
  1403. package/src/services/part/part-embedding.service.ts +406 -0
  1404. package/src/services/part/part-extraction.service.ts +612 -0
  1405. package/src/services/part/part-search.service.ts +806 -0
  1406. package/src/services/part/schemas.ts +194 -0
  1407. package/src/services/part/section-screenshot-fallback.service.ts +644 -0
  1408. package/src/services/part/types.ts +299 -0
  1409. package/src/services/persistent-cache.ts +760 -0
  1410. package/src/services/preference-profile.service.ts +862 -0
  1411. package/src/services/preference-rerank.helper.ts +549 -0
  1412. package/src/services/production-guard.ts +423 -0
  1413. package/src/services/project-context-analyzer.ts +915 -0
  1414. package/src/services/quality/axe-accessibility.service.ts +253 -0
  1415. package/src/services/quality/axe-core-shared.ts +203 -0
  1416. package/src/services/quality/benchmark.service.ts +657 -0
  1417. package/src/services/quality/content-gap-detector.service.ts +485 -0
  1418. package/src/services/quality/index.ts +45 -0
  1419. package/src/services/quality/pattern-matcher.service.ts +941 -0
  1420. package/src/services/quality/playwright-axe.service.ts +343 -0
  1421. package/src/services/quality/quality-evaluate.service.interface.ts +262 -0
  1422. package/src/services/quality/visual-design-analyzer.service.ts +918 -0
  1423. package/src/services/quality-evaluate-service-export.ts +268 -0
  1424. package/src/services/quality-search.service.ts +406 -0
  1425. package/src/services/query-analyzer.ts +306 -0
  1426. package/src/services/query-context-analyzer.ts +843 -0
  1427. package/src/services/queue-cleanup.service.ts +376 -0
  1428. package/src/services/responsive/difference-detector.service.ts +647 -0
  1429. package/src/services/responsive/index.ts +64 -0
  1430. package/src/services/responsive/multi-viewport-capture.service.ts +943 -0
  1431. package/src/services/responsive/responsive-analysis-embedding.service.ts +413 -0
  1432. package/src/services/responsive/responsive-analysis.service.ts +325 -0
  1433. package/src/services/responsive/responsive-persistence.service.ts +133 -0
  1434. package/src/services/responsive/responsive-quality-evaluator.service.ts +515 -0
  1435. package/src/services/responsive/shared-browser-manager.ts +118 -0
  1436. package/src/services/responsive/types.ts +387 -0
  1437. package/src/services/responsive/viewport-diff.service.ts +236 -0
  1438. package/src/services/responsive-search.service.ts +230 -0
  1439. package/src/services/search/mood-brandtone-search.service.ts +400 -0
  1440. package/src/services/search-performance.service.ts +252 -0
  1441. package/src/services/section-screenshot.service.ts +581 -0
  1442. package/src/services/service-client.ts +643 -0
  1443. package/src/services/service-initializer.ts +1386 -0
  1444. package/src/services/storage/index.ts +15 -0
  1445. package/src/services/storage/local-storage.provider.ts +370 -0
  1446. package/src/services/style/index.ts +10 -0
  1447. package/src/services/style/palette-service.ts +655 -0
  1448. package/src/services/style/prisma-palette-repository.ts +216 -0
  1449. package/src/services/vision/brandtone.analyzer.ts +371 -0
  1450. package/src/services/vision/hardware-detector.ts +436 -0
  1451. package/src/services/vision/image-optimizer.ts +377 -0
  1452. package/src/services/vision/index.ts +131 -0
  1453. package/src/services/vision/llama-vision-adapter.ts +526 -0
  1454. package/src/services/vision/mcp-progress-adapter.ts +221 -0
  1455. package/src/services/vision/mood.analyzer.ts +332 -0
  1456. package/src/services/vision/ollama-readiness-probe.ts +271 -0
  1457. package/src/services/vision/ollama-vision-client.ts +631 -0
  1458. package/src/services/vision/progress-reporter.ts +377 -0
  1459. package/src/services/vision/scroll-vision-capture.service.ts +409 -0
  1460. package/src/services/vision/scroll-vision-persistence.service.ts +216 -0
  1461. package/src/services/vision/scroll-vision.analyzer.ts +416 -0
  1462. package/src/services/vision/theme.analyzer.ts +443 -0
  1463. package/src/services/vision/timeout-calculator.ts +155 -0
  1464. package/src/services/vision/vision-fallback.service.ts +368 -0
  1465. package/src/services/vision/vision.cache.ts +332 -0
  1466. package/src/services/vision/vision.errors.ts +186 -0
  1467. package/src/services/vision/vision.prompts.ts +298 -0
  1468. package/src/services/vision/vram-utils.ts +80 -0
  1469. package/src/services/vision-adapter/index.ts +71 -0
  1470. package/src/services/vision-adapter/interface.ts +911 -0
  1471. package/src/services/vision-adapter/llama-vision.adapter.ts +2254 -0
  1472. package/src/services/vision-adapter/llama-vision.prompts.ts +242 -0
  1473. package/src/services/vision-adapter/llama-vision.types.ts +103 -0
  1474. package/src/services/vision-adapter/local.adapter.ts +1079 -0
  1475. package/src/services/vision-adapter/mock.adapter.ts +978 -0
  1476. package/src/services/vision-embedding-search.service.ts +1071 -0
  1477. package/src/services/vision-embedding.service.ts +631 -0
  1478. package/src/services/visual/css-variable-extractor.service.ts +655 -0
  1479. package/src/services/visual/typography-extractor.service.ts +767 -0
  1480. package/src/services/visual-extractor/color-extractor.service.ts +397 -0
  1481. package/src/services/visual-extractor/density-calculator.service.ts +616 -0
  1482. package/src/services/visual-extractor/gradient-detector.service.ts +1794 -0
  1483. package/src/services/visual-extractor/image-utils.ts +333 -0
  1484. package/src/services/visual-extractor/pixel-theme-detector.service.ts +487 -0
  1485. package/src/services/visual-extractor/theme-detector.service.ts +697 -0
  1486. package/src/services/visual-extractor/visual-decoration-detector.service.ts +800 -0
  1487. package/src/services/visual-extractor/visual-feature-merger.service.ts +831 -0
  1488. package/src/services/web-page.service.ts +275 -0
  1489. package/src/services/worker-constants.ts +52 -0
  1490. package/src/services/worker-db-save.service.ts +1098 -0
  1491. package/src/services/worker-memory-monitor.service.ts +126 -0
  1492. package/src/services/worker-memory-profile.ts +336 -0
  1493. package/src/services/worker-stall-recovery.service.ts +486 -0
  1494. package/src/services/worker-supervisor.service.ts +746 -0
  1495. package/src/tools/background/schemas.ts +93 -0
  1496. package/src/tools/background/search.tool.ts +484 -0
  1497. package/src/tools/brief/index.ts +76 -0
  1498. package/src/tools/brief/schemas.ts +247 -0
  1499. package/src/tools/brief/validate.handler.ts +278 -0
  1500. package/src/tools/brief/validate.service.ts +409 -0
  1501. package/src/tools/common/error-codes.ts +116 -0
  1502. package/src/tools/common/index.ts +25 -0
  1503. package/src/tools/index.ts +723 -0
  1504. package/src/tools/layout/batch-ingest.tool.ts +466 -0
  1505. package/src/tools/layout/index.ts +72 -0
  1506. package/src/tools/layout/ingest.tool.ts +1564 -0
  1507. package/src/tools/layout/inspect/index.ts +49 -0
  1508. package/src/tools/layout/inspect/inspect.schemas.ts +518 -0
  1509. package/src/tools/layout/inspect/inspect.tool.ts +844 -0
  1510. package/src/tools/layout/inspect/inspect.utils.ts +1278 -0
  1511. package/src/tools/layout/inspect/visual-extractors.schemas.ts +642 -0
  1512. package/src/tools/layout/inspect/visual-extractors.utils.ts +328 -0
  1513. package/src/tools/layout/schemas.ts +1670 -0
  1514. package/src/tools/layout/search.tool.ts +2088 -0
  1515. package/src/tools/layout/to-code.tool.ts +503 -0
  1516. package/src/tools/motion/analyze-frames.handler.ts +388 -0
  1517. package/src/tools/motion/analyze-frames.schema.ts +484 -0
  1518. package/src/tools/motion/css-mode-handler.ts +939 -0
  1519. package/src/tools/motion/detect.schemas.ts +2005 -0
  1520. package/src/tools/motion/detect.tool.ts +1914 -0
  1521. package/src/tools/motion/detection-modes.ts +480 -0
  1522. package/src/tools/motion/di-factories.ts +767 -0
  1523. package/src/tools/motion/index.ts +229 -0
  1524. package/src/tools/motion/pattern-converter.ts +619 -0
  1525. package/src/tools/motion/schemas.ts +12 -0
  1526. package/src/tools/motion/search.schemas.ts +694 -0
  1527. package/src/tools/motion/search.tool.ts +2518 -0
  1528. package/src/tools/motion/shared.schemas.ts +414 -0
  1529. package/src/tools/narrative/PAGE_ANALYZE_INTEGRATION.md +249 -0
  1530. package/src/tools/narrative/analyze.tool.ts +460 -0
  1531. package/src/tools/narrative/index.ts +133 -0
  1532. package/src/tools/narrative/schemas.ts +886 -0
  1533. package/src/tools/narrative/search.tool.ts +536 -0
  1534. package/src/tools/page/analyze.tool.ts +992 -0
  1535. package/src/tools/page/get-job-status.tool.ts +217 -0
  1536. package/src/tools/page/handlers/db-handler.ts +638 -0
  1537. package/src/tools/page/handlers/embedding-handler.ts +813 -0
  1538. package/src/tools/page/handlers/execution-status-tracker.ts +461 -0
  1539. package/src/tools/page/handlers/js-animation-handler.ts +1229 -0
  1540. package/src/tools/page/handlers/layout-handler.ts +1423 -0
  1541. package/src/tools/page/handlers/motion-handler.ts +1156 -0
  1542. package/src/tools/page/handlers/narrative-handler.ts +345 -0
  1543. package/src/tools/page/handlers/phased-db-handler.ts +186 -0
  1544. package/src/tools/page/handlers/phased-executor.ts +356 -0
  1545. package/src/tools/page/handlers/quality-handler.ts +114 -0
  1546. package/src/tools/page/handlers/result-builder.ts +551 -0
  1547. package/src/tools/page/handlers/retry-strategy.ts +223 -0
  1548. package/src/tools/page/handlers/sync-processing.ts +2084 -0
  1549. package/src/tools/page/handlers/timeout-utils.ts +835 -0
  1550. package/src/tools/page/handlers/types.ts +1333 -0
  1551. package/src/tools/page/handlers/video-handler.ts +299 -0
  1552. package/src/tools/page/handlers/webgl-animation-handler.ts +309 -0
  1553. package/src/tools/page/handlers/webgl-detector.ts +833 -0
  1554. package/src/tools/page/handlers/webgl-domains.ts +482 -0
  1555. package/src/tools/page/handlers/webgl-pre-detector.ts +308 -0
  1556. package/src/tools/page/index.ts +142 -0
  1557. package/src/tools/page/input.schemas.ts +945 -0
  1558. package/src/tools/page/output.schemas.ts +1636 -0
  1559. package/src/tools/page/schemas.ts +12 -0
  1560. package/src/tools/page/shared.schemas.ts +86 -0
  1561. package/src/tools/part/compare.tool.ts +542 -0
  1562. package/src/tools/part/inspect.tool.ts +400 -0
  1563. package/src/tools/part/search.tool.ts +470 -0
  1564. package/src/tools/preference/get.tool.ts +238 -0
  1565. package/src/tools/preference/hear.tool.ts +504 -0
  1566. package/src/tools/preference/index.ts +65 -0
  1567. package/src/tools/preference/reset.tool.ts +264 -0
  1568. package/src/tools/preference/schemas.ts +161 -0
  1569. package/src/tools/project-get.ts +194 -0
  1570. package/src/tools/project-list.ts +240 -0
  1571. package/src/tools/quality/batch-evaluate.tool.ts +480 -0
  1572. package/src/tools/quality/evaluate-engine.ts +1329 -0
  1573. package/src/tools/quality/evaluate.tool.ts +981 -0
  1574. package/src/tools/quality/get-job-status.tool.ts +344 -0
  1575. package/src/tools/quality/improvement-utils.ts +361 -0
  1576. package/src/tools/quality/index.ts +49 -0
  1577. package/src/tools/quality/schemas.ts +1114 -0
  1578. package/src/tools/responsive/schemas.ts +103 -0
  1579. package/src/tools/responsive/search.tool.ts +421 -0
  1580. package/src/tools/schemas/index.ts +67 -0
  1581. package/src/tools/schemas/layout-schemas.ts +334 -0
  1582. package/src/tools/schemas/project-schemas.ts +233 -0
  1583. package/src/tools/schemas/shared.ts +176 -0
  1584. package/src/tools/schemas/style-schemas.ts +74 -0
  1585. package/src/tools/style-get-palette.ts +344 -0
  1586. package/src/tools/system-health.ts +729 -0
  1587. package/src/transport.ts +54 -0
  1588. package/src/types/creative/index.ts +22 -0
  1589. package/src/types/creative/palette.ts +197 -0
  1590. package/src/types/reftrix-window.ts +175 -0
  1591. package/src/utils/actionable-warning.ts +997 -0
  1592. package/src/utils/blank-image-detector.ts +143 -0
  1593. package/src/utils/color.ts +534 -0
  1594. package/src/utils/deprecation-warning.ts +146 -0
  1595. package/src/utils/error-messages.ts +965 -0
  1596. package/src/utils/errors.ts +95 -0
  1597. package/src/utils/gpu-browser-args.ts +41 -0
  1598. package/src/utils/html-sanitizer.ts +753 -0
  1599. package/src/utils/logger.ts +292 -0
  1600. package/src/utils/mcp-response.ts +397 -0
  1601. package/src/utils/path-security.ts +412 -0
  1602. package/src/utils/prisma-wrapper-factory.ts +283 -0
  1603. package/src/utils/safe-parse-int.ts +74 -0
  1604. package/src/utils/url-normalizer.ts +115 -0
  1605. package/src/utils/url-validator.ts +615 -0
  1606. package/src/workers/batch-quality-worker.ts +419 -0
  1607. package/src/workers/page-analyze-worker.ts +1056 -0
  1608. package/src/workers/phases/phase-0-ingest.ts +249 -0
  1609. package/src/workers/phases/phase-1-layout.ts +522 -0
  1610. package/src/workers/phases/phase-2-motion.ts +674 -0
  1611. package/src/workers/phases/phase-3-quality.ts +293 -0
  1612. package/src/workers/phases/phase-4-narrative.ts +409 -0
  1613. package/src/workers/phases/phase-5-embedding.ts +1816 -0
  1614. package/src/workers/phases/types.ts +909 -0
@@ -0,0 +1,1181 @@
1
+ "use strict";
2
+ // SPDX-FileCopyrightText: 2026 TKMD and Reftrix Contributors
3
+ // SPDX-License-Identifier: AGPL-3.0-only
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.defaultAnalyzeLayout = defaultAnalyzeLayout;
6
+ /**
7
+ * page.analyze レイアウト分析ハンドラー
8
+ *
9
+ * analyze.tool.tsから抽出したレイアウト分析ロジック
10
+ * - LayoutAnalyzerService を使用したHTML解析
11
+ * - Vision API (Ollama + llama3.2-vision) による画像解析
12
+ * - Per-Section Vision分析
13
+ *
14
+ * @module tools/page/handlers/layout-handler
15
+ */
16
+ const uuid_1 = require("uuid");
17
+ const logger_1 = require("../../../utils/logger");
18
+ const layout_analyzer_service_1 = require("../../../services/page/layout-analyzer.service");
19
+ const section_screenshot_service_1 = require("../../../services/section-screenshot.service");
20
+ const schemas_1 = require("../schemas");
21
+ const section_postprocessor_service_1 = require("../../../services/page/section-postprocessor.service");
22
+ const types_1 = require("./types");
23
+ // Visual Feature Extraction Services (Phase 1 - Deterministic)
24
+ const color_extractor_service_1 = require("../../../services/visual-extractor/color-extractor.service");
25
+ const theme_detector_service_1 = require("../../../services/visual-extractor/theme-detector.service");
26
+ const density_calculator_service_1 = require("../../../services/visual-extractor/density-calculator.service");
27
+ const gradient_detector_service_1 = require("../../../services/visual-extractor/gradient-detector.service");
28
+ const visual_feature_merger_service_1 = require("../../../services/visual-extractor/visual-feature-merger.service");
29
+ // CSS Variable Extraction (v0.1.0)
30
+ const css_variable_extractor_service_1 = require("../../../services/visual/css-variable-extractor.service");
31
+ // Background Design Detection
32
+ const background_design_detector_service_1 = require("../../../services/background/background-design-detector.service");
33
+ // Vision CPU完走保証 (Phase 1-2 Services)
34
+ const hardware_detector_1 = require("../../../services/vision/hardware-detector");
35
+ const timeout_calculator_1 = require("../../../services/vision/timeout-calculator");
36
+ const image_optimizer_1 = require("../../../services/vision/image-optimizer");
37
+ const index_1 = require("../../../services/vision/index");
38
+ // =====================================================
39
+ // セクション統合処理(Phase 1: Vision統合)
40
+ // =====================================================
41
+ /**
42
+ * Vision検出セクション境界をHTML検出結果と統合
43
+ *
44
+ * HTML解析で検出できなかったビジュアルセクションをVision分析結果から追加する。
45
+ * - 既存セクションとの重複を除去(Y座標の50%以上重複で同一とみなす)
46
+ * - Vision専用セクションは新規IDで追加
47
+ * - 信頼度スコアを統合計算
48
+ *
49
+ * @param htmlSections - HTML解析で検出されたセクション
50
+ * @param visionBoundaries - Vision分析で検出されたセクション境界
51
+ * @returns 統合されたセクション配列
52
+ */
53
+ function mergeVisionDetectedSections(htmlSections, visionBoundaries) {
54
+ if (!visionBoundaries || !visionBoundaries.sections || visionBoundaries.sections.length === 0) {
55
+ if ((0, logger_1.isDevelopment)()) {
56
+ logger_1.logger.debug("[layout-handler] mergeVisionDetectedSections: No vision boundaries to merge");
57
+ }
58
+ return htmlSections;
59
+ }
60
+ const mergedSections = [...htmlSections];
61
+ let addedVisionSections = 0;
62
+ let boostedSections = 0;
63
+ for (const visionSection of visionBoundaries.sections) {
64
+ const visionStartY = visionSection.startY;
65
+ const visionEndY = visionSection.endY;
66
+ const visionHeight = visionEndY - visionStartY;
67
+ if (visionHeight <= 0) {
68
+ continue;
69
+ }
70
+ // 既存セクションとの重複チェック
71
+ let hasOverlap = false;
72
+ let bestOverlapIndex = -1;
73
+ let bestOverlapRatio = 0;
74
+ for (let i = 0; i < mergedSections.length; i++) {
75
+ const htmlSection = mergedSections[i];
76
+ if (!htmlSection?.position) {
77
+ continue;
78
+ }
79
+ const htmlStartY = htmlSection.position.startY;
80
+ const htmlEndY = htmlSection.position.endY;
81
+ // 重複領域を計算
82
+ const overlapStartY = Math.max(visionStartY, htmlStartY);
83
+ const overlapEndY = Math.min(visionEndY, htmlEndY);
84
+ const overlapHeight = Math.max(0, overlapEndY - overlapStartY);
85
+ // 重複率を計算(両方向で確認)
86
+ const overlapRatioVision = overlapHeight / visionHeight;
87
+ const overlapRatioHtml = overlapHeight / (htmlEndY - htmlStartY);
88
+ const maxOverlapRatio = Math.max(overlapRatioVision, overlapRatioHtml);
89
+ if (maxOverlapRatio > 0.5) {
90
+ hasOverlap = true;
91
+ if (maxOverlapRatio > bestOverlapRatio) {
92
+ bestOverlapRatio = maxOverlapRatio;
93
+ bestOverlapIndex = i;
94
+ }
95
+ }
96
+ }
97
+ if (hasOverlap && bestOverlapIndex >= 0) {
98
+ // 既存セクションと重複: 信頼度をブースト
99
+ const existingSection = mergedSections[bestOverlapIndex];
100
+ if (existingSection) {
101
+ // Vision検出で確認されたので信頼度を上げる(最大15%ブースト)
102
+ const boostAmount = Math.min(0.15, visionSection.confidence * 0.2);
103
+ existingSection.confidence = Math.min(1, existingSection.confidence + boostAmount);
104
+ // セクションタイプがunknownの場合はVisionの結果で更新
105
+ if (existingSection.type === "unknown" && visionSection.type !== "unknown") {
106
+ existingSection.type = visionSection.type;
107
+ }
108
+ boostedSections++;
109
+ }
110
+ }
111
+ else {
112
+ // 新規Vision専用セクションとして追加
113
+ const newSection = {
114
+ id: (0, uuid_1.v7)(),
115
+ type: visionSection.type || "unknown",
116
+ positionIndex: mergedSections.length,
117
+ confidence: visionSection.confidence * 0.85, // Vision検出は若干低めに設定
118
+ position: {
119
+ startY: visionStartY,
120
+ endY: visionEndY,
121
+ height: visionHeight,
122
+ },
123
+ // Vision検出セクションはHTMLスニペットなし(後で取得可能)
124
+ visionFeatures: {
125
+ success: true,
126
+ features: [
127
+ {
128
+ type: "section_boundaries",
129
+ confidence: visionSection.confidence,
130
+ description: `Vision-detected ${visionSection.type} section`,
131
+ },
132
+ ],
133
+ processingTimeMs: 0,
134
+ modelName: "llama3.2-vision",
135
+ },
136
+ };
137
+ mergedSections.push(newSection);
138
+ addedVisionSections++;
139
+ }
140
+ }
141
+ // 位置インデックスを再計算(Y座標順にソート)
142
+ mergedSections.sort((a, b) => {
143
+ const aStartY = a.position?.startY ?? 0;
144
+ const bStartY = b.position?.startY ?? 0;
145
+ return aStartY - bStartY;
146
+ });
147
+ mergedSections.forEach((section, index) => {
148
+ section.positionIndex = index;
149
+ });
150
+ if ((0, logger_1.isDevelopment)()) {
151
+ logger_1.logger.info("[layout-handler] mergeVisionDetectedSections: completed", {
152
+ originalHtmlSections: htmlSections.length,
153
+ visionSections: visionBoundaries.sections.length,
154
+ addedVisionSections,
155
+ boostedSections,
156
+ totalMergedSections: mergedSections.length,
157
+ });
158
+ }
159
+ return mergedSections;
160
+ }
161
+ // =====================================================
162
+ // Deterministic Visual Feature Extraction (Phase 1)
163
+ // =====================================================
164
+ /**
165
+ * スクリーンショットから決定論的なVisual Featuresを抽出
166
+ *
167
+ * 4つのサービスを使用して画像から特徴を抽出:
168
+ * - ColorExtractor: 支配色・アクセントカラー抽出
169
+ * - ThemeDetector: light/dark/mixed テーマ検出
170
+ * - DensityCalculator: コンテンツ密度・ホワイトスペース計算
171
+ * - GradientDetector: グラデーション検出
172
+ *
173
+ * @param screenshot - Base64エンコードされたスクリーンショット
174
+ * @param computedStyles - Computed Styles(Playwrightから取得、optional)
175
+ * @returns Visual Features(エラー時はundefined)
176
+ */
177
+ async function extractDeterministicVisualFeatures(screenshot, computedStyles) {
178
+ const startTime = Date.now();
179
+ if ((0, logger_1.isDevelopment)()) {
180
+ logger_1.logger.info("[layout-handler] extractDeterministicVisualFeatures: starting", {
181
+ screenshotSize: screenshot.base64.length,
182
+ mimeType: screenshot.mimeType,
183
+ });
184
+ }
185
+ try {
186
+ // Convert base64 to Buffer
187
+ const imageBuffer = Buffer.from(screenshot.base64, "base64");
188
+ // Create service instances
189
+ const colorExtractor = (0, color_extractor_service_1.createColorExtractorService)();
190
+ const themeDetector = (0, theme_detector_service_1.createThemeDetectorService)();
191
+ const densityCalculator = (0, density_calculator_service_1.createDensityCalculatorService)();
192
+ const gradientDetector = (0, gradient_detector_service_1.createGradientDetectorService)();
193
+ const visualFeatureMerger = (0, visual_feature_merger_service_1.createVisualFeatureMerger)();
194
+ // Execute all deterministic extractions in parallel
195
+ // Note: Theme detection uses computed styles if available for more accurate results
196
+ const [colorResult, themeResult, densityResult, gradientResult] = await Promise.all([
197
+ colorExtractor.extractColors(imageBuffer).catch((error) => {
198
+ if ((0, logger_1.isDevelopment)()) {
199
+ logger_1.logger.warn("[layout-handler] ColorExtractor failed", {
200
+ error: error instanceof Error ? error.message : "Unknown error",
201
+ });
202
+ }
203
+ return undefined;
204
+ }),
205
+ // Use detectThemeWithComputedStyles for more accurate theme detection
206
+ // This prioritizes computed backgroundColor values from Playwright over screenshot analysis
207
+ themeDetector.detectThemeWithComputedStyles(imageBuffer, computedStyles).catch((error) => {
208
+ if ((0, logger_1.isDevelopment)()) {
209
+ logger_1.logger.warn("[layout-handler] ThemeDetector failed", {
210
+ error: error instanceof Error ? error.message : "Unknown error",
211
+ });
212
+ }
213
+ return undefined;
214
+ }),
215
+ densityCalculator.calculateDensity(imageBuffer).catch((error) => {
216
+ if ((0, logger_1.isDevelopment)()) {
217
+ logger_1.logger.warn("[layout-handler] DensityCalculator failed", {
218
+ error: error instanceof Error ? error.message : "Unknown error",
219
+ });
220
+ }
221
+ return undefined;
222
+ }),
223
+ gradientDetector.detectGradient(imageBuffer).catch((error) => {
224
+ if ((0, logger_1.isDevelopment)()) {
225
+ logger_1.logger.warn("[layout-handler] GradientDetector failed", {
226
+ error: error instanceof Error ? error.message : "Unknown error",
227
+ });
228
+ }
229
+ return undefined;
230
+ }),
231
+ ]);
232
+ // Check if at least one extraction succeeded
233
+ if (!colorResult && !themeResult && !densityResult && !gradientResult) {
234
+ if ((0, logger_1.isDevelopment)()) {
235
+ logger_1.logger.warn("[layout-handler] All deterministic extractions failed");
236
+ }
237
+ return undefined;
238
+ }
239
+ // Prepare deterministic input for merger (used for metadata calculation)
240
+ const deterministicInput = {};
241
+ if (colorResult)
242
+ deterministicInput.colors = colorResult;
243
+ if (themeResult)
244
+ deterministicInput.theme = themeResult;
245
+ if (densityResult)
246
+ deterministicInput.density = densityResult;
247
+ // Merge deterministic results (no Vision AI input for now)
248
+ // Note: We use merger for metadata calculation, but build visualFeatures directly
249
+ // to avoid type incompatibility between MergedVisualFeatures and VisualFeatures
250
+ const mergedFeatures = await visualFeatureMerger.merge(deterministicInput, null);
251
+ // Build final VisualFeatures directly from service results
252
+ // This avoids type incompatibility issues between Merger types and Schema types
253
+ const visualFeatures = {
254
+ // Colors: Build from colorResult directly
255
+ colors: colorResult
256
+ ? {
257
+ dominant: colorResult.dominantColors,
258
+ accent: colorResult.accentColors,
259
+ palette: colorResult.colorPalette,
260
+ source: "deterministic",
261
+ confidence: 0.95,
262
+ }
263
+ : null,
264
+ // Theme: Build from themeResult with luminance
265
+ theme: themeResult
266
+ ? {
267
+ type: themeResult.theme,
268
+ backgroundColor: themeResult.backgroundColor,
269
+ textColor: themeResult.textColor,
270
+ contrastRatio: themeResult.contrastRatio,
271
+ luminance: themeResult.luminance,
272
+ source: "deterministic",
273
+ confidence: themeResult.confidence,
274
+ }
275
+ : null,
276
+ // Density: Build from densityResult directly
277
+ // Note: regions and metrics are optional in schema, and service types differ
278
+ // from schema types, so we only include the core fields
279
+ density: densityResult
280
+ ? {
281
+ contentDensity: densityResult.contentDensity,
282
+ whitespaceRatio: densityResult.whitespaceRatio,
283
+ visualBalance: densityResult.visualBalance,
284
+ source: "deterministic",
285
+ confidence: 0.95,
286
+ }
287
+ : null,
288
+ // Mood and BrandTone: null for now (Phase 2 Vision AI features)
289
+ mood: null,
290
+ brandTone: null,
291
+ // Metadata from merger
292
+ metadata: mergedFeatures.metadata,
293
+ // Gradient: Build from gradientResult directly
294
+ gradient: gradientResult
295
+ ? {
296
+ hasGradient: gradientResult.hasGradient,
297
+ gradients: gradientResult.gradients,
298
+ dominantGradientType: gradientResult.dominantGradientType,
299
+ confidence: gradientResult.confidence,
300
+ processingTimeMs: gradientResult.processingTimeMs,
301
+ source: "deterministic",
302
+ }
303
+ : null,
304
+ };
305
+ const processingTimeMs = Date.now() - startTime;
306
+ if ((0, logger_1.isDevelopment)()) {
307
+ logger_1.logger.info("[layout-handler] extractDeterministicVisualFeatures: completed", {
308
+ processingTimeMs,
309
+ hasColors: !!visualFeatures.colors,
310
+ hasTheme: !!visualFeatures.theme,
311
+ hasDensity: !!visualFeatures.density,
312
+ hasGradient: !!visualFeatures.gradient,
313
+ overallConfidence: visualFeatures.metadata?.overallConfidence,
314
+ });
315
+ }
316
+ return visualFeatures;
317
+ }
318
+ catch (error) {
319
+ if ((0, logger_1.isDevelopment)()) {
320
+ logger_1.logger.error("[layout-handler] extractDeterministicVisualFeatures failed", {
321
+ error: error instanceof Error ? error.message : "Unknown error",
322
+ processingTimeMs: Date.now() - startTime,
323
+ });
324
+ }
325
+ // Graceful degradation - return undefined, don't throw
326
+ return undefined;
327
+ }
328
+ }
329
+ /**
330
+ * ページ全体のVision分析を実行(セクション境界検出を含む)
331
+ *
332
+ * Vision CPU完走保証 Phase 3:
333
+ * - HardwareDetector: GPU/CPU自動判定(Ollama /api/ps API使用)
334
+ * - TimeoutCalculator: ハードウェア・画像サイズに基づく動的タイムアウト
335
+ * - ImageOptimizer: CPU推論向け画像最適化(リサイズ、圧縮)
336
+ * - Graceful Degradation: タイムアウト時はHTML解析のみで続行
337
+ *
338
+ * @param screenshot - スクリーンショットデータ
339
+ * @param result - レイアウト分析結果(更新される)
340
+ * @param visionStartTime - Vision分析開始時刻
341
+ * @param visionOptions - Vision CPU完走保証オプション(Phase 3)
342
+ * @param progressContext - MCP進捗報告コンテキスト(Phase 4)
343
+ * @returns セクション境界データ(HTMLセクションとのマージに使用)
344
+ */
345
+ async function executePageVisionAnalysis(screenshot, result, visionStartTime, visionOptions, progressContext) {
346
+ const analysisResult = {};
347
+ // Vision CPU完走保証: デフォルトオプション
348
+ const visionForceCpu = visionOptions?.visionForceCpu ?? false;
349
+ const visionEnableProgress = visionOptions?.visionEnableProgress ?? false;
350
+ const visionFallbackToHtmlOnly = visionOptions?.visionFallbackToHtmlOnly ?? true;
351
+ const visionTimeoutMs = visionOptions?.visionTimeoutMs;
352
+ // @ts-expect-error Phase 4予定: 最大画像サイズ制限で使用
353
+ const _visionImageMaxSize = visionOptions?.visionImageMaxSize;
354
+ // Vision CPU完走保証 Phase 4: 進捗報告セットアップ
355
+ let progressReporter = null;
356
+ if (visionEnableProgress && progressContext?.progressToken !== undefined) {
357
+ const progressCallback = (0, index_1.createMCPProgressCallback)({
358
+ progressToken: progressContext.progressToken,
359
+ sendNotification: progressContext.sendNotification,
360
+ });
361
+ if (progressCallback) {
362
+ // Vision分析の推定時間: CPU環境では180秒(3分)をデフォルトとする
363
+ const estimatedTotalMs = visionOptions?.visionTimeoutMs ?? 180000;
364
+ progressReporter = new index_1.ProgressReporter({ onProgress: progressCallback });
365
+ progressReporter.start(estimatedTotalMs);
366
+ }
367
+ }
368
+ try {
369
+ const { LlamaVisionAdapter } = await import("../../../services/vision-adapter/index.js");
370
+ const visionAdapter = new LlamaVisionAdapter();
371
+ const isAvailable = await visionAdapter.isAvailable();
372
+ if (isAvailable) {
373
+ let imageBuffer = Buffer.from(screenshot.base64, "base64");
374
+ const mimeType = screenshot.mimeType;
375
+ const originalImageSize = imageBuffer.length;
376
+ // ================================================================
377
+ // Vision CPU完走保証 Phase 1: ハードウェア検出
378
+ // ================================================================
379
+ const hardwareDetector = new hardware_detector_1.HardwareDetector();
380
+ let hardwareType = hardware_detector_1.HardwareType.CPU; // デフォルトはCPU(安全側)
381
+ let hardwareInfo = null;
382
+ try {
383
+ hardwareInfo = await hardwareDetector.detect();
384
+ hardwareType = visionForceCpu ? hardware_detector_1.HardwareType.CPU : hardwareInfo.type;
385
+ if ((0, logger_1.isDevelopment)()) {
386
+ logger_1.logger.info("[layout-handler] Hardware detection completed", {
387
+ detectedType: hardwareInfo.type,
388
+ effectiveType: hardwareType,
389
+ forceCpu: visionForceCpu,
390
+ vramBytes: hardwareInfo.vramBytes,
391
+ isGpuAvailable: hardwareInfo.isGpuAvailable,
392
+ });
393
+ }
394
+ }
395
+ catch (hwError) {
396
+ // ハードウェア検出失敗時はCPUと仮定(安全側)
397
+ if ((0, logger_1.isDevelopment)()) {
398
+ logger_1.logger.warn("[layout-handler] Hardware detection failed, assuming CPU", {
399
+ error: hwError instanceof Error ? hwError.message : "Unknown error",
400
+ });
401
+ }
402
+ }
403
+ // Phase 4: 進捗報告 - ハードウェア検出完了 (5%)
404
+ if (progressReporter) {
405
+ progressReporter.updatePhase("preparing");
406
+ progressReporter.updateProgress(5);
407
+ }
408
+ // ================================================================
409
+ // Vision CPU完走保証 Phase 1: タイムアウト計算
410
+ // ================================================================
411
+ const timeoutCalculator = new timeout_calculator_1.TimeoutCalculator();
412
+ const calculatedTimeout = visionTimeoutMs ?? timeoutCalculator.calculate(hardwareType, originalImageSize);
413
+ if ((0, logger_1.isDevelopment)()) {
414
+ logger_1.logger.info("[layout-handler] Vision timeout calculated", {
415
+ hardwareType,
416
+ imageSizeBytes: originalImageSize,
417
+ calculatedTimeoutMs: calculatedTimeout,
418
+ userOverride: visionTimeoutMs !== undefined,
419
+ formatted: timeoutCalculator.formatTimeout(calculatedTimeout),
420
+ });
421
+ }
422
+ // ================================================================
423
+ // Vision CPU完走保証 Phase 2: 画像最適化(CPU時のみ)
424
+ // ================================================================
425
+ const imageOptimizer = new image_optimizer_1.ImageOptimizer();
426
+ let optimizationApplied = false;
427
+ if (hardwareType === hardware_detector_1.HardwareType.CPU) {
428
+ try {
429
+ const optimizeResult = await imageOptimizer.optimizeForCPU(imageBuffer, {
430
+ hardwareType,
431
+ });
432
+ if (!optimizeResult.skipped) {
433
+ // Buffer型の互換性を確保するため、新しいBufferとしてコピー
434
+ imageBuffer = Buffer.from(optimizeResult.buffer);
435
+ optimizationApplied = true;
436
+ if ((0, logger_1.isDevelopment)()) {
437
+ logger_1.logger.info("[layout-handler] Image optimization applied", {
438
+ originalSize: optimizeResult.originalSizeBytes,
439
+ optimizedSize: optimizeResult.optimizedSizeBytes,
440
+ compressionRatio: optimizeResult.compressionRatio.toFixed(2),
441
+ dimensions: optimizeResult.dimensions,
442
+ processingTimeMs: optimizeResult.processingTimeMs,
443
+ });
444
+ }
445
+ }
446
+ else {
447
+ if ((0, logger_1.isDevelopment)()) {
448
+ logger_1.logger.debug("[layout-handler] Image optimization skipped", {
449
+ reason: optimizeResult.reason,
450
+ });
451
+ }
452
+ }
453
+ }
454
+ catch (optError) {
455
+ // 最適化失敗時は元の画像を使用
456
+ if ((0, logger_1.isDevelopment)()) {
457
+ logger_1.logger.warn("[layout-handler] Image optimization failed, using original", {
458
+ error: optError instanceof Error ? optError.message : "Unknown error",
459
+ });
460
+ }
461
+ }
462
+ }
463
+ // Phase 4: 進捗報告 - 画像最適化完了 (20%)
464
+ if (progressReporter) {
465
+ progressReporter.updatePhase("optimizing");
466
+ progressReporter.updateProgress(20);
467
+ }
468
+ // ================================================================
469
+ // Vision分析実行(タイムアウト付き)
470
+ // ================================================================
471
+ const analyzeWithTimeout = async () => {
472
+ return new Promise((resolve, reject) => {
473
+ const timeoutId = setTimeout(() => {
474
+ reject(new Error(`Vision analysis timeout after ${calculatedTimeout}ms (${timeoutCalculator.formatTimeout(calculatedTimeout)})`));
475
+ }, calculatedTimeout);
476
+ visionAdapter
477
+ .analyze({ imageBuffer, mimeType })
478
+ .then((result) => {
479
+ clearTimeout(timeoutId);
480
+ resolve(result);
481
+ })
482
+ .catch((error) => {
483
+ clearTimeout(timeoutId);
484
+ reject(error);
485
+ });
486
+ });
487
+ };
488
+ // Phase 4: 進捗報告 - Vision分析開始 (30%)
489
+ if (progressReporter) {
490
+ progressReporter.updatePhase("analyzing");
491
+ progressReporter.updateProgress(30);
492
+ }
493
+ try {
494
+ const visionResult = await analyzeWithTimeout();
495
+ const visionProcessingTimeMs = Date.now() - visionStartTime;
496
+ // Phase 4: 進捗報告 - Vision分析完了 (70%)
497
+ if (progressReporter) {
498
+ progressReporter.updateProgress(70);
499
+ }
500
+ result.visionFeatures = {
501
+ success: visionResult.success,
502
+ features: visionResult.features.map((f) => {
503
+ const desc = "description" in f.data
504
+ ? f.data.description
505
+ : undefined;
506
+ const feature = {
507
+ type: f.type,
508
+ confidence: f.confidence,
509
+ };
510
+ if (desc !== undefined) {
511
+ feature.description = desc;
512
+ }
513
+ return feature;
514
+ }),
515
+ processingTimeMs: visionProcessingTimeMs,
516
+ modelName: visionResult.modelName,
517
+ // Vision CPU完走保証: メタ情報を追加
518
+ hardwareType,
519
+ timeoutMs: calculatedTimeout,
520
+ optimizationApplied,
521
+ };
522
+ result.textRepresentation = visionAdapter.generateTextRepresentation(visionResult);
523
+ if ((0, logger_1.isDevelopment)()) {
524
+ logger_1.logger.info("[layout-handler] Vision analysis completed", {
525
+ featureCount: visionResult.features.length,
526
+ processingTimeMs: visionProcessingTimeMs,
527
+ textRepresentationLength: result.textRepresentation?.length,
528
+ hardwareType,
529
+ optimizationApplied,
530
+ });
531
+ }
532
+ // Reftrix専用: セクション境界検出
533
+ try {
534
+ const boundaryStartTime = Date.now();
535
+ const boundaryResult = await visionAdapter.detectSectionBoundaries({
536
+ imageBuffer,
537
+ mimeType,
538
+ });
539
+ if (boundaryResult.success && boundaryResult.data) {
540
+ analysisResult.sectionBoundaries = boundaryResult.data;
541
+ if ((0, logger_1.isDevelopment)()) {
542
+ logger_1.logger.info("[layout-handler] Section boundary detection completed", {
543
+ sectionCount: boundaryResult.data.sections?.length ?? 0,
544
+ processingTimeMs: Date.now() - boundaryStartTime,
545
+ });
546
+ }
547
+ }
548
+ else {
549
+ if ((0, logger_1.isDevelopment)()) {
550
+ logger_1.logger.warn("[layout-handler] Section boundary detection failed", {
551
+ error: boundaryResult.error,
552
+ });
553
+ }
554
+ }
555
+ }
556
+ catch (boundaryError) {
557
+ if ((0, logger_1.isDevelopment)()) {
558
+ logger_1.logger.warn("[layout-handler] Section boundary detection error (non-critical)", {
559
+ error: boundaryError instanceof Error ? boundaryError.message : "Unknown error",
560
+ });
561
+ }
562
+ // セクション境界検出エラーは非クリティカル - 続行
563
+ }
564
+ // Phase 4: 進捗報告 - セクション境界検出完了 (90%)
565
+ if (progressReporter) {
566
+ progressReporter.updatePhase("completing");
567
+ progressReporter.updateProgress(90);
568
+ }
569
+ // Phase 4: 進捗報告 - 完了 (100%)
570
+ if (progressReporter) {
571
+ progressReporter.complete();
572
+ }
573
+ }
574
+ catch (visionError) {
575
+ // ================================================================
576
+ // Vision CPU完走保証 Phase 3: Graceful Degradation
577
+ // ================================================================
578
+ const isTimeout = visionError instanceof Error && visionError.message.includes("timeout");
579
+ if ((0, logger_1.isDevelopment)()) {
580
+ logger_1.logger.warn("[layout-handler] Vision analysis failed", {
581
+ error: visionError instanceof Error ? visionError.message : "Unknown error",
582
+ isTimeout,
583
+ fallbackEnabled: visionFallbackToHtmlOnly,
584
+ });
585
+ }
586
+ if (visionFallbackToHtmlOnly) {
587
+ // Graceful Degradation: HTML解析のみで続行
588
+ result.visionFeatures = {
589
+ success: false,
590
+ features: [],
591
+ error: visionError instanceof Error ? visionError.message : "Vision analysis failed",
592
+ processingTimeMs: Date.now() - visionStartTime,
593
+ modelName: "llama3.2-vision",
594
+ // Vision CPU完走保証: フォールバック情報
595
+ fallback: true,
596
+ fallbackReason: isTimeout ? "timeout" : "error",
597
+ hardwareType,
598
+ timeoutMs: calculatedTimeout,
599
+ };
600
+ // Phase 4: 進捗報告 - フォールバック完了 (100%)
601
+ if (progressReporter) {
602
+ progressReporter.updatePhase("completing");
603
+ progressReporter.complete();
604
+ }
605
+ if ((0, logger_1.isDevelopment)()) {
606
+ logger_1.logger.info("[layout-handler] Graceful Degradation: continuing with HTML analysis only");
607
+ }
608
+ }
609
+ else {
610
+ // フォールバック無効: エラーを再スロー
611
+ throw visionError;
612
+ }
613
+ }
614
+ }
615
+ else {
616
+ if ((0, logger_1.isDevelopment)()) {
617
+ logger_1.logger.warn("[layout-handler] VisionAdapter not available, skipping Vision analysis");
618
+ }
619
+ result.visionFeatures = {
620
+ success: false,
621
+ features: [],
622
+ error: "Ollama service unavailable. Please ensure Ollama is running with llama3.2-vision model.",
623
+ processingTimeMs: Date.now() - visionStartTime,
624
+ modelName: "llama3.2-vision",
625
+ };
626
+ // Phase 4: 進捗報告 - Ollama利用不可(100%で完了扱い)
627
+ if (progressReporter) {
628
+ progressReporter.updatePhase("completing");
629
+ progressReporter.complete();
630
+ }
631
+ }
632
+ }
633
+ catch (visionError) {
634
+ if ((0, logger_1.isDevelopment)()) {
635
+ logger_1.logger.error("[layout-handler] Vision analysis failed", { error: visionError });
636
+ }
637
+ result.visionFeatures = {
638
+ success: false,
639
+ features: [],
640
+ error: visionError instanceof Error ? visionError.message : "Vision analysis failed",
641
+ processingTimeMs: Date.now() - visionStartTime,
642
+ modelName: "llama3.2-vision",
643
+ };
644
+ // Phase 4: 進捗報告 - エラー終了(100%で完了扱い)
645
+ if (progressReporter) {
646
+ progressReporter.updatePhase("completing");
647
+ progressReporter.complete();
648
+ }
649
+ }
650
+ return analysisResult;
651
+ }
652
+ /**
653
+ * Per-Section Vision分析を実行
654
+ */
655
+ async function executePerSectionVisionAnalysis(screenshot, sections, options) {
656
+ const perSectionStartTime = Date.now();
657
+ if ((0, logger_1.isDevelopment)()) {
658
+ logger_1.logger.info("[layout-handler] Per-section Vision analysis: starting", {
659
+ sectionCount: sections.length,
660
+ batchSize: options?.visionBatchSize ?? 3,
661
+ });
662
+ }
663
+ try {
664
+ const screenshotService = new section_screenshot_service_1.SectionScreenshotService();
665
+ const batchSize = options?.visionBatchSize ?? 3;
666
+ // セクション境界情報を収集
667
+ const allSectionsWithBounds = sections
668
+ .filter((s) => s.position?.startY !== undefined && s.position?.endY !== undefined)
669
+ .map((s) => ({
670
+ id: s.id,
671
+ type: s.type,
672
+ bounds: {
673
+ startY: s.position.startY,
674
+ endY: s.position.endY,
675
+ height: s.position.endY - s.position.startY,
676
+ },
677
+ }));
678
+ // メモリ保護: 最大セクション数に制限
679
+ const sectionsWithBounds = allSectionsWithBounds.slice(0, types_1.MAX_SECTIONS_FOR_PER_SECTION_VISION);
680
+ if (allSectionsWithBounds.length > types_1.MAX_SECTIONS_FOR_PER_SECTION_VISION) {
681
+ logger_1.logger.warn("[layout-handler] Per-section Vision analysis: section count exceeded limit", {
682
+ totalSections: allSectionsWithBounds.length,
683
+ processedSections: sectionsWithBounds.length,
684
+ maxSections: types_1.MAX_SECTIONS_FOR_PER_SECTION_VISION,
685
+ skippedSections: allSectionsWithBounds.length - sectionsWithBounds.length,
686
+ });
687
+ }
688
+ if (sectionsWithBounds.length > 0) {
689
+ if ((0, logger_1.isDevelopment)()) {
690
+ logger_1.logger.debug("[layout-handler] Per-section Vision analysis: extracting sections", {
691
+ sectionsWithBoundsCount: sectionsWithBounds.length,
692
+ });
693
+ }
694
+ const extractResult = await screenshotService.extractMultipleSections(screenshot.base64, sectionsWithBounds.map((s) => ({ id: s.id, bounds: s.bounds })));
695
+ if ((0, logger_1.isDevelopment)()) {
696
+ logger_1.logger.debug("[layout-handler] Per-section Vision analysis: extraction complete", {
697
+ successCount: extractResult.successes.length,
698
+ errorCount: extractResult.errors.length,
699
+ });
700
+ }
701
+ const { LlamaVisionAdapter } = await import("../../../services/vision-adapter/index.js");
702
+ const visionAdapter = new LlamaVisionAdapter();
703
+ const isVisionAvailable = await visionAdapter.isAvailable();
704
+ if (isVisionAvailable) {
705
+ const totalBatches = Math.ceil(extractResult.successes.length / batchSize);
706
+ for (let i = 0; i < extractResult.successes.length; i += batchSize) {
707
+ const batch = extractResult.successes.slice(i, i + batchSize);
708
+ const batchIndex = Math.floor(i / batchSize) + 1;
709
+ if ((0, logger_1.isDevelopment)()) {
710
+ logger_1.logger.info(`[layout-handler] Per-section Vision analysis: batch ${batchIndex}/${totalBatches}`, {
711
+ batchSectionIds: batch.map((b) => b.sectionId),
712
+ });
713
+ }
714
+ const visionResults = await Promise.allSettled(batch.map((ss) => {
715
+ const sectionInfo = sectionsWithBounds.find((s) => s.id === ss.sectionId);
716
+ const sectionType = sectionInfo?.type;
717
+ if (sectionType !== undefined) {
718
+ return visionAdapter.analyzeSection({
719
+ imageBuffer: ss.imageBuffer,
720
+ mimeType: "image/png",
721
+ features: ["layout_structure", "color_palette", "whitespace"],
722
+ sectionId: ss.sectionId,
723
+ sectionTypeHint: sectionType,
724
+ });
725
+ }
726
+ return visionAdapter.analyzeSection({
727
+ imageBuffer: ss.imageBuffer,
728
+ mimeType: "image/png",
729
+ features: ["layout_structure", "color_palette", "whitespace"],
730
+ sectionId: ss.sectionId,
731
+ });
732
+ }));
733
+ // 結果をセクションに紐付け
734
+ for (let j = 0; j < batch.length; j++) {
735
+ const batchItem = batch[j];
736
+ if (!batchItem)
737
+ continue;
738
+ const sectionIndex = sections.findIndex((s) => s.id === batchItem.sectionId);
739
+ if (sectionIndex >= 0) {
740
+ const currentSection = sections[sectionIndex];
741
+ if (!currentSection)
742
+ continue;
743
+ const visionResult = visionResults[j];
744
+ if (!visionResult)
745
+ continue;
746
+ if (visionResult.status === "fulfilled") {
747
+ const vr = visionResult.value;
748
+ currentSection.visionFeatures = {
749
+ success: vr.success,
750
+ features: vr.features.map((f) => {
751
+ const feature = {
752
+ type: f.type,
753
+ confidence: f.confidence,
754
+ };
755
+ const featureData = f.data;
756
+ if (featureData &&
757
+ typeof featureData === "object" &&
758
+ "description" in featureData) {
759
+ feature.description = String(featureData.description);
760
+ }
761
+ return feature;
762
+ }),
763
+ textRepresentation: visionAdapter.generateSectionTextRepresentation(vr, currentSection.type),
764
+ processingTimeMs: vr.processingTimeMs,
765
+ modelName: vr.modelName,
766
+ sectionBounds: batchItem.bounds,
767
+ };
768
+ }
769
+ else if (visionResult.status === "rejected") {
770
+ currentSection.visionFeatures = {
771
+ success: false,
772
+ features: [],
773
+ error: String(visionResult.reason),
774
+ processingTimeMs: 0,
775
+ modelName: "llama3.2-vision",
776
+ };
777
+ }
778
+ }
779
+ }
780
+ }
781
+ }
782
+ else {
783
+ if ((0, logger_1.isDevelopment)()) {
784
+ logger_1.logger.warn("[layout-handler] Per-section Vision analysis: Ollama not available");
785
+ }
786
+ for (const section of sections) {
787
+ if (section.position) {
788
+ section.visionFeatures = {
789
+ success: false,
790
+ features: [],
791
+ error: "Ollama service unavailable for per-section Vision analysis.",
792
+ processingTimeMs: 0,
793
+ modelName: "llama3.2-vision",
794
+ };
795
+ }
796
+ }
797
+ }
798
+ // 切り出し失敗したセクションの処理
799
+ for (const extractError of extractResult.errors) {
800
+ const sectionIndex = sections.findIndex((s) => s.id === extractError.sectionId);
801
+ if (sectionIndex >= 0) {
802
+ const failedSection = sections[sectionIndex];
803
+ if (failedSection) {
804
+ failedSection.visionFeatures = {
805
+ success: false,
806
+ features: [],
807
+ error: `Screenshot extraction failed: ${extractError.errorMessage}`,
808
+ processingTimeMs: 0,
809
+ modelName: "llama3.2-vision",
810
+ };
811
+ }
812
+ }
813
+ }
814
+ }
815
+ if ((0, logger_1.isDevelopment)()) {
816
+ const perSectionProcessingTime = Date.now() - perSectionStartTime;
817
+ const successCount = sections.filter((s) => s.visionFeatures?.success).length;
818
+ logger_1.logger.info("[layout-handler] Per-section Vision analysis: completed", {
819
+ totalSections: sections.length,
820
+ processedSections: sectionsWithBounds.length,
821
+ successCount,
822
+ processingTimeMs: perSectionProcessingTime,
823
+ });
824
+ }
825
+ }
826
+ catch (perSectionError) {
827
+ if ((0, logger_1.isDevelopment)()) {
828
+ logger_1.logger.error("[layout-handler] Per-section Vision analysis failed", {
829
+ error: perSectionError instanceof Error ? perSectionError.message : "Unknown error",
830
+ });
831
+ }
832
+ for (const section of sections) {
833
+ if (section.position && !section.visionFeatures) {
834
+ section.visionFeatures = {
835
+ success: false,
836
+ features: [],
837
+ error: `Per-section analysis failed: ${perSectionError instanceof Error ? perSectionError.message : "Unknown error"}`,
838
+ processingTimeMs: 0,
839
+ modelName: "llama3.2-vision",
840
+ };
841
+ }
842
+ }
843
+ }
844
+ }
845
+ // =====================================================
846
+ // メインエクスポート関数
847
+ // =====================================================
848
+ /**
849
+ * デフォルトのレイアウト分析
850
+ *
851
+ * @reftrixmcp/webdesign-core の SectionDetector を使用した高精度なセクション検出
852
+ * - セマンティック要素(header, nav, main, section, article, aside, footer)の検出
853
+ * - class/id名ベースのヒューリスティックによるセクションタイプ推定
854
+ * - グリッド/フレックスレイアウトの検出
855
+ * - タイポグラフィ・色情報の抽出
856
+ * - Vision API解析(useVision=true時、スクリーンショートから直接セクション検出)
857
+ * - Computed Stylesのインラインスタイル適用(computedStyles指定時)
858
+ *
859
+ * @param html - 分析対象のHTML
860
+ * @param options - レイアウト分析オプション
861
+ * @param screenshot - Vision解析用スクリーンショート(useVision=true時に使用)
862
+ * @param computedStyles - Computed Styles配列(PageIngestAdapterから取得、htmlSnippetにインラインスタイルとして適用)
863
+ * @param baseUrl - ベースURL(外部CSS解決用)
864
+ * @param preExtractedCssUrls - サニタイズ前のHTMLから抽出した外部CSS URL配列(DOMPurifyで<link>タグが除去される問題の回避策)
865
+ * @param visionOptions - Vision CPU完走保証オプション
866
+ * @param progressContext - MCP進捗報告コンテキスト(Vision CPU完走保証 Phase 4)
867
+ * @param webPageId - 外部から渡されたwebPageId(asyncモードで一貫性を保証するため)
868
+ */
869
+ async function defaultAnalyzeLayout(html, options, screenshot, computedStyles, baseUrl, preExtractedCssUrls, visionOptions, progressContext, webPageId) {
870
+ const startTime = Date.now();
871
+ if ((0, logger_1.isDevelopment)()) {
872
+ logger_1.logger.debug("[layout-handler] defaultAnalyzeLayout called", {
873
+ htmlLength: html.length,
874
+ hasOptions: !!options,
875
+ useVision: options?.useVision,
876
+ hasScreenshot: !!screenshot,
877
+ hasComputedStyles: !!computedStyles,
878
+ computedStylesCount: computedStyles?.length ?? 0,
879
+ hasBaseUrl: !!baseUrl,
880
+ });
881
+ }
882
+ try {
883
+ const useVision = options?.useVision === true;
884
+ const shouldFetchExternalCss = options?.fetchExternalCss ?? true;
885
+ // LayoutAnalyzerService を使用してセクション検出(HTML解析)
886
+ const layoutAnalyzer = (0, layout_analyzer_service_1.getLayoutAnalyzerService)();
887
+ const analysisResult = await layoutAnalyzer.analyze(html, {
888
+ includeContent: true,
889
+ includeStyles: true,
890
+ ...(shouldFetchExternalCss &&
891
+ baseUrl && {
892
+ externalCss: {
893
+ fetchExternalCss: true,
894
+ baseUrl,
895
+ // DOMPurifyで<link>タグが除去される問題の回避策
896
+ // サニタイズ前のHTMLから抽出したURLを使用
897
+ ...(preExtractedCssUrls &&
898
+ preExtractedCssUrls.length > 0 && {
899
+ preExtractedUrls: preExtractedCssUrls,
900
+ }),
901
+ },
902
+ }),
903
+ // Computed StylesをhtmlSnippetにインラインスタイルとして適用
904
+ ...(computedStyles && computedStyles.length > 0 && { computedStyles }),
905
+ });
906
+ // セクションを LayoutServiceResult 形式に変換
907
+ const sections = analysisResult.sections.map((section, index) => {
908
+ const result = {
909
+ id: section.id,
910
+ type: section.type,
911
+ positionIndex: index,
912
+ confidence: section.confidence,
913
+ };
914
+ const headingText = section.content?.headings?.[0]?.text;
915
+ if (headingText !== undefined) {
916
+ result.heading = headingText;
917
+ }
918
+ if (section.htmlSnippet !== undefined) {
919
+ result.htmlSnippet = section.htmlSnippet;
920
+ }
921
+ if (section.position) {
922
+ result.position = {
923
+ startY: section.position.startY,
924
+ endY: section.position.endY,
925
+ height: section.position.height,
926
+ };
927
+ }
928
+ return result;
929
+ });
930
+ const result = {
931
+ success: true,
932
+ sectionCount: analysisResult.sectionCount,
933
+ sectionTypes: analysisResult.sectionTypes,
934
+ processingTimeMs: analysisResult.processingTimeMs,
935
+ };
936
+ // cssSnippetが存在する場合は結果に含める(exactOptionalPropertyTypes対応)
937
+ if (analysisResult.cssSnippet !== undefined && analysisResult.cssSnippet.length > 0) {
938
+ result.cssSnippet = analysisResult.cssSnippet;
939
+ if ((0, logger_1.isDevelopment)()) {
940
+ logger_1.logger.debug("[layout-handler] CSS snippet extracted", {
941
+ cssSnippetLength: analysisResult.cssSnippet.length,
942
+ });
943
+ }
944
+ }
945
+ if (analysisResult.externalCssContent !== undefined &&
946
+ analysisResult.externalCssContent.length > 0) {
947
+ result.externalCssContent = analysisResult.externalCssContent;
948
+ // v0.1.0: CSS変数抽出(外部CSSが取得された場合)
949
+ // Webサイト構築時の参考データとして活用可能
950
+ try {
951
+ const cssVariableExtractor = (0, css_variable_extractor_service_1.createCSSVariableExtractorService)();
952
+ const combinedCss = [analysisResult.cssSnippet, analysisResult.externalCssContent]
953
+ .filter(Boolean)
954
+ .join("\n");
955
+ const cssVariablesResult = cssVariableExtractor.extractFromCSS(combinedCss);
956
+ if (cssVariablesResult.variables.length > 0 || cssVariablesResult.clampValues.length > 0) {
957
+ result.cssVariables = cssVariablesResult;
958
+ if ((0, logger_1.isDevelopment)()) {
959
+ logger_1.logger.info("[layout-handler] CSS variables extracted", {
960
+ variableCount: cssVariablesResult.variables.length,
961
+ clampValueCount: cssVariablesResult.clampValues.length,
962
+ calcExpressionCount: cssVariablesResult.calcExpressions.length,
963
+ designTokensFramework: cssVariablesResult.designTokens.framework,
964
+ processingTimeMs: cssVariablesResult.processingTimeMs,
965
+ });
966
+ }
967
+ }
968
+ }
969
+ catch (error) {
970
+ if ((0, logger_1.isDevelopment)()) {
971
+ logger_1.logger.warn("[layout-handler] CSS variable extraction failed", { error });
972
+ }
973
+ // エラー時はcssVariablesを省略(Graceful Degradation)
974
+ }
975
+ }
976
+ if (analysisResult.externalCssMeta !== undefined) {
977
+ result.externalCssMeta = analysisResult.externalCssMeta;
978
+ }
979
+ // cssFrameworkが存在する場合は結果に含める(exactOptionalPropertyTypes対応)
980
+ if ((0, logger_1.isDevelopment)()) {
981
+ logger_1.logger.debug("[layout-handler] Checking cssFramework from analysisResult", {
982
+ hasCssFramework: analysisResult.cssFramework !== undefined,
983
+ cssFrameworkValue: analysisResult.cssFramework,
984
+ });
985
+ }
986
+ if (analysisResult.cssFramework !== undefined) {
987
+ result.cssFramework = {
988
+ framework: analysisResult.cssFramework.framework,
989
+ confidence: analysisResult.cssFramework.confidence,
990
+ evidence: analysisResult.cssFramework.evidence,
991
+ };
992
+ if ((0, logger_1.isDevelopment)()) {
993
+ logger_1.logger.debug("[layout-handler] CSS framework detected and set", {
994
+ framework: analysisResult.cssFramework.framework,
995
+ confidence: analysisResult.cssFramework.confidence,
996
+ evidenceCount: analysisResult.cssFramework.evidence.length,
997
+ resultCssFramework: result.cssFramework,
998
+ });
999
+ }
1000
+ }
1001
+ else {
1002
+ if ((0, logger_1.isDevelopment)()) {
1003
+ logger_1.logger.warn("[layout-handler] cssFramework is undefined in analysisResult");
1004
+ }
1005
+ }
1006
+ // Background Design Detection
1007
+ // CSSコンテンツから背景デザインパターンを検出(Graceful Degradation)
1008
+ let backgroundDesigns = [];
1009
+ try {
1010
+ const bgDetector = (0, background_design_detector_service_1.createBackgroundDesignDetectorService)();
1011
+ const bgResult = bgDetector.detect({
1012
+ cssContent: analysisResult.cssSnippet ?? "",
1013
+ htmlContent: html,
1014
+ externalCssContent: analysisResult.externalCssContent ?? "",
1015
+ });
1016
+ backgroundDesigns = bgResult.backgrounds;
1017
+ if ((0, logger_1.isDevelopment)() && backgroundDesigns.length > 0) {
1018
+ logger_1.logger.info("[layout-handler] Background designs detected", {
1019
+ count: backgroundDesigns.length,
1020
+ types: backgroundDesigns.map((bg) => bg.designType),
1021
+ processingTimeMs: bgResult.processingTimeMs.toFixed(1),
1022
+ });
1023
+ }
1024
+ }
1025
+ catch (bgError) {
1026
+ if ((0, logger_1.isDevelopment)()) {
1027
+ logger_1.logger.warn("[layout-handler] Background design detection failed", {
1028
+ error: bgError instanceof Error ? bgError.message : String(bgError),
1029
+ });
1030
+ }
1031
+ // Graceful Degradation: 背景デザイン検出失敗はpage.analyzeを中断しない
1032
+ }
1033
+ // 検出された背景デザインを結果に含める
1034
+ if (backgroundDesigns.length > 0) {
1035
+ result.backgroundDesigns = backgroundDesigns;
1036
+ }
1037
+ // Vision解析実行(useVision=true かつ スクリーンショートがある場合)
1038
+ let visionAnalysisResult = {};
1039
+ if (useVision && screenshot) {
1040
+ const visionStartTime = Date.now();
1041
+ if ((0, logger_1.isDevelopment)()) {
1042
+ logger_1.logger.info("[layout-handler] Starting Vision analysis", {
1043
+ screenshotSize: screenshot.base64.length,
1044
+ mimeType: screenshot.mimeType,
1045
+ });
1046
+ }
1047
+ visionAnalysisResult = await executePageVisionAnalysis(screenshot, result, visionStartTime, visionOptions, progressContext);
1048
+ }
1049
+ else if (useVision && !screenshot) {
1050
+ if ((0, logger_1.isDevelopment)()) {
1051
+ logger_1.logger.warn("[layout-handler] useVision=true but no screenshot available, falling back to HTML analysis");
1052
+ }
1053
+ result.visionFeatures = {
1054
+ success: false,
1055
+ features: [],
1056
+ error: "Screenshot not available for Vision analysis. Falling back to HTML analysis.",
1057
+ processingTimeMs: 0,
1058
+ modelName: "llama3.2-vision",
1059
+ };
1060
+ }
1061
+ // Phase 1: Vision検出セクション境界とHTML検出セクションをマージ
1062
+ const visionMergedSections = mergeVisionDetectedSections(sections, visionAnalysisResult.sectionBoundaries);
1063
+ // Phase 1: Section Merge Post-Processor(過剰分割修正)
1064
+ // JSDOM cannot interpret CSS layout (flexbox, grid, inline-block) → over-segmentation.
1065
+ // Post-processor merges consecutive same-type sections and absorbs empty content.
1066
+ const postProcessResult = (0, section_postprocessor_service_1.postProcessSections)(visionMergedSections);
1067
+ const mergedSections = postProcessResult.sections;
1068
+ if (postProcessResult.stats.mergedGroups > 0 ||
1069
+ postProcessResult.stats.absorbedCount > 0 ||
1070
+ postProcessResult.stats.splitCount > 0) {
1071
+ if ((0, logger_1.isDevelopment)()) {
1072
+ logger_1.logger.info("[layout-handler] Section post-processing applied", postProcessResult.stats);
1073
+ }
1074
+ }
1075
+ // マージ結果を更新(sectionCount, sectionTypesも更新)
1076
+ if (mergedSections.length !== sections.length) {
1077
+ result.sectionCount = mergedSections.length;
1078
+ // sectionTypesを再計算
1079
+ const updatedSectionTypes = {};
1080
+ for (const section of mergedSections) {
1081
+ updatedSectionTypes[section.type] = (updatedSectionTypes[section.type] ?? 0) + 1;
1082
+ }
1083
+ result.sectionTypes = updatedSectionTypes;
1084
+ if ((0, logger_1.isDevelopment)()) {
1085
+ logger_1.logger.info("[layout-handler] Sections merged with Vision boundaries", {
1086
+ originalCount: sections.length,
1087
+ mergedCount: mergedSections.length,
1088
+ addedSections: mergedSections.length - sections.length,
1089
+ });
1090
+ }
1091
+ }
1092
+ // Phase 1: Deterministic Visual Feature Extraction (Screenshot必須)
1093
+ // Note: computedStyles are passed for improved theme detection
1094
+ // This allows accurate detection of dark themes from CSS-in-JS/Tailwind
1095
+ if (useVision && screenshot) {
1096
+ const visualFeaturesStartTime = Date.now();
1097
+ if ((0, logger_1.isDevelopment)()) {
1098
+ logger_1.logger.info("[layout-handler] Starting Deterministic Visual Feature Extraction", {
1099
+ screenshotSize: screenshot.base64.length,
1100
+ hasComputedStyles: !!computedStyles,
1101
+ computedStylesCount: computedStyles?.length ?? 0,
1102
+ });
1103
+ }
1104
+ const visualFeatures = await extractDeterministicVisualFeatures(screenshot, computedStyles);
1105
+ if (visualFeatures) {
1106
+ result.visualFeatures = visualFeatures;
1107
+ if ((0, logger_1.isDevelopment)()) {
1108
+ logger_1.logger.info("[layout-handler] Deterministic Visual Features extracted", {
1109
+ hasDominantColors: !!visualFeatures.colors?.dominant?.length,
1110
+ hasAccentColors: !!visualFeatures.colors?.accent?.length,
1111
+ hasTheme: !!visualFeatures.theme,
1112
+ themeType: visualFeatures.theme?.type,
1113
+ hasDensity: !!visualFeatures.density,
1114
+ hasGradients: !!visualFeatures.gradient?.gradients?.length,
1115
+ processingTimeMs: Date.now() - visualFeaturesStartTime,
1116
+ });
1117
+ }
1118
+ }
1119
+ else {
1120
+ if ((0, logger_1.isDevelopment)()) {
1121
+ logger_1.logger.warn("[layout-handler] Deterministic Visual Feature Extraction failed, continuing without visualFeatures");
1122
+ }
1123
+ }
1124
+ }
1125
+ // オプションに応じて詳細を追加
1126
+ // MCP-RESP-03: snake_case (include_html) を優先し、camelCase (includeHtml) はフォールバック
1127
+ const shouldIncludeHtml = options?.include_html ?? options?.includeHtml;
1128
+ const shouldIncludeScreenshot = options?.include_screenshot ?? options?.includeScreenshot;
1129
+ if (shouldIncludeHtml) {
1130
+ result.html = html;
1131
+ }
1132
+ if (shouldIncludeScreenshot) {
1133
+ result.screenshot = {
1134
+ base64: "placeholder",
1135
+ format: types_1.DEFAULT_SCREENSHOT.FORMAT,
1136
+ width: types_1.DEFAULT_SCREENSHOT.WIDTH,
1137
+ height: types_1.DEFAULT_SCREENSHOT.HEIGHT,
1138
+ };
1139
+ }
1140
+ if (options?.saveToDb) {
1141
+ // webPageIdが外部から渡された場合はそれを使用(asyncモードでの一貫性保証)
1142
+ // 渡されていない場合は新規生成
1143
+ result.pageId = webPageId ?? (0, uuid_1.v7)();
1144
+ }
1145
+ // sections は summary=false の場合に返す(マージ後のセクションを使用)
1146
+ result.sections = mergedSections;
1147
+ // Per-Section Vision Analysis (perSectionVision=true の場合)
1148
+ // マージ後のセクションを使用して各セクションの詳細Vision分析を実行
1149
+ if (useVision && options?.perSectionVision && screenshot?.base64 && mergedSections.length > 0) {
1150
+ await executePerSectionVisionAnalysis(screenshot, mergedSections, options);
1151
+ }
1152
+ // 最終処理時間を更新(Vision解析含む)
1153
+ result.processingTimeMs = Date.now() - startTime;
1154
+ if ((0, logger_1.isDevelopment)()) {
1155
+ logger_1.logger.debug("[layout-handler] defaultAnalyzeLayout completed", {
1156
+ sectionCount: result.sectionCount,
1157
+ sectionTypes: result.sectionTypes,
1158
+ processingTimeMs: result.processingTimeMs,
1159
+ hasVisionFeatures: !!result.visionFeatures,
1160
+ hasTextRepresentation: !!result.textRepresentation,
1161
+ });
1162
+ }
1163
+ return result;
1164
+ }
1165
+ catch (error) {
1166
+ if ((0, logger_1.isDevelopment)()) {
1167
+ logger_1.logger.error("[layout-handler] defaultAnalyzeLayout error", { error });
1168
+ }
1169
+ return {
1170
+ success: false,
1171
+ sectionCount: 0,
1172
+ sectionTypes: {},
1173
+ processingTimeMs: Date.now() - startTime,
1174
+ error: {
1175
+ code: schemas_1.PAGE_ANALYZE_ERROR_CODES.LAYOUT_ANALYSIS_FAILED,
1176
+ message: error instanceof Error ? error.message : "Layout analysis failed",
1177
+ },
1178
+ };
1179
+ }
1180
+ }
1181
+ //# sourceMappingURL=layout-handler.js.map