@reftrixmcp/mcp-server 0.1.7 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1424) hide show
  1. package/README.md +36 -6
  2. package/package.json +46 -41
  3. package/src/admin/bull-board.ts +177 -0
  4. package/src/index.ts +32 -1
  5. package/src/middleware/auth.ts +6 -0
  6. package/src/middleware/index.ts +13 -0
  7. package/src/middleware/rate-limiter.ts +525 -0
  8. package/src/router.ts +36 -3
  9. package/src/schemas/common-search-filters.ts +42 -0
  10. package/src/services/background/background-design-db.service.ts +4 -6
  11. package/src/services/background/background-design-embedding.service.ts +6 -8
  12. package/src/services/background-search.service.ts +44 -16
  13. package/src/services/browser-process-manager.ts +29 -24
  14. package/src/services/layout-embedding.service.ts +18 -28
  15. package/src/services/layout-search.service.ts +52 -31
  16. package/src/services/layout-to-code.service.ts +13 -21
  17. package/src/services/ml/mood-brandtone-embedding.service.ts +4 -10
  18. package/src/services/motion/analyzers/webgl-motion-analyzer.ts +1 -3
  19. package/src/services/motion/existing-animation-detector.service.ts +11 -17
  20. package/src/services/motion/frame-analysis-save.helper.ts +3 -8
  21. package/src/services/motion/frame-capture.service.ts +5 -5
  22. package/src/services/motion/frame-embedding.service.ts +30 -46
  23. package/src/services/motion/js-animation-detector.ts +5 -15
  24. package/src/services/motion/js-animation-search.service.ts +12 -20
  25. package/src/services/motion/motion-db.service.ts +21 -31
  26. package/src/services/motion/three-js-scene-extractor.ts +1 -3
  27. package/src/services/motion/webgl-animation-detector.service.ts +5 -9
  28. package/src/services/motion/webgl-animation-embedding.service.ts +3 -5
  29. package/src/services/motion-persistence.service.ts +13 -19
  30. package/src/services/motion-search.service.ts +72 -57
  31. package/src/services/narrative/analyzers/worldview.analyzer.ts +6 -10
  32. package/src/services/narrative/narrative-analysis.service.ts +10 -16
  33. package/src/services/narrative/narrative-search.service.ts +89 -40
  34. package/src/services/narrative/types/narrative.types.ts +24 -6
  35. package/src/services/page/frame-analyzer.service.ts +1 -3
  36. package/src/services/page/layout-analyzer.service.ts +224 -303
  37. package/src/services/page/playwright-crawler.service.ts +14 -20
  38. package/src/services/page/quality-evaluator.service.ts +1 -3
  39. package/src/services/page/runtime-animation-detector.service.ts +7 -17
  40. package/src/services/page/video-recorder.service.ts +2 -6
  41. package/src/services/page/webgl-detector.service.ts +3 -5
  42. package/src/services/page-ingest-adapter.ts +269 -251
  43. package/src/services/part/part-search.service.ts +43 -22
  44. package/src/services/part/schemas.ts +6 -0
  45. package/src/services/project-context-analyzer.ts +3 -5
  46. package/src/services/quality/axe-accessibility.service.ts +3 -5
  47. package/src/services/quality/benchmark.service.ts +4 -16
  48. package/src/services/quality/pattern-matcher.service.ts +11 -21
  49. package/src/services/quality/playwright-axe.service.ts +10 -18
  50. package/src/services/quality-search.service.ts +16 -17
  51. package/src/services/responsive/multi-viewport-capture.service.ts +11 -17
  52. package/src/services/responsive/responsive-analysis-embedding.service.ts +7 -11
  53. package/src/services/responsive/responsive-analysis.service.ts +7 -11
  54. package/src/services/responsive/responsive-quality-evaluator.service.ts +4 -6
  55. package/src/services/responsive-search.service.ts +40 -5
  56. package/src/services/search-cache.service.ts +166 -0
  57. package/src/services/service-client.ts +16 -24
  58. package/src/services/service-initializer.ts +49 -945
  59. package/src/services/service-registrar-analysis.ts +679 -0
  60. package/src/services/service-registrar-search.ts +464 -0
  61. package/src/services/vision/scroll-vision-persistence.service.ts +4 -6
  62. package/src/services/vision-embedding-search.service.ts +57 -45
  63. package/src/services/vision-embedding.service.ts +8 -12
  64. package/src/services/worker-supervisor.service.ts +2 -6
  65. package/src/tools/background/schemas.ts +2 -1
  66. package/src/tools/background/search.tool.ts +93 -53
  67. package/src/tools/brief/validate.handler.ts +11 -26
  68. package/src/tools/design/search-by-image.tool.ts +891 -0
  69. package/src/tools/index.ts +42 -1
  70. package/src/tools/layout/batch-ingest.tool.ts +14 -21
  71. package/src/tools/layout/ingest.tool.ts +38 -88
  72. package/src/tools/layout/inspect/inspect.tool.ts +32 -59
  73. package/src/tools/layout/inspect/visual-extractors.utils.ts +3 -9
  74. package/src/tools/layout/schemas.ts +11 -8
  75. package/src/tools/layout/search-executor.ts +699 -0
  76. package/src/tools/layout/search-helpers.ts +620 -0
  77. package/src/tools/layout/search.tool.ts +148 -1371
  78. package/src/tools/layout/to-code.tool.ts +21 -42
  79. package/src/tools/motion/analyze-frames.handler.ts +19 -37
  80. package/src/tools/motion/code-generators.ts +1363 -0
  81. package/src/tools/motion/css-mode-handler.ts +14 -23
  82. package/src/tools/motion/detect.tool.ts +38 -60
  83. package/src/tools/motion/detection-modes.ts +4 -8
  84. package/src/tools/motion/di-factories.ts +87 -110
  85. package/src/tools/motion/search-helpers.ts +376 -0
  86. package/src/tools/motion/search.schemas.ts +9 -6
  87. package/src/tools/motion/search.tool.ts +81 -1717
  88. package/src/tools/narrative/analyze.tool.ts +14 -30
  89. package/src/tools/narrative/schemas.ts +14 -11
  90. package/src/tools/narrative/search.tool.ts +91 -77
  91. package/src/tools/page/analyze.tool.ts +21 -33
  92. package/src/tools/page/get-job-status.tool.ts +8 -12
  93. package/src/tools/page/handlers/db-handler.ts +3 -6
  94. package/src/tools/page/handlers/embedding-handler.ts +48 -81
  95. package/src/tools/page/handlers/execution-status-tracker.ts +3 -5
  96. package/src/tools/page/handlers/js-animation-handler.ts +29 -53
  97. package/src/tools/page/handlers/layout-handler.ts +45 -73
  98. package/src/tools/page/handlers/motion-handler.ts +24 -35
  99. package/src/tools/page/handlers/narrative-handler.ts +12 -24
  100. package/src/tools/page/handlers/phased-executor.ts +13 -16
  101. package/src/tools/page/handlers/quality-handler.ts +3 -4
  102. package/src/tools/page/handlers/result-builder.ts +21 -18
  103. package/src/tools/page/handlers/sync-helpers.ts +597 -0
  104. package/src/tools/page/handlers/sync-phase-handlers.ts +1170 -0
  105. package/src/tools/page/handlers/sync-processing.ts +192 -1542
  106. package/src/tools/page/handlers/timeout-utils.ts +23 -30
  107. package/src/tools/page/handlers/video-handler.ts +9 -9
  108. package/src/tools/page/handlers/webgl-animation-handler.ts +10 -13
  109. package/src/tools/part/compare.tool.ts +2 -20
  110. package/src/tools/part/inspect.tool.ts +11 -41
  111. package/src/tools/part/search.tool.ts +50 -28
  112. package/src/tools/preference/get.tool.ts +6 -19
  113. package/src/tools/preference/hear.tool.ts +6 -19
  114. package/src/tools/preference/reset.tool.ts +6 -19
  115. package/src/tools/project-get.ts +12 -14
  116. package/src/tools/project-list.ts +10 -22
  117. package/src/tools/quality/batch-evaluate.tool.ts +17 -23
  118. package/src/tools/quality/evaluate.tool.ts +42 -131
  119. package/src/tools/quality/get-job-status.tool.ts +2 -1
  120. package/src/tools/responsive/schemas.ts +2 -2
  121. package/src/tools/responsive/search.tool.ts +73 -46
  122. package/src/tools/search-unified.tool.ts +582 -0
  123. package/src/tools/style-get-palette.ts +18 -33
  124. package/src/tools/system-health.ts +24 -33
  125. package/src/utils/di-factory.ts +64 -0
  126. package/src/utils/prisma-wrapper-factory.ts +18 -17
  127. package/src/utils/sanitize-error.ts +132 -0
  128. package/src/utils/url-validator.ts +1 -3
  129. package/src/workers/batch-quality-worker.ts +5 -7
  130. package/src/workers/page-analyze-worker.ts +38 -24
  131. package/src/workers/phases/phase-0-ingest.ts +1 -1
  132. package/src/workers/phases/phase-1-layout.ts +10 -7
  133. package/src/workers/phases/phase-2-motion.ts +22 -23
  134. package/src/workers/phases/phase-4-narrative.ts +8 -12
  135. package/src/workers/phases/phase-5-embedding.ts +669 -457
  136. package/LICENSE +0 -661
  137. package/dist/api/health.d.ts +0 -122
  138. package/dist/api/health.d.ts.map +0 -1
  139. package/dist/api/health.js +0 -267
  140. package/dist/api/health.js.map +0 -1
  141. package/dist/config/index.d.ts +0 -9
  142. package/dist/config/index.d.ts.map +0 -1
  143. package/dist/config/index.js +0 -27
  144. package/dist/config/index.js.map +0 -1
  145. package/dist/config/redis.d.ts +0 -99
  146. package/dist/config/redis.d.ts.map +0 -1
  147. package/dist/config/redis.js +0 -234
  148. package/dist/config/redis.js.map +0 -1
  149. package/dist/index.d.ts +0 -18
  150. package/dist/index.d.ts.map +0 -1
  151. package/dist/index.js +0 -247
  152. package/dist/index.js.map +0 -1
  153. package/dist/lib/index.d.ts +0 -6
  154. package/dist/lib/index.d.ts.map +0 -1
  155. package/dist/lib/index.js +0 -14
  156. package/dist/lib/index.js.map +0 -1
  157. package/dist/lib/project-context.d.ts +0 -51
  158. package/dist/lib/project-context.d.ts.map +0 -1
  159. package/dist/lib/project-context.js +0 -109
  160. package/dist/lib/project-context.js.map +0 -1
  161. package/dist/middleware/args-type-coercion.d.ts +0 -59
  162. package/dist/middleware/args-type-coercion.d.ts.map +0 -1
  163. package/dist/middleware/args-type-coercion.js +0 -187
  164. package/dist/middleware/args-type-coercion.js.map +0 -1
  165. package/dist/middleware/auth.d.ts +0 -122
  166. package/dist/middleware/auth.d.ts.map +0 -1
  167. package/dist/middleware/auth.js +0 -430
  168. package/dist/middleware/auth.js.map +0 -1
  169. package/dist/middleware/index.d.ts +0 -10
  170. package/dist/middleware/index.d.ts.map +0 -1
  171. package/dist/middleware/index.js +0 -38
  172. package/dist/middleware/index.js.map +0 -1
  173. package/dist/middleware/light-response-controller.d.ts +0 -206
  174. package/dist/middleware/light-response-controller.d.ts.map +0 -1
  175. package/dist/middleware/light-response-controller.js +0 -555
  176. package/dist/middleware/light-response-controller.js.map +0 -1
  177. package/dist/middleware/response-size-warning.d.ts +0 -97
  178. package/dist/middleware/response-size-warning.d.ts.map +0 -1
  179. package/dist/middleware/response-size-warning.js +0 -137
  180. package/dist/middleware/response-size-warning.js.map +0 -1
  181. package/dist/queues/batch-quality-queue.d.ts +0 -225
  182. package/dist/queues/batch-quality-queue.d.ts.map +0 -1
  183. package/dist/queues/batch-quality-queue.js +0 -375
  184. package/dist/queues/batch-quality-queue.js.map +0 -1
  185. package/dist/queues/index.d.ts +0 -10
  186. package/dist/queues/index.d.ts.map +0 -1
  187. package/dist/queues/index.js +0 -28
  188. package/dist/queues/index.js.map +0 -1
  189. package/dist/queues/page-analyze-queue.d.ts +0 -287
  190. package/dist/queues/page-analyze-queue.d.ts.map +0 -1
  191. package/dist/queues/page-analyze-queue.js +0 -219
  192. package/dist/queues/page-analyze-queue.js.map +0 -1
  193. package/dist/router.d.ts +0 -144
  194. package/dist/router.d.ts.map +0 -1
  195. package/dist/router.js +0 -261
  196. package/dist/router.js.map +0 -1
  197. package/dist/schemas/creative/index.d.ts +0 -8
  198. package/dist/schemas/creative/index.d.ts.map +0 -1
  199. package/dist/schemas/creative/index.js +0 -23
  200. package/dist/schemas/creative/index.js.map +0 -1
  201. package/dist/schemas/creative/palette.schema.d.ts +0 -741
  202. package/dist/schemas/creative/palette.schema.d.ts.map +0 -1
  203. package/dist/schemas/creative/palette.schema.js +0 -154
  204. package/dist/schemas/creative/palette.schema.js.map +0 -1
  205. package/dist/schemas/mood-brandtone-filters.d.ts +0 -740
  206. package/dist/schemas/mood-brandtone-filters.d.ts.map +0 -1
  207. package/dist/schemas/mood-brandtone-filters.js +0 -265
  208. package/dist/schemas/mood-brandtone-filters.js.map +0 -1
  209. package/dist/scripts/backfill-embeddings.d.ts +0 -3
  210. package/dist/scripts/backfill-embeddings.d.ts.map +0 -1
  211. package/dist/scripts/backfill-embeddings.js +0 -385
  212. package/dist/scripts/backfill-embeddings.js.map +0 -1
  213. package/dist/scripts/check-embedding-coverage.d.ts +0 -3
  214. package/dist/scripts/check-embedding-coverage.d.ts.map +0 -1
  215. package/dist/scripts/check-embedding-coverage.js +0 -103
  216. package/dist/scripts/check-embedding-coverage.js.map +0 -1
  217. package/dist/scripts/start-workers.d.ts +0 -3
  218. package/dist/scripts/start-workers.d.ts.map +0 -1
  219. package/dist/scripts/start-workers.js +0 -447
  220. package/dist/scripts/start-workers.js.map +0 -1
  221. package/dist/server.d.ts +0 -49
  222. package/dist/server.d.ts.map +0 -1
  223. package/dist/server.js +0 -237
  224. package/dist/server.js.map +0 -1
  225. package/dist/services/background/background-design-db.service.d.ts +0 -65
  226. package/dist/services/background/background-design-db.service.d.ts.map +0 -1
  227. package/dist/services/background/background-design-db.service.js +0 -138
  228. package/dist/services/background/background-design-db.service.js.map +0 -1
  229. package/dist/services/background/background-design-detector.service.d.ts +0 -125
  230. package/dist/services/background/background-design-detector.service.d.ts.map +0 -1
  231. package/dist/services/background/background-design-detector.service.js +0 -1106
  232. package/dist/services/background/background-design-detector.service.js.map +0 -1
  233. package/dist/services/background/background-design-embedding.service.d.ts +0 -188
  234. package/dist/services/background/background-design-embedding.service.d.ts.map +0 -1
  235. package/dist/services/background/background-design-embedding.service.js +0 -386
  236. package/dist/services/background/background-design-embedding.service.js.map +0 -1
  237. package/dist/services/background-search.service.d.ts +0 -43
  238. package/dist/services/background-search.service.d.ts.map +0 -1
  239. package/dist/services/background-search.service.js +0 -235
  240. package/dist/services/background-search.service.js.map +0 -1
  241. package/dist/services/backup-service.d.ts +0 -135
  242. package/dist/services/backup-service.d.ts.map +0 -1
  243. package/dist/services/backup-service.js +0 -357
  244. package/dist/services/backup-service.js.map +0 -1
  245. package/dist/services/brief/brief-parser-service.d.ts +0 -47
  246. package/dist/services/brief/brief-parser-service.d.ts.map +0 -1
  247. package/dist/services/brief/brief-parser-service.js +0 -380
  248. package/dist/services/brief/brief-parser-service.js.map +0 -1
  249. package/dist/services/brief/schemas/brief-parser-schemas.d.ts +0 -278
  250. package/dist/services/brief/schemas/brief-parser-schemas.d.ts.map +0 -1
  251. package/dist/services/brief/schemas/brief-parser-schemas.js +0 -116
  252. package/dist/services/brief/schemas/brief-parser-schemas.js.map +0 -1
  253. package/dist/services/browser-process-manager.d.ts +0 -116
  254. package/dist/services/browser-process-manager.d.ts.map +0 -1
  255. package/dist/services/browser-process-manager.js +0 -259
  256. package/dist/services/browser-process-manager.js.map +0 -1
  257. package/dist/services/cache.d.ts +0 -119
  258. package/dist/services/cache.d.ts.map +0 -1
  259. package/dist/services/cache.js +0 -233
  260. package/dist/services/cache.js.map +0 -1
  261. package/dist/services/checksum-service.d.ts +0 -122
  262. package/dist/services/checksum-service.d.ts.map +0 -1
  263. package/dist/services/checksum-service.js +0 -270
  264. package/dist/services/checksum-service.js.map +0 -1
  265. package/dist/services/css-analysis-cache.service.d.ts +0 -248
  266. package/dist/services/css-analysis-cache.service.d.ts.map +0 -1
  267. package/dist/services/css-analysis-cache.service.js +0 -398
  268. package/dist/services/css-analysis-cache.service.js.map +0 -1
  269. package/dist/services/database-dumper.service.d.ts +0 -181
  270. package/dist/services/database-dumper.service.d.ts.map +0 -1
  271. package/dist/services/database-dumper.service.js +0 -550
  272. package/dist/services/database-dumper.service.js.map +0 -1
  273. package/dist/services/embedding-backfill.service.d.ts +0 -53
  274. package/dist/services/embedding-backfill.service.d.ts.map +0 -1
  275. package/dist/services/embedding-backfill.service.js +0 -672
  276. package/dist/services/embedding-backfill.service.js.map +0 -1
  277. package/dist/services/embedding-validation.service.d.ts +0 -64
  278. package/dist/services/embedding-validation.service.d.ts.map +0 -1
  279. package/dist/services/embedding-validation.service.js +0 -141
  280. package/dist/services/embedding-validation.service.js.map +0 -1
  281. package/dist/services/encryption-service.d.ts +0 -171
  282. package/dist/services/encryption-service.d.ts.map +0 -1
  283. package/dist/services/encryption-service.js +0 -343
  284. package/dist/services/encryption-service.js.map +0 -1
  285. package/dist/services/external-css-fetcher.d.ts +0 -185
  286. package/dist/services/external-css-fetcher.d.ts.map +0 -1
  287. package/dist/services/external-css-fetcher.js +0 -667
  288. package/dist/services/external-css-fetcher.js.map +0 -1
  289. package/dist/services/gpu-resource-manager.d.ts +0 -180
  290. package/dist/services/gpu-resource-manager.d.ts.map +0 -1
  291. package/dist/services/gpu-resource-manager.js +0 -485
  292. package/dist/services/gpu-resource-manager.js.map +0 -1
  293. package/dist/services/index.d.ts +0 -15
  294. package/dist/services/index.d.ts.map +0 -1
  295. package/dist/services/index.js +0 -73
  296. package/dist/services/index.js.map +0 -1
  297. package/dist/services/layout/component-splitter.d.ts +0 -63
  298. package/dist/services/layout/component-splitter.d.ts.map +0 -1
  299. package/dist/services/layout/component-splitter.js +0 -508
  300. package/dist/services/layout/component-splitter.js.map +0 -1
  301. package/dist/services/layout/html-to-jsx-converter.d.ts +0 -40
  302. package/dist/services/layout/html-to-jsx-converter.d.ts.map +0 -1
  303. package/dist/services/layout/html-to-jsx-converter.js +0 -484
  304. package/dist/services/layout/html-to-jsx-converter.js.map +0 -1
  305. package/dist/services/layout/semantic-html-converter.d.ts +0 -67
  306. package/dist/services/layout/semantic-html-converter.d.ts.map +0 -1
  307. package/dist/services/layout/semantic-html-converter.js +0 -247
  308. package/dist/services/layout/semantic-html-converter.js.map +0 -1
  309. package/dist/services/layout/style-to-tailwind-mapper.d.ts +0 -82
  310. package/dist/services/layout/style-to-tailwind-mapper.d.ts.map +0 -1
  311. package/dist/services/layout/style-to-tailwind-mapper.js +0 -1334
  312. package/dist/services/layout/style-to-tailwind-mapper.js.map +0 -1
  313. package/dist/services/layout-embedding.service.d.ts +0 -415
  314. package/dist/services/layout-embedding.service.d.ts.map +0 -1
  315. package/dist/services/layout-embedding.service.js +0 -1147
  316. package/dist/services/layout-embedding.service.js.map +0 -1
  317. package/dist/services/layout-generate-code-service-export.d.ts +0 -38
  318. package/dist/services/layout-generate-code-service-export.d.ts.map +0 -1
  319. package/dist/services/layout-generate-code-service-export.js +0 -77
  320. package/dist/services/layout-generate-code-service-export.js.map +0 -1
  321. package/dist/services/layout-search-service-export.d.ts +0 -31
  322. package/dist/services/layout-search-service-export.d.ts.map +0 -1
  323. package/dist/services/layout-search-service-export.js +0 -43
  324. package/dist/services/layout-search-service-export.js.map +0 -1
  325. package/dist/services/layout-search.service.d.ts +0 -111
  326. package/dist/services/layout-search.service.d.ts.map +0 -1
  327. package/dist/services/layout-search.service.js +0 -716
  328. package/dist/services/layout-search.service.js.map +0 -1
  329. package/dist/services/layout-to-code.service.d.ts +0 -85
  330. package/dist/services/layout-to-code.service.d.ts.map +0 -1
  331. package/dist/services/layout-to-code.service.js +0 -1368
  332. package/dist/services/layout-to-code.service.js.map +0 -1
  333. package/dist/services/metrics-collector.d.ts +0 -189
  334. package/dist/services/metrics-collector.d.ts.map +0 -1
  335. package/dist/services/metrics-collector.js +0 -344
  336. package/dist/services/metrics-collector.js.map +0 -1
  337. package/dist/services/ml/mood-brandtone-embedding.service.d.ts +0 -253
  338. package/dist/services/ml/mood-brandtone-embedding.service.d.ts.map +0 -1
  339. package/dist/services/ml/mood-brandtone-embedding.service.js +0 -678
  340. package/dist/services/ml/mood-brandtone-embedding.service.js.map +0 -1
  341. package/dist/services/motion/analyzers/color-change.analyzer.d.ts +0 -274
  342. package/dist/services/motion/analyzers/color-change.analyzer.d.ts.map +0 -1
  343. package/dist/services/motion/analyzers/color-change.analyzer.js +0 -644
  344. package/dist/services/motion/analyzers/color-change.analyzer.js.map +0 -1
  345. package/dist/services/motion/analyzers/frame-diff.analyzer.d.ts +0 -109
  346. package/dist/services/motion/analyzers/frame-diff.analyzer.d.ts.map +0 -1
  347. package/dist/services/motion/analyzers/frame-diff.analyzer.js +0 -315
  348. package/dist/services/motion/analyzers/frame-diff.analyzer.js.map +0 -1
  349. package/dist/services/motion/analyzers/layout-shift.detector.d.ts +0 -132
  350. package/dist/services/motion/analyzers/layout-shift.detector.d.ts.map +0 -1
  351. package/dist/services/motion/analyzers/layout-shift.detector.js +0 -179
  352. package/dist/services/motion/analyzers/layout-shift.detector.js.map +0 -1
  353. package/dist/services/motion/analyzers/motion-vector.estimator.d.ts +0 -88
  354. package/dist/services/motion/analyzers/motion-vector.estimator.d.ts.map +0 -1
  355. package/dist/services/motion/analyzers/motion-vector.estimator.js +0 -494
  356. package/dist/services/motion/analyzers/motion-vector.estimator.js.map +0 -1
  357. package/dist/services/motion/analyzers/webgl-motion-analyzer.d.ts +0 -167
  358. package/dist/services/motion/analyzers/webgl-motion-analyzer.d.ts.map +0 -1
  359. package/dist/services/motion/analyzers/webgl-motion-analyzer.js +0 -500
  360. package/dist/services/motion/analyzers/webgl-motion-analyzer.js.map +0 -1
  361. package/dist/services/motion/animation-metrics-collector.service.d.ts +0 -215
  362. package/dist/services/motion/animation-metrics-collector.service.d.ts.map +0 -1
  363. package/dist/services/motion/animation-metrics-collector.service.js +0 -502
  364. package/dist/services/motion/animation-metrics-collector.service.js.map +0 -1
  365. package/dist/services/motion/cls-calculator.service.d.ts +0 -186
  366. package/dist/services/motion/cls-calculator.service.d.ts.map +0 -1
  367. package/dist/services/motion/cls-calculator.service.js +0 -329
  368. package/dist/services/motion/cls-calculator.service.js.map +0 -1
  369. package/dist/services/motion/existing-animation-detector.service.d.ts +0 -208
  370. package/dist/services/motion/existing-animation-detector.service.d.ts.map +0 -1
  371. package/dist/services/motion/existing-animation-detector.service.js +0 -591
  372. package/dist/services/motion/existing-animation-detector.service.js.map +0 -1
  373. package/dist/services/motion/fade-detector.service.d.ts +0 -114
  374. package/dist/services/motion/fade-detector.service.d.ts.map +0 -1
  375. package/dist/services/motion/fade-detector.service.js +0 -249
  376. package/dist/services/motion/fade-detector.service.js.map +0 -1
  377. package/dist/services/motion/frame-analysis-save.helper.d.ts +0 -41
  378. package/dist/services/motion/frame-analysis-save.helper.d.ts.map +0 -1
  379. package/dist/services/motion/frame-analysis-save.helper.js +0 -235
  380. package/dist/services/motion/frame-analysis-save.helper.js.map +0 -1
  381. package/dist/services/motion/frame-capture.service.d.ts +0 -170
  382. package/dist/services/motion/frame-capture.service.d.ts.map +0 -1
  383. package/dist/services/motion/frame-capture.service.js +0 -476
  384. package/dist/services/motion/frame-capture.service.js.map +0 -1
  385. package/dist/services/motion/frame-embedding.service.d.ts +0 -315
  386. package/dist/services/motion/frame-embedding.service.d.ts.map +0 -1
  387. package/dist/services/motion/frame-embedding.service.js +0 -1023
  388. package/dist/services/motion/frame-embedding.service.js.map +0 -1
  389. package/dist/services/motion/frame-image-analysis.service.d.ts +0 -126
  390. package/dist/services/motion/frame-image-analysis.service.d.ts.map +0 -1
  391. package/dist/services/motion/frame-image-analysis.service.js +0 -982
  392. package/dist/services/motion/frame-image-analysis.service.js.map +0 -1
  393. package/dist/services/motion/frame-image-analyzer.adapter.d.ts +0 -168
  394. package/dist/services/motion/frame-image-analyzer.adapter.d.ts.map +0 -1
  395. package/dist/services/motion/frame-image-analyzer.adapter.js +0 -520
  396. package/dist/services/motion/frame-image-analyzer.adapter.js.map +0 -1
  397. package/dist/services/motion/frame-worker-pool.service.d.ts +0 -133
  398. package/dist/services/motion/frame-worker-pool.service.d.ts.map +0 -1
  399. package/dist/services/motion/frame-worker-pool.service.js +0 -410
  400. package/dist/services/motion/frame-worker-pool.service.js.map +0 -1
  401. package/dist/services/motion/infrastructure/frame-loader.d.ts +0 -77
  402. package/dist/services/motion/infrastructure/frame-loader.d.ts.map +0 -1
  403. package/dist/services/motion/infrastructure/frame-loader.js +0 -430
  404. package/dist/services/motion/infrastructure/frame-loader.js.map +0 -1
  405. package/dist/services/motion/js-animation-detector.d.ts +0 -382
  406. package/dist/services/motion/js-animation-detector.d.ts.map +0 -1
  407. package/dist/services/motion/js-animation-detector.js +0 -911
  408. package/dist/services/motion/js-animation-detector.js.map +0 -1
  409. package/dist/services/motion/js-animation-embedding.service.d.ts +0 -114
  410. package/dist/services/motion/js-animation-embedding.service.d.ts.map +0 -1
  411. package/dist/services/motion/js-animation-embedding.service.js +0 -289
  412. package/dist/services/motion/js-animation-embedding.service.js.map +0 -1
  413. package/dist/services/motion/js-animation-search.service.d.ts +0 -138
  414. package/dist/services/motion/js-animation-search.service.d.ts.map +0 -1
  415. package/dist/services/motion/js-animation-search.service.js +0 -503
  416. package/dist/services/motion/js-animation-search.service.js.map +0 -1
  417. package/dist/services/motion/motion-db.service.d.ts +0 -231
  418. package/dist/services/motion/motion-db.service.d.ts.map +0 -1
  419. package/dist/services/motion/motion-db.service.js +0 -676
  420. package/dist/services/motion/motion-db.service.js.map +0 -1
  421. package/dist/services/motion/three-js-scene-extractor.d.ts +0 -274
  422. package/dist/services/motion/three-js-scene-extractor.d.ts.map +0 -1
  423. package/dist/services/motion/three-js-scene-extractor.js +0 -1126
  424. package/dist/services/motion/three-js-scene-extractor.js.map +0 -1
  425. package/dist/services/motion/types.d.ts +0 -592
  426. package/dist/services/motion/types.d.ts.map +0 -1
  427. package/dist/services/motion/types.js +0 -121
  428. package/dist/services/motion/types.js.map +0 -1
  429. package/dist/services/motion/visual-category-classifier.d.ts +0 -273
  430. package/dist/services/motion/visual-category-classifier.d.ts.map +0 -1
  431. package/dist/services/motion/visual-category-classifier.js +0 -1060
  432. package/dist/services/motion/visual-category-classifier.js.map +0 -1
  433. package/dist/services/motion/webgl-animation-categorizer.d.ts +0 -151
  434. package/dist/services/motion/webgl-animation-categorizer.d.ts.map +0 -1
  435. package/dist/services/motion/webgl-animation-categorizer.js +0 -568
  436. package/dist/services/motion/webgl-animation-categorizer.js.map +0 -1
  437. package/dist/services/motion/webgl-animation-detector.service.d.ts +0 -204
  438. package/dist/services/motion/webgl-animation-detector.service.d.ts.map +0 -1
  439. package/dist/services/motion/webgl-animation-detector.service.js +0 -518
  440. package/dist/services/motion/webgl-animation-detector.service.js.map +0 -1
  441. package/dist/services/motion/webgl-animation-embedding.service.d.ts +0 -238
  442. package/dist/services/motion/webgl-animation-embedding.service.d.ts.map +0 -1
  443. package/dist/services/motion/webgl-animation-embedding.service.js +0 -368
  444. package/dist/services/motion/webgl-animation-embedding.service.js.map +0 -1
  445. package/dist/services/motion-detect-service-export.d.ts +0 -130
  446. package/dist/services/motion-detect-service-export.d.ts.map +0 -1
  447. package/dist/services/motion-detect-service-export.js +0 -160
  448. package/dist/services/motion-detect-service-export.js.map +0 -1
  449. package/dist/services/motion-persistence.service.d.ts +0 -144
  450. package/dist/services/motion-persistence.service.d.ts.map +0 -1
  451. package/dist/services/motion-persistence.service.js +0 -398
  452. package/dist/services/motion-persistence.service.js.map +0 -1
  453. package/dist/services/motion-search-service.d.ts +0 -10
  454. package/dist/services/motion-search-service.d.ts.map +0 -1
  455. package/dist/services/motion-search-service.js +0 -22
  456. package/dist/services/motion-search-service.js.map +0 -1
  457. package/dist/services/motion-search.service.d.ts +0 -210
  458. package/dist/services/motion-search.service.d.ts.map +0 -1
  459. package/dist/services/motion-search.service.js +0 -900
  460. package/dist/services/motion-search.service.js.map +0 -1
  461. package/dist/services/narrative/analyzers/layout-structure.analyzer.d.ts +0 -75
  462. package/dist/services/narrative/analyzers/layout-structure.analyzer.d.ts.map +0 -1
  463. package/dist/services/narrative/analyzers/layout-structure.analyzer.js +0 -489
  464. package/dist/services/narrative/analyzers/layout-structure.analyzer.js.map +0 -1
  465. package/dist/services/narrative/analyzers/worldview.analyzer.d.ts +0 -92
  466. package/dist/services/narrative/analyzers/worldview.analyzer.d.ts.map +0 -1
  467. package/dist/services/narrative/analyzers/worldview.analyzer.js +0 -477
  468. package/dist/services/narrative/analyzers/worldview.analyzer.js.map +0 -1
  469. package/dist/services/narrative/generators/confidence-calculator.d.ts +0 -65
  470. package/dist/services/narrative/generators/confidence-calculator.d.ts.map +0 -1
  471. package/dist/services/narrative/generators/confidence-calculator.js +0 -316
  472. package/dist/services/narrative/generators/confidence-calculator.js.map +0 -1
  473. package/dist/services/narrative/generators/text-representation.generator.d.ts +0 -67
  474. package/dist/services/narrative/generators/text-representation.generator.d.ts.map +0 -1
  475. package/dist/services/narrative/generators/text-representation.generator.js +0 -312
  476. package/dist/services/narrative/generators/text-representation.generator.js.map +0 -1
  477. package/dist/services/narrative/index.d.ts +0 -16
  478. package/dist/services/narrative/index.d.ts.map +0 -1
  479. package/dist/services/narrative/index.js +0 -63
  480. package/dist/services/narrative/index.js.map +0 -1
  481. package/dist/services/narrative/narrative-analysis.service.d.ts +0 -120
  482. package/dist/services/narrative/narrative-analysis.service.d.ts.map +0 -1
  483. package/dist/services/narrative/narrative-analysis.service.js +0 -479
  484. package/dist/services/narrative/narrative-analysis.service.js.map +0 -1
  485. package/dist/services/narrative/narrative-search.service.d.ts +0 -126
  486. package/dist/services/narrative/narrative-search.service.d.ts.map +0 -1
  487. package/dist/services/narrative/narrative-search.service.js +0 -516
  488. package/dist/services/narrative/narrative-search.service.js.map +0 -1
  489. package/dist/services/narrative/types/narrative.types.d.ts +0 -372
  490. package/dist/services/narrative/types/narrative.types.d.ts.map +0 -1
  491. package/dist/services/narrative/types/narrative.types.js +0 -5
  492. package/dist/services/narrative/types/narrative.types.js.map +0 -1
  493. package/dist/services/orphaned-job-utils.d.ts +0 -62
  494. package/dist/services/orphaned-job-utils.d.ts.map +0 -1
  495. package/dist/services/orphaned-job-utils.js +0 -130
  496. package/dist/services/orphaned-job-utils.js.map +0 -1
  497. package/dist/services/page/css-animation-parser.service.d.ts +0 -173
  498. package/dist/services/page/css-animation-parser.service.d.ts.map +0 -1
  499. package/dist/services/page/css-animation-parser.service.js +0 -537
  500. package/dist/services/page/css-animation-parser.service.js.map +0 -1
  501. package/dist/services/page/fallback-analyzer.service.d.ts +0 -140
  502. package/dist/services/page/fallback-analyzer.service.d.ts.map +0 -1
  503. package/dist/services/page/fallback-analyzer.service.js +0 -289
  504. package/dist/services/page/fallback-analyzer.service.js.map +0 -1
  505. package/dist/services/page/frame-analyzer.service.d.ts +0 -208
  506. package/dist/services/page/frame-analyzer.service.d.ts.map +0 -1
  507. package/dist/services/page/frame-analyzer.service.js +0 -628
  508. package/dist/services/page/frame-analyzer.service.js.map +0 -1
  509. package/dist/services/page/layout-analyzer.service.d.ts +0 -323
  510. package/dist/services/page/layout-analyzer.service.d.ts.map +0 -1
  511. package/dist/services/page/layout-analyzer.service.js +0 -2001
  512. package/dist/services/page/layout-analyzer.service.js.map +0 -1
  513. package/dist/services/page/motion-category-classifier.service.d.ts +0 -72
  514. package/dist/services/page/motion-category-classifier.service.d.ts.map +0 -1
  515. package/dist/services/page/motion-category-classifier.service.js +0 -340
  516. package/dist/services/page/motion-category-classifier.service.js.map +0 -1
  517. package/dist/services/page/motion-detector.service.d.ts +0 -76
  518. package/dist/services/page/motion-detector.service.d.ts.map +0 -1
  519. package/dist/services/page/motion-detector.service.js +0 -255
  520. package/dist/services/page/motion-detector.service.js.map +0 -1
  521. package/dist/services/page/motion-performance-analyzer.service.d.ts +0 -114
  522. package/dist/services/page/motion-performance-analyzer.service.d.ts.map +0 -1
  523. package/dist/services/page/motion-performance-analyzer.service.js +0 -315
  524. package/dist/services/page/motion-performance-analyzer.service.js.map +0 -1
  525. package/dist/services/page/playwright-crawler.service.d.ts +0 -106
  526. package/dist/services/page/playwright-crawler.service.d.ts.map +0 -1
  527. package/dist/services/page/playwright-crawler.service.js +0 -373
  528. package/dist/services/page/playwright-crawler.service.js.map +0 -1
  529. package/dist/services/page/quality-evaluator.service.d.ts +0 -107
  530. package/dist/services/page/quality-evaluator.service.d.ts.map +0 -1
  531. package/dist/services/page/quality-evaluator.service.js +0 -1138
  532. package/dist/services/page/quality-evaluator.service.js.map +0 -1
  533. package/dist/services/page/runtime-animation-detector.service.d.ts +0 -154
  534. package/dist/services/page/runtime-animation-detector.service.d.ts.map +0 -1
  535. package/dist/services/page/runtime-animation-detector.service.js +0 -480
  536. package/dist/services/page/runtime-animation-detector.service.js.map +0 -1
  537. package/dist/services/page/section-postprocessor.service.d.ts +0 -55
  538. package/dist/services/page/section-postprocessor.service.d.ts.map +0 -1
  539. package/dist/services/page/section-postprocessor.service.js +0 -708
  540. package/dist/services/page/section-postprocessor.service.js.map +0 -1
  541. package/dist/services/page/video-recorder.service.d.ts +0 -110
  542. package/dist/services/page/video-recorder.service.d.ts.map +0 -1
  543. package/dist/services/page/video-recorder.service.js +0 -441
  544. package/dist/services/page/video-recorder.service.js.map +0 -1
  545. package/dist/services/page/webgl-detector.service.d.ts +0 -113
  546. package/dist/services/page/webgl-detector.service.d.ts.map +0 -1
  547. package/dist/services/page/webgl-detector.service.js +0 -280
  548. package/dist/services/page/webgl-detector.service.js.map +0 -1
  549. package/dist/services/page-analyze-service.d.ts +0 -30
  550. package/dist/services/page-analyze-service.d.ts.map +0 -1
  551. package/dist/services/page-analyze-service.js +0 -58
  552. package/dist/services/page-analyze-service.js.map +0 -1
  553. package/dist/services/page-ingest-adapter.d.ts +0 -479
  554. package/dist/services/page-ingest-adapter.d.ts.map +0 -1
  555. package/dist/services/page-ingest-adapter.js +0 -1726
  556. package/dist/services/page-ingest-adapter.js.map +0 -1
  557. package/dist/services/palette-service-export.d.ts +0 -26
  558. package/dist/services/palette-service-export.d.ts.map +0 -1
  559. package/dist/services/palette-service-export.js +0 -22
  560. package/dist/services/palette-service-export.js.map +0 -1
  561. package/dist/services/part/index.d.ts +0 -22
  562. package/dist/services/part/index.d.ts.map +0 -1
  563. package/dist/services/part/index.js +0 -72
  564. package/dist/services/part/index.js.map +0 -1
  565. package/dist/services/part/part-backfill.service.d.ts +0 -66
  566. package/dist/services/part/part-backfill.service.d.ts.map +0 -1
  567. package/dist/services/part/part-backfill.service.js +0 -195
  568. package/dist/services/part/part-backfill.service.js.map +0 -1
  569. package/dist/services/part/part-bbox-playwright.service.d.ts +0 -85
  570. package/dist/services/part/part-bbox-playwright.service.d.ts.map +0 -1
  571. package/dist/services/part/part-bbox-playwright.service.js +0 -362
  572. package/dist/services/part/part-bbox-playwright.service.js.map +0 -1
  573. package/dist/services/part/part-db.service.d.ts +0 -41
  574. package/dist/services/part/part-db.service.d.ts.map +0 -1
  575. package/dist/services/part/part-db.service.js +0 -82
  576. package/dist/services/part/part-db.service.js.map +0 -1
  577. package/dist/services/part/part-embedding-db.service.d.ts +0 -52
  578. package/dist/services/part/part-embedding-db.service.d.ts.map +0 -1
  579. package/dist/services/part/part-embedding-db.service.js +0 -122
  580. package/dist/services/part/part-embedding-db.service.js.map +0 -1
  581. package/dist/services/part/part-embedding.service.d.ts +0 -140
  582. package/dist/services/part/part-embedding.service.d.ts.map +0 -1
  583. package/dist/services/part/part-embedding.service.js +0 -276
  584. package/dist/services/part/part-embedding.service.js.map +0 -1
  585. package/dist/services/part/part-extraction.service.d.ts +0 -75
  586. package/dist/services/part/part-extraction.service.d.ts.map +0 -1
  587. package/dist/services/part/part-extraction.service.js +0 -519
  588. package/dist/services/part/part-extraction.service.js.map +0 -1
  589. package/dist/services/part/part-search.service.d.ts +0 -180
  590. package/dist/services/part/part-search.service.d.ts.map +0 -1
  591. package/dist/services/part/part-search.service.js +0 -565
  592. package/dist/services/part/part-search.service.js.map +0 -1
  593. package/dist/services/part/schemas.d.ts +0 -232
  594. package/dist/services/part/schemas.d.ts.map +0 -1
  595. package/dist/services/part/schemas.js +0 -167
  596. package/dist/services/part/schemas.js.map +0 -1
  597. package/dist/services/part/section-screenshot-fallback.service.d.ts +0 -101
  598. package/dist/services/part/section-screenshot-fallback.service.d.ts.map +0 -1
  599. package/dist/services/part/section-screenshot-fallback.service.js +0 -489
  600. package/dist/services/part/section-screenshot-fallback.service.js.map +0 -1
  601. package/dist/services/part/types.d.ts +0 -189
  602. package/dist/services/part/types.d.ts.map +0 -1
  603. package/dist/services/part/types.js +0 -139
  604. package/dist/services/part/types.js.map +0 -1
  605. package/dist/services/persistent-cache.d.ts +0 -209
  606. package/dist/services/persistent-cache.d.ts.map +0 -1
  607. package/dist/services/persistent-cache.js +0 -633
  608. package/dist/services/persistent-cache.js.map +0 -1
  609. package/dist/services/preference-profile.service.d.ts +0 -143
  610. package/dist/services/preference-profile.service.d.ts.map +0 -1
  611. package/dist/services/preference-profile.service.js +0 -604
  612. package/dist/services/preference-profile.service.js.map +0 -1
  613. package/dist/services/preference-rerank.helper.d.ts +0 -128
  614. package/dist/services/preference-rerank.helper.d.ts.map +0 -1
  615. package/dist/services/preference-rerank.helper.js +0 -397
  616. package/dist/services/preference-rerank.helper.js.map +0 -1
  617. package/dist/services/production-guard.d.ts +0 -213
  618. package/dist/services/production-guard.d.ts.map +0 -1
  619. package/dist/services/production-guard.js +0 -357
  620. package/dist/services/production-guard.js.map +0 -1
  621. package/dist/services/project-context-analyzer.d.ts +0 -194
  622. package/dist/services/project-context-analyzer.d.ts.map +0 -1
  623. package/dist/services/project-context-analyzer.js +0 -747
  624. package/dist/services/project-context-analyzer.js.map +0 -1
  625. package/dist/services/quality/axe-accessibility.service.d.ts +0 -87
  626. package/dist/services/quality/axe-accessibility.service.d.ts.map +0 -1
  627. package/dist/services/quality/axe-accessibility.service.js +0 -188
  628. package/dist/services/quality/axe-accessibility.service.js.map +0 -1
  629. package/dist/services/quality/axe-core-shared.d.ts +0 -108
  630. package/dist/services/quality/axe-core-shared.d.ts.map +0 -1
  631. package/dist/services/quality/axe-core-shared.js +0 -136
  632. package/dist/services/quality/axe-core-shared.js.map +0 -1
  633. package/dist/services/quality/benchmark.service.d.ts +0 -178
  634. package/dist/services/quality/benchmark.service.d.ts.map +0 -1
  635. package/dist/services/quality/benchmark.service.js +0 -394
  636. package/dist/services/quality/benchmark.service.js.map +0 -1
  637. package/dist/services/quality/content-gap-detector.service.d.ts +0 -133
  638. package/dist/services/quality/content-gap-detector.service.d.ts.map +0 -1
  639. package/dist/services/quality/content-gap-detector.service.js +0 -364
  640. package/dist/services/quality/content-gap-detector.service.js.map +0 -1
  641. package/dist/services/quality/index.d.ts +0 -12
  642. package/dist/services/quality/index.d.ts.map +0 -1
  643. package/dist/services/quality/index.js +0 -12
  644. package/dist/services/quality/index.js.map +0 -1
  645. package/dist/services/quality/pattern-matcher.service.d.ts +0 -195
  646. package/dist/services/quality/pattern-matcher.service.d.ts.map +0 -1
  647. package/dist/services/quality/pattern-matcher.service.js +0 -630
  648. package/dist/services/quality/pattern-matcher.service.js.map +0 -1
  649. package/dist/services/quality/playwright-axe.service.d.ts +0 -84
  650. package/dist/services/quality/playwright-axe.service.d.ts.map +0 -1
  651. package/dist/services/quality/playwright-axe.service.js +0 -267
  652. package/dist/services/quality/playwright-axe.service.js.map +0 -1
  653. package/dist/services/quality/quality-evaluate.service.interface.d.ts +0 -216
  654. package/dist/services/quality/quality-evaluate.service.interface.d.ts.map +0 -1
  655. package/dist/services/quality/quality-evaluate.service.interface.js +0 -5
  656. package/dist/services/quality/quality-evaluate.service.interface.js.map +0 -1
  657. package/dist/services/quality/visual-design-analyzer.service.d.ts +0 -72
  658. package/dist/services/quality/visual-design-analyzer.service.d.ts.map +0 -1
  659. package/dist/services/quality/visual-design-analyzer.service.js +0 -762
  660. package/dist/services/quality/visual-design-analyzer.service.js.map +0 -1
  661. package/dist/services/quality-evaluate-service-export.d.ts +0 -122
  662. package/dist/services/quality-evaluate-service-export.d.ts.map +0 -1
  663. package/dist/services/quality-evaluate-service-export.js +0 -138
  664. package/dist/services/quality-evaluate-service-export.js.map +0 -1
  665. package/dist/services/quality-search.service.d.ts +0 -20
  666. package/dist/services/quality-search.service.d.ts.map +0 -1
  667. package/dist/services/quality-search.service.js +0 -260
  668. package/dist/services/quality-search.service.js.map +0 -1
  669. package/dist/services/query-analyzer.d.ts +0 -107
  670. package/dist/services/query-analyzer.d.ts.map +0 -1
  671. package/dist/services/query-analyzer.js +0 -222
  672. package/dist/services/query-analyzer.js.map +0 -1
  673. package/dist/services/query-context-analyzer.d.ts +0 -85
  674. package/dist/services/query-context-analyzer.d.ts.map +0 -1
  675. package/dist/services/query-context-analyzer.js +0 -728
  676. package/dist/services/query-context-analyzer.js.map +0 -1
  677. package/dist/services/queue-cleanup.service.d.ts +0 -102
  678. package/dist/services/queue-cleanup.service.d.ts.map +0 -1
  679. package/dist/services/queue-cleanup.service.js +0 -259
  680. package/dist/services/queue-cleanup.service.js.map +0 -1
  681. package/dist/services/responsive/difference-detector.service.d.ts +0 -77
  682. package/dist/services/responsive/difference-detector.service.d.ts.map +0 -1
  683. package/dist/services/responsive/difference-detector.service.js +0 -525
  684. package/dist/services/responsive/difference-detector.service.js.map +0 -1
  685. package/dist/services/responsive/index.d.ts +0 -16
  686. package/dist/services/responsive/index.d.ts.map +0 -1
  687. package/dist/services/responsive/index.js +0 -60
  688. package/dist/services/responsive/index.js.map +0 -1
  689. package/dist/services/responsive/multi-viewport-capture.service.d.ts +0 -103
  690. package/dist/services/responsive/multi-viewport-capture.service.d.ts.map +0 -1
  691. package/dist/services/responsive/multi-viewport-capture.service.js +0 -841
  692. package/dist/services/responsive/multi-viewport-capture.service.js.map +0 -1
  693. package/dist/services/responsive/responsive-analysis-embedding.service.d.ts +0 -114
  694. package/dist/services/responsive/responsive-analysis-embedding.service.d.ts.map +0 -1
  695. package/dist/services/responsive/responsive-analysis-embedding.service.js +0 -232
  696. package/dist/services/responsive/responsive-analysis-embedding.service.js.map +0 -1
  697. package/dist/services/responsive/responsive-analysis.service.d.ts +0 -37
  698. package/dist/services/responsive/responsive-analysis.service.d.ts.map +0 -1
  699. package/dist/services/responsive/responsive-analysis.service.js +0 -262
  700. package/dist/services/responsive/responsive-analysis.service.js.map +0 -1
  701. package/dist/services/responsive/responsive-persistence.service.d.ts +0 -45
  702. package/dist/services/responsive/responsive-persistence.service.d.ts.map +0 -1
  703. package/dist/services/responsive/responsive-persistence.service.js +0 -102
  704. package/dist/services/responsive/responsive-persistence.service.js.map +0 -1
  705. package/dist/services/responsive/responsive-quality-evaluator.service.d.ts +0 -80
  706. package/dist/services/responsive/responsive-quality-evaluator.service.d.ts.map +0 -1
  707. package/dist/services/responsive/responsive-quality-evaluator.service.js +0 -448
  708. package/dist/services/responsive/responsive-quality-evaluator.service.js.map +0 -1
  709. package/dist/services/responsive/shared-browser-manager.d.ts +0 -65
  710. package/dist/services/responsive/shared-browser-manager.d.ts.map +0 -1
  711. package/dist/services/responsive/shared-browser-manager.js +0 -112
  712. package/dist/services/responsive/shared-browser-manager.js.map +0 -1
  713. package/dist/services/responsive/types.d.ts +0 -367
  714. package/dist/services/responsive/types.d.ts.map +0 -1
  715. package/dist/services/responsive/types.js +0 -5
  716. package/dist/services/responsive/types.js.map +0 -1
  717. package/dist/services/responsive/viewport-diff.service.d.ts +0 -49
  718. package/dist/services/responsive/viewport-diff.service.d.ts.map +0 -1
  719. package/dist/services/responsive/viewport-diff.service.js +0 -178
  720. package/dist/services/responsive/viewport-diff.service.js.map +0 -1
  721. package/dist/services/responsive-search.service.d.ts +0 -52
  722. package/dist/services/responsive-search.service.d.ts.map +0 -1
  723. package/dist/services/responsive-search.service.js +0 -136
  724. package/dist/services/responsive-search.service.js.map +0 -1
  725. package/dist/services/search/mood-brandtone-search.service.d.ts +0 -99
  726. package/dist/services/search/mood-brandtone-search.service.d.ts.map +0 -1
  727. package/dist/services/search/mood-brandtone-search.service.js +0 -310
  728. package/dist/services/search/mood-brandtone-search.service.js.map +0 -1
  729. package/dist/services/search-performance.service.d.ts +0 -118
  730. package/dist/services/search-performance.service.d.ts.map +0 -1
  731. package/dist/services/search-performance.service.js +0 -181
  732. package/dist/services/search-performance.service.js.map +0 -1
  733. package/dist/services/section-screenshot.service.d.ts +0 -163
  734. package/dist/services/section-screenshot.service.d.ts.map +0 -1
  735. package/dist/services/section-screenshot.service.js +0 -363
  736. package/dist/services/section-screenshot.service.js.map +0 -1
  737. package/dist/services/service-client.d.ts +0 -181
  738. package/dist/services/service-client.d.ts.map +0 -1
  739. package/dist/services/service-client.js +0 -450
  740. package/dist/services/service-client.js.map +0 -1
  741. package/dist/services/service-initializer.d.ts +0 -174
  742. package/dist/services/service-initializer.d.ts.map +0 -1
  743. package/dist/services/service-initializer.js +0 -942
  744. package/dist/services/service-initializer.js.map +0 -1
  745. package/dist/services/storage/index.d.ts +0 -7
  746. package/dist/services/storage/index.d.ts.map +0 -1
  747. package/dist/services/storage/index.js +0 -14
  748. package/dist/services/storage/index.js.map +0 -1
  749. package/dist/services/storage/local-storage.provider.d.ts +0 -140
  750. package/dist/services/storage/local-storage.provider.d.ts.map +0 -1
  751. package/dist/services/storage/local-storage.provider.js +0 -333
  752. package/dist/services/storage/local-storage.provider.js.map +0 -1
  753. package/dist/services/style/index.d.ts +0 -7
  754. package/dist/services/style/index.d.ts.map +0 -1
  755. package/dist/services/style/index.js +0 -25
  756. package/dist/services/style/index.js.map +0 -1
  757. package/dist/services/style/palette-service.d.ts +0 -212
  758. package/dist/services/style/palette-service.d.ts.map +0 -1
  759. package/dist/services/style/palette-service.js +0 -423
  760. package/dist/services/style/palette-service.js.map +0 -1
  761. package/dist/services/style/prisma-palette-repository.d.ts +0 -35
  762. package/dist/services/style/prisma-palette-repository.d.ts.map +0 -1
  763. package/dist/services/style/prisma-palette-repository.js +0 -165
  764. package/dist/services/style/prisma-palette-repository.js.map +0 -1
  765. package/dist/services/vision/brandtone.analyzer.d.ts +0 -104
  766. package/dist/services/vision/brandtone.analyzer.d.ts.map +0 -1
  767. package/dist/services/vision/brandtone.analyzer.js +0 -279
  768. package/dist/services/vision/brandtone.analyzer.js.map +0 -1
  769. package/dist/services/vision/hardware-detector.d.ts +0 -166
  770. package/dist/services/vision/hardware-detector.d.ts.map +0 -1
  771. package/dist/services/vision/hardware-detector.js +0 -330
  772. package/dist/services/vision/hardware-detector.js.map +0 -1
  773. package/dist/services/vision/image-optimizer.d.ts +0 -152
  774. package/dist/services/vision/image-optimizer.d.ts.map +0 -1
  775. package/dist/services/vision/image-optimizer.js +0 -266
  776. package/dist/services/vision/image-optimizer.js.map +0 -1
  777. package/dist/services/vision/index.d.ts +0 -26
  778. package/dist/services/vision/index.d.ts.map +0 -1
  779. package/dist/services/vision/index.js +0 -80
  780. package/dist/services/vision/index.js.map +0 -1
  781. package/dist/services/vision/llama-vision-adapter.d.ts +0 -178
  782. package/dist/services/vision/llama-vision-adapter.d.ts.map +0 -1
  783. package/dist/services/vision/llama-vision-adapter.js +0 -307
  784. package/dist/services/vision/llama-vision-adapter.js.map +0 -1
  785. package/dist/services/vision/mcp-progress-adapter.d.ts +0 -128
  786. package/dist/services/vision/mcp-progress-adapter.d.ts.map +0 -1
  787. package/dist/services/vision/mcp-progress-adapter.js +0 -150
  788. package/dist/services/vision/mcp-progress-adapter.js.map +0 -1
  789. package/dist/services/vision/mood.analyzer.d.ts +0 -74
  790. package/dist/services/vision/mood.analyzer.d.ts.map +0 -1
  791. package/dist/services/vision/mood.analyzer.js +0 -258
  792. package/dist/services/vision/mood.analyzer.js.map +0 -1
  793. package/dist/services/vision/ollama-readiness-probe.d.ts +0 -87
  794. package/dist/services/vision/ollama-readiness-probe.d.ts.map +0 -1
  795. package/dist/services/vision/ollama-readiness-probe.js +0 -211
  796. package/dist/services/vision/ollama-readiness-probe.js.map +0 -1
  797. package/dist/services/vision/ollama-vision-client.d.ts +0 -129
  798. package/dist/services/vision/ollama-vision-client.d.ts.map +0 -1
  799. package/dist/services/vision/ollama-vision-client.js +0 -478
  800. package/dist/services/vision/ollama-vision-client.js.map +0 -1
  801. package/dist/services/vision/progress-reporter.d.ts +0 -140
  802. package/dist/services/vision/progress-reporter.d.ts.map +0 -1
  803. package/dist/services/vision/progress-reporter.js +0 -306
  804. package/dist/services/vision/progress-reporter.js.map +0 -1
  805. package/dist/services/vision/scroll-vision-capture.service.d.ts +0 -117
  806. package/dist/services/vision/scroll-vision-capture.service.d.ts.map +0 -1
  807. package/dist/services/vision/scroll-vision-capture.service.js +0 -266
  808. package/dist/services/vision/scroll-vision-capture.service.js.map +0 -1
  809. package/dist/services/vision/scroll-vision-persistence.service.d.ts +0 -48
  810. package/dist/services/vision/scroll-vision-persistence.service.d.ts.map +0 -1
  811. package/dist/services/vision/scroll-vision-persistence.service.js +0 -161
  812. package/dist/services/vision/scroll-vision-persistence.service.js.map +0 -1
  813. package/dist/services/vision/scroll-vision.analyzer.d.ts +0 -90
  814. package/dist/services/vision/scroll-vision.analyzer.d.ts.map +0 -1
  815. package/dist/services/vision/scroll-vision.analyzer.js +0 -280
  816. package/dist/services/vision/scroll-vision.analyzer.js.map +0 -1
  817. package/dist/services/vision/theme.analyzer.d.ts +0 -108
  818. package/dist/services/vision/theme.analyzer.d.ts.map +0 -1
  819. package/dist/services/vision/theme.analyzer.js +0 -315
  820. package/dist/services/vision/theme.analyzer.js.map +0 -1
  821. package/dist/services/vision/timeout-calculator.d.ts +0 -85
  822. package/dist/services/vision/timeout-calculator.d.ts.map +0 -1
  823. package/dist/services/vision/timeout-calculator.js +0 -142
  824. package/dist/services/vision/timeout-calculator.js.map +0 -1
  825. package/dist/services/vision/vision-fallback.service.d.ts +0 -121
  826. package/dist/services/vision/vision-fallback.service.d.ts.map +0 -1
  827. package/dist/services/vision/vision-fallback.service.js +0 -253
  828. package/dist/services/vision/vision-fallback.service.js.map +0 -1
  829. package/dist/services/vision/vision.cache.d.ts +0 -124
  830. package/dist/services/vision/vision.cache.d.ts.map +0 -1
  831. package/dist/services/vision/vision.cache.js +0 -261
  832. package/dist/services/vision/vision.cache.js.map +0 -1
  833. package/dist/services/vision/vision.errors.d.ts +0 -104
  834. package/dist/services/vision/vision.errors.d.ts.map +0 -1
  835. package/dist/services/vision/vision.errors.js +0 -133
  836. package/dist/services/vision/vision.errors.js.map +0 -1
  837. package/dist/services/vision/vision.prompts.d.ts +0 -47
  838. package/dist/services/vision/vision.prompts.d.ts.map +0 -1
  839. package/dist/services/vision/vision.prompts.js +0 -272
  840. package/dist/services/vision/vision.prompts.js.map +0 -1
  841. package/dist/services/vision/vram-utils.d.ts +0 -22
  842. package/dist/services/vision/vram-utils.d.ts.map +0 -1
  843. package/dist/services/vision/vram-utils.js +0 -57
  844. package/dist/services/vision/vram-utils.js.map +0 -1
  845. package/dist/services/vision-adapter/index.d.ts +0 -18
  846. package/dist/services/vision-adapter/index.d.ts.map +0 -1
  847. package/dist/services/vision-adapter/index.js +0 -31
  848. package/dist/services/vision-adapter/index.js.map +0 -1
  849. package/dist/services/vision-adapter/interface.d.ts +0 -1434
  850. package/dist/services/vision-adapter/interface.d.ts.map +0 -1
  851. package/dist/services/vision-adapter/interface.js +0 -326
  852. package/dist/services/vision-adapter/interface.js.map +0 -1
  853. package/dist/services/vision-adapter/llama-vision.adapter.d.ts +0 -373
  854. package/dist/services/vision-adapter/llama-vision.adapter.d.ts.map +0 -1
  855. package/dist/services/vision-adapter/llama-vision.adapter.js +0 -1751
  856. package/dist/services/vision-adapter/llama-vision.adapter.js.map +0 -1
  857. package/dist/services/vision-adapter/llama-vision.prompts.d.ts +0 -63
  858. package/dist/services/vision-adapter/llama-vision.prompts.d.ts.map +0 -1
  859. package/dist/services/vision-adapter/llama-vision.prompts.js +0 -234
  860. package/dist/services/vision-adapter/llama-vision.prompts.js.map +0 -1
  861. package/dist/services/vision-adapter/llama-vision.types.d.ts +0 -68
  862. package/dist/services/vision-adapter/llama-vision.types.d.ts.map +0 -1
  863. package/dist/services/vision-adapter/llama-vision.types.js +0 -21
  864. package/dist/services/vision-adapter/llama-vision.types.js.map +0 -1
  865. package/dist/services/vision-adapter/local.adapter.d.ts +0 -185
  866. package/dist/services/vision-adapter/local.adapter.d.ts.map +0 -1
  867. package/dist/services/vision-adapter/local.adapter.js +0 -835
  868. package/dist/services/vision-adapter/local.adapter.js.map +0 -1
  869. package/dist/services/vision-adapter/mock.adapter.d.ts +0 -174
  870. package/dist/services/vision-adapter/mock.adapter.d.ts.map +0 -1
  871. package/dist/services/vision-adapter/mock.adapter.js +0 -812
  872. package/dist/services/vision-adapter/mock.adapter.js.map +0 -1
  873. package/dist/services/vision-embedding-search.service.d.ts +0 -205
  874. package/dist/services/vision-embedding-search.service.d.ts.map +0 -1
  875. package/dist/services/vision-embedding-search.service.js +0 -742
  876. package/dist/services/vision-embedding-search.service.js.map +0 -1
  877. package/dist/services/vision-embedding.service.d.ts +0 -150
  878. package/dist/services/vision-embedding.service.d.ts.map +0 -1
  879. package/dist/services/vision-embedding.service.js +0 -461
  880. package/dist/services/vision-embedding.service.js.map +0 -1
  881. package/dist/services/visual/css-variable-extractor.service.d.ts +0 -97
  882. package/dist/services/visual/css-variable-extractor.service.d.ts.map +0 -1
  883. package/dist/services/visual/css-variable-extractor.service.js +0 -460
  884. package/dist/services/visual/css-variable-extractor.service.js.map +0 -1
  885. package/dist/services/visual/typography-extractor.service.d.ts +0 -137
  886. package/dist/services/visual/typography-extractor.service.d.ts.map +0 -1
  887. package/dist/services/visual/typography-extractor.service.js +0 -539
  888. package/dist/services/visual/typography-extractor.service.js.map +0 -1
  889. package/dist/services/visual-extractor/color-extractor.service.d.ts +0 -55
  890. package/dist/services/visual-extractor/color-extractor.service.d.ts.map +0 -1
  891. package/dist/services/visual-extractor/color-extractor.service.js +0 -281
  892. package/dist/services/visual-extractor/color-extractor.service.js.map +0 -1
  893. package/dist/services/visual-extractor/density-calculator.service.d.ts +0 -85
  894. package/dist/services/visual-extractor/density-calculator.service.d.ts.map +0 -1
  895. package/dist/services/visual-extractor/density-calculator.service.js +0 -369
  896. package/dist/services/visual-extractor/density-calculator.service.js.map +0 -1
  897. package/dist/services/visual-extractor/gradient-detector.service.d.ts +0 -134
  898. package/dist/services/visual-extractor/gradient-detector.service.d.ts.map +0 -1
  899. package/dist/services/visual-extractor/gradient-detector.service.js +0 -1172
  900. package/dist/services/visual-extractor/gradient-detector.service.js.map +0 -1
  901. package/dist/services/visual-extractor/image-utils.d.ts +0 -135
  902. package/dist/services/visual-extractor/image-utils.d.ts.map +0 -1
  903. package/dist/services/visual-extractor/image-utils.js +0 -305
  904. package/dist/services/visual-extractor/image-utils.js.map +0 -1
  905. package/dist/services/visual-extractor/pixel-theme-detector.service.d.ts +0 -58
  906. package/dist/services/visual-extractor/pixel-theme-detector.service.d.ts.map +0 -1
  907. package/dist/services/visual-extractor/pixel-theme-detector.service.js +0 -358
  908. package/dist/services/visual-extractor/pixel-theme-detector.service.js.map +0 -1
  909. package/dist/services/visual-extractor/theme-detector.service.d.ts +0 -101
  910. package/dist/services/visual-extractor/theme-detector.service.d.ts.map +0 -1
  911. package/dist/services/visual-extractor/theme-detector.service.js +0 -463
  912. package/dist/services/visual-extractor/theme-detector.service.js.map +0 -1
  913. package/dist/services/visual-extractor/visual-decoration-detector.service.d.ts +0 -43
  914. package/dist/services/visual-extractor/visual-decoration-detector.service.d.ts.map +0 -1
  915. package/dist/services/visual-extractor/visual-decoration-detector.service.js +0 -628
  916. package/dist/services/visual-extractor/visual-decoration-detector.service.js.map +0 -1
  917. package/dist/services/visual-extractor/visual-feature-merger.service.d.ts +0 -230
  918. package/dist/services/visual-extractor/visual-feature-merger.service.d.ts.map +0 -1
  919. package/dist/services/visual-extractor/visual-feature-merger.service.js +0 -482
  920. package/dist/services/visual-extractor/visual-feature-merger.service.js.map +0 -1
  921. package/dist/services/web-page.service.d.ts +0 -80
  922. package/dist/services/web-page.service.d.ts.map +0 -1
  923. package/dist/services/web-page.service.js +0 -211
  924. package/dist/services/web-page.service.js.map +0 -1
  925. package/dist/services/worker-constants.d.ts +0 -40
  926. package/dist/services/worker-constants.d.ts.map +0 -1
  927. package/dist/services/worker-constants.js +0 -51
  928. package/dist/services/worker-constants.js.map +0 -1
  929. package/dist/services/worker-db-save.service.d.ts +0 -311
  930. package/dist/services/worker-db-save.service.d.ts.map +0 -1
  931. package/dist/services/worker-db-save.service.js +0 -771
  932. package/dist/services/worker-db-save.service.js.map +0 -1
  933. package/dist/services/worker-memory-monitor.service.d.ts +0 -24
  934. package/dist/services/worker-memory-monitor.service.d.ts.map +0 -1
  935. package/dist/services/worker-memory-monitor.service.js +0 -105
  936. package/dist/services/worker-memory-monitor.service.js.map +0 -1
  937. package/dist/services/worker-memory-profile.d.ts +0 -65
  938. package/dist/services/worker-memory-profile.d.ts.map +0 -1
  939. package/dist/services/worker-memory-profile.js +0 -225
  940. package/dist/services/worker-memory-profile.js.map +0 -1
  941. package/dist/services/worker-stall-recovery.service.d.ts +0 -166
  942. package/dist/services/worker-stall-recovery.service.d.ts.map +0 -1
  943. package/dist/services/worker-stall-recovery.service.js +0 -335
  944. package/dist/services/worker-stall-recovery.service.js.map +0 -1
  945. package/dist/services/worker-supervisor.service.d.ts +0 -145
  946. package/dist/services/worker-supervisor.service.d.ts.map +0 -1
  947. package/dist/services/worker-supervisor.service.js +0 -635
  948. package/dist/services/worker-supervisor.service.js.map +0 -1
  949. package/dist/tools/background/schemas.d.ts +0 -85
  950. package/dist/tools/background/schemas.d.ts.map +0 -1
  951. package/dist/tools/background/schemas.js +0 -79
  952. package/dist/tools/background/schemas.js.map +0 -1
  953. package/dist/tools/background/search.tool.d.ts +0 -179
  954. package/dist/tools/background/search.tool.d.ts.map +0 -1
  955. package/dist/tools/background/search.tool.js +0 -318
  956. package/dist/tools/background/search.tool.js.map +0 -1
  957. package/dist/tools/brief/index.d.ts +0 -10
  958. package/dist/tools/brief/index.d.ts.map +0 -1
  959. package/dist/tools/brief/index.js +0 -54
  960. package/dist/tools/brief/index.js.map +0 -1
  961. package/dist/tools/brief/schemas.d.ts +0 -750
  962. package/dist/tools/brief/schemas.d.ts.map +0 -1
  963. package/dist/tools/brief/schemas.js +0 -212
  964. package/dist/tools/brief/schemas.js.map +0 -1
  965. package/dist/tools/brief/validate.handler.d.ts +0 -149
  966. package/dist/tools/brief/validate.handler.d.ts.map +0 -1
  967. package/dist/tools/brief/validate.handler.js +0 -247
  968. package/dist/tools/brief/validate.handler.js.map +0 -1
  969. package/dist/tools/brief/validate.service.d.ts +0 -100
  970. package/dist/tools/brief/validate.service.d.ts.map +0 -1
  971. package/dist/tools/brief/validate.service.js +0 -296
  972. package/dist/tools/brief/validate.service.js.map +0 -1
  973. package/dist/tools/common/error-codes.d.ts +0 -35
  974. package/dist/tools/common/error-codes.d.ts.map +0 -1
  975. package/dist/tools/common/error-codes.js +0 -92
  976. package/dist/tools/common/error-codes.js.map +0 -1
  977. package/dist/tools/common/index.d.ts +0 -7
  978. package/dist/tools/common/index.d.ts.map +0 -1
  979. package/dist/tools/common/index.js +0 -20
  980. package/dist/tools/common/index.js.map +0 -1
  981. package/dist/tools/index.d.ts +0 -2756
  982. package/dist/tools/index.d.ts.map +0 -1
  983. package/dist/tools/index.js +0 -506
  984. package/dist/tools/index.js.map +0 -1
  985. package/dist/tools/layout/batch-ingest.tool.d.ts +0 -82
  986. package/dist/tools/layout/batch-ingest.tool.d.ts.map +0 -1
  987. package/dist/tools/layout/batch-ingest.tool.js +0 -410
  988. package/dist/tools/layout/batch-ingest.tool.js.map +0 -1
  989. package/dist/tools/layout/index.d.ts +0 -13
  990. package/dist/tools/layout/index.d.ts.map +0 -1
  991. package/dist/tools/layout/index.js +0 -62
  992. package/dist/tools/layout/index.js.map +0 -1
  993. package/dist/tools/layout/ingest.tool.d.ts +0 -338
  994. package/dist/tools/layout/ingest.tool.d.ts.map +0 -1
  995. package/dist/tools/layout/ingest.tool.js +0 -1308
  996. package/dist/tools/layout/ingest.tool.js.map +0 -1
  997. package/dist/tools/layout/inspect/index.d.ts +0 -11
  998. package/dist/tools/layout/inspect/index.d.ts.map +0 -1
  999. package/dist/tools/layout/inspect/index.js +0 -55
  1000. package/dist/tools/layout/inspect/index.js.map +0 -1
  1001. package/dist/tools/layout/inspect/inspect.schemas.d.ts +0 -4130
  1002. package/dist/tools/layout/inspect/inspect.schemas.d.ts.map +0 -1
  1003. package/dist/tools/layout/inspect/inspect.schemas.js +0 -400
  1004. package/dist/tools/layout/inspect/inspect.schemas.js.map +0 -1
  1005. package/dist/tools/layout/inspect/inspect.tool.d.ts +0 -164
  1006. package/dist/tools/layout/inspect/inspect.tool.d.ts.map +0 -1
  1007. package/dist/tools/layout/inspect/inspect.tool.js +0 -738
  1008. package/dist/tools/layout/inspect/inspect.tool.js.map +0 -1
  1009. package/dist/tools/layout/inspect/inspect.utils.d.ts +0 -200
  1010. package/dist/tools/layout/inspect/inspect.utils.d.ts.map +0 -1
  1011. package/dist/tools/layout/inspect/inspect.utils.js +0 -1104
  1012. package/dist/tools/layout/inspect/inspect.utils.js.map +0 -1
  1013. package/dist/tools/layout/inspect/visual-extractors.schemas.d.ts +0 -3372
  1014. package/dist/tools/layout/inspect/visual-extractors.schemas.d.ts.map +0 -1
  1015. package/dist/tools/layout/inspect/visual-extractors.schemas.js +0 -558
  1016. package/dist/tools/layout/inspect/visual-extractors.schemas.js.map +0 -1
  1017. package/dist/tools/layout/inspect/visual-extractors.utils.d.ts +0 -86
  1018. package/dist/tools/layout/inspect/visual-extractors.utils.d.ts.map +0 -1
  1019. package/dist/tools/layout/inspect/visual-extractors.utils.js +0 -231
  1020. package/dist/tools/layout/inspect/visual-extractors.utils.js.map +0 -1
  1021. package/dist/tools/layout/schemas.d.ts +0 -11074
  1022. package/dist/tools/layout/schemas.d.ts.map +0 -1
  1023. package/dist/tools/layout/schemas.js +0 -1497
  1024. package/dist/tools/layout/schemas.js.map +0 -1
  1025. package/dist/tools/layout/search.tool.d.ts +0 -470
  1026. package/dist/tools/layout/search.tool.d.ts.map +0 -1
  1027. package/dist/tools/layout/search.tool.js +0 -1582
  1028. package/dist/tools/layout/search.tool.js.map +0 -1
  1029. package/dist/tools/layout/to-code.tool.d.ts +0 -280
  1030. package/dist/tools/layout/to-code.tool.d.ts.map +0 -1
  1031. package/dist/tools/layout/to-code.tool.js +0 -317
  1032. package/dist/tools/layout/to-code.tool.js.map +0 -1
  1033. package/dist/tools/motion/analyze-frames.handler.d.ts +0 -157
  1034. package/dist/tools/motion/analyze-frames.handler.d.ts.map +0 -1
  1035. package/dist/tools/motion/analyze-frames.handler.js +0 -263
  1036. package/dist/tools/motion/analyze-frames.handler.js.map +0 -1
  1037. package/dist/tools/motion/analyze-frames.schema.d.ts +0 -4599
  1038. package/dist/tools/motion/analyze-frames.schema.d.ts.map +0 -1
  1039. package/dist/tools/motion/analyze-frames.schema.js +0 -420
  1040. package/dist/tools/motion/analyze-frames.schema.js.map +0 -1
  1041. package/dist/tools/motion/css-mode-handler.d.ts +0 -70
  1042. package/dist/tools/motion/css-mode-handler.d.ts.map +0 -1
  1043. package/dist/tools/motion/css-mode-handler.js +0 -754
  1044. package/dist/tools/motion/css-mode-handler.js.map +0 -1
  1045. package/dist/tools/motion/detect.schemas.d.ts +0 -14288
  1046. package/dist/tools/motion/detect.schemas.d.ts.map +0 -1
  1047. package/dist/tools/motion/detect.schemas.js +0 -1715
  1048. package/dist/tools/motion/detect.schemas.js.map +0 -1
  1049. package/dist/tools/motion/detect.tool.d.ts +0 -195
  1050. package/dist/tools/motion/detect.tool.d.ts.map +0 -1
  1051. package/dist/tools/motion/detect.tool.js +0 -1421
  1052. package/dist/tools/motion/detect.tool.js.map +0 -1
  1053. package/dist/tools/motion/detection-modes.d.ts +0 -72
  1054. package/dist/tools/motion/detection-modes.d.ts.map +0 -1
  1055. package/dist/tools/motion/detection-modes.js +0 -353
  1056. package/dist/tools/motion/detection-modes.js.map +0 -1
  1057. package/dist/tools/motion/di-factories.d.ts +0 -341
  1058. package/dist/tools/motion/di-factories.d.ts.map +0 -1
  1059. package/dist/tools/motion/di-factories.js +0 -376
  1060. package/dist/tools/motion/di-factories.js.map +0 -1
  1061. package/dist/tools/motion/index.d.ts +0 -12
  1062. package/dist/tools/motion/index.d.ts.map +0 -1
  1063. package/dist/tools/motion/index.js +0 -146
  1064. package/dist/tools/motion/index.js.map +0 -1
  1065. package/dist/tools/motion/pattern-converter.d.ts +0 -49
  1066. package/dist/tools/motion/pattern-converter.d.ts.map +0 -1
  1067. package/dist/tools/motion/pattern-converter.js +0 -493
  1068. package/dist/tools/motion/pattern-converter.js.map +0 -1
  1069. package/dist/tools/motion/schemas.d.ts +0 -10
  1070. package/dist/tools/motion/schemas.d.ts.map +0 -1
  1071. package/dist/tools/motion/schemas.js +0 -28
  1072. package/dist/tools/motion/schemas.js.map +0 -1
  1073. package/dist/tools/motion/search.schemas.d.ts +0 -7500
  1074. package/dist/tools/motion/search.schemas.d.ts.map +0 -1
  1075. package/dist/tools/motion/search.schemas.js +0 -596
  1076. package/dist/tools/motion/search.schemas.js.map +0 -1
  1077. package/dist/tools/motion/search.tool.d.ts +0 -416
  1078. package/dist/tools/motion/search.tool.d.ts.map +0 -1
  1079. package/dist/tools/motion/search.tool.js +0 -2088
  1080. package/dist/tools/motion/search.tool.js.map +0 -1
  1081. package/dist/tools/motion/shared.schemas.d.ts +0 -994
  1082. package/dist/tools/motion/shared.schemas.d.ts.map +0 -1
  1083. package/dist/tools/motion/shared.schemas.js +0 -354
  1084. package/dist/tools/motion/shared.schemas.js.map +0 -1
  1085. package/dist/tools/narrative/analyze.tool.d.ts +0 -96
  1086. package/dist/tools/narrative/analyze.tool.d.ts.map +0 -1
  1087. package/dist/tools/narrative/analyze.tool.js +0 -396
  1088. package/dist/tools/narrative/analyze.tool.js.map +0 -1
  1089. package/dist/tools/narrative/index.d.ts +0 -15
  1090. package/dist/tools/narrative/index.d.ts.map +0 -1
  1091. package/dist/tools/narrative/index.js +0 -83
  1092. package/dist/tools/narrative/index.js.map +0 -1
  1093. package/dist/tools/narrative/schemas.d.ts +0 -5553
  1094. package/dist/tools/narrative/schemas.d.ts.map +0 -1
  1095. package/dist/tools/narrative/schemas.js +0 -747
  1096. package/dist/tools/narrative/schemas.js.map +0 -1
  1097. package/dist/tools/narrative/search.tool.d.ts +0 -160
  1098. package/dist/tools/narrative/search.tool.d.ts.map +0 -1
  1099. package/dist/tools/narrative/search.tool.js +0 -434
  1100. package/dist/tools/narrative/search.tool.js.map +0 -1
  1101. package/dist/tools/page/analyze.tool.d.ts +0 -502
  1102. package/dist/tools/page/analyze.tool.d.ts.map +0 -1
  1103. package/dist/tools/page/analyze.tool.js +0 -875
  1104. package/dist/tools/page/analyze.tool.js.map +0 -1
  1105. package/dist/tools/page/get-job-status.tool.d.ts +0 -43
  1106. package/dist/tools/page/get-job-status.tool.d.ts.map +0 -1
  1107. package/dist/tools/page/get-job-status.tool.js +0 -178
  1108. package/dist/tools/page/get-job-status.tool.js.map +0 -1
  1109. package/dist/tools/page/handlers/db-handler.d.ts +0 -155
  1110. package/dist/tools/page/handlers/db-handler.d.ts.map +0 -1
  1111. package/dist/tools/page/handlers/db-handler.js +0 -368
  1112. package/dist/tools/page/handlers/db-handler.js.map +0 -1
  1113. package/dist/tools/page/handlers/embedding-handler.d.ts +0 -200
  1114. package/dist/tools/page/handlers/embedding-handler.d.ts.map +0 -1
  1115. package/dist/tools/page/handlers/embedding-handler.js +0 -541
  1116. package/dist/tools/page/handlers/embedding-handler.js.map +0 -1
  1117. package/dist/tools/page/handlers/execution-status-tracker.d.ts +0 -146
  1118. package/dist/tools/page/handlers/execution-status-tracker.d.ts.map +0 -1
  1119. package/dist/tools/page/handlers/execution-status-tracker.js +0 -348
  1120. package/dist/tools/page/handlers/execution-status-tracker.js.map +0 -1
  1121. package/dist/tools/page/handlers/js-animation-handler.d.ts +0 -197
  1122. package/dist/tools/page/handlers/js-animation-handler.d.ts.map +0 -1
  1123. package/dist/tools/page/handlers/js-animation-handler.js +0 -952
  1124. package/dist/tools/page/handlers/js-animation-handler.js.map +0 -1
  1125. package/dist/tools/page/handlers/layout-handler.d.ts +0 -31
  1126. package/dist/tools/page/handlers/layout-handler.d.ts.map +0 -1
  1127. package/dist/tools/page/handlers/layout-handler.js +0 -1181
  1128. package/dist/tools/page/handlers/layout-handler.js.map +0 -1
  1129. package/dist/tools/page/handlers/motion-handler.d.ts +0 -31
  1130. package/dist/tools/page/handlers/motion-handler.d.ts.map +0 -1
  1131. package/dist/tools/page/handlers/motion-handler.js +0 -940
  1132. package/dist/tools/page/handlers/motion-handler.js.map +0 -1
  1133. package/dist/tools/page/handlers/narrative-handler.d.ts +0 -23
  1134. package/dist/tools/page/handlers/narrative-handler.d.ts.map +0 -1
  1135. package/dist/tools/page/handlers/narrative-handler.js +0 -279
  1136. package/dist/tools/page/handlers/narrative-handler.js.map +0 -1
  1137. package/dist/tools/page/handlers/phased-db-handler.d.ts +0 -83
  1138. package/dist/tools/page/handlers/phased-db-handler.d.ts.map +0 -1
  1139. package/dist/tools/page/handlers/phased-db-handler.js +0 -120
  1140. package/dist/tools/page/handlers/phased-db-handler.js.map +0 -1
  1141. package/dist/tools/page/handlers/phased-executor.d.ts +0 -123
  1142. package/dist/tools/page/handlers/phased-executor.d.ts.map +0 -1
  1143. package/dist/tools/page/handlers/phased-executor.js +0 -205
  1144. package/dist/tools/page/handlers/phased-executor.js.map +0 -1
  1145. package/dist/tools/page/handlers/quality-handler.d.ts +0 -9
  1146. package/dist/tools/page/handlers/quality-handler.d.ts.map +0 -1
  1147. package/dist/tools/page/handlers/quality-handler.js +0 -100
  1148. package/dist/tools/page/handlers/quality-handler.js.map +0 -1
  1149. package/dist/tools/page/handlers/result-builder.d.ts +0 -105
  1150. package/dist/tools/page/handlers/result-builder.d.ts.map +0 -1
  1151. package/dist/tools/page/handlers/result-builder.js +0 -447
  1152. package/dist/tools/page/handlers/result-builder.js.map +0 -1
  1153. package/dist/tools/page/handlers/retry-strategy.d.ts +0 -106
  1154. package/dist/tools/page/handlers/retry-strategy.d.ts.map +0 -1
  1155. package/dist/tools/page/handlers/retry-strategy.js +0 -169
  1156. package/dist/tools/page/handlers/retry-strategy.js.map +0 -1
  1157. package/dist/tools/page/handlers/sync-processing.d.ts +0 -26
  1158. package/dist/tools/page/handlers/sync-processing.d.ts.map +0 -1
  1159. package/dist/tools/page/handlers/sync-processing.js +0 -1659
  1160. package/dist/tools/page/handlers/sync-processing.js.map +0 -1
  1161. package/dist/tools/page/handlers/timeout-utils.d.ts +0 -278
  1162. package/dist/tools/page/handlers/timeout-utils.d.ts.map +0 -1
  1163. package/dist/tools/page/handlers/timeout-utils.js +0 -600
  1164. package/dist/tools/page/handlers/timeout-utils.js.map +0 -1
  1165. package/dist/tools/page/handlers/types.d.ts +0 -1229
  1166. package/dist/tools/page/handlers/types.d.ts.map +0 -1
  1167. package/dist/tools/page/handlers/types.js +0 -21
  1168. package/dist/tools/page/handlers/types.js.map +0 -1
  1169. package/dist/tools/page/handlers/video-handler.d.ts +0 -11
  1170. package/dist/tools/page/handlers/video-handler.d.ts.map +0 -1
  1171. package/dist/tools/page/handlers/video-handler.js +0 -235
  1172. package/dist/tools/page/handlers/video-handler.js.map +0 -1
  1173. package/dist/tools/page/handlers/webgl-animation-handler.d.ts +0 -48
  1174. package/dist/tools/page/handlers/webgl-animation-handler.d.ts.map +0 -1
  1175. package/dist/tools/page/handlers/webgl-animation-handler.js +0 -237
  1176. package/dist/tools/page/handlers/webgl-animation-handler.js.map +0 -1
  1177. package/dist/tools/page/handlers/webgl-detector.d.ts +0 -184
  1178. package/dist/tools/page/handlers/webgl-detector.d.ts.map +0 -1
  1179. package/dist/tools/page/handlers/webgl-detector.js +0 -680
  1180. package/dist/tools/page/handlers/webgl-detector.js.map +0 -1
  1181. package/dist/tools/page/handlers/webgl-domains.d.ts +0 -133
  1182. package/dist/tools/page/handlers/webgl-domains.d.ts.map +0 -1
  1183. package/dist/tools/page/handlers/webgl-domains.js +0 -420
  1184. package/dist/tools/page/handlers/webgl-domains.js.map +0 -1
  1185. package/dist/tools/page/handlers/webgl-pre-detector.d.ts +0 -100
  1186. package/dist/tools/page/handlers/webgl-pre-detector.d.ts.map +0 -1
  1187. package/dist/tools/page/handlers/webgl-pre-detector.js +0 -248
  1188. package/dist/tools/page/handlers/webgl-pre-detector.js.map +0 -1
  1189. package/dist/tools/page/index.d.ts +0 -10
  1190. package/dist/tools/page/index.d.ts.map +0 -1
  1191. package/dist/tools/page/index.js +0 -84
  1192. package/dist/tools/page/index.js.map +0 -1
  1193. package/dist/tools/page/input.schemas.d.ts +0 -2223
  1194. package/dist/tools/page/input.schemas.d.ts.map +0 -1
  1195. package/dist/tools/page/input.schemas.js +0 -853
  1196. package/dist/tools/page/input.schemas.js.map +0 -1
  1197. package/dist/tools/page/output.schemas.d.ts +0 -26026
  1198. package/dist/tools/page/output.schemas.d.ts.map +0 -1
  1199. package/dist/tools/page/output.schemas.js +0 -1414
  1200. package/dist/tools/page/output.schemas.js.map +0 -1
  1201. package/dist/tools/page/schemas.d.ts +0 -10
  1202. package/dist/tools/page/schemas.d.ts.map +0 -1
  1203. package/dist/tools/page/schemas.js +0 -28
  1204. package/dist/tools/page/schemas.js.map +0 -1
  1205. package/dist/tools/page/shared.schemas.d.ts +0 -38
  1206. package/dist/tools/page/shared.schemas.d.ts.map +0 -1
  1207. package/dist/tools/page/shared.schemas.js +0 -69
  1208. package/dist/tools/page/shared.schemas.js.map +0 -1
  1209. package/dist/tools/part/compare.tool.d.ts +0 -106
  1210. package/dist/tools/part/compare.tool.d.ts.map +0 -1
  1211. package/dist/tools/part/compare.tool.js +0 -421
  1212. package/dist/tools/part/compare.tool.js.map +0 -1
  1213. package/dist/tools/part/inspect.tool.d.ts +0 -108
  1214. package/dist/tools/part/inspect.tool.d.ts.map +0 -1
  1215. package/dist/tools/part/inspect.tool.js +0 -279
  1216. package/dist/tools/part/inspect.tool.js.map +0 -1
  1217. package/dist/tools/part/search.tool.d.ts +0 -121
  1218. package/dist/tools/part/search.tool.d.ts.map +0 -1
  1219. package/dist/tools/part/search.tool.js +0 -381
  1220. package/dist/tools/part/search.tool.js.map +0 -1
  1221. package/dist/tools/preference/get.tool.d.ts +0 -74
  1222. package/dist/tools/preference/get.tool.d.ts.map +0 -1
  1223. package/dist/tools/preference/get.tool.js +0 -175
  1224. package/dist/tools/preference/get.tool.js.map +0 -1
  1225. package/dist/tools/preference/hear.tool.d.ts +0 -267
  1226. package/dist/tools/preference/hear.tool.d.ts.map +0 -1
  1227. package/dist/tools/preference/hear.tool.js +0 -268
  1228. package/dist/tools/preference/hear.tool.js.map +0 -1
  1229. package/dist/tools/preference/index.d.ts +0 -16
  1230. package/dist/tools/preference/index.d.ts.map +0 -1
  1231. package/dist/tools/preference/index.js +0 -43
  1232. package/dist/tools/preference/index.js.map +0 -1
  1233. package/dist/tools/preference/reset.tool.d.ts +0 -71
  1234. package/dist/tools/preference/reset.tool.d.ts.map +0 -1
  1235. package/dist/tools/preference/reset.tool.js +0 -205
  1236. package/dist/tools/preference/reset.tool.js.map +0 -1
  1237. package/dist/tools/preference/schemas.d.ts +0 -174
  1238. package/dist/tools/preference/schemas.d.ts.map +0 -1
  1239. package/dist/tools/preference/schemas.js +0 -142
  1240. package/dist/tools/preference/schemas.js.map +0 -1
  1241. package/dist/tools/project-get.d.ts +0 -42
  1242. package/dist/tools/project-get.d.ts.map +0 -1
  1243. package/dist/tools/project-get.js +0 -152
  1244. package/dist/tools/project-get.js.map +0 -1
  1245. package/dist/tools/project-list.d.ts +0 -66
  1246. package/dist/tools/project-list.d.ts.map +0 -1
  1247. package/dist/tools/project-list.js +0 -201
  1248. package/dist/tools/project-list.js.map +0 -1
  1249. package/dist/tools/quality/batch-evaluate.tool.d.ts +0 -101
  1250. package/dist/tools/quality/batch-evaluate.tool.d.ts.map +0 -1
  1251. package/dist/tools/quality/batch-evaluate.tool.js +0 -393
  1252. package/dist/tools/quality/batch-evaluate.tool.js.map +0 -1
  1253. package/dist/tools/quality/evaluate-engine.d.ts +0 -166
  1254. package/dist/tools/quality/evaluate-engine.d.ts.map +0 -1
  1255. package/dist/tools/quality/evaluate-engine.js +0 -1061
  1256. package/dist/tools/quality/evaluate-engine.js.map +0 -1
  1257. package/dist/tools/quality/evaluate.tool.d.ts +0 -286
  1258. package/dist/tools/quality/evaluate.tool.d.ts.map +0 -1
  1259. package/dist/tools/quality/evaluate.tool.js +0 -815
  1260. package/dist/tools/quality/evaluate.tool.js.map +0 -1
  1261. package/dist/tools/quality/get-job-status.tool.d.ts +0 -44
  1262. package/dist/tools/quality/get-job-status.tool.d.ts.map +0 -1
  1263. package/dist/tools/quality/get-job-status.tool.js +0 -291
  1264. package/dist/tools/quality/get-job-status.tool.js.map +0 -1
  1265. package/dist/tools/quality/improvement-utils.d.ts +0 -24
  1266. package/dist/tools/quality/improvement-utils.d.ts.map +0 -1
  1267. package/dist/tools/quality/improvement-utils.js +0 -307
  1268. package/dist/tools/quality/improvement-utils.js.map +0 -1
  1269. package/dist/tools/quality/index.d.ts +0 -11
  1270. package/dist/tools/quality/index.d.ts.map +0 -1
  1271. package/dist/tools/quality/index.js +0 -49
  1272. package/dist/tools/quality/index.js.map +0 -1
  1273. package/dist/tools/quality/schemas.d.ts +0 -14098
  1274. package/dist/tools/quality/schemas.d.ts.map +0 -1
  1275. package/dist/tools/quality/schemas.js +0 -950
  1276. package/dist/tools/quality/schemas.js.map +0 -1
  1277. package/dist/tools/responsive/schemas.d.ts +0 -156
  1278. package/dist/tools/responsive/schemas.d.ts.map +0 -1
  1279. package/dist/tools/responsive/schemas.js +0 -86
  1280. package/dist/tools/responsive/schemas.js.map +0 -1
  1281. package/dist/tools/responsive/search.tool.d.ts +0 -130
  1282. package/dist/tools/responsive/search.tool.d.ts.map +0 -1
  1283. package/dist/tools/responsive/search.tool.js +0 -324
  1284. package/dist/tools/responsive/search.tool.js.map +0 -1
  1285. package/dist/tools/schemas/index.d.ts +0 -10
  1286. package/dist/tools/schemas/index.d.ts.map +0 -1
  1287. package/dist/tools/schemas/index.js +0 -45
  1288. package/dist/tools/schemas/index.js.map +0 -1
  1289. package/dist/tools/schemas/layout-schemas.d.ts +0 -521
  1290. package/dist/tools/schemas/layout-schemas.d.ts.map +0 -1
  1291. package/dist/tools/schemas/layout-schemas.js +0 -281
  1292. package/dist/tools/schemas/layout-schemas.js.map +0 -1
  1293. package/dist/tools/schemas/project-schemas.d.ts +0 -417
  1294. package/dist/tools/schemas/project-schemas.d.ts.map +0 -1
  1295. package/dist/tools/schemas/project-schemas.js +0 -159
  1296. package/dist/tools/schemas/project-schemas.js.map +0 -1
  1297. package/dist/tools/schemas/shared.d.ts +0 -107
  1298. package/dist/tools/schemas/shared.d.ts.map +0 -1
  1299. package/dist/tools/schemas/shared.js +0 -150
  1300. package/dist/tools/schemas/shared.js.map +0 -1
  1301. package/dist/tools/schemas/style-schemas.d.ts +0 -114
  1302. package/dist/tools/schemas/style-schemas.d.ts.map +0 -1
  1303. package/dist/tools/schemas/style-schemas.js +0 -61
  1304. package/dist/tools/schemas/style-schemas.js.map +0 -1
  1305. package/dist/tools/style-get-palette.d.ts +0 -136
  1306. package/dist/tools/style-get-palette.d.ts.map +0 -1
  1307. package/dist/tools/style-get-palette.js +0 -259
  1308. package/dist/tools/style-get-palette.js.map +0 -1
  1309. package/dist/tools/system-health.d.ts +0 -255
  1310. package/dist/tools/system-health.d.ts.map +0 -1
  1311. package/dist/tools/system-health.js +0 -463
  1312. package/dist/tools/system-health.js.map +0 -1
  1313. package/dist/transport.d.ts +0 -29
  1314. package/dist/transport.d.ts.map +0 -1
  1315. package/dist/transport.js +0 -50
  1316. package/dist/transport.js.map +0 -1
  1317. package/dist/types/creative/index.d.ts +0 -8
  1318. package/dist/types/creative/index.d.ts.map +0 -1
  1319. package/dist/types/creative/index.js +0 -5
  1320. package/dist/types/creative/index.js.map +0 -1
  1321. package/dist/types/creative/palette.d.ts +0 -142
  1322. package/dist/types/creative/palette.d.ts.map +0 -1
  1323. package/dist/types/creative/palette.js +0 -5
  1324. package/dist/types/creative/palette.js.map +0 -1
  1325. package/dist/types/reftrix-window.d.ts +0 -124
  1326. package/dist/types/reftrix-window.d.ts.map +0 -1
  1327. package/dist/types/reftrix-window.js +0 -68
  1328. package/dist/types/reftrix-window.js.map +0 -1
  1329. package/dist/utils/actionable-warning.d.ts +0 -170
  1330. package/dist/utils/actionable-warning.d.ts.map +0 -1
  1331. package/dist/utils/actionable-warning.js +0 -818
  1332. package/dist/utils/actionable-warning.js.map +0 -1
  1333. package/dist/utils/blank-image-detector.d.ts +0 -22
  1334. package/dist/utils/blank-image-detector.d.ts.map +0 -1
  1335. package/dist/utils/blank-image-detector.js +0 -133
  1336. package/dist/utils/blank-image-detector.js.map +0 -1
  1337. package/dist/utils/color.d.ts +0 -203
  1338. package/dist/utils/color.d.ts.map +0 -1
  1339. package/dist/utils/color.js +0 -442
  1340. package/dist/utils/color.js.map +0 -1
  1341. package/dist/utils/deprecation-warning.d.ts +0 -43
  1342. package/dist/utils/deprecation-warning.d.ts.map +0 -1
  1343. package/dist/utils/deprecation-warning.js +0 -112
  1344. package/dist/utils/deprecation-warning.js.map +0 -1
  1345. package/dist/utils/error-messages.d.ts +0 -233
  1346. package/dist/utils/error-messages.d.ts.map +0 -1
  1347. package/dist/utils/error-messages.js +0 -721
  1348. package/dist/utils/error-messages.js.map +0 -1
  1349. package/dist/utils/errors.d.ts +0 -64
  1350. package/dist/utils/errors.d.ts.map +0 -1
  1351. package/dist/utils/errors.js +0 -82
  1352. package/dist/utils/errors.js.map +0 -1
  1353. package/dist/utils/gpu-browser-args.d.ts +0 -27
  1354. package/dist/utils/gpu-browser-args.d.ts.map +0 -1
  1355. package/dist/utils/gpu-browser-args.js +0 -42
  1356. package/dist/utils/gpu-browser-args.js.map +0 -1
  1357. package/dist/utils/html-sanitizer.d.ts +0 -116
  1358. package/dist/utils/html-sanitizer.d.ts.map +0 -1
  1359. package/dist/utils/html-sanitizer.js +0 -630
  1360. package/dist/utils/html-sanitizer.js.map +0 -1
  1361. package/dist/utils/logger.d.ts +0 -141
  1362. package/dist/utils/logger.d.ts.map +0 -1
  1363. package/dist/utils/logger.js +0 -249
  1364. package/dist/utils/logger.js.map +0 -1
  1365. package/dist/utils/mcp-response.d.ts +0 -317
  1366. package/dist/utils/mcp-response.d.ts.map +0 -1
  1367. package/dist/utils/mcp-response.js +0 -270
  1368. package/dist/utils/mcp-response.js.map +0 -1
  1369. package/dist/utils/path-security.d.ts +0 -73
  1370. package/dist/utils/path-security.d.ts.map +0 -1
  1371. package/dist/utils/path-security.js +0 -389
  1372. package/dist/utils/path-security.js.map +0 -1
  1373. package/dist/utils/prisma-wrapper-factory.d.ts +0 -152
  1374. package/dist/utils/prisma-wrapper-factory.d.ts.map +0 -1
  1375. package/dist/utils/prisma-wrapper-factory.js +0 -124
  1376. package/dist/utils/prisma-wrapper-factory.js.map +0 -1
  1377. package/dist/utils/safe-parse-int.d.ts +0 -41
  1378. package/dist/utils/safe-parse-int.d.ts.map +0 -1
  1379. package/dist/utils/safe-parse-int.js +0 -49
  1380. package/dist/utils/safe-parse-int.js.map +0 -1
  1381. package/dist/utils/url-normalizer.d.ts +0 -38
  1382. package/dist/utils/url-normalizer.d.ts.map +0 -1
  1383. package/dist/utils/url-normalizer.js +0 -103
  1384. package/dist/utils/url-normalizer.js.map +0 -1
  1385. package/dist/utils/url-validator.d.ts +0 -86
  1386. package/dist/utils/url-validator.d.ts.map +0 -1
  1387. package/dist/utils/url-validator.js +0 -533
  1388. package/dist/utils/url-validator.js.map +0 -1
  1389. package/dist/workers/batch-quality-worker.d.ts +0 -87
  1390. package/dist/workers/batch-quality-worker.d.ts.map +0 -1
  1391. package/dist/workers/batch-quality-worker.js +0 -300
  1392. package/dist/workers/batch-quality-worker.js.map +0 -1
  1393. package/dist/workers/page-analyze-worker.d.ts +0 -63
  1394. package/dist/workers/page-analyze-worker.d.ts.map +0 -1
  1395. package/dist/workers/page-analyze-worker.js +0 -872
  1396. package/dist/workers/page-analyze-worker.js.map +0 -1
  1397. package/dist/workers/phases/phase-0-ingest.d.ts +0 -42
  1398. package/dist/workers/phases/phase-0-ingest.d.ts.map +0 -1
  1399. package/dist/workers/phases/phase-0-ingest.js +0 -197
  1400. package/dist/workers/phases/phase-0-ingest.js.map +0 -1
  1401. package/dist/workers/phases/phase-1-layout.d.ts +0 -63
  1402. package/dist/workers/phases/phase-1-layout.d.ts.map +0 -1
  1403. package/dist/workers/phases/phase-1-layout.js +0 -362
  1404. package/dist/workers/phases/phase-1-layout.js.map +0 -1
  1405. package/dist/workers/phases/phase-2-motion.d.ts +0 -93
  1406. package/dist/workers/phases/phase-2-motion.d.ts.map +0 -1
  1407. package/dist/workers/phases/phase-2-motion.js +0 -408
  1408. package/dist/workers/phases/phase-2-motion.js.map +0 -1
  1409. package/dist/workers/phases/phase-3-quality.d.ts +0 -61
  1410. package/dist/workers/phases/phase-3-quality.d.ts.map +0 -1
  1411. package/dist/workers/phases/phase-3-quality.js +0 -191
  1412. package/dist/workers/phases/phase-3-quality.js.map +0 -1
  1413. package/dist/workers/phases/phase-4-narrative.d.ts +0 -37
  1414. package/dist/workers/phases/phase-4-narrative.d.ts.map +0 -1
  1415. package/dist/workers/phases/phase-4-narrative.js +0 -309
  1416. package/dist/workers/phases/phase-4-narrative.js.map +0 -1
  1417. package/dist/workers/phases/phase-5-embedding.d.ts +0 -56
  1418. package/dist/workers/phases/phase-5-embedding.d.ts.map +0 -1
  1419. package/dist/workers/phases/phase-5-embedding.js +0 -1350
  1420. package/dist/workers/phases/phase-5-embedding.js.map +0 -1
  1421. package/dist/workers/phases/types.d.ts +0 -411
  1422. package/dist/workers/phases/types.d.ts.map +0 -1
  1423. package/dist/workers/phases/types.js +0 -540
  1424. package/dist/workers/phases/types.js.map +0 -1
