@reftrixmcp/mcp-server 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1614) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +1099 -0
  3. package/dist/api/health.d.ts +122 -0
  4. package/dist/api/health.d.ts.map +1 -0
  5. package/dist/api/health.js +267 -0
  6. package/dist/api/health.js.map +1 -0
  7. package/dist/config/index.d.ts +9 -0
  8. package/dist/config/index.d.ts.map +1 -0
  9. package/dist/config/index.js +27 -0
  10. package/dist/config/index.js.map +1 -0
  11. package/dist/config/redis.d.ts +99 -0
  12. package/dist/config/redis.d.ts.map +1 -0
  13. package/dist/config/redis.js +234 -0
  14. package/dist/config/redis.js.map +1 -0
  15. package/dist/index.d.ts +18 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +247 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/lib/index.d.ts +6 -0
  20. package/dist/lib/index.d.ts.map +1 -0
  21. package/dist/lib/index.js +14 -0
  22. package/dist/lib/index.js.map +1 -0
  23. package/dist/lib/project-context.d.ts +51 -0
  24. package/dist/lib/project-context.d.ts.map +1 -0
  25. package/dist/lib/project-context.js +109 -0
  26. package/dist/lib/project-context.js.map +1 -0
  27. package/dist/middleware/args-type-coercion.d.ts +59 -0
  28. package/dist/middleware/args-type-coercion.d.ts.map +1 -0
  29. package/dist/middleware/args-type-coercion.js +187 -0
  30. package/dist/middleware/args-type-coercion.js.map +1 -0
  31. package/dist/middleware/auth.d.ts +122 -0
  32. package/dist/middleware/auth.d.ts.map +1 -0
  33. package/dist/middleware/auth.js +430 -0
  34. package/dist/middleware/auth.js.map +1 -0
  35. package/dist/middleware/index.d.ts +10 -0
  36. package/dist/middleware/index.d.ts.map +1 -0
  37. package/dist/middleware/index.js +38 -0
  38. package/dist/middleware/index.js.map +1 -0
  39. package/dist/middleware/light-response-controller.d.ts +206 -0
  40. package/dist/middleware/light-response-controller.d.ts.map +1 -0
  41. package/dist/middleware/light-response-controller.js +555 -0
  42. package/dist/middleware/light-response-controller.js.map +1 -0
  43. package/dist/middleware/response-size-warning.d.ts +97 -0
  44. package/dist/middleware/response-size-warning.d.ts.map +1 -0
  45. package/dist/middleware/response-size-warning.js +137 -0
  46. package/dist/middleware/response-size-warning.js.map +1 -0
  47. package/dist/queues/batch-quality-queue.d.ts +225 -0
  48. package/dist/queues/batch-quality-queue.d.ts.map +1 -0
  49. package/dist/queues/batch-quality-queue.js +375 -0
  50. package/dist/queues/batch-quality-queue.js.map +1 -0
  51. package/dist/queues/index.d.ts +10 -0
  52. package/dist/queues/index.d.ts.map +1 -0
  53. package/dist/queues/index.js +28 -0
  54. package/dist/queues/index.js.map +1 -0
  55. package/dist/queues/page-analyze-queue.d.ts +287 -0
  56. package/dist/queues/page-analyze-queue.d.ts.map +1 -0
  57. package/dist/queues/page-analyze-queue.js +219 -0
  58. package/dist/queues/page-analyze-queue.js.map +1 -0
  59. package/dist/router.d.ts +144 -0
  60. package/dist/router.d.ts.map +1 -0
  61. package/dist/router.js +261 -0
  62. package/dist/router.js.map +1 -0
  63. package/dist/schemas/creative/index.d.ts +8 -0
  64. package/dist/schemas/creative/index.d.ts.map +1 -0
  65. package/dist/schemas/creative/index.js +23 -0
  66. package/dist/schemas/creative/index.js.map +1 -0
  67. package/dist/schemas/creative/palette.schema.d.ts +741 -0
  68. package/dist/schemas/creative/palette.schema.d.ts.map +1 -0
  69. package/dist/schemas/creative/palette.schema.js +154 -0
  70. package/dist/schemas/creative/palette.schema.js.map +1 -0
  71. package/dist/schemas/mood-brandtone-filters.d.ts +740 -0
  72. package/dist/schemas/mood-brandtone-filters.d.ts.map +1 -0
  73. package/dist/schemas/mood-brandtone-filters.js +265 -0
  74. package/dist/schemas/mood-brandtone-filters.js.map +1 -0
  75. package/dist/scripts/backfill-embeddings.d.ts +3 -0
  76. package/dist/scripts/backfill-embeddings.d.ts.map +1 -0
  77. package/dist/scripts/backfill-embeddings.js +385 -0
  78. package/dist/scripts/backfill-embeddings.js.map +1 -0
  79. package/dist/scripts/check-embedding-coverage.d.ts +3 -0
  80. package/dist/scripts/check-embedding-coverage.d.ts.map +1 -0
  81. package/dist/scripts/check-embedding-coverage.js +103 -0
  82. package/dist/scripts/check-embedding-coverage.js.map +1 -0
  83. package/dist/scripts/start-workers.d.ts +3 -0
  84. package/dist/scripts/start-workers.d.ts.map +1 -0
  85. package/dist/scripts/start-workers.js +447 -0
  86. package/dist/scripts/start-workers.js.map +1 -0
  87. package/dist/server.d.ts +49 -0
  88. package/dist/server.d.ts.map +1 -0
  89. package/dist/server.js +237 -0
  90. package/dist/server.js.map +1 -0
  91. package/dist/services/background/background-design-db.service.d.ts +65 -0
  92. package/dist/services/background/background-design-db.service.d.ts.map +1 -0
  93. package/dist/services/background/background-design-db.service.js +138 -0
  94. package/dist/services/background/background-design-db.service.js.map +1 -0
  95. package/dist/services/background/background-design-detector.service.d.ts +125 -0
  96. package/dist/services/background/background-design-detector.service.d.ts.map +1 -0
  97. package/dist/services/background/background-design-detector.service.js +1106 -0
  98. package/dist/services/background/background-design-detector.service.js.map +1 -0
  99. package/dist/services/background/background-design-embedding.service.d.ts +188 -0
  100. package/dist/services/background/background-design-embedding.service.d.ts.map +1 -0
  101. package/dist/services/background/background-design-embedding.service.js +386 -0
  102. package/dist/services/background/background-design-embedding.service.js.map +1 -0
  103. package/dist/services/background-search.service.d.ts +43 -0
  104. package/dist/services/background-search.service.d.ts.map +1 -0
  105. package/dist/services/background-search.service.js +235 -0
  106. package/dist/services/background-search.service.js.map +1 -0
  107. package/dist/services/backup-service.d.ts +135 -0
  108. package/dist/services/backup-service.d.ts.map +1 -0
  109. package/dist/services/backup-service.js +357 -0
  110. package/dist/services/backup-service.js.map +1 -0
  111. package/dist/services/brief/brief-parser-service.d.ts +47 -0
  112. package/dist/services/brief/brief-parser-service.d.ts.map +1 -0
  113. package/dist/services/brief/brief-parser-service.js +380 -0
  114. package/dist/services/brief/brief-parser-service.js.map +1 -0
  115. package/dist/services/brief/schemas/brief-parser-schemas.d.ts +278 -0
  116. package/dist/services/brief/schemas/brief-parser-schemas.d.ts.map +1 -0
  117. package/dist/services/brief/schemas/brief-parser-schemas.js +116 -0
  118. package/dist/services/brief/schemas/brief-parser-schemas.js.map +1 -0
  119. package/dist/services/browser-process-manager.d.ts +116 -0
  120. package/dist/services/browser-process-manager.d.ts.map +1 -0
  121. package/dist/services/browser-process-manager.js +259 -0
  122. package/dist/services/browser-process-manager.js.map +1 -0
  123. package/dist/services/cache.d.ts +119 -0
  124. package/dist/services/cache.d.ts.map +1 -0
  125. package/dist/services/cache.js +233 -0
  126. package/dist/services/cache.js.map +1 -0
  127. package/dist/services/checksum-service.d.ts +122 -0
  128. package/dist/services/checksum-service.d.ts.map +1 -0
  129. package/dist/services/checksum-service.js +270 -0
  130. package/dist/services/checksum-service.js.map +1 -0
  131. package/dist/services/css-analysis-cache.service.d.ts +248 -0
  132. package/dist/services/css-analysis-cache.service.d.ts.map +1 -0
  133. package/dist/services/css-analysis-cache.service.js +398 -0
  134. package/dist/services/css-analysis-cache.service.js.map +1 -0
  135. package/dist/services/database-dumper.service.d.ts +181 -0
  136. package/dist/services/database-dumper.service.d.ts.map +1 -0
  137. package/dist/services/database-dumper.service.js +550 -0
  138. package/dist/services/database-dumper.service.js.map +1 -0
  139. package/dist/services/embedding-backfill.service.d.ts +53 -0
  140. package/dist/services/embedding-backfill.service.d.ts.map +1 -0
  141. package/dist/services/embedding-backfill.service.js +672 -0
  142. package/dist/services/embedding-backfill.service.js.map +1 -0
  143. package/dist/services/embedding-validation.service.d.ts +64 -0
  144. package/dist/services/embedding-validation.service.d.ts.map +1 -0
  145. package/dist/services/embedding-validation.service.js +141 -0
  146. package/dist/services/embedding-validation.service.js.map +1 -0
  147. package/dist/services/encryption-service.d.ts +171 -0
  148. package/dist/services/encryption-service.d.ts.map +1 -0
  149. package/dist/services/encryption-service.js +343 -0
  150. package/dist/services/encryption-service.js.map +1 -0
  151. package/dist/services/external-css-fetcher.d.ts +185 -0
  152. package/dist/services/external-css-fetcher.d.ts.map +1 -0
  153. package/dist/services/external-css-fetcher.js +667 -0
  154. package/dist/services/external-css-fetcher.js.map +1 -0
  155. package/dist/services/gpu-resource-manager.d.ts +180 -0
  156. package/dist/services/gpu-resource-manager.d.ts.map +1 -0
  157. package/dist/services/gpu-resource-manager.js +485 -0
  158. package/dist/services/gpu-resource-manager.js.map +1 -0
  159. package/dist/services/index.d.ts +15 -0
  160. package/dist/services/index.d.ts.map +1 -0
  161. package/dist/services/index.js +73 -0
  162. package/dist/services/index.js.map +1 -0
  163. package/dist/services/layout/component-splitter.d.ts +63 -0
  164. package/dist/services/layout/component-splitter.d.ts.map +1 -0
  165. package/dist/services/layout/component-splitter.js +508 -0
  166. package/dist/services/layout/component-splitter.js.map +1 -0
  167. package/dist/services/layout/html-to-jsx-converter.d.ts +40 -0
  168. package/dist/services/layout/html-to-jsx-converter.d.ts.map +1 -0
  169. package/dist/services/layout/html-to-jsx-converter.js +484 -0
  170. package/dist/services/layout/html-to-jsx-converter.js.map +1 -0
  171. package/dist/services/layout/semantic-html-converter.d.ts +67 -0
  172. package/dist/services/layout/semantic-html-converter.d.ts.map +1 -0
  173. package/dist/services/layout/semantic-html-converter.js +247 -0
  174. package/dist/services/layout/semantic-html-converter.js.map +1 -0
  175. package/dist/services/layout/style-to-tailwind-mapper.d.ts +82 -0
  176. package/dist/services/layout/style-to-tailwind-mapper.d.ts.map +1 -0
  177. package/dist/services/layout/style-to-tailwind-mapper.js +1334 -0
  178. package/dist/services/layout/style-to-tailwind-mapper.js.map +1 -0
  179. package/dist/services/layout-embedding.service.d.ts +415 -0
  180. package/dist/services/layout-embedding.service.d.ts.map +1 -0
  181. package/dist/services/layout-embedding.service.js +1147 -0
  182. package/dist/services/layout-embedding.service.js.map +1 -0
  183. package/dist/services/layout-generate-code-service-export.d.ts +38 -0
  184. package/dist/services/layout-generate-code-service-export.d.ts.map +1 -0
  185. package/dist/services/layout-generate-code-service-export.js +77 -0
  186. package/dist/services/layout-generate-code-service-export.js.map +1 -0
  187. package/dist/services/layout-search-service-export.d.ts +31 -0
  188. package/dist/services/layout-search-service-export.d.ts.map +1 -0
  189. package/dist/services/layout-search-service-export.js +43 -0
  190. package/dist/services/layout-search-service-export.js.map +1 -0
  191. package/dist/services/layout-search.service.d.ts +111 -0
  192. package/dist/services/layout-search.service.d.ts.map +1 -0
  193. package/dist/services/layout-search.service.js +716 -0
  194. package/dist/services/layout-search.service.js.map +1 -0
  195. package/dist/services/layout-to-code.service.d.ts +85 -0
  196. package/dist/services/layout-to-code.service.d.ts.map +1 -0
  197. package/dist/services/layout-to-code.service.js +1368 -0
  198. package/dist/services/layout-to-code.service.js.map +1 -0
  199. package/dist/services/metrics-collector.d.ts +189 -0
  200. package/dist/services/metrics-collector.d.ts.map +1 -0
  201. package/dist/services/metrics-collector.js +344 -0
  202. package/dist/services/metrics-collector.js.map +1 -0
  203. package/dist/services/ml/mood-brandtone-embedding.service.d.ts +253 -0
  204. package/dist/services/ml/mood-brandtone-embedding.service.d.ts.map +1 -0
  205. package/dist/services/ml/mood-brandtone-embedding.service.js +678 -0
  206. package/dist/services/ml/mood-brandtone-embedding.service.js.map +1 -0
  207. package/dist/services/motion/analyzers/color-change.analyzer.d.ts +274 -0
  208. package/dist/services/motion/analyzers/color-change.analyzer.d.ts.map +1 -0
  209. package/dist/services/motion/analyzers/color-change.analyzer.js +644 -0
  210. package/dist/services/motion/analyzers/color-change.analyzer.js.map +1 -0
  211. package/dist/services/motion/analyzers/frame-diff.analyzer.d.ts +109 -0
  212. package/dist/services/motion/analyzers/frame-diff.analyzer.d.ts.map +1 -0
  213. package/dist/services/motion/analyzers/frame-diff.analyzer.js +315 -0
  214. package/dist/services/motion/analyzers/frame-diff.analyzer.js.map +1 -0
  215. package/dist/services/motion/analyzers/layout-shift.detector.d.ts +132 -0
  216. package/dist/services/motion/analyzers/layout-shift.detector.d.ts.map +1 -0
  217. package/dist/services/motion/analyzers/layout-shift.detector.js +179 -0
  218. package/dist/services/motion/analyzers/layout-shift.detector.js.map +1 -0
  219. package/dist/services/motion/analyzers/motion-vector.estimator.d.ts +88 -0
  220. package/dist/services/motion/analyzers/motion-vector.estimator.d.ts.map +1 -0
  221. package/dist/services/motion/analyzers/motion-vector.estimator.js +494 -0
  222. package/dist/services/motion/analyzers/motion-vector.estimator.js.map +1 -0
  223. package/dist/services/motion/analyzers/webgl-motion-analyzer.d.ts +167 -0
  224. package/dist/services/motion/analyzers/webgl-motion-analyzer.d.ts.map +1 -0
  225. package/dist/services/motion/analyzers/webgl-motion-analyzer.js +500 -0
  226. package/dist/services/motion/analyzers/webgl-motion-analyzer.js.map +1 -0
  227. package/dist/services/motion/animation-metrics-collector.service.d.ts +215 -0
  228. package/dist/services/motion/animation-metrics-collector.service.d.ts.map +1 -0
  229. package/dist/services/motion/animation-metrics-collector.service.js +502 -0
  230. package/dist/services/motion/animation-metrics-collector.service.js.map +1 -0
  231. package/dist/services/motion/cls-calculator.service.d.ts +186 -0
  232. package/dist/services/motion/cls-calculator.service.d.ts.map +1 -0
  233. package/dist/services/motion/cls-calculator.service.js +329 -0
  234. package/dist/services/motion/cls-calculator.service.js.map +1 -0
  235. package/dist/services/motion/existing-animation-detector.service.d.ts +208 -0
  236. package/dist/services/motion/existing-animation-detector.service.d.ts.map +1 -0
  237. package/dist/services/motion/existing-animation-detector.service.js +591 -0
  238. package/dist/services/motion/existing-animation-detector.service.js.map +1 -0
  239. package/dist/services/motion/fade-detector.service.d.ts +114 -0
  240. package/dist/services/motion/fade-detector.service.d.ts.map +1 -0
  241. package/dist/services/motion/fade-detector.service.js +249 -0
  242. package/dist/services/motion/fade-detector.service.js.map +1 -0
  243. package/dist/services/motion/frame-analysis-save.helper.d.ts +41 -0
  244. package/dist/services/motion/frame-analysis-save.helper.d.ts.map +1 -0
  245. package/dist/services/motion/frame-analysis-save.helper.js +235 -0
  246. package/dist/services/motion/frame-analysis-save.helper.js.map +1 -0
  247. package/dist/services/motion/frame-capture.service.d.ts +170 -0
  248. package/dist/services/motion/frame-capture.service.d.ts.map +1 -0
  249. package/dist/services/motion/frame-capture.service.js +476 -0
  250. package/dist/services/motion/frame-capture.service.js.map +1 -0
  251. package/dist/services/motion/frame-embedding.service.d.ts +315 -0
  252. package/dist/services/motion/frame-embedding.service.d.ts.map +1 -0
  253. package/dist/services/motion/frame-embedding.service.js +1023 -0
  254. package/dist/services/motion/frame-embedding.service.js.map +1 -0
  255. package/dist/services/motion/frame-image-analysis.service.d.ts +126 -0
  256. package/dist/services/motion/frame-image-analysis.service.d.ts.map +1 -0
  257. package/dist/services/motion/frame-image-analysis.service.js +982 -0
  258. package/dist/services/motion/frame-image-analysis.service.js.map +1 -0
  259. package/dist/services/motion/frame-image-analyzer.adapter.d.ts +168 -0
  260. package/dist/services/motion/frame-image-analyzer.adapter.d.ts.map +1 -0
  261. package/dist/services/motion/frame-image-analyzer.adapter.js +520 -0
  262. package/dist/services/motion/frame-image-analyzer.adapter.js.map +1 -0
  263. package/dist/services/motion/frame-worker-pool.service.d.ts +133 -0
  264. package/dist/services/motion/frame-worker-pool.service.d.ts.map +1 -0
  265. package/dist/services/motion/frame-worker-pool.service.js +410 -0
  266. package/dist/services/motion/frame-worker-pool.service.js.map +1 -0
  267. package/dist/services/motion/infrastructure/frame-loader.d.ts +77 -0
  268. package/dist/services/motion/infrastructure/frame-loader.d.ts.map +1 -0
  269. package/dist/services/motion/infrastructure/frame-loader.js +430 -0
  270. package/dist/services/motion/infrastructure/frame-loader.js.map +1 -0
  271. package/dist/services/motion/js-animation-detector.d.ts +382 -0
  272. package/dist/services/motion/js-animation-detector.d.ts.map +1 -0
  273. package/dist/services/motion/js-animation-detector.js +911 -0
  274. package/dist/services/motion/js-animation-detector.js.map +1 -0
  275. package/dist/services/motion/js-animation-embedding.service.d.ts +114 -0
  276. package/dist/services/motion/js-animation-embedding.service.d.ts.map +1 -0
  277. package/dist/services/motion/js-animation-embedding.service.js +289 -0
  278. package/dist/services/motion/js-animation-embedding.service.js.map +1 -0
  279. package/dist/services/motion/js-animation-search.service.d.ts +138 -0
  280. package/dist/services/motion/js-animation-search.service.d.ts.map +1 -0
  281. package/dist/services/motion/js-animation-search.service.js +503 -0
  282. package/dist/services/motion/js-animation-search.service.js.map +1 -0
  283. package/dist/services/motion/motion-db.service.d.ts +231 -0
  284. package/dist/services/motion/motion-db.service.d.ts.map +1 -0
  285. package/dist/services/motion/motion-db.service.js +676 -0
  286. package/dist/services/motion/motion-db.service.js.map +1 -0
  287. package/dist/services/motion/three-js-scene-extractor.d.ts +274 -0
  288. package/dist/services/motion/three-js-scene-extractor.d.ts.map +1 -0
  289. package/dist/services/motion/three-js-scene-extractor.js +1126 -0
  290. package/dist/services/motion/three-js-scene-extractor.js.map +1 -0
  291. package/dist/services/motion/types.d.ts +592 -0
  292. package/dist/services/motion/types.d.ts.map +1 -0
  293. package/dist/services/motion/types.js +121 -0
  294. package/dist/services/motion/types.js.map +1 -0
  295. package/dist/services/motion/visual-category-classifier.d.ts +273 -0
  296. package/dist/services/motion/visual-category-classifier.d.ts.map +1 -0
  297. package/dist/services/motion/visual-category-classifier.js +1060 -0
  298. package/dist/services/motion/visual-category-classifier.js.map +1 -0
  299. package/dist/services/motion/webgl-animation-categorizer.d.ts +151 -0
  300. package/dist/services/motion/webgl-animation-categorizer.d.ts.map +1 -0
  301. package/dist/services/motion/webgl-animation-categorizer.js +568 -0
  302. package/dist/services/motion/webgl-animation-categorizer.js.map +1 -0
  303. package/dist/services/motion/webgl-animation-detector.service.d.ts +204 -0
  304. package/dist/services/motion/webgl-animation-detector.service.d.ts.map +1 -0
  305. package/dist/services/motion/webgl-animation-detector.service.js +518 -0
  306. package/dist/services/motion/webgl-animation-detector.service.js.map +1 -0
  307. package/dist/services/motion/webgl-animation-embedding.service.d.ts +238 -0
  308. package/dist/services/motion/webgl-animation-embedding.service.d.ts.map +1 -0
  309. package/dist/services/motion/webgl-animation-embedding.service.js +368 -0
  310. package/dist/services/motion/webgl-animation-embedding.service.js.map +1 -0
  311. package/dist/services/motion-detect-service-export.d.ts +130 -0
  312. package/dist/services/motion-detect-service-export.d.ts.map +1 -0
  313. package/dist/services/motion-detect-service-export.js +160 -0
  314. package/dist/services/motion-detect-service-export.js.map +1 -0
  315. package/dist/services/motion-persistence.service.d.ts +144 -0
  316. package/dist/services/motion-persistence.service.d.ts.map +1 -0
  317. package/dist/services/motion-persistence.service.js +398 -0
  318. package/dist/services/motion-persistence.service.js.map +1 -0
  319. package/dist/services/motion-search-service.d.ts +10 -0
  320. package/dist/services/motion-search-service.d.ts.map +1 -0
  321. package/dist/services/motion-search-service.js +22 -0
  322. package/dist/services/motion-search-service.js.map +1 -0
  323. package/dist/services/motion-search.service.d.ts +210 -0
  324. package/dist/services/motion-search.service.d.ts.map +1 -0
  325. package/dist/services/motion-search.service.js +900 -0
  326. package/dist/services/motion-search.service.js.map +1 -0
  327. package/dist/services/narrative/analyzers/layout-structure.analyzer.d.ts +75 -0
  328. package/dist/services/narrative/analyzers/layout-structure.analyzer.d.ts.map +1 -0
  329. package/dist/services/narrative/analyzers/layout-structure.analyzer.js +489 -0
  330. package/dist/services/narrative/analyzers/layout-structure.analyzer.js.map +1 -0
  331. package/dist/services/narrative/analyzers/worldview.analyzer.d.ts +92 -0
  332. package/dist/services/narrative/analyzers/worldview.analyzer.d.ts.map +1 -0
  333. package/dist/services/narrative/analyzers/worldview.analyzer.js +477 -0
  334. package/dist/services/narrative/analyzers/worldview.analyzer.js.map +1 -0
  335. package/dist/services/narrative/generators/confidence-calculator.d.ts +65 -0
  336. package/dist/services/narrative/generators/confidence-calculator.d.ts.map +1 -0
  337. package/dist/services/narrative/generators/confidence-calculator.js +316 -0
  338. package/dist/services/narrative/generators/confidence-calculator.js.map +1 -0
  339. package/dist/services/narrative/generators/text-representation.generator.d.ts +67 -0
  340. package/dist/services/narrative/generators/text-representation.generator.d.ts.map +1 -0
  341. package/dist/services/narrative/generators/text-representation.generator.js +312 -0
  342. package/dist/services/narrative/generators/text-representation.generator.js.map +1 -0
  343. package/dist/services/narrative/index.d.ts +16 -0
  344. package/dist/services/narrative/index.d.ts.map +1 -0
  345. package/dist/services/narrative/index.js +63 -0
  346. package/dist/services/narrative/index.js.map +1 -0
  347. package/dist/services/narrative/narrative-analysis.service.d.ts +120 -0
  348. package/dist/services/narrative/narrative-analysis.service.d.ts.map +1 -0
  349. package/dist/services/narrative/narrative-analysis.service.js +479 -0
  350. package/dist/services/narrative/narrative-analysis.service.js.map +1 -0
  351. package/dist/services/narrative/narrative-search.service.d.ts +126 -0
  352. package/dist/services/narrative/narrative-search.service.d.ts.map +1 -0
  353. package/dist/services/narrative/narrative-search.service.js +516 -0
  354. package/dist/services/narrative/narrative-search.service.js.map +1 -0
  355. package/dist/services/narrative/types/narrative.types.d.ts +372 -0
  356. package/dist/services/narrative/types/narrative.types.d.ts.map +1 -0
  357. package/dist/services/narrative/types/narrative.types.js +5 -0
  358. package/dist/services/narrative/types/narrative.types.js.map +1 -0
  359. package/dist/services/orphaned-job-utils.d.ts +62 -0
  360. package/dist/services/orphaned-job-utils.d.ts.map +1 -0
  361. package/dist/services/orphaned-job-utils.js +130 -0
  362. package/dist/services/orphaned-job-utils.js.map +1 -0
  363. package/dist/services/page/css-animation-parser.service.d.ts +173 -0
  364. package/dist/services/page/css-animation-parser.service.d.ts.map +1 -0
  365. package/dist/services/page/css-animation-parser.service.js +537 -0
  366. package/dist/services/page/css-animation-parser.service.js.map +1 -0
  367. package/dist/services/page/fallback-analyzer.service.d.ts +140 -0
  368. package/dist/services/page/fallback-analyzer.service.d.ts.map +1 -0
  369. package/dist/services/page/fallback-analyzer.service.js +289 -0
  370. package/dist/services/page/fallback-analyzer.service.js.map +1 -0
  371. package/dist/services/page/frame-analyzer.service.d.ts +208 -0
  372. package/dist/services/page/frame-analyzer.service.d.ts.map +1 -0
  373. package/dist/services/page/frame-analyzer.service.js +628 -0
  374. package/dist/services/page/frame-analyzer.service.js.map +1 -0
  375. package/dist/services/page/layout-analyzer.service.d.ts +323 -0
  376. package/dist/services/page/layout-analyzer.service.d.ts.map +1 -0
  377. package/dist/services/page/layout-analyzer.service.js +2001 -0
  378. package/dist/services/page/layout-analyzer.service.js.map +1 -0
  379. package/dist/services/page/motion-category-classifier.service.d.ts +72 -0
  380. package/dist/services/page/motion-category-classifier.service.d.ts.map +1 -0
  381. package/dist/services/page/motion-category-classifier.service.js +340 -0
  382. package/dist/services/page/motion-category-classifier.service.js.map +1 -0
  383. package/dist/services/page/motion-detector.service.d.ts +76 -0
  384. package/dist/services/page/motion-detector.service.d.ts.map +1 -0
  385. package/dist/services/page/motion-detector.service.js +255 -0
  386. package/dist/services/page/motion-detector.service.js.map +1 -0
  387. package/dist/services/page/motion-performance-analyzer.service.d.ts +114 -0
  388. package/dist/services/page/motion-performance-analyzer.service.d.ts.map +1 -0
  389. package/dist/services/page/motion-performance-analyzer.service.js +315 -0
  390. package/dist/services/page/motion-performance-analyzer.service.js.map +1 -0
  391. package/dist/services/page/playwright-crawler.service.d.ts +106 -0
  392. package/dist/services/page/playwright-crawler.service.d.ts.map +1 -0
  393. package/dist/services/page/playwright-crawler.service.js +373 -0
  394. package/dist/services/page/playwright-crawler.service.js.map +1 -0
  395. package/dist/services/page/quality-evaluator.service.d.ts +107 -0
  396. package/dist/services/page/quality-evaluator.service.d.ts.map +1 -0
  397. package/dist/services/page/quality-evaluator.service.js +1138 -0
  398. package/dist/services/page/quality-evaluator.service.js.map +1 -0
  399. package/dist/services/page/runtime-animation-detector.service.d.ts +154 -0
  400. package/dist/services/page/runtime-animation-detector.service.d.ts.map +1 -0
  401. package/dist/services/page/runtime-animation-detector.service.js +480 -0
  402. package/dist/services/page/runtime-animation-detector.service.js.map +1 -0
  403. package/dist/services/page/section-postprocessor.service.d.ts +55 -0
  404. package/dist/services/page/section-postprocessor.service.d.ts.map +1 -0
  405. package/dist/services/page/section-postprocessor.service.js +708 -0
  406. package/dist/services/page/section-postprocessor.service.js.map +1 -0
  407. package/dist/services/page/video-recorder.service.d.ts +110 -0
  408. package/dist/services/page/video-recorder.service.d.ts.map +1 -0
  409. package/dist/services/page/video-recorder.service.js +441 -0
  410. package/dist/services/page/video-recorder.service.js.map +1 -0
  411. package/dist/services/page/webgl-detector.service.d.ts +113 -0
  412. package/dist/services/page/webgl-detector.service.d.ts.map +1 -0
  413. package/dist/services/page/webgl-detector.service.js +280 -0
  414. package/dist/services/page/webgl-detector.service.js.map +1 -0
  415. package/dist/services/page-analyze-service.d.ts +30 -0
  416. package/dist/services/page-analyze-service.d.ts.map +1 -0
  417. package/dist/services/page-analyze-service.js +58 -0
  418. package/dist/services/page-analyze-service.js.map +1 -0
  419. package/dist/services/page-ingest-adapter.d.ts +479 -0
  420. package/dist/services/page-ingest-adapter.d.ts.map +1 -0
  421. package/dist/services/page-ingest-adapter.js +1726 -0
  422. package/dist/services/page-ingest-adapter.js.map +1 -0
  423. package/dist/services/palette-service-export.d.ts +26 -0
  424. package/dist/services/palette-service-export.d.ts.map +1 -0
  425. package/dist/services/palette-service-export.js +22 -0
  426. package/dist/services/palette-service-export.js.map +1 -0
  427. package/dist/services/part/index.d.ts +22 -0
  428. package/dist/services/part/index.d.ts.map +1 -0
  429. package/dist/services/part/index.js +72 -0
  430. package/dist/services/part/index.js.map +1 -0
  431. package/dist/services/part/part-backfill.service.d.ts +66 -0
  432. package/dist/services/part/part-backfill.service.d.ts.map +1 -0
  433. package/dist/services/part/part-backfill.service.js +195 -0
  434. package/dist/services/part/part-backfill.service.js.map +1 -0
  435. package/dist/services/part/part-bbox-playwright.service.d.ts +85 -0
  436. package/dist/services/part/part-bbox-playwright.service.d.ts.map +1 -0
  437. package/dist/services/part/part-bbox-playwright.service.js +362 -0
  438. package/dist/services/part/part-bbox-playwright.service.js.map +1 -0
  439. package/dist/services/part/part-db.service.d.ts +41 -0
  440. package/dist/services/part/part-db.service.d.ts.map +1 -0
  441. package/dist/services/part/part-db.service.js +82 -0
  442. package/dist/services/part/part-db.service.js.map +1 -0
  443. package/dist/services/part/part-embedding-db.service.d.ts +52 -0
  444. package/dist/services/part/part-embedding-db.service.d.ts.map +1 -0
  445. package/dist/services/part/part-embedding-db.service.js +122 -0
  446. package/dist/services/part/part-embedding-db.service.js.map +1 -0
  447. package/dist/services/part/part-embedding.service.d.ts +140 -0
  448. package/dist/services/part/part-embedding.service.d.ts.map +1 -0
  449. package/dist/services/part/part-embedding.service.js +276 -0
  450. package/dist/services/part/part-embedding.service.js.map +1 -0
  451. package/dist/services/part/part-extraction.service.d.ts +75 -0
  452. package/dist/services/part/part-extraction.service.d.ts.map +1 -0
  453. package/dist/services/part/part-extraction.service.js +519 -0
  454. package/dist/services/part/part-extraction.service.js.map +1 -0
  455. package/dist/services/part/part-search.service.d.ts +180 -0
  456. package/dist/services/part/part-search.service.d.ts.map +1 -0
  457. package/dist/services/part/part-search.service.js +565 -0
  458. package/dist/services/part/part-search.service.js.map +1 -0
  459. package/dist/services/part/schemas.d.ts +232 -0
  460. package/dist/services/part/schemas.d.ts.map +1 -0
  461. package/dist/services/part/schemas.js +167 -0
  462. package/dist/services/part/schemas.js.map +1 -0
  463. package/dist/services/part/section-screenshot-fallback.service.d.ts +101 -0
  464. package/dist/services/part/section-screenshot-fallback.service.d.ts.map +1 -0
  465. package/dist/services/part/section-screenshot-fallback.service.js +489 -0
  466. package/dist/services/part/section-screenshot-fallback.service.js.map +1 -0
  467. package/dist/services/part/types.d.ts +189 -0
  468. package/dist/services/part/types.d.ts.map +1 -0
  469. package/dist/services/part/types.js +139 -0
  470. package/dist/services/part/types.js.map +1 -0
  471. package/dist/services/persistent-cache.d.ts +209 -0
  472. package/dist/services/persistent-cache.d.ts.map +1 -0
  473. package/dist/services/persistent-cache.js +633 -0
  474. package/dist/services/persistent-cache.js.map +1 -0
  475. package/dist/services/preference-profile.service.d.ts +143 -0
  476. package/dist/services/preference-profile.service.d.ts.map +1 -0
  477. package/dist/services/preference-profile.service.js +604 -0
  478. package/dist/services/preference-profile.service.js.map +1 -0
  479. package/dist/services/preference-rerank.helper.d.ts +128 -0
  480. package/dist/services/preference-rerank.helper.d.ts.map +1 -0
  481. package/dist/services/preference-rerank.helper.js +397 -0
  482. package/dist/services/preference-rerank.helper.js.map +1 -0
  483. package/dist/services/production-guard.d.ts +213 -0
  484. package/dist/services/production-guard.d.ts.map +1 -0
  485. package/dist/services/production-guard.js +357 -0
  486. package/dist/services/production-guard.js.map +1 -0
  487. package/dist/services/project-context-analyzer.d.ts +194 -0
  488. package/dist/services/project-context-analyzer.d.ts.map +1 -0
  489. package/dist/services/project-context-analyzer.js +747 -0
  490. package/dist/services/project-context-analyzer.js.map +1 -0
  491. package/dist/services/quality/axe-accessibility.service.d.ts +87 -0
  492. package/dist/services/quality/axe-accessibility.service.d.ts.map +1 -0
  493. package/dist/services/quality/axe-accessibility.service.js +188 -0
  494. package/dist/services/quality/axe-accessibility.service.js.map +1 -0
  495. package/dist/services/quality/axe-core-shared.d.ts +108 -0
  496. package/dist/services/quality/axe-core-shared.d.ts.map +1 -0
  497. package/dist/services/quality/axe-core-shared.js +136 -0
  498. package/dist/services/quality/axe-core-shared.js.map +1 -0
  499. package/dist/services/quality/benchmark.service.d.ts +178 -0
  500. package/dist/services/quality/benchmark.service.d.ts.map +1 -0
  501. package/dist/services/quality/benchmark.service.js +394 -0
  502. package/dist/services/quality/benchmark.service.js.map +1 -0
  503. package/dist/services/quality/content-gap-detector.service.d.ts +133 -0
  504. package/dist/services/quality/content-gap-detector.service.d.ts.map +1 -0
  505. package/dist/services/quality/content-gap-detector.service.js +364 -0
  506. package/dist/services/quality/content-gap-detector.service.js.map +1 -0
  507. package/dist/services/quality/index.d.ts +12 -0
  508. package/dist/services/quality/index.d.ts.map +1 -0
  509. package/dist/services/quality/index.js +12 -0
  510. package/dist/services/quality/index.js.map +1 -0
  511. package/dist/services/quality/pattern-matcher.service.d.ts +195 -0
  512. package/dist/services/quality/pattern-matcher.service.d.ts.map +1 -0
  513. package/dist/services/quality/pattern-matcher.service.js +630 -0
  514. package/dist/services/quality/pattern-matcher.service.js.map +1 -0
  515. package/dist/services/quality/playwright-axe.service.d.ts +84 -0
  516. package/dist/services/quality/playwright-axe.service.d.ts.map +1 -0
  517. package/dist/services/quality/playwright-axe.service.js +267 -0
  518. package/dist/services/quality/playwright-axe.service.js.map +1 -0
  519. package/dist/services/quality/quality-evaluate.service.interface.d.ts +216 -0
  520. package/dist/services/quality/quality-evaluate.service.interface.d.ts.map +1 -0
  521. package/dist/services/quality/quality-evaluate.service.interface.js +5 -0
  522. package/dist/services/quality/quality-evaluate.service.interface.js.map +1 -0
  523. package/dist/services/quality/visual-design-analyzer.service.d.ts +72 -0
  524. package/dist/services/quality/visual-design-analyzer.service.d.ts.map +1 -0
  525. package/dist/services/quality/visual-design-analyzer.service.js +762 -0
  526. package/dist/services/quality/visual-design-analyzer.service.js.map +1 -0
  527. package/dist/services/quality-evaluate-service-export.d.ts +122 -0
  528. package/dist/services/quality-evaluate-service-export.d.ts.map +1 -0
  529. package/dist/services/quality-evaluate-service-export.js +138 -0
  530. package/dist/services/quality-evaluate-service-export.js.map +1 -0
  531. package/dist/services/quality-search.service.d.ts +20 -0
  532. package/dist/services/quality-search.service.d.ts.map +1 -0
  533. package/dist/services/quality-search.service.js +260 -0
  534. package/dist/services/quality-search.service.js.map +1 -0
  535. package/dist/services/query-analyzer.d.ts +107 -0
  536. package/dist/services/query-analyzer.d.ts.map +1 -0
  537. package/dist/services/query-analyzer.js +222 -0
  538. package/dist/services/query-analyzer.js.map +1 -0
  539. package/dist/services/query-context-analyzer.d.ts +85 -0
  540. package/dist/services/query-context-analyzer.d.ts.map +1 -0
  541. package/dist/services/query-context-analyzer.js +728 -0
  542. package/dist/services/query-context-analyzer.js.map +1 -0
  543. package/dist/services/queue-cleanup.service.d.ts +102 -0
  544. package/dist/services/queue-cleanup.service.d.ts.map +1 -0
  545. package/dist/services/queue-cleanup.service.js +259 -0
  546. package/dist/services/queue-cleanup.service.js.map +1 -0
  547. package/dist/services/responsive/difference-detector.service.d.ts +77 -0
  548. package/dist/services/responsive/difference-detector.service.d.ts.map +1 -0
  549. package/dist/services/responsive/difference-detector.service.js +525 -0
  550. package/dist/services/responsive/difference-detector.service.js.map +1 -0
  551. package/dist/services/responsive/index.d.ts +16 -0
  552. package/dist/services/responsive/index.d.ts.map +1 -0
  553. package/dist/services/responsive/index.js +60 -0
  554. package/dist/services/responsive/index.js.map +1 -0
  555. package/dist/services/responsive/multi-viewport-capture.service.d.ts +103 -0
  556. package/dist/services/responsive/multi-viewport-capture.service.d.ts.map +1 -0
  557. package/dist/services/responsive/multi-viewport-capture.service.js +841 -0
  558. package/dist/services/responsive/multi-viewport-capture.service.js.map +1 -0
  559. package/dist/services/responsive/responsive-analysis-embedding.service.d.ts +114 -0
  560. package/dist/services/responsive/responsive-analysis-embedding.service.d.ts.map +1 -0
  561. package/dist/services/responsive/responsive-analysis-embedding.service.js +232 -0
  562. package/dist/services/responsive/responsive-analysis-embedding.service.js.map +1 -0
  563. package/dist/services/responsive/responsive-analysis.service.d.ts +37 -0
  564. package/dist/services/responsive/responsive-analysis.service.d.ts.map +1 -0
  565. package/dist/services/responsive/responsive-analysis.service.js +262 -0
  566. package/dist/services/responsive/responsive-analysis.service.js.map +1 -0
  567. package/dist/services/responsive/responsive-persistence.service.d.ts +45 -0
  568. package/dist/services/responsive/responsive-persistence.service.d.ts.map +1 -0
  569. package/dist/services/responsive/responsive-persistence.service.js +102 -0
  570. package/dist/services/responsive/responsive-persistence.service.js.map +1 -0
  571. package/dist/services/responsive/responsive-quality-evaluator.service.d.ts +80 -0
  572. package/dist/services/responsive/responsive-quality-evaluator.service.d.ts.map +1 -0
  573. package/dist/services/responsive/responsive-quality-evaluator.service.js +448 -0
  574. package/dist/services/responsive/responsive-quality-evaluator.service.js.map +1 -0
  575. package/dist/services/responsive/shared-browser-manager.d.ts +65 -0
  576. package/dist/services/responsive/shared-browser-manager.d.ts.map +1 -0
  577. package/dist/services/responsive/shared-browser-manager.js +112 -0
  578. package/dist/services/responsive/shared-browser-manager.js.map +1 -0
  579. package/dist/services/responsive/types.d.ts +367 -0
  580. package/dist/services/responsive/types.d.ts.map +1 -0
  581. package/dist/services/responsive/types.js +5 -0
  582. package/dist/services/responsive/types.js.map +1 -0
  583. package/dist/services/responsive/viewport-diff.service.d.ts +49 -0
  584. package/dist/services/responsive/viewport-diff.service.d.ts.map +1 -0
  585. package/dist/services/responsive/viewport-diff.service.js +178 -0
  586. package/dist/services/responsive/viewport-diff.service.js.map +1 -0
  587. package/dist/services/responsive-search.service.d.ts +52 -0
  588. package/dist/services/responsive-search.service.d.ts.map +1 -0
  589. package/dist/services/responsive-search.service.js +136 -0
  590. package/dist/services/responsive-search.service.js.map +1 -0
  591. package/dist/services/search/mood-brandtone-search.service.d.ts +99 -0
  592. package/dist/services/search/mood-brandtone-search.service.d.ts.map +1 -0
  593. package/dist/services/search/mood-brandtone-search.service.js +310 -0
  594. package/dist/services/search/mood-brandtone-search.service.js.map +1 -0
  595. package/dist/services/search-performance.service.d.ts +118 -0
  596. package/dist/services/search-performance.service.d.ts.map +1 -0
  597. package/dist/services/search-performance.service.js +181 -0
  598. package/dist/services/search-performance.service.js.map +1 -0
  599. package/dist/services/section-screenshot.service.d.ts +163 -0
  600. package/dist/services/section-screenshot.service.d.ts.map +1 -0
  601. package/dist/services/section-screenshot.service.js +363 -0
  602. package/dist/services/section-screenshot.service.js.map +1 -0
  603. package/dist/services/service-client.d.ts +181 -0
  604. package/dist/services/service-client.d.ts.map +1 -0
  605. package/dist/services/service-client.js +450 -0
  606. package/dist/services/service-client.js.map +1 -0
  607. package/dist/services/service-initializer.d.ts +174 -0
  608. package/dist/services/service-initializer.d.ts.map +1 -0
  609. package/dist/services/service-initializer.js +942 -0
  610. package/dist/services/service-initializer.js.map +1 -0
  611. package/dist/services/storage/index.d.ts +7 -0
  612. package/dist/services/storage/index.d.ts.map +1 -0
  613. package/dist/services/storage/index.js +14 -0
  614. package/dist/services/storage/index.js.map +1 -0
  615. package/dist/services/storage/local-storage.provider.d.ts +140 -0
  616. package/dist/services/storage/local-storage.provider.d.ts.map +1 -0
  617. package/dist/services/storage/local-storage.provider.js +333 -0
  618. package/dist/services/storage/local-storage.provider.js.map +1 -0
  619. package/dist/services/style/index.d.ts +7 -0
  620. package/dist/services/style/index.d.ts.map +1 -0
  621. package/dist/services/style/index.js +25 -0
  622. package/dist/services/style/index.js.map +1 -0
  623. package/dist/services/style/palette-service.d.ts +212 -0
  624. package/dist/services/style/palette-service.d.ts.map +1 -0
  625. package/dist/services/style/palette-service.js +423 -0
  626. package/dist/services/style/palette-service.js.map +1 -0
  627. package/dist/services/style/prisma-palette-repository.d.ts +35 -0
  628. package/dist/services/style/prisma-palette-repository.d.ts.map +1 -0
  629. package/dist/services/style/prisma-palette-repository.js +165 -0
  630. package/dist/services/style/prisma-palette-repository.js.map +1 -0
  631. package/dist/services/vision/brandtone.analyzer.d.ts +104 -0
  632. package/dist/services/vision/brandtone.analyzer.d.ts.map +1 -0
  633. package/dist/services/vision/brandtone.analyzer.js +279 -0
  634. package/dist/services/vision/brandtone.analyzer.js.map +1 -0
  635. package/dist/services/vision/hardware-detector.d.ts +166 -0
  636. package/dist/services/vision/hardware-detector.d.ts.map +1 -0
  637. package/dist/services/vision/hardware-detector.js +330 -0
  638. package/dist/services/vision/hardware-detector.js.map +1 -0
  639. package/dist/services/vision/image-optimizer.d.ts +152 -0
  640. package/dist/services/vision/image-optimizer.d.ts.map +1 -0
  641. package/dist/services/vision/image-optimizer.js +266 -0
  642. package/dist/services/vision/image-optimizer.js.map +1 -0
  643. package/dist/services/vision/index.d.ts +26 -0
  644. package/dist/services/vision/index.d.ts.map +1 -0
  645. package/dist/services/vision/index.js +80 -0
  646. package/dist/services/vision/index.js.map +1 -0
  647. package/dist/services/vision/llama-vision-adapter.d.ts +178 -0
  648. package/dist/services/vision/llama-vision-adapter.d.ts.map +1 -0
  649. package/dist/services/vision/llama-vision-adapter.js +307 -0
  650. package/dist/services/vision/llama-vision-adapter.js.map +1 -0
  651. package/dist/services/vision/mcp-progress-adapter.d.ts +128 -0
  652. package/dist/services/vision/mcp-progress-adapter.d.ts.map +1 -0
  653. package/dist/services/vision/mcp-progress-adapter.js +150 -0
  654. package/dist/services/vision/mcp-progress-adapter.js.map +1 -0
  655. package/dist/services/vision/mood.analyzer.d.ts +74 -0
  656. package/dist/services/vision/mood.analyzer.d.ts.map +1 -0
  657. package/dist/services/vision/mood.analyzer.js +258 -0
  658. package/dist/services/vision/mood.analyzer.js.map +1 -0
  659. package/dist/services/vision/ollama-readiness-probe.d.ts +87 -0
  660. package/dist/services/vision/ollama-readiness-probe.d.ts.map +1 -0
  661. package/dist/services/vision/ollama-readiness-probe.js +211 -0
  662. package/dist/services/vision/ollama-readiness-probe.js.map +1 -0
  663. package/dist/services/vision/ollama-vision-client.d.ts +129 -0
  664. package/dist/services/vision/ollama-vision-client.d.ts.map +1 -0
  665. package/dist/services/vision/ollama-vision-client.js +478 -0
  666. package/dist/services/vision/ollama-vision-client.js.map +1 -0
  667. package/dist/services/vision/progress-reporter.d.ts +140 -0
  668. package/dist/services/vision/progress-reporter.d.ts.map +1 -0
  669. package/dist/services/vision/progress-reporter.js +306 -0
  670. package/dist/services/vision/progress-reporter.js.map +1 -0
  671. package/dist/services/vision/scroll-vision-capture.service.d.ts +117 -0
  672. package/dist/services/vision/scroll-vision-capture.service.d.ts.map +1 -0
  673. package/dist/services/vision/scroll-vision-capture.service.js +266 -0
  674. package/dist/services/vision/scroll-vision-capture.service.js.map +1 -0
  675. package/dist/services/vision/scroll-vision-persistence.service.d.ts +48 -0
  676. package/dist/services/vision/scroll-vision-persistence.service.d.ts.map +1 -0
  677. package/dist/services/vision/scroll-vision-persistence.service.js +161 -0
  678. package/dist/services/vision/scroll-vision-persistence.service.js.map +1 -0
  679. package/dist/services/vision/scroll-vision.analyzer.d.ts +90 -0
  680. package/dist/services/vision/scroll-vision.analyzer.d.ts.map +1 -0
  681. package/dist/services/vision/scroll-vision.analyzer.js +280 -0
  682. package/dist/services/vision/scroll-vision.analyzer.js.map +1 -0
  683. package/dist/services/vision/theme.analyzer.d.ts +108 -0
  684. package/dist/services/vision/theme.analyzer.d.ts.map +1 -0
  685. package/dist/services/vision/theme.analyzer.js +315 -0
  686. package/dist/services/vision/theme.analyzer.js.map +1 -0
  687. package/dist/services/vision/timeout-calculator.d.ts +85 -0
  688. package/dist/services/vision/timeout-calculator.d.ts.map +1 -0
  689. package/dist/services/vision/timeout-calculator.js +142 -0
  690. package/dist/services/vision/timeout-calculator.js.map +1 -0
  691. package/dist/services/vision/vision-fallback.service.d.ts +121 -0
  692. package/dist/services/vision/vision-fallback.service.d.ts.map +1 -0
  693. package/dist/services/vision/vision-fallback.service.js +253 -0
  694. package/dist/services/vision/vision-fallback.service.js.map +1 -0
  695. package/dist/services/vision/vision.cache.d.ts +124 -0
  696. package/dist/services/vision/vision.cache.d.ts.map +1 -0
  697. package/dist/services/vision/vision.cache.js +261 -0
  698. package/dist/services/vision/vision.cache.js.map +1 -0
  699. package/dist/services/vision/vision.errors.d.ts +104 -0
  700. package/dist/services/vision/vision.errors.d.ts.map +1 -0
  701. package/dist/services/vision/vision.errors.js +133 -0
  702. package/dist/services/vision/vision.errors.js.map +1 -0
  703. package/dist/services/vision/vision.prompts.d.ts +47 -0
  704. package/dist/services/vision/vision.prompts.d.ts.map +1 -0
  705. package/dist/services/vision/vision.prompts.js +272 -0
  706. package/dist/services/vision/vision.prompts.js.map +1 -0
  707. package/dist/services/vision/vram-utils.d.ts +22 -0
  708. package/dist/services/vision/vram-utils.d.ts.map +1 -0
  709. package/dist/services/vision/vram-utils.js +57 -0
  710. package/dist/services/vision/vram-utils.js.map +1 -0
  711. package/dist/services/vision-adapter/index.d.ts +18 -0
  712. package/dist/services/vision-adapter/index.d.ts.map +1 -0
  713. package/dist/services/vision-adapter/index.js +31 -0
  714. package/dist/services/vision-adapter/index.js.map +1 -0
  715. package/dist/services/vision-adapter/interface.d.ts +1434 -0
  716. package/dist/services/vision-adapter/interface.d.ts.map +1 -0
  717. package/dist/services/vision-adapter/interface.js +326 -0
  718. package/dist/services/vision-adapter/interface.js.map +1 -0
  719. package/dist/services/vision-adapter/llama-vision.adapter.d.ts +373 -0
  720. package/dist/services/vision-adapter/llama-vision.adapter.d.ts.map +1 -0
  721. package/dist/services/vision-adapter/llama-vision.adapter.js +1751 -0
  722. package/dist/services/vision-adapter/llama-vision.adapter.js.map +1 -0
  723. package/dist/services/vision-adapter/llama-vision.prompts.d.ts +63 -0
  724. package/dist/services/vision-adapter/llama-vision.prompts.d.ts.map +1 -0
  725. package/dist/services/vision-adapter/llama-vision.prompts.js +234 -0
  726. package/dist/services/vision-adapter/llama-vision.prompts.js.map +1 -0
  727. package/dist/services/vision-adapter/llama-vision.types.d.ts +68 -0
  728. package/dist/services/vision-adapter/llama-vision.types.d.ts.map +1 -0
  729. package/dist/services/vision-adapter/llama-vision.types.js +21 -0
  730. package/dist/services/vision-adapter/llama-vision.types.js.map +1 -0
  731. package/dist/services/vision-adapter/local.adapter.d.ts +185 -0
  732. package/dist/services/vision-adapter/local.adapter.d.ts.map +1 -0
  733. package/dist/services/vision-adapter/local.adapter.js +835 -0
  734. package/dist/services/vision-adapter/local.adapter.js.map +1 -0
  735. package/dist/services/vision-adapter/mock.adapter.d.ts +174 -0
  736. package/dist/services/vision-adapter/mock.adapter.d.ts.map +1 -0
  737. package/dist/services/vision-adapter/mock.adapter.js +812 -0
  738. package/dist/services/vision-adapter/mock.adapter.js.map +1 -0
  739. package/dist/services/vision-embedding-search.service.d.ts +205 -0
  740. package/dist/services/vision-embedding-search.service.d.ts.map +1 -0
  741. package/dist/services/vision-embedding-search.service.js +742 -0
  742. package/dist/services/vision-embedding-search.service.js.map +1 -0
  743. package/dist/services/vision-embedding.service.d.ts +150 -0
  744. package/dist/services/vision-embedding.service.d.ts.map +1 -0
  745. package/dist/services/vision-embedding.service.js +461 -0
  746. package/dist/services/vision-embedding.service.js.map +1 -0
  747. package/dist/services/visual/css-variable-extractor.service.d.ts +97 -0
  748. package/dist/services/visual/css-variable-extractor.service.d.ts.map +1 -0
  749. package/dist/services/visual/css-variable-extractor.service.js +460 -0
  750. package/dist/services/visual/css-variable-extractor.service.js.map +1 -0
  751. package/dist/services/visual/typography-extractor.service.d.ts +137 -0
  752. package/dist/services/visual/typography-extractor.service.d.ts.map +1 -0
  753. package/dist/services/visual/typography-extractor.service.js +539 -0
  754. package/dist/services/visual/typography-extractor.service.js.map +1 -0
  755. package/dist/services/visual-extractor/color-extractor.service.d.ts +55 -0
  756. package/dist/services/visual-extractor/color-extractor.service.d.ts.map +1 -0
  757. package/dist/services/visual-extractor/color-extractor.service.js +281 -0
  758. package/dist/services/visual-extractor/color-extractor.service.js.map +1 -0
  759. package/dist/services/visual-extractor/density-calculator.service.d.ts +85 -0
  760. package/dist/services/visual-extractor/density-calculator.service.d.ts.map +1 -0
  761. package/dist/services/visual-extractor/density-calculator.service.js +369 -0
  762. package/dist/services/visual-extractor/density-calculator.service.js.map +1 -0
  763. package/dist/services/visual-extractor/gradient-detector.service.d.ts +134 -0
  764. package/dist/services/visual-extractor/gradient-detector.service.d.ts.map +1 -0
  765. package/dist/services/visual-extractor/gradient-detector.service.js +1172 -0
  766. package/dist/services/visual-extractor/gradient-detector.service.js.map +1 -0
  767. package/dist/services/visual-extractor/image-utils.d.ts +135 -0
  768. package/dist/services/visual-extractor/image-utils.d.ts.map +1 -0
  769. package/dist/services/visual-extractor/image-utils.js +305 -0
  770. package/dist/services/visual-extractor/image-utils.js.map +1 -0
  771. package/dist/services/visual-extractor/pixel-theme-detector.service.d.ts +58 -0
  772. package/dist/services/visual-extractor/pixel-theme-detector.service.d.ts.map +1 -0
  773. package/dist/services/visual-extractor/pixel-theme-detector.service.js +358 -0
  774. package/dist/services/visual-extractor/pixel-theme-detector.service.js.map +1 -0
  775. package/dist/services/visual-extractor/theme-detector.service.d.ts +101 -0
  776. package/dist/services/visual-extractor/theme-detector.service.d.ts.map +1 -0
  777. package/dist/services/visual-extractor/theme-detector.service.js +463 -0
  778. package/dist/services/visual-extractor/theme-detector.service.js.map +1 -0
  779. package/dist/services/visual-extractor/visual-decoration-detector.service.d.ts +43 -0
  780. package/dist/services/visual-extractor/visual-decoration-detector.service.d.ts.map +1 -0
  781. package/dist/services/visual-extractor/visual-decoration-detector.service.js +628 -0
  782. package/dist/services/visual-extractor/visual-decoration-detector.service.js.map +1 -0
  783. package/dist/services/visual-extractor/visual-feature-merger.service.d.ts +230 -0
  784. package/dist/services/visual-extractor/visual-feature-merger.service.d.ts.map +1 -0
  785. package/dist/services/visual-extractor/visual-feature-merger.service.js +482 -0
  786. package/dist/services/visual-extractor/visual-feature-merger.service.js.map +1 -0
  787. package/dist/services/web-page.service.d.ts +80 -0
  788. package/dist/services/web-page.service.d.ts.map +1 -0
  789. package/dist/services/web-page.service.js +211 -0
  790. package/dist/services/web-page.service.js.map +1 -0
  791. package/dist/services/worker-constants.d.ts +40 -0
  792. package/dist/services/worker-constants.d.ts.map +1 -0
  793. package/dist/services/worker-constants.js +51 -0
  794. package/dist/services/worker-constants.js.map +1 -0
  795. package/dist/services/worker-db-save.service.d.ts +311 -0
  796. package/dist/services/worker-db-save.service.d.ts.map +1 -0
  797. package/dist/services/worker-db-save.service.js +771 -0
  798. package/dist/services/worker-db-save.service.js.map +1 -0
  799. package/dist/services/worker-memory-monitor.service.d.ts +24 -0
  800. package/dist/services/worker-memory-monitor.service.d.ts.map +1 -0
  801. package/dist/services/worker-memory-monitor.service.js +105 -0
  802. package/dist/services/worker-memory-monitor.service.js.map +1 -0
  803. package/dist/services/worker-memory-profile.d.ts +65 -0
  804. package/dist/services/worker-memory-profile.d.ts.map +1 -0
  805. package/dist/services/worker-memory-profile.js +225 -0
  806. package/dist/services/worker-memory-profile.js.map +1 -0
  807. package/dist/services/worker-stall-recovery.service.d.ts +166 -0
  808. package/dist/services/worker-stall-recovery.service.d.ts.map +1 -0
  809. package/dist/services/worker-stall-recovery.service.js +335 -0
  810. package/dist/services/worker-stall-recovery.service.js.map +1 -0
  811. package/dist/services/worker-supervisor.service.d.ts +145 -0
  812. package/dist/services/worker-supervisor.service.d.ts.map +1 -0
  813. package/dist/services/worker-supervisor.service.js +635 -0
  814. package/dist/services/worker-supervisor.service.js.map +1 -0
  815. package/dist/tools/background/schemas.d.ts +85 -0
  816. package/dist/tools/background/schemas.d.ts.map +1 -0
  817. package/dist/tools/background/schemas.js +79 -0
  818. package/dist/tools/background/schemas.js.map +1 -0
  819. package/dist/tools/background/search.tool.d.ts +179 -0
  820. package/dist/tools/background/search.tool.d.ts.map +1 -0
  821. package/dist/tools/background/search.tool.js +318 -0
  822. package/dist/tools/background/search.tool.js.map +1 -0
  823. package/dist/tools/brief/index.d.ts +10 -0
  824. package/dist/tools/brief/index.d.ts.map +1 -0
  825. package/dist/tools/brief/index.js +54 -0
  826. package/dist/tools/brief/index.js.map +1 -0
  827. package/dist/tools/brief/schemas.d.ts +750 -0
  828. package/dist/tools/brief/schemas.d.ts.map +1 -0
  829. package/dist/tools/brief/schemas.js +212 -0
  830. package/dist/tools/brief/schemas.js.map +1 -0
  831. package/dist/tools/brief/validate.handler.d.ts +149 -0
  832. package/dist/tools/brief/validate.handler.d.ts.map +1 -0
  833. package/dist/tools/brief/validate.handler.js +247 -0
  834. package/dist/tools/brief/validate.handler.js.map +1 -0
  835. package/dist/tools/brief/validate.service.d.ts +100 -0
  836. package/dist/tools/brief/validate.service.d.ts.map +1 -0
  837. package/dist/tools/brief/validate.service.js +296 -0
  838. package/dist/tools/brief/validate.service.js.map +1 -0
  839. package/dist/tools/common/error-codes.d.ts +35 -0
  840. package/dist/tools/common/error-codes.d.ts.map +1 -0
  841. package/dist/tools/common/error-codes.js +92 -0
  842. package/dist/tools/common/error-codes.js.map +1 -0
  843. package/dist/tools/common/index.d.ts +7 -0
  844. package/dist/tools/common/index.d.ts.map +1 -0
  845. package/dist/tools/common/index.js +20 -0
  846. package/dist/tools/common/index.js.map +1 -0
  847. package/dist/tools/index.d.ts +2756 -0
  848. package/dist/tools/index.d.ts.map +1 -0
  849. package/dist/tools/index.js +506 -0
  850. package/dist/tools/index.js.map +1 -0
  851. package/dist/tools/layout/batch-ingest.tool.d.ts +82 -0
  852. package/dist/tools/layout/batch-ingest.tool.d.ts.map +1 -0
  853. package/dist/tools/layout/batch-ingest.tool.js +410 -0
  854. package/dist/tools/layout/batch-ingest.tool.js.map +1 -0
  855. package/dist/tools/layout/index.d.ts +13 -0
  856. package/dist/tools/layout/index.d.ts.map +1 -0
  857. package/dist/tools/layout/index.js +62 -0
  858. package/dist/tools/layout/index.js.map +1 -0
  859. package/dist/tools/layout/ingest.tool.d.ts +338 -0
  860. package/dist/tools/layout/ingest.tool.d.ts.map +1 -0
  861. package/dist/tools/layout/ingest.tool.js +1308 -0
  862. package/dist/tools/layout/ingest.tool.js.map +1 -0
  863. package/dist/tools/layout/inspect/index.d.ts +11 -0
  864. package/dist/tools/layout/inspect/index.d.ts.map +1 -0
  865. package/dist/tools/layout/inspect/index.js +55 -0
  866. package/dist/tools/layout/inspect/index.js.map +1 -0
  867. package/dist/tools/layout/inspect/inspect.schemas.d.ts +4130 -0
  868. package/dist/tools/layout/inspect/inspect.schemas.d.ts.map +1 -0
  869. package/dist/tools/layout/inspect/inspect.schemas.js +400 -0
  870. package/dist/tools/layout/inspect/inspect.schemas.js.map +1 -0
  871. package/dist/tools/layout/inspect/inspect.tool.d.ts +164 -0
  872. package/dist/tools/layout/inspect/inspect.tool.d.ts.map +1 -0
  873. package/dist/tools/layout/inspect/inspect.tool.js +738 -0
  874. package/dist/tools/layout/inspect/inspect.tool.js.map +1 -0
  875. package/dist/tools/layout/inspect/inspect.utils.d.ts +200 -0
  876. package/dist/tools/layout/inspect/inspect.utils.d.ts.map +1 -0
  877. package/dist/tools/layout/inspect/inspect.utils.js +1104 -0
  878. package/dist/tools/layout/inspect/inspect.utils.js.map +1 -0
  879. package/dist/tools/layout/inspect/visual-extractors.schemas.d.ts +3372 -0
  880. package/dist/tools/layout/inspect/visual-extractors.schemas.d.ts.map +1 -0
  881. package/dist/tools/layout/inspect/visual-extractors.schemas.js +558 -0
  882. package/dist/tools/layout/inspect/visual-extractors.schemas.js.map +1 -0
  883. package/dist/tools/layout/inspect/visual-extractors.utils.d.ts +86 -0
  884. package/dist/tools/layout/inspect/visual-extractors.utils.d.ts.map +1 -0
  885. package/dist/tools/layout/inspect/visual-extractors.utils.js +231 -0
  886. package/dist/tools/layout/inspect/visual-extractors.utils.js.map +1 -0
  887. package/dist/tools/layout/schemas.d.ts +11074 -0
  888. package/dist/tools/layout/schemas.d.ts.map +1 -0
  889. package/dist/tools/layout/schemas.js +1497 -0
  890. package/dist/tools/layout/schemas.js.map +1 -0
  891. package/dist/tools/layout/search.tool.d.ts +470 -0
  892. package/dist/tools/layout/search.tool.d.ts.map +1 -0
  893. package/dist/tools/layout/search.tool.js +1582 -0
  894. package/dist/tools/layout/search.tool.js.map +1 -0
  895. package/dist/tools/layout/to-code.tool.d.ts +280 -0
  896. package/dist/tools/layout/to-code.tool.d.ts.map +1 -0
  897. package/dist/tools/layout/to-code.tool.js +317 -0
  898. package/dist/tools/layout/to-code.tool.js.map +1 -0
  899. package/dist/tools/motion/analyze-frames.handler.d.ts +157 -0
  900. package/dist/tools/motion/analyze-frames.handler.d.ts.map +1 -0
  901. package/dist/tools/motion/analyze-frames.handler.js +263 -0
  902. package/dist/tools/motion/analyze-frames.handler.js.map +1 -0
  903. package/dist/tools/motion/analyze-frames.schema.d.ts +4599 -0
  904. package/dist/tools/motion/analyze-frames.schema.d.ts.map +1 -0
  905. package/dist/tools/motion/analyze-frames.schema.js +420 -0
  906. package/dist/tools/motion/analyze-frames.schema.js.map +1 -0
  907. package/dist/tools/motion/css-mode-handler.d.ts +70 -0
  908. package/dist/tools/motion/css-mode-handler.d.ts.map +1 -0
  909. package/dist/tools/motion/css-mode-handler.js +754 -0
  910. package/dist/tools/motion/css-mode-handler.js.map +1 -0
  911. package/dist/tools/motion/detect.schemas.d.ts +14288 -0
  912. package/dist/tools/motion/detect.schemas.d.ts.map +1 -0
  913. package/dist/tools/motion/detect.schemas.js +1715 -0
  914. package/dist/tools/motion/detect.schemas.js.map +1 -0
  915. package/dist/tools/motion/detect.tool.d.ts +195 -0
  916. package/dist/tools/motion/detect.tool.d.ts.map +1 -0
  917. package/dist/tools/motion/detect.tool.js +1421 -0
  918. package/dist/tools/motion/detect.tool.js.map +1 -0
  919. package/dist/tools/motion/detection-modes.d.ts +72 -0
  920. package/dist/tools/motion/detection-modes.d.ts.map +1 -0
  921. package/dist/tools/motion/detection-modes.js +353 -0
  922. package/dist/tools/motion/detection-modes.js.map +1 -0
  923. package/dist/tools/motion/di-factories.d.ts +341 -0
  924. package/dist/tools/motion/di-factories.d.ts.map +1 -0
  925. package/dist/tools/motion/di-factories.js +376 -0
  926. package/dist/tools/motion/di-factories.js.map +1 -0
  927. package/dist/tools/motion/index.d.ts +12 -0
  928. package/dist/tools/motion/index.d.ts.map +1 -0
  929. package/dist/tools/motion/index.js +146 -0
  930. package/dist/tools/motion/index.js.map +1 -0
  931. package/dist/tools/motion/pattern-converter.d.ts +49 -0
  932. package/dist/tools/motion/pattern-converter.d.ts.map +1 -0
  933. package/dist/tools/motion/pattern-converter.js +493 -0
  934. package/dist/tools/motion/pattern-converter.js.map +1 -0
  935. package/dist/tools/motion/schemas.d.ts +10 -0
  936. package/dist/tools/motion/schemas.d.ts.map +1 -0
  937. package/dist/tools/motion/schemas.js +28 -0
  938. package/dist/tools/motion/schemas.js.map +1 -0
  939. package/dist/tools/motion/search.schemas.d.ts +7500 -0
  940. package/dist/tools/motion/search.schemas.d.ts.map +1 -0
  941. package/dist/tools/motion/search.schemas.js +596 -0
  942. package/dist/tools/motion/search.schemas.js.map +1 -0
  943. package/dist/tools/motion/search.tool.d.ts +416 -0
  944. package/dist/tools/motion/search.tool.d.ts.map +1 -0
  945. package/dist/tools/motion/search.tool.js +2088 -0
  946. package/dist/tools/motion/search.tool.js.map +1 -0
  947. package/dist/tools/motion/shared.schemas.d.ts +994 -0
  948. package/dist/tools/motion/shared.schemas.d.ts.map +1 -0
  949. package/dist/tools/motion/shared.schemas.js +354 -0
  950. package/dist/tools/motion/shared.schemas.js.map +1 -0
  951. package/dist/tools/narrative/analyze.tool.d.ts +96 -0
  952. package/dist/tools/narrative/analyze.tool.d.ts.map +1 -0
  953. package/dist/tools/narrative/analyze.tool.js +396 -0
  954. package/dist/tools/narrative/analyze.tool.js.map +1 -0
  955. package/dist/tools/narrative/index.d.ts +15 -0
  956. package/dist/tools/narrative/index.d.ts.map +1 -0
  957. package/dist/tools/narrative/index.js +83 -0
  958. package/dist/tools/narrative/index.js.map +1 -0
  959. package/dist/tools/narrative/schemas.d.ts +5553 -0
  960. package/dist/tools/narrative/schemas.d.ts.map +1 -0
  961. package/dist/tools/narrative/schemas.js +747 -0
  962. package/dist/tools/narrative/schemas.js.map +1 -0
  963. package/dist/tools/narrative/search.tool.d.ts +160 -0
  964. package/dist/tools/narrative/search.tool.d.ts.map +1 -0
  965. package/dist/tools/narrative/search.tool.js +434 -0
  966. package/dist/tools/narrative/search.tool.js.map +1 -0
  967. package/dist/tools/page/analyze.tool.d.ts +502 -0
  968. package/dist/tools/page/analyze.tool.d.ts.map +1 -0
  969. package/dist/tools/page/analyze.tool.js +875 -0
  970. package/dist/tools/page/analyze.tool.js.map +1 -0
  971. package/dist/tools/page/get-job-status.tool.d.ts +43 -0
  972. package/dist/tools/page/get-job-status.tool.d.ts.map +1 -0
  973. package/dist/tools/page/get-job-status.tool.js +178 -0
  974. package/dist/tools/page/get-job-status.tool.js.map +1 -0
  975. package/dist/tools/page/handlers/db-handler.d.ts +155 -0
  976. package/dist/tools/page/handlers/db-handler.d.ts.map +1 -0
  977. package/dist/tools/page/handlers/db-handler.js +368 -0
  978. package/dist/tools/page/handlers/db-handler.js.map +1 -0
  979. package/dist/tools/page/handlers/embedding-handler.d.ts +200 -0
  980. package/dist/tools/page/handlers/embedding-handler.d.ts.map +1 -0
  981. package/dist/tools/page/handlers/embedding-handler.js +541 -0
  982. package/dist/tools/page/handlers/embedding-handler.js.map +1 -0
  983. package/dist/tools/page/handlers/execution-status-tracker.d.ts +146 -0
  984. package/dist/tools/page/handlers/execution-status-tracker.d.ts.map +1 -0
  985. package/dist/tools/page/handlers/execution-status-tracker.js +348 -0
  986. package/dist/tools/page/handlers/execution-status-tracker.js.map +1 -0
  987. package/dist/tools/page/handlers/js-animation-handler.d.ts +197 -0
  988. package/dist/tools/page/handlers/js-animation-handler.d.ts.map +1 -0
  989. package/dist/tools/page/handlers/js-animation-handler.js +952 -0
  990. package/dist/tools/page/handlers/js-animation-handler.js.map +1 -0
  991. package/dist/tools/page/handlers/layout-handler.d.ts +31 -0
  992. package/dist/tools/page/handlers/layout-handler.d.ts.map +1 -0
  993. package/dist/tools/page/handlers/layout-handler.js +1181 -0
  994. package/dist/tools/page/handlers/layout-handler.js.map +1 -0
  995. package/dist/tools/page/handlers/motion-handler.d.ts +31 -0
  996. package/dist/tools/page/handlers/motion-handler.d.ts.map +1 -0
  997. package/dist/tools/page/handlers/motion-handler.js +940 -0
  998. package/dist/tools/page/handlers/motion-handler.js.map +1 -0
  999. package/dist/tools/page/handlers/narrative-handler.d.ts +23 -0
  1000. package/dist/tools/page/handlers/narrative-handler.d.ts.map +1 -0
  1001. package/dist/tools/page/handlers/narrative-handler.js +279 -0
  1002. package/dist/tools/page/handlers/narrative-handler.js.map +1 -0
  1003. package/dist/tools/page/handlers/phased-db-handler.d.ts +83 -0
  1004. package/dist/tools/page/handlers/phased-db-handler.d.ts.map +1 -0
  1005. package/dist/tools/page/handlers/phased-db-handler.js +120 -0
  1006. package/dist/tools/page/handlers/phased-db-handler.js.map +1 -0
  1007. package/dist/tools/page/handlers/phased-executor.d.ts +123 -0
  1008. package/dist/tools/page/handlers/phased-executor.d.ts.map +1 -0
  1009. package/dist/tools/page/handlers/phased-executor.js +205 -0
  1010. package/dist/tools/page/handlers/phased-executor.js.map +1 -0
  1011. package/dist/tools/page/handlers/quality-handler.d.ts +9 -0
  1012. package/dist/tools/page/handlers/quality-handler.d.ts.map +1 -0
  1013. package/dist/tools/page/handlers/quality-handler.js +100 -0
  1014. package/dist/tools/page/handlers/quality-handler.js.map +1 -0
  1015. package/dist/tools/page/handlers/result-builder.d.ts +105 -0
  1016. package/dist/tools/page/handlers/result-builder.d.ts.map +1 -0
  1017. package/dist/tools/page/handlers/result-builder.js +447 -0
  1018. package/dist/tools/page/handlers/result-builder.js.map +1 -0
  1019. package/dist/tools/page/handlers/retry-strategy.d.ts +106 -0
  1020. package/dist/tools/page/handlers/retry-strategy.d.ts.map +1 -0
  1021. package/dist/tools/page/handlers/retry-strategy.js +169 -0
  1022. package/dist/tools/page/handlers/retry-strategy.js.map +1 -0
  1023. package/dist/tools/page/handlers/sync-processing.d.ts +26 -0
  1024. package/dist/tools/page/handlers/sync-processing.d.ts.map +1 -0
  1025. package/dist/tools/page/handlers/sync-processing.js +1659 -0
  1026. package/dist/tools/page/handlers/sync-processing.js.map +1 -0
  1027. package/dist/tools/page/handlers/timeout-utils.d.ts +278 -0
  1028. package/dist/tools/page/handlers/timeout-utils.d.ts.map +1 -0
  1029. package/dist/tools/page/handlers/timeout-utils.js +600 -0
  1030. package/dist/tools/page/handlers/timeout-utils.js.map +1 -0
  1031. package/dist/tools/page/handlers/types.d.ts +1229 -0
  1032. package/dist/tools/page/handlers/types.d.ts.map +1 -0
  1033. package/dist/tools/page/handlers/types.js +21 -0
  1034. package/dist/tools/page/handlers/types.js.map +1 -0
  1035. package/dist/tools/page/handlers/video-handler.d.ts +11 -0
  1036. package/dist/tools/page/handlers/video-handler.d.ts.map +1 -0
  1037. package/dist/tools/page/handlers/video-handler.js +235 -0
  1038. package/dist/tools/page/handlers/video-handler.js.map +1 -0
  1039. package/dist/tools/page/handlers/webgl-animation-handler.d.ts +48 -0
  1040. package/dist/tools/page/handlers/webgl-animation-handler.d.ts.map +1 -0
  1041. package/dist/tools/page/handlers/webgl-animation-handler.js +237 -0
  1042. package/dist/tools/page/handlers/webgl-animation-handler.js.map +1 -0
  1043. package/dist/tools/page/handlers/webgl-detector.d.ts +184 -0
  1044. package/dist/tools/page/handlers/webgl-detector.d.ts.map +1 -0
  1045. package/dist/tools/page/handlers/webgl-detector.js +680 -0
  1046. package/dist/tools/page/handlers/webgl-detector.js.map +1 -0
  1047. package/dist/tools/page/handlers/webgl-domains.d.ts +133 -0
  1048. package/dist/tools/page/handlers/webgl-domains.d.ts.map +1 -0
  1049. package/dist/tools/page/handlers/webgl-domains.js +420 -0
  1050. package/dist/tools/page/handlers/webgl-domains.js.map +1 -0
  1051. package/dist/tools/page/handlers/webgl-pre-detector.d.ts +100 -0
  1052. package/dist/tools/page/handlers/webgl-pre-detector.d.ts.map +1 -0
  1053. package/dist/tools/page/handlers/webgl-pre-detector.js +248 -0
  1054. package/dist/tools/page/handlers/webgl-pre-detector.js.map +1 -0
  1055. package/dist/tools/page/index.d.ts +10 -0
  1056. package/dist/tools/page/index.d.ts.map +1 -0
  1057. package/dist/tools/page/index.js +84 -0
  1058. package/dist/tools/page/index.js.map +1 -0
  1059. package/dist/tools/page/input.schemas.d.ts +2223 -0
  1060. package/dist/tools/page/input.schemas.d.ts.map +1 -0
  1061. package/dist/tools/page/input.schemas.js +853 -0
  1062. package/dist/tools/page/input.schemas.js.map +1 -0
  1063. package/dist/tools/page/output.schemas.d.ts +26026 -0
  1064. package/dist/tools/page/output.schemas.d.ts.map +1 -0
  1065. package/dist/tools/page/output.schemas.js +1414 -0
  1066. package/dist/tools/page/output.schemas.js.map +1 -0
  1067. package/dist/tools/page/schemas.d.ts +10 -0
  1068. package/dist/tools/page/schemas.d.ts.map +1 -0
  1069. package/dist/tools/page/schemas.js +28 -0
  1070. package/dist/tools/page/schemas.js.map +1 -0
  1071. package/dist/tools/page/shared.schemas.d.ts +38 -0
  1072. package/dist/tools/page/shared.schemas.d.ts.map +1 -0
  1073. package/dist/tools/page/shared.schemas.js +69 -0
  1074. package/dist/tools/page/shared.schemas.js.map +1 -0
  1075. package/dist/tools/part/compare.tool.d.ts +106 -0
  1076. package/dist/tools/part/compare.tool.d.ts.map +1 -0
  1077. package/dist/tools/part/compare.tool.js +421 -0
  1078. package/dist/tools/part/compare.tool.js.map +1 -0
  1079. package/dist/tools/part/inspect.tool.d.ts +108 -0
  1080. package/dist/tools/part/inspect.tool.d.ts.map +1 -0
  1081. package/dist/tools/part/inspect.tool.js +279 -0
  1082. package/dist/tools/part/inspect.tool.js.map +1 -0
  1083. package/dist/tools/part/search.tool.d.ts +121 -0
  1084. package/dist/tools/part/search.tool.d.ts.map +1 -0
  1085. package/dist/tools/part/search.tool.js +381 -0
  1086. package/dist/tools/part/search.tool.js.map +1 -0
  1087. package/dist/tools/preference/get.tool.d.ts +74 -0
  1088. package/dist/tools/preference/get.tool.d.ts.map +1 -0
  1089. package/dist/tools/preference/get.tool.js +175 -0
  1090. package/dist/tools/preference/get.tool.js.map +1 -0
  1091. package/dist/tools/preference/hear.tool.d.ts +267 -0
  1092. package/dist/tools/preference/hear.tool.d.ts.map +1 -0
  1093. package/dist/tools/preference/hear.tool.js +268 -0
  1094. package/dist/tools/preference/hear.tool.js.map +1 -0
  1095. package/dist/tools/preference/index.d.ts +16 -0
  1096. package/dist/tools/preference/index.d.ts.map +1 -0
  1097. package/dist/tools/preference/index.js +43 -0
  1098. package/dist/tools/preference/index.js.map +1 -0
  1099. package/dist/tools/preference/reset.tool.d.ts +71 -0
  1100. package/dist/tools/preference/reset.tool.d.ts.map +1 -0
  1101. package/dist/tools/preference/reset.tool.js +205 -0
  1102. package/dist/tools/preference/reset.tool.js.map +1 -0
  1103. package/dist/tools/preference/schemas.d.ts +174 -0
  1104. package/dist/tools/preference/schemas.d.ts.map +1 -0
  1105. package/dist/tools/preference/schemas.js +142 -0
  1106. package/dist/tools/preference/schemas.js.map +1 -0
  1107. package/dist/tools/project-get.d.ts +42 -0
  1108. package/dist/tools/project-get.d.ts.map +1 -0
  1109. package/dist/tools/project-get.js +152 -0
  1110. package/dist/tools/project-get.js.map +1 -0
  1111. package/dist/tools/project-list.d.ts +66 -0
  1112. package/dist/tools/project-list.d.ts.map +1 -0
  1113. package/dist/tools/project-list.js +201 -0
  1114. package/dist/tools/project-list.js.map +1 -0
  1115. package/dist/tools/quality/batch-evaluate.tool.d.ts +101 -0
  1116. package/dist/tools/quality/batch-evaluate.tool.d.ts.map +1 -0
  1117. package/dist/tools/quality/batch-evaluate.tool.js +393 -0
  1118. package/dist/tools/quality/batch-evaluate.tool.js.map +1 -0
  1119. package/dist/tools/quality/evaluate-engine.d.ts +166 -0
  1120. package/dist/tools/quality/evaluate-engine.d.ts.map +1 -0
  1121. package/dist/tools/quality/evaluate-engine.js +1061 -0
  1122. package/dist/tools/quality/evaluate-engine.js.map +1 -0
  1123. package/dist/tools/quality/evaluate.tool.d.ts +286 -0
  1124. package/dist/tools/quality/evaluate.tool.d.ts.map +1 -0
  1125. package/dist/tools/quality/evaluate.tool.js +815 -0
  1126. package/dist/tools/quality/evaluate.tool.js.map +1 -0
  1127. package/dist/tools/quality/get-job-status.tool.d.ts +44 -0
  1128. package/dist/tools/quality/get-job-status.tool.d.ts.map +1 -0
  1129. package/dist/tools/quality/get-job-status.tool.js +291 -0
  1130. package/dist/tools/quality/get-job-status.tool.js.map +1 -0
  1131. package/dist/tools/quality/improvement-utils.d.ts +24 -0
  1132. package/dist/tools/quality/improvement-utils.d.ts.map +1 -0
  1133. package/dist/tools/quality/improvement-utils.js +307 -0
  1134. package/dist/tools/quality/improvement-utils.js.map +1 -0
  1135. package/dist/tools/quality/index.d.ts +11 -0
  1136. package/dist/tools/quality/index.d.ts.map +1 -0
  1137. package/dist/tools/quality/index.js +49 -0
  1138. package/dist/tools/quality/index.js.map +1 -0
  1139. package/dist/tools/quality/schemas.d.ts +14098 -0
  1140. package/dist/tools/quality/schemas.d.ts.map +1 -0
  1141. package/dist/tools/quality/schemas.js +950 -0
  1142. package/dist/tools/quality/schemas.js.map +1 -0
  1143. package/dist/tools/responsive/schemas.d.ts +156 -0
  1144. package/dist/tools/responsive/schemas.d.ts.map +1 -0
  1145. package/dist/tools/responsive/schemas.js +86 -0
  1146. package/dist/tools/responsive/schemas.js.map +1 -0
  1147. package/dist/tools/responsive/search.tool.d.ts +130 -0
  1148. package/dist/tools/responsive/search.tool.d.ts.map +1 -0
  1149. package/dist/tools/responsive/search.tool.js +324 -0
  1150. package/dist/tools/responsive/search.tool.js.map +1 -0
  1151. package/dist/tools/schemas/index.d.ts +10 -0
  1152. package/dist/tools/schemas/index.d.ts.map +1 -0
  1153. package/dist/tools/schemas/index.js +45 -0
  1154. package/dist/tools/schemas/index.js.map +1 -0
  1155. package/dist/tools/schemas/layout-schemas.d.ts +521 -0
  1156. package/dist/tools/schemas/layout-schemas.d.ts.map +1 -0
  1157. package/dist/tools/schemas/layout-schemas.js +281 -0
  1158. package/dist/tools/schemas/layout-schemas.js.map +1 -0
  1159. package/dist/tools/schemas/project-schemas.d.ts +417 -0
  1160. package/dist/tools/schemas/project-schemas.d.ts.map +1 -0
  1161. package/dist/tools/schemas/project-schemas.js +159 -0
  1162. package/dist/tools/schemas/project-schemas.js.map +1 -0
  1163. package/dist/tools/schemas/shared.d.ts +107 -0
  1164. package/dist/tools/schemas/shared.d.ts.map +1 -0
  1165. package/dist/tools/schemas/shared.js +150 -0
  1166. package/dist/tools/schemas/shared.js.map +1 -0
  1167. package/dist/tools/schemas/style-schemas.d.ts +114 -0
  1168. package/dist/tools/schemas/style-schemas.d.ts.map +1 -0
  1169. package/dist/tools/schemas/style-schemas.js +61 -0
  1170. package/dist/tools/schemas/style-schemas.js.map +1 -0
  1171. package/dist/tools/style-get-palette.d.ts +136 -0
  1172. package/dist/tools/style-get-palette.d.ts.map +1 -0
  1173. package/dist/tools/style-get-palette.js +259 -0
  1174. package/dist/tools/style-get-palette.js.map +1 -0
  1175. package/dist/tools/system-health.d.ts +255 -0
  1176. package/dist/tools/system-health.d.ts.map +1 -0
  1177. package/dist/tools/system-health.js +463 -0
  1178. package/dist/tools/system-health.js.map +1 -0
  1179. package/dist/transport.d.ts +29 -0
  1180. package/dist/transport.d.ts.map +1 -0
  1181. package/dist/transport.js +50 -0
  1182. package/dist/transport.js.map +1 -0
  1183. package/dist/types/creative/index.d.ts +8 -0
  1184. package/dist/types/creative/index.d.ts.map +1 -0
  1185. package/dist/types/creative/index.js +5 -0
  1186. package/dist/types/creative/index.js.map +1 -0
  1187. package/dist/types/creative/palette.d.ts +142 -0
  1188. package/dist/types/creative/palette.d.ts.map +1 -0
  1189. package/dist/types/creative/palette.js +5 -0
  1190. package/dist/types/creative/palette.js.map +1 -0
  1191. package/dist/types/reftrix-window.d.ts +124 -0
  1192. package/dist/types/reftrix-window.d.ts.map +1 -0
  1193. package/dist/types/reftrix-window.js +68 -0
  1194. package/dist/types/reftrix-window.js.map +1 -0
  1195. package/dist/utils/actionable-warning.d.ts +170 -0
  1196. package/dist/utils/actionable-warning.d.ts.map +1 -0
  1197. package/dist/utils/actionable-warning.js +818 -0
  1198. package/dist/utils/actionable-warning.js.map +1 -0
  1199. package/dist/utils/blank-image-detector.d.ts +22 -0
  1200. package/dist/utils/blank-image-detector.d.ts.map +1 -0
  1201. package/dist/utils/blank-image-detector.js +133 -0
  1202. package/dist/utils/blank-image-detector.js.map +1 -0
  1203. package/dist/utils/color.d.ts +203 -0
  1204. package/dist/utils/color.d.ts.map +1 -0
  1205. package/dist/utils/color.js +442 -0
  1206. package/dist/utils/color.js.map +1 -0
  1207. package/dist/utils/deprecation-warning.d.ts +43 -0
  1208. package/dist/utils/deprecation-warning.d.ts.map +1 -0
  1209. package/dist/utils/deprecation-warning.js +112 -0
  1210. package/dist/utils/deprecation-warning.js.map +1 -0
  1211. package/dist/utils/error-messages.d.ts +233 -0
  1212. package/dist/utils/error-messages.d.ts.map +1 -0
  1213. package/dist/utils/error-messages.js +721 -0
  1214. package/dist/utils/error-messages.js.map +1 -0
  1215. package/dist/utils/errors.d.ts +64 -0
  1216. package/dist/utils/errors.d.ts.map +1 -0
  1217. package/dist/utils/errors.js +82 -0
  1218. package/dist/utils/errors.js.map +1 -0
  1219. package/dist/utils/gpu-browser-args.d.ts +27 -0
  1220. package/dist/utils/gpu-browser-args.d.ts.map +1 -0
  1221. package/dist/utils/gpu-browser-args.js +42 -0
  1222. package/dist/utils/gpu-browser-args.js.map +1 -0
  1223. package/dist/utils/html-sanitizer.d.ts +116 -0
  1224. package/dist/utils/html-sanitizer.d.ts.map +1 -0
  1225. package/dist/utils/html-sanitizer.js +630 -0
  1226. package/dist/utils/html-sanitizer.js.map +1 -0
  1227. package/dist/utils/logger.d.ts +141 -0
  1228. package/dist/utils/logger.d.ts.map +1 -0
  1229. package/dist/utils/logger.js +249 -0
  1230. package/dist/utils/logger.js.map +1 -0
  1231. package/dist/utils/mcp-response.d.ts +317 -0
  1232. package/dist/utils/mcp-response.d.ts.map +1 -0
  1233. package/dist/utils/mcp-response.js +270 -0
  1234. package/dist/utils/mcp-response.js.map +1 -0
  1235. package/dist/utils/path-security.d.ts +73 -0
  1236. package/dist/utils/path-security.d.ts.map +1 -0
  1237. package/dist/utils/path-security.js +389 -0
  1238. package/dist/utils/path-security.js.map +1 -0
  1239. package/dist/utils/prisma-wrapper-factory.d.ts +152 -0
  1240. package/dist/utils/prisma-wrapper-factory.d.ts.map +1 -0
  1241. package/dist/utils/prisma-wrapper-factory.js +124 -0
  1242. package/dist/utils/prisma-wrapper-factory.js.map +1 -0
  1243. package/dist/utils/safe-parse-int.d.ts +41 -0
  1244. package/dist/utils/safe-parse-int.d.ts.map +1 -0
  1245. package/dist/utils/safe-parse-int.js +49 -0
  1246. package/dist/utils/safe-parse-int.js.map +1 -0
  1247. package/dist/utils/url-normalizer.d.ts +38 -0
  1248. package/dist/utils/url-normalizer.d.ts.map +1 -0
  1249. package/dist/utils/url-normalizer.js +103 -0
  1250. package/dist/utils/url-normalizer.js.map +1 -0
  1251. package/dist/utils/url-validator.d.ts +86 -0
  1252. package/dist/utils/url-validator.d.ts.map +1 -0
  1253. package/dist/utils/url-validator.js +533 -0
  1254. package/dist/utils/url-validator.js.map +1 -0
  1255. package/dist/workers/batch-quality-worker.d.ts +87 -0
  1256. package/dist/workers/batch-quality-worker.d.ts.map +1 -0
  1257. package/dist/workers/batch-quality-worker.js +300 -0
  1258. package/dist/workers/batch-quality-worker.js.map +1 -0
  1259. package/dist/workers/page-analyze-worker.d.ts +63 -0
  1260. package/dist/workers/page-analyze-worker.d.ts.map +1 -0
  1261. package/dist/workers/page-analyze-worker.js +872 -0
  1262. package/dist/workers/page-analyze-worker.js.map +1 -0
  1263. package/dist/workers/phases/phase-0-ingest.d.ts +42 -0
  1264. package/dist/workers/phases/phase-0-ingest.d.ts.map +1 -0
  1265. package/dist/workers/phases/phase-0-ingest.js +197 -0
  1266. package/dist/workers/phases/phase-0-ingest.js.map +1 -0
  1267. package/dist/workers/phases/phase-1-layout.d.ts +63 -0
  1268. package/dist/workers/phases/phase-1-layout.d.ts.map +1 -0
  1269. package/dist/workers/phases/phase-1-layout.js +362 -0
  1270. package/dist/workers/phases/phase-1-layout.js.map +1 -0
  1271. package/dist/workers/phases/phase-2-motion.d.ts +93 -0
  1272. package/dist/workers/phases/phase-2-motion.d.ts.map +1 -0
  1273. package/dist/workers/phases/phase-2-motion.js +408 -0
  1274. package/dist/workers/phases/phase-2-motion.js.map +1 -0
  1275. package/dist/workers/phases/phase-3-quality.d.ts +61 -0
  1276. package/dist/workers/phases/phase-3-quality.d.ts.map +1 -0
  1277. package/dist/workers/phases/phase-3-quality.js +191 -0
  1278. package/dist/workers/phases/phase-3-quality.js.map +1 -0
  1279. package/dist/workers/phases/phase-4-narrative.d.ts +37 -0
  1280. package/dist/workers/phases/phase-4-narrative.d.ts.map +1 -0
  1281. package/dist/workers/phases/phase-4-narrative.js +309 -0
  1282. package/dist/workers/phases/phase-4-narrative.js.map +1 -0
  1283. package/dist/workers/phases/phase-5-embedding.d.ts +56 -0
  1284. package/dist/workers/phases/phase-5-embedding.d.ts.map +1 -0
  1285. package/dist/workers/phases/phase-5-embedding.js +1350 -0
  1286. package/dist/workers/phases/phase-5-embedding.js.map +1 -0
  1287. package/dist/workers/phases/types.d.ts +411 -0
  1288. package/dist/workers/phases/types.d.ts.map +1 -0
  1289. package/dist/workers/phases/types.js +540 -0
  1290. package/dist/workers/phases/types.js.map +1 -0
  1291. package/package.json +117 -0
  1292. package/src/api/health.ts +372 -0
  1293. package/src/config/index.ts +12 -0
  1294. package/src/config/redis.ts +280 -0
  1295. package/src/index.ts +360 -0
  1296. package/src/lib/index.ts +9 -0
  1297. package/src/lib/project-context.ts +109 -0
  1298. package/src/middleware/args-type-coercion.ts +220 -0
  1299. package/src/middleware/auth.ts +558 -0
  1300. package/src/middleware/index.ts +56 -0
  1301. package/src/middleware/light-response-controller.ts +723 -0
  1302. package/src/middleware/response-size-warning.ts +196 -0
  1303. package/src/queues/batch-quality-queue.ts +580 -0
  1304. package/src/queues/index.ts +13 -0
  1305. package/src/queues/page-analyze-queue.ts +472 -0
  1306. package/src/router.ts +343 -0
  1307. package/src/schemas/creative/index.ts +34 -0
  1308. package/src/schemas/creative/palette.schema.ts +191 -0
  1309. package/src/schemas/mood-brandtone-filters.ts +306 -0
  1310. package/src/scripts/backfill-embeddings.ts +454 -0
  1311. package/src/scripts/check-embedding-coverage.ts +119 -0
  1312. package/src/scripts/start-workers.ts +560 -0
  1313. package/src/server.ts +290 -0
  1314. package/src/services/background/background-design-db.service.ts +206 -0
  1315. package/src/services/background/background-design-detector.service.ts +1442 -0
  1316. package/src/services/background/background-design-embedding.service.ts +599 -0
  1317. package/src/services/background-search.service.ts +372 -0
  1318. package/src/services/backup-service.ts +441 -0
  1319. package/src/services/brief/brief-parser-service.ts +435 -0
  1320. package/src/services/brief/schemas/brief-parser-schemas.ts +138 -0
  1321. package/src/services/browser-process-manager.ts +334 -0
  1322. package/src/services/cache.ts +297 -0
  1323. package/src/services/checksum-service.ts +293 -0
  1324. package/src/services/css-analysis-cache.service.ts +547 -0
  1325. package/src/services/database-dumper.service.ts +675 -0
  1326. package/src/services/embedding-backfill.service.ts +1055 -0
  1327. package/src/services/embedding-validation.service.ts +194 -0
  1328. package/src/services/encryption-service.ts +433 -0
  1329. package/src/services/external-css-fetcher.ts +872 -0
  1330. package/src/services/gpu-resource-manager.ts +615 -0
  1331. package/src/services/index.ts +169 -0
  1332. package/src/services/layout/component-splitter.ts +656 -0
  1333. package/src/services/layout/html-to-jsx-converter.ts +591 -0
  1334. package/src/services/layout/semantic-html-converter.ts +293 -0
  1335. package/src/services/layout/style-to-tailwind-mapper.ts +1530 -0
  1336. package/src/services/layout-embedding.service.ts +1552 -0
  1337. package/src/services/layout-generate-code-service-export.ts +109 -0
  1338. package/src/services/layout-search-service-export.ts +55 -0
  1339. package/src/services/layout-search.service.ts +933 -0
  1340. package/src/services/layout-to-code.service.ts +1631 -0
  1341. package/src/services/metrics-collector.ts +473 -0
  1342. package/src/services/ml/mood-brandtone-embedding.service.ts +1115 -0
  1343. package/src/services/motion/analyzers/color-change.analyzer.ts +935 -0
  1344. package/src/services/motion/analyzers/frame-diff.analyzer.ts +372 -0
  1345. package/src/services/motion/analyzers/layout-shift.detector.ts +296 -0
  1346. package/src/services/motion/analyzers/motion-vector.estimator.ts +698 -0
  1347. package/src/services/motion/analyzers/webgl-motion-analyzer.ts +700 -0
  1348. package/src/services/motion/animation-metrics-collector.service.ts +726 -0
  1349. package/src/services/motion/cls-calculator.service.ts +519 -0
  1350. package/src/services/motion/existing-animation-detector.service.ts +751 -0
  1351. package/src/services/motion/fade-detector.service.ts +383 -0
  1352. package/src/services/motion/frame-analysis-save.helper.ts +333 -0
  1353. package/src/services/motion/frame-capture.service.ts +654 -0
  1354. package/src/services/motion/frame-embedding.service.ts +1419 -0
  1355. package/src/services/motion/frame-image-analysis.service.ts +1271 -0
  1356. package/src/services/motion/frame-image-analyzer.adapter.ts +747 -0
  1357. package/src/services/motion/frame-worker-pool.service.ts +519 -0
  1358. package/src/services/motion/infrastructure/frame-loader.ts +450 -0
  1359. package/src/services/motion/js-animation-detector.ts +1563 -0
  1360. package/src/services/motion/js-animation-embedding.service.ts +423 -0
  1361. package/src/services/motion/js-animation-search.service.ts +715 -0
  1362. package/src/services/motion/motion-db.service.ts +952 -0
  1363. package/src/services/motion/three-js-scene-extractor.ts +1556 -0
  1364. package/src/services/motion/types.ts +820 -0
  1365. package/src/services/motion/visual-category-classifier.ts +1426 -0
  1366. package/src/services/motion/webgl-animation-categorizer.ts +761 -0
  1367. package/src/services/motion/webgl-animation-detector.service.ts +772 -0
  1368. package/src/services/motion/webgl-animation-embedding.service.ts +558 -0
  1369. package/src/services/motion-detect-service-export.ts +300 -0
  1370. package/src/services/motion-persistence.service.ts +541 -0
  1371. package/src/services/motion-search-service.ts +38 -0
  1372. package/src/services/motion-search.service.ts +1159 -0
  1373. package/src/services/narrative/analyzers/layout-structure.analyzer.ts +628 -0
  1374. package/src/services/narrative/analyzers/worldview.analyzer.ts +639 -0
  1375. package/src/services/narrative/generators/confidence-calculator.ts +419 -0
  1376. package/src/services/narrative/generators/text-representation.generator.ts +362 -0
  1377. package/src/services/narrative/index.ts +72 -0
  1378. package/src/services/narrative/narrative-analysis.service.ts +610 -0
  1379. package/src/services/narrative/narrative-search.service.ts +704 -0
  1380. package/src/services/narrative/types/narrative.types.ts +451 -0
  1381. package/src/services/orphaned-job-utils.ts +160 -0
  1382. package/src/services/page/css-animation-parser.service.ts +650 -0
  1383. package/src/services/page/fallback-analyzer.service.ts +435 -0
  1384. package/src/services/page/frame-analyzer.service.ts +824 -0
  1385. package/src/services/page/layout-analyzer.service.ts +2534 -0
  1386. package/src/services/page/motion-category-classifier.service.ts +463 -0
  1387. package/src/services/page/motion-detector.service.ts +430 -0
  1388. package/src/services/page/motion-performance-analyzer.service.ts +390 -0
  1389. package/src/services/page/playwright-crawler.service.ts +478 -0
  1390. package/src/services/page/quality-evaluator.service.ts +1473 -0
  1391. package/src/services/page/runtime-animation-detector.service.ts +743 -0
  1392. package/src/services/page/section-postprocessor.service.ts +874 -0
  1393. package/src/services/page/video-recorder.service.ts +516 -0
  1394. package/src/services/page/webgl-detector.service.ts +361 -0
  1395. package/src/services/page-analyze-service.ts +83 -0
  1396. package/src/services/page-ingest-adapter.ts +2256 -0
  1397. package/src/services/palette-service-export.ts +50 -0
  1398. package/src/services/part/index.ts +81 -0
  1399. package/src/services/part/part-backfill.service.ts +308 -0
  1400. package/src/services/part/part-bbox-playwright.service.ts +502 -0
  1401. package/src/services/part/part-db.service.ts +121 -0
  1402. package/src/services/part/part-embedding-db.service.ts +184 -0
  1403. package/src/services/part/part-embedding.service.ts +406 -0
  1404. package/src/services/part/part-extraction.service.ts +612 -0
  1405. package/src/services/part/part-search.service.ts +806 -0
  1406. package/src/services/part/schemas.ts +194 -0
  1407. package/src/services/part/section-screenshot-fallback.service.ts +644 -0
  1408. package/src/services/part/types.ts +299 -0
  1409. package/src/services/persistent-cache.ts +760 -0
  1410. package/src/services/preference-profile.service.ts +862 -0
  1411. package/src/services/preference-rerank.helper.ts +549 -0
  1412. package/src/services/production-guard.ts +423 -0
  1413. package/src/services/project-context-analyzer.ts +915 -0
  1414. package/src/services/quality/axe-accessibility.service.ts +253 -0
  1415. package/src/services/quality/axe-core-shared.ts +203 -0
  1416. package/src/services/quality/benchmark.service.ts +657 -0
  1417. package/src/services/quality/content-gap-detector.service.ts +485 -0
  1418. package/src/services/quality/index.ts +45 -0
  1419. package/src/services/quality/pattern-matcher.service.ts +941 -0
  1420. package/src/services/quality/playwright-axe.service.ts +343 -0
  1421. package/src/services/quality/quality-evaluate.service.interface.ts +262 -0
  1422. package/src/services/quality/visual-design-analyzer.service.ts +918 -0
  1423. package/src/services/quality-evaluate-service-export.ts +268 -0
  1424. package/src/services/quality-search.service.ts +406 -0
  1425. package/src/services/query-analyzer.ts +306 -0
  1426. package/src/services/query-context-analyzer.ts +843 -0
  1427. package/src/services/queue-cleanup.service.ts +376 -0
  1428. package/src/services/responsive/difference-detector.service.ts +647 -0
  1429. package/src/services/responsive/index.ts +64 -0
  1430. package/src/services/responsive/multi-viewport-capture.service.ts +943 -0
  1431. package/src/services/responsive/responsive-analysis-embedding.service.ts +413 -0
  1432. package/src/services/responsive/responsive-analysis.service.ts +325 -0
  1433. package/src/services/responsive/responsive-persistence.service.ts +133 -0
  1434. package/src/services/responsive/responsive-quality-evaluator.service.ts +515 -0
  1435. package/src/services/responsive/shared-browser-manager.ts +118 -0
  1436. package/src/services/responsive/types.ts +387 -0
  1437. package/src/services/responsive/viewport-diff.service.ts +236 -0
  1438. package/src/services/responsive-search.service.ts +230 -0
  1439. package/src/services/search/mood-brandtone-search.service.ts +400 -0
  1440. package/src/services/search-performance.service.ts +252 -0
  1441. package/src/services/section-screenshot.service.ts +581 -0
  1442. package/src/services/service-client.ts +643 -0
  1443. package/src/services/service-initializer.ts +1386 -0
  1444. package/src/services/storage/index.ts +15 -0
  1445. package/src/services/storage/local-storage.provider.ts +370 -0
  1446. package/src/services/style/index.ts +10 -0
  1447. package/src/services/style/palette-service.ts +655 -0
  1448. package/src/services/style/prisma-palette-repository.ts +216 -0
  1449. package/src/services/vision/brandtone.analyzer.ts +371 -0
  1450. package/src/services/vision/hardware-detector.ts +436 -0
  1451. package/src/services/vision/image-optimizer.ts +377 -0
  1452. package/src/services/vision/index.ts +131 -0
  1453. package/src/services/vision/llama-vision-adapter.ts +526 -0
  1454. package/src/services/vision/mcp-progress-adapter.ts +221 -0
  1455. package/src/services/vision/mood.analyzer.ts +332 -0
  1456. package/src/services/vision/ollama-readiness-probe.ts +271 -0
  1457. package/src/services/vision/ollama-vision-client.ts +631 -0
  1458. package/src/services/vision/progress-reporter.ts +377 -0
  1459. package/src/services/vision/scroll-vision-capture.service.ts +409 -0
  1460. package/src/services/vision/scroll-vision-persistence.service.ts +216 -0
  1461. package/src/services/vision/scroll-vision.analyzer.ts +416 -0
  1462. package/src/services/vision/theme.analyzer.ts +443 -0
  1463. package/src/services/vision/timeout-calculator.ts +155 -0
  1464. package/src/services/vision/vision-fallback.service.ts +368 -0
  1465. package/src/services/vision/vision.cache.ts +332 -0
  1466. package/src/services/vision/vision.errors.ts +186 -0
  1467. package/src/services/vision/vision.prompts.ts +298 -0
  1468. package/src/services/vision/vram-utils.ts +80 -0
  1469. package/src/services/vision-adapter/index.ts +71 -0
  1470. package/src/services/vision-adapter/interface.ts +911 -0
  1471. package/src/services/vision-adapter/llama-vision.adapter.ts +2254 -0
  1472. package/src/services/vision-adapter/llama-vision.prompts.ts +242 -0
  1473. package/src/services/vision-adapter/llama-vision.types.ts +103 -0
  1474. package/src/services/vision-adapter/local.adapter.ts +1079 -0
  1475. package/src/services/vision-adapter/mock.adapter.ts +978 -0
  1476. package/src/services/vision-embedding-search.service.ts +1071 -0
  1477. package/src/services/vision-embedding.service.ts +631 -0
  1478. package/src/services/visual/css-variable-extractor.service.ts +655 -0
  1479. package/src/services/visual/typography-extractor.service.ts +767 -0
  1480. package/src/services/visual-extractor/color-extractor.service.ts +397 -0
  1481. package/src/services/visual-extractor/density-calculator.service.ts +616 -0
  1482. package/src/services/visual-extractor/gradient-detector.service.ts +1794 -0
  1483. package/src/services/visual-extractor/image-utils.ts +333 -0
  1484. package/src/services/visual-extractor/pixel-theme-detector.service.ts +487 -0
  1485. package/src/services/visual-extractor/theme-detector.service.ts +697 -0
  1486. package/src/services/visual-extractor/visual-decoration-detector.service.ts +800 -0
  1487. package/src/services/visual-extractor/visual-feature-merger.service.ts +831 -0
  1488. package/src/services/web-page.service.ts +275 -0
  1489. package/src/services/worker-constants.ts +52 -0
  1490. package/src/services/worker-db-save.service.ts +1098 -0
  1491. package/src/services/worker-memory-monitor.service.ts +126 -0
  1492. package/src/services/worker-memory-profile.ts +336 -0
  1493. package/src/services/worker-stall-recovery.service.ts +486 -0
  1494. package/src/services/worker-supervisor.service.ts +746 -0
  1495. package/src/tools/background/schemas.ts +93 -0
  1496. package/src/tools/background/search.tool.ts +484 -0
  1497. package/src/tools/brief/index.ts +76 -0
  1498. package/src/tools/brief/schemas.ts +247 -0
  1499. package/src/tools/brief/validate.handler.ts +278 -0
  1500. package/src/tools/brief/validate.service.ts +409 -0
  1501. package/src/tools/common/error-codes.ts +116 -0
  1502. package/src/tools/common/index.ts +25 -0
  1503. package/src/tools/index.ts +723 -0
  1504. package/src/tools/layout/batch-ingest.tool.ts +466 -0
  1505. package/src/tools/layout/index.ts +72 -0
  1506. package/src/tools/layout/ingest.tool.ts +1564 -0
  1507. package/src/tools/layout/inspect/index.ts +49 -0
  1508. package/src/tools/layout/inspect/inspect.schemas.ts +518 -0
  1509. package/src/tools/layout/inspect/inspect.tool.ts +844 -0
  1510. package/src/tools/layout/inspect/inspect.utils.ts +1278 -0
  1511. package/src/tools/layout/inspect/visual-extractors.schemas.ts +642 -0
  1512. package/src/tools/layout/inspect/visual-extractors.utils.ts +328 -0
  1513. package/src/tools/layout/schemas.ts +1670 -0
  1514. package/src/tools/layout/search.tool.ts +2088 -0
  1515. package/src/tools/layout/to-code.tool.ts +503 -0
  1516. package/src/tools/motion/analyze-frames.handler.ts +388 -0
  1517. package/src/tools/motion/analyze-frames.schema.ts +484 -0
  1518. package/src/tools/motion/css-mode-handler.ts +939 -0
  1519. package/src/tools/motion/detect.schemas.ts +2005 -0
  1520. package/src/tools/motion/detect.tool.ts +1914 -0
  1521. package/src/tools/motion/detection-modes.ts +480 -0
  1522. package/src/tools/motion/di-factories.ts +767 -0
  1523. package/src/tools/motion/index.ts +229 -0
  1524. package/src/tools/motion/pattern-converter.ts +619 -0
  1525. package/src/tools/motion/schemas.ts +12 -0
  1526. package/src/tools/motion/search.schemas.ts +694 -0
  1527. package/src/tools/motion/search.tool.ts +2518 -0
  1528. package/src/tools/motion/shared.schemas.ts +414 -0
  1529. package/src/tools/narrative/PAGE_ANALYZE_INTEGRATION.md +249 -0
  1530. package/src/tools/narrative/analyze.tool.ts +460 -0
  1531. package/src/tools/narrative/index.ts +133 -0
  1532. package/src/tools/narrative/schemas.ts +886 -0
  1533. package/src/tools/narrative/search.tool.ts +536 -0
  1534. package/src/tools/page/analyze.tool.ts +992 -0
  1535. package/src/tools/page/get-job-status.tool.ts +217 -0
  1536. package/src/tools/page/handlers/db-handler.ts +638 -0
  1537. package/src/tools/page/handlers/embedding-handler.ts +813 -0
  1538. package/src/tools/page/handlers/execution-status-tracker.ts +461 -0
  1539. package/src/tools/page/handlers/js-animation-handler.ts +1229 -0
  1540. package/src/tools/page/handlers/layout-handler.ts +1423 -0
  1541. package/src/tools/page/handlers/motion-handler.ts +1156 -0
  1542. package/src/tools/page/handlers/narrative-handler.ts +345 -0
  1543. package/src/tools/page/handlers/phased-db-handler.ts +186 -0
  1544. package/src/tools/page/handlers/phased-executor.ts +356 -0
  1545. package/src/tools/page/handlers/quality-handler.ts +114 -0
  1546. package/src/tools/page/handlers/result-builder.ts +551 -0
  1547. package/src/tools/page/handlers/retry-strategy.ts +223 -0
  1548. package/src/tools/page/handlers/sync-processing.ts +2084 -0
  1549. package/src/tools/page/handlers/timeout-utils.ts +835 -0
  1550. package/src/tools/page/handlers/types.ts +1333 -0
  1551. package/src/tools/page/handlers/video-handler.ts +299 -0
  1552. package/src/tools/page/handlers/webgl-animation-handler.ts +309 -0
  1553. package/src/tools/page/handlers/webgl-detector.ts +833 -0
  1554. package/src/tools/page/handlers/webgl-domains.ts +482 -0
  1555. package/src/tools/page/handlers/webgl-pre-detector.ts +308 -0
  1556. package/src/tools/page/index.ts +142 -0
  1557. package/src/tools/page/input.schemas.ts +945 -0
  1558. package/src/tools/page/output.schemas.ts +1636 -0
  1559. package/src/tools/page/schemas.ts +12 -0
  1560. package/src/tools/page/shared.schemas.ts +86 -0
  1561. package/src/tools/part/compare.tool.ts +542 -0
  1562. package/src/tools/part/inspect.tool.ts +400 -0
  1563. package/src/tools/part/search.tool.ts +470 -0
  1564. package/src/tools/preference/get.tool.ts +238 -0
  1565. package/src/tools/preference/hear.tool.ts +504 -0
  1566. package/src/tools/preference/index.ts +65 -0
  1567. package/src/tools/preference/reset.tool.ts +264 -0
  1568. package/src/tools/preference/schemas.ts +161 -0
  1569. package/src/tools/project-get.ts +194 -0
  1570. package/src/tools/project-list.ts +240 -0
  1571. package/src/tools/quality/batch-evaluate.tool.ts +480 -0
  1572. package/src/tools/quality/evaluate-engine.ts +1329 -0
  1573. package/src/tools/quality/evaluate.tool.ts +981 -0
  1574. package/src/tools/quality/get-job-status.tool.ts +344 -0
  1575. package/src/tools/quality/improvement-utils.ts +361 -0
  1576. package/src/tools/quality/index.ts +49 -0
  1577. package/src/tools/quality/schemas.ts +1114 -0
  1578. package/src/tools/responsive/schemas.ts +103 -0
  1579. package/src/tools/responsive/search.tool.ts +421 -0
  1580. package/src/tools/schemas/index.ts +67 -0
  1581. package/src/tools/schemas/layout-schemas.ts +334 -0
  1582. package/src/tools/schemas/project-schemas.ts +233 -0
  1583. package/src/tools/schemas/shared.ts +176 -0
  1584. package/src/tools/schemas/style-schemas.ts +74 -0
  1585. package/src/tools/style-get-palette.ts +344 -0
  1586. package/src/tools/system-health.ts +729 -0
  1587. package/src/transport.ts +54 -0
  1588. package/src/types/creative/index.ts +22 -0
  1589. package/src/types/creative/palette.ts +197 -0
  1590. package/src/types/reftrix-window.ts +175 -0
  1591. package/src/utils/actionable-warning.ts +997 -0
  1592. package/src/utils/blank-image-detector.ts +143 -0
  1593. package/src/utils/color.ts +534 -0
  1594. package/src/utils/deprecation-warning.ts +146 -0
  1595. package/src/utils/error-messages.ts +965 -0
  1596. package/src/utils/errors.ts +95 -0
  1597. package/src/utils/gpu-browser-args.ts +41 -0
  1598. package/src/utils/html-sanitizer.ts +753 -0
  1599. package/src/utils/logger.ts +292 -0
  1600. package/src/utils/mcp-response.ts +397 -0
  1601. package/src/utils/path-security.ts +412 -0
  1602. package/src/utils/prisma-wrapper-factory.ts +283 -0
  1603. package/src/utils/safe-parse-int.ts +74 -0
  1604. package/src/utils/url-normalizer.ts +115 -0
  1605. package/src/utils/url-validator.ts +615 -0
  1606. package/src/workers/batch-quality-worker.ts +419 -0
  1607. package/src/workers/page-analyze-worker.ts +1056 -0
  1608. package/src/workers/phases/phase-0-ingest.ts +249 -0
  1609. package/src/workers/phases/phase-1-layout.ts +522 -0
  1610. package/src/workers/phases/phase-2-motion.ts +674 -0
  1611. package/src/workers/phases/phase-3-quality.ts +293 -0
  1612. package/src/workers/phases/phase-4-narrative.ts +409 -0
  1613. package/src/workers/phases/phase-5-embedding.ts +1816 -0
  1614. package/src/workers/phases/types.ts +909 -0