@@ -8,108 +8,40 @@
8
8
  * MCP Tool handler(入力バリデーション・SSRF・async判定)は呼び出し元に残し、
9
9
  * ここでは同期モードの分析処理本体を担当する。
10
10
  *
11
+ * v0.2.0: sync-helpers.ts / sync-phase-handlers.ts に分割。
12
+ * このファイルはオーケストレーションのみを担当。
13
+ *
11
14
  * @module tools/page/handlers/sync-processing
12
15
  */
13
16
 
14
- import { v7 as uuidv7 } from "uuid";
15
17
  import { logger, isDevelopment } from "../../../utils/logger";
16
- import { normalizeUrlForStorage } from "../../../utils/url-normalizer";
17
- import { validateExternalUrl } from "../../../utils/url-validator";
18
18
  import { sanitizeHtml } from "../../../utils/html-sanitizer";
19
- import { isUrlAllowedByRobotsTxt } from "@reftrixmcp/core";
20
- import {
21
- pageIngestAdapter,
22
- type IngestResult,
23
- type ComputedStyleInfo,
24
- } from "../../../services/page-ingest-adapter";
25
19
  import { extractCssUrls } from "../../../services/external-css-fetcher";
26
20
 
27
- // Responsive Analysis Services
28
- import {
29
- responsiveAnalysisService,
30
- responsivePersistenceService,
31
- type ResponsiveAnalysisResult,
32
- } from "../../../services/responsive";
33
-
34
- // Embedding統合用インポート
35
- import {
36
- generateSectionEmbeddings,
37
- generateMotionEmbeddings,
38
- type SectionDataForEmbedding,
39
- type MotionPatternForEmbedding,
40
- } from "./embedding-handler";
41
-
42
- // DB保存ロジック
43
- import {
44
- saveToDatabase,
45
- type SectionForSave,
46
- type MotionPatternForSave,
47
- type BackgroundDesignForSave,
48
- } from "./db-handler";
49
-
50
21
  // Layout Handler (Phase2)