@@ -0,0 +1,1426 @@
1
+ // SPDX-FileCopyrightText: 2026 TKMD and Reftrix Contributors
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+
4
+ /**
5
+ * Visual Category Classifier
6
+ *
7
+ * フレーム差分解析結果から視覚的な動きのカテゴリを分類するサービス
8
+ *
9
+ * カテゴリ:
10
+ * - fade: フェードイン/アウト(opacity変化が主、位置変化なし)
11
+ * - slide: スライド(一方向の移動が主、水平or垂直)
12
+ * - scale: スケール(サイズ変化が主、中心からの拡大/縮小)
13
+ * - rotate: 回転(回転変化が主)
14
+ * - parallax: パララックス(複数レイヤーの異なる速度移動)
15
+ * - reveal: 出現/消滅(要素の出現/消滅、クリッピング)
16
+ * - morph: モーフィング(形状の変形)
17
+ * - complex: 複合(複数カテゴリの組み合わせ)
18
+ * - static: 静的(変化なし)
19
+ * - unknown: 不明(分類不能)
20
+ *
21
+ * @module @reftrixmcp/mcp-server/services/motion/visual-category-classifier
22
+ */
23
+
24
+ import { logger } from "../../utils/logger";
25
+
26
+ // =============================================================================
27
+ // 型定義
28
+ // =============================================================================
29
+
30
+ /**
31
+ * 動きカテゴリ
32
+ */
33
+ export type VisualMotionCategory =
34
+ | "fade"
35
+ | "slide"
36
+ | "scale"
37
+ | "rotate"
38
+ | "parallax"
39
+ | "reveal"
40
+ | "morph"
41
+ | "complex"
42
+ | "static"
43
+ | "unknown";
44
+
45
+ /**
46
+ * スライド方向
47
+ */
48
+ export type SlideDirection = "horizontal" | "vertical" | "diagonal";
49
+
50
+ /**
51
+ * スケールタイプ
52
+ */
53
+ export type ScaleType = "expand" | "shrink";
54
+
55
+ /**
56
+ * フェードタイプ
57
+ */
58
+ export type FadeType = "in" | "out";
59
+
60
+ /**
61
+ * バウンディングボックス
62
+ */
63
+ export interface BoundingBox {
64
+ x: number;
65
+ y: number;
66
+ width: number;
67
+ height: number;
68
+ }
69
+
70
+ /**
71
+ * モーションベクトル
72
+ */
73
+ export interface MotionVector {
74
+ dx: number;
75
+ dy: number;
76
+ magnitude: number;
77
+ }
78
+
79
+ /**
80
+ * フレーム差分結果(入力データ)
81
+ */
82
+ export interface FrameDiffResult {
83
+ frameIndex: number;
84
+ diffPercentage: number;
85
+ changedPixels: number;
86
+ totalPixels: number;
87
+ boundingBox?: BoundingBox;
88
+ motionVectors?: MotionVector[];
89
+ }
90
+
91
+ /**
92
+ * フレーム分析結果(入力データ)
93
+ */
94
+ export interface FrameAnalysisResult {
95
+ frames: FrameDiffResult[];
96
+ summary: {
97
+ avgDiffPercentage: number;
98
+ maxDiffPercentage: number;
99
+ totalFrames: number;
100
+ };
101
+ }
102
+
103
+ /**
104
+ * カテゴリ分類メトリクス
105
+ */
106
+ export interface CategoryMetrics {
107
+ /** 主要な動きの方向(度、0-360) */
108
+ dominant_direction?: number;
109
+ /** 移動強度(正規化 0-1) */
110
+ movement_intensity: number;
111
+ /** 影響領域比率(0-1) */
112
+ affected_area_ratio: number;
113
+ /** 速度変化(正規化) */
114
+ velocity_variance?: number;
115
+ /** 中心からの距離変化(スケール用) */
116
+ center_distance_change?: number;
117
+ /** レイヤー情報(パララックス用) */
118
+ layers?: Array<{
119
+ speed_ratio: number;
120
+ region: BoundingBox;
121
+ }>;
122
+ }
123
+
124
+ /**
125
+ * カテゴリ詳細情報
126
+ */
127
+ export interface CategoryDetails {
128
+ /** フェード詳細 */
129
+ fade?: {
130
+ type: FadeType;
131
+ start_opacity: number;
132
+ end_opacity: number;
133
+ duration_frames: number;
134
+ };
135
+ /** スライド詳細 */
136
+ slide?: {
137
+ direction: SlideDirection;
138
+ distance_px: number;
139
+ angle_degrees: number;
140
+ };
141
+ /** スケール詳細 */
142
+ scale?: {
143
+ type: ScaleType;
144
+ start_scale: number;
145
+ end_scale: number;
146
+ aspect_ratio_maintained: boolean;
147
+ };
148
+ /** パララックス詳細 */
149
+ parallax?: {
150
+ layer_count: number;
151
+ speed_ratios: number[];
152
+ depth_order: number[];
153
+ };
154
+ }
155
+
156
+ /**
157
+ * カテゴリ分類結果
158
+ */
159
+ export interface CategoryClassificationResult {
160
+ /** 主要カテゴリ */
161
+ primary_category: VisualMotionCategory;
162
+ /** 信頼度(0-1) */
163
+ confidence: number;
164
+ /** 副カテゴリ(複合の場合) */
165
+ secondary_categories?: Array<{
166
+ category: VisualMotionCategory;
167
+ weight: number;
168
+ }>;
169
+ /** メトリクス */
170
+ metrics: CategoryMetrics;
171
+ /** カテゴリ詳細 */
172
+ details?: CategoryDetails;
173
+ /** 処理時間(ミリ秒) */
174
+ processing_time_ms?: number;
175
+ }
176
+
177
+ /**
178
+ * Visual Category Classifier 設定
179
+ */
180
+ export interface VisualCategoryClassifierConfig {
181
+ /** フェード検出閾値(opacity変化量) */
182
+ fade_threshold?: number;
183
+ /** スライド検出閾値(方向一貫性) */
184
+ slide_consistency_threshold?: number;
185
+ /** スケール検出閾値(サイズ変化率) */
186
+ scale_threshold?: number;
187
+ /** パララックス検出閾値(速度差) */
188
+ parallax_speed_diff_threshold?: number;
189
+ /** 複合カテゴリ判定閾値 */
190
+ complex_category_threshold?: number;
191
+ /** 最小信頼度閾値 */
192
+ min_confidence_threshold?: number;
193
+ }
194
+
195
+ // =============================================================================
196
+ // 定数
197
+ // =============================================================================
198
+
199
+ const DEFAULT_CONFIG: Required<VisualCategoryClassifierConfig> = {
200
+ fade_threshold: 0.1,
201
+ slide_consistency_threshold: 0.85,
202
+ scale_threshold: 0.15,
203
+ parallax_speed_diff_threshold: 0.3,
204
+ complex_category_threshold: 0.4,
205
+ min_confidence_threshold: 0.3,
206
+ };
207
+
208
+ // セキュリティ制限
209
+ const MAX_FRAMES = 1000;
210
+
211
+ // =============================================================================
212
+ // ヘルパー関数
213
+ // =============================================================================
214
+
215
+ /**
216
+ * 角度を度からラジアンに変換
217
+ */
218
+ function degToRad(degrees: number): number {
219
+ return (degrees * Math.PI) / 180;
220
+ }
221
+
222
+ /**
223
+ * ラジアンから角度に変換
224
+ */
225
+ function radToDeg(radians: number): number {
226
+ return (radians * 180) / Math.PI;
227
+ }
228
+
229
+ /**
230
+ * 数値がNaNやInfinityでないことを確認
231
+ */
232
+ function isValidNumber(value: number): boolean {
233
+ return typeof value === "number" && !Number.isNaN(value) && Number.isFinite(value);
234
+ }
235
+
236
+ /**
237
+ * 数値を安全にクランプ
238
+ */
239
+ function clamp(value: number, min: number, max: number): number {
240
+ if (!isValidNumber(value)) return min;
241
+ return Math.max(min, Math.min(max, value));
242
+ }
243
+
244
+ /**
245
+ * 配列の平均を計算
246
+ */
247
+ function average(values: number[]): number {
248
+ if (values.length === 0) return 0;
249
+ const sum = values.reduce((acc, v) => acc + (isValidNumber(v) ? v : 0), 0);
250
+ return sum / values.length;
251
+ }
252
+
253
+ /**
254
+ * 配列の分散を計算
255
+ */
256
+ function variance(values: number[]): number {
257
+ if (values.length <= 1) return 0;
258
+ const avg = average(values);
259
+ const squareDiffs = values.map((v) => {
260
+ const val = isValidNumber(v) ? v : 0;
261
+ return Math.pow(val - avg, 2);
262
+ });
263
+ return average(squareDiffs);
264
+ }
265
+
266
+ /**
267
+ * dx, dy から角度(度)を計算
268
+ */
269
+ function calculateAngle(dx: number, dy: number): number {
270
+ if (!isValidNumber(dx) || !isValidNumber(dy)) return 0;
271
+ const radians = Math.atan2(dy, dx);
272
+ let degrees = radToDeg(radians);
273
+ if (degrees < 0) degrees += 360;
274
+ return degrees;
275
+ }
276
+
277
+ // =============================================================================
278
+ // Visual Category Classifier クラス
279
+ // =============================================================================
280
+
281
+ /**
282
+ * Visual Category Classifier
283
+ *
284
+ * フレーム差分解析結果から視覚的な動きのカテゴリを分類するクラス
285
+ */
286
+ export class VisualCategoryClassifier {
287
+ private readonly config: Required<VisualCategoryClassifierConfig>;
288
+
289
+ constructor(config?: VisualCategoryClassifierConfig) {
290
+ this.config = {
291
+ ...DEFAULT_CONFIG,
292
+ ...config,
293
+ };
294
+
295
+ logger.debug("[VisualCategoryClassifier] Initialized with config:", this.config);
296
+ }
297
+
298
+ /**
299
+ * フレーム分析結果から動きカテゴリを分類
300
+ */
301
+ classify(input: FrameAnalysisResult): CategoryClassificationResult {
302
+ const startTime = performance.now();
303
+
304
+ // 入力検証
305
+ const frames = this.validateAndLimitFrames(input.frames);
306
+
307
+ // 空またはほぼ空のフレーム配列の場合は static を返す
308
+ if (frames.length === 0) {
309
+ return this.createStaticResult(startTime);
310
+ }
311
+
312
+ // 単一フレームの場合
313
+ if (frames.length === 1) {
314
+ return this.createStaticResult(startTime);
315
+ }
316
+
317
+ // メトリクスを計算
318
+ const metrics = this.calculateMetrics(frames);
319
+
320
+ // 各カテゴリのスコアを計算
321
+ const scores = this.calculateCategoryScores(frames, metrics);
322
+
323
+ // 最適なカテゴリを選択
324
+ const result = this.selectBestCategory(scores, metrics, frames, startTime);
325
+
326
+ logger.debug("[VisualCategoryClassifier] Classification result:", {
327
+ category: result.primary_category,
328
+ confidence: result.confidence,
329
+ processing_time_ms: result.processing_time_ms,
330
+ });
331
+
332
+ return result;
333
+ }
334
+
335
+ /**
336
+ * フレーム配列を直接受け取って分類
337
+ */
338
+ classifyFrameSequence(frames: FrameDiffResult[]): CategoryClassificationResult {
339
+ const input: FrameAnalysisResult = {
340
+ frames,
341
+ summary: {
342
+ avgDiffPercentage: average(frames.map((f) => f.diffPercentage)),
343
+ maxDiffPercentage: Math.max(...frames.map((f) => f.diffPercentage), 0),
344
+ totalFrames: frames.length,
345
+ },
346
+ };
347
+ return this.classify(input);
348
+ }
349
+
350
+ // ===========================================================================
351
+ // プライベートメソッド
352
+ // ===========================================================================
353
+
354
+ /**
355
+ * フレーム配列を検証し、制限内に収める
356
+ */
357
+ private validateAndLimitFrames(frames: FrameDiffResult[]): FrameDiffResult[] {
358
+ if (!Array.isArray(frames)) {
359
+ return [];
360
+ }
361
+
362
+ // 最大フレーム数制限
363
+ const limitedFrames = frames.slice(0, MAX_FRAMES);
364
+
365
+ // 数値検証
366
+ return limitedFrames.map((frame) => ({
367
+ ...frame,
368
+ diffPercentage: isValidNumber(frame.diffPercentage) ? frame.diffPercentage : 0,
369
+ changedPixels: isValidNumber(frame.changedPixels) ? frame.changedPixels : 0,
370
+ totalPixels: isValidNumber(frame.totalPixels) ? Math.max(frame.totalPixels, 1) : 1,
371
+ motionVectors: (frame.motionVectors ?? []).filter(
372
+ (v) => isValidNumber(v.dx) && isValidNumber(v.dy) && isValidNumber(v.magnitude)
373
+ ),
374
+ }));
375
+ }
376
+
377
+ /**
378
+ * static結果を生成
379
+ */
380
+ private createStaticResult(startTime: number): CategoryClassificationResult {
381
+ return {
382
+ primary_category: "static",
383
+ confidence: 0.95,
384
+ metrics: {
385
+ movement_intensity: 0,
386
+ affected_area_ratio: 0,
387
+ },
388
+ processing_time_ms: performance.now() - startTime,
389
+ };
390
+ }
391
+
392
+ /**
393
+ * メトリクスを計算
394
+ */
395
+ private calculateMetrics(frames: FrameDiffResult[]): CategoryMetrics {
396
+ // 影響領域比率を計算
397
+ const affected_area_ratio = this.calculateAffectedAreaRatio(frames);
398
+
399
+ // 移動強度を計算
400
+ const movement_intensity = this.calculateMovementIntensity(frames);
401
+
402
+ // 主要な方向を計算(モーションベクトルがある場合)
403
+ const dominant_direction = this.calculateDominantDirection(frames);
404
+
405
+ // 速度分散を計算
406
+ const velocity_variance = this.calculateVelocityVariance(frames);
407
+
408
+ // exactOptionalPropertyTypesに対応するため、undefinedのプロパティは省略
409
+ const metrics: CategoryMetrics = {
410
+ movement_intensity,
411
+ affected_area_ratio,
412
+ };
413
+ if (dominant_direction !== undefined) {
414
+ metrics.dominant_direction = dominant_direction;
415
+ }
416
+ if (velocity_variance !== undefined) {
417
+ metrics.velocity_variance = velocity_variance;
418
+ }
419
+ return metrics;
420
+ }
421
+
422
+ /**
423
+ * 影響領域比率を計算
424
+ *
425
+ * 標準的なWeb画面サイズ(1000x1000 = 1,000,000ピクセル)を基準として
426
+ * 影響領域の比率を計算する。
427
+ */
428
+ private calculateAffectedAreaRatio(frames: FrameDiffResult[]): number {
429
+ // 標準画面サイズ(1000x1000)
430
+ const STANDARD_AREA = 1000000;
431
+
432
+ const ratios: number[] = [];
433
+
434
+ for (const frame of frames) {
435
+ if (frame.boundingBox) {
436
+ const boxArea = frame.boundingBox.width * frame.boundingBox.height;
437
+
438
+ // 標準サイズに対する比率を計算
439
+ // 浮動小数点精度の問題を避けるため、小数点6桁で丸める
440
+ const ratio = Math.round((boxArea / STANDARD_AREA) * 1000000) / 1000000;
441
+ ratios.push(clamp(ratio, 0, 1));
442
+ } else if (frame.diffPercentage > 0) {
443
+ // boundingBoxがない場合はdiffPercentageから推定
444
+ ratios.push(clamp(frame.diffPercentage, 0, 1));
445
+ }
446
+ }
447
+
448
+ if (ratios.length === 0) return 0;
449
+ // 平均値も同様に丸める
450
+ const avg = average(ratios);
451
+ return Math.round(avg * 1000000) / 1000000;
452
+ }
453
+
454
+ /**
455
+ * 移動強度を計算
456
+ */
457
+ private calculateMovementIntensity(frames: FrameDiffResult[]): number {
458
+ const magnitudes: number[] = [];
459
+
460
+ for (const frame of frames) {
461
+ if (frame.motionVectors && frame.motionVectors.length > 0) {
462
+ const avgMag = average(frame.motionVectors.map((v) => v.magnitude));
463
+ magnitudes.push(avgMag);
464
+ }
465
+ }
466
+
467
+ if (magnitudes.length === 0) {
468
+ // モーションベクトルがない場合はdiffPercentageから推定
469
+ const avgDiff = average(frames.map((f) => f.diffPercentage));
470
+ return clamp(avgDiff * 2, 0, 1);
471
+ }
472
+
473
+ // 正規化(最大速度30px/frameを基準)
474
+ const avgMag = average(magnitudes);
475
+ return clamp(avgMag / 30, 0, 1);
476
+ }
477
+
478
+ /**
479
+ * 主要な方向を計算
480
+ */
481
+ private calculateDominantDirection(frames: FrameDiffResult[]): number | undefined {
482
+ const angles: number[] = [];
483
+ const weights: number[] = [];
484
+
485
+ for (const frame of frames) {
486
+ if (frame.motionVectors && frame.motionVectors.length > 0) {
487
+ for (const vector of frame.motionVectors) {
488
+ if (vector.magnitude > 0.1) {
489
+ const angle = calculateAngle(vector.dx, vector.dy);
490
+ angles.push(angle);
491
+ weights.push(vector.magnitude);
492
+ }
493
+ }
494
+ }
495
+ }
496
+
497
+ if (angles.length === 0) return undefined;
498
+
499
+ // 重み付き平均を計算(角度の循環性を考慮)
500
+ let sinSum = 0;
501
+ let cosSum = 0;
502
+ let totalWeight = 0;
503
+
504
+ for (let i = 0; i < angles.length; i++) {
505
+ const angle = angles[i];
506
+ const w = weights[i];
507
+ if (angle === undefined || w === undefined) continue;
508
+ const rad = degToRad(angle);
509
+ sinSum += Math.sin(rad) * w;
510
+ cosSum += Math.cos(rad) * w;
511
+ totalWeight += w;
512
+ }
513
+
514
+ if (totalWeight === 0) return undefined;
515
+
516
+ const avgRad = Math.atan2(sinSum / totalWeight, cosSum / totalWeight);
517
+ let avgDeg = radToDeg(avgRad);
518
+ if (avgDeg < 0) avgDeg += 360;
519
+
520
+ return avgDeg;
521
+ }
522
+
523
+ /**
524
+ * 速度分散を計算
525
+ */
526
+ private calculateVelocityVariance(frames: FrameDiffResult[]): number {
527
+ const speeds: number[] = [];
528
+
529
+ for (const frame of frames) {
530
+ if (frame.motionVectors && frame.motionVectors.length > 0) {
531
+ const avgSpeed = average(frame.motionVectors.map((v) => v.magnitude));
532
+ speeds.push(avgSpeed);
533
+ }
534
+ }
535
+
536
+ if (speeds.length <= 1) return 0;
537
+
538
+ // 正規化された分散を計算
539
+ const v = variance(speeds);
540
+ const maxSpeed = Math.max(...speeds);
541
+ if (maxSpeed === 0) return 0;
542
+
543
+ return clamp(v / (maxSpeed * maxSpeed), 0, 1);
544
+ }
545
+
546
+ /**
547
+ * 各カテゴリのスコアを計算
548
+ */
549
+ private calculateCategoryScores(
550
+ frames: FrameDiffResult[],
551
+ metrics: CategoryMetrics
552
+ ): Map<VisualMotionCategory, number> {
553
+ const scores = new Map<VisualMotionCategory, number>();
554
+
555
+ // static検出
556
+ scores.set("static", this.calculateStaticScore(frames));
557
+
558
+ // fade検出
559
+ scores.set("fade", this.calculateFadeScore(frames, metrics));
560
+
561
+ // slide検出
562
+ scores.set("slide", this.calculateSlideScore(frames, metrics));
563
+
564
+ // scale検出
565
+ scores.set("scale", this.calculateScaleScore(frames));
566
+
567
+ // parallax検出
568
+ scores.set("parallax", this.calculateParallaxScore(frames));
569
+
570
+ // complex検出(後で調整)
571
+ scores.set("complex", 0);
572
+
573
+ // rotate, reveal, morph は高度な検出が必要なため基本スコア0
574
+ scores.set("rotate", 0);
575
+ scores.set("reveal", 0);
576
+ scores.set("morph", 0);
577
+
578
+ return scores;
579
+ }
580
+
581
+ /**
582
+ * static スコアを計算
583
+ */
584
+ private calculateStaticScore(frames: FrameDiffResult[]): number {
585
+ const avgDiff = average(frames.map((f) => f.diffPercentage));
586
+
587
+ // 変化がほとんどない場合は static
588
+ if (avgDiff < 0.01) {
589
+ return 0.95;
590
+ } else if (avgDiff < 0.02) {
591
+ return 0.7;
592
+ } else if (avgDiff < 0.03) {
593
+ return 0.4;
594
+ }
595
+ return 0;
596
+ }
597
+
598
+ /**
599
+ * fade スコアを計算
600
+ */
601
+ private calculateFadeScore(frames: FrameDiffResult[], _metrics: CategoryMetrics): number {
602
+ // フェードの特徴:
603
+ // 1. モーションベクトルがないか、非常に小さい
604
+ // 2. diffPercentageが徐々に変化(単調増加/減少)
605
+ // 3. 変化率が閾値以上
606
+
607
+ // モーションベクトルのチェック(存在・強度)
608
+ let totalMotionMagnitude = 0;
609
+ let motionVectorCount = 0;
610
+ for (const frame of frames) {
611
+ if (frame.motionVectors) {
612
+ for (const v of frame.motionVectors) {
613
+ totalMotionMagnitude += v.magnitude;
614
+ motionVectorCount++;
615
+ }
616
+ }
617
+ }
618
+
619
+ const avgMotionMagnitude = motionVectorCount > 0 ? totalMotionMagnitude / motionVectorCount : 0;
620
+
621
+ // モーションベクトルがある場合はfade可能性を下げる
622
+ // ただし、複合パターン判定のためにペナルティを調整
623
+ let motionPenalty = 0;
624
+ if (avgMotionMagnitude > 8) {
625
+ motionPenalty = 0.4; // 非常に大きなモーションはfadeではない
626
+ } else if (avgMotionMagnitude > 5) {
627
+ motionPenalty = 0.25; // 大きなモーション
628
+ } else if (avgMotionMagnitude > 2) {
629
+ motionPenalty = 0.15; // 中程度のモーション
630
+ } else if (motionVectorCount > 0 && avgMotionMagnitude > 0.5) {
631
+ motionPenalty = 0.1; // 小さなモーション
632
+ }
633
+
634
+ // diffPercentageの変化パターンをチェック
635
+ const diffs = frames.map((f) => f.diffPercentage);
636
+ const isMonotonic = this.isMonotonicSequence(diffs);
637
+
638
+ // 変化の幅を計算(フェードは最初と最後で大きな差がある)
639
+ const diffRange = Math.max(...diffs) - Math.min(...diffs);
640
+ const hasSignificantChange = diffRange > 0.1; // 10%以上の変化が必要
641
+
642
+ // scaleパターンとの区別: サイズ変化がある場合はfadeの可能性を下げる
643
+ const hasSizeChange = this.detectSizeChange(frames);
644
+ if (hasSizeChange) {
645
+ // サイズ変化がある場合、diffPercentageの変化はスケールの結果である可能性が高い
646
+ return 0.25;
647
+ }
648
+
649
+ // 平均変化率を計算
650
+ const avgDiff = average(diffs);
651
+
652
+ // 閾値との比率によってスコアを微調整
653
+ const thresholdRatio = avgDiff / this.config.fade_threshold;
654
+
655
+ // 基本スコア
656
+ let baseScore = 0.3;
657
+
658
+ // フェードには変化の幅が必要(一定値ならフェードではない)
659
+ if (!hasSignificantChange) {
660
+ return 0.2;
661
+ }
662
+
663
+ // fade_thresholdは平均変化率の閾値として使用
664
+ // avgDiff < threshold の場合、fadeスコアを大幅に下げる
665
+ if (thresholdRatio < 0.5) {
666
+ // 閾値の半分未満: フェードの可能性が非常に低い
667
+ return 0.25;
668
+ }
669
+
670
+ if (isMonotonic && thresholdRatio > 1.0) {
671
+ // 単調変化かつ閾値以上:典型的なフェード
672
+ baseScore = 0.9;
673
+ } else if (isMonotonic && thresholdRatio > 0.5) {
674
+ // 単調変化だが閾値の50%以上:弱いフェード
675
+ baseScore = 0.6 + thresholdRatio * 0.2;
676
+ } else if (thresholdRatio > 1.5) {
677
+ // 閾値の1.5倍以上の変化率(単調でない場合)
678
+ baseScore = 0.7;
679
+ } else if (thresholdRatio > 1.0) {
680
+ // 閾値以上だが単調ではない
681
+ baseScore = 0.55;
682
+ } else {
683
+ // 閾値未満
684
+ baseScore = 0.35;
685
+ }
686
+
687
+ return clamp(baseScore - motionPenalty, 0, 1);
688
+ }
689
+
690
+ /**
691
+ * slide スコアを計算
692
+ */
693
+ private calculateSlideScore(frames: FrameDiffResult[], _metrics: CategoryMetrics): number {
694
+ // スライドの特徴:
695
+ // 1. 一貫した方向のモーションベクトル
696
+ // 2. boundingBoxが一方向に移動
697
+
698
+ const hasVectors = frames.some((f) => f.motionVectors && f.motionVectors.length > 0);
699
+
700
+ if (!hasVectors) {
701
+ // boundingBoxの移動をチェック
702
+ return this.calculateSlideScoreFromBoundingBox(frames);
703
+ }
704
+
705
+ // モーションベクトルの一貫性をチェック
706
+ const consistency = this.calculateDirectionConsistency(frames);
707
+
708
+ if (consistency > this.config.slide_consistency_threshold) {
709
+ return 0.9;
710
+ } else if (consistency > 0.7) {
711
+ return 0.75;
712
+ } else if (consistency > 0.5) {
713
+ return 0.5;
714
+ }
715
+
716
+ return 0.2;
717
+ }
718
+
719
+ /**
720
+ * boundingBoxからスライドスコアを計算
721
+ */
722
+ private calculateSlideScoreFromBoundingBox(frames: FrameDiffResult[]): number {
723
+ const positions: Array<{ x: number; y: number }> = [];
724
+
725
+ for (const frame of frames) {
726
+ if (frame.boundingBox) {
727
+ positions.push({
728
+ x: frame.boundingBox.x + frame.boundingBox.width / 2,
729
+ y: frame.boundingBox.y + frame.boundingBox.height / 2,
730
+ });
731
+ }
732
+ }
733
+
734
+ if (positions.length < 2) return 0;
735
+
736
+ // 位置の変化を計算
737
+ const deltas: Array<{ dx: number; dy: number }> = [];
738
+ for (let i = 1; i < positions.length; i++) {
739
+ const current = positions[i];
740
+ const prev = positions[i - 1];
741
+ if (!current || !prev) continue;
742
+ deltas.push({
743
+ dx: current.x - prev.x,
744
+ dy: current.y - prev.y,
745
+ });
746
+ }
747
+
748
+ // 移動距離の合計を計算
749
+ const totalDistance = deltas.reduce((sum, d) => sum + Math.sqrt(d.dx * d.dx + d.dy * d.dy), 0);
750
+
751
+ // 移動がほとんどない場合はスライドではない
752
+ if (totalDistance < 5) {
753
+ return 0.1;
754
+ }
755
+
756
+ // 方向の一貫性をチェック
757
+ const angles = deltas.map((d) => calculateAngle(d.dx, d.dy));
758
+ const angleVariance = variance(angles);
759
+
760
+ // 角度の分散が小さければスライドの可能性が高い
761
+ if (angleVariance < 100) {
762
+ return 0.8;
763
+ } else if (angleVariance < 500) {
764
+ return 0.5;
765
+ }
766
+
767
+ return 0.2;
768
+ }
769
+
770
+ /**
771
+ * 方向の一貫性を計算
772
+ */
773
+ private calculateDirectionConsistency(frames: FrameDiffResult[]): number {
774
+ const angles: number[] = [];
775
+
776
+ for (const frame of frames) {
777
+ if (frame.motionVectors && frame.motionVectors.length > 0) {
778
+ // 最も大きいベクトルの角度を使用
779
+ const mainVector = frame.motionVectors.reduce((max, v) =>
780
+ v.magnitude > max.magnitude ? v : max
781
+ );
782
+ if (mainVector.magnitude > 0.1) {
783
+ angles.push(calculateAngle(mainVector.dx, mainVector.dy));
784
+ }
785
+ }
786
+ }
787
+
788
+ if (angles.length < 2) return 0;
789
+
790
+ // 角度の標準偏差を計算(循環性を考慮)
791
+ const sinSum = angles.reduce((sum, a) => sum + Math.sin(degToRad(a)), 0);
792
+ const cosSum = angles.reduce((sum, a) => sum + Math.cos(degToRad(a)), 0);
793
+ const meanSin = sinSum / angles.length;
794
+ const meanCos = cosSum / angles.length;
795
+ const r = Math.sqrt(meanSin * meanSin + meanCos * meanCos);
796
+
797
+ return r; // r=1 で完全に一貫、r=0 でランダム
798
+ }
799
+
800
+ /**
801
+ * scale スコアを計算
802
+ */
803
+ private calculateScaleScore(frames: FrameDiffResult[]): number {
804
+ // スケールの特徴:
805
+ // 1. boundingBoxのサイズが一貫して変化
806
+ // 2. 中心位置は大きく変わらない
807
+ // 3. モーションベクトルが放射状パターン
808
+
809
+ const sizes: number[] = [];
810
+ const centers: Array<{ x: number; y: number }> = [];
811
+
812
+ for (const frame of frames) {
813
+ if (frame.boundingBox) {
814
+ const size = frame.boundingBox.width * frame.boundingBox.height;
815
+ sizes.push(size);
816
+ centers.push({
817
+ x: frame.boundingBox.x + frame.boundingBox.width / 2,
818
+ y: frame.boundingBox.y + frame.boundingBox.height / 2,
819
+ });
820
+ }
821
+ }
822
+
823
+ if (sizes.length < 2) return 0;
824
+
825
+ // サイズ変化率を計算
826
+ const firstSize = sizes[0] ?? 1;
827
+ const lastSize = sizes[sizes.length - 1] ?? 1;
828
+ const sizeRatio = lastSize / firstSize;
829
+
830
+ // サイズ変化がほぼない場合はscaleではない
831
+ if (sizeRatio > 0.95 && sizeRatio < 1.05) {
832
+ return 0.1;
833
+ }
834
+
835
+ // サイズの変化を確認(単調増加/減少)
836
+ const isMonotonic = this.isMonotonicSequence(sizes);
837
+ if (!isMonotonic) {
838
+ return 0.2;
839
+ }
840
+
841
+ // サイズ変化が顕著かチェック(1.5倍以上または0.67倍以下)
842
+ const significantSizeChange = sizeRatio > 1.5 || sizeRatio < 0.67;
843
+
844
+ // 中心位置の変化を確認
845
+ const centerVarianceX = variance(centers.map((c) => c.x));
846
+ const centerVarianceY = variance(centers.map((c) => c.y));
847
+ const centerStable = centerVarianceX < 100 && centerVarianceY < 100;
848
+ // アスペクト比変更の場合、一方向のみ変化することを許容
849
+ const centerSemiStable =
850
+ (centerVarianceX < 500 && centerVarianceY < 100) ||
851
+ (centerVarianceX < 100 && centerVarianceY < 500);
852
+
853
+ // 放射状モーションベクトルをチェック
854
+ const hasRadialMotion = this.hasRadialMotionPattern(frames);
855
+
856
+ if (significantSizeChange && centerStable) {
857
+ return 0.92; // 高いスコア
858
+ }
859
+
860
+ // アスペクト比変更の場合(一方向のみ中心移動)
861
+ if (significantSizeChange && centerSemiStable) {
862
+ return 0.88;
863
+ }
864
+
865
+ if (hasRadialMotion && centerStable) {
866
+ return 0.85;
867
+ }
868
+
869
+ // サイズ変化がある程度あるがcenterStable
870
+ if (centerStable && (sizeRatio > 1.1 || sizeRatio < 0.9)) {
871
+ return 0.75;
872
+ }
873
+
874
+ // サイズ変化が非常に大きい場合(4倍以上または0.25倍以下)は確実にスケール
875
+ // slideの最大スコア0.9より高くする
876
+ if (sizeRatio > 4 || sizeRatio < 0.25) {
877
+ return 0.95;
878
+ }
879
+
880
+ // サイズ変化が大きい場合(2.5倍以上または0.4倍以下)は中心移動があってもscaleの可能性
881
+ if (sizeRatio > 2.5 || sizeRatio < 0.4) {
882
+ return 0.85;
883
+ }
884
+
885
+ return 0.4;
886
+ }
887
+
888
+ /**
889
+ * 放射状のモーションパターンをチェック
890
+ */
891
+ private hasRadialMotionPattern(frames: FrameDiffResult[]): boolean {
892
+ for (const frame of frames) {
893
+ if (frame.motionVectors && frame.motionVectors.length >= 2) {
894
+ // 複数のベクトルの角度を取得
895
+ const angles = frame.motionVectors
896
+ .filter((v) => v.magnitude > 0.1)
897
+ .map((v) => calculateAngle(v.dx, v.dy));
898
+
899
+ if (angles.length >= 2) {
900
+ // 角度が異なる方向を向いている(放射状)かチェック
901
+ const angleSet = new Set(angles.map((a) => Math.round(a / 45) * 45));
902
+ if (angleSet.size >= 2) {
903
+ return true;
904
+ }
905
+ }
906
+ }
907
+ }
908
+ return false;
909
+ }
910
+
911
+ /**
912
+ * parallax スコアを計算
913
+ */
914
+ private calculateParallaxScore(frames: FrameDiffResult[]): number {
915
+ // パララックスの特徴:
916
+ // 1. 複数のモーションベクトルが異なる速度を持つ
917
+ // 2. 同じ方向だが異なるmagnitude
918
+ // 3. 複数フレームで一貫してこのパターンが見られる
919
+
920
+ let parallaxFrameCount = 0;
921
+ let sameDirectionCount = 0;
922
+
923
+ for (const frame of frames) {
924
+ if (frame.motionVectors && frame.motionVectors.length >= 2) {
925
+ const validVectors = frame.motionVectors.filter((v) => v.magnitude > 0.5);
926
+ if (validVectors.length < 2) continue;
927
+
928
+ const magnitudes = validVectors.map((v) => v.magnitude).sort((a, b) => a - b);
929
+ const angles = validVectors.map((v) => calculateAngle(v.dx, v.dy));
930
+
931
+ // 速度差を確認
932
+ const minMag = magnitudes[0] ?? 0;
933
+ const maxMag = magnitudes[magnitudes.length - 1] ?? 0;
934
+
935
+ if (maxMag > 0 && minMag > 0) {
936
+ const ratio = minMag / maxMag;
937
+ if (ratio < 0.7 && ratio > 0.1) {
938
+ parallaxFrameCount++;
939
+
940
+ // 方向の一貫性をチェック
941
+ const avgAngle = average(angles);
942
+ const angleDeviation =
943
+ angles.map((a) => Math.abs(a - avgAngle)).reduce((a, b) => a + b, 0) / angles.length;
944
+ if (angleDeviation < 30) {
945
+ sameDirectionCount++;
946
+ }
947
+ }
948
+ }
949
+ }
950
+ }
951
+
952
+ // 複数フレームでパララックスパターンが検出されたら高スコア
953
+ if (parallaxFrameCount >= frames.length * 0.5 && sameDirectionCount >= frames.length * 0.3) {
954
+ return 0.92;
955
+ }
956
+
957
+ if (parallaxFrameCount >= frames.length * 0.3) {
958
+ return 0.85;
959
+ }
960
+
961
+ if (parallaxFrameCount > 0) {
962
+ return 0.6;
963
+ }
964
+
965
+ return 0.1;
966
+ }
967
+
968
+ /**
969
+ * 単調増加/減少シーケンスかチェック
970
+ */
971
+ private isMonotonicSequence(values: number[]): boolean {
972
+ if (values.length < 2) return true;
973
+
974
+ let increasing = true;
975
+ let decreasing = true;
976
+
977
+ for (let i = 1; i < values.length; i++) {
978
+ const current = values[i];
979
+ const prev = values[i - 1];
980
+ if (current === undefined || prev === undefined) continue;
981
+ if (current < prev - 0.001) {
982
+ increasing = false;
983
+ }
984
+ if (current > prev + 0.001) {
985
+ decreasing = false;
986
+ }
987
+ }
988
+
989
+ return increasing || decreasing;
990
+ }
991
+
992
+ /**
993
+ * サイズ変化を検出(scaleパターンの特徴)
994
+ */
995
+ private detectSizeChange(frames: FrameDiffResult[]): boolean {
996
+ const sizes: number[] = [];
997
+ const centers: Array<{ x: number; y: number }> = [];
998
+
999
+ for (const frame of frames) {
1000
+ if (frame.boundingBox) {
1001
+ const size = frame.boundingBox.width * frame.boundingBox.height;
1002
+ sizes.push(size);
1003
+ centers.push({
1004
+ x: frame.boundingBox.x + frame.boundingBox.width / 2,
1005
+ y: frame.boundingBox.y + frame.boundingBox.height / 2,
1006
+ });
1007
+ }
1008
+ }
1009
+
1010
+ if (sizes.length < 2) return false;
1011
+
1012
+ // サイズ変化率を計算
1013
+ const firstSize = sizes[0] ?? 1;
1014
+ const lastSize = sizes[sizes.length - 1] ?? 1;
1015
+ const sizeRatio = lastSize / firstSize;
1016
+
1017
+ // 中心位置の安定性をチェック(アスペクト比変更時も許容)
1018
+ const centerVarianceX = variance(centers.map((c) => c.x));
1019
+ const centerVarianceY = variance(centers.map((c) => c.y));
1020
+ // 中心変動が大きい場合でも、サイズ変化が顕著なら許容
1021
+ const centerStable = centerVarianceX < 500 && centerVarianceY < 500;
1022
+
1023
+ // サイズが1.3倍以上または0.77倍以下で、中心がある程度安定している場合はscaleの特徴
1024
+ const significantSizeChange = sizeRatio > 1.3 || sizeRatio < 0.77;
1025
+
1026
+ return significantSizeChange && centerStable;
1027
+ }
1028
+
1029
+ /**
1030
+ * 最適なカテゴリを選択
1031
+ */
1032
+ private selectBestCategory(
1033
+ scores: Map<VisualMotionCategory, number>,
1034
+ metrics: CategoryMetrics,
1035
+ frames: FrameDiffResult[],
1036
+ startTime: number
1037
+ ): CategoryClassificationResult {
1038
+ // スコアをソート
1039
+ const sortedScores = Array.from(scores.entries()).sort((a, b) => b[1] - a[1]);
1040
+
1041
+ const first = sortedScores[0] ?? (["unknown", 0] as const);
1042
+ const [bestCategory, bestScore] = first;
1043
+ const second =
1044
+ sortedScores.length > 1
1045
+ ? (sortedScores[1] ?? (["unknown", 0] as const))
1046
+ : (["unknown", 0] as const);
1047
+ const [secondCategory, secondScore] = second;
1048
+
1049
+ // 有効なカテゴリの数をカウント(static, unknown以外で閾値を超えているもの)
1050
+ const significantScores = sortedScores.filter(
1051
+ ([cat, score]) =>
1052
+ score > this.config.complex_category_threshold && cat !== "static" && cat !== "unknown"
1053
+ );
1054
+
1055
+ // 複合カテゴリの判定
1056
+ // fade + slide の特別なケースをチェック
1057
+ const fadeScore = scores.get("fade") ?? 0;
1058
+ const slideScore = scores.get("slide") ?? 0;
1059
+
1060
+ // fade + slide の複合パターンの条件:
1061
+ // - fadeとslide両方が0.5以上
1062
+ // - diffPercentageが単調変化している(fade特性)
1063
+ // - モーションベクトルが一貫している(slide特性)
1064
+ const diffs = frames.map((f) => f.diffPercentage);
1065
+ const isMonotonicDiff = this.isMonotonicSequence(diffs);
1066
+
1067
+ // scaleスコアが非常に高い場合はfade+slideの複合とは判定しない
1068
+ const scaleScore = scores.get("scale") ?? 0;
1069
+ const isFadeSlideComplex =
1070
+ fadeScore >= 0.5 &&
1071
+ slideScore >= 0.5 &&
1072
+ isMonotonicDiff &&
1073
+ fadeScore + slideScore > 1.3 &&
1074
+ scaleScore < 0.9; // scaleが明確に高い場合は除外
1075
+
1076
+ // 一般的な複合パターンの条件:
1077
+ // - 2つ以上の有効なカテゴリがあり、両方が0.6以上
1078
+ // - スコア差が0.15未満(非常に競合)
1079
+ // - 最高スコアが0.9未満(0.9以上なら明確な勝者がいる)
1080
+ const isGeneralComplex =
1081
+ significantScores.length >= 2 &&
1082
+ secondScore >= 0.6 &&
1083
+ bestScore - secondScore < 0.15 &&
1084
+ bestScore < 0.9 &&
1085
+ bestCategory !== "static" &&
1086
+ secondCategory !== "static";
1087
+
1088
+ const isComplex = isFadeSlideComplex || isGeneralComplex;
1089
+
1090
+ if (isComplex) {
1091
+ return this.createComplexResult(sortedScores, metrics, frames, startTime);
1092
+ }
1093
+
1094
+ // ノイズ/不一貫性によるペナルティを計算
1095
+ const noisePenalty = this.calculateNoisePenalty(frames);
1096
+ const adjustedConfidence = clamp(bestScore - noisePenalty, 0, 1);
1097
+
1098
+ // 調整後の信頼度が閾値未満の場合は unknown
1099
+ if (adjustedConfidence < this.config.min_confidence_threshold) {
1100
+ return {
1101
+ primary_category: "unknown",
1102
+ confidence: adjustedConfidence,
1103
+ metrics,
1104
+ processing_time_ms: performance.now() - startTime,
1105
+ };
1106
+ }
1107
+
1108
+ // 詳細を生成
1109
+ const details = this.generateDetails(bestCategory, frames, metrics);
1110
+
1111
+ const result: CategoryClassificationResult = {
1112
+ primary_category: bestCategory,
1113
+ confidence: adjustedConfidence,
1114
+ metrics,
1115
+ processing_time_ms: performance.now() - startTime,
1116
+ };
1117
+ if (details) {
1118
+ result.details = details;
1119
+ }
1120
+ return result;
1121
+ }
1122
+
1123
+ /**
1124
+ * ノイズ/不一貫性によるペナルティを計算
1125
+ */
1126
+ private calculateNoisePenalty(frames: FrameDiffResult[]): number {
1127
+ // モーションベクトルの方向の分散をチェック
1128
+ const angles: number[] = [];
1129
+
1130
+ for (const frame of frames) {
1131
+ if (frame.motionVectors) {
1132
+ for (const v of frame.motionVectors) {
1133
+ if (v.magnitude > 0.5) {
1134
+ angles.push(calculateAngle(v.dx, v.dy));
1135
+ }
1136
+ }
1137
+ }
1138
+ }
1139
+
1140
+ if (angles.length < 3) return 0;
1141
+
1142
+ // 角度の循環分散を計算
1143
+ const sinSum = angles.reduce((sum, a) => sum + Math.sin(degToRad(a)), 0);
1144
+ const cosSum = angles.reduce((sum, a) => sum + Math.cos(degToRad(a)), 0);
1145
+ const r = Math.sqrt(Math.pow(sinSum / angles.length, 2) + Math.pow(cosSum / angles.length, 2));
1146
+
1147
+ // r=1 で完全に一貫、r=0 でランダム
1148
+ // 一貫性が低い(r < 0.5)場合にペナルティを適用
1149
+ if (r < 0.3) {
1150
+ return 0.5; // 大きなペナルティ(ランダムノイズに近い)
1151
+ } else if (r < 0.5) {
1152
+ return 0.3; // 中程度のペナルティ
1153
+ } else if (r < 0.7) {
1154
+ return 0.1; // 小さなペナルティ
1155
+ }
1156
+
1157
+ return 0;
1158
+ }
1159
+
1160
+ /**
1161
+ * complex結果を生成
1162
+ */
1163
+ private createComplexResult(
1164
+ sortedScores: Array<[VisualMotionCategory, number]>,
1165
+ metrics: CategoryMetrics,
1166
+ _frames: FrameDiffResult[],
1167
+ startTime: number
1168
+ ): CategoryClassificationResult {
1169
+ const significantCategories = sortedScores.filter(
1170
+ ([cat, score]) =>
1171
+ score > this.config.complex_category_threshold && cat !== "static" && cat !== "unknown"
1172
+ );
1173
+
1174
+ // 重みを正規化
1175
+ const totalWeight = significantCategories.reduce((sum, [, score]) => sum + score, 0);
1176
+ const secondary_categories = significantCategories.map(([category, score]) => ({
1177
+ category,
1178
+ weight: totalWeight > 0 ? score / totalWeight : 0,
1179
+ }));
1180
+
1181
+ // 平均信頼度
1182
+ const avgConfidence = average(significantCategories.map(([, score]) => score));
1183
+
1184
+ return {
1185
+ primary_category: "complex",
1186
+ confidence: clamp(avgConfidence, 0, 1),
1187
+ secondary_categories,
1188
+ metrics,
1189
+ processing_time_ms: performance.now() - startTime,
1190
+ };
1191
+ }
1192
+
1193
+ /**
1194
+ * カテゴリ詳細を生成
1195
+ */
1196
+ private generateDetails(
1197
+ category: VisualMotionCategory,
1198
+ frames: FrameDiffResult[],
1199
+ metrics: CategoryMetrics
1200
+ ): CategoryDetails | undefined {
1201
+ switch (category) {
1202
+ case "fade":
1203
+ return this.generateFadeDetails(frames);
1204
+ case "slide":
1205
+ return this.generateSlideDetails(frames, metrics);
1206
+ case "scale":
1207
+ return this.generateScaleDetails(frames);
1208
+ case "parallax":
1209
+ return this.generateParallaxDetails(frames);
1210
+ default:
1211
+ return undefined;
1212
+ }
1213
+ }
1214
+
1215
+ /**
1216
+ * フェード詳細を生成
1217
+ */
1218
+ private generateFadeDetails(frames: FrameDiffResult[]): CategoryDetails {
1219
+ const diffs = frames.map((f) => f.diffPercentage);
1220
+ const firstDiff = diffs[0] || 0;
1221
+ const lastDiff = diffs[diffs.length - 1] || 0;
1222
+
1223
+ // フェードイン: 変化が減少(最初が大きい)
1224
+ // フェードアウト: 変化が増加(最後が大きい)
1225
+ const type: FadeType = firstDiff > lastDiff ? "in" : "out";
1226
+
1227
+ // opacity推定(diffPercentageから)
1228
+ const start_opacity = type === "in" ? 0 : 1;
1229
+ const end_opacity = type === "in" ? 1 : 0;
1230
+
1231
+ return {
1232
+ fade: {
1233
+ type,
1234
+ start_opacity,
1235
+ end_opacity,
1236
+ duration_frames: frames.length,
1237
+ },
1238
+ };
1239
+ }
1240
+
1241
+ /**
1242
+ * スライド詳細を生成
1243
+ */
1244
+ private generateSlideDetails(
1245
+ frames: FrameDiffResult[],
1246
+ metrics: CategoryMetrics
1247
+ ): CategoryDetails {
1248
+ // 方向を判定
1249
+ let angle = metrics.dominant_direction ?? 0;
1250
+ let direction: SlideDirection;
1251
+
1252
+ // 角度から方向を決定
1253
+ const normalizedAngle = angle % 360;
1254
+ if (
1255
+ (normalizedAngle >= 0 && normalizedAngle < 22.5) ||
1256
+ (normalizedAngle >= 337.5 && normalizedAngle < 360) ||
1257
+ (normalizedAngle >= 157.5 && normalizedAngle < 202.5)
1258
+ ) {
1259
+ direction = "horizontal";
1260
+ // 正確な角度を設定
1261
+ angle = normalizedAngle < 90 || normalizedAngle > 270 ? 0 : 180;
1262
+ } else if (
1263
+ (normalizedAngle >= 67.5 && normalizedAngle < 112.5) ||
1264
+ (normalizedAngle >= 247.5 && normalizedAngle < 292.5)
1265
+ ) {
1266
+ direction = "vertical";
1267
+ // 正確な角度を設定
1268
+ angle = normalizedAngle < 180 ? 90 : 270;
1269
+ } else {
1270
+ direction = "diagonal";
1271
+ }
1272
+
1273
+ // 移動距離を計算
1274
+ const distance = this.calculateTotalDistance(frames);
1275
+
1276
+ return {
1277
+ slide: {
1278
+ direction,
1279
+ distance_px: distance,
1280
+ angle_degrees: Math.round(angle),
1281
+ },
1282
+ };
1283
+ }
1284
+
1285
+ /**
1286
+ * 総移動距離を計算
1287
+ */
1288
+ private calculateTotalDistance(frames: FrameDiffResult[]): number {
1289
+ let totalDistance = 0;
1290
+
1291
+ // モーションベクトルから計算
1292
+ for (const frame of frames) {
1293
+ if (frame.motionVectors && frame.motionVectors.length > 0) {
1294
+ const mainVector = frame.motionVectors.reduce((max, v) =>
1295
+ v.magnitude > max.magnitude ? v : max
1296
+ );
1297
+ totalDistance += mainVector.magnitude;
1298
+ }
1299
+ }
1300
+
1301
+ if (totalDistance > 0) {
1302
+ return Math.round(totalDistance);
1303
+ }
1304
+
1305
+ // boundingBoxから計算
1306
+ const positions: Array<{ x: number; y: number }> = [];
1307
+ for (const frame of frames) {
1308
+ if (frame.boundingBox) {
1309
+ positions.push({
1310
+ x: frame.boundingBox.x,
1311
+ y: frame.boundingBox.y,
1312
+ });
1313
+ }
1314
+ }
1315
+
1316
+ if (positions.length >= 2) {
1317
+ const first = positions[0];
1318
+ const last = positions[positions.length - 1];
1319
+ if (first !== undefined && last !== undefined) {
1320
+ return Math.round(Math.sqrt(Math.pow(last.x - first.x, 2) + Math.pow(last.y - first.y, 2)));
1321
+ }
1322
+ }
1323
+
1324
+ return 0;
1325
+ }
1326
+
1327
+ /**
1328
+ * スケール詳細を生成
1329
+ */
1330
+ private generateScaleDetails(frames: FrameDiffResult[]): CategoryDetails {
1331
+ const sizes: Array<{ width: number; height: number }> = [];
1332
+
1333
+ for (const frame of frames) {
1334
+ if (frame.boundingBox) {
1335
+ sizes.push({
1336
+ width: frame.boundingBox.width,
1337
+ height: frame.boundingBox.height,
1338
+ });
1339
+ }
1340
+ }
1341
+
1342
+ if (sizes.length < 2) {
1343
+ return {
1344
+ scale: {
1345
+ type: "expand",
1346
+ start_scale: 1,
1347
+ end_scale: 1,
1348
+ aspect_ratio_maintained: true,
1349
+ },
1350
+ };
1351
+ }
1352
+
1353
+ const firstSize = sizes[0];
1354
+ const lastSize = sizes[sizes.length - 1];
1355
+
1356
+ // Early return if sizes are undefined (TypeScript safety)
1357
+ if (firstSize === undefined || lastSize === undefined) {
1358
+ return {
1359
+ scale: {
1360
+ type: "expand" as const,
1361
+ start_scale: 1,
1362
+ end_scale: 1,
1363
+ aspect_ratio_maintained: true,
1364
+ },
1365
+ };
1366
+ }
1367
+
1368
+ const firstArea = firstSize.width * firstSize.height;
1369
+ const lastArea = lastSize.width * lastSize.height;
1370
+
1371
+ const type: ScaleType = lastArea > firstArea ? "expand" : "shrink";
1372
+
1373
+ // 基準を100として、スケール比率を計算
1374
+ const startScale = 1;
1375
+ const endScale = lastArea > 0 ? Math.sqrt(lastArea / firstArea) : 1;
1376
+
1377
+ // アスペクト比の維持をチェック
1378
+ const firstRatio = firstSize.width / firstSize.height;
1379
+ const lastRatio = lastSize.width / lastSize.height;
1380
+ const aspect_ratio_maintained = Math.abs(firstRatio - lastRatio) < 0.1;
1381
+
1382
+ return {
1383
+ scale: {
1384
+ type,
1385
+ start_scale: startScale,
1386
+ end_scale: endScale,
1387
+ aspect_ratio_maintained,
1388
+ },
1389
+ };
1390
+ }
1391
+
1392
+ /**
1393
+ * パララックス詳細を生成
1394
+ */
1395
+ private generateParallaxDetails(frames: FrameDiffResult[]): CategoryDetails {
1396
+ const layerSpeeds: number[] = [];
1397
+
1398
+ for (const frame of frames) {
1399
+ if (frame.motionVectors && frame.motionVectors.length >= 2) {
1400
+ for (const vector of frame.motionVectors) {
1401
+ if (!layerSpeeds.includes(vector.magnitude)) {
1402
+ layerSpeeds.push(vector.magnitude);
1403
+ }
1404
+ }
1405
+ }
1406
+ }
1407
+
1408
+ // 重複を除去してソート
1409
+ const uniqueSpeeds = [...new Set(layerSpeeds)].sort((a, b) => a - b);
1410
+ const maxSpeed = Math.max(...uniqueSpeeds, 1);
1411
+
1412
+ const speed_ratios = uniqueSpeeds.map((s) => s / maxSpeed);
1413
+ const layer_count = speed_ratios.length;
1414
+ const depth_order = Array.from({ length: layer_count }, (_, i) => i);
1415
+
1416
+ return {
1417
+ parallax: {
1418
+ layer_count,
1419
+ speed_ratios,
1420
+ depth_order,
1421
+ },
1422
+ };
1423
+ }
1424
+ }
1425
+
1426
+ export default VisualCategoryClassifier;