51
22
  import { defaultAnalyzeLayout } from "./layout-handler";
52
23
 
53
- // Result Builder (Phase3)
54
- import {
55
- determineErrorCode,
56
- buildLayoutResult,
57
- buildMotionResult,
58
- buildQualityResult,
59
- buildNarrativeResult,
60
- buildBackgroundDesignsSummary,
61
- extractWarning,
62
- } from "./result-builder";
63
-
64
- // Narrative Handler (v0.1.0)
65
- import { handleNarrativeAnalysis } from "./narrative-handler";
66
- import type { NarrativeHandlerInput, NarrativeHandlerResult } from "./types";
24
+ // Result Builder
25
+ import { determineErrorCode } from "./result-builder";
67
26
 
68
27
  // Motion Handler (Phase4)
69
28
  import { defaultDetectMotion } from "./motion-handler";
70
29
 
71
- // JS Animation Handler(DB保存用 + Embedding生成)
72
- import {
73
- mapJSAnimationResultToPatterns,
74
- saveJSAnimationPatternsWithEmbeddings,
75
- } from "./js-animation-handler";
76
-
77
30
  // Quality Handler (Phase4)
78
31
  import { defaultEvaluateQuality } from "./quality-handler";
79
32
 
80
- // Types Handler(共通型定義)
81
- import type {
82
- LayoutServiceResult,
83
- MotionServiceResult,
84
- QualityServiceResult,
85
- IPageAnalyzeService,
86
- IPageAnalyzePrismaClient,
87
- } from "./types";
88
-
89
- // VideoMode DB保存用ヘルパー(同期/非同期モード共有)
90
- import { saveFrameAnalysisToDb } from "../../../services/motion/frame-analysis-save.helper";
91
-
92
- import type {
93
- PageAnalyzeInput,
94
- PageAnalyzeOutput,
95
- PageAnalyzeData,
96
- LayoutResult,
97
- MotionResult,
98
- QualityResult,
99
- NarrativeResult,
100
- PageMetadata,
101
- AnalysisWarning,
102
- } from "../schemas";
33
+ // Types Handler
34
+ import type { LayoutServiceResult, MotionServiceResult, QualityServiceResult } from "./types";
35
+
36
+ import type { PageAnalyzeInput, PageAnalyzeOutput, AnalysisWarning } from "../schemas";
103
37
 
104
38
  import { PAGE_ANALYZE_ERROR_CODES } from "../schemas";
105
39
 
106
40
  // タイムアウトユーティリティ
107
41
  import {
108
- withTimeout,
109
- PhaseTimeoutError,
42
+ withTimeoutAndTracking,
110
43
  distributeTimeout,
111
44
  ExecutionStatusTracker,
112
- withTimeoutAndTracking,
113
45
  calculateEffectiveTimeout,
114
46
  HardwareType,
115
47
  type HardwareInfoForTimeout,
@@ -125,227 +57,36 @@ import {
125
57
  type LegacyWebGLDetectionResult,
126
58
  } from "./webgl-detector";
127
59
 
128
- // WebGL事前推定
129
- import { preDetectWebGL, detectSiteTier } from "./webgl-pre-detector";
130
-
131
- // Pre-flight Probe Service
132
- import { preflightProbeService, type ProbeResult } from "@reftrixmcp/webdesign-core";
133
-
134
- // リトライ戦略
135
- import {
136
- getRetryStrategy,
137
- shouldRetry,
138
- isNetworkError,
139
- calculateMaxTotalTime,
140
- } from "./retry-strategy";
141
-
142
60
  // Vision CPU完走保証 Phase 4: MCP進捗報告統合
143
61
  import type { ProgressContext } from "../../../router";
144
62
 
145
63
  // =====================================================
146
- // DI依存を受け取るインターフェース
147
- // =====================================================
148
-
149
- /**
150
- * executeSyncProcessing に必要なDI依存
151
- */
152
- export interface SyncProcessingDeps {
153
- /** IPageAnalyzeService ファクトリ(DI) */
154
- getService: () => Partial<IPageAnalyzeService>;
155
- /** PrismaClient 取得関数(DI) */
156
- getPrismaClient: () => IPageAnalyzePrismaClient | null;
157
- }
158
-
159
- // =====================================================
160
- // デフォルトサービス実装
64
+ // ヘルパー・フェーズハンドラーからインポート
161
65
  // =====================================================
162
66
 
163
- /**
164
- * デフォルトのHTML取得(PageIngestAdapter実装)
165
- * React/Vue/Next.js等のJS駆動サイトに対応するため、DOM安定化待機を使用
166
- */
167
- async function defaultFetchHtml(
168
- url: string,
169
- options: {
170
- timeout?: number | undefined;
171
- waitUntil?: "load" | "domcontentloaded" | "networkidle" | undefined;
172
- viewport?: { width: number; height: number } | undefined;
173
- includeComputedStyles?: boolean | undefined;
174
- skipScreenshot?: boolean | undefined;
175
- }
176
- ): Promise<{
177
- html: string;
178
- title?: string | undefined;
179
- description?: string | undefined;
180
- screenshot?: string | undefined;
181
- computedStyles?: ComputedStyleInfo[] | undefined;
182
- }> {
183
- if (isDevelopment()) {
184
- logger.debug("[page.analyze] defaultFetchHtml called", {
185
- url,
186
- timeout: options.timeout,
187
- waitUntil: options.waitUntil,
188
- hasViewport: !!options.viewport,
189
- });
190
- }
191
-
192
- // PageIngestAdapterを使用(DOM安定化待機、ローディング要素待機対応)
193
- // exactOptionalPropertyTypes対応: undefinedの可能性がある値は条件付きで含める
194
- const ingestOptions: Parameters<typeof pageIngestAdapter.ingest>[0] = {
195
- url,
196
- fullPage: true,
197
- // React/Vue/Next.js対応: DOM安定化待機(デフォルト有効)
198
- waitForDomStable: true,
199
- domStableTimeout: 1000, // 1秒間DOMが安定するまで待機
200
- // ローディングアニメーション対応: 一般的なローディング要素を待機
201
- waitForSelectorHidden: '.loading, .loader, .loadingElement, [data-loading], [aria-busy="true"]',
202
- // コンテンツ要素の可視性待機: 実際のコンテンツ(見出し、セクション)が表示されるまで待機
203
- waitForContentVisible:
204
- "h1:not(.sr-only), h2:not(.sr-only), section:not(.sr-only), [data-section], article",
205
- // ユーザーインタラクション模倣: マウス移動でローディング解除するサイト対応
206
- simulateUserInteraction: true,
207
- // 追加の固定待機(アニメーション完了用)
208
- waitForTimeout: 3000, // 3秒に増加
209
- // Computed Styles取得(htmlSnippetにインラインスタイル適用用)
210
- includeComputedStyles: options.includeComputedStyles ?? true,
211
- // WebGL/3Dサイト対応: 適応的待機戦略(デフォルト有効)
212
- // Canvas/WebGL検出、Three.js等3Dライブラリ検出、フレームレート安定化待機
213
- adaptiveWebGLWait: true,
214
- };
215
-
216
- // オプショナルなプロパティを条件付きで追加
217
- if (options.timeout !== undefined) {
218
- ingestOptions.timeout = options.timeout;
219
- }
220
- if (options.waitUntil !== undefined) {
221
- ingestOptions.waitUntil = options.waitUntil;
222
- }
223
- if (options.viewport !== undefined) {
224
- ingestOptions.viewport = options.viewport;
225
- }
226
- // スクリーンショットをスキップ(WebGL/3Dサイトでのタイムアウト防止)
227
- if (options.skipScreenshot) {
228
- ingestOptions.skipScreenshot = true;
229
- }
230
-
231
- // グローバルタイムアウトを計算(ユーザー指定 or デフォルト30秒)
232
- // 内部操作にはバッファを持たせるため、フェッチタイムアウトは指定値の1.5倍を使用
233
- const fetchTimeout = (options.timeout ?? 30000) * 1.5;
234
-
235
- if (isDevelopment()) {
236
- logger.debug("[page.analyze] defaultFetchHtml starting with timeout", {
237
- url,
238
- userTimeout: options.timeout,
239
- fetchTimeout,
240
- });
241
- }
242
-
243
- // グローバルタイムアウトラッパーで囲む
244
- // WebGLサイトでChromiumがハングした場合でもタイムアウトを強制する
245
- const result: IngestResult = await withTimeout(
246
- pageIngestAdapter.ingest(ingestOptions),
247
- fetchTimeout,
248
- `page.analyze fetchHtml for ${url}`
249
- );
250
-
251
- if (!result.success) {
252
- throw new Error(result.error || "Failed to fetch page");
253
- }
254
-
255
- if (isDevelopment()) {
256
- logger.debug("[page.analyze] defaultFetchHtml completed", {
257
- url,
258
- htmlLength: result.html.length,
259
- hasTitle: !!result.metadata.title,
260
- hasDescription: !!result.metadata.description,
261
- hasScreenshot: !!result.screenshots?.length,
262
- hasComputedStyles: !!result.computedStyles?.length,
263
- computedStylesCount: result.computedStyles?.length ?? 0,
264
- });
265
- }
266
-
267
- // 戻り値を構築(exactOptionalPropertyTypes対応)
268
- const returnValue: {
269
- html: string;
270
- title?: string | undefined;
271
- description?: string | undefined;
272
- screenshot?: string | undefined;
273
- computedStyles?: ComputedStyleInfo[] | undefined;
274
- } = {
275
- html: result.html,
276
- title: result.metadata.title || undefined,
277
- description: result.metadata.description || undefined,
278
- screenshot: result.screenshots?.[0]?.data,
279
- };
280
-
281
- // computedStylesがある場合のみ含める
282
- if (result.computedStyles && result.computedStyles.length > 0) {
283
- returnValue.computedStyles = result.computedStyles;
284
- }
285
-
286
- return returnValue;
287
- }
288
-
289
- /**
290
- * HTMLからメタデータを抽出
291
- */
292
- function extractMetadata(
293
- html: string,
294
- fetchedTitle?: string,
295
- fetchedDescription?: string
296
- ): PageMetadata {
297
- const metadata: PageMetadata = {};
298
-
299
- // タイトル
300
- if (fetchedTitle) {
301
- metadata.title = fetchedTitle;
302
- } else {
303
- const titleMatch = html.match(/<title[^>]*>([^<]*)<\/title>/i);
304
- if (titleMatch && titleMatch[1]) {
305
- metadata.title = titleMatch[1].trim();
306
- }
307
- }
308
-
309
- // description
310
- if (fetchedDescription) {
311
- metadata.description = fetchedDescription;
312
- } else {
313
- const descMatch = html.match(
314
- /<meta[^>]*name=["']description["'][^>]*content=["']([^"']*)["']/i
315
- );
316
- if (descMatch && descMatch[1]) {
317
- metadata.description = descMatch[1].trim();
318
- }
319
- }
320
-
321
- // OG image
322
- const ogImageMatch = html.match(
323
- /<meta[^>]*property=["']og:image["'][^>]*content=["']([^"']*)["']/i
324
- );
325
- if (ogImageMatch && ogImageMatch[1]) {
326
- try {
327
- new URL(ogImageMatch[1]);
328
- metadata.ogImage = ogImageMatch[1];
329
- } catch {
330
- // 無効なURLは無視
331
- }
332
- }
333
-
334
- // Favicon
335
- const faviconMatch = html.match(
336
- /<link[^>]*rel=["'](?:shortcut )?icon["'][^>]*href=["']([^"']*)["']/i
337
- );
338
- if (faviconMatch && faviconMatch[1]) {
339
- try {
340
- new URL(faviconMatch[1]);
341
- metadata.favicon = faviconMatch[1];
342
- } catch {
343
- // 相対パスや無効なURLは無視
344
- }
345
- }
346
-
347
- return metadata;
348
- }
67
+ // sync-helpers.ts
68
+ import {
69
+ type SyncProcessingDeps,
70
+ type FetchHtmlFunction,
71
+ defaultFetchHtml,
72
+ extractMetadata,
73
+ computePreFetchConfig,
74
+ fetchHtmlWithRetries,
75
+ } from "./sync-helpers";
76
+
77
+ // sync-phase-handlers.ts
78
+ import {
79
+ handleDatabasePersistence,
80
+ handleEmbeddingGeneration,
81
+ handleMotionPersistenceExtras,
82
+ handleNarrativePhase,
83
+ handleResponsivePhase,
84
+ buildPageAnalyzeResponse,
85
+ integrateAnalysisResults,
86
+ } from "./sync-phase-handlers";
87
+
88
+ // Re-export SyncProcessingDeps for backward compatibility
89
+ export type { SyncProcessingDeps } from "./sync-helpers";
349
90
 
350
91
  // =====================================================
351
92
  // メイン同期処理関数
@@ -372,311 +113,69 @@ export async function executeSyncProcessing(
372
113
  ): Promise<PageAnalyzeOutput> {
373
114
  // サービス取得
374
115
  const service = deps.getService();
375
- const fetchHtml = service.fetchHtml ?? defaultFetchHtml;
116
+ // FetchHtmlFunction型に統一(defaultFetchHtmlはskipScreenshotを含む)
117
+ const fetchHtml: FetchHtmlFunction =
118
+ (service.fetchHtml as FetchHtmlFunction | undefined) ?? defaultFetchHtml;
376
119
  const analyzeLayout = service.analyzeLayout ?? defaultAnalyzeLayout;
377
120
  const detectMotion = service.detectMotion ?? defaultDetectMotion;
378
121
  const evaluateQuality = service.evaluateQuality ?? defaultEvaluateQuality;
379
122
 
380
- // HTML取得結果(リトライループで設定される)
381
- // attemptSucceeded=true の場合のみ有効な値が入る
382
- let html = ""; // TypeScript definite assignment のため初期化
383
- let fetchedTitle: string | undefined;
384
- let fetchedDescription: string | undefined;
385
- let fetchedScreenshot: string | undefined;
386
- let fetchedComputedStyles: ComputedStyleInfo[] | undefined;
387
-
388
123
  // =====================================================
389
- // 事前WebGL推定とタイムアウト先制設定(v0.1.0
124
+ // 事前WebGL推定とPre-flight Probe(sync-helpers.ts
390
125
  // =====================================================
391
- // HTML取得前にURLパターンからWebGLサイトかを推定し、
392
- // タイムアウトを先制的に延長することで、WebGLサイトでの
393
- // HTML取得タイムアウトを防止する
394
-
395
- const preDetection = preDetectWebGL(validated.url);
396
- const preAdjustedTimeout = preDetection.isLikelyWebGL
397
- ? Math.min(
398
- (validated.timeout ?? 120000) * preDetection.timeoutMultiplier,
399
- 600000 // 最大10分
400
- )
401
- : (validated.timeout ?? 120000);
402
-
403
- if (isDevelopment() && preDetection.isLikelyWebGL) {
404
- logger.info("[page.analyze] WebGL pre-detection triggered", {
405
- url: validated.url,
406
- confidence: preDetection.confidence,
407
- matchedDomain: preDetection.matchedDomain,
408
- matchedPattern: preDetection.matchedPattern,
409
- originalTimeout: validated.timeout,
410
- preAdjustedTimeout,
411
- timeoutMultiplier: preDetection.timeoutMultiplier,
412
- });
413
- }
414
-
415
- // =====================================================
416
- // Pre-flight Probe による自動タイムアウト調整(v0.1.0)
417
- // =====================================================
418
- // auto_timeout=true の場合、URLの複雑度を事前分析して最適なタイムアウトを計算
419
- // WebGL、SPA、重いフレームワークを検出し、タイムアウトを動的に調整
420
-
421
- let probeResult: ProbeResult | null = null;
422
- let probeCalculatedTimeout = preAdjustedTimeout;
423
-
424
- if (validated.auto_timeout === true) {
425
- try {
426
- if (isDevelopment()) {
427
- logger.info("[page.analyze] Pre-flight probe started", { url: validated.url });
428
- }
429
-
430
- probeResult = await preflightProbeService.probe(validated.url);
431
-
432
- // プローブ結果からタイムアウトを決定
433
- // ユーザー指定がある場合はそれを上限として使用
434
- const userTimeout = validated.timeout ?? 120000;
435
- probeCalculatedTimeout = Math.min(
436
- Math.max(probeResult.calculatedTimeoutMs, 30000), // 最低30秒
437
- Math.max(userTimeout, 600000) // ユーザー指定または最大10分のどちらか大きい方
438
- );
439
-
440
- if (isDevelopment()) {
441
- logger.info("[page.analyze] Pre-flight probe completed", {
442
- url: validated.url,
443
- calculatedTimeoutMs: probeResult.calculatedTimeoutMs,
444
- complexityScore: probeResult.complexityScore,
445
- hasWebGL: probeResult.hasWebGL,
446
- hasSPA: probeResult.hasSPA,
447
- hasHeavyFramework: probeResult.hasHeavyFramework,
448
- probeCalculatedTimeout,
449
- userTimeout,
450
- responseTimeMs: probeResult.responseTimeMs,
451
- });
452
- }
453
- } catch (probeError) {
454
- // プローブ失敗時はフォールバック(preAdjustedTimeoutを使用)
455
- logger.warn("[page.analyze] Pre-flight probe failed, using fallback timeout", {
456
- url: validated.url,
457
- error: probeError instanceof Error ? probeError.message : String(probeError),
458
- fallbackTimeout: preAdjustedTimeout,
459
- });
460
- // probeResultはnullのまま、probeCalculatedTimeoutはpreAdjustedTimeoutのまま
461
- }
462
- }
463
-
464
- // auto_timeout=falseまたはプローブ失敗時はpreAdjustedTimeoutを使用
465
- const finalBaseTimeout =
466
- validated.auto_timeout === true && probeResult ? probeCalculatedTimeout : preAdjustedTimeout;
126
+ const preFetchConfig = await computePreFetchConfig(
127
+ validated.url,
128
+ validated.timeout,
129
+ validated.auto_timeout
130
+ );
131
+ const { preDetection, probeResult, finalBaseTimeout } = preFetchConfig;
467
132
 
468
133
  // =====================================================
469
- // HTML取得(自動リトライ対応 v0.1.0
134
+ // HTML取得(自動リトライ対応 — sync-helpers.ts
470
135
  // =====================================================
471
- // サイト種別(SiteTier)に基づくリトライ戦略を適用
472
- // - ultra-heavy/heavy: タイムアウト累積なし、ネットワークエラーのみリトライ
473
- // - webgl: 軽い累積(1.2倍)、全エラーでリトライ
474
- // - normal: 従来動作(1.5倍累積)
475
-
476
- const viewport = validated.layoutOptions?.viewport;
477
- // useVision=true の場合はスクリーンショットが必要(visualFeatures抽出のため)
478
- // Phase 4-2: Decision 019bd65f-29c5-795e-9c81-cea829b3d9fe
479
- const useVision = validated.layoutOptions?.useVision === true;
480
- // narrativeOptions.includeVision=true の場合もスクリーンショットが必要(世界観分析用)
481
- const useNarrativeVision = validated.narrativeOptions?.includeVision === true;
482
- const skipScreenshot =
483
- useVision || useNarrativeVision
484
- ? false // useVision または narrativeOptions.includeVision 時は常にスクリーンショット取得
485
- : validated.layoutOptions?.includeScreenshot !== true;
486
-
487
- // サイト種別を検出してリトライ戦略を取得
488
- const siteTier = detectSiteTier(validated.url, preDetection);
489
- const retryStrategy = getRetryStrategy(siteTier);
490
-
491
- // ユーザー指定がある場合はそちらを優先
492
- const effectiveRetryStrategy = {
493
- ...retryStrategy,
494
- autoRetry: validated.auto_retry ?? retryStrategy.autoRetry,
495
- maxRetries: validated.max_retries ?? retryStrategy.maxRetries,
496
- };
497
-
498
- // MCP 600秒上限チェック(警告ログ)
499
- const maxTotalTime = calculateMaxTotalTime(finalBaseTimeout, effectiveRetryStrategy);
500
- if (isDevelopment() && maxTotalTime > 600000) {
501
- logger.warn("[page.analyze] Max total time may exceed MCP 600s limit", {
502
- siteTier,
503
- baseTimeout: finalBaseTimeout,
504
- maxTotalTime,
505
- maxRetries: effectiveRetryStrategy.maxRetries,
506
- timeoutMultiplier: effectiveRetryStrategy.timeoutMultiplier,
507
- autoTimeout: validated.auto_timeout,
508
- probeUsed: probeResult !== null,
509
- });
510
- }
511
-
512
- /**
513
- * リトライ設定を取得
514
- * @param attempt 試行回数(0-indexed)
515
- */
516
- const getRetryConfig = (
517
- attempt: number
518
- ): {
519
- timeout: number;
520
- waitUntil: "load" | "domcontentloaded" | "networkidle" | undefined;
521
- } => {
522
- // 1回目: 元の設定(auto_timeout時はprobeで計算されたタイムアウト)
523
- if (attempt === 0) {
524
- return {
525
- timeout: finalBaseTimeout,
526
- waitUntil: validated.waitUntil !== "load" ? validated.waitUntil : undefined,
527
- };
528
- }
529
-
530
- // リトライ時: 乗数を累積適用(MCP 600秒上限を考慮)
531
- // timeoutMultiplier=1.0の場合は累積なし
532
- const multiplier = Math.pow(effectiveRetryStrategy.timeoutMultiplier, attempt);
533
- const newTimeout = Math.min(
534
- Math.round(finalBaseTimeout * multiplier),
535
- 600000 // MCP 600秒上限
536
- );
537
-
538
- return {
539
- timeout: newTimeout,
540
- waitUntil: "domcontentloaded" as const,
541
- };
542
- };
543
-
544
- let lastError: Error | null = null;
545
- const attemptCount = effectiveRetryStrategy.autoRetry ? effectiveRetryStrategy.maxRetries + 1 : 1;
546
- let attemptSucceeded = false;
547
-
548
- if (isDevelopment()) {
549
- logger.info("[page.analyze] Retry strategy determined", {
550
- url: validated.url,
551
- siteTier,
552
- autoRetry: effectiveRetryStrategy.autoRetry,
553
- maxRetries: effectiveRetryStrategy.maxRetries,
554
- timeoutMultiplier: effectiveRetryStrategy.timeoutMultiplier,
555
- retryOnlyOnNetworkError: effectiveRetryStrategy.retryOnlyOnNetworkError,
556
- baseTimeout: finalBaseTimeout,
557
- maxTotalTime,
558
- autoTimeout: validated.auto_timeout,
559
- probeUsed: probeResult !== null,
560
- });
561
- }
562
-
563
- for (let attempt = 0; attempt < attemptCount; attempt++) {
564
- const retryConfig = getRetryConfig(attempt);
565
-
566
- if (isDevelopment() && attempt > 0) {
567
- logger.info("[page.analyze] Retrying HTML fetch", {
568
- attempt: attempt + 1,
569
- maxAttempts: attemptCount,
570
- timeout: retryConfig.timeout,
571
- waitUntil: retryConfig.waitUntil ?? "load",
572
- previousError: lastError?.message,
573
- isNetworkError: lastError ? isNetworkError(lastError) : false,
574
- });
575
- }
576
-
577
- try {
578
- const fetchResult = await fetchHtml(validated.url, {
579
- timeout: retryConfig.timeout,
580
- ...(retryConfig.waitUntil && { waitUntil: retryConfig.waitUntil }),
581
- ...(viewport && { viewport }),
582
- includeComputedStyles: true,
583
- skipScreenshot,
584
- });
585
-
586
- html = fetchResult.html;
587
- fetchedTitle = fetchResult.title;
588
- fetchedDescription = fetchResult.description;
589
- fetchedScreenshot = fetchResult.screenshot;
590
- fetchedComputedStyles = fetchResult.computedStyles;
591
- attemptSucceeded = true;
592
-
593
- if (isDevelopment() && attempt > 0) {
594
- logger.info("[page.analyze] Retry succeeded", {
595
- attempt: attempt + 1,
596
- timeout: retryConfig.timeout,
597
- waitUntil: retryConfig.waitUntil ?? "load",
598
- });
599
- }
600
-
601
- break; // 成功したらループを抜ける
602
- } catch (error) {
603
- lastError = error instanceof Error ? error : new Error(String(error));
604
-
605
- logger.warn("[page.analyze] Fetch attempt failed", {
606
- attempt: attempt + 1,
607
- maxAttempts: attemptCount,
608
- error: lastError.message,
609
- url: validated.url,
610
- isNetworkError: isNetworkError(lastError),
611
- });
612
-
613
- // shouldRetry で次の試行を判定
614
- if (shouldRetry(lastError, attempt, effectiveRetryStrategy)) {
615
- // 待機時間を挟む
616
- await new Promise((resolve) =>
617
- setTimeout(resolve, effectiveRetryStrategy.waitBetweenRetriesMs)
618
- );
619
- continue;
620
- }
621
-
622
- // リトライしない場合はループを抜ける
623
- break;
624
- }
625
- }
626
-
627
- // 全試行失敗
628
- if (!attemptSucceeded) {
629
- if (isDevelopment()) {
630
- logger.error("[MCP Tool] page.analyze fetch error (all retries failed)", {
631
- error: lastError,
632
- url: validated.url,
633
- attempts: attemptCount,
634
- });
635
- }
636
-
637
- const errorMessage = lastError?.message ?? "Failed to fetch page";
136
+ const fetchResult = await fetchHtmlWithRetries({
137
+ url: validated.url,
138
+ finalBaseTimeout,
139
+ preDetection,
140
+ validated,
141
+ fetchHtml,
142
+ probeResult,
143
+ });
638
144
 
145
+ if (!fetchResult.success) {
639
146
  return {
640
147
  success: false,
641
148
  error: {
642
- code: determineErrorCode(errorMessage),
643
- message: `${errorMessage} (after ${attemptCount} attempt${attemptCount > 1 ? "s" : ""})`,
149
+ code: determineErrorCode(fetchResult.errorMessage),
150
+ message: `${fetchResult.errorMessage} (after ${fetchResult.attemptCount} attempt${fetchResult.attemptCount > 1 ? "s" : ""})`,
644
151
  },
645
152
  };
646
153
  }
647
154
 
155
+ const { html, fetchedTitle, fetchedDescription, fetchedScreenshot, fetchedComputedStyles } =
156
+ fetchResult.result;
157
+
648
158
  // 外部CSS URLを抽出(サニタイズ前のHTMLから)
649
- // DOMPurifyで<link>タグが除去される問題の回避策
650
159
  const preExtractedCssUrls = extractCssUrls(html, normalizedUrl).map((u) => u.url);
651
160
 
652
161
  if (isDevelopment()) {
653
162
  logger.debug("[page.analyze] Pre-extracted external CSS URLs", {
654
163
  count: preExtractedCssUrls.length,
655
- urls: preExtractedCssUrls.slice(0, 5), // 最初の5件のみログ
164
+ urls: preExtractedCssUrls.slice(0, 5),
656
165
  });
657
166
  }
658
167
 
659
168
  // HTMLサニタイズ(XSS対策)
660
- // preserveDocumentStructure: true でドキュメント構造を保持
661
- // - <html lang>: aXe html-has-lang ルール(WCAG 2.1 AA)
662
- // - <title>: aXe document-title ルール
663
- // - 安全な<meta>: description, viewport, charset
664
169
  const sanitizedHtml = sanitizeHtml(html, { preserveDocumentStructure: true });
665
170
 
666
171
  // メタデータ抽出(サニタイズ前のHTMLからメタデータを取得)
667
172
  const metadata = extractMetadata(html, fetchedTitle, fetchedDescription);
668
173
 
669
174
  // =====================================================
670
- // WebGL検出とタイムアウト調整(v0.1.0)
175
+ // WebGL検出とタイムアウト調整
671
176
  // =====================================================
672
-
673
- // WebGL/3Dコンテンツを早期検出
674
177
  const webglResult: LegacyWebGLDetectionResult = detectWebGL(html);
675
-
676
- // 元のタイムアウト値
677
178
  const originalTimeout = validated.timeout ?? 60000;
678
-
679
- // WebGL検出に基づいてタイムアウトを調整
680
179
  const timeoutAdjustment = adjustTimeoutForWebGL(originalTimeout, webglResult);
681
180
  const effectiveTimeout = timeoutAdjustment.effectiveTimeout;
682
181
 
@@ -691,14 +190,13 @@ export async function executeSyncProcessing(
691
190
  }
692
191
 
693
192
  // =====================================================
694
- // Vision CPU完走保証 Phase 4: 早期ハードウェア検出とタイムアウト拡張
695
- // CPU環境でVision分析を使用する場合、全体タイムアウトを自動延長
696
- // useVisionは既に上で定義済み
193
+ // Vision CPU完走保証: 早期ハードウェア検出とタイムアウト拡張
697
194
  // =====================================================
195
+ const useVision = validated.layoutOptions?.useVision === true;
698
196
  let cpuTimeoutExtended = false;
699
197
  let cpuEffectiveTimeout = effectiveTimeout;
700
198
  let hardwareInfoForTimeout: HardwareInfoForTimeout | undefined;
701
- let detectedHardwareType: HardwareType = HardwareType.GPU; // デフォルトはGPU(高速)
199
+ let detectedHardwareType: HardwareType = HardwareType.GPU;
702
200
 
703
201
  if (useVision) {
704
202
  try {
@@ -715,12 +213,10 @@ export async function executeSyncProcessing(
715
213
  });
716
214
  }
717
215
 
718
- // CPU環境かつVision有効時はタイムアウト拡張を計算
719
216
  const screenshotSizeBytes = fetchedScreenshot
720
217
  ? Buffer.from(fetchedScreenshot, "base64").length
721
218
  : undefined;
722
219
 
723
- // HardwareInfoForTimeout: imageSizeBytesはオプショナル
724
220
  hardwareInfoForTimeout =
725
221
  screenshotSizeBytes !== undefined
726
222
  ? {
@@ -733,11 +229,10 @@ export async function executeSyncProcessing(
733
229
  isVisionEnabled: true,
734
230
  };
735
231
 
736
- // CalculateEffectiveTimeoutOptions: imageSizeBytesはオプショナル
737
232
  const cpuTimeoutResult =
738
233
  screenshotSizeBytes !== undefined
739
234
  ? calculateEffectiveTimeout({
740
- originalTimeout: effectiveTimeout, // WebGL調整後のタイムアウトをベースに
235
+ originalTimeout: effectiveTimeout,
741
236
  hardwareType: hardwareInfo.type,
742
237
  isVisionEnabled: true,
743
238
  imageSizeBytes: screenshotSizeBytes,
@@ -762,14 +257,12 @@ export async function executeSyncProcessing(
762
257
  }
763
258
  }
764
259
  } catch (hwError) {
765
- // ハードウェア検出失敗時はCPUと仮定(安全側)
766
260
  detectedHardwareType = HardwareType.CPU;
767
261
 
768
262
  logger.warn("[page.analyze] Early hardware detection failed, assuming CPU", {
769
263
  error: hwError instanceof Error ? hwError.message : "Unknown error",
770
264
  });
771
265
 
772
- // CPU仮定でタイムアウト拡張
773
266
  hardwareInfoForTimeout = {
774
267
  type: HardwareType.CPU,
775
268
  isVisionEnabled: true,
@@ -788,11 +281,8 @@ export async function executeSyncProcessing(
788
281
  }
789
282
  }
790
283
 
791
- // Vision CPU完走保証を考慮した最終的な有効タイムアウト
792
- // MCP 600秒ハードリミット対策: フェーズタイムアウト配分の元になる値を570秒に制限
793
- // これにより distributeTimeout() が各フェーズに過大なタイムアウトを割り当てることを防止
794
- // CPU Vision延長で600秒以上に膨らんでも、フェーズ配分は570秒ベースで計算される
795
- const MCP_HARD_LIMIT_MS = 570000; // MCP 600秒 - 30秒安全マージン
284
+ // MCP 600秒ハードリミット対策
285
+ const MCP_HARD_LIMIT_MS = 570000;
796
286
  const rawFinalEffectiveTimeout = cpuTimeoutExtended ? cpuEffectiveTimeout : effectiveTimeout;
797
287
  const finalEffectiveTimeout = Math.min(rawFinalEffectiveTimeout, MCP_HARD_LIMIT_MS);
798
288
 
@@ -805,14 +295,11 @@ export async function executeSyncProcessing(
805
295
  }
806
296
 
807
297
  // =====================================================
808
- // ExecutionStatusTracker初期化(v0.1.0)
809
- // Vision CPU完走保証 Phase 4: cpuModeExtended, hardwareInfoを追加
298
+ // ExecutionStatusTracker初期化
810
299
  // =====================================================
811
-
812
300
  const timeoutStrategy = validated.timeout_strategy ?? "progressive";
813
301
  const partialResultsEnabled = validated.partial_results ?? true;
814
302
 
815
- // Vision CPU完走保証 Phase 4: hardwareInfoを条件付きで設定
816
303
  const executionTracker = hardwareInfoForTimeout
817
304
  ? new ExecutionStatusTracker({
818
305
  originalTimeoutMs: originalTimeout,
@@ -824,7 +311,7 @@ export async function executeSyncProcessing(
824
311
  cpuModeExtended: cpuTimeoutExtended,
825
312
  hardwareInfo: {
826
313
  type: detectedHardwareType,
827
- vramBytes: 0, // 詳細情報はlayout-handler内で取得
314
+ vramBytes: 0,
828
315
  isGpuAvailable: detectedHardwareType === HardwareType.GPU,
829
316
  },
830
317
  })
@@ -838,27 +325,20 @@ export async function executeSyncProcessing(
838
325
  cpuModeExtended: cpuTimeoutExtended,
839
326
  });
840
327
 
841
- // HTML取得成功を記録
842
328
  executionTracker.markCompleted("html");
843
-
844
- // スクリーンショット取得成功を記録(取得できた場合)
845
329
  if (fetchedScreenshot) {
846
330
  executionTracker.markCompleted("screenshot");
847
331
  }
848
332
 
849
- // 並列分析処理
333
+ // =====================================================
334
+ // フェーズタイムアウト配分
335
+ // =====================================================
850
336
  const features = validated.features ?? { layout: true, motion: true, quality: true };
851
337
  const warnings: AnalysisWarning[] = [];
852
338
 
853
- // タイムアウト配分を計算(調整後のタイムアウトを使用)
854
- // 注意: enable_frame_capture はデフォルトで false
855
- // detect_js_animations / detect_webgl_animations はデフォルトで true (v0.1.0)
856
- // タイムアウト分配もこのデフォルト値を反映する必要がある
857
- const hasFrameCapture = validated.motionOptions?.enable_frame_capture === true; // デフォルト false
858
- const hasJsAnimation = validated.motionOptions?.detect_js_animations !== false; // デフォルト true (v0.1.0)
339
+ const hasFrameCapture = validated.motionOptions?.enable_frame_capture === true;
340
+ const hasJsAnimation = validated.motionOptions?.detect_js_animations !== false;
859
341
 
860
- // WebGL乗数を計算(adjustTimeoutForWebGLと同じロジック)
861
- // v0.1.0: JSアニメーション検出有効時にモーション検出タイムアウトも延長
862
342
  const webglMultiplier = webglResult.detected
863
343
  ? webglResult.confidence >= 0.9
864
344
  ? 2.5
@@ -867,27 +347,22 @@ export async function executeSyncProcessing(
867
347
  : 1.5
868
348
  : 1.0;
869
349
 
870
- // 事前推定(preDetection)とHTML解析(webglResult)の両方を考慮して最大乗数を使用
871
350
  const effectiveWebglMultiplier = preDetection.isLikelyWebGL
872
351
  ? Math.max(webglMultiplier, preDetection.timeoutMultiplier)
873
352
  : webglMultiplier;
874
353
 
875
- // Vision CPU完走保証 Phase 4: finalEffectiveTimeoutとhardwareInfoForTimeoutを使用
876
354
  const phaseTimeouts = distributeTimeout(
877
- finalEffectiveTimeout, // WebGL + CPU Vision拡張後のタイムアウト
355
+ finalEffectiveTimeout,
878
356
  hasFrameCapture,
879
357
  hasJsAnimation,
880
358
  {
881
359
  detected: webglResult.detected || preDetection.isLikelyWebGL,
882
360
  multiplier: effectiveWebglMultiplier,
883
361
  },
884
- hardwareInfoForTimeout // Vision CPU完走保証 Phase 4: ハードウェア情報を渡す
362
+ hardwareInfoForTimeout
885
363
  );
886
364
 
887
- // =====================================================
888
- // Per-Phase Timeout Override (v0.1.0)
889
- // ユーザー指定の個別タイムアウトで計算値をオーバーライド
890
- // =====================================================
365
+ // Per-Phase Timeout Override
891
366
  if (validated.layoutTimeout !== undefined) {
892
367
  phaseTimeouts.layoutAnalysis = validated.layoutTimeout;
893
368
  }
@@ -898,7 +373,6 @@ export async function executeSyncProcessing(
898
373
  phaseTimeouts.qualityEvaluation = validated.qualityTimeout;
899
374
  }
900
375
 
901
- // ExecutionStatusTrackerにフェーズタイムアウト設定を反映(v0.1.0)
902
376
  executionTracker.setPhaseTimeouts({
903
377
  layout: phaseTimeouts.layoutAnalysis,
904
378
  motion: phaseTimeouts.motionDetection,
@@ -909,7 +383,7 @@ export async function executeSyncProcessing(
909
383
  logger.debug("[page.analyze] Phase timeouts calculated", {
910
384
  originalTimeout,
911
385
  effectiveTimeout,
912
- finalEffectiveTimeout, // Vision CPU完走保証 Phase 4
386
+ finalEffectiveTimeout,
913
387
  hasFrameCapture,
914
388
  hasJsAnimation,
915
389
  phaseTimeouts,
@@ -920,7 +394,6 @@ export async function executeSyncProcessing(
920
394
  motionTimeout: validated.motionTimeout,
921
395
  qualityTimeout: validated.qualityTimeout,
922
396
  },
923
- // Vision CPU完走保証 Phase 4
924
397
  cpuVisionExtension: {
925
398
  useVision,
926
399
  cpuTimeoutExtended,
@@ -929,15 +402,14 @@ export async function executeSyncProcessing(
929
402
  });
930
403
  }
931
404
 
932
- // 並列分析用の結果格納変数
405
+ // =====================================================
406
+ // 並列分析実行
407
+ // =====================================================
933
408
  let layoutServiceResult: LayoutServiceResult | null = null;
934
409
  let motionServiceResult: MotionServiceResult | null = null;
935
410
  let qualityServiceResult: QualityServiceResult | null = null;
936
411
 
937
- // =====================================================
938
- // layout_first モード判定(v0.1.0)
939
- // WebGLサイトでレイアウト抽出を最優先し、モーション検出を軽量化
940
- // =====================================================
412
+ // layout_first モード判定
941
413
  const layoutFirstMode = validated.layout_first ?? "auto";
942
414
  const useLayoutFirst =
943
415
  layoutFirstMode === "always" ||
@@ -952,17 +424,10 @@ export async function executeSyncProcessing(
952
424
  });
953
425
  }
954
426
 
955
- // =====================================================
956
- // layout_first モード時のタイムアウト再分配(v0.1.0)
957
- // モーション検出が軽量化されるため、その分をレイアウト分析に回す
958
- // =====================================================
427
+ // layout_first モード時のタイムアウト再分配
959
428
  let effectivePhaseTimeouts = phaseTimeouts;
960
429
  if (useLayoutFirst) {
961
- // layout_first モードでは:
962
- // - モーション検出: ライブラリ検出 + CSS静的解析(45秒必要)
963
- // - レイアウト分析: 余った時間を追加
964
- // v0.1.0: 15秒→45秒に増加(CSS解析に時間がかかるWebGLサイト対応)
965
- const LAYOUT_FIRST_MOTION_TIMEOUT = 45000; // 45秒(CSS解析 + ライブラリ検出)
430
+ const LAYOUT_FIRST_MOTION_TIMEOUT = 45000;
966
431
  const savedTime = phaseTimeouts.motionDetection - LAYOUT_FIRST_MOTION_TIMEOUT;
967
432
  const bonusLayoutTime = Math.max(0, savedTime);
968
433
 
@@ -987,15 +452,10 @@ export async function executeSyncProcessing(
987
452
  const analysisPromises: Promise<void>[] = [];
988
453
 
989
454
  if (features.layout !== false) {
990
- // Vision解析用スクリーンショートを準備(useVision=true時のみ必要)
991
455
  const screenshotForVision = fetchedScreenshot
992
456
  ? { base64: fetchedScreenshot, mimeType: "image/png" }
993
457
  : undefined;
994
458
 
995
- // Computed StylesをhtmlSnippetにインラインスタイルとして適用するために渡す
996
- // preExtractedCssUrlsはサニタイズ前のHTMLから抽出した外部CSS URL
997
- // Vision CPU完走保証 Phase 3: visionOptionsを渡す
998
- // Vision CPU完走保証 Phase 4: progressContextを渡す
999
459
  const layoutPromise = analyzeLayout(
1000
460
  sanitizedHtml,
1001
461
  validated.layoutOptions,
@@ -1007,7 +467,6 @@ export async function executeSyncProcessing(
1007
467
  progressContext
1008
468
  );
1009
469
 
1010
- // withTimeoutAndTracking で Layout 分析にタイムアウトを適用(ExecutionStatusTracker統合)
1011
470
  analysisPromises.push(
1012
471
  withTimeoutAndTracking(
1013
472
  layoutPromise,
@@ -1023,36 +482,23 @@ export async function executeSyncProcessing(
1023
482
  }
1024
483
 
1025
484
  if (features.motion !== false) {
1026
- // preExtractedCssUrlsをモーション検出にも渡す(サニタイズ前のHTMLから抽出済み)
1027
- // DOMPurifyで<link>タグが除去される問題の回避策
1028
-
1029
- // =====================================================
1030
- // layout_first モード時のモーション検出軽量化(v0.1.0)
1031
- // WebGLサイトでは library_only モードで高速検出
1032
- // =====================================================
1033
485
  let effectiveMotionOptions = validated.motionOptions;
1034
486
  if (useLayoutFirst) {
1035
- // ユーザーが明示的にfetchExternalCss: trueを指定した場合は尊重(v0.1.0)
1036
- // これにより、デザインデータ抽出目的での外部CSS取得が可能
1037
487
  const userExplicitFetchExternalCss = validated.motionOptions?.fetchExternalCss;
1038
488
  const effectiveFetchExternalCss = userExplicitFetchExternalCss === true ? true : false;
1039
489
 
1040
490
  effectiveMotionOptions = {
1041
491
  ...validated.motionOptions,
1042
- // library_only モードでライブラリ検出のみ実行(CDP/WebAnimations無効)
1043
- // これにより 264秒 → 5-15秒 に短縮
1044
492
  detect_js_animations: true,
1045
493
  js_animation_options: {
1046
494
  ...validated.motionOptions?.js_animation_options,
1047
- enableCDP: false, // CDP無効(高速化)
1048
- enableWebAnimations: false, // Web Animations API無効(高速化)
1049
- enableLibraryDetection: true, // ライブラリ検出のみ有効
1050
- waitTime: 500, // 短縮待機
495
+ enableCDP: false,
496
+ enableWebAnimations: false,
497
+ enableLibraryDetection: true,
498
+ waitTime: 500,
1051
499
  },
1052
- // CSS解析は維持(高速)
1053
- // v0.1.0: ユーザーが明示的に指定した場合は尊重、それ以外はデフォルトfalse(タイムアウト防止)
1054
500
  fetchExternalCss: effectiveFetchExternalCss,
1055
- maxPatterns: 50, // パターン数制限(メモリ節約)
501
+ maxPatterns: 50,
1056
502
  };
1057
503
 
1058
504
  if (isDevelopment()) {
@@ -1072,19 +518,17 @@ export async function executeSyncProcessing(
1072
518
  }
1073
519
  }
1074
520
 
1075
- // extendedContextにlayout_firstモード情報を含める
1076
521
  const motionExtendedContext = useLayoutFirst ? { layoutFirstModeEnabled: true } : undefined;
1077
522
 
1078
523
  const motionPromise = detectMotion(
1079
524
  sanitizedHtml,
1080
525
  validated.url,
1081
526
  effectiveMotionOptions,
1082
- undefined, // dbContext
1083
- motionExtendedContext, // extendedContext(layout_firstモード情報を含む)
1084
- preExtractedCssUrls // サニタイズ前に抽出した外部CSS URL
527
+ undefined,
528
+ motionExtendedContext,
529
+ preExtractedCssUrls
1085
530
  );
1086
531
 
1087
- // withTimeoutAndTracking で Motion 検出にタイムアウトを適用(ExecutionStatusTracker統合)
1088
532
  analysisPromises.push(
1089
533
  withTimeoutAndTracking(
1090
534
  motionPromise,
@@ -1102,7 +546,6 @@ export async function executeSyncProcessing(
1102
546
  if (features.quality !== false) {
1103
547
  const qualityPromise = evaluateQuality(sanitizedHtml, validated.qualityOptions);
1104
548
 
1105
- // withTimeoutAndTracking で Quality 評価にタイムアウトを適用(ExecutionStatusTracker統合)
1106
549
  analysisPromises.push(
1107
550
  withTimeoutAndTracking(
1108
551
  qualityPromise,
@@ -1117,12 +560,10 @@ export async function executeSyncProcessing(
1117
560
  );
1118
561
  }
1119
562
 
1120
- // 並列分析を実行(withTimeoutAndTrackingで個別にハンドリング済み)
1121
- // Strict戦略でエラーがスローされた場合はここでcatchされる
563
+ // 並列分析を実行
1122
564
  try {
1123
565
  await Promise.all(analysisPromises);
1124
566
  } catch (error) {
1125
- // Strict戦略でタイムアウトまたはエラーが発生した場合
1126
567
  if (timeoutStrategy === "strict") {
1127
568
  const errorMessage = error instanceof Error ? error.message : "Analysis failed";
1128
569
  logger.error("[page.analyze] Strict strategy: analysis failed", {
@@ -1137,298 +578,55 @@ export async function executeSyncProcessing(
1137
578
  },
1138
579
  };
1139
580
  }
1140
- // Progressive戦略では例外は発生しないはずだが、念のため無視して継続
1141
- }
1142
-
1143
- // 結果を統合
1144
- let layoutResult: LayoutResult | undefined;
1145
- let motionResult: MotionResult | undefined;
1146
- let qualityResult: QualityResult | undefined;
1147
- let narrativeResult: NarrativeResult | undefined;
1148
- let layoutServiceResultForSave: LayoutServiceResult | undefined;
1149
- let motionServiceResultForSave: MotionServiceResult | undefined;
1150
- let qualityServiceResultForSave: QualityServiceResult | undefined;
1151
- let narrativeHandlerResult: NarrativeHandlerResult | undefined;
1152
- const isSummary = validated.summary ?? true;
1153
-
1154
- // Layout結果の処理
1155
- if (layoutServiceResult) {
1156
- layoutServiceResultForSave = layoutServiceResult;
1157
- layoutResult = buildLayoutResult(layoutServiceResult, isSummary, validated.layoutOptions);
1158
- const warning = extractWarning("layout", layoutServiceResult);
1159
- if (warning) warnings.push(warning);
1160
581
  }
1161
582
 
1162
- // Motion結果の処理
1163
- // Note: TypeScript control flow analysis doesn't track Promise.then() assignments,
1164
- // so we use explicit type assertion after the truthy check
1165
- if (motionServiceResult !== null) {
1166
- const motion = motionServiceResult as MotionServiceResult;
1167
- motionServiceResultForSave = motion;
1168
- motionResult = buildMotionResult(motion, isSummary);
1169
- const warning = extractWarning("motion", motion);
1170
- if (warning) warnings.push(warning);
1171
-
1172
- // WebGL/Canvas検出警告(patternCount=0件 かつ detect_js_animations=false の場合)
1173
- const detectJsAnimations = validated.motionOptions?.detect_js_animations ?? true; // v0.1.0: デフォルトtrue
1174
- if (motion.patternCount === 0 && detectJsAnimations === false) {
1175
- warnings.push({
1176
- feature: "motion",
1177
- code: "WEBGL_DETECTION_DISABLED",
1178
- message:
1179
- "WebGL/Canvas animations may not be detected with current settings. Enable motionOptions.detect_js_animations: true for Three.js, GSAP, Lottie detection.",
1180
- });
1181
- if (isDevelopment()) {
1182
- logger.info("[MCP Tool] page.analyze WebGL detection warning added", {
1183
- patternCount: motion.patternCount,
1184
- detectJsAnimations,
1185
- });
1186
- }
1187
- }
1188
- }
583
+ // =====================================================
584
+ // 結果統合(sync-phase-handlers.ts)
585
+ // =====================================================
586
+ const integrated = integrateAnalysisResults({
587
+ layoutServiceResult,
588
+ motionServiceResult,
589
+ qualityServiceResult,
590
+ validated,
591
+ warnings,
592
+ });
1189
593
 
1190
- // Quality結果の処理
1191
- if (qualityServiceResult) {
1192
- qualityServiceResultForSave = qualityServiceResult;
1193
- qualityResult = buildQualityResult(qualityServiceResult, isSummary, validated.qualityOptions);
1194
- const warning = extractWarning("quality", qualityServiceResult);
1195
- if (warning) warnings.push(warning);
1196
- }
594
+ const {
595
+ layoutResult,
596
+ motionResult,
597
+ qualityResult,
598
+ layoutServiceResultForSave,
599
+ motionServiceResultForSave,
600
+ qualityServiceResultForSave,
601
+ } = integrated;
1197
602
 
1198
603
  // =====================================================
1199
- // DB保存処理(saveToDb=true の場合、デフォルトでtrue
604
+ // DB保存処理(sync-phase-handlers.ts
1200
605
  // =====================================================
1201
606
  const layoutSaveToDb = validated.layoutOptions?.saveToDb !== false;
1202
607
  const motionSaveToDb = validated.motionOptions?.saveToDb !== false;
1203
- let savedWebPageId: string | undefined;
1204
- // sectionIdMapping: 元のセクションID(section-0等)→ DB保存後のUUIDv7のマッピング
1205
- let savedSectionIdMapping: Map<string, string> | undefined;
1206
- // motionPatternIdMapping: 元のモーションパターンID(motion-0等)→ DB保存後のUUIDv7のマッピング
1207
- let savedMotionPatternIdMapping: Map<string, string> | undefined;
1208
- // backgroundDesignCount: DB保存された背景デザインの件数
1209
- let savedBackgroundDesignCount = 0;
1210
-
1211
- if (layoutSaveToDb || motionSaveToDb) {
1212
- const prisma = deps.getPrismaClient();
1213
-
1214
- if (prisma) {
1215
- // Vision分析結果を取得(全セクションで共有)
1216
- const visionFeaturesFromLayout = layoutServiceResultForSave?.visionFeatures;
1217
- // ページ全体のCSSスニペットを取得(全セクションで共有)
1218
- const pageCssSnippet = layoutServiceResultForSave?.cssSnippet;
1219
- // ページ全体の外部CSSコンテンツを取得(全セクションで共有)
1220
- const pageExternalCssContent = layoutServiceResultForSave?.externalCssContent;
1221
- // ページ全体の外部CSSメタ情報を取得(全セクションで共有)
1222
- const pageExternalCssMeta = layoutServiceResultForSave?.externalCssMeta;
1223
- // ページ全体のCSSフレームワーク検出結果を取得(全セクションで共有)
1224
- const pageCssFramework = layoutServiceResultForSave?.cssFramework;
1225
-
1226
- if (isDevelopment()) {
1227
- logger.debug("[page.analyze] CSS info from layout analysis", {
1228
- hasCssSnippet: !!pageCssSnippet,
1229
- cssSnippetLength: pageCssSnippet?.length ?? 0,
1230
- hasExternalCssContent: !!pageExternalCssContent,
1231
- externalCssContentLength: pageExternalCssContent?.length ?? 0,
1232
- cssFramework: pageCssFramework?.framework,
1233
- cssFrameworkConfidence: pageCssFramework?.confidence,
1234
- });
1235
- }
1236
-
1237
- // sectionsをDB保存用に変換(Vision分析結果 + CSSスニペット + CSSフレームワークを含む)
1238
- if (isDevelopment()) {
1239
- logger.debug("[page.analyze] sectionsForSave preparation", {
1240
- hasSections: !!layoutServiceResultForSave?.sections,
1241
- sectionCount: layoutServiceResultForSave?.sections?.length ?? 0,
1242
- pageCssFrameworkDetails: pageCssFramework
1243
- ? {
1244
- framework: pageCssFramework.framework,
1245
- confidence: pageCssFramework.confidence,
1246
- evidenceCount: pageCssFramework.evidence?.length ?? 0,
1247
- }
1248
- : null,
1249
- });
1250
- }
1251
- const sectionsForSave: SectionForSave[] =
1252
- layoutServiceResultForSave?.sections?.map((section) => {
1253
- const sectionForSave: SectionForSave = {
1254
- id: section.id,
1255
- type: section.type,
1256
- positionIndex: section.positionIndex,
1257
- heading: section.heading,
1258
- confidence: section.confidence,
1259
- // htmlSnippetはLayoutServiceResult経由でSectionDetectorから取得
1260
- htmlSnippet: section.htmlSnippet,
1261
- };
1262
-
1263
- // ページ全体のCSSスニペットを各セクションに設定
1264
- // NOTE: CSS情報はページ全体から抽出されるため、各セクションに同じCSSを含める
1265
- if (pageCssSnippet !== undefined && pageCssSnippet.length > 0) {
1266
- sectionForSave.cssSnippet = pageCssSnippet;
1267
- }
1268
-
1269
- if (pageExternalCssContent !== undefined && pageExternalCssContent.length > 0) {
1270
- sectionForSave.externalCssContent = pageExternalCssContent;
1271
- }
1272
-
1273
- if (pageExternalCssMeta !== undefined) {
1274
- sectionForSave.externalCssMeta = pageExternalCssMeta;
1275
- }
1276
-
1277
- // ページ全体のCSSフレームワーク検出結果を各セクションに設定
1278
- // NOTE: CSSフレームワークはページ全体で検出されるため、各セクションに同じ値を含める
1279
- if (pageCssFramework !== undefined) {
1280
- sectionForSave.cssFramework = pageCssFramework.framework;
1281
- sectionForSave.cssFrameworkMeta = {
1282
- confidence: pageCssFramework.confidence,
1283
- evidence: pageCssFramework.evidence,
1284
- };
1285
- }
1286
-
1287
- // Vision分析結果がある場合はセクションに含める
1288
- // NOTE: Vision分析はページ全体の解析結果のため、各セクションに同じ結果を含める
1289
- // 将来的にはセクションごとの分析結果を持つように拡張可能
1290
- if (visionFeaturesFromLayout && visionFeaturesFromLayout.success) {
1291
- const visionFeatures: SectionForSave["visionFeatures"] = {
1292
- success: visionFeaturesFromLayout.success,
1293
- features: visionFeaturesFromLayout.features,
1294
- };
1295
- // exactOptionalPropertyTypes対応: undefinedの場合はプロパティを含めない
1296
- if (layoutServiceResultForSave?.textRepresentation !== undefined) {
1297
- visionFeatures.textRepresentation = layoutServiceResultForSave.textRepresentation;
1298
- }
1299
- if (visionFeaturesFromLayout.processingTimeMs !== undefined) {
1300
- visionFeatures.processingTimeMs = visionFeaturesFromLayout.processingTimeMs;
1301
- }
1302
- if (visionFeaturesFromLayout.modelName !== undefined) {
1303
- visionFeatures.modelName = visionFeaturesFromLayout.modelName;
1304
- }
1305
- sectionForSave.visionFeatures = visionFeatures;
1306
- }
1307
-
1308
- return sectionForSave;
1309
- }) ?? [];
1310
-
1311
- // sectionsForSaveの内容を確認(cssFrameworkが設定されているか)
1312
- if (isDevelopment()) {
1313
- const sectionsWithCssFramework = sectionsForSave.filter(
1314
- (s) => s.cssFramework !== undefined
1315
- );
1316
- logger.debug("[page.analyze] sectionsForSave created", {
1317
- totalSections: sectionsForSave.length,
1318
- sectionsWithCssFramework: sectionsWithCssFramework.length,
1319
- firstSectionCssFramework: sectionsForSave[0]?.cssFramework ?? "not set",
1320
- firstSectionHasCssFrameworkMeta: !!sectionsForSave[0]?.cssFrameworkMeta,
1321
- });
1322
- }
1323
-
1324
- // motionPatternsをDB保存用に変換
1325
- const motionPatternsForSave: MotionPatternForSave[] =
1326
- motionServiceResultForSave?.patterns?.map((pattern) => ({
1327
- id: pattern.id,
1328
- name: pattern.name,
1329
- type: pattern.type,
1330
- category: pattern.category,
1331
- trigger: pattern.trigger,
1332
- duration: pattern.duration,
1333
- easing: pattern.easing,
1334
- properties: pattern.properties,
1335
- propertiesDetailed: pattern.propertiesDetailed,
1336
- rawCss: undefined, // MotionServiceResultにはrawCssが含まれていない
1337
- performance: pattern.performance,
1338
- accessibility: pattern.accessibility,
1339
- })) ?? [];
1340
-
1341
- // ページ全体のvisualFeatures(Phase 3-2追加)
1342
- // layoutServiceResultForSaveから取得し、各セクションのvisualFeaturesカラムに保存
1343
- const pageVisualFeatures = layoutServiceResultForSave?.visualFeatures;
1344
-
1345
- if (isDevelopment() && pageVisualFeatures) {
1346
- logger.debug("[page.analyze] visualFeatures from layout analysis", {
1347
- hasColors: !!pageVisualFeatures.colors,
1348
- hasTheme: !!pageVisualFeatures.theme,
1349
- hasDensity: !!pageVisualFeatures.density,
1350
- hasGradient: !!pageVisualFeatures.gradient,
1351
- hasMood: !!pageVisualFeatures.mood,
1352
- hasBrandTone: !!pageVisualFeatures.brandTone,
1353
- });
1354
- }
1355
608
 
1356
- // 背景デザイン検出結果をDB保存用に変換
1357
- const backgroundDesignsForSave: BackgroundDesignForSave[] | undefined =
1358
- layoutServiceResultForSave?.backgroundDesigns?.map((bg) => ({
1359
- name: bg.name,
1360
- designType: bg.designType,
1361
- cssValue: bg.cssValue,
1362
- selector: bg.selector,
1363
- positionIndex: bg.positionIndex,
1364
- colorInfo: bg.colorInfo as unknown as Record<string, unknown>,
1365
- gradientInfo: bg.gradientInfo as unknown as Record<string, unknown> | undefined,
1366
- visualProperties: bg.visualProperties as unknown as Record<string, unknown>,
1367
- animationInfo: bg.animationInfo as unknown as Record<string, unknown> | undefined,
1368
- cssImplementation: bg.cssImplementation,
1369
- performance: bg.performance as unknown as Record<string, unknown>,
1370
- confidence: bg.confidence,
1371
- sourceUrl: validated.url,
1372
- usageScope: validated.usageScope ?? "inspiration_only",
1373
- }));
1374
-
1375
- const saveResult = await saveToDatabase(prisma, {
1376
- url: normalizeUrlForStorage(normalizedUrl),
1377
- title: metadata.title,
1378
- htmlContent: sanitizedHtml,
1379
- screenshot: fetchedScreenshot,
1380
- sourceType: validated.sourceType ?? "user_provided",
1381
- usageScope: validated.usageScope ?? "inspiration_only",
1382
- layoutSaveToDb,
1383
- motionSaveToDb,
1384
- sections: sectionsForSave,
1385
- motionPatterns: motionPatternsForSave,
1386
- qualityResult: qualityServiceResultForSave,
1387
- visualFeatures: pageVisualFeatures,
1388
- backgroundDesigns: backgroundDesignsForSave,
1389
- });
1390
-
1391
- if (saveResult.success) {
1392
- savedWebPageId = saveResult.webPageId;
1393
- savedSectionIdMapping = saveResult.sectionIdMapping;
1394
- savedMotionPatternIdMapping = saveResult.motionPatternIdMapping;
1395
- savedBackgroundDesignCount = saveResult.backgroundDesignCount ?? 0;
609
+ const dbResult = await handleDatabasePersistence({
610
+ prisma: deps.getPrismaClient(),
611
+ normalizedUrl,
612
+ sanitizedHtml,
613
+ metadata,
614
+ fetchedScreenshot,
615
+ validated,
616
+ layoutSaveToDb,
617
+ motionSaveToDb,
618
+ layoutServiceResult: layoutServiceResultForSave,
619
+ motionServiceResult: motionServiceResultForSave,
620
+ qualityServiceResult: qualityServiceResultForSave,
621
+ warnings,
622
+ });
1396
623
 
1397
- if (isDevelopment()) {
1398
- logger.info("[page.analyze] DB save completed", {
1399
- webPageId: saveResult.webPageId,
1400
- sectionPatternCount: saveResult.sectionPatternCount,
1401
- motionPatternCount: saveResult.motionPatternCount,
1402
- backgroundDesignCount: saveResult.backgroundDesignCount,
1403
- qualityEvaluationId: saveResult.qualityEvaluationId,
1404
- sectionIdMappingSize: savedSectionIdMapping?.size ?? 0,
1405
- motionPatternIdMappingSize: savedMotionPatternIdMapping?.size ?? 0,
1406
- });
1407
- }
1408
- } else {
1409
- // Graceful Degradation: 保存失敗を警告に記録
1410
- warnings.push({
1411
- feature: "layout", // DB保存はlayout機能の一部として扱う
1412
- code: PAGE_ANALYZE_ERROR_CODES.DB_SAVE_FAILED,
1413
- message: saveResult.error ?? "Failed to save to database",
1414
- });
1415
-
1416
- if (isDevelopment()) {
1417
- logger.warn("[page.analyze] DB save failed (graceful degradation)", {
1418
- error: saveResult.error,
1419
- });
1420
- }
1421
- }
1422
- } else {
1423
- // PrismaClientが未設定の場合はスキップ(Graceful Degradation)
1424
- logger.warn("[page.analyze] DB save skipped: database connection not configured");
1425
- warnings.push({
1426
- feature: "layout",
1427
- code: PAGE_ANALYZE_ERROR_CODES.DB_NOT_CONFIGURED,
1428
- message: "DB save skipped: database connection not configured. Data will not be persisted.",
1429
- });
1430
- }
1431
- }
624
+ const {
625
+ savedWebPageId,
626
+ savedSectionIdMapping,
627
+ savedMotionPatternIdMapping,
628
+ savedBackgroundDesignCount,
629
+ } = dbResult;
1432
630
 
1433
631
  // layoutResultにpageIdを設定(保存成功時)
1434
632
  if (savedWebPageId && layoutResult) {
@@ -1436,630 +634,82 @@ export async function executeSyncProcessing(
1436
634
  }
1437
635
 
1438
636
  // =====================================================
1439
- // Embedding生成・保存(autoAnalyze / saveToDb オプション時)
637
+ // Embedding生成(sync-phase-handlers.ts)
1440
638
  // =====================================================
1441
-
1442
- // SectionEmbedding生成・保存(autoAnalyze=true(デフォルト) かつ saveToDb=true かつ IDマッピングがある場合)
1443
- // ロジックはembedding-handler.tsに分離
1444
639
  const autoAnalyze = validated.layoutOptions?.autoAnalyze !== false;
1445
640
 
1446
- if (
1447
- autoAnalyze &&
1448
- layoutSaveToDb &&
1449
- layoutServiceResultForSave?.success &&
1450
- layoutServiceResultForSave.sections &&
1451
- savedSectionIdMapping &&
1452
- savedSectionIdMapping.size > 0
1453
- ) {
1454
- // ページレベルのvisualFeaturesを取得(Phase 3-3: visualFeatures伝播)
1455
- const pageVisualFeaturesForEmbedding = layoutServiceResultForSave.visualFeatures;
1456
-
1457
- // sectionsにvisualFeaturesを伝播してSectionDataForEmbedding[]を作成
1458
- // db-handler.tsと同様に、ページレベルのvisualFeaturesを各セクションに適用
1459
- const sectionsWithVisualFeatures: SectionDataForEmbedding[] =
1460
- layoutServiceResultForSave.sections.map((section) => {
1461
- // exactOptionalPropertyTypes対応: 明示的にオブジェクトを構築
1462
- const sectionForEmbedding: SectionDataForEmbedding = {
1463
- id: section.id,
1464
- type: section.type,
1465
- positionIndex: section.positionIndex,
1466
- confidence: section.confidence,
1467
- };
1468
-
1469
- // オプショナルフィールドは存在する場合のみ設定
1470
- if (section.heading !== undefined) {
1471
- sectionForEmbedding.heading = section.heading;
1472
- }
1473
- if (section.htmlSnippet !== undefined) {
1474
- sectionForEmbedding.htmlSnippet = section.htmlSnippet;
1475
- }
1476
-
1477
- // セクション固有のvisualFeaturesがある場合はそれを使用、なければページレベルを使用
1478
- // NOTE: 現在はセクション固有のvisualFeaturesはないため、常にページレベルを使用
1479
- if (pageVisualFeaturesForEmbedding !== undefined) {
1480
- sectionForEmbedding.visualFeatures = pageVisualFeaturesForEmbedding;
1481
- }
1482
-
1483
- return sectionForEmbedding;
1484
- });
1485
-
1486
- if (isDevelopment()) {
1487
- logger.debug("[page.analyze] Propagating visualFeatures to sections for embedding", {
1488
- sectionCount: sectionsWithVisualFeatures.length,
1489
- hasPageVisualFeatures: !!pageVisualFeaturesForEmbedding,
1490
- pageVisualFeaturesKeys: pageVisualFeaturesForEmbedding
1491
- ? Object.keys(pageVisualFeaturesForEmbedding)
1492
- : [],
1493
- });
1494
- }
1495
-
1496
- // 分離されたハンドラーを呼び出し(visualFeatures伝播済みのセクションを渡す)
1497
- // MCP 600秒ガード: 残り時間が不足していればスキップ
1498
- const sectionEmbeddingRemaining = Math.max(0, 570000 - (Date.now() - overallStartTime));
1499
- if (sectionEmbeddingRemaining < 10000) {
1500
- warnings.push({
1501
- feature: "layout",
1502
- code: "EMBEDDING_SKIPPED",
1503
- message: `Section embedding generation skipped: insufficient time remaining (${sectionEmbeddingRemaining}ms)`,
1504
- });
1505
- } else {
1506
- try {
1507
- await withTimeout(
1508
- generateSectionEmbeddings(sectionsWithVisualFeatures, savedSectionIdMapping, {
1509
- webPageId: savedWebPageId,
1510
- }),
1511
- Math.min(60000, sectionEmbeddingRemaining),
1512
- "section-embedding-generation"
1513
- );
1514
- } catch (embeddingError) {
1515
- const msg =
1516
- embeddingError instanceof Error ? embeddingError.message : String(embeddingError);
1517
- warnings.push({
1518
- feature: "layout",
1519
- code: "EMBEDDING_TIMEOUT",
1520
- message: `Section embedding generation failed: ${msg}`,
1521
- });
1522
- logger.warn("[page.analyze] Section embedding generation failed", { error: msg });
1523
- }
1524
- }
1525
- }
1526
-
1527
- // MotionEmbedding生成・保存(saveToDb=true かつ IDマッピングがある場合)
1528
- // ロジックはembedding-handler.tsに分離
1529
- // 注意: db-handler.tsでMotionPatternは既に保存済み。ここではEmbedding生成・保存のみ実行
1530
- if (
1531
- motionSaveToDb &&
1532
- motionServiceResultForSave?.success &&
1533
- motionServiceResultForSave.patterns &&
1534
- savedMotionPatternIdMapping &&
1535
- savedMotionPatternIdMapping.size > 0
1536
- ) {
1537
- const patterns = motionServiceResultForSave.patterns as MotionPatternForEmbedding[];
1538
-
1539
- // 分離されたハンドラーを呼び出し(motionPatternIdMappingを渡してEmbedding生成のみ実行)
1540
- // MCP 600秒ガード: 残り時間が不足していればスキップ
1541
- const motionEmbeddingRemaining = Math.max(0, 570000 - (Date.now() - overallStartTime));
1542
- if (motionEmbeddingRemaining < 10000) {
1543
- warnings.push({
1544
- feature: "motion",
1545
- code: "EMBEDDING_SKIPPED",
1546
- message: `Motion embedding generation skipped: insufficient time remaining (${motionEmbeddingRemaining}ms)`,
1547
- });
1548
- } else {
1549
- try {
1550
- await withTimeout(
1551
- generateMotionEmbeddings(patterns, {
1552
- webPageId: savedWebPageId,
1553
- sourceUrl: validated.url,
1554
- motionPatternIdMapping: savedMotionPatternIdMapping,
1555
- }),
1556
- Math.min(60000, motionEmbeddingRemaining),
1557
- "motion-embedding-generation"
1558
- );
1559
- } catch (embeddingError) {
1560
- const msg =
1561
- embeddingError instanceof Error ? embeddingError.message : String(embeddingError);
1562
- warnings.push({
1563
- feature: "motion",
1564
- code: "EMBEDDING_TIMEOUT",
1565
- message: `Motion embedding generation failed: ${msg}`,
1566
- });
1567
- logger.warn("[page.analyze] Motion embedding generation failed", { error: msg });
1568
- }
1569
- }
1570
- }
641
+ await handleEmbeddingGeneration({
642
+ autoAnalyze,
643
+ layoutSaveToDb,
644
+ motionSaveToDb,
645
+ layoutServiceResult: layoutServiceResultForSave,
646
+ motionServiceResult: motionServiceResultForSave,
647
+ savedSectionIdMapping,
648
+ savedMotionPatternIdMapping,
649
+ savedWebPageId,
650
+ validated,
651
+ overallStartTime,
652
+ warnings,
653
+ });
1571
654
 
1572
655
  // =====================================================
1573
- // VideoMode DB保存処理(motionOptions.saveToDb=true かつ frame_analysis あり)
656
+ // VideoMode / JSアニメーション DB保存(sync-phase-handlers.ts)
1574
657
  // =====================================================
1575
- // 共有ヘルパー関数でフレーム画像分析結果(AnimationZone, LayoutShift, MotionVector)を保存
1576
- // MotionDbService は Embedding を自動生成するため、明示的な生成は不要
1577
- if (motionSaveToDb && motionServiceResultForSave?.success) {
1578
- const frameAnalysis = motionServiceResultForSave.frame_analysis;
1579
- if (frameAnalysis && savedWebPageId) {
1580
- const frameAnalysisSaveResult = await saveFrameAnalysisToDb({
1581
- frameAnalysis,
1582
- frameCapture: motionServiceResultForSave.frame_capture,
1583
- webPageId: savedWebPageId,
1584
- sourceUrl: validated.url,
1585
- });
1586
-
1587
- // 保存失敗時はwarningsに記録(Graceful Degradation)
1588
- if (!frameAnalysisSaveResult.saved) {
1589
- if (frameAnalysisSaveResult.error) {
1590
- warnings.push({
1591
- feature: "motion",
1592
- code: "FRAME_ANALYSIS_DB_SAVE_ERROR",
1593
- message: frameAnalysisSaveResult.error,
1594
- });
1595
- } else if (frameAnalysisSaveResult.skipped) {
1596
- if (isDevelopment()) {
1597
- logger.warn("[page.analyze] Frame analysis DB save skipped", {
1598
- reason: frameAnalysisSaveResult.skipped,
1599
- });
1600
- }
1601
- } else if (frameAnalysisSaveResult.batchResult?.reason) {
1602
- warnings.push({
1603
- feature: "motion",
1604
- code: "FRAME_ANALYSIS_DB_SAVE_FAILED",
1605
- message: frameAnalysisSaveResult.batchResult.reason,
1606
- });
1607
- }
1608
- }
1609
- }
1610
-
1611
- // =====================================================
1612
- // JSアニメーションパターン DB保存処理(saveToDb=true かつ js_animations あり)
1613
- // =====================================================
1614
- // JSアニメーション検出結果をJSAnimationPatternテーブルに保存
1615
- const jsAnimations = motionServiceResultForSave?.js_animations;
1616
- const jsAnimationPrisma = deps.getPrismaClient();
1617
- if (jsAnimations && savedWebPageId && jsAnimationPrisma) {
1618
- try {
1619
- if (isDevelopment()) {
1620
- logger.info("[page.analyze] Starting JS animation patterns DB save", {
1621
- webPageId: savedWebPageId,
1622
- cdpAnimationCount: jsAnimations.cdpAnimations?.length ?? 0,
1623
- webAnimationCount: jsAnimations.webAnimations?.length ?? 0,
1624
- totalDetected: jsAnimations.totalDetected ?? 0,
1625
- });
1626
- }
1627
-
1628
- // JSAnimationFullResultをJSAnimationPatternCreateDataの配列に変換
1629
- const jsAnimationPatterns = mapJSAnimationResultToPatterns(
1630
- jsAnimations,
1631
- savedWebPageId,
1632
- validated.url
1633
- );
1634
-
1635
- // DBに保存(Embedding生成含む)
1636
- if (jsAnimationPatterns.length > 0) {
1637
- const saveResult = await saveJSAnimationPatternsWithEmbeddings(
1638
- jsAnimationPrisma,
1639
- jsAnimationPatterns,
1640
- savedWebPageId,
1641
- { generateEmbedding: true } // Embedding生成を有効化
1642
- );
1643
-
1644
- if (isDevelopment()) {
1645
- logger.info("[page.analyze] JS animation patterns DB save completed", {
1646
- savedPatternCount: saveResult.savedPatternCount,
1647
- embeddingCount: saveResult.embeddingCount,
1648
- totalPatterns: jsAnimationPatterns.length,
1649
- webPageId: savedWebPageId,
1650
- });
1651
- }
1652
- }
1653
- } catch (jsAnimDbError) {
1654
- // JSアニメーションDB保存失敗(Graceful Degradation)
1655
- logger.warn("[page.analyze] JS animation patterns DB save failed (graceful degradation)", {
1656
- error: jsAnimDbError instanceof Error ? jsAnimDbError.message : "Unknown error",
1657
- });
1658
-
1659
- warnings.push({
1660
- feature: "motion",
1661
- code: "JS_ANIMATION_DB_SAVE_ERROR",
1662
- message:
1663
- jsAnimDbError instanceof Error ? jsAnimDbError.message : "JS animation DB save failed",
1664
- });
1665
- }
1666
- }
1667
- }
658
+ await handleMotionPersistenceExtras({
659
+ motionSaveToDb,
660
+ motionServiceResult: motionServiceResultForSave,
661
+ savedWebPageId,
662
+ validated,
663
+ getPrismaClient: deps.getPrismaClient,
664
+ warnings,
665
+ });
1668
666
 
1669
667
  // =====================================================
1670
- // Narrative分析(v0.1.0: narrativeOptions.enabled=true の場合)
668
+ // Narrative分析(sync-phase-handlers.ts)
1671
669
  // =====================================================
1672
- // NarrativeAnalysisServiceを使用してWebページの
1673
- // 「世界観・雰囲気(WorldView)」と「レイアウト構成(LayoutStructure)」を分析
1674
- // NOTE: DB保存後に実行することで、saveToDb=trueの場合にwebPageIdを利用可能
1675
- // NOTE: narrativeOptions.enabledはデフォルトでtrue(Zodスキーマで設定)
1676
- // v0.1.0: ?.演算子ではなく !== false でチェック(undefined/true の両方で有効化)
1677
- const narrativeEnabled = validated.narrativeOptions?.enabled !== false;
1678
- if (narrativeEnabled) {
1679
- if (isDevelopment()) {
1680
- logger.info("[page.analyze] Starting narrative analysis", {
1681
- saveToDb: validated.narrativeOptions.saveToDb,
1682
- includeVision: validated.narrativeOptions.includeVision,
1683
- visionTimeoutMs: validated.narrativeOptions.visionTimeoutMs,
1684
- generateEmbedding: validated.narrativeOptions.generateEmbedding,
1685
- webPageId: savedWebPageId,
1686
- });
1687
- }
1688
-
1689
- // Narrative分析用の入力を準備
1690
- const narrativeInput: NarrativeHandlerInput = {
1691
- html,
1692
- narrativeOptions: validated.narrativeOptions,
1693
- };
1694
-
1695
- // exactOptionalPropertyTypes対応: undefinedのプロパティは含めない
1696
- if (fetchedScreenshot !== undefined) {
1697
- narrativeInput.screenshot = fetchedScreenshot;
1698
- }
1699
-
1700
- // webPageIdがある場合は渡す(saveToDb=trueの場合に必要)
1701
- if (savedWebPageId !== undefined) {
1702
- narrativeInput.webPageId = savedWebPageId;
1703
- }
1704
-
1705
- // 既存の分析結果を渡す(Narrative分析の精度向上のため)
1706
- // NOTE: layoutServiceResultForSaveを使用(DB保存用に保持された結果)
1707
- if (layoutServiceResultForSave || motionServiceResultForSave) {
1708
- narrativeInput.existingAnalysis = {};
1709
- if (layoutServiceResultForSave?.cssVariables) {
1710
- narrativeInput.existingAnalysis.cssVariables = layoutServiceResultForSave.cssVariables;
1711
- }
1712
- if (motionServiceResultForSave) {
1713
- narrativeInput.existingAnalysis.motionPatterns = motionServiceResultForSave;
1714
- }
1715
- if (layoutServiceResultForSave?.sections) {
1716
- narrativeInput.existingAnalysis.sections = layoutServiceResultForSave.sections;
1717
- }
1718
- if (layoutServiceResultForSave?.visionFeatures) {
1719
- narrativeInput.existingAnalysis.visualFeatures = layoutServiceResultForSave.visionFeatures;
1720
- }
1721
- }
1722
-
1723
- // 外部CSSがある場合は渡す
1724
- if (layoutServiceResultForSave?.externalCssContent) {
1725
- narrativeInput.externalCss = layoutServiceResultForSave.externalCssContent;
1726
- }
1727
-
1728
- try {
1729
- // MCP 600秒ガード: Narrative分析のタイムアウトを残り時間に基づいて設定
1730
- const narrativeRemaining = Math.max(0, 570000 - (Date.now() - overallStartTime));
1731
- if (narrativeRemaining < 15000) {
1732
- // 残り時間が15秒未満ならNarrative分析をスキップ
1733
- warnings.push({
1734
- feature: "quality",
1735
- code: "NARRATIVE_SKIPPED",
1736
- message: `Narrative analysis skipped: insufficient time remaining (${narrativeRemaining}ms)`,
1737
- });
1738
- if (isDevelopment()) {
1739
- logger.warn("[page.analyze] Narrative analysis skipped due to insufficient time", {
1740
- remainingMs: narrativeRemaining,
1741
- elapsedMs: Date.now() - overallStartTime,
1742
- });
1743
- }
1744
- } else {
1745
- // Narrative分析のタイムアウト: 残り時間とvisionTimeoutMsの小さい方を使用
1746
- const narrativeTimeout = Math.min(
1747
- validated.narrativeOptions?.visionTimeoutMs ?? 300000,
1748
- narrativeRemaining
1749
- );
1750
- narrativeHandlerResult = await withTimeout(
1751
- handleNarrativeAnalysis(narrativeInput),
1752
- narrativeTimeout,
1753
- "narrative-analysis"
1754
- );
1755
- }
1756
-
1757
- if (narrativeHandlerResult?.success && narrativeHandlerResult.narrative) {
1758
- narrativeResult = buildNarrativeResult(narrativeHandlerResult, isSummary);
1759
-
1760
- if (isDevelopment() && narrativeResult) {
1761
- logger.info("[page.analyze] Narrative analysis completed", {
1762
- moodCategory: narrativeResult.worldView?.moodCategory,
1763
- confidence: narrativeResult.confidence,
1764
- processingTimeMs: narrativeHandlerResult.processingTimeMs,
1765
- savedId: narrativeHandlerResult.savedId,
1766
- });
1767
- }
1768
- } else if (narrativeHandlerResult?.skipped) {
1769
- if (isDevelopment()) {
1770
- logger.debug("[page.analyze] Narrative analysis skipped (enabled=false)");
1771
- }
1772
- } else if (narrativeHandlerResult?.error) {
1773
- // Narrative分析失敗は警告として記録し、他の分析結果は返す
1774
- // NOTE: narrativeはfeature enumに含まれていないため、コード + メッセージのみ記録
1775
- warnings.push({
1776
- feature: "quality", // narrativeはQuality系機能として分類
1777
- code: narrativeHandlerResult.error.code,
1778
- message: `Narrative analysis failed: ${narrativeHandlerResult.error.message}`,
1779
- });
1780
-
1781
- if (isDevelopment()) {
1782
- logger.warn("[page.analyze] Narrative analysis failed", {
1783
- code: narrativeHandlerResult.error.code,
1784
- message: narrativeHandlerResult.error.message,
1785
- });
1786
- }
1787
- }
1788
- } catch (narrativeError) {
1789
- // タイムアウトまたは予期しないエラーは警告として記録
1790
- const isTimeout = narrativeError instanceof PhaseTimeoutError;
1791
- const errorMessage =
1792
- narrativeError instanceof Error ? narrativeError.message : String(narrativeError);
1793
- warnings.push({
1794
- feature: "quality", // narrativeはQuality系機能として分類
1795
- code: isTimeout ? "NARRATIVE_TIMEOUT" : "NARRATIVE_UNEXPECTED_ERROR",
1796
- message: isTimeout
1797
- ? `Narrative analysis timed out: ${errorMessage}`
1798
- : `Unexpected error in narrative analysis: ${errorMessage}`,
1799
- });
1800
-
1801
- if (isDevelopment()) {
1802
- logger.error("[page.analyze] Unexpected narrative analysis error", {
1803
- error: errorMessage,
1804
- });
1805
- }
1806
- }
1807
- }
670
+ const isSummary = validated.summary ?? true;
671
+ const { narrativeResult } = await handleNarrativePhase({
672
+ validated,
673
+ html,
674
+ fetchedScreenshot,
675
+ savedWebPageId,
676
+ layoutServiceResult: layoutServiceResultForSave,
677
+ motionServiceResult: motionServiceResultForSave,
678
+ overallStartTime,
679
+ isSummary,
680
+ warnings,
681
+ });
1808
682
 
1809
683
  // =====================================================
1810
- // 注: ExecutionStatus更新はwithTimeoutAndTracking内で自動的に行われる
1811
- // markCompleted/markFailedがPromise完了/失敗時に呼び出される
684
+ // Responsive分析(sync-phase-handlers.ts)
1812
685
  // =====================================================
686
+ const { responsiveAnalysisResult, responsiveAnalysisId } = await handleResponsivePhase({
687
+ validated,
688
+ savedWebPageId,
689
+ overallStartTime,
690
+ warnings,
691
+ });
1813
692
 
1814
693
  // =====================================================
1815
- // レスポンシブ分析(responsiveOptions.enabled=true の場合)
694
+ // レスポンス構築(sync-phase-handlers.ts)
1816
695
  // =====================================================
1817
- let responsiveAnalysisResult: ResponsiveAnalysisResult | undefined;
1818
- let responsiveAnalysisId: string | undefined;
1819
-
1820
- if (validated.responsiveOptions?.enabled === true) {
1821
- const responsiveRemaining = Math.max(0, 570000 - (Date.now() - overallStartTime));
1822
- if (responsiveRemaining < 15000) {
1823
- warnings.push({
1824
- feature: "layout",
1825
- code: "RESPONSIVE_SKIPPED",
1826
- message: `Responsive analysis skipped: insufficient time remaining (${responsiveRemaining}ms)`,
1827
- });
1828
- } else {
1829
- try {
1830
- // SSRF対策: URLを検証
1831
- const urlValidation = validateExternalUrl(validated.url);
1832
- if (!urlValidation.valid) {
1833
- warnings.push({
1834
- feature: "layout",
1835
- code: "RESPONSIVE_SSRF_BLOCKED",
1836
- message: `レスポンシブ分析スキップ: ${urlValidation.error}`,
1837
- });
1838
- } else {
1839
- // robots.txt チェック
1840
- const robotsResult = await isUrlAllowedByRobotsTxt(
1841
- validated.url,
1842
- validated.respect_robots_txt
1843
- );
1844
- if (!robotsResult.allowed) {
1845
- warnings.push({
1846
- feature: "layout",
1847
- code: "RESPONSIVE_ROBOTS_BLOCKED",
1848
- message: `レスポンシブ分析スキップ: robots.txtによりブロック (${robotsResult.reason})`,
1849
- });
1850
- } else {
1851
- if (isDevelopment()) {
1852
- logger.info("[page.analyze] Starting responsive analysis", {
1853
- url: validated.url,
1854
- viewports: validated.responsiveOptions.viewports?.map((v) => v.name) ?? [
1855
- "desktop",
1856
- "tablet",
1857
- "mobile",
1858
- ],
1859
- });
1860
- }
1861
-
1862
- // crawl-delay を取得(秒→ミリ秒変換、上限30秒)
1863
- const MAX_CRAWL_DELAY_MS = 30000;
1864
- const crawlDelayMs =
1865
- robotsResult.crawlDelay !== undefined
1866
- ? Math.min(robotsResult.crawlDelay * 1000, MAX_CRAWL_DELAY_MS)
1867
- : undefined;
1868
-
1869
- // レスポンシブ分析オプションを構築
1870
- const responsiveOpts: {
1871
- enabled: boolean;
1872
- viewports?: Array<{ name: string; width: number; height: number }>;
1873
- include_screenshots?: boolean;
1874
- include_diff_images?: boolean;
1875
- diff_threshold?: number;
1876
- detect_navigation?: boolean;
1877
- detect_visibility?: boolean;
1878
- detect_layout?: boolean;
1879
- crawlDelayMs?: number;
1880
- } = { enabled: true };
1881
-
1882
- if (validated.responsiveOptions.viewports !== undefined) {
1883
- responsiveOpts.viewports = validated.responsiveOptions.viewports;
1884
- }
1885
- if (validated.responsiveOptions.include_screenshots !== undefined) {
1886
- responsiveOpts.include_screenshots = validated.responsiveOptions.include_screenshots;
1887
- }
1888
- if (validated.responsiveOptions.include_diff_images !== undefined) {
1889
- responsiveOpts.include_diff_images = validated.responsiveOptions.include_diff_images;
1890
- }
1891
- if (validated.responsiveOptions.diff_threshold !== undefined) {
1892
- responsiveOpts.diff_threshold = validated.responsiveOptions.diff_threshold;
1893
- }
1894
- if (validated.responsiveOptions.detect_navigation !== undefined) {
1895
- responsiveOpts.detect_navigation = validated.responsiveOptions.detect_navigation;
1896
- }
1897
- if (validated.responsiveOptions.detect_visibility !== undefined) {
1898
- responsiveOpts.detect_visibility = validated.responsiveOptions.detect_visibility;
1899
- }
1900
- if (validated.responsiveOptions.detect_layout !== undefined) {
1901
- responsiveOpts.detect_layout = validated.responsiveOptions.detect_layout;
1902
- }
1903
- if (crawlDelayMs !== undefined) {
1904
- responsiveOpts.crawlDelayMs = crawlDelayMs;
1905
- }
1906
-
1907
- responsiveAnalysisResult = await withTimeout(
1908
- responsiveAnalysisService.analyze(validated.url, responsiveOpts),
1909
- Math.min(responsiveRemaining, 120000), // 最大2分
1910
- "responsive-analysis"
1911
- );
1912
-
1913
- if (isDevelopment()) {
1914
- logger.info("[page.analyze] Responsive analysis completed", {
1915
- viewportsAnalyzed: responsiveAnalysisResult.viewportsAnalyzed.length,
1916
- differencesFound: responsiveAnalysisResult.differences.length,
1917
- breakpointsDetected: responsiveAnalysisResult.breakpoints.length,
1918
- analysisTimeMs: responsiveAnalysisResult.analysisTimeMs,
1919
- });
1920
- }
1921
-
1922
- // DB保存(save_to_db=true かつ webPageIdがある場合)
1923
- const responsiveSaveToDb = validated.responsiveOptions.save_to_db ?? true;
1924
- if (responsiveSaveToDb && savedWebPageId) {
1925
- try {
1926
- responsiveAnalysisId = await responsivePersistenceService.save(
1927
- savedWebPageId,
1928
- responsiveAnalysisResult
1929
- );
1930
-
1931
- if (isDevelopment()) {
1932
- logger.info("[page.analyze] Responsive analysis saved to DB", {
1933
- responsiveAnalysisId,
1934
- webPageId: savedWebPageId,
1935
- });
1936
- }
1937
- } catch (responsiveDbError) {
1938
- logger.warn("[page.analyze] Responsive DB save failed (graceful degradation)", {
1939
- error:
1940
- responsiveDbError instanceof Error
1941
- ? responsiveDbError.message
1942
- : "Unknown error",
1943
- });
1944
- warnings.push({
1945
- feature: "layout",
1946
- code: "RESPONSIVE_DB_SAVE_FAILED",
1947
- message:
1948
- responsiveDbError instanceof Error
1949
- ? responsiveDbError.message
1950
- : "Responsive DB save failed",
1951
- });
1952
- }
1953
- }
1954
- }
1955
- }
1956
- } catch (responsiveError) {
1957
- const isTimeout = responsiveError instanceof PhaseTimeoutError;
1958
- const errorMessage =
1959
- responsiveError instanceof Error ? responsiveError.message : String(responsiveError);
1960
- warnings.push({
1961
- feature: "layout",
1962
- code: isTimeout ? "RESPONSIVE_TIMEOUT" : "RESPONSIVE_ERROR",
1963
- message: isTimeout
1964
- ? `Responsive analysis timed out: ${errorMessage}`
1965
- : `Responsive analysis failed: ${errorMessage}`,
1966
- });
1967
-
1968
- if (isDevelopment()) {
1969
- logger.warn("[page.analyze] Responsive analysis failed (graceful degradation)", {
1970
- error: errorMessage,
1971
- });
1972
- }
1973
- }
1974
- }
1975
- }
1976
-
1977
- // レスポンス構築
1978
- const data: PageAnalyzeData = {
1979
- id: uuidv7(),
1980
- url: validated.url,
696
+ const data = buildPageAnalyzeResponse({
697
+ validated,
1981
698
  normalizedUrl,
1982
699
  metadata,
1983
- source: {
1984
- type: validated.sourceType ?? "user_provided",
1985
- usageScope: validated.usageScope ?? "inspiration_only",
1986
- },
1987
- totalProcessingTimeMs: Date.now() - overallStartTime,
1988
- analyzedAt: new Date().toISOString(),
1989
- // v0.1.0: ExecutionStatusを追加
1990
- execution_status: executionTracker.toExecutionStatus(),
1991
- };
1992
-
1993
- if (layoutResult) {
1994
- data.layout = layoutResult;
1995
- }
1996
-
1997
- if (motionResult) {
1998
- data.motion = motionResult;
1999
- }
2000
-
2001
- if (qualityResult) {
2002
- data.quality = qualityResult;
2003
- }
2004
-
2005
- // v0.1.0: Narrative結果を追加
2006
- if (narrativeResult) {
2007
- data.narrative = narrativeResult;
2008
- }
2009
-
2010
- // 背景デザイン検出サマリーを追加
2011
- const backgroundDesignsSummary = buildBackgroundDesignsSummary(
2012
- layoutServiceResultForSave?.backgroundDesigns,
2013
- savedBackgroundDesignCount
2014
- );
2015
- if (backgroundDesignsSummary) {
2016
- data.backgroundDesigns = backgroundDesignsSummary;
2017
- }
2018
-
2019
- // レスポンシブ分析結果を追加(responsiveOptions.enabled=true時のみ)
2020
- if (responsiveAnalysisResult) {
2021
- // ResponsiveDifference[] → Zodスキーマ互換の型に変換(passthrough index signature対応)
2022
- const differences = responsiveAnalysisResult.differences.map((d) => ({
2023
- element: d.element,
2024
- description: d.description,
2025
- category: d.category,
2026
- ...(d.desktop !== undefined ? { desktop: d.desktop } : {}),
2027
- ...(d.tablet !== undefined ? { tablet: d.tablet } : {}),
2028
- ...(d.mobile !== undefined ? { mobile: d.mobile } : {}),
2029
- }));
2030
-
2031
- const responsiveData: NonNullable<PageAnalyzeData["responsiveAnalysis"]> = {
2032
- viewportsAnalyzed: responsiveAnalysisResult.viewportsAnalyzed.map((v) => v.name),
2033
- differences,
2034
- breakpoints: responsiveAnalysisResult.breakpoints,
2035
- analysisTimeMs: responsiveAnalysisResult.analysisTimeMs,
2036
- };
2037
- if (responsiveAnalysisId) {
2038
- responsiveData.responsiveAnalysisId = responsiveAnalysisId;
2039
- }
2040
- data.responsiveAnalysis = responsiveData;
2041
- }
2042
-
2043
- if (warnings.length > 0) {
2044
- data.warnings = warnings;
2045
- }
2046
-
2047
- // v0.1.0: Pre-flight Probe結果を追加(auto_timeout=true時のみ)
2048
- if (probeResult) {
2049
- data.preflightProbe = {
2050
- calculatedTimeoutMs: probeResult.calculatedTimeoutMs,
2051
- complexityScore: probeResult.complexityScore,
2052
- hasWebGL: probeResult.hasWebGL,
2053
- hasSPA: probeResult.hasSPA,
2054
- hasHeavyFramework: probeResult.hasHeavyFramework,
2055
- probedAt: probeResult.probedAt,
2056
- probeVersion: probeResult.probeVersion,
2057
- htmlSizeBytes: probeResult.htmlSizeBytes,
2058
- scriptCount: probeResult.scriptCount,
2059
- externalResourceCount: probeResult.externalResourceCount,
2060
- responseTimeMs: probeResult.responseTimeMs,
2061
- };
2062
- }
700
+ overallStartTime,
701
+ executionTracker,
702
+ layoutResult,
703
+ motionResult,
704
+ qualityResult,
705
+ narrativeResult,
706
+ responsiveAnalysisResult,
707
+ responsiveAnalysisId,
708
+ layoutServiceResult: layoutServiceResultForSave,
709
+ savedBackgroundDesignCount,
710
+ probeResult,
711
+ warnings,
712
+ });
2063
713
 
2064
714
  if (isDevelopment()) {
2065
715
  logger.info("[MCP Tool] page.analyze completed", {
@@ -2069,7 +719,7 @@ export async function executeSyncProcessing(
2069
719
  hasQuality: !!qualityResult,
2070
720
  hasNarrative: !!narrativeResult,
2071
721
  hasResponsive: !!responsiveAnalysisResult,
2072
- backgroundDesignCount: backgroundDesignsSummary?.count ?? 0,
722
+ backgroundDesignCount: data.backgroundDesigns?.count ?? 0,
2073
723
  warningCount: warnings.length,
2074
724
  totalProcessingTimeMs: data.totalProcessingTimeMs,
2075
725
  autoTimeout: validated.auto_timeout,