@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.
- package/LICENSE +661 -0
- package/README.md +1099 -0
- package/dist/api/health.d.ts +122 -0
- package/dist/api/health.d.ts.map +1 -0
- package/dist/api/health.js +267 -0
- package/dist/api/health.js.map +1 -0
- package/dist/config/index.d.ts +9 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +27 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/redis.d.ts +99 -0
- package/dist/config/redis.d.ts.map +1 -0
- package/dist/config/redis.js +234 -0
- package/dist/config/redis.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +247 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/index.d.ts +6 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +14 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/project-context.d.ts +51 -0
- package/dist/lib/project-context.d.ts.map +1 -0
- package/dist/lib/project-context.js +109 -0
- package/dist/lib/project-context.js.map +1 -0
- package/dist/middleware/args-type-coercion.d.ts +59 -0
- package/dist/middleware/args-type-coercion.d.ts.map +1 -0
- package/dist/middleware/args-type-coercion.js +187 -0
- package/dist/middleware/args-type-coercion.js.map +1 -0
- package/dist/middleware/auth.d.ts +122 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +430 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/middleware/index.d.ts +10 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +38 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/light-response-controller.d.ts +206 -0
- package/dist/middleware/light-response-controller.d.ts.map +1 -0
- package/dist/middleware/light-response-controller.js +555 -0
- package/dist/middleware/light-response-controller.js.map +1 -0
- package/dist/middleware/response-size-warning.d.ts +97 -0
- package/dist/middleware/response-size-warning.d.ts.map +1 -0
- package/dist/middleware/response-size-warning.js +137 -0
- package/dist/middleware/response-size-warning.js.map +1 -0
- package/dist/queues/batch-quality-queue.d.ts +225 -0
- package/dist/queues/batch-quality-queue.d.ts.map +1 -0
- package/dist/queues/batch-quality-queue.js +375 -0
- package/dist/queues/batch-quality-queue.js.map +1 -0
- package/dist/queues/index.d.ts +10 -0
- package/dist/queues/index.d.ts.map +1 -0
- package/dist/queues/index.js +28 -0
- package/dist/queues/index.js.map +1 -0
- package/dist/queues/page-analyze-queue.d.ts +287 -0
- package/dist/queues/page-analyze-queue.d.ts.map +1 -0
- package/dist/queues/page-analyze-queue.js +219 -0
- package/dist/queues/page-analyze-queue.js.map +1 -0
- package/dist/router.d.ts +144 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +261 -0
- package/dist/router.js.map +1 -0
- package/dist/schemas/creative/index.d.ts +8 -0
- package/dist/schemas/creative/index.d.ts.map +1 -0
- package/dist/schemas/creative/index.js +23 -0
- package/dist/schemas/creative/index.js.map +1 -0
- package/dist/schemas/creative/palette.schema.d.ts +741 -0
- package/dist/schemas/creative/palette.schema.d.ts.map +1 -0
- package/dist/schemas/creative/palette.schema.js +154 -0
- package/dist/schemas/creative/palette.schema.js.map +1 -0
- package/dist/schemas/mood-brandtone-filters.d.ts +740 -0
- package/dist/schemas/mood-brandtone-filters.d.ts.map +1 -0
- package/dist/schemas/mood-brandtone-filters.js +265 -0
- package/dist/schemas/mood-brandtone-filters.js.map +1 -0
- package/dist/scripts/backfill-embeddings.d.ts +3 -0
- package/dist/scripts/backfill-embeddings.d.ts.map +1 -0
- package/dist/scripts/backfill-embeddings.js +385 -0
- package/dist/scripts/backfill-embeddings.js.map +1 -0
- package/dist/scripts/check-embedding-coverage.d.ts +3 -0
- package/dist/scripts/check-embedding-coverage.d.ts.map +1 -0
- package/dist/scripts/check-embedding-coverage.js +103 -0
- package/dist/scripts/check-embedding-coverage.js.map +1 -0
- package/dist/scripts/start-workers.d.ts +3 -0
- package/dist/scripts/start-workers.d.ts.map +1 -0
- package/dist/scripts/start-workers.js +447 -0
- package/dist/scripts/start-workers.js.map +1 -0
- package/dist/server.d.ts +49 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +237 -0
- package/dist/server.js.map +1 -0
- package/dist/services/background/background-design-db.service.d.ts +65 -0
- package/dist/services/background/background-design-db.service.d.ts.map +1 -0
- package/dist/services/background/background-design-db.service.js +138 -0
- package/dist/services/background/background-design-db.service.js.map +1 -0
- package/dist/services/background/background-design-detector.service.d.ts +125 -0
- package/dist/services/background/background-design-detector.service.d.ts.map +1 -0
- package/dist/services/background/background-design-detector.service.js +1106 -0
- package/dist/services/background/background-design-detector.service.js.map +1 -0
- package/dist/services/background/background-design-embedding.service.d.ts +188 -0
- package/dist/services/background/background-design-embedding.service.d.ts.map +1 -0
- package/dist/services/background/background-design-embedding.service.js +386 -0
- package/dist/services/background/background-design-embedding.service.js.map +1 -0
- package/dist/services/background-search.service.d.ts +43 -0
- package/dist/services/background-search.service.d.ts.map +1 -0
- package/dist/services/background-search.service.js +235 -0
- package/dist/services/background-search.service.js.map +1 -0
- package/dist/services/backup-service.d.ts +135 -0
- package/dist/services/backup-service.d.ts.map +1 -0
- package/dist/services/backup-service.js +357 -0
- package/dist/services/backup-service.js.map +1 -0
- package/dist/services/brief/brief-parser-service.d.ts +47 -0
- package/dist/services/brief/brief-parser-service.d.ts.map +1 -0
- package/dist/services/brief/brief-parser-service.js +380 -0
- package/dist/services/brief/brief-parser-service.js.map +1 -0
- package/dist/services/brief/schemas/brief-parser-schemas.d.ts +278 -0
- package/dist/services/brief/schemas/brief-parser-schemas.d.ts.map +1 -0
- package/dist/services/brief/schemas/brief-parser-schemas.js +116 -0
- package/dist/services/brief/schemas/brief-parser-schemas.js.map +1 -0
- package/dist/services/browser-process-manager.d.ts +116 -0
- package/dist/services/browser-process-manager.d.ts.map +1 -0
- package/dist/services/browser-process-manager.js +259 -0
- package/dist/services/browser-process-manager.js.map +1 -0
- package/dist/services/cache.d.ts +119 -0
- package/dist/services/cache.d.ts.map +1 -0
- package/dist/services/cache.js +233 -0
- package/dist/services/cache.js.map +1 -0
- package/dist/services/checksum-service.d.ts +122 -0
- package/dist/services/checksum-service.d.ts.map +1 -0
- package/dist/services/checksum-service.js +270 -0
- package/dist/services/checksum-service.js.map +1 -0
- package/dist/services/css-analysis-cache.service.d.ts +248 -0
- package/dist/services/css-analysis-cache.service.d.ts.map +1 -0
- package/dist/services/css-analysis-cache.service.js +398 -0
- package/dist/services/css-analysis-cache.service.js.map +1 -0
- package/dist/services/database-dumper.service.d.ts +181 -0
- package/dist/services/database-dumper.service.d.ts.map +1 -0
- package/dist/services/database-dumper.service.js +550 -0
- package/dist/services/database-dumper.service.js.map +1 -0
- package/dist/services/embedding-backfill.service.d.ts +53 -0
- package/dist/services/embedding-backfill.service.d.ts.map +1 -0
- package/dist/services/embedding-backfill.service.js +672 -0
- package/dist/services/embedding-backfill.service.js.map +1 -0
- package/dist/services/embedding-validation.service.d.ts +64 -0
- package/dist/services/embedding-validation.service.d.ts.map +1 -0
- package/dist/services/embedding-validation.service.js +141 -0
- package/dist/services/embedding-validation.service.js.map +1 -0
- package/dist/services/encryption-service.d.ts +171 -0
- package/dist/services/encryption-service.d.ts.map +1 -0
- package/dist/services/encryption-service.js +343 -0
- package/dist/services/encryption-service.js.map +1 -0
- package/dist/services/external-css-fetcher.d.ts +185 -0
- package/dist/services/external-css-fetcher.d.ts.map +1 -0
- package/dist/services/external-css-fetcher.js +667 -0
- package/dist/services/external-css-fetcher.js.map +1 -0
- package/dist/services/gpu-resource-manager.d.ts +180 -0
- package/dist/services/gpu-resource-manager.d.ts.map +1 -0
- package/dist/services/gpu-resource-manager.js +485 -0
- package/dist/services/gpu-resource-manager.js.map +1 -0
- package/dist/services/index.d.ts +15 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +73 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/layout/component-splitter.d.ts +63 -0
- package/dist/services/layout/component-splitter.d.ts.map +1 -0
- package/dist/services/layout/component-splitter.js +508 -0
- package/dist/services/layout/component-splitter.js.map +1 -0
- package/dist/services/layout/html-to-jsx-converter.d.ts +40 -0
- package/dist/services/layout/html-to-jsx-converter.d.ts.map +1 -0
- package/dist/services/layout/html-to-jsx-converter.js +484 -0
- package/dist/services/layout/html-to-jsx-converter.js.map +1 -0
- package/dist/services/layout/semantic-html-converter.d.ts +67 -0
- package/dist/services/layout/semantic-html-converter.d.ts.map +1 -0
- package/dist/services/layout/semantic-html-converter.js +247 -0
- package/dist/services/layout/semantic-html-converter.js.map +1 -0
- package/dist/services/layout/style-to-tailwind-mapper.d.ts +82 -0
- package/dist/services/layout/style-to-tailwind-mapper.d.ts.map +1 -0
- package/dist/services/layout/style-to-tailwind-mapper.js +1334 -0
- package/dist/services/layout/style-to-tailwind-mapper.js.map +1 -0
- package/dist/services/layout-embedding.service.d.ts +415 -0
- package/dist/services/layout-embedding.service.d.ts.map +1 -0
- package/dist/services/layout-embedding.service.js +1147 -0
- package/dist/services/layout-embedding.service.js.map +1 -0
- package/dist/services/layout-generate-code-service-export.d.ts +38 -0
- package/dist/services/layout-generate-code-service-export.d.ts.map +1 -0
- package/dist/services/layout-generate-code-service-export.js +77 -0
- package/dist/services/layout-generate-code-service-export.js.map +1 -0
- package/dist/services/layout-search-service-export.d.ts +31 -0
- package/dist/services/layout-search-service-export.d.ts.map +1 -0
- package/dist/services/layout-search-service-export.js +43 -0
- package/dist/services/layout-search-service-export.js.map +1 -0
- package/dist/services/layout-search.service.d.ts +111 -0
- package/dist/services/layout-search.service.d.ts.map +1 -0
- package/dist/services/layout-search.service.js +716 -0
- package/dist/services/layout-search.service.js.map +1 -0
- package/dist/services/layout-to-code.service.d.ts +85 -0
- package/dist/services/layout-to-code.service.d.ts.map +1 -0
- package/dist/services/layout-to-code.service.js +1368 -0
- package/dist/services/layout-to-code.service.js.map +1 -0
- package/dist/services/metrics-collector.d.ts +189 -0
- package/dist/services/metrics-collector.d.ts.map +1 -0
- package/dist/services/metrics-collector.js +344 -0
- package/dist/services/metrics-collector.js.map +1 -0
- package/dist/services/ml/mood-brandtone-embedding.service.d.ts +253 -0
- package/dist/services/ml/mood-brandtone-embedding.service.d.ts.map +1 -0
- package/dist/services/ml/mood-brandtone-embedding.service.js +678 -0
- package/dist/services/ml/mood-brandtone-embedding.service.js.map +1 -0
- package/dist/services/motion/analyzers/color-change.analyzer.d.ts +274 -0
- package/dist/services/motion/analyzers/color-change.analyzer.d.ts.map +1 -0
- package/dist/services/motion/analyzers/color-change.analyzer.js +644 -0
- package/dist/services/motion/analyzers/color-change.analyzer.js.map +1 -0
- package/dist/services/motion/analyzers/frame-diff.analyzer.d.ts +109 -0
- package/dist/services/motion/analyzers/frame-diff.analyzer.d.ts.map +1 -0
- package/dist/services/motion/analyzers/frame-diff.analyzer.js +315 -0
- package/dist/services/motion/analyzers/frame-diff.analyzer.js.map +1 -0
- package/dist/services/motion/analyzers/layout-shift.detector.d.ts +132 -0
- package/dist/services/motion/analyzers/layout-shift.detector.d.ts.map +1 -0
- package/dist/services/motion/analyzers/layout-shift.detector.js +179 -0
- package/dist/services/motion/analyzers/layout-shift.detector.js.map +1 -0
- package/dist/services/motion/analyzers/motion-vector.estimator.d.ts +88 -0
- package/dist/services/motion/analyzers/motion-vector.estimator.d.ts.map +1 -0
- package/dist/services/motion/analyzers/motion-vector.estimator.js +494 -0
- package/dist/services/motion/analyzers/motion-vector.estimator.js.map +1 -0
- package/dist/services/motion/analyzers/webgl-motion-analyzer.d.ts +167 -0
- package/dist/services/motion/analyzers/webgl-motion-analyzer.d.ts.map +1 -0
- package/dist/services/motion/analyzers/webgl-motion-analyzer.js +500 -0
- package/dist/services/motion/analyzers/webgl-motion-analyzer.js.map +1 -0
- package/dist/services/motion/animation-metrics-collector.service.d.ts +215 -0
- package/dist/services/motion/animation-metrics-collector.service.d.ts.map +1 -0
- package/dist/services/motion/animation-metrics-collector.service.js +502 -0
- package/dist/services/motion/animation-metrics-collector.service.js.map +1 -0
- package/dist/services/motion/cls-calculator.service.d.ts +186 -0
- package/dist/services/motion/cls-calculator.service.d.ts.map +1 -0
- package/dist/services/motion/cls-calculator.service.js +329 -0
- package/dist/services/motion/cls-calculator.service.js.map +1 -0
- package/dist/services/motion/existing-animation-detector.service.d.ts +208 -0
- package/dist/services/motion/existing-animation-detector.service.d.ts.map +1 -0
- package/dist/services/motion/existing-animation-detector.service.js +591 -0
- package/dist/services/motion/existing-animation-detector.service.js.map +1 -0
- package/dist/services/motion/fade-detector.service.d.ts +114 -0
- package/dist/services/motion/fade-detector.service.d.ts.map +1 -0
- package/dist/services/motion/fade-detector.service.js +249 -0
- package/dist/services/motion/fade-detector.service.js.map +1 -0
- package/dist/services/motion/frame-analysis-save.helper.d.ts +41 -0
- package/dist/services/motion/frame-analysis-save.helper.d.ts.map +1 -0
- package/dist/services/motion/frame-analysis-save.helper.js +235 -0
- package/dist/services/motion/frame-analysis-save.helper.js.map +1 -0
- package/dist/services/motion/frame-capture.service.d.ts +170 -0
- package/dist/services/motion/frame-capture.service.d.ts.map +1 -0
- package/dist/services/motion/frame-capture.service.js +476 -0
- package/dist/services/motion/frame-capture.service.js.map +1 -0
- package/dist/services/motion/frame-embedding.service.d.ts +315 -0
- package/dist/services/motion/frame-embedding.service.d.ts.map +1 -0
- package/dist/services/motion/frame-embedding.service.js +1023 -0
- package/dist/services/motion/frame-embedding.service.js.map +1 -0
- package/dist/services/motion/frame-image-analysis.service.d.ts +126 -0
- package/dist/services/motion/frame-image-analysis.service.d.ts.map +1 -0
- package/dist/services/motion/frame-image-analysis.service.js +982 -0
- package/dist/services/motion/frame-image-analysis.service.js.map +1 -0
- package/dist/services/motion/frame-image-analyzer.adapter.d.ts +168 -0
- package/dist/services/motion/frame-image-analyzer.adapter.d.ts.map +1 -0
- package/dist/services/motion/frame-image-analyzer.adapter.js +520 -0
- package/dist/services/motion/frame-image-analyzer.adapter.js.map +1 -0
- package/dist/services/motion/frame-worker-pool.service.d.ts +133 -0
- package/dist/services/motion/frame-worker-pool.service.d.ts.map +1 -0
- package/dist/services/motion/frame-worker-pool.service.js +410 -0
- package/dist/services/motion/frame-worker-pool.service.js.map +1 -0
- package/dist/services/motion/infrastructure/frame-loader.d.ts +77 -0
- package/dist/services/motion/infrastructure/frame-loader.d.ts.map +1 -0
- package/dist/services/motion/infrastructure/frame-loader.js +430 -0
- package/dist/services/motion/infrastructure/frame-loader.js.map +1 -0
- package/dist/services/motion/js-animation-detector.d.ts +382 -0
- package/dist/services/motion/js-animation-detector.d.ts.map +1 -0
- package/dist/services/motion/js-animation-detector.js +911 -0
- package/dist/services/motion/js-animation-detector.js.map +1 -0
- package/dist/services/motion/js-animation-embedding.service.d.ts +114 -0
- package/dist/services/motion/js-animation-embedding.service.d.ts.map +1 -0
- package/dist/services/motion/js-animation-embedding.service.js +289 -0
- package/dist/services/motion/js-animation-embedding.service.js.map +1 -0
- package/dist/services/motion/js-animation-search.service.d.ts +138 -0
- package/dist/services/motion/js-animation-search.service.d.ts.map +1 -0
- package/dist/services/motion/js-animation-search.service.js +503 -0
- package/dist/services/motion/js-animation-search.service.js.map +1 -0
- package/dist/services/motion/motion-db.service.d.ts +231 -0
- package/dist/services/motion/motion-db.service.d.ts.map +1 -0
- package/dist/services/motion/motion-db.service.js +676 -0
- package/dist/services/motion/motion-db.service.js.map +1 -0
- package/dist/services/motion/three-js-scene-extractor.d.ts +274 -0
- package/dist/services/motion/three-js-scene-extractor.d.ts.map +1 -0
- package/dist/services/motion/three-js-scene-extractor.js +1126 -0
- package/dist/services/motion/three-js-scene-extractor.js.map +1 -0
- package/dist/services/motion/types.d.ts +592 -0
- package/dist/services/motion/types.d.ts.map +1 -0
- package/dist/services/motion/types.js +121 -0
- package/dist/services/motion/types.js.map +1 -0
- package/dist/services/motion/visual-category-classifier.d.ts +273 -0
- package/dist/services/motion/visual-category-classifier.d.ts.map +1 -0
- package/dist/services/motion/visual-category-classifier.js +1060 -0
- package/dist/services/motion/visual-category-classifier.js.map +1 -0
- package/dist/services/motion/webgl-animation-categorizer.d.ts +151 -0
- package/dist/services/motion/webgl-animation-categorizer.d.ts.map +1 -0
- package/dist/services/motion/webgl-animation-categorizer.js +568 -0
- package/dist/services/motion/webgl-animation-categorizer.js.map +1 -0
- package/dist/services/motion/webgl-animation-detector.service.d.ts +204 -0
- package/dist/services/motion/webgl-animation-detector.service.d.ts.map +1 -0
- package/dist/services/motion/webgl-animation-detector.service.js +518 -0
- package/dist/services/motion/webgl-animation-detector.service.js.map +1 -0
- package/dist/services/motion/webgl-animation-embedding.service.d.ts +238 -0
- package/dist/services/motion/webgl-animation-embedding.service.d.ts.map +1 -0
- package/dist/services/motion/webgl-animation-embedding.service.js +368 -0
- package/dist/services/motion/webgl-animation-embedding.service.js.map +1 -0
- package/dist/services/motion-detect-service-export.d.ts +130 -0
- package/dist/services/motion-detect-service-export.d.ts.map +1 -0
- package/dist/services/motion-detect-service-export.js +160 -0
- package/dist/services/motion-detect-service-export.js.map +1 -0
- package/dist/services/motion-persistence.service.d.ts +144 -0
- package/dist/services/motion-persistence.service.d.ts.map +1 -0
- package/dist/services/motion-persistence.service.js +398 -0
- package/dist/services/motion-persistence.service.js.map +1 -0
- package/dist/services/motion-search-service.d.ts +10 -0
- package/dist/services/motion-search-service.d.ts.map +1 -0
- package/dist/services/motion-search-service.js +22 -0
- package/dist/services/motion-search-service.js.map +1 -0
- package/dist/services/motion-search.service.d.ts +210 -0
- package/dist/services/motion-search.service.d.ts.map +1 -0
- package/dist/services/motion-search.service.js +900 -0
- package/dist/services/motion-search.service.js.map +1 -0
- package/dist/services/narrative/analyzers/layout-structure.analyzer.d.ts +75 -0
- package/dist/services/narrative/analyzers/layout-structure.analyzer.d.ts.map +1 -0
- package/dist/services/narrative/analyzers/layout-structure.analyzer.js +489 -0
- package/dist/services/narrative/analyzers/layout-structure.analyzer.js.map +1 -0
- package/dist/services/narrative/analyzers/worldview.analyzer.d.ts +92 -0
- package/dist/services/narrative/analyzers/worldview.analyzer.d.ts.map +1 -0
- package/dist/services/narrative/analyzers/worldview.analyzer.js +477 -0
- package/dist/services/narrative/analyzers/worldview.analyzer.js.map +1 -0
- package/dist/services/narrative/generators/confidence-calculator.d.ts +65 -0
- package/dist/services/narrative/generators/confidence-calculator.d.ts.map +1 -0
- package/dist/services/narrative/generators/confidence-calculator.js +316 -0
- package/dist/services/narrative/generators/confidence-calculator.js.map +1 -0
- package/dist/services/narrative/generators/text-representation.generator.d.ts +67 -0
- package/dist/services/narrative/generators/text-representation.generator.d.ts.map +1 -0
- package/dist/services/narrative/generators/text-representation.generator.js +312 -0
- package/dist/services/narrative/generators/text-representation.generator.js.map +1 -0
- package/dist/services/narrative/index.d.ts +16 -0
- package/dist/services/narrative/index.d.ts.map +1 -0
- package/dist/services/narrative/index.js +63 -0
- package/dist/services/narrative/index.js.map +1 -0
- package/dist/services/narrative/narrative-analysis.service.d.ts +120 -0
- package/dist/services/narrative/narrative-analysis.service.d.ts.map +1 -0
- package/dist/services/narrative/narrative-analysis.service.js +479 -0
- package/dist/services/narrative/narrative-analysis.service.js.map +1 -0
- package/dist/services/narrative/narrative-search.service.d.ts +126 -0
- package/dist/services/narrative/narrative-search.service.d.ts.map +1 -0
- package/dist/services/narrative/narrative-search.service.js +516 -0
- package/dist/services/narrative/narrative-search.service.js.map +1 -0
- package/dist/services/narrative/types/narrative.types.d.ts +372 -0
- package/dist/services/narrative/types/narrative.types.d.ts.map +1 -0
- package/dist/services/narrative/types/narrative.types.js +5 -0
- package/dist/services/narrative/types/narrative.types.js.map +1 -0
- package/dist/services/orphaned-job-utils.d.ts +62 -0
- package/dist/services/orphaned-job-utils.d.ts.map +1 -0
- package/dist/services/orphaned-job-utils.js +130 -0
- package/dist/services/orphaned-job-utils.js.map +1 -0
- package/dist/services/page/css-animation-parser.service.d.ts +173 -0
- package/dist/services/page/css-animation-parser.service.d.ts.map +1 -0
- package/dist/services/page/css-animation-parser.service.js +537 -0
- package/dist/services/page/css-animation-parser.service.js.map +1 -0
- package/dist/services/page/fallback-analyzer.service.d.ts +140 -0
- package/dist/services/page/fallback-analyzer.service.d.ts.map +1 -0
- package/dist/services/page/fallback-analyzer.service.js +289 -0
- package/dist/services/page/fallback-analyzer.service.js.map +1 -0
- package/dist/services/page/frame-analyzer.service.d.ts +208 -0
- package/dist/services/page/frame-analyzer.service.d.ts.map +1 -0
- package/dist/services/page/frame-analyzer.service.js +628 -0
- package/dist/services/page/frame-analyzer.service.js.map +1 -0
- package/dist/services/page/layout-analyzer.service.d.ts +323 -0
- package/dist/services/page/layout-analyzer.service.d.ts.map +1 -0
- package/dist/services/page/layout-analyzer.service.js +2001 -0
- package/dist/services/page/layout-analyzer.service.js.map +1 -0
- package/dist/services/page/motion-category-classifier.service.d.ts +72 -0
- package/dist/services/page/motion-category-classifier.service.d.ts.map +1 -0
- package/dist/services/page/motion-category-classifier.service.js +340 -0
- package/dist/services/page/motion-category-classifier.service.js.map +1 -0
- package/dist/services/page/motion-detector.service.d.ts +76 -0
- package/dist/services/page/motion-detector.service.d.ts.map +1 -0
- package/dist/services/page/motion-detector.service.js +255 -0
- package/dist/services/page/motion-detector.service.js.map +1 -0
- package/dist/services/page/motion-performance-analyzer.service.d.ts +114 -0
- package/dist/services/page/motion-performance-analyzer.service.d.ts.map +1 -0
- package/dist/services/page/motion-performance-analyzer.service.js +315 -0
- package/dist/services/page/motion-performance-analyzer.service.js.map +1 -0
- package/dist/services/page/playwright-crawler.service.d.ts +106 -0
- package/dist/services/page/playwright-crawler.service.d.ts.map +1 -0
- package/dist/services/page/playwright-crawler.service.js +373 -0
- package/dist/services/page/playwright-crawler.service.js.map +1 -0
- package/dist/services/page/quality-evaluator.service.d.ts +107 -0
- package/dist/services/page/quality-evaluator.service.d.ts.map +1 -0
- package/dist/services/page/quality-evaluator.service.js +1138 -0
- package/dist/services/page/quality-evaluator.service.js.map +1 -0
- package/dist/services/page/runtime-animation-detector.service.d.ts +154 -0
- package/dist/services/page/runtime-animation-detector.service.d.ts.map +1 -0
- package/dist/services/page/runtime-animation-detector.service.js +480 -0
- package/dist/services/page/runtime-animation-detector.service.js.map +1 -0
- package/dist/services/page/section-postprocessor.service.d.ts +55 -0
- package/dist/services/page/section-postprocessor.service.d.ts.map +1 -0
- package/dist/services/page/section-postprocessor.service.js +708 -0
- package/dist/services/page/section-postprocessor.service.js.map +1 -0
- package/dist/services/page/video-recorder.service.d.ts +110 -0
- package/dist/services/page/video-recorder.service.d.ts.map +1 -0
- package/dist/services/page/video-recorder.service.js +441 -0
- package/dist/services/page/video-recorder.service.js.map +1 -0
- package/dist/services/page/webgl-detector.service.d.ts +113 -0
- package/dist/services/page/webgl-detector.service.d.ts.map +1 -0
- package/dist/services/page/webgl-detector.service.js +280 -0
- package/dist/services/page/webgl-detector.service.js.map +1 -0
- package/dist/services/page-analyze-service.d.ts +30 -0
- package/dist/services/page-analyze-service.d.ts.map +1 -0
- package/dist/services/page-analyze-service.js +58 -0
- package/dist/services/page-analyze-service.js.map +1 -0
- package/dist/services/page-ingest-adapter.d.ts +479 -0
- package/dist/services/page-ingest-adapter.d.ts.map +1 -0
- package/dist/services/page-ingest-adapter.js +1726 -0
- package/dist/services/page-ingest-adapter.js.map +1 -0
- package/dist/services/palette-service-export.d.ts +26 -0
- package/dist/services/palette-service-export.d.ts.map +1 -0
- package/dist/services/palette-service-export.js +22 -0
- package/dist/services/palette-service-export.js.map +1 -0
- package/dist/services/part/index.d.ts +22 -0
- package/dist/services/part/index.d.ts.map +1 -0
- package/dist/services/part/index.js +72 -0
- package/dist/services/part/index.js.map +1 -0
- package/dist/services/part/part-backfill.service.d.ts +66 -0
- package/dist/services/part/part-backfill.service.d.ts.map +1 -0
- package/dist/services/part/part-backfill.service.js +195 -0
- package/dist/services/part/part-backfill.service.js.map +1 -0
- package/dist/services/part/part-bbox-playwright.service.d.ts +85 -0
- package/dist/services/part/part-bbox-playwright.service.d.ts.map +1 -0
- package/dist/services/part/part-bbox-playwright.service.js +362 -0
- package/dist/services/part/part-bbox-playwright.service.js.map +1 -0
- package/dist/services/part/part-db.service.d.ts +41 -0
- package/dist/services/part/part-db.service.d.ts.map +1 -0
- package/dist/services/part/part-db.service.js +82 -0
- package/dist/services/part/part-db.service.js.map +1 -0
- package/dist/services/part/part-embedding-db.service.d.ts +52 -0
- package/dist/services/part/part-embedding-db.service.d.ts.map +1 -0
- package/dist/services/part/part-embedding-db.service.js +122 -0
- package/dist/services/part/part-embedding-db.service.js.map +1 -0
- package/dist/services/part/part-embedding.service.d.ts +140 -0
- package/dist/services/part/part-embedding.service.d.ts.map +1 -0
- package/dist/services/part/part-embedding.service.js +276 -0
- package/dist/services/part/part-embedding.service.js.map +1 -0
- package/dist/services/part/part-extraction.service.d.ts +75 -0
- package/dist/services/part/part-extraction.service.d.ts.map +1 -0
- package/dist/services/part/part-extraction.service.js +519 -0
- package/dist/services/part/part-extraction.service.js.map +1 -0
- package/dist/services/part/part-search.service.d.ts +180 -0
- package/dist/services/part/part-search.service.d.ts.map +1 -0
- package/dist/services/part/part-search.service.js +565 -0
- package/dist/services/part/part-search.service.js.map +1 -0
- package/dist/services/part/schemas.d.ts +232 -0
- package/dist/services/part/schemas.d.ts.map +1 -0
- package/dist/services/part/schemas.js +167 -0
- package/dist/services/part/schemas.js.map +1 -0
- package/dist/services/part/section-screenshot-fallback.service.d.ts +101 -0
- package/dist/services/part/section-screenshot-fallback.service.d.ts.map +1 -0
- package/dist/services/part/section-screenshot-fallback.service.js +489 -0
- package/dist/services/part/section-screenshot-fallback.service.js.map +1 -0
- package/dist/services/part/types.d.ts +189 -0
- package/dist/services/part/types.d.ts.map +1 -0
- package/dist/services/part/types.js +139 -0
- package/dist/services/part/types.js.map +1 -0
- package/dist/services/persistent-cache.d.ts +209 -0
- package/dist/services/persistent-cache.d.ts.map +1 -0
- package/dist/services/persistent-cache.js +633 -0
- package/dist/services/persistent-cache.js.map +1 -0
- package/dist/services/preference-profile.service.d.ts +143 -0
- package/dist/services/preference-profile.service.d.ts.map +1 -0
- package/dist/services/preference-profile.service.js +604 -0
- package/dist/services/preference-profile.service.js.map +1 -0
- package/dist/services/preference-rerank.helper.d.ts +128 -0
- package/dist/services/preference-rerank.helper.d.ts.map +1 -0
- package/dist/services/preference-rerank.helper.js +397 -0
- package/dist/services/preference-rerank.helper.js.map +1 -0
- package/dist/services/production-guard.d.ts +213 -0
- package/dist/services/production-guard.d.ts.map +1 -0
- package/dist/services/production-guard.js +357 -0
- package/dist/services/production-guard.js.map +1 -0
- package/dist/services/project-context-analyzer.d.ts +194 -0
- package/dist/services/project-context-analyzer.d.ts.map +1 -0
- package/dist/services/project-context-analyzer.js +747 -0
- package/dist/services/project-context-analyzer.js.map +1 -0
- package/dist/services/quality/axe-accessibility.service.d.ts +87 -0
- package/dist/services/quality/axe-accessibility.service.d.ts.map +1 -0
- package/dist/services/quality/axe-accessibility.service.js +188 -0
- package/dist/services/quality/axe-accessibility.service.js.map +1 -0
- package/dist/services/quality/axe-core-shared.d.ts +108 -0
- package/dist/services/quality/axe-core-shared.d.ts.map +1 -0
- package/dist/services/quality/axe-core-shared.js +136 -0
- package/dist/services/quality/axe-core-shared.js.map +1 -0
- package/dist/services/quality/benchmark.service.d.ts +178 -0
- package/dist/services/quality/benchmark.service.d.ts.map +1 -0
- package/dist/services/quality/benchmark.service.js +394 -0
- package/dist/services/quality/benchmark.service.js.map +1 -0
- package/dist/services/quality/content-gap-detector.service.d.ts +133 -0
- package/dist/services/quality/content-gap-detector.service.d.ts.map +1 -0
- package/dist/services/quality/content-gap-detector.service.js +364 -0
- package/dist/services/quality/content-gap-detector.service.js.map +1 -0
- package/dist/services/quality/index.d.ts +12 -0
- package/dist/services/quality/index.d.ts.map +1 -0
- package/dist/services/quality/index.js +12 -0
- package/dist/services/quality/index.js.map +1 -0
- package/dist/services/quality/pattern-matcher.service.d.ts +195 -0
- package/dist/services/quality/pattern-matcher.service.d.ts.map +1 -0
- package/dist/services/quality/pattern-matcher.service.js +630 -0
- package/dist/services/quality/pattern-matcher.service.js.map +1 -0
- package/dist/services/quality/playwright-axe.service.d.ts +84 -0
- package/dist/services/quality/playwright-axe.service.d.ts.map +1 -0
- package/dist/services/quality/playwright-axe.service.js +267 -0
- package/dist/services/quality/playwright-axe.service.js.map +1 -0
- package/dist/services/quality/quality-evaluate.service.interface.d.ts +216 -0
- package/dist/services/quality/quality-evaluate.service.interface.d.ts.map +1 -0
- package/dist/services/quality/quality-evaluate.service.interface.js +5 -0
- package/dist/services/quality/quality-evaluate.service.interface.js.map +1 -0
- package/dist/services/quality/visual-design-analyzer.service.d.ts +72 -0
- package/dist/services/quality/visual-design-analyzer.service.d.ts.map +1 -0
- package/dist/services/quality/visual-design-analyzer.service.js +762 -0
- package/dist/services/quality/visual-design-analyzer.service.js.map +1 -0
- package/dist/services/quality-evaluate-service-export.d.ts +122 -0
- package/dist/services/quality-evaluate-service-export.d.ts.map +1 -0
- package/dist/services/quality-evaluate-service-export.js +138 -0
- package/dist/services/quality-evaluate-service-export.js.map +1 -0
- package/dist/services/quality-search.service.d.ts +20 -0
- package/dist/services/quality-search.service.d.ts.map +1 -0
- package/dist/services/quality-search.service.js +260 -0
- package/dist/services/quality-search.service.js.map +1 -0
- package/dist/services/query-analyzer.d.ts +107 -0
- package/dist/services/query-analyzer.d.ts.map +1 -0
- package/dist/services/query-analyzer.js +222 -0
- package/dist/services/query-analyzer.js.map +1 -0
- package/dist/services/query-context-analyzer.d.ts +85 -0
- package/dist/services/query-context-analyzer.d.ts.map +1 -0
- package/dist/services/query-context-analyzer.js +728 -0
- package/dist/services/query-context-analyzer.js.map +1 -0
- package/dist/services/queue-cleanup.service.d.ts +102 -0
- package/dist/services/queue-cleanup.service.d.ts.map +1 -0
- package/dist/services/queue-cleanup.service.js +259 -0
- package/dist/services/queue-cleanup.service.js.map +1 -0
- package/dist/services/responsive/difference-detector.service.d.ts +77 -0
- package/dist/services/responsive/difference-detector.service.d.ts.map +1 -0
- package/dist/services/responsive/difference-detector.service.js +525 -0
- package/dist/services/responsive/difference-detector.service.js.map +1 -0
- package/dist/services/responsive/index.d.ts +16 -0
- package/dist/services/responsive/index.d.ts.map +1 -0
- package/dist/services/responsive/index.js +60 -0
- package/dist/services/responsive/index.js.map +1 -0
- package/dist/services/responsive/multi-viewport-capture.service.d.ts +103 -0
- package/dist/services/responsive/multi-viewport-capture.service.d.ts.map +1 -0
- package/dist/services/responsive/multi-viewport-capture.service.js +841 -0
- package/dist/services/responsive/multi-viewport-capture.service.js.map +1 -0
- package/dist/services/responsive/responsive-analysis-embedding.service.d.ts +114 -0
- package/dist/services/responsive/responsive-analysis-embedding.service.d.ts.map +1 -0
- package/dist/services/responsive/responsive-analysis-embedding.service.js +232 -0
- package/dist/services/responsive/responsive-analysis-embedding.service.js.map +1 -0
- package/dist/services/responsive/responsive-analysis.service.d.ts +37 -0
- package/dist/services/responsive/responsive-analysis.service.d.ts.map +1 -0
- package/dist/services/responsive/responsive-analysis.service.js +262 -0
- package/dist/services/responsive/responsive-analysis.service.js.map +1 -0
- package/dist/services/responsive/responsive-persistence.service.d.ts +45 -0
- package/dist/services/responsive/responsive-persistence.service.d.ts.map +1 -0
- package/dist/services/responsive/responsive-persistence.service.js +102 -0
- package/dist/services/responsive/responsive-persistence.service.js.map +1 -0
- package/dist/services/responsive/responsive-quality-evaluator.service.d.ts +80 -0
- package/dist/services/responsive/responsive-quality-evaluator.service.d.ts.map +1 -0
- package/dist/services/responsive/responsive-quality-evaluator.service.js +448 -0
- package/dist/services/responsive/responsive-quality-evaluator.service.js.map +1 -0
- package/dist/services/responsive/shared-browser-manager.d.ts +65 -0
- package/dist/services/responsive/shared-browser-manager.d.ts.map +1 -0
- package/dist/services/responsive/shared-browser-manager.js +112 -0
- package/dist/services/responsive/shared-browser-manager.js.map +1 -0
- package/dist/services/responsive/types.d.ts +367 -0
- package/dist/services/responsive/types.d.ts.map +1 -0
- package/dist/services/responsive/types.js +5 -0
- package/dist/services/responsive/types.js.map +1 -0
- package/dist/services/responsive/viewport-diff.service.d.ts +49 -0
- package/dist/services/responsive/viewport-diff.service.d.ts.map +1 -0
- package/dist/services/responsive/viewport-diff.service.js +178 -0
- package/dist/services/responsive/viewport-diff.service.js.map +1 -0
- package/dist/services/responsive-search.service.d.ts +52 -0
- package/dist/services/responsive-search.service.d.ts.map +1 -0
- package/dist/services/responsive-search.service.js +136 -0
- package/dist/services/responsive-search.service.js.map +1 -0
- package/dist/services/search/mood-brandtone-search.service.d.ts +99 -0
- package/dist/services/search/mood-brandtone-search.service.d.ts.map +1 -0
- package/dist/services/search/mood-brandtone-search.service.js +310 -0
- package/dist/services/search/mood-brandtone-search.service.js.map +1 -0
- package/dist/services/search-performance.service.d.ts +118 -0
- package/dist/services/search-performance.service.d.ts.map +1 -0
- package/dist/services/search-performance.service.js +181 -0
- package/dist/services/search-performance.service.js.map +1 -0
- package/dist/services/section-screenshot.service.d.ts +163 -0
- package/dist/services/section-screenshot.service.d.ts.map +1 -0
- package/dist/services/section-screenshot.service.js +363 -0
- package/dist/services/section-screenshot.service.js.map +1 -0
- package/dist/services/service-client.d.ts +181 -0
- package/dist/services/service-client.d.ts.map +1 -0
- package/dist/services/service-client.js +450 -0
- package/dist/services/service-client.js.map +1 -0
- package/dist/services/service-initializer.d.ts +174 -0
- package/dist/services/service-initializer.d.ts.map +1 -0
- package/dist/services/service-initializer.js +942 -0
- package/dist/services/service-initializer.js.map +1 -0
- package/dist/services/storage/index.d.ts +7 -0
- package/dist/services/storage/index.d.ts.map +1 -0
- package/dist/services/storage/index.js +14 -0
- package/dist/services/storage/index.js.map +1 -0
- package/dist/services/storage/local-storage.provider.d.ts +140 -0
- package/dist/services/storage/local-storage.provider.d.ts.map +1 -0
- package/dist/services/storage/local-storage.provider.js +333 -0
- package/dist/services/storage/local-storage.provider.js.map +1 -0
- package/dist/services/style/index.d.ts +7 -0
- package/dist/services/style/index.d.ts.map +1 -0
- package/dist/services/style/index.js +25 -0
- package/dist/services/style/index.js.map +1 -0
- package/dist/services/style/palette-service.d.ts +212 -0
- package/dist/services/style/palette-service.d.ts.map +1 -0
- package/dist/services/style/palette-service.js +423 -0
- package/dist/services/style/palette-service.js.map +1 -0
- package/dist/services/style/prisma-palette-repository.d.ts +35 -0
- package/dist/services/style/prisma-palette-repository.d.ts.map +1 -0
- package/dist/services/style/prisma-palette-repository.js +165 -0
- package/dist/services/style/prisma-palette-repository.js.map +1 -0
- package/dist/services/vision/brandtone.analyzer.d.ts +104 -0
- package/dist/services/vision/brandtone.analyzer.d.ts.map +1 -0
- package/dist/services/vision/brandtone.analyzer.js +279 -0
- package/dist/services/vision/brandtone.analyzer.js.map +1 -0
- package/dist/services/vision/hardware-detector.d.ts +166 -0
- package/dist/services/vision/hardware-detector.d.ts.map +1 -0
- package/dist/services/vision/hardware-detector.js +330 -0
- package/dist/services/vision/hardware-detector.js.map +1 -0
- package/dist/services/vision/image-optimizer.d.ts +152 -0
- package/dist/services/vision/image-optimizer.d.ts.map +1 -0
- package/dist/services/vision/image-optimizer.js +266 -0
- package/dist/services/vision/image-optimizer.js.map +1 -0
- package/dist/services/vision/index.d.ts +26 -0
- package/dist/services/vision/index.d.ts.map +1 -0
- package/dist/services/vision/index.js +80 -0
- package/dist/services/vision/index.js.map +1 -0
- package/dist/services/vision/llama-vision-adapter.d.ts +178 -0
- package/dist/services/vision/llama-vision-adapter.d.ts.map +1 -0
- package/dist/services/vision/llama-vision-adapter.js +307 -0
- package/dist/services/vision/llama-vision-adapter.js.map +1 -0
- package/dist/services/vision/mcp-progress-adapter.d.ts +128 -0
- package/dist/services/vision/mcp-progress-adapter.d.ts.map +1 -0
- package/dist/services/vision/mcp-progress-adapter.js +150 -0
- package/dist/services/vision/mcp-progress-adapter.js.map +1 -0
- package/dist/services/vision/mood.analyzer.d.ts +74 -0
- package/dist/services/vision/mood.analyzer.d.ts.map +1 -0
- package/dist/services/vision/mood.analyzer.js +258 -0
- package/dist/services/vision/mood.analyzer.js.map +1 -0
- package/dist/services/vision/ollama-readiness-probe.d.ts +87 -0
- package/dist/services/vision/ollama-readiness-probe.d.ts.map +1 -0
- package/dist/services/vision/ollama-readiness-probe.js +211 -0
- package/dist/services/vision/ollama-readiness-probe.js.map +1 -0
- package/dist/services/vision/ollama-vision-client.d.ts +129 -0
- package/dist/services/vision/ollama-vision-client.d.ts.map +1 -0
- package/dist/services/vision/ollama-vision-client.js +478 -0
- package/dist/services/vision/ollama-vision-client.js.map +1 -0
- package/dist/services/vision/progress-reporter.d.ts +140 -0
- package/dist/services/vision/progress-reporter.d.ts.map +1 -0
- package/dist/services/vision/progress-reporter.js +306 -0
- package/dist/services/vision/progress-reporter.js.map +1 -0
- package/dist/services/vision/scroll-vision-capture.service.d.ts +117 -0
- package/dist/services/vision/scroll-vision-capture.service.d.ts.map +1 -0
- package/dist/services/vision/scroll-vision-capture.service.js +266 -0
- package/dist/services/vision/scroll-vision-capture.service.js.map +1 -0
- package/dist/services/vision/scroll-vision-persistence.service.d.ts +48 -0
- package/dist/services/vision/scroll-vision-persistence.service.d.ts.map +1 -0
- package/dist/services/vision/scroll-vision-persistence.service.js +161 -0
- package/dist/services/vision/scroll-vision-persistence.service.js.map +1 -0
- package/dist/services/vision/scroll-vision.analyzer.d.ts +90 -0
- package/dist/services/vision/scroll-vision.analyzer.d.ts.map +1 -0
- package/dist/services/vision/scroll-vision.analyzer.js +280 -0
- package/dist/services/vision/scroll-vision.analyzer.js.map +1 -0
- package/dist/services/vision/theme.analyzer.d.ts +108 -0
- package/dist/services/vision/theme.analyzer.d.ts.map +1 -0
- package/dist/services/vision/theme.analyzer.js +315 -0
- package/dist/services/vision/theme.analyzer.js.map +1 -0
- package/dist/services/vision/timeout-calculator.d.ts +85 -0
- package/dist/services/vision/timeout-calculator.d.ts.map +1 -0
- package/dist/services/vision/timeout-calculator.js +142 -0
- package/dist/services/vision/timeout-calculator.js.map +1 -0
- package/dist/services/vision/vision-fallback.service.d.ts +121 -0
- package/dist/services/vision/vision-fallback.service.d.ts.map +1 -0
- package/dist/services/vision/vision-fallback.service.js +253 -0
- package/dist/services/vision/vision-fallback.service.js.map +1 -0
- package/dist/services/vision/vision.cache.d.ts +124 -0
- package/dist/services/vision/vision.cache.d.ts.map +1 -0
- package/dist/services/vision/vision.cache.js +261 -0
- package/dist/services/vision/vision.cache.js.map +1 -0
- package/dist/services/vision/vision.errors.d.ts +104 -0
- package/dist/services/vision/vision.errors.d.ts.map +1 -0
- package/dist/services/vision/vision.errors.js +133 -0
- package/dist/services/vision/vision.errors.js.map +1 -0
- package/dist/services/vision/vision.prompts.d.ts +47 -0
- package/dist/services/vision/vision.prompts.d.ts.map +1 -0
- package/dist/services/vision/vision.prompts.js +272 -0
- package/dist/services/vision/vision.prompts.js.map +1 -0
- package/dist/services/vision/vram-utils.d.ts +22 -0
- package/dist/services/vision/vram-utils.d.ts.map +1 -0
- package/dist/services/vision/vram-utils.js +57 -0
- package/dist/services/vision/vram-utils.js.map +1 -0
- package/dist/services/vision-adapter/index.d.ts +18 -0
- package/dist/services/vision-adapter/index.d.ts.map +1 -0
- package/dist/services/vision-adapter/index.js +31 -0
- package/dist/services/vision-adapter/index.js.map +1 -0
- package/dist/services/vision-adapter/interface.d.ts +1434 -0
- package/dist/services/vision-adapter/interface.d.ts.map +1 -0
- package/dist/services/vision-adapter/interface.js +326 -0
- package/dist/services/vision-adapter/interface.js.map +1 -0
- package/dist/services/vision-adapter/llama-vision.adapter.d.ts +373 -0
- package/dist/services/vision-adapter/llama-vision.adapter.d.ts.map +1 -0
- package/dist/services/vision-adapter/llama-vision.adapter.js +1751 -0
- package/dist/services/vision-adapter/llama-vision.adapter.js.map +1 -0
- package/dist/services/vision-adapter/llama-vision.prompts.d.ts +63 -0
- package/dist/services/vision-adapter/llama-vision.prompts.d.ts.map +1 -0
- package/dist/services/vision-adapter/llama-vision.prompts.js +234 -0
- package/dist/services/vision-adapter/llama-vision.prompts.js.map +1 -0
- package/dist/services/vision-adapter/llama-vision.types.d.ts +68 -0
- package/dist/services/vision-adapter/llama-vision.types.d.ts.map +1 -0
- package/dist/services/vision-adapter/llama-vision.types.js +21 -0
- package/dist/services/vision-adapter/llama-vision.types.js.map +1 -0
- package/dist/services/vision-adapter/local.adapter.d.ts +185 -0
- package/dist/services/vision-adapter/local.adapter.d.ts.map +1 -0
- package/dist/services/vision-adapter/local.adapter.js +835 -0
- package/dist/services/vision-adapter/local.adapter.js.map +1 -0
- package/dist/services/vision-adapter/mock.adapter.d.ts +174 -0
- package/dist/services/vision-adapter/mock.adapter.d.ts.map +1 -0
- package/dist/services/vision-adapter/mock.adapter.js +812 -0
- package/dist/services/vision-adapter/mock.adapter.js.map +1 -0
- package/dist/services/vision-embedding-search.service.d.ts +205 -0
- package/dist/services/vision-embedding-search.service.d.ts.map +1 -0
- package/dist/services/vision-embedding-search.service.js +742 -0
- package/dist/services/vision-embedding-search.service.js.map +1 -0
- package/dist/services/vision-embedding.service.d.ts +150 -0
- package/dist/services/vision-embedding.service.d.ts.map +1 -0
- package/dist/services/vision-embedding.service.js +461 -0
- package/dist/services/vision-embedding.service.js.map +1 -0
- package/dist/services/visual/css-variable-extractor.service.d.ts +97 -0
- package/dist/services/visual/css-variable-extractor.service.d.ts.map +1 -0
- package/dist/services/visual/css-variable-extractor.service.js +460 -0
- package/dist/services/visual/css-variable-extractor.service.js.map +1 -0
- package/dist/services/visual/typography-extractor.service.d.ts +137 -0
- package/dist/services/visual/typography-extractor.service.d.ts.map +1 -0
- package/dist/services/visual/typography-extractor.service.js +539 -0
- package/dist/services/visual/typography-extractor.service.js.map +1 -0
- package/dist/services/visual-extractor/color-extractor.service.d.ts +55 -0
- package/dist/services/visual-extractor/color-extractor.service.d.ts.map +1 -0
- package/dist/services/visual-extractor/color-extractor.service.js +281 -0
- package/dist/services/visual-extractor/color-extractor.service.js.map +1 -0
- package/dist/services/visual-extractor/density-calculator.service.d.ts +85 -0
- package/dist/services/visual-extractor/density-calculator.service.d.ts.map +1 -0
- package/dist/services/visual-extractor/density-calculator.service.js +369 -0
- package/dist/services/visual-extractor/density-calculator.service.js.map +1 -0
- package/dist/services/visual-extractor/gradient-detector.service.d.ts +134 -0
- package/dist/services/visual-extractor/gradient-detector.service.d.ts.map +1 -0
- package/dist/services/visual-extractor/gradient-detector.service.js +1172 -0
- package/dist/services/visual-extractor/gradient-detector.service.js.map +1 -0
- package/dist/services/visual-extractor/image-utils.d.ts +135 -0
- package/dist/services/visual-extractor/image-utils.d.ts.map +1 -0
- package/dist/services/visual-extractor/image-utils.js +305 -0
- package/dist/services/visual-extractor/image-utils.js.map +1 -0
- package/dist/services/visual-extractor/pixel-theme-detector.service.d.ts +58 -0
- package/dist/services/visual-extractor/pixel-theme-detector.service.d.ts.map +1 -0
- package/dist/services/visual-extractor/pixel-theme-detector.service.js +358 -0
- package/dist/services/visual-extractor/pixel-theme-detector.service.js.map +1 -0
- package/dist/services/visual-extractor/theme-detector.service.d.ts +101 -0
- package/dist/services/visual-extractor/theme-detector.service.d.ts.map +1 -0
- package/dist/services/visual-extractor/theme-detector.service.js +463 -0
- package/dist/services/visual-extractor/theme-detector.service.js.map +1 -0
- package/dist/services/visual-extractor/visual-decoration-detector.service.d.ts +43 -0
- package/dist/services/visual-extractor/visual-decoration-detector.service.d.ts.map +1 -0
- package/dist/services/visual-extractor/visual-decoration-detector.service.js +628 -0
- package/dist/services/visual-extractor/visual-decoration-detector.service.js.map +1 -0
- package/dist/services/visual-extractor/visual-feature-merger.service.d.ts +230 -0
- package/dist/services/visual-extractor/visual-feature-merger.service.d.ts.map +1 -0
- package/dist/services/visual-extractor/visual-feature-merger.service.js +482 -0
- package/dist/services/visual-extractor/visual-feature-merger.service.js.map +1 -0
- package/dist/services/web-page.service.d.ts +80 -0
- package/dist/services/web-page.service.d.ts.map +1 -0
- package/dist/services/web-page.service.js +211 -0
- package/dist/services/web-page.service.js.map +1 -0
- package/dist/services/worker-constants.d.ts +40 -0
- package/dist/services/worker-constants.d.ts.map +1 -0
- package/dist/services/worker-constants.js +51 -0
- package/dist/services/worker-constants.js.map +1 -0
- package/dist/services/worker-db-save.service.d.ts +311 -0
- package/dist/services/worker-db-save.service.d.ts.map +1 -0
- package/dist/services/worker-db-save.service.js +771 -0
- package/dist/services/worker-db-save.service.js.map +1 -0
- package/dist/services/worker-memory-monitor.service.d.ts +24 -0
- package/dist/services/worker-memory-monitor.service.d.ts.map +1 -0
- package/dist/services/worker-memory-monitor.service.js +105 -0
- package/dist/services/worker-memory-monitor.service.js.map +1 -0
- package/dist/services/worker-memory-profile.d.ts +65 -0
- package/dist/services/worker-memory-profile.d.ts.map +1 -0
- package/dist/services/worker-memory-profile.js +225 -0
- package/dist/services/worker-memory-profile.js.map +1 -0
- package/dist/services/worker-stall-recovery.service.d.ts +166 -0
- package/dist/services/worker-stall-recovery.service.d.ts.map +1 -0
- package/dist/services/worker-stall-recovery.service.js +335 -0
- package/dist/services/worker-stall-recovery.service.js.map +1 -0
- package/dist/services/worker-supervisor.service.d.ts +145 -0
- package/dist/services/worker-supervisor.service.d.ts.map +1 -0
- package/dist/services/worker-supervisor.service.js +635 -0
- package/dist/services/worker-supervisor.service.js.map +1 -0
- package/dist/tools/background/schemas.d.ts +85 -0
- package/dist/tools/background/schemas.d.ts.map +1 -0
- package/dist/tools/background/schemas.js +79 -0
- package/dist/tools/background/schemas.js.map +1 -0
- package/dist/tools/background/search.tool.d.ts +179 -0
- package/dist/tools/background/search.tool.d.ts.map +1 -0
- package/dist/tools/background/search.tool.js +318 -0
- package/dist/tools/background/search.tool.js.map +1 -0
- package/dist/tools/brief/index.d.ts +10 -0
- package/dist/tools/brief/index.d.ts.map +1 -0
- package/dist/tools/brief/index.js +54 -0
- package/dist/tools/brief/index.js.map +1 -0
- package/dist/tools/brief/schemas.d.ts +750 -0
- package/dist/tools/brief/schemas.d.ts.map +1 -0
- package/dist/tools/brief/schemas.js +212 -0
- package/dist/tools/brief/schemas.js.map +1 -0
- package/dist/tools/brief/validate.handler.d.ts +149 -0
- package/dist/tools/brief/validate.handler.d.ts.map +1 -0
- package/dist/tools/brief/validate.handler.js +247 -0
- package/dist/tools/brief/validate.handler.js.map +1 -0
- package/dist/tools/brief/validate.service.d.ts +100 -0
- package/dist/tools/brief/validate.service.d.ts.map +1 -0
- package/dist/tools/brief/validate.service.js +296 -0
- package/dist/tools/brief/validate.service.js.map +1 -0
- package/dist/tools/common/error-codes.d.ts +35 -0
- package/dist/tools/common/error-codes.d.ts.map +1 -0
- package/dist/tools/common/error-codes.js +92 -0
- package/dist/tools/common/error-codes.js.map +1 -0
- package/dist/tools/common/index.d.ts +7 -0
- package/dist/tools/common/index.d.ts.map +1 -0
- package/dist/tools/common/index.js +20 -0
- package/dist/tools/common/index.js.map +1 -0
- package/dist/tools/index.d.ts +2756 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +506 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/layout/batch-ingest.tool.d.ts +82 -0
- package/dist/tools/layout/batch-ingest.tool.d.ts.map +1 -0
- package/dist/tools/layout/batch-ingest.tool.js +410 -0
- package/dist/tools/layout/batch-ingest.tool.js.map +1 -0
- package/dist/tools/layout/index.d.ts +13 -0
- package/dist/tools/layout/index.d.ts.map +1 -0
- package/dist/tools/layout/index.js +62 -0
- package/dist/tools/layout/index.js.map +1 -0
- package/dist/tools/layout/ingest.tool.d.ts +338 -0
- package/dist/tools/layout/ingest.tool.d.ts.map +1 -0
- package/dist/tools/layout/ingest.tool.js +1308 -0
- package/dist/tools/layout/ingest.tool.js.map +1 -0
- package/dist/tools/layout/inspect/index.d.ts +11 -0
- package/dist/tools/layout/inspect/index.d.ts.map +1 -0
- package/dist/tools/layout/inspect/index.js +55 -0
- package/dist/tools/layout/inspect/index.js.map +1 -0
- package/dist/tools/layout/inspect/inspect.schemas.d.ts +4130 -0
- package/dist/tools/layout/inspect/inspect.schemas.d.ts.map +1 -0
- package/dist/tools/layout/inspect/inspect.schemas.js +400 -0
- package/dist/tools/layout/inspect/inspect.schemas.js.map +1 -0
- package/dist/tools/layout/inspect/inspect.tool.d.ts +164 -0
- package/dist/tools/layout/inspect/inspect.tool.d.ts.map +1 -0
- package/dist/tools/layout/inspect/inspect.tool.js +738 -0
- package/dist/tools/layout/inspect/inspect.tool.js.map +1 -0
- package/dist/tools/layout/inspect/inspect.utils.d.ts +200 -0
- package/dist/tools/layout/inspect/inspect.utils.d.ts.map +1 -0
- package/dist/tools/layout/inspect/inspect.utils.js +1104 -0
- package/dist/tools/layout/inspect/inspect.utils.js.map +1 -0
- package/dist/tools/layout/inspect/visual-extractors.schemas.d.ts +3372 -0
- package/dist/tools/layout/inspect/visual-extractors.schemas.d.ts.map +1 -0
- package/dist/tools/layout/inspect/visual-extractors.schemas.js +558 -0
- package/dist/tools/layout/inspect/visual-extractors.schemas.js.map +1 -0
- package/dist/tools/layout/inspect/visual-extractors.utils.d.ts +86 -0
- package/dist/tools/layout/inspect/visual-extractors.utils.d.ts.map +1 -0
- package/dist/tools/layout/inspect/visual-extractors.utils.js +231 -0
- package/dist/tools/layout/inspect/visual-extractors.utils.js.map +1 -0
- package/dist/tools/layout/schemas.d.ts +11074 -0
- package/dist/tools/layout/schemas.d.ts.map +1 -0
- package/dist/tools/layout/schemas.js +1497 -0
- package/dist/tools/layout/schemas.js.map +1 -0
- package/dist/tools/layout/search.tool.d.ts +470 -0
- package/dist/tools/layout/search.tool.d.ts.map +1 -0
- package/dist/tools/layout/search.tool.js +1582 -0
- package/dist/tools/layout/search.tool.js.map +1 -0
- package/dist/tools/layout/to-code.tool.d.ts +280 -0
- package/dist/tools/layout/to-code.tool.d.ts.map +1 -0
- package/dist/tools/layout/to-code.tool.js +317 -0
- package/dist/tools/layout/to-code.tool.js.map +1 -0
- package/dist/tools/motion/analyze-frames.handler.d.ts +157 -0
- package/dist/tools/motion/analyze-frames.handler.d.ts.map +1 -0
- package/dist/tools/motion/analyze-frames.handler.js +263 -0
- package/dist/tools/motion/analyze-frames.handler.js.map +1 -0
- package/dist/tools/motion/analyze-frames.schema.d.ts +4599 -0
- package/dist/tools/motion/analyze-frames.schema.d.ts.map +1 -0
- package/dist/tools/motion/analyze-frames.schema.js +420 -0
- package/dist/tools/motion/analyze-frames.schema.js.map +1 -0
- package/dist/tools/motion/css-mode-handler.d.ts +70 -0
- package/dist/tools/motion/css-mode-handler.d.ts.map +1 -0
- package/dist/tools/motion/css-mode-handler.js +754 -0
- package/dist/tools/motion/css-mode-handler.js.map +1 -0
- package/dist/tools/motion/detect.schemas.d.ts +14288 -0
- package/dist/tools/motion/detect.schemas.d.ts.map +1 -0
- package/dist/tools/motion/detect.schemas.js +1715 -0
- package/dist/tools/motion/detect.schemas.js.map +1 -0
- package/dist/tools/motion/detect.tool.d.ts +195 -0
- package/dist/tools/motion/detect.tool.d.ts.map +1 -0
- package/dist/tools/motion/detect.tool.js +1421 -0
- package/dist/tools/motion/detect.tool.js.map +1 -0
- package/dist/tools/motion/detection-modes.d.ts +72 -0
- package/dist/tools/motion/detection-modes.d.ts.map +1 -0
- package/dist/tools/motion/detection-modes.js +353 -0
- package/dist/tools/motion/detection-modes.js.map +1 -0
- package/dist/tools/motion/di-factories.d.ts +341 -0
- package/dist/tools/motion/di-factories.d.ts.map +1 -0
- package/dist/tools/motion/di-factories.js +376 -0
- package/dist/tools/motion/di-factories.js.map +1 -0
- package/dist/tools/motion/index.d.ts +12 -0
- package/dist/tools/motion/index.d.ts.map +1 -0
- package/dist/tools/motion/index.js +146 -0
- package/dist/tools/motion/index.js.map +1 -0
- package/dist/tools/motion/pattern-converter.d.ts +49 -0
- package/dist/tools/motion/pattern-converter.d.ts.map +1 -0
- package/dist/tools/motion/pattern-converter.js +493 -0
- package/dist/tools/motion/pattern-converter.js.map +1 -0
- package/dist/tools/motion/schemas.d.ts +10 -0
- package/dist/tools/motion/schemas.d.ts.map +1 -0
- package/dist/tools/motion/schemas.js +28 -0
- package/dist/tools/motion/schemas.js.map +1 -0
- package/dist/tools/motion/search.schemas.d.ts +7500 -0
- package/dist/tools/motion/search.schemas.d.ts.map +1 -0
- package/dist/tools/motion/search.schemas.js +596 -0
- package/dist/tools/motion/search.schemas.js.map +1 -0
- package/dist/tools/motion/search.tool.d.ts +416 -0
- package/dist/tools/motion/search.tool.d.ts.map +1 -0
- package/dist/tools/motion/search.tool.js +2088 -0
- package/dist/tools/motion/search.tool.js.map +1 -0
- package/dist/tools/motion/shared.schemas.d.ts +994 -0
- package/dist/tools/motion/shared.schemas.d.ts.map +1 -0
- package/dist/tools/motion/shared.schemas.js +354 -0
- package/dist/tools/motion/shared.schemas.js.map +1 -0
- package/dist/tools/narrative/analyze.tool.d.ts +96 -0
- package/dist/tools/narrative/analyze.tool.d.ts.map +1 -0
- package/dist/tools/narrative/analyze.tool.js +396 -0
- package/dist/tools/narrative/analyze.tool.js.map +1 -0
- package/dist/tools/narrative/index.d.ts +15 -0
- package/dist/tools/narrative/index.d.ts.map +1 -0
- package/dist/tools/narrative/index.js +83 -0
- package/dist/tools/narrative/index.js.map +1 -0
- package/dist/tools/narrative/schemas.d.ts +5553 -0
- package/dist/tools/narrative/schemas.d.ts.map +1 -0
- package/dist/tools/narrative/schemas.js +747 -0
- package/dist/tools/narrative/schemas.js.map +1 -0
- package/dist/tools/narrative/search.tool.d.ts +160 -0
- package/dist/tools/narrative/search.tool.d.ts.map +1 -0
- package/dist/tools/narrative/search.tool.js +434 -0
- package/dist/tools/narrative/search.tool.js.map +1 -0
- package/dist/tools/page/analyze.tool.d.ts +502 -0
- package/dist/tools/page/analyze.tool.d.ts.map +1 -0
- package/dist/tools/page/analyze.tool.js +875 -0
- package/dist/tools/page/analyze.tool.js.map +1 -0
- package/dist/tools/page/get-job-status.tool.d.ts +43 -0
- package/dist/tools/page/get-job-status.tool.d.ts.map +1 -0
- package/dist/tools/page/get-job-status.tool.js +178 -0
- package/dist/tools/page/get-job-status.tool.js.map +1 -0
- package/dist/tools/page/handlers/db-handler.d.ts +155 -0
- package/dist/tools/page/handlers/db-handler.d.ts.map +1 -0
- package/dist/tools/page/handlers/db-handler.js +368 -0
- package/dist/tools/page/handlers/db-handler.js.map +1 -0
- package/dist/tools/page/handlers/embedding-handler.d.ts +200 -0
- package/dist/tools/page/handlers/embedding-handler.d.ts.map +1 -0
- package/dist/tools/page/handlers/embedding-handler.js +541 -0
- package/dist/tools/page/handlers/embedding-handler.js.map +1 -0
- package/dist/tools/page/handlers/execution-status-tracker.d.ts +146 -0
- package/dist/tools/page/handlers/execution-status-tracker.d.ts.map +1 -0
- package/dist/tools/page/handlers/execution-status-tracker.js +348 -0
- package/dist/tools/page/handlers/execution-status-tracker.js.map +1 -0
- package/dist/tools/page/handlers/js-animation-handler.d.ts +197 -0
- package/dist/tools/page/handlers/js-animation-handler.d.ts.map +1 -0
- package/dist/tools/page/handlers/js-animation-handler.js +952 -0
- package/dist/tools/page/handlers/js-animation-handler.js.map +1 -0
- package/dist/tools/page/handlers/layout-handler.d.ts +31 -0
- package/dist/tools/page/handlers/layout-handler.d.ts.map +1 -0
- package/dist/tools/page/handlers/layout-handler.js +1181 -0
- package/dist/tools/page/handlers/layout-handler.js.map +1 -0
- package/dist/tools/page/handlers/motion-handler.d.ts +31 -0
- package/dist/tools/page/handlers/motion-handler.d.ts.map +1 -0
- package/dist/tools/page/handlers/motion-handler.js +940 -0
- package/dist/tools/page/handlers/motion-handler.js.map +1 -0
- package/dist/tools/page/handlers/narrative-handler.d.ts +23 -0
- package/dist/tools/page/handlers/narrative-handler.d.ts.map +1 -0
- package/dist/tools/page/handlers/narrative-handler.js +279 -0
- package/dist/tools/page/handlers/narrative-handler.js.map +1 -0
- package/dist/tools/page/handlers/phased-db-handler.d.ts +83 -0
- package/dist/tools/page/handlers/phased-db-handler.d.ts.map +1 -0
- package/dist/tools/page/handlers/phased-db-handler.js +120 -0
- package/dist/tools/page/handlers/phased-db-handler.js.map +1 -0
- package/dist/tools/page/handlers/phased-executor.d.ts +123 -0
- package/dist/tools/page/handlers/phased-executor.d.ts.map +1 -0
- package/dist/tools/page/handlers/phased-executor.js +205 -0
- package/dist/tools/page/handlers/phased-executor.js.map +1 -0
- package/dist/tools/page/handlers/quality-handler.d.ts +9 -0
- package/dist/tools/page/handlers/quality-handler.d.ts.map +1 -0
- package/dist/tools/page/handlers/quality-handler.js +100 -0
- package/dist/tools/page/handlers/quality-handler.js.map +1 -0
- package/dist/tools/page/handlers/result-builder.d.ts +105 -0
- package/dist/tools/page/handlers/result-builder.d.ts.map +1 -0
- package/dist/tools/page/handlers/result-builder.js +447 -0
- package/dist/tools/page/handlers/result-builder.js.map +1 -0
- package/dist/tools/page/handlers/retry-strategy.d.ts +106 -0
- package/dist/tools/page/handlers/retry-strategy.d.ts.map +1 -0
- package/dist/tools/page/handlers/retry-strategy.js +169 -0
- package/dist/tools/page/handlers/retry-strategy.js.map +1 -0
- package/dist/tools/page/handlers/sync-processing.d.ts +26 -0
- package/dist/tools/page/handlers/sync-processing.d.ts.map +1 -0
- package/dist/tools/page/handlers/sync-processing.js +1659 -0
- package/dist/tools/page/handlers/sync-processing.js.map +1 -0
- package/dist/tools/page/handlers/timeout-utils.d.ts +278 -0
- package/dist/tools/page/handlers/timeout-utils.d.ts.map +1 -0
- package/dist/tools/page/handlers/timeout-utils.js +600 -0
- package/dist/tools/page/handlers/timeout-utils.js.map +1 -0
- package/dist/tools/page/handlers/types.d.ts +1229 -0
- package/dist/tools/page/handlers/types.d.ts.map +1 -0
- package/dist/tools/page/handlers/types.js +21 -0
- package/dist/tools/page/handlers/types.js.map +1 -0
- package/dist/tools/page/handlers/video-handler.d.ts +11 -0
- package/dist/tools/page/handlers/video-handler.d.ts.map +1 -0
- package/dist/tools/page/handlers/video-handler.js +235 -0
- package/dist/tools/page/handlers/video-handler.js.map +1 -0
- package/dist/tools/page/handlers/webgl-animation-handler.d.ts +48 -0
- package/dist/tools/page/handlers/webgl-animation-handler.d.ts.map +1 -0
- package/dist/tools/page/handlers/webgl-animation-handler.js +237 -0
- package/dist/tools/page/handlers/webgl-animation-handler.js.map +1 -0
- package/dist/tools/page/handlers/webgl-detector.d.ts +184 -0
- package/dist/tools/page/handlers/webgl-detector.d.ts.map +1 -0
- package/dist/tools/page/handlers/webgl-detector.js +680 -0
- package/dist/tools/page/handlers/webgl-detector.js.map +1 -0
- package/dist/tools/page/handlers/webgl-domains.d.ts +133 -0
- package/dist/tools/page/handlers/webgl-domains.d.ts.map +1 -0
- package/dist/tools/page/handlers/webgl-domains.js +420 -0
- package/dist/tools/page/handlers/webgl-domains.js.map +1 -0
- package/dist/tools/page/handlers/webgl-pre-detector.d.ts +100 -0
- package/dist/tools/page/handlers/webgl-pre-detector.d.ts.map +1 -0
- package/dist/tools/page/handlers/webgl-pre-detector.js +248 -0
- package/dist/tools/page/handlers/webgl-pre-detector.js.map +1 -0
- package/dist/tools/page/index.d.ts +10 -0
- package/dist/tools/page/index.d.ts.map +1 -0
- package/dist/tools/page/index.js +84 -0
- package/dist/tools/page/index.js.map +1 -0
- package/dist/tools/page/input.schemas.d.ts +2223 -0
- package/dist/tools/page/input.schemas.d.ts.map +1 -0
- package/dist/tools/page/input.schemas.js +853 -0
- package/dist/tools/page/input.schemas.js.map +1 -0
- package/dist/tools/page/output.schemas.d.ts +26026 -0
- package/dist/tools/page/output.schemas.d.ts.map +1 -0
- package/dist/tools/page/output.schemas.js +1414 -0
- package/dist/tools/page/output.schemas.js.map +1 -0
- package/dist/tools/page/schemas.d.ts +10 -0
- package/dist/tools/page/schemas.d.ts.map +1 -0
- package/dist/tools/page/schemas.js +28 -0
- package/dist/tools/page/schemas.js.map +1 -0
- package/dist/tools/page/shared.schemas.d.ts +38 -0
- package/dist/tools/page/shared.schemas.d.ts.map +1 -0
- package/dist/tools/page/shared.schemas.js +69 -0
- package/dist/tools/page/shared.schemas.js.map +1 -0
- package/dist/tools/part/compare.tool.d.ts +106 -0
- package/dist/tools/part/compare.tool.d.ts.map +1 -0
- package/dist/tools/part/compare.tool.js +421 -0
- package/dist/tools/part/compare.tool.js.map +1 -0
- package/dist/tools/part/inspect.tool.d.ts +108 -0
- package/dist/tools/part/inspect.tool.d.ts.map +1 -0
- package/dist/tools/part/inspect.tool.js +279 -0
- package/dist/tools/part/inspect.tool.js.map +1 -0
- package/dist/tools/part/search.tool.d.ts +121 -0
- package/dist/tools/part/search.tool.d.ts.map +1 -0
- package/dist/tools/part/search.tool.js +381 -0
- package/dist/tools/part/search.tool.js.map +1 -0
- package/dist/tools/preference/get.tool.d.ts +74 -0
- package/dist/tools/preference/get.tool.d.ts.map +1 -0
- package/dist/tools/preference/get.tool.js +175 -0
- package/dist/tools/preference/get.tool.js.map +1 -0
- package/dist/tools/preference/hear.tool.d.ts +267 -0
- package/dist/tools/preference/hear.tool.d.ts.map +1 -0
- package/dist/tools/preference/hear.tool.js +268 -0
- package/dist/tools/preference/hear.tool.js.map +1 -0
- package/dist/tools/preference/index.d.ts +16 -0
- package/dist/tools/preference/index.d.ts.map +1 -0
- package/dist/tools/preference/index.js +43 -0
- package/dist/tools/preference/index.js.map +1 -0
- package/dist/tools/preference/reset.tool.d.ts +71 -0
- package/dist/tools/preference/reset.tool.d.ts.map +1 -0
- package/dist/tools/preference/reset.tool.js +205 -0
- package/dist/tools/preference/reset.tool.js.map +1 -0
- package/dist/tools/preference/schemas.d.ts +174 -0
- package/dist/tools/preference/schemas.d.ts.map +1 -0
- package/dist/tools/preference/schemas.js +142 -0
- package/dist/tools/preference/schemas.js.map +1 -0
- package/dist/tools/project-get.d.ts +42 -0
- package/dist/tools/project-get.d.ts.map +1 -0
- package/dist/tools/project-get.js +152 -0
- package/dist/tools/project-get.js.map +1 -0
- package/dist/tools/project-list.d.ts +66 -0
- package/dist/tools/project-list.d.ts.map +1 -0
- package/dist/tools/project-list.js +201 -0
- package/dist/tools/project-list.js.map +1 -0
- package/dist/tools/quality/batch-evaluate.tool.d.ts +101 -0
- package/dist/tools/quality/batch-evaluate.tool.d.ts.map +1 -0
- package/dist/tools/quality/batch-evaluate.tool.js +393 -0
- package/dist/tools/quality/batch-evaluate.tool.js.map +1 -0
- package/dist/tools/quality/evaluate-engine.d.ts +166 -0
- package/dist/tools/quality/evaluate-engine.d.ts.map +1 -0
- package/dist/tools/quality/evaluate-engine.js +1061 -0
- package/dist/tools/quality/evaluate-engine.js.map +1 -0
- package/dist/tools/quality/evaluate.tool.d.ts +286 -0
- package/dist/tools/quality/evaluate.tool.d.ts.map +1 -0
- package/dist/tools/quality/evaluate.tool.js +815 -0
- package/dist/tools/quality/evaluate.tool.js.map +1 -0
- package/dist/tools/quality/get-job-status.tool.d.ts +44 -0
- package/dist/tools/quality/get-job-status.tool.d.ts.map +1 -0
- package/dist/tools/quality/get-job-status.tool.js +291 -0
- package/dist/tools/quality/get-job-status.tool.js.map +1 -0
- package/dist/tools/quality/improvement-utils.d.ts +24 -0
- package/dist/tools/quality/improvement-utils.d.ts.map +1 -0
- package/dist/tools/quality/improvement-utils.js +307 -0
- package/dist/tools/quality/improvement-utils.js.map +1 -0
- package/dist/tools/quality/index.d.ts +11 -0
- package/dist/tools/quality/index.d.ts.map +1 -0
- package/dist/tools/quality/index.js +49 -0
- package/dist/tools/quality/index.js.map +1 -0
- package/dist/tools/quality/schemas.d.ts +14098 -0
- package/dist/tools/quality/schemas.d.ts.map +1 -0
- package/dist/tools/quality/schemas.js +950 -0
- package/dist/tools/quality/schemas.js.map +1 -0
- package/dist/tools/responsive/schemas.d.ts +156 -0
- package/dist/tools/responsive/schemas.d.ts.map +1 -0
- package/dist/tools/responsive/schemas.js +86 -0
- package/dist/tools/responsive/schemas.js.map +1 -0
- package/dist/tools/responsive/search.tool.d.ts +130 -0
- package/dist/tools/responsive/search.tool.d.ts.map +1 -0
- package/dist/tools/responsive/search.tool.js +324 -0
- package/dist/tools/responsive/search.tool.js.map +1 -0
- package/dist/tools/schemas/index.d.ts +10 -0
- package/dist/tools/schemas/index.d.ts.map +1 -0
- package/dist/tools/schemas/index.js +45 -0
- package/dist/tools/schemas/index.js.map +1 -0
- package/dist/tools/schemas/layout-schemas.d.ts +521 -0
- package/dist/tools/schemas/layout-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/layout-schemas.js +281 -0
- package/dist/tools/schemas/layout-schemas.js.map +1 -0
- package/dist/tools/schemas/project-schemas.d.ts +417 -0
- package/dist/tools/schemas/project-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/project-schemas.js +159 -0
- package/dist/tools/schemas/project-schemas.js.map +1 -0
- package/dist/tools/schemas/shared.d.ts +107 -0
- package/dist/tools/schemas/shared.d.ts.map +1 -0
- package/dist/tools/schemas/shared.js +150 -0
- package/dist/tools/schemas/shared.js.map +1 -0
- package/dist/tools/schemas/style-schemas.d.ts +114 -0
- package/dist/tools/schemas/style-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/style-schemas.js +61 -0
- package/dist/tools/schemas/style-schemas.js.map +1 -0
- package/dist/tools/style-get-palette.d.ts +136 -0
- package/dist/tools/style-get-palette.d.ts.map +1 -0
- package/dist/tools/style-get-palette.js +259 -0
- package/dist/tools/style-get-palette.js.map +1 -0
- package/dist/tools/system-health.d.ts +255 -0
- package/dist/tools/system-health.d.ts.map +1 -0
- package/dist/tools/system-health.js +463 -0
- package/dist/tools/system-health.js.map +1 -0
- package/dist/transport.d.ts +29 -0
- package/dist/transport.d.ts.map +1 -0
- package/dist/transport.js +50 -0
- package/dist/transport.js.map +1 -0
- package/dist/types/creative/index.d.ts +8 -0
- package/dist/types/creative/index.d.ts.map +1 -0
- package/dist/types/creative/index.js +5 -0
- package/dist/types/creative/index.js.map +1 -0
- package/dist/types/creative/palette.d.ts +142 -0
- package/dist/types/creative/palette.d.ts.map +1 -0
- package/dist/types/creative/palette.js +5 -0
- package/dist/types/creative/palette.js.map +1 -0
- package/dist/types/reftrix-window.d.ts +124 -0
- package/dist/types/reftrix-window.d.ts.map +1 -0
- package/dist/types/reftrix-window.js +68 -0
- package/dist/types/reftrix-window.js.map +1 -0
- package/dist/utils/actionable-warning.d.ts +170 -0
- package/dist/utils/actionable-warning.d.ts.map +1 -0
- package/dist/utils/actionable-warning.js +818 -0
- package/dist/utils/actionable-warning.js.map +1 -0
- package/dist/utils/blank-image-detector.d.ts +22 -0
- package/dist/utils/blank-image-detector.d.ts.map +1 -0
- package/dist/utils/blank-image-detector.js +133 -0
- package/dist/utils/blank-image-detector.js.map +1 -0
- package/dist/utils/color.d.ts +203 -0
- package/dist/utils/color.d.ts.map +1 -0
- package/dist/utils/color.js +442 -0
- package/dist/utils/color.js.map +1 -0
- package/dist/utils/deprecation-warning.d.ts +43 -0
- package/dist/utils/deprecation-warning.d.ts.map +1 -0
- package/dist/utils/deprecation-warning.js +112 -0
- package/dist/utils/deprecation-warning.js.map +1 -0
- package/dist/utils/error-messages.d.ts +233 -0
- package/dist/utils/error-messages.d.ts.map +1 -0
- package/dist/utils/error-messages.js +721 -0
- package/dist/utils/error-messages.js.map +1 -0
- package/dist/utils/errors.d.ts +64 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +82 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/gpu-browser-args.d.ts +27 -0
- package/dist/utils/gpu-browser-args.d.ts.map +1 -0
- package/dist/utils/gpu-browser-args.js +42 -0
- package/dist/utils/gpu-browser-args.js.map +1 -0
- package/dist/utils/html-sanitizer.d.ts +116 -0
- package/dist/utils/html-sanitizer.d.ts.map +1 -0
- package/dist/utils/html-sanitizer.js +630 -0
- package/dist/utils/html-sanitizer.js.map +1 -0
- package/dist/utils/logger.d.ts +141 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +249 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/mcp-response.d.ts +317 -0
- package/dist/utils/mcp-response.d.ts.map +1 -0
- package/dist/utils/mcp-response.js +270 -0
- package/dist/utils/mcp-response.js.map +1 -0
- package/dist/utils/path-security.d.ts +73 -0
- package/dist/utils/path-security.d.ts.map +1 -0
- package/dist/utils/path-security.js +389 -0
- package/dist/utils/path-security.js.map +1 -0
- package/dist/utils/prisma-wrapper-factory.d.ts +152 -0
- package/dist/utils/prisma-wrapper-factory.d.ts.map +1 -0
- package/dist/utils/prisma-wrapper-factory.js +124 -0
- package/dist/utils/prisma-wrapper-factory.js.map +1 -0
- package/dist/utils/safe-parse-int.d.ts +41 -0
- package/dist/utils/safe-parse-int.d.ts.map +1 -0
- package/dist/utils/safe-parse-int.js +49 -0
- package/dist/utils/safe-parse-int.js.map +1 -0
- package/dist/utils/url-normalizer.d.ts +38 -0
- package/dist/utils/url-normalizer.d.ts.map +1 -0
- package/dist/utils/url-normalizer.js +103 -0
- package/dist/utils/url-normalizer.js.map +1 -0
- package/dist/utils/url-validator.d.ts +86 -0
- package/dist/utils/url-validator.d.ts.map +1 -0
- package/dist/utils/url-validator.js +533 -0
- package/dist/utils/url-validator.js.map +1 -0
- package/dist/workers/batch-quality-worker.d.ts +87 -0
- package/dist/workers/batch-quality-worker.d.ts.map +1 -0
- package/dist/workers/batch-quality-worker.js +300 -0
- package/dist/workers/batch-quality-worker.js.map +1 -0
- package/dist/workers/page-analyze-worker.d.ts +63 -0
- package/dist/workers/page-analyze-worker.d.ts.map +1 -0
- package/dist/workers/page-analyze-worker.js +872 -0
- package/dist/workers/page-analyze-worker.js.map +1 -0
- package/dist/workers/phases/phase-0-ingest.d.ts +42 -0
- package/dist/workers/phases/phase-0-ingest.d.ts.map +1 -0
- package/dist/workers/phases/phase-0-ingest.js +197 -0
- package/dist/workers/phases/phase-0-ingest.js.map +1 -0
- package/dist/workers/phases/phase-1-layout.d.ts +63 -0
- package/dist/workers/phases/phase-1-layout.d.ts.map +1 -0
- package/dist/workers/phases/phase-1-layout.js +362 -0
- package/dist/workers/phases/phase-1-layout.js.map +1 -0
- package/dist/workers/phases/phase-2-motion.d.ts +93 -0
- package/dist/workers/phases/phase-2-motion.d.ts.map +1 -0
- package/dist/workers/phases/phase-2-motion.js +408 -0
- package/dist/workers/phases/phase-2-motion.js.map +1 -0
- package/dist/workers/phases/phase-3-quality.d.ts +61 -0
- package/dist/workers/phases/phase-3-quality.d.ts.map +1 -0
- package/dist/workers/phases/phase-3-quality.js +191 -0
- package/dist/workers/phases/phase-3-quality.js.map +1 -0
- package/dist/workers/phases/phase-4-narrative.d.ts +37 -0
- package/dist/workers/phases/phase-4-narrative.d.ts.map +1 -0
- package/dist/workers/phases/phase-4-narrative.js +309 -0
- package/dist/workers/phases/phase-4-narrative.js.map +1 -0
- package/dist/workers/phases/phase-5-embedding.d.ts +56 -0
- package/dist/workers/phases/phase-5-embedding.d.ts.map +1 -0
- package/dist/workers/phases/phase-5-embedding.js +1350 -0
- package/dist/workers/phases/phase-5-embedding.js.map +1 -0
- package/dist/workers/phases/types.d.ts +411 -0
- package/dist/workers/phases/types.d.ts.map +1 -0
- package/dist/workers/phases/types.js +540 -0
- package/dist/workers/phases/types.js.map +1 -0
- package/package.json +117 -0
- package/src/api/health.ts +372 -0
- package/src/config/index.ts +12 -0
- package/src/config/redis.ts +280 -0
- package/src/index.ts +360 -0
- package/src/lib/index.ts +9 -0
- package/src/lib/project-context.ts +109 -0
- package/src/middleware/args-type-coercion.ts +220 -0
- package/src/middleware/auth.ts +558 -0
- package/src/middleware/index.ts +56 -0
- package/src/middleware/light-response-controller.ts +723 -0
- package/src/middleware/response-size-warning.ts +196 -0
- package/src/queues/batch-quality-queue.ts +580 -0
- package/src/queues/index.ts +13 -0
- package/src/queues/page-analyze-queue.ts +472 -0
- package/src/router.ts +343 -0
- package/src/schemas/creative/index.ts +34 -0
- package/src/schemas/creative/palette.schema.ts +191 -0
- package/src/schemas/mood-brandtone-filters.ts +306 -0
- package/src/scripts/backfill-embeddings.ts +454 -0
- package/src/scripts/check-embedding-coverage.ts +119 -0
- package/src/scripts/start-workers.ts +560 -0
- package/src/server.ts +290 -0
- package/src/services/background/background-design-db.service.ts +206 -0
- package/src/services/background/background-design-detector.service.ts +1442 -0
- package/src/services/background/background-design-embedding.service.ts +599 -0
- package/src/services/background-search.service.ts +372 -0
- package/src/services/backup-service.ts +441 -0
- package/src/services/brief/brief-parser-service.ts +435 -0
- package/src/services/brief/schemas/brief-parser-schemas.ts +138 -0
- package/src/services/browser-process-manager.ts +334 -0
- package/src/services/cache.ts +297 -0
- package/src/services/checksum-service.ts +293 -0
- package/src/services/css-analysis-cache.service.ts +547 -0
- package/src/services/database-dumper.service.ts +675 -0
- package/src/services/embedding-backfill.service.ts +1055 -0
- package/src/services/embedding-validation.service.ts +194 -0
- package/src/services/encryption-service.ts +433 -0
- package/src/services/external-css-fetcher.ts +872 -0
- package/src/services/gpu-resource-manager.ts +615 -0
- package/src/services/index.ts +169 -0
- package/src/services/layout/component-splitter.ts +656 -0
- package/src/services/layout/html-to-jsx-converter.ts +591 -0
- package/src/services/layout/semantic-html-converter.ts +293 -0
- package/src/services/layout/style-to-tailwind-mapper.ts +1530 -0
- package/src/services/layout-embedding.service.ts +1552 -0
- package/src/services/layout-generate-code-service-export.ts +109 -0
- package/src/services/layout-search-service-export.ts +55 -0
- package/src/services/layout-search.service.ts +933 -0
- package/src/services/layout-to-code.service.ts +1631 -0
- package/src/services/metrics-collector.ts +473 -0
- package/src/services/ml/mood-brandtone-embedding.service.ts +1115 -0
- package/src/services/motion/analyzers/color-change.analyzer.ts +935 -0
- package/src/services/motion/analyzers/frame-diff.analyzer.ts +372 -0
- package/src/services/motion/analyzers/layout-shift.detector.ts +296 -0
- package/src/services/motion/analyzers/motion-vector.estimator.ts +698 -0
- package/src/services/motion/analyzers/webgl-motion-analyzer.ts +700 -0
- package/src/services/motion/animation-metrics-collector.service.ts +726 -0
- package/src/services/motion/cls-calculator.service.ts +519 -0
- package/src/services/motion/existing-animation-detector.service.ts +751 -0
- package/src/services/motion/fade-detector.service.ts +383 -0
- package/src/services/motion/frame-analysis-save.helper.ts +333 -0
- package/src/services/motion/frame-capture.service.ts +654 -0
- package/src/services/motion/frame-embedding.service.ts +1419 -0
- package/src/services/motion/frame-image-analysis.service.ts +1271 -0
- package/src/services/motion/frame-image-analyzer.adapter.ts +747 -0
- package/src/services/motion/frame-worker-pool.service.ts +519 -0
- package/src/services/motion/infrastructure/frame-loader.ts +450 -0
- package/src/services/motion/js-animation-detector.ts +1563 -0
- package/src/services/motion/js-animation-embedding.service.ts +423 -0
- package/src/services/motion/js-animation-search.service.ts +715 -0
- package/src/services/motion/motion-db.service.ts +952 -0
- package/src/services/motion/three-js-scene-extractor.ts +1556 -0
- package/src/services/motion/types.ts +820 -0
- package/src/services/motion/visual-category-classifier.ts +1426 -0
- package/src/services/motion/webgl-animation-categorizer.ts +761 -0
- package/src/services/motion/webgl-animation-detector.service.ts +772 -0
- package/src/services/motion/webgl-animation-embedding.service.ts +558 -0
- package/src/services/motion-detect-service-export.ts +300 -0
- package/src/services/motion-persistence.service.ts +541 -0
- package/src/services/motion-search-service.ts +38 -0
- package/src/services/motion-search.service.ts +1159 -0
- package/src/services/narrative/analyzers/layout-structure.analyzer.ts +628 -0
- package/src/services/narrative/analyzers/worldview.analyzer.ts +639 -0
- package/src/services/narrative/generators/confidence-calculator.ts +419 -0
- package/src/services/narrative/generators/text-representation.generator.ts +362 -0
- package/src/services/narrative/index.ts +72 -0
- package/src/services/narrative/narrative-analysis.service.ts +610 -0
- package/src/services/narrative/narrative-search.service.ts +704 -0
- package/src/services/narrative/types/narrative.types.ts +451 -0
- package/src/services/orphaned-job-utils.ts +160 -0
- package/src/services/page/css-animation-parser.service.ts +650 -0
- package/src/services/page/fallback-analyzer.service.ts +435 -0
- package/src/services/page/frame-analyzer.service.ts +824 -0
- package/src/services/page/layout-analyzer.service.ts +2534 -0
- package/src/services/page/motion-category-classifier.service.ts +463 -0
- package/src/services/page/motion-detector.service.ts +430 -0
- package/src/services/page/motion-performance-analyzer.service.ts +390 -0
- package/src/services/page/playwright-crawler.service.ts +478 -0
- package/src/services/page/quality-evaluator.service.ts +1473 -0
- package/src/services/page/runtime-animation-detector.service.ts +743 -0
- package/src/services/page/section-postprocessor.service.ts +874 -0
- package/src/services/page/video-recorder.service.ts +516 -0
- package/src/services/page/webgl-detector.service.ts +361 -0
- package/src/services/page-analyze-service.ts +83 -0
- package/src/services/page-ingest-adapter.ts +2256 -0
- package/src/services/palette-service-export.ts +50 -0
- package/src/services/part/index.ts +81 -0
- package/src/services/part/part-backfill.service.ts +308 -0
- package/src/services/part/part-bbox-playwright.service.ts +502 -0
- package/src/services/part/part-db.service.ts +121 -0
- package/src/services/part/part-embedding-db.service.ts +184 -0
- package/src/services/part/part-embedding.service.ts +406 -0
- package/src/services/part/part-extraction.service.ts +612 -0
- package/src/services/part/part-search.service.ts +806 -0
- package/src/services/part/schemas.ts +194 -0
- package/src/services/part/section-screenshot-fallback.service.ts +644 -0
- package/src/services/part/types.ts +299 -0
- package/src/services/persistent-cache.ts +760 -0
- package/src/services/preference-profile.service.ts +862 -0
- package/src/services/preference-rerank.helper.ts +549 -0
- package/src/services/production-guard.ts +423 -0
- package/src/services/project-context-analyzer.ts +915 -0
- package/src/services/quality/axe-accessibility.service.ts +253 -0
- package/src/services/quality/axe-core-shared.ts +203 -0
- package/src/services/quality/benchmark.service.ts +657 -0
- package/src/services/quality/content-gap-detector.service.ts +485 -0
- package/src/services/quality/index.ts +45 -0
- package/src/services/quality/pattern-matcher.service.ts +941 -0
- package/src/services/quality/playwright-axe.service.ts +343 -0
- package/src/services/quality/quality-evaluate.service.interface.ts +262 -0
- package/src/services/quality/visual-design-analyzer.service.ts +918 -0
- package/src/services/quality-evaluate-service-export.ts +268 -0
- package/src/services/quality-search.service.ts +406 -0
- package/src/services/query-analyzer.ts +306 -0
- package/src/services/query-context-analyzer.ts +843 -0
- package/src/services/queue-cleanup.service.ts +376 -0
- package/src/services/responsive/difference-detector.service.ts +647 -0
- package/src/services/responsive/index.ts +64 -0
- package/src/services/responsive/multi-viewport-capture.service.ts +943 -0
- package/src/services/responsive/responsive-analysis-embedding.service.ts +413 -0
- package/src/services/responsive/responsive-analysis.service.ts +325 -0
- package/src/services/responsive/responsive-persistence.service.ts +133 -0
- package/src/services/responsive/responsive-quality-evaluator.service.ts +515 -0
- package/src/services/responsive/shared-browser-manager.ts +118 -0
- package/src/services/responsive/types.ts +387 -0
- package/src/services/responsive/viewport-diff.service.ts +236 -0
- package/src/services/responsive-search.service.ts +230 -0
- package/src/services/search/mood-brandtone-search.service.ts +400 -0
- package/src/services/search-performance.service.ts +252 -0
- package/src/services/section-screenshot.service.ts +581 -0
- package/src/services/service-client.ts +643 -0
- package/src/services/service-initializer.ts +1386 -0
- package/src/services/storage/index.ts +15 -0
- package/src/services/storage/local-storage.provider.ts +370 -0
- package/src/services/style/index.ts +10 -0
- package/src/services/style/palette-service.ts +655 -0
- package/src/services/style/prisma-palette-repository.ts +216 -0
- package/src/services/vision/brandtone.analyzer.ts +371 -0
- package/src/services/vision/hardware-detector.ts +436 -0
- package/src/services/vision/image-optimizer.ts +377 -0
- package/src/services/vision/index.ts +131 -0
- package/src/services/vision/llama-vision-adapter.ts +526 -0
- package/src/services/vision/mcp-progress-adapter.ts +221 -0
- package/src/services/vision/mood.analyzer.ts +332 -0
- package/src/services/vision/ollama-readiness-probe.ts +271 -0
- package/src/services/vision/ollama-vision-client.ts +631 -0
- package/src/services/vision/progress-reporter.ts +377 -0
- package/src/services/vision/scroll-vision-capture.service.ts +409 -0
- package/src/services/vision/scroll-vision-persistence.service.ts +216 -0
- package/src/services/vision/scroll-vision.analyzer.ts +416 -0
- package/src/services/vision/theme.analyzer.ts +443 -0
- package/src/services/vision/timeout-calculator.ts +155 -0
- package/src/services/vision/vision-fallback.service.ts +368 -0
- package/src/services/vision/vision.cache.ts +332 -0
- package/src/services/vision/vision.errors.ts +186 -0
- package/src/services/vision/vision.prompts.ts +298 -0
- package/src/services/vision/vram-utils.ts +80 -0
- package/src/services/vision-adapter/index.ts +71 -0
- package/src/services/vision-adapter/interface.ts +911 -0
- package/src/services/vision-adapter/llama-vision.adapter.ts +2254 -0
- package/src/services/vision-adapter/llama-vision.prompts.ts +242 -0
- package/src/services/vision-adapter/llama-vision.types.ts +103 -0
- package/src/services/vision-adapter/local.adapter.ts +1079 -0
- package/src/services/vision-adapter/mock.adapter.ts +978 -0
- package/src/services/vision-embedding-search.service.ts +1071 -0
- package/src/services/vision-embedding.service.ts +631 -0
- package/src/services/visual/css-variable-extractor.service.ts +655 -0
- package/src/services/visual/typography-extractor.service.ts +767 -0
- package/src/services/visual-extractor/color-extractor.service.ts +397 -0
- package/src/services/visual-extractor/density-calculator.service.ts +616 -0
- package/src/services/visual-extractor/gradient-detector.service.ts +1794 -0
- package/src/services/visual-extractor/image-utils.ts +333 -0
- package/src/services/visual-extractor/pixel-theme-detector.service.ts +487 -0
- package/src/services/visual-extractor/theme-detector.service.ts +697 -0
- package/src/services/visual-extractor/visual-decoration-detector.service.ts +800 -0
- package/src/services/visual-extractor/visual-feature-merger.service.ts +831 -0
- package/src/services/web-page.service.ts +275 -0
- package/src/services/worker-constants.ts +52 -0
- package/src/services/worker-db-save.service.ts +1098 -0
- package/src/services/worker-memory-monitor.service.ts +126 -0
- package/src/services/worker-memory-profile.ts +336 -0
- package/src/services/worker-stall-recovery.service.ts +486 -0
- package/src/services/worker-supervisor.service.ts +746 -0
- package/src/tools/background/schemas.ts +93 -0
- package/src/tools/background/search.tool.ts +484 -0
- package/src/tools/brief/index.ts +76 -0
- package/src/tools/brief/schemas.ts +247 -0
- package/src/tools/brief/validate.handler.ts +278 -0
- package/src/tools/brief/validate.service.ts +409 -0
- package/src/tools/common/error-codes.ts +116 -0
- package/src/tools/common/index.ts +25 -0
- package/src/tools/index.ts +723 -0
- package/src/tools/layout/batch-ingest.tool.ts +466 -0
- package/src/tools/layout/index.ts +72 -0
- package/src/tools/layout/ingest.tool.ts +1564 -0
- package/src/tools/layout/inspect/index.ts +49 -0
- package/src/tools/layout/inspect/inspect.schemas.ts +518 -0
- package/src/tools/layout/inspect/inspect.tool.ts +844 -0
- package/src/tools/layout/inspect/inspect.utils.ts +1278 -0
- package/src/tools/layout/inspect/visual-extractors.schemas.ts +642 -0
- package/src/tools/layout/inspect/visual-extractors.utils.ts +328 -0
- package/src/tools/layout/schemas.ts +1670 -0
- package/src/tools/layout/search.tool.ts +2088 -0
- package/src/tools/layout/to-code.tool.ts +503 -0
- package/src/tools/motion/analyze-frames.handler.ts +388 -0
- package/src/tools/motion/analyze-frames.schema.ts +484 -0
- package/src/tools/motion/css-mode-handler.ts +939 -0
- package/src/tools/motion/detect.schemas.ts +2005 -0
- package/src/tools/motion/detect.tool.ts +1914 -0
- package/src/tools/motion/detection-modes.ts +480 -0
- package/src/tools/motion/di-factories.ts +767 -0
- package/src/tools/motion/index.ts +229 -0
- package/src/tools/motion/pattern-converter.ts +619 -0
- package/src/tools/motion/schemas.ts +12 -0
- package/src/tools/motion/search.schemas.ts +694 -0
- package/src/tools/motion/search.tool.ts +2518 -0
- package/src/tools/motion/shared.schemas.ts +414 -0
- package/src/tools/narrative/PAGE_ANALYZE_INTEGRATION.md +249 -0
- package/src/tools/narrative/analyze.tool.ts +460 -0
- package/src/tools/narrative/index.ts +133 -0
- package/src/tools/narrative/schemas.ts +886 -0
- package/src/tools/narrative/search.tool.ts +536 -0
- package/src/tools/page/analyze.tool.ts +992 -0
- package/src/tools/page/get-job-status.tool.ts +217 -0
- package/src/tools/page/handlers/db-handler.ts +638 -0
- package/src/tools/page/handlers/embedding-handler.ts +813 -0
- package/src/tools/page/handlers/execution-status-tracker.ts +461 -0
- package/src/tools/page/handlers/js-animation-handler.ts +1229 -0
- package/src/tools/page/handlers/layout-handler.ts +1423 -0
- package/src/tools/page/handlers/motion-handler.ts +1156 -0
- package/src/tools/page/handlers/narrative-handler.ts +345 -0
- package/src/tools/page/handlers/phased-db-handler.ts +186 -0
- package/src/tools/page/handlers/phased-executor.ts +356 -0
- package/src/tools/page/handlers/quality-handler.ts +114 -0
- package/src/tools/page/handlers/result-builder.ts +551 -0
- package/src/tools/page/handlers/retry-strategy.ts +223 -0
- package/src/tools/page/handlers/sync-processing.ts +2084 -0
- package/src/tools/page/handlers/timeout-utils.ts +835 -0
- package/src/tools/page/handlers/types.ts +1333 -0
- package/src/tools/page/handlers/video-handler.ts +299 -0
- package/src/tools/page/handlers/webgl-animation-handler.ts +309 -0
- package/src/tools/page/handlers/webgl-detector.ts +833 -0
- package/src/tools/page/handlers/webgl-domains.ts +482 -0
- package/src/tools/page/handlers/webgl-pre-detector.ts +308 -0
- package/src/tools/page/index.ts +142 -0
- package/src/tools/page/input.schemas.ts +945 -0
- package/src/tools/page/output.schemas.ts +1636 -0
- package/src/tools/page/schemas.ts +12 -0
- package/src/tools/page/shared.schemas.ts +86 -0
- package/src/tools/part/compare.tool.ts +542 -0
- package/src/tools/part/inspect.tool.ts +400 -0
- package/src/tools/part/search.tool.ts +470 -0
- package/src/tools/preference/get.tool.ts +238 -0
- package/src/tools/preference/hear.tool.ts +504 -0
- package/src/tools/preference/index.ts +65 -0
- package/src/tools/preference/reset.tool.ts +264 -0
- package/src/tools/preference/schemas.ts +161 -0
- package/src/tools/project-get.ts +194 -0
- package/src/tools/project-list.ts +240 -0
- package/src/tools/quality/batch-evaluate.tool.ts +480 -0
- package/src/tools/quality/evaluate-engine.ts +1329 -0
- package/src/tools/quality/evaluate.tool.ts +981 -0
- package/src/tools/quality/get-job-status.tool.ts +344 -0
- package/src/tools/quality/improvement-utils.ts +361 -0
- package/src/tools/quality/index.ts +49 -0
- package/src/tools/quality/schemas.ts +1114 -0
- package/src/tools/responsive/schemas.ts +103 -0
- package/src/tools/responsive/search.tool.ts +421 -0
- package/src/tools/schemas/index.ts +67 -0
- package/src/tools/schemas/layout-schemas.ts +334 -0
- package/src/tools/schemas/project-schemas.ts +233 -0
- package/src/tools/schemas/shared.ts +176 -0
- package/src/tools/schemas/style-schemas.ts +74 -0
- package/src/tools/style-get-palette.ts +344 -0
- package/src/tools/system-health.ts +729 -0
- package/src/transport.ts +54 -0
- package/src/types/creative/index.ts +22 -0
- package/src/types/creative/palette.ts +197 -0
- package/src/types/reftrix-window.ts +175 -0
- package/src/utils/actionable-warning.ts +997 -0
- package/src/utils/blank-image-detector.ts +143 -0
- package/src/utils/color.ts +534 -0
- package/src/utils/deprecation-warning.ts +146 -0
- package/src/utils/error-messages.ts +965 -0
- package/src/utils/errors.ts +95 -0
- package/src/utils/gpu-browser-args.ts +41 -0
- package/src/utils/html-sanitizer.ts +753 -0
- package/src/utils/logger.ts +292 -0
- package/src/utils/mcp-response.ts +397 -0
- package/src/utils/path-security.ts +412 -0
- package/src/utils/prisma-wrapper-factory.ts +283 -0
- package/src/utils/safe-parse-int.ts +74 -0
- package/src/utils/url-normalizer.ts +115 -0
- package/src/utils/url-validator.ts +615 -0
- package/src/workers/batch-quality-worker.ts +419 -0
- package/src/workers/page-analyze-worker.ts +1056 -0
- package/src/workers/phases/phase-0-ingest.ts +249 -0
- package/src/workers/phases/phase-1-layout.ts +522 -0
- package/src/workers/phases/phase-2-motion.ts +674 -0
- package/src/workers/phases/phase-3-quality.ts +293 -0
- package/src/workers/phases/phase-4-narrative.ts +409 -0
- package/src/workers/phases/phase-5-embedding.ts +1816 -0
- package/src/workers/phases/types.ts +909 -0
|
@@ -0,0 +1,2005 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2026 TKMD and Reftrix Contributors
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* motion.detect MCP Tool — Zod Schema Definitions
|
|
6
|
+
* motion.detect 固有のスキーマ定義(入力/出力/エラーコード/ユーティリティ)
|
|
7
|
+
*
|
|
8
|
+
* @module @reftrixmcp/mcp-server/tools/motion/detect.schemas
|
|
9
|
+
*/
|
|
10
|
+
import { z } from "zod";
|
|
11
|
+
|
|
12
|
+
import type {
|
|
13
|
+
MotionType,
|
|
14
|
+
TriggerType,
|
|
15
|
+
MotionCategory,
|
|
16
|
+
PerformanceInfo,
|
|
17
|
+
PerformanceLevel,
|
|
18
|
+
MotionPattern,
|
|
19
|
+
} from "./shared.schemas";
|
|
20
|
+
import {
|
|
21
|
+
warningSeveritySchema,
|
|
22
|
+
motionPatternSchema,
|
|
23
|
+
motionWarningSchema,
|
|
24
|
+
motionSummarySchema,
|
|
25
|
+
motionMetadataSchema,
|
|
26
|
+
} from "./shared.schemas";
|
|
27
|
+
|
|
28
|
+
// ============================================================================
|
|
29
|
+
// Detection Mode Schema (v0.1.0)
|
|
30
|
+
// ============================================================================
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* 検出モード
|
|
34
|
+
*
|
|
35
|
+
* モード選択ガイド:
|
|
36
|
+
* - 'css': CSS静的解析のみ。html または pageId が必須。
|
|
37
|
+
* 用途: layout.ingest → motion.detect パイプライン、静的HTMLの解析
|
|
38
|
+
* 長所: 高速、リソース軽量、Playwright不要
|
|
39
|
+
* 短所: JS駆動アニメーション(GSAP, Framer Motion等)検出不可
|
|
40
|
+
*
|
|
41
|
+
* - 'runtime': JavaScript駆動アニメーション検出。url が必須。
|
|
42
|
+
* 用途: SPA/React/Vue/Next.js等のJS駆動サイト
|
|
43
|
+
* 長所: CSS-in-JS、JSアニメーションライブラリを検出可能
|
|
44
|
+
* 短所: Playwright起動オーバーヘッド(数秒)
|
|
45
|
+
*
|
|
46
|
+
* - 'hybrid': CSS + runtime 両方を組み合わせた検出。url が必須。
|
|
47
|
+
* 用途: 最も包括的な検出が必要な場合
|
|
48
|
+
* 長所: 静的CSS + JS駆動の両方を検出
|
|
49
|
+
* 短所: 2倍のリソース消費、処理時間増加
|
|
50
|
+
*
|
|
51
|
+
* - 'video': 動画キャプチャ + フレーム解析。url が必須。
|
|
52
|
+
* 用途: 視覚的なモーション検出、Lighthouse連携
|
|
53
|
+
* 長所: 実際のレンダリング結果を解析
|
|
54
|
+
* 短所: 最大リソース消費、長時間処理
|
|
55
|
+
*
|
|
56
|
+
* - 'library_only' (v0.1.0): ライブラリ検出のみ。url が必須。
|
|
57
|
+
* 用途: WebGL/Three.jsサイトでの高速検出、layout_first モード
|
|
58
|
+
* 長所: 超高速(5-15秒)、グローバルオブジェクト検出のみ
|
|
59
|
+
* 短所: アニメーション詳細(duration, easing等)は取得不可
|
|
60
|
+
* 検出対象: window.THREE, window.gsap, window.anime, data-framer-* 等
|
|
61
|
+
*
|
|
62
|
+
* 推奨:
|
|
63
|
+
* - 静的サイト/事前取得HTML: 'css'
|
|
64
|
+
* - SPA/JSフレームワーク: 'runtime' または 'hybrid'
|
|
65
|
+
* - パフォーマンス分析: 'video' + lighthouse_options
|
|
66
|
+
* - WebGL/Three.jsサイト: 'library_only' (layout_first='auto'時に自動選択)
|
|
67
|
+
*/
|
|
68
|
+
export const detectionModeSchema = z.enum(["css", "runtime", "hybrid", "video", "library_only"]);
|
|
69
|
+
export type DetectionMode = z.infer<typeof detectionModeSchema>;
|
|
70
|
+
|
|
71
|
+
// ============================================================================
|
|
72
|
+
// JS Animation Detection Options Schema (v0.1.0)
|
|
73
|
+
// ============================================================================
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* JSアニメーション検出オプションスキーマ
|
|
77
|
+
*
|
|
78
|
+
* Chrome DevTools Protocol (CDP) と Web Animations API を使用した
|
|
79
|
+
* JavaScript駆動アニメーションの包括的検出オプション
|
|
80
|
+
*
|
|
81
|
+
* @property enable_cdp - CDP Animation ドメインを使用してアニメーション検出 (default: true)
|
|
82
|
+
* @property enable_web_animations - Web Animations API (document.getAnimations()) を使用 (default: true)
|
|
83
|
+
* @property enable_library_detection - ライブラリ検出を有効にするか (default: true)
|
|
84
|
+
* @property wait_time - アニメーション待機時間(ms)(default: 1000)
|
|
85
|
+
*/
|
|
86
|
+
export const jsAnimationOptionsSchema = z.object({
|
|
87
|
+
enable_cdp: z
|
|
88
|
+
.boolean()
|
|
89
|
+
.default(true)
|
|
90
|
+
.describe("Enable CDP Animation domain for animation detection"),
|
|
91
|
+
enable_web_animations: z
|
|
92
|
+
.boolean()
|
|
93
|
+
.default(true)
|
|
94
|
+
.describe("Enable Web Animations API (document.getAnimations()) detection"),
|
|
95
|
+
enable_library_detection: z
|
|
96
|
+
.boolean()
|
|
97
|
+
.default(true)
|
|
98
|
+
.describe("Enable library detection (GSAP, Framer Motion, Anime.js, Three.js, Lottie)"),
|
|
99
|
+
wait_time: z
|
|
100
|
+
.number()
|
|
101
|
+
.int()
|
|
102
|
+
.min(0, { message: "wait_timeは0以上である必要があります" })
|
|
103
|
+
.max(30000, { message: "wait_timeは30000ms以下にしてください" })
|
|
104
|
+
.default(1000)
|
|
105
|
+
.describe("Wait time for animations to start (ms)"),
|
|
106
|
+
});
|
|
107
|
+
export type JSAnimationOptions = z.infer<typeof jsAnimationOptionsSchema>;
|
|
108
|
+
|
|
109
|
+
// ============================================================================
|
|
110
|
+
// JS Animation Detection Result Schemas (v0.1.0)
|
|
111
|
+
// ============================================================================
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* CDPアニメーションソース情報スキーマ
|
|
115
|
+
*/
|
|
116
|
+
export const cdpAnimationSourceSchema = z.object({
|
|
117
|
+
duration: z.number().min(0),
|
|
118
|
+
delay: z.number().min(0),
|
|
119
|
+
iterations: z.number().min(0),
|
|
120
|
+
direction: z.string(),
|
|
121
|
+
easing: z.string(),
|
|
122
|
+
keyframesRule: z
|
|
123
|
+
.object({
|
|
124
|
+
name: z.string().optional(),
|
|
125
|
+
keyframes: z
|
|
126
|
+
.array(
|
|
127
|
+
z.object({
|
|
128
|
+
offset: z.string(),
|
|
129
|
+
easing: z.string(),
|
|
130
|
+
style: z.string().optional(),
|
|
131
|
+
})
|
|
132
|
+
)
|
|
133
|
+
.optional(),
|
|
134
|
+
})
|
|
135
|
+
.optional(),
|
|
136
|
+
});
|
|
137
|
+
export type CDPAnimationSource = z.infer<typeof cdpAnimationSourceSchema>;
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* CDP経由で検出されたアニメーションスキーマ
|
|
141
|
+
*/
|
|
142
|
+
export const cdpAnimationSchema = z.object({
|
|
143
|
+
id: z.string(),
|
|
144
|
+
name: z.string(),
|
|
145
|
+
pausedState: z.boolean(),
|
|
146
|
+
playState: z.string(),
|
|
147
|
+
playbackRate: z.number(),
|
|
148
|
+
startTime: z.number(),
|
|
149
|
+
currentTime: z.number(),
|
|
150
|
+
type: z.enum(["CSSAnimation", "CSSTransition", "WebAnimation"]),
|
|
151
|
+
source: cdpAnimationSourceSchema,
|
|
152
|
+
});
|
|
153
|
+
export type CDPAnimation = z.infer<typeof cdpAnimationSchema>;
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Web Animations APIタイミング情報スキーマ
|
|
157
|
+
*/
|
|
158
|
+
export const webAnimationTimingSchema = z.object({
|
|
159
|
+
duration: z.number().min(0),
|
|
160
|
+
delay: z.number().min(0),
|
|
161
|
+
iterations: z.number(),
|
|
162
|
+
direction: z.string(),
|
|
163
|
+
easing: z.string(),
|
|
164
|
+
fill: z.string(),
|
|
165
|
+
});
|
|
166
|
+
export type WebAnimationTiming = z.infer<typeof webAnimationTimingSchema>;
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Web Animations API キーフレームスキーマ
|
|
170
|
+
*/
|
|
171
|
+
export const webAnimationKeyframeSchema = z
|
|
172
|
+
.object({
|
|
173
|
+
offset: z.number().nullable(),
|
|
174
|
+
easing: z.string(),
|
|
175
|
+
composite: z.string(),
|
|
176
|
+
})
|
|
177
|
+
.passthrough();
|
|
178
|
+
export type WebAnimationKeyframe = z.infer<typeof webAnimationKeyframeSchema>;
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Web Animations API で検出されたアニメーションスキーマ
|
|
182
|
+
*/
|
|
183
|
+
export const webAnimationSchema = z.object({
|
|
184
|
+
id: z.string(),
|
|
185
|
+
playState: z.string(),
|
|
186
|
+
target: z.string(),
|
|
187
|
+
timing: webAnimationTimingSchema,
|
|
188
|
+
keyframes: z.array(webAnimationKeyframeSchema),
|
|
189
|
+
});
|
|
190
|
+
export type WebAnimation = z.infer<typeof webAnimationSchema>;
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* ライブラリ検出結果スキーマ
|
|
194
|
+
*/
|
|
195
|
+
export const libraryDetectionResultSchema = z.object({
|
|
196
|
+
gsap: z.object({
|
|
197
|
+
detected: z.boolean(),
|
|
198
|
+
version: z.string().optional(),
|
|
199
|
+
tweens: z.number().int().nonnegative().optional(),
|
|
200
|
+
}),
|
|
201
|
+
framerMotion: z.object({
|
|
202
|
+
detected: z.boolean(),
|
|
203
|
+
elements: z.number().int().nonnegative().optional(),
|
|
204
|
+
}),
|
|
205
|
+
anime: z.object({
|
|
206
|
+
detected: z.boolean(),
|
|
207
|
+
instances: z.number().int().nonnegative().optional(),
|
|
208
|
+
}),
|
|
209
|
+
three: z.object({
|
|
210
|
+
detected: z.boolean(),
|
|
211
|
+
scenes: z.number().int().nonnegative().optional(),
|
|
212
|
+
}),
|
|
213
|
+
lottie: z.object({
|
|
214
|
+
detected: z.boolean(),
|
|
215
|
+
animations: z.number().int().nonnegative().optional(),
|
|
216
|
+
}),
|
|
217
|
+
});
|
|
218
|
+
export type LibraryDetectionResult = z.infer<typeof libraryDetectionResultSchema>;
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* JSアニメーション検出結果スキーマ
|
|
222
|
+
*/
|
|
223
|
+
export const jsAnimationResultSchema = z.object({
|
|
224
|
+
/** CDP経由で検出されたアニメーション */
|
|
225
|
+
cdpAnimations: z.array(cdpAnimationSchema),
|
|
226
|
+
/** Web Animations API で検出されたアニメーション */
|
|
227
|
+
webAnimations: z.array(webAnimationSchema),
|
|
228
|
+
/** ライブラリ検出結果 */
|
|
229
|
+
libraries: libraryDetectionResultSchema,
|
|
230
|
+
/** 検出にかかった時間(ms) */
|
|
231
|
+
detectionTimeMs: z.number().int().nonnegative(),
|
|
232
|
+
/** 総検出数 */
|
|
233
|
+
totalDetected: z.number().int().nonnegative(),
|
|
234
|
+
});
|
|
235
|
+
export type JSAnimationResult = z.infer<typeof jsAnimationResultSchema>;
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* ランタイムオプションスキーマ (v0.1.0)
|
|
239
|
+
*
|
|
240
|
+
* @property wait_for_animations - アニメーション待機時間(ms)0-60000
|
|
241
|
+
* @property scroll_positions - スクロール位置の配列(%)0-100
|
|
242
|
+
*/
|
|
243
|
+
export const runtimeOptionsSchema = z.object({
|
|
244
|
+
wait_for_animations: z
|
|
245
|
+
.number()
|
|
246
|
+
.min(0, { message: "wait_for_animationsは0以上である必要があります" })
|
|
247
|
+
.max(30000, { message: "wait_for_animationsは30000ms以下にしてください" })
|
|
248
|
+
.default(3000)
|
|
249
|
+
.optional(),
|
|
250
|
+
scroll_positions: z
|
|
251
|
+
.array(
|
|
252
|
+
z
|
|
253
|
+
.number()
|
|
254
|
+
.min(0, { message: "scroll_positionは0以上である必要があります" })
|
|
255
|
+
.max(100, { message: "scroll_positionは100以下である必要があります" })
|
|
256
|
+
)
|
|
257
|
+
.max(20, { message: "scroll_positionsは最大20個までです" })
|
|
258
|
+
.optional(),
|
|
259
|
+
});
|
|
260
|
+
export type RuntimeOptions = z.infer<typeof runtimeOptionsSchema>;
|
|
261
|
+
|
|
262
|
+
// ============================================================================
|
|
263
|
+
// Video Options Schema (Phase1)
|
|
264
|
+
// ============================================================================
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* フレーム解析オプションスキーマ
|
|
268
|
+
*
|
|
269
|
+
* @property fps - フレームレート (1-30, デフォルト: 10)
|
|
270
|
+
* @property change_threshold - 変化検出閾値 (0-1, デフォルト: 0.01)
|
|
271
|
+
* @property min_motion_duration_ms - 最小モーション継続時間 (デフォルト: 100ms)
|
|
272
|
+
*/
|
|
273
|
+
export const frameAnalysisOptionsSchema = z.object({
|
|
274
|
+
fps: z
|
|
275
|
+
.number()
|
|
276
|
+
.int()
|
|
277
|
+
.min(1, { message: "fpsは1以上である必要があります" })
|
|
278
|
+
.max(30, { message: "fpsは30以下にしてください" })
|
|
279
|
+
.default(10)
|
|
280
|
+
.optional(),
|
|
281
|
+
change_threshold: z
|
|
282
|
+
.number()
|
|
283
|
+
.min(0, { message: "change_thresholdは0以上である必要があります" })
|
|
284
|
+
.max(1, { message: "change_thresholdは1以下である必要があります" })
|
|
285
|
+
.default(0.01)
|
|
286
|
+
.optional(),
|
|
287
|
+
min_motion_duration_ms: z
|
|
288
|
+
.number()
|
|
289
|
+
.int()
|
|
290
|
+
.min(0, { message: "min_motion_duration_msは0以上である必要があります" })
|
|
291
|
+
.max(10000, { message: "min_motion_duration_msは10000以下にしてください" })
|
|
292
|
+
.default(100)
|
|
293
|
+
.optional(),
|
|
294
|
+
gap_tolerance_ms: z
|
|
295
|
+
.number()
|
|
296
|
+
.int()
|
|
297
|
+
.min(0, { message: "gap_tolerance_msは0以上である必要があります" })
|
|
298
|
+
.max(1000, { message: "gap_tolerance_msは1000以下にしてください" })
|
|
299
|
+
.default(50)
|
|
300
|
+
.optional(),
|
|
301
|
+
});
|
|
302
|
+
export type FrameAnalysisOptions = z.infer<typeof frameAnalysisOptionsSchema>;
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* 動画キャプチャオプションスキーマ (Phase1)
|
|
306
|
+
*
|
|
307
|
+
* @property timeout - ページ読み込みタイムアウト (1000-120000ms, デフォルト: 30000)
|
|
308
|
+
* @property record_duration - 録画時間 (1000-60000ms, デフォルト: 5000)
|
|
309
|
+
* @property viewport - ビューポートサイズ (デフォルト: 1280x720)
|
|
310
|
+
* @property scroll_page - スクロール操作を行うか (デフォルト: true)
|
|
311
|
+
* @property move_mouse - マウス移動操作を行うか (デフォルト: true)
|
|
312
|
+
* @property frame_analysis - フレーム解析オプション
|
|
313
|
+
*/
|
|
314
|
+
export const videoOptionsSchema = z.object({
|
|
315
|
+
timeout: z
|
|
316
|
+
.number()
|
|
317
|
+
.int()
|
|
318
|
+
.min(1000, { message: "timeoutは1000ms以上である必要があります" })
|
|
319
|
+
.max(120000, { message: "timeoutは120000ms以下にしてください" })
|
|
320
|
+
.default(30000)
|
|
321
|
+
.optional(),
|
|
322
|
+
record_duration: z
|
|
323
|
+
.number()
|
|
324
|
+
.int()
|
|
325
|
+
.min(1000, { message: "record_durationは1000ms以上である必要があります" })
|
|
326
|
+
.max(60000, { message: "record_durationは60000ms以下にしてください" })
|
|
327
|
+
.default(5000)
|
|
328
|
+
.optional(),
|
|
329
|
+
viewport: z
|
|
330
|
+
.object({
|
|
331
|
+
width: z
|
|
332
|
+
.number()
|
|
333
|
+
.int()
|
|
334
|
+
.min(320, { message: "viewport.widthは320以上である必要があります" })
|
|
335
|
+
.max(4096, { message: "viewport.widthは4096以下にしてください" }),
|
|
336
|
+
height: z
|
|
337
|
+
.number()
|
|
338
|
+
.int()
|
|
339
|
+
.min(240, { message: "viewport.heightは240以上である必要があります" })
|
|
340
|
+
.max(4096, { message: "viewport.heightは4096以下にしてください" }),
|
|
341
|
+
})
|
|
342
|
+
.optional(),
|
|
343
|
+
scroll_page: z.boolean().default(true).optional(),
|
|
344
|
+
move_mouse: z.boolean().default(true).optional(),
|
|
345
|
+
wait_until: z.enum(["load", "domcontentloaded", "networkidle"]).default("load").optional(),
|
|
346
|
+
frame_analysis: frameAnalysisOptionsSchema.optional(),
|
|
347
|
+
});
|
|
348
|
+
export type VideoOptions = z.infer<typeof videoOptionsSchema>;
|
|
349
|
+
|
|
350
|
+
// ============================================================================
|
|
351
|
+
// Frame Capture Options Schema (video mode)
|
|
352
|
+
// ============================================================================
|
|
353
|
+
|
|
354
|
+
/**
|
|
355
|
+
* 合計フレーム数の最大制限
|
|
356
|
+
* DoS攻撃やリソース枯渇を防ぐため、120fps × 300sec = 36,000 ではなく
|
|
357
|
+
* より安全な 3,600 フレーム(30fps × 2分相当)を上限とする
|
|
358
|
+
*/
|
|
359
|
+
export const MAX_TOTAL_FRAMES = 3600;
|
|
360
|
+
|
|
361
|
+
/**
|
|
362
|
+
* フレームキャプチャオプションスキーマ (video mode)
|
|
363
|
+
*
|
|
364
|
+
* ページをスクロールしながらフレームを連続撮影し、動画制作用の素材を生成する機能
|
|
365
|
+
*
|
|
366
|
+
* @property frame_rate - フレームレート (1-120fps, デフォルト: 30)
|
|
367
|
+
* @property frame_interval_ms - フレーム間隔 (ms, 自動計算: 1000/frame_rate)
|
|
368
|
+
* @property scroll_speed_px_per_sec - スクロール速度 (px/sec, 自動計算: page_height_px/scroll_duration_sec)
|
|
369
|
+
* @property scroll_px_per_frame - フレームあたりスクロール量 (px, 自動計算: scroll_speed_px_per_sec/frame_rate)
|
|
370
|
+
* @property output_format - 出力形式 (png|jpeg, デフォルト: png)
|
|
371
|
+
* @property output_dir - 出力ディレクトリ (デフォルト: /tmp/reftrix-frames/)
|
|
372
|
+
* @property filename_pattern - ファイル名パターン (デフォルト: frame-{0000}.png)
|
|
373
|
+
* @property page_height_px - ページ高さ (px, デフォルト: 1080)
|
|
374
|
+
* @property scroll_duration_sec - スクロール時間 (秒, デフォルト: 5)
|
|
375
|
+
*
|
|
376
|
+
* セキュリティ対策:
|
|
377
|
+
* - output_dir: パストラバーサル文字(..)を禁止
|
|
378
|
+
* - filename_pattern: パス区切り文字(/、..)を禁止
|
|
379
|
+
* - 合計フレーム数: MAX_TOTAL_FRAMES (3600) 以下に制限
|
|
380
|
+
*/
|
|
381
|
+
export const frameCaptureOptionsSchema = z
|
|
382
|
+
.object({
|
|
383
|
+
frame_rate: z
|
|
384
|
+
.number()
|
|
385
|
+
.int()
|
|
386
|
+
.min(1, { message: "frame_rateは1以上である必要があります" })
|
|
387
|
+
.max(120, { message: "frame_rateは120以下にしてください" })
|
|
388
|
+
.optional(),
|
|
389
|
+
frame_interval_ms: z
|
|
390
|
+
.number()
|
|
391
|
+
.min(1, { message: "frame_interval_msは1以上である必要があります" })
|
|
392
|
+
.optional(),
|
|
393
|
+
scroll_speed_px_per_sec: z
|
|
394
|
+
.number()
|
|
395
|
+
.min(1, { message: "scroll_speed_px_per_secは1以上である必要があります" })
|
|
396
|
+
.optional(),
|
|
397
|
+
scroll_px_per_frame: z
|
|
398
|
+
.number()
|
|
399
|
+
.min(0.01, { message: "scroll_px_per_frameは0.01以上である必要があります" })
|
|
400
|
+
.optional(),
|
|
401
|
+
output_format: z.enum(["png", "jpeg"]).optional(),
|
|
402
|
+
output_dir: z
|
|
403
|
+
.string()
|
|
404
|
+
.min(1, { message: "output_dirは1文字以上必要です" })
|
|
405
|
+
.refine((dir) => !dir.includes(".."), {
|
|
406
|
+
message: "output_dirにパストラバーサル文字(..)は使用できません",
|
|
407
|
+
})
|
|
408
|
+
.optional(),
|
|
409
|
+
filename_pattern: z
|
|
410
|
+
.string()
|
|
411
|
+
.min(1, { message: "filename_patternは1文字以上必要です" })
|
|
412
|
+
.refine((pattern) => !pattern.includes("..") && !pattern.includes("/"), {
|
|
413
|
+
message: "filename_patternにパス区切り文字(/または..)は使用できません",
|
|
414
|
+
})
|
|
415
|
+
.optional(),
|
|
416
|
+
page_height_px: z
|
|
417
|
+
.number()
|
|
418
|
+
.int()
|
|
419
|
+
.min(100, { message: "page_height_pxは100以上である必要があります" })
|
|
420
|
+
.max(100000, { message: "page_height_pxは100000以下にしてください" })
|
|
421
|
+
.optional(),
|
|
422
|
+
scroll_duration_sec: z
|
|
423
|
+
.number()
|
|
424
|
+
.min(0.1, { message: "scroll_duration_secは0.1以上である必要があります" })
|
|
425
|
+
.max(300, { message: "scroll_duration_secは300以下にしてください" })
|
|
426
|
+
.optional(),
|
|
427
|
+
})
|
|
428
|
+
.refine(
|
|
429
|
+
(data) => {
|
|
430
|
+
// 合計フレーム数制限チェック
|
|
431
|
+
const frameRate = data.frame_rate ?? 30;
|
|
432
|
+
const scrollDuration = data.scroll_duration_sec ?? 5;
|
|
433
|
+
const totalFrames = Math.ceil(frameRate * scrollDuration);
|
|
434
|
+
return totalFrames <= MAX_TOTAL_FRAMES;
|
|
435
|
+
},
|
|
436
|
+
{
|
|
437
|
+
message: `合計フレーム数は${MAX_TOTAL_FRAMES}以下である必要があります(frame_rate × scroll_duration_sec)`,
|
|
438
|
+
}
|
|
439
|
+
);
|
|
440
|
+
export type FrameCaptureOptions = z.infer<typeof frameCaptureOptionsSchema>;
|
|
441
|
+
|
|
442
|
+
/**
|
|
443
|
+
* フレームファイル情報スキーマ
|
|
444
|
+
*/
|
|
445
|
+
export const frameFileInfoSchema = z.object({
|
|
446
|
+
frame_number: z.number().int().nonnegative(),
|
|
447
|
+
scroll_position_px: z.number().nonnegative(),
|
|
448
|
+
timestamp_ms: z.number().nonnegative(),
|
|
449
|
+
file_path: z.string(),
|
|
450
|
+
});
|
|
451
|
+
export type FrameFileInfo = z.infer<typeof frameFileInfoSchema>;
|
|
452
|
+
|
|
453
|
+
/**
|
|
454
|
+
* フレームキャプチャ結果スキーマ
|
|
455
|
+
*
|
|
456
|
+
* FrameCaptureServiceResult と整合性を保つ。
|
|
457
|
+
* Phase5: v0.1.0 で実装構造に合わせて更新。
|
|
458
|
+
*/
|
|
459
|
+
export const frameCaptureResultSchema = z.object({
|
|
460
|
+
total_frames: z.number().int().nonnegative(),
|
|
461
|
+
output_dir: z.string(),
|
|
462
|
+
config: z.object({
|
|
463
|
+
scroll_px_per_frame: z.number().positive(),
|
|
464
|
+
frame_interval_ms: z.number().positive(),
|
|
465
|
+
output_format: z.enum(["png", "jpeg"]),
|
|
466
|
+
output_dir: z.string(),
|
|
467
|
+
filename_pattern: z.string(),
|
|
468
|
+
}),
|
|
469
|
+
files: z.array(frameFileInfoSchema),
|
|
470
|
+
duration_ms: z.number().int().nonnegative(),
|
|
471
|
+
});
|
|
472
|
+
export type FrameCaptureResult = z.infer<typeof frameCaptureResultSchema>;
|
|
473
|
+
|
|
474
|
+
// ============================================================================
|
|
475
|
+
// Frame Image Analysis Input Options Schema (Phase5)
|
|
476
|
+
// ============================================================================
|
|
477
|
+
|
|
478
|
+
/**
|
|
479
|
+
* フレーム画像分析入力オプションスキーマ (Phase5: v0.1.0)
|
|
480
|
+
*
|
|
481
|
+
* Pixelmatch + Sharpを使用したフレーム差分分析のオプション。
|
|
482
|
+
* analyze_frames=trueの場合にのみ有効。
|
|
483
|
+
*
|
|
484
|
+
* @property frame_dir - フレーム画像ディレクトリ(省略時はframeCaptureResult.output_dir または frame_capture_options.output_dir、最終フォールバック: /tmp/reftrix-frames/)
|
|
485
|
+
* @property sample_interval - サンプリング間隔(N番目のフレームごと、デフォルト: 10)
|
|
486
|
+
* @property diff_threshold - ピクセル差分しきい値(0-1、デフォルト: 0.1)
|
|
487
|
+
* @property cls_threshold - CLS(レイアウトシフト)しきい値(デフォルト: 0.05)
|
|
488
|
+
* @property motion_threshold - モーション検出しきい値(ピクセル、デフォルト: 50)
|
|
489
|
+
* @property output_diff_images - 差分可視化画像を出力するか(デフォルト: false)
|
|
490
|
+
* @property parallel - 並列処理を有効にするか(デフォルト: true)
|
|
491
|
+
*/
|
|
492
|
+
export const frameImageAnalysisInputOptionsSchema = z.object({
|
|
493
|
+
/**
|
|
494
|
+
* フレーム画像が保存されているディレクトリ
|
|
495
|
+
* 指定しない場合はframe_capture_options.output_dirを使用します。
|
|
496
|
+
* それも未指定の場合は'/tmp/reftrix-frames/'を使用します。
|
|
497
|
+
*/
|
|
498
|
+
frame_dir: z
|
|
499
|
+
.string()
|
|
500
|
+
.min(1, { message: "frame_dirは1文字以上必要です" })
|
|
501
|
+
.refine((dir) => !dir.includes(".."), {
|
|
502
|
+
message: "frame_dirにパストラバーサル文字(..)は使用できません",
|
|
503
|
+
})
|
|
504
|
+
.optional()
|
|
505
|
+
.describe(
|
|
506
|
+
'Directory containing frame images. Falls back to frameCaptureResult.output_dir, frame_capture_options.output_dir, or "/tmp/reftrix-frames/".'
|
|
507
|
+
),
|
|
508
|
+
|
|
509
|
+
/**
|
|
510
|
+
* サンプリング間隔(N番目のフレームごとに分析)
|
|
511
|
+
* 大きな値にすると分析が高速化しますが、精度が低下します。
|
|
512
|
+
* @default 10
|
|
513
|
+
* @minimum 1
|
|
514
|
+
* @maximum 100
|
|
515
|
+
*/
|
|
516
|
+
sample_interval: z
|
|
517
|
+
.number()
|
|
518
|
+
.int()
|
|
519
|
+
.min(1)
|
|
520
|
+
.max(100)
|
|
521
|
+
.default(10)
|
|
522
|
+
.describe(
|
|
523
|
+
"Analyze every Nth frame. Higher values = faster but less precise. (1-100, default: 10)"
|
|
524
|
+
),
|
|
525
|
+
|
|
526
|
+
/**
|
|
527
|
+
* ピクセル差分しきい値(0-1)
|
|
528
|
+
* この値を超える差分があるフレームペアを「有意な変化」として検出します。
|
|
529
|
+
* @default 0.1
|
|
530
|
+
* @minimum 0
|
|
531
|
+
* @maximum 1
|
|
532
|
+
*/
|
|
533
|
+
diff_threshold: z
|
|
534
|
+
.number()
|
|
535
|
+
.min(0)
|
|
536
|
+
.max(1)
|
|
537
|
+
.default(0.1)
|
|
538
|
+
.describe(
|
|
539
|
+
"Pixel diff threshold (0-1). Frame pairs exceeding this are marked as significant changes. (default: 0.1)"
|
|
540
|
+
),
|
|
541
|
+
|
|
542
|
+
/**
|
|
543
|
+
* レイアウトシフト(CLS)しきい値
|
|
544
|
+
* Core Web Vitals基準では0.05が良好とされます。
|
|
545
|
+
* @default 0.05
|
|
546
|
+
* @minimum 0
|
|
547
|
+
* @maximum 1
|
|
548
|
+
*/
|
|
549
|
+
cls_threshold: z
|
|
550
|
+
.number()
|
|
551
|
+
.min(0)
|
|
552
|
+
.max(1)
|
|
553
|
+
.default(0.05)
|
|
554
|
+
.describe(
|
|
555
|
+
'Layout shift (CLS) threshold. Core Web Vitals considers 0.05 as "good". (default: 0.05)'
|
|
556
|
+
),
|
|
557
|
+
|
|
558
|
+
/**
|
|
559
|
+
* モーション検出しきい値(ピクセル)
|
|
560
|
+
* この値を超える移動量があるフレームペアでモーションベクトルを検出します。
|
|
561
|
+
* @default 50
|
|
562
|
+
* @minimum 1
|
|
563
|
+
* @maximum 500
|
|
564
|
+
*/
|
|
565
|
+
motion_threshold: z
|
|
566
|
+
.number()
|
|
567
|
+
.int()
|
|
568
|
+
.min(1)
|
|
569
|
+
.max(500)
|
|
570
|
+
.default(50)
|
|
571
|
+
.describe(
|
|
572
|
+
"Motion detection threshold in pixels. Movements exceeding this are tracked as motion vectors. (default: 50)"
|
|
573
|
+
),
|
|
574
|
+
|
|
575
|
+
/**
|
|
576
|
+
* 差分画像を出力するか
|
|
577
|
+
* trueにすると、フレーム間の差分を可視化した画像を生成します。
|
|
578
|
+
* @default false
|
|
579
|
+
*/
|
|
580
|
+
output_diff_images: z
|
|
581
|
+
.boolean()
|
|
582
|
+
.default(false)
|
|
583
|
+
.describe("Generate diff visualization images for each frame pair. (default: false)"),
|
|
584
|
+
|
|
585
|
+
/**
|
|
586
|
+
* 並列処理を有効にするか
|
|
587
|
+
* @default true
|
|
588
|
+
*/
|
|
589
|
+
parallel: z.boolean().default(true).describe("Enable parallel frame processing. (default: true)"),
|
|
590
|
+
});
|
|
591
|
+
export type FrameImageAnalysisInputOptions = z.infer<typeof frameImageAnalysisInputOptionsSchema>;
|
|
592
|
+
|
|
593
|
+
// ============================================================================
|
|
594
|
+
// Lighthouse Options Schema (Phase3)
|
|
595
|
+
// ============================================================================
|
|
596
|
+
|
|
597
|
+
/**
|
|
598
|
+
* Lighthouseカテゴリ
|
|
599
|
+
*/
|
|
600
|
+
export const lighthouseCategorySchema = z.enum([
|
|
601
|
+
"performance",
|
|
602
|
+
"accessibility",
|
|
603
|
+
"best-practices",
|
|
604
|
+
"seo",
|
|
605
|
+
]);
|
|
606
|
+
export type LighthouseCategory = z.infer<typeof lighthouseCategorySchema>;
|
|
607
|
+
|
|
608
|
+
/**
|
|
609
|
+
* Lighthouseオプションスキーマ (Phase3)
|
|
610
|
+
*
|
|
611
|
+
* motion.detect 実行後にLighthouseを実行してパフォーマンスメトリクスを収集するオプション
|
|
612
|
+
*
|
|
613
|
+
* @property enabled - Lighthouse実行を有効にするか (default: false)
|
|
614
|
+
* @property categories - 収集するカテゴリ配列 (default: ['performance'])
|
|
615
|
+
* @property throttling - ネットワーク/CPU スロットリングを適用するか (default: false)
|
|
616
|
+
* @property timeout - Lighthouse実行タイムアウト (30000-120000ms, default: 60000)
|
|
617
|
+
* @property save_to_db - 結果をDBに保存するか (default: false)
|
|
618
|
+
*/
|
|
619
|
+
export const lighthouseOptionsSchema = z.object({
|
|
620
|
+
enabled: z.boolean().default(false),
|
|
621
|
+
categories: z.array(lighthouseCategorySchema).default(["performance"]).optional(),
|
|
622
|
+
throttling: z.boolean().default(false).optional(),
|
|
623
|
+
timeout: z
|
|
624
|
+
.number()
|
|
625
|
+
.int()
|
|
626
|
+
.min(30000, { message: "timeoutは30000ms以上である必要があります" })
|
|
627
|
+
.max(120000, { message: "timeoutは120000ms以下にしてください" })
|
|
628
|
+
.default(60000)
|
|
629
|
+
.optional(),
|
|
630
|
+
save_to_db: z.boolean().default(false).optional(),
|
|
631
|
+
});
|
|
632
|
+
export type LighthouseOptions = z.infer<typeof lighthouseOptionsSchema>;
|
|
633
|
+
|
|
634
|
+
/**
|
|
635
|
+
* Lighthouseメトリクススキーマ (Phase3)
|
|
636
|
+
*
|
|
637
|
+
* Lighthouse実行結果のパフォーマンスメトリクス
|
|
638
|
+
*
|
|
639
|
+
* @property fcp - First Contentful Paint (ms)
|
|
640
|
+
* @property lcp - Largest Contentful Paint (ms)
|
|
641
|
+
* @property cls - Cumulative Layout Shift (0-1)
|
|
642
|
+
* @property tbt - Total Blocking Time (ms)
|
|
643
|
+
* @property si - Speed Index (ms)
|
|
644
|
+
* @property tti - Time to Interactive (ms)
|
|
645
|
+
* @property performance_score - パフォーマンススコア (0-100)
|
|
646
|
+
* @property fetched_at - 取得日時 (ISO 8601)
|
|
647
|
+
*/
|
|
648
|
+
export const lighthouseMetricsSchema = z.object({
|
|
649
|
+
fcp: z.number().min(0, { message: "fcpは0以上である必要があります" }),
|
|
650
|
+
lcp: z.number().min(0, { message: "lcpは0以上である必要があります" }),
|
|
651
|
+
cls: z
|
|
652
|
+
.number()
|
|
653
|
+
.min(0, { message: "clsは0以上である必要があります" })
|
|
654
|
+
.max(1, { message: "clsは1以下である必要があります" }),
|
|
655
|
+
tbt: z.number().min(0, { message: "tbtは0以上である必要があります" }),
|
|
656
|
+
si: z.number().min(0, { message: "siは0以上である必要があります" }),
|
|
657
|
+
tti: z.number().min(0, { message: "ttiは0以上である必要があります" }),
|
|
658
|
+
performance_score: z
|
|
659
|
+
.number()
|
|
660
|
+
.min(0, { message: "performance_scoreは0以上である必要があります" })
|
|
661
|
+
.max(100, { message: "performance_scoreは100以下である必要があります" }),
|
|
662
|
+
fetched_at: z.string(),
|
|
663
|
+
});
|
|
664
|
+
export type LighthouseMetrics = z.infer<typeof lighthouseMetricsSchema>;
|
|
665
|
+
|
|
666
|
+
// ============================================================================
|
|
667
|
+
// Analyze Metrics Options Schema (Phase4)
|
|
668
|
+
// ============================================================================
|
|
669
|
+
|
|
670
|
+
/**
|
|
671
|
+
* AnimationMetricsCollector オプションスキーマ (Phase4)
|
|
672
|
+
*
|
|
673
|
+
* motion.detect 実行後にアニメーションパフォーマンス分析を行うオプション
|
|
674
|
+
*
|
|
675
|
+
* @property include_recommendations - 改善提案を含めるか (default: true)
|
|
676
|
+
* @property include_cls_contributors - CLS貢献者リストを含めるか (default: true)
|
|
677
|
+
* @property timeout - 分析タイムアウト (1000-60000ms, default: 30000)
|
|
678
|
+
*/
|
|
679
|
+
export const analyzeMetricsOptionsSchema = z.object({
|
|
680
|
+
include_recommendations: z.boolean().default(true).optional(),
|
|
681
|
+
include_cls_contributors: z.boolean().default(true).optional(),
|
|
682
|
+
timeout: z
|
|
683
|
+
.number()
|
|
684
|
+
.int()
|
|
685
|
+
.min(1000, { message: "timeoutは1000ms以上である必要があります" })
|
|
686
|
+
.max(60000, { message: "timeoutは60000ms以下にしてください" })
|
|
687
|
+
.default(30000)
|
|
688
|
+
.optional(),
|
|
689
|
+
});
|
|
690
|
+
export type AnalyzeMetricsOptions = z.infer<typeof analyzeMetricsOptionsSchema>;
|
|
691
|
+
|
|
692
|
+
// ============================================================================
|
|
693
|
+
// AnimationMetricsResult Output Schema (Phase4)
|
|
694
|
+
// ============================================================================
|
|
695
|
+
|
|
696
|
+
/**
|
|
697
|
+
* 個別アニメーションのパフォーマンス影響スコアスキーマ
|
|
698
|
+
*/
|
|
699
|
+
export const animationImpactScoreSchema = z.object({
|
|
700
|
+
/** パターンID */
|
|
701
|
+
patternId: z.string(),
|
|
702
|
+
/** パターン名 */
|
|
703
|
+
patternName: z.string(),
|
|
704
|
+
/** 総合影響スコア (0-100, 高いほど悪い) */
|
|
705
|
+
impactScore: z.number().min(0).max(100),
|
|
706
|
+
/** レイアウト影響スコア (0-100) */
|
|
707
|
+
layoutImpact: z.number().min(0).max(100),
|
|
708
|
+
/** レンダリング影響スコア (0-100) */
|
|
709
|
+
renderImpact: z.number().min(0).max(100),
|
|
710
|
+
/** CPU影響スコア (0-100) */
|
|
711
|
+
cpuImpact: z.number().min(0).max(100),
|
|
712
|
+
/** 影響カテゴリ */
|
|
713
|
+
severity: z.enum(["low", "medium", "high", "critical"]),
|
|
714
|
+
/** 詳細情報 */
|
|
715
|
+
details: z.record(z.unknown()).optional(),
|
|
716
|
+
});
|
|
717
|
+
export type AnimationImpactScore = z.infer<typeof animationImpactScoreSchema>;
|
|
718
|
+
|
|
719
|
+
/**
|
|
720
|
+
* CLS貢献者スキーマ
|
|
721
|
+
*/
|
|
722
|
+
export const clsContributorSchema = z.object({
|
|
723
|
+
/** 要素セレクタ */
|
|
724
|
+
selector: z.string(),
|
|
725
|
+
/** CLS貢献度 (0-1) */
|
|
726
|
+
contribution: z.number().min(0).max(1),
|
|
727
|
+
/** 関連パターンID */
|
|
728
|
+
relatedPatternId: z.string().optional(),
|
|
729
|
+
/** シフト量(ピクセル) */
|
|
730
|
+
shiftAmount: z.number().optional(),
|
|
731
|
+
});
|
|
732
|
+
export type ClsContributor = z.infer<typeof clsContributorSchema>;
|
|
733
|
+
|
|
734
|
+
/**
|
|
735
|
+
* パフォーマンス改善推奨スキーマ
|
|
736
|
+
*/
|
|
737
|
+
export const performanceRecommendationSchema = z.object({
|
|
738
|
+
/** 推奨ID */
|
|
739
|
+
id: z.string(),
|
|
740
|
+
/** 重要度 */
|
|
741
|
+
priority: z.enum(["low", "medium", "high", "critical"]),
|
|
742
|
+
/** カテゴリ */
|
|
743
|
+
category: z.enum(["layout", "rendering", "animation", "accessibility"]),
|
|
744
|
+
/** タイトル */
|
|
745
|
+
title: z.string(),
|
|
746
|
+
/** 説明 */
|
|
747
|
+
description: z.string(),
|
|
748
|
+
/** 影響を受けるパターンID */
|
|
749
|
+
affectedPatterns: z.array(z.string()),
|
|
750
|
+
/** 推定改善効果 (0-1) */
|
|
751
|
+
estimatedImpact: z.number().min(0).max(1),
|
|
752
|
+
/** 実装難易度 */
|
|
753
|
+
effort: z.enum(["low", "medium", "high"]),
|
|
754
|
+
});
|
|
755
|
+
export type PerformanceRecommendation = z.infer<typeof performanceRecommendationSchema>;
|
|
756
|
+
|
|
757
|
+
/**
|
|
758
|
+
* AnimationMetricsResult スキーマ (Phase4)
|
|
759
|
+
*
|
|
760
|
+
* AnimationMetricsCollector が MotionPattern + LighthouseMetrics を分析した結果
|
|
761
|
+
*
|
|
762
|
+
* @property patternImpacts - 個別アニメーションのパフォーマンス影響スコア
|
|
763
|
+
* @property overallScore - 総合スコア (0-100, 高いほど良い)
|
|
764
|
+
* @property clsContributors - CLSに貢献している要素のリスト
|
|
765
|
+
* @property layoutTriggeringProperties - レイアウトをトリガーするプロパティ
|
|
766
|
+
* @property recommendations - パフォーマンス改善推奨
|
|
767
|
+
* @property lighthouseAvailable - Lighthouseメトリクスが利用可能か
|
|
768
|
+
* @property analyzedAt - 分析日時 (ISO 8601)
|
|
769
|
+
*/
|
|
770
|
+
export const animationMetricsResultSchema = z.object({
|
|
771
|
+
patternImpacts: z.array(animationImpactScoreSchema),
|
|
772
|
+
overallScore: z.number().min(0).max(100),
|
|
773
|
+
clsContributors: z.array(clsContributorSchema),
|
|
774
|
+
layoutTriggeringProperties: z.array(z.string()),
|
|
775
|
+
recommendations: z.array(performanceRecommendationSchema),
|
|
776
|
+
lighthouseAvailable: z.boolean(),
|
|
777
|
+
analyzedAt: z.string(),
|
|
778
|
+
});
|
|
779
|
+
export type AnimationMetricsResult = z.infer<typeof animationMetricsResultSchema>;
|
|
780
|
+
|
|
781
|
+
// ============================================================================
|
|
782
|
+
// External CSS Options Schema
|
|
783
|
+
// ============================================================================
|
|
784
|
+
|
|
785
|
+
/**
|
|
786
|
+
* 外部CSSオプションスキーマ
|
|
787
|
+
*/
|
|
788
|
+
export const externalCssOptionsSchema = z.object({
|
|
789
|
+
timeout: z
|
|
790
|
+
.number()
|
|
791
|
+
.int()
|
|
792
|
+
.min(1000, { message: "timeoutは1000ms以上である必要があります" })
|
|
793
|
+
.max(30000, { message: "timeoutは30000ms以下にしてください" })
|
|
794
|
+
.default(5000),
|
|
795
|
+
maxConcurrent: z
|
|
796
|
+
.number()
|
|
797
|
+
.int()
|
|
798
|
+
.min(1, { message: "maxConcurrentは1以上である必要があります" })
|
|
799
|
+
.max(10, { message: "maxConcurrentは10以下にしてください" })
|
|
800
|
+
.default(5),
|
|
801
|
+
});
|
|
802
|
+
export type ExternalCssOptions = z.infer<typeof externalCssOptionsSchema>;
|
|
803
|
+
|
|
804
|
+
// ============================================================================
|
|
805
|
+
// motion.detect Input Schema
|
|
806
|
+
// ============================================================================
|
|
807
|
+
|
|
808
|
+
/**
|
|
809
|
+
* motion.detect 入力スキーマ
|
|
810
|
+
*
|
|
811
|
+
* @property pageId - WebページID(UUID形式、htmlと排他)
|
|
812
|
+
* @property html - HTMLコンテンツ(最大10MB、pageIdと排他)
|
|
813
|
+
* @property css - 追加CSSコンテンツ(最大5MB)
|
|
814
|
+
* @property includeInlineStyles - インラインスタイルを解析するか(デフォルトtrue)
|
|
815
|
+
* @property includeStyleSheets - スタイルシートを解析するか(デフォルトtrue)
|
|
816
|
+
* @property minDuration - 検出する最小duration(ms、デフォルト0)
|
|
817
|
+
* @property maxPatterns - 最大検出パターン数(デフォルト100)
|
|
818
|
+
* @property includeWarnings - 警告を含めるか(デフォルトtrue)
|
|
819
|
+
* @property min_severity - 返却する警告の最小重要度(info/warning/error、デフォルトinfo)
|
|
820
|
+
* @property includeSummary - サマリーを含めるか(デフォルトtrue)
|
|
821
|
+
* @property verbose - 詳細モード(rawCssを含める、デフォルトfalse)
|
|
822
|
+
*/
|
|
823
|
+
export const motionDetectInputSchema = z
|
|
824
|
+
.object({
|
|
825
|
+
pageId: z.string().uuid({ message: "有効なUUID形式のpageIdを指定してください" }).optional(),
|
|
826
|
+
html: z
|
|
827
|
+
.string()
|
|
828
|
+
.min(1, { message: "HTMLコンテンツは1文字以上必要です" })
|
|
829
|
+
.max(10_000_000, { message: "HTMLコンテンツは10MB以下にしてください" })
|
|
830
|
+
.optional(),
|
|
831
|
+
css: z.string().max(5_000_000, { message: "CSSコンテンツは5MB以下にしてください" }).optional(),
|
|
832
|
+
includeInlineStyles: z.boolean().default(true),
|
|
833
|
+
includeStyleSheets: z.boolean().default(true),
|
|
834
|
+
minDuration: z
|
|
835
|
+
.number()
|
|
836
|
+
.min(0, { message: "minDurationは0以上である必要があります" })
|
|
837
|
+
.max(60000, { message: "minDurationは60000ms以下にしてください" })
|
|
838
|
+
.default(0),
|
|
839
|
+
maxPatterns: z
|
|
840
|
+
.number()
|
|
841
|
+
.int()
|
|
842
|
+
.min(1, { message: "maxPatternsは1以上である必要があります" })
|
|
843
|
+
.max(4000, { message: "maxPatternsは4000以下にしてください" })
|
|
844
|
+
.default(100),
|
|
845
|
+
includeWarnings: z.boolean().default(true),
|
|
846
|
+
min_severity: warningSeveritySchema.optional().default("info"),
|
|
847
|
+
includeSummary: z.boolean().default(true),
|
|
848
|
+
verbose: z.boolean().default(false),
|
|
849
|
+
|
|
850
|
+
// v0.1.0: 検出モード
|
|
851
|
+
detection_mode: detectionModeSchema
|
|
852
|
+
.default("video")
|
|
853
|
+
.describe(
|
|
854
|
+
"Detection mode: 'video' (default, requires url) for visual motion detection with frame capture and Lighthouse integration, 'css' (requires html/pageId) for static CSS parsing, 'runtime' (requires url) for JS-driven animations (SPA/React/Vue), 'hybrid' (requires url) for CSS+runtime combined."
|
|
855
|
+
),
|
|
856
|
+
|
|
857
|
+
// v0.1.0: 3D効果検出オプション
|
|
858
|
+
include_perspective: z.boolean().default(false),
|
|
859
|
+
|
|
860
|
+
// v0.1.0: ランタイム検出オプション
|
|
861
|
+
runtime_options: runtimeOptionsSchema.optional(),
|
|
862
|
+
|
|
863
|
+
// 外部CSS取得オプション
|
|
864
|
+
fetchExternalCss: z.boolean().default(true),
|
|
865
|
+
baseUrl: z.string().url({ message: "baseUrlは有効なURL形式である必要があります" }).optional(),
|
|
866
|
+
externalCssOptions: externalCssOptionsSchema.optional(),
|
|
867
|
+
// DB保存オプション
|
|
868
|
+
save_to_db: z.boolean().default(true),
|
|
869
|
+
|
|
870
|
+
// ============================================
|
|
871
|
+
// Phase1: 動画キャプチャオプション (v0.1.0)
|
|
872
|
+
// ============================================
|
|
873
|
+
|
|
874
|
+
/**
|
|
875
|
+
* 動画キャプチャ用URL
|
|
876
|
+
* detection_mode='video'の場合に必須。
|
|
877
|
+
* http/https のみ許可。SSRF対策が適用されます。
|
|
878
|
+
*/
|
|
879
|
+
url: z
|
|
880
|
+
.string()
|
|
881
|
+
.url({ message: "urlは有効なURL形式である必要があります" })
|
|
882
|
+
.refine(
|
|
883
|
+
(url) => {
|
|
884
|
+
try {
|
|
885
|
+
const parsed = new URL(url);
|
|
886
|
+
return parsed.protocol === "http:" || parsed.protocol === "https:";
|
|
887
|
+
} catch {
|
|
888
|
+
return false;
|
|
889
|
+
}
|
|
890
|
+
},
|
|
891
|
+
{ message: "urlはhttp://またはhttps://で始まる必要があります" }
|
|
892
|
+
)
|
|
893
|
+
.optional(),
|
|
894
|
+
|
|
895
|
+
/**
|
|
896
|
+
* 動画録画・フレーム解析オプション
|
|
897
|
+
* detection_mode='video'の場合のみ有効。
|
|
898
|
+
*/
|
|
899
|
+
video_options: videoOptionsSchema.optional(),
|
|
900
|
+
|
|
901
|
+
// ============================================
|
|
902
|
+
// video mode: フレームキャプチャオプション (v0.1.0)
|
|
903
|
+
// ============================================
|
|
904
|
+
|
|
905
|
+
/**
|
|
906
|
+
* フレームキャプチャを有効にするか
|
|
907
|
+
* detection_mode='video'の場合のみ有効。
|
|
908
|
+
* trueにすると、ページをスクロールしながらフレームを連続撮影し、
|
|
909
|
+
* フレームキャプチャ用の素材を生成します。
|
|
910
|
+
* @default true
|
|
911
|
+
*/
|
|
912
|
+
enable_frame_capture: z
|
|
913
|
+
.boolean()
|
|
914
|
+
.default(true)
|
|
915
|
+
.describe(
|
|
916
|
+
"Enable frame capture for video mode. When true, captures frames while scrolling for video production."
|
|
917
|
+
),
|
|
918
|
+
|
|
919
|
+
/**
|
|
920
|
+
* フレームキャプチャオプション
|
|
921
|
+
* enable_frame_capture=true の場合のみ有効。
|
|
922
|
+
*/
|
|
923
|
+
frame_capture_options: frameCaptureOptionsSchema.optional(),
|
|
924
|
+
|
|
925
|
+
// ============================================
|
|
926
|
+
// Phase3: Lighthouseオプション (v0.1.0)
|
|
927
|
+
// ============================================
|
|
928
|
+
|
|
929
|
+
/**
|
|
930
|
+
* Lighthouse実行オプション
|
|
931
|
+
* detection_mode='video'の場合のみ有効。
|
|
932
|
+
* 動画キャプチャ後にLighthouseを実行してパフォーマンスメトリクスを収集します。
|
|
933
|
+
*/
|
|
934
|
+
lighthouse_options: lighthouseOptionsSchema.optional(),
|
|
935
|
+
|
|
936
|
+
// ============================================
|
|
937
|
+
// Phase4: AnimationMetricsCollector パラメータ (v0.1.0)
|
|
938
|
+
// ============================================
|
|
939
|
+
|
|
940
|
+
/**
|
|
941
|
+
* アニメーションパフォーマンス分析を有効にするか
|
|
942
|
+
* detection_mode='video' かつ lighthouse_options.enabled=true の場合に有効。
|
|
943
|
+
* trueにすると、MotionPatternとLighthouseメトリクスを分析して
|
|
944
|
+
* アニメーションがパフォーマンスに与える影響を定量化します。
|
|
945
|
+
* @default false
|
|
946
|
+
*/
|
|
947
|
+
analyze_metrics: z
|
|
948
|
+
.boolean()
|
|
949
|
+
.default(false)
|
|
950
|
+
.describe(
|
|
951
|
+
"Enable animation performance analysis using AnimationMetricsCollector. Requires detection_mode=video and lighthouse_options.enabled=true."
|
|
952
|
+
),
|
|
953
|
+
|
|
954
|
+
/**
|
|
955
|
+
* AnimationMetricsCollector オプション
|
|
956
|
+
* analyze_metrics=true の場合のみ有効。
|
|
957
|
+
*/
|
|
958
|
+
analyze_metrics_options: analyzeMetricsOptionsSchema.optional(),
|
|
959
|
+
|
|
960
|
+
// ============================================
|
|
961
|
+
// Phase5: Frame Image Analysis パラメータ (v0.1.0)
|
|
962
|
+
// ============================================
|
|
963
|
+
|
|
964
|
+
/**
|
|
965
|
+
* フレーム画像分析を有効にするか
|
|
966
|
+
* detection_mode='video' の場合に有効。
|
|
967
|
+
* trueにすると、キャプチャされたフレーム画像を解析し、
|
|
968
|
+
* ピクセル差分、レイアウトシフト(CLS)、モーションベクトルを検出します。
|
|
969
|
+
* @default true
|
|
970
|
+
*/
|
|
971
|
+
analyze_frames: z
|
|
972
|
+
.boolean()
|
|
973
|
+
.default(true)
|
|
974
|
+
.describe(
|
|
975
|
+
"Enable frame image analysis using Pixelmatch + Sharp. Detects pixel diff, layout shifts (CLS), and motion vectors. Requires detection_mode=video."
|
|
976
|
+
),
|
|
977
|
+
|
|
978
|
+
/**
|
|
979
|
+
* フレーム画像分析オプション
|
|
980
|
+
* analyze_frames=true の場合のみ有効。
|
|
981
|
+
*/
|
|
982
|
+
frame_analysis_options: frameImageAnalysisInputOptionsSchema
|
|
983
|
+
.optional()
|
|
984
|
+
.describe("Frame image analysis options. Only effective when analyze_frames=true."),
|
|
985
|
+
|
|
986
|
+
// ============================================
|
|
987
|
+
// Phase6: JS Animation Detection パラメータ (v0.1.0)
|
|
988
|
+
// ============================================
|
|
989
|
+
|
|
990
|
+
/**
|
|
991
|
+
* JSアニメーション検出を有効にするか
|
|
992
|
+
* detection_mode='video', 'runtime', 'hybrid' の場合に有効。
|
|
993
|
+
* trueにすると、Chrome DevTools Protocol (CDP) と Web Animations API を使用して
|
|
994
|
+
* JavaScript駆動のアニメーションを検出します。
|
|
995
|
+
* GSAP, Framer Motion, Anime.js, Three.js, Lottie などのライブラリも検出します。
|
|
996
|
+
* @default false
|
|
997
|
+
*/
|
|
998
|
+
detect_js_animations: z
|
|
999
|
+
.boolean()
|
|
1000
|
+
.default(false)
|
|
1001
|
+
.describe(
|
|
1002
|
+
"Enable JS animation detection using CDP and Web Animations API. Detects GSAP, Framer Motion, Anime.js, Three.js, Lottie. Requires url (video/runtime/hybrid mode)."
|
|
1003
|
+
),
|
|
1004
|
+
|
|
1005
|
+
/**
|
|
1006
|
+
* JSアニメーション検出オプション
|
|
1007
|
+
* detect_js_animations=true の場合のみ有効。
|
|
1008
|
+
*/
|
|
1009
|
+
js_animation_options: jsAnimationOptionsSchema.optional(),
|
|
1010
|
+
|
|
1011
|
+
// ============================================
|
|
1012
|
+
// レスポンスサイズ最適化パラメータ (v0.1.0)
|
|
1013
|
+
// ============================================
|
|
1014
|
+
|
|
1015
|
+
/**
|
|
1016
|
+
* 軽量モード(summary mode)
|
|
1017
|
+
* trueにすると、パターンの詳細情報(animation, performance, rawCss等)を除外し、
|
|
1018
|
+
* id, name, category, trigger, type のみを返却します。
|
|
1019
|
+
* 期待削減率: 70-85%
|
|
1020
|
+
* @default false
|
|
1021
|
+
*/
|
|
1022
|
+
summary: z
|
|
1023
|
+
.boolean()
|
|
1024
|
+
.default(false)
|
|
1025
|
+
.describe(
|
|
1026
|
+
"Lightweight mode: returns id, name, category, trigger, type only (default: false). When true, detailed animation/performance/rawCss info is excluded for 70-85% response size reduction."
|
|
1027
|
+
),
|
|
1028
|
+
|
|
1029
|
+
/**
|
|
1030
|
+
* レスポンス最大文字数制限
|
|
1031
|
+
* 指定した文字数を超える場合、パターンを順次削減して制限内に収めます。
|
|
1032
|
+
* 切り詰め発生時は _truncated: true と _original_size がレスポンスに含まれます。
|
|
1033
|
+
* @minimum 100
|
|
1034
|
+
* @maximum 10000000
|
|
1035
|
+
*/
|
|
1036
|
+
truncate_max_chars: z
|
|
1037
|
+
.number()
|
|
1038
|
+
.int()
|
|
1039
|
+
.min(100, { message: "truncate_max_charsは100以上である必要があります" })
|
|
1040
|
+
.max(10_000_000, { message: "truncate_max_charsは10000000以下にしてください" })
|
|
1041
|
+
.optional()
|
|
1042
|
+
.describe(
|
|
1043
|
+
"Max response size in characters (100-10000000). When exceeded, patterns are progressively removed and _truncated metadata is added."
|
|
1044
|
+
),
|
|
1045
|
+
|
|
1046
|
+
/**
|
|
1047
|
+
* 自動サイズ最適化
|
|
1048
|
+
* trueにすると、レスポンスサイズに応じて自動的に最適化を適用します。
|
|
1049
|
+
* - 100KB超: summary=true に切り替え
|
|
1050
|
+
* - 500KB超: truncate を適用
|
|
1051
|
+
* 適用された最適化は _size_optimization メタデータで報告されます。
|
|
1052
|
+
* @default false
|
|
1053
|
+
*/
|
|
1054
|
+
auto_optimize: z
|
|
1055
|
+
.boolean()
|
|
1056
|
+
.default(false)
|
|
1057
|
+
.describe(
|
|
1058
|
+
"Auto-optimize response size: applies summary=true when >100KB, truncate when >500KB. Reports applied optimizations in _size_optimization metadata."
|
|
1059
|
+
),
|
|
1060
|
+
|
|
1061
|
+
// ============================================
|
|
1062
|
+
// タイムアウト設定 (v0.1.0)
|
|
1063
|
+
// ============================================
|
|
1064
|
+
|
|
1065
|
+
/**
|
|
1066
|
+
* 全体タイムアウト(ミリ秒)
|
|
1067
|
+
* motion.detect 処理全体の最大実行時間を指定します。
|
|
1068
|
+
* タイムアウト発生時は、それまでに取得できた結果(CSS解析等)を
|
|
1069
|
+
* 警告付きで返却します(graceful degradation)。
|
|
1070
|
+
* @minimum 30000 (30秒)
|
|
1071
|
+
* @maximum 600000 (10分)
|
|
1072
|
+
* @default 180000 (3分)
|
|
1073
|
+
*/
|
|
1074
|
+
timeout: z
|
|
1075
|
+
.number()
|
|
1076
|
+
.int()
|
|
1077
|
+
.min(30000, { message: "timeoutは30000ms(30秒)以上である必要があります" })
|
|
1078
|
+
.max(600000, { message: "timeoutは600000ms(10分)以下にしてください" })
|
|
1079
|
+
.default(180000)
|
|
1080
|
+
.describe(
|
|
1081
|
+
"Overall timeout in milliseconds (30000-600000, default: 180000 = 3 minutes). On timeout, returns partial results with warnings (graceful degradation)."
|
|
1082
|
+
),
|
|
1083
|
+
})
|
|
1084
|
+
.refine(
|
|
1085
|
+
(data) => {
|
|
1086
|
+
// video/runtime/hybrid モードの場合は url が必須
|
|
1087
|
+
if (
|
|
1088
|
+
data.detection_mode === "video" ||
|
|
1089
|
+
data.detection_mode === "runtime" ||
|
|
1090
|
+
data.detection_mode === "hybrid"
|
|
1091
|
+
) {
|
|
1092
|
+
return data.url !== undefined;
|
|
1093
|
+
}
|
|
1094
|
+
// それ以外のモードでは pageId または html が必須
|
|
1095
|
+
const hasPageId = data.pageId !== undefined;
|
|
1096
|
+
const hasHtml = data.html !== undefined;
|
|
1097
|
+
return hasPageId || hasHtml;
|
|
1098
|
+
},
|
|
1099
|
+
{
|
|
1100
|
+
message:
|
|
1101
|
+
"detection_mode=video/runtime/hybridの場合はurlが必須、それ以外はpageIdまたはhtmlのいずれかを指定してください",
|
|
1102
|
+
}
|
|
1103
|
+
)
|
|
1104
|
+
.refine(
|
|
1105
|
+
(_data) => {
|
|
1106
|
+
// video モードでは pageId/html は使用しない(警告ではなく無視される)
|
|
1107
|
+
// この refine は検証ではなくドキュメント目的
|
|
1108
|
+
return true;
|
|
1109
|
+
},
|
|
1110
|
+
{
|
|
1111
|
+
message: "detection_mode=videoの場合、pageId/htmlは無視されます",
|
|
1112
|
+
}
|
|
1113
|
+
)
|
|
1114
|
+
.refine(
|
|
1115
|
+
(data) => {
|
|
1116
|
+
// fetchExternalCss=true の場合、baseUrl が必須
|
|
1117
|
+
// ただし、以下の場合は免除:
|
|
1118
|
+
// 1. detection_mode='css' かつ html/pageId 指定(CSS静的解析モードでは外部CSSフェッチは任意)
|
|
1119
|
+
// 2. detection_mode='video'/'runtime'/'hybrid' かつ url 指定(urlからbaseUrlを推測可能)
|
|
1120
|
+
if (data.fetchExternalCss && !data.baseUrl) {
|
|
1121
|
+
// css モードで html または pageId が指定されている場合は OK
|
|
1122
|
+
if (data.detection_mode === "css" && (data.html || data.pageId)) {
|
|
1123
|
+
return true;
|
|
1124
|
+
}
|
|
1125
|
+
// video/runtime/hybrid モードで url が指定されている場合は OK(urlからbaseUrlを推測可能)
|
|
1126
|
+
if (
|
|
1127
|
+
(data.detection_mode === "video" ||
|
|
1128
|
+
data.detection_mode === "runtime" ||
|
|
1129
|
+
data.detection_mode === "hybrid") &&
|
|
1130
|
+
data.url
|
|
1131
|
+
) {
|
|
1132
|
+
return true;
|
|
1133
|
+
}
|
|
1134
|
+
return false;
|
|
1135
|
+
}
|
|
1136
|
+
return true;
|
|
1137
|
+
},
|
|
1138
|
+
{
|
|
1139
|
+
message:
|
|
1140
|
+
"fetchExternalCssがtrueの場合、baseUrlは必須です(css+html/pageIdまたはvideo/runtime/hybrid+url指定時を除く)",
|
|
1141
|
+
path: ["baseUrl"],
|
|
1142
|
+
}
|
|
1143
|
+
);
|
|
1144
|
+
export type MotionDetectInput = z.infer<typeof motionDetectInputSchema>;
|
|
1145
|
+
|
|
1146
|
+
// ============================================================================
|
|
1147
|
+
// motion.detect Output Schema
|
|
1148
|
+
// ============================================================================
|
|
1149
|
+
|
|
1150
|
+
/**
|
|
1151
|
+
* DB保存結果スキーマ
|
|
1152
|
+
*/
|
|
1153
|
+
export const motionSaveResultSchema = z.object({
|
|
1154
|
+
saved: z.boolean(),
|
|
1155
|
+
savedCount: z.number().int().nonnegative(),
|
|
1156
|
+
patternIds: z.array(z.string().uuid()),
|
|
1157
|
+
embeddingIds: z.array(z.string().uuid()),
|
|
1158
|
+
/** 保存されなかった理由(saved=false時) */
|
|
1159
|
+
reason: z.string().optional(),
|
|
1160
|
+
});
|
|
1161
|
+
export type MotionSaveResult = z.infer<typeof motionSaveResultSchema>;
|
|
1162
|
+
|
|
1163
|
+
/**
|
|
1164
|
+
* デバッグ情報スキーマ(開発環境のみ)
|
|
1165
|
+
*/
|
|
1166
|
+
export const debugInfoSchema = z
|
|
1167
|
+
.object({
|
|
1168
|
+
persistenceServiceAvailable: z.boolean(),
|
|
1169
|
+
isAvailable: z.boolean().optional(),
|
|
1170
|
+
error: z.string().optional(),
|
|
1171
|
+
factoryExists: z.boolean().optional(),
|
|
1172
|
+
})
|
|
1173
|
+
.optional();
|
|
1174
|
+
|
|
1175
|
+
/**
|
|
1176
|
+
* ランタイム実行情報スキーマ (v0.1.0)
|
|
1177
|
+
*
|
|
1178
|
+
* runtime / hybrid モードで返却されるランタイム実行情報
|
|
1179
|
+
*/
|
|
1180
|
+
export const runtimeInfoSchema = z.object({
|
|
1181
|
+
/** 実際に使用された待機時間(ms) */
|
|
1182
|
+
wait_time_used: z.number().min(0).optional(),
|
|
1183
|
+
/** キャプチャされたアニメーション数 */
|
|
1184
|
+
animations_captured: z.number().int().nonnegative().optional(),
|
|
1185
|
+
/** チェックされたスクロール位置の配列(%) */
|
|
1186
|
+
scroll_positions_checked: z.array(z.number().min(0).max(100)).optional(),
|
|
1187
|
+
/** スクロール位置ごとのパターン数 */
|
|
1188
|
+
patterns_by_scroll_position: z.record(z.string(), z.number().int().nonnegative()).optional(),
|
|
1189
|
+
/** スクロールで検出されたパターン総数 */
|
|
1190
|
+
total_scroll_patterns: z.number().int().nonnegative().optional(),
|
|
1191
|
+
});
|
|
1192
|
+
export type RuntimeInfo = z.infer<typeof runtimeInfoSchema>;
|
|
1193
|
+
|
|
1194
|
+
/**
|
|
1195
|
+
* ビデオ解析情報スキーマ (Phase1: v0.1.0)
|
|
1196
|
+
*
|
|
1197
|
+
* detection_mode='video' で返却されるビデオ録画・解析情報
|
|
1198
|
+
*/
|
|
1199
|
+
export const videoInfoSchema = z.object({
|
|
1200
|
+
/** 録画URL */
|
|
1201
|
+
recorded_url: z.string().url(),
|
|
1202
|
+
/** 録画時間(ms) */
|
|
1203
|
+
record_duration_ms: z.number().int().min(0),
|
|
1204
|
+
/** 動画ファイルサイズ(bytes) */
|
|
1205
|
+
video_size_bytes: z.number().int().nonnegative(),
|
|
1206
|
+
/** 解析したフレーム数 */
|
|
1207
|
+
frames_analyzed: z.number().int().nonnegative(),
|
|
1208
|
+
/** 検出されたモーションセグメント数 */
|
|
1209
|
+
motion_segments_detected: z.number().int().nonnegative(),
|
|
1210
|
+
/** 処理時間(ms) */
|
|
1211
|
+
processing_time_ms: z.number().int().nonnegative(),
|
|
1212
|
+
/** ビューポートサイズ */
|
|
1213
|
+
viewport: z
|
|
1214
|
+
.object({
|
|
1215
|
+
width: z.number().int().positive(),
|
|
1216
|
+
height: z.number().int().positive(),
|
|
1217
|
+
})
|
|
1218
|
+
.optional(),
|
|
1219
|
+
/** ページタイトル */
|
|
1220
|
+
page_title: z.string().optional(),
|
|
1221
|
+
/** モーションカバレッジ(0-1) - 動画内でモーションが検出された時間の割合 */
|
|
1222
|
+
motion_coverage: z.number().min(0).max(1).optional(),
|
|
1223
|
+
});
|
|
1224
|
+
export type VideoInfo = z.infer<typeof videoInfoSchema>;
|
|
1225
|
+
|
|
1226
|
+
// ============================================================================
|
|
1227
|
+
// レスポンスサイズ最適化メタデータスキーマ (v0.1.0)
|
|
1228
|
+
// ============================================================================
|
|
1229
|
+
|
|
1230
|
+
/**
|
|
1231
|
+
* サイズ最適化情報スキーマ
|
|
1232
|
+
* auto_optimize=true 時に適用された最適化の詳細情報
|
|
1233
|
+
*/
|
|
1234
|
+
export const sizeOptimizationSchema = z.object({
|
|
1235
|
+
/** 最適化前のサイズ(バイト) */
|
|
1236
|
+
original_size_bytes: z.number().int().nonnegative(),
|
|
1237
|
+
/** 最適化後のサイズ(バイト) */
|
|
1238
|
+
optimized_size_bytes: z.number().int().nonnegative(),
|
|
1239
|
+
/** 削減率(%) */
|
|
1240
|
+
reduction_percent: z.number().min(0).max(100),
|
|
1241
|
+
/** 適用された最適化のリスト */
|
|
1242
|
+
applied_optimizations: z.array(z.enum(["summary", "truncate"])),
|
|
1243
|
+
});
|
|
1244
|
+
export type SizeOptimization = z.infer<typeof sizeOptimizationSchema>;
|
|
1245
|
+
|
|
1246
|
+
/**
|
|
1247
|
+
* motion.detect 成功レスポンスデータスキーマ
|
|
1248
|
+
*/
|
|
1249
|
+
export const motionDetectDataSchema = z.object({
|
|
1250
|
+
pageId: z.string().uuid().optional(),
|
|
1251
|
+
patterns: z.array(motionPatternSchema),
|
|
1252
|
+
summary: motionSummarySchema.optional(),
|
|
1253
|
+
warnings: z.array(motionWarningSchema).optional(),
|
|
1254
|
+
metadata: motionMetadataSchema,
|
|
1255
|
+
saveResult: motionSaveResultSchema.optional(),
|
|
1256
|
+
/** デバッグ情報(開発環境のみ) */
|
|
1257
|
+
_debugInfo: debugInfoSchema,
|
|
1258
|
+
/** v0.1.0: ランタイム実行情報 (runtime/hybrid モード時) */
|
|
1259
|
+
runtime_info: runtimeInfoSchema.optional(),
|
|
1260
|
+
/** Phase1 v0.1.0: ビデオ解析情報 (video モード時) */
|
|
1261
|
+
video_info: videoInfoSchema.optional(),
|
|
1262
|
+
|
|
1263
|
+
// ============================================
|
|
1264
|
+
// video mode: フレームキャプチャ結果 (v0.1.0)
|
|
1265
|
+
// ============================================
|
|
1266
|
+
|
|
1267
|
+
/**
|
|
1268
|
+
* フレームキャプチャ結果
|
|
1269
|
+
* enable_frame_capture=true かつ detection_mode='video' の場合に設定
|
|
1270
|
+
* enable_frame_capture=false の場合は undefined
|
|
1271
|
+
*/
|
|
1272
|
+
frame_capture: frameCaptureResultSchema.optional(),
|
|
1273
|
+
|
|
1274
|
+
/**
|
|
1275
|
+
* フレームキャプチャエラー情報
|
|
1276
|
+
* フレームキャプチャ実行が失敗した場合に設定(graceful degradation)
|
|
1277
|
+
*/
|
|
1278
|
+
frame_capture_error: z
|
|
1279
|
+
.object({
|
|
1280
|
+
code: z.string(),
|
|
1281
|
+
message: z.string(),
|
|
1282
|
+
})
|
|
1283
|
+
.optional(),
|
|
1284
|
+
|
|
1285
|
+
// ============================================
|
|
1286
|
+
// Phase3: Lighthouseメトリクス (v0.1.0)
|
|
1287
|
+
// ============================================
|
|
1288
|
+
|
|
1289
|
+
/**
|
|
1290
|
+
* Lighthouseパフォーマンスメトリクス
|
|
1291
|
+
* lighthouse_options.enabled=true かつ detection_mode='video' の場合に設定
|
|
1292
|
+
* エラーまたは利用不可の場合はnull
|
|
1293
|
+
*/
|
|
1294
|
+
lighthouse_metrics: lighthouseMetricsSchema.nullable().optional(),
|
|
1295
|
+
|
|
1296
|
+
/**
|
|
1297
|
+
* Lighthouseエラー情報
|
|
1298
|
+
* Lighthouse実行が失敗した場合に設定(graceful degradation)
|
|
1299
|
+
*/
|
|
1300
|
+
lighthouse_error: z
|
|
1301
|
+
.object({
|
|
1302
|
+
code: z.string(),
|
|
1303
|
+
message: z.string(),
|
|
1304
|
+
})
|
|
1305
|
+
.optional(),
|
|
1306
|
+
|
|
1307
|
+
/**
|
|
1308
|
+
* Lighthouse DB保存結果
|
|
1309
|
+
* lighthouse_options.save_to_db=true の場合に設定
|
|
1310
|
+
*/
|
|
1311
|
+
lighthouse_save_result: z
|
|
1312
|
+
.object({
|
|
1313
|
+
saved: z.boolean(),
|
|
1314
|
+
})
|
|
1315
|
+
.optional(),
|
|
1316
|
+
|
|
1317
|
+
// ============================================
|
|
1318
|
+
// Phase4: AnimationMetrics分析結果 (v0.1.0)
|
|
1319
|
+
// ============================================
|
|
1320
|
+
|
|
1321
|
+
/**
|
|
1322
|
+
* アニメーションパフォーマンス分析結果
|
|
1323
|
+
* analyze_metrics=true かつ detection_mode='video' かつ lighthouse_options.enabled=true の場合に設定
|
|
1324
|
+
* エラーまたは利用不可の場合はnull
|
|
1325
|
+
*/
|
|
1326
|
+
animation_metrics: animationMetricsResultSchema.nullable().optional(),
|
|
1327
|
+
|
|
1328
|
+
/**
|
|
1329
|
+
* AnimationMetrics分析エラー情報
|
|
1330
|
+
* 分析が失敗した場合に設定(graceful degradation)
|
|
1331
|
+
*/
|
|
1332
|
+
animation_metrics_error: z
|
|
1333
|
+
.object({
|
|
1334
|
+
code: z.string(),
|
|
1335
|
+
message: z.string(),
|
|
1336
|
+
})
|
|
1337
|
+
.optional(),
|
|
1338
|
+
|
|
1339
|
+
// ============================================
|
|
1340
|
+
// Phase5: Frame Image Analysis結果 (v0.1.0)
|
|
1341
|
+
// ============================================
|
|
1342
|
+
|
|
1343
|
+
/**
|
|
1344
|
+
* フレーム画像分析結果
|
|
1345
|
+
* analyze_frames=true かつ detection_mode='video' の場合に設定
|
|
1346
|
+
* Pixelmatch + Sharp を使用してフレーム間の差分、レイアウトシフト、モーションベクトルを検出
|
|
1347
|
+
*/
|
|
1348
|
+
frame_analysis: z
|
|
1349
|
+
.object({
|
|
1350
|
+
/**
|
|
1351
|
+
* 分析メタデータ
|
|
1352
|
+
*/
|
|
1353
|
+
metadata: z.object({
|
|
1354
|
+
/** 総フレーム数 */
|
|
1355
|
+
totalFrames: z.number().int().nonnegative(),
|
|
1356
|
+
/** 分析したフレームペア数 */
|
|
1357
|
+
analyzedPairs: z.number().int().nonnegative(),
|
|
1358
|
+
/** サンプリング間隔 */
|
|
1359
|
+
sampleInterval: z.number().int().positive(),
|
|
1360
|
+
/** フレームあたりのスクロール量(px) */
|
|
1361
|
+
scrollPxPerFrame: z.number().positive(),
|
|
1362
|
+
/** 分析時間(秒) */
|
|
1363
|
+
analysisTime: z.string(),
|
|
1364
|
+
/** 分析日時(ISO 8601) */
|
|
1365
|
+
analyzedAt: z.string(),
|
|
1366
|
+
}),
|
|
1367
|
+
|
|
1368
|
+
/**
|
|
1369
|
+
* 統計情報
|
|
1370
|
+
*/
|
|
1371
|
+
statistics: z.object({
|
|
1372
|
+
/** 平均ピクセル差分(%) */
|
|
1373
|
+
averageDiffPercentage: z.string(),
|
|
1374
|
+
/** 有意な変化があったフレームペア数 */
|
|
1375
|
+
significantChangeCount: z.number().int().nonnegative(),
|
|
1376
|
+
/** 有意な変化の割合(%) */
|
|
1377
|
+
significantChangePercentage: z.string(),
|
|
1378
|
+
/** レイアウトシフト検出数 */
|
|
1379
|
+
layoutShiftCount: z.number().int().nonnegative(),
|
|
1380
|
+
/** モーションベクトル検出数 */
|
|
1381
|
+
motionVectorCount: z.number().int().nonnegative(),
|
|
1382
|
+
}),
|
|
1383
|
+
|
|
1384
|
+
/**
|
|
1385
|
+
* 検出されたアニメーションゾーン
|
|
1386
|
+
* 連続する有意な変化がある領域を検出
|
|
1387
|
+
*/
|
|
1388
|
+
animationZones: z.array(
|
|
1389
|
+
z.object({
|
|
1390
|
+
/** 開始フレーム名 */
|
|
1391
|
+
frameStart: z.string(),
|
|
1392
|
+
/** 終了フレーム名 */
|
|
1393
|
+
frameEnd: z.string(),
|
|
1394
|
+
/** スクロール開始位置(px) */
|
|
1395
|
+
scrollStart: z.number().nonnegative(),
|
|
1396
|
+
/** スクロール終了位置(px) */
|
|
1397
|
+
scrollEnd: z.number().nonnegative(),
|
|
1398
|
+
/** アニメーション持続時間(スクロールpx) */
|
|
1399
|
+
duration: z.number().nonnegative(),
|
|
1400
|
+
/** 平均ピクセル差分(%) */
|
|
1401
|
+
avgDiff: z.string(),
|
|
1402
|
+
/** 最大ピクセル差分(%) */
|
|
1403
|
+
peakDiff: z.string(),
|
|
1404
|
+
/** アニメーションタイプ推定 */
|
|
1405
|
+
animationType: z.enum([
|
|
1406
|
+
"micro-interaction",
|
|
1407
|
+
"fade/slide transition",
|
|
1408
|
+
"scroll-linked animation",
|
|
1409
|
+
"long-form reveal",
|
|
1410
|
+
]),
|
|
1411
|
+
})
|
|
1412
|
+
),
|
|
1413
|
+
|
|
1414
|
+
/**
|
|
1415
|
+
* 検出されたレイアウトシフト(CLS問題)
|
|
1416
|
+
* Core Web Vitalsの基準(0.05)を超えるシフトを検出
|
|
1417
|
+
*/
|
|
1418
|
+
layoutShifts: z.array(
|
|
1419
|
+
z.object({
|
|
1420
|
+
/** フレーム範囲(例: "frame-0010.png - frame-0020.png") */
|
|
1421
|
+
frameRange: z.string(),
|
|
1422
|
+
/** スクロール範囲(例: "150px - 300px") */
|
|
1423
|
+
scrollRange: z.string(),
|
|
1424
|
+
/** 影響度スコア(CLS指標) */
|
|
1425
|
+
impactFraction: z.string(),
|
|
1426
|
+
/** 影響を受けた領域のバウンディングボックス */
|
|
1427
|
+
boundingBox: z.object({
|
|
1428
|
+
x: z.number().int().nonnegative(),
|
|
1429
|
+
y: z.number().int().nonnegative(),
|
|
1430
|
+
width: z.number().int().nonnegative(),
|
|
1431
|
+
height: z.number().int().nonnegative(),
|
|
1432
|
+
}),
|
|
1433
|
+
})
|
|
1434
|
+
),
|
|
1435
|
+
|
|
1436
|
+
/**
|
|
1437
|
+
* 検出されたモーションベクトル
|
|
1438
|
+
* 閾値を超える移動があるフレームペアを検出
|
|
1439
|
+
*/
|
|
1440
|
+
motionVectors: z.array(
|
|
1441
|
+
z.object({
|
|
1442
|
+
/** フレーム範囲 */
|
|
1443
|
+
frameRange: z.string(),
|
|
1444
|
+
/** X方向移動量(px) */
|
|
1445
|
+
dx: z.number(),
|
|
1446
|
+
/** Y方向移動量(px) */
|
|
1447
|
+
dy: z.number(),
|
|
1448
|
+
/** 移動量の大きさ(px) */
|
|
1449
|
+
magnitude: z.string(),
|
|
1450
|
+
/** 移動方向 */
|
|
1451
|
+
direction: z.enum(["up", "down", "left", "right", "stationary"]),
|
|
1452
|
+
/** 角度(度) */
|
|
1453
|
+
angle: z.string(),
|
|
1454
|
+
})
|
|
1455
|
+
),
|
|
1456
|
+
})
|
|
1457
|
+
.nullable()
|
|
1458
|
+
.optional()
|
|
1459
|
+
.describe(
|
|
1460
|
+
"Frame image analysis results. Set when analyze_frames=true and detection_mode=video. Uses Pixelmatch + Sharp for diff detection, layout shift (CLS) detection, and motion vector estimation."
|
|
1461
|
+
),
|
|
1462
|
+
|
|
1463
|
+
/**
|
|
1464
|
+
* フレーム画像分析エラー情報
|
|
1465
|
+
* 分析が失敗した場合に設定(graceful degradation)
|
|
1466
|
+
*/
|
|
1467
|
+
frame_analysis_error: z
|
|
1468
|
+
.object({
|
|
1469
|
+
code: z.string(),
|
|
1470
|
+
message: z.string(),
|
|
1471
|
+
})
|
|
1472
|
+
.optional(),
|
|
1473
|
+
|
|
1474
|
+
/**
|
|
1475
|
+
* フレーム画像分析結果のDB保存結果 (v0.1.0)
|
|
1476
|
+
* save_to_db=true かつ analyze_frames=true の場合に、
|
|
1477
|
+
* AnimationZone/LayoutShift/MotionVectorをMotionPatternとして保存した結果
|
|
1478
|
+
*/
|
|
1479
|
+
frame_analysis_save_result: z
|
|
1480
|
+
.object({
|
|
1481
|
+
/** 保存が成功したか */
|
|
1482
|
+
saved: z.boolean(),
|
|
1483
|
+
/** 保存したパターン数 */
|
|
1484
|
+
savedCount: z.number().int().nonnegative(),
|
|
1485
|
+
/** 保存したパターンID一覧 */
|
|
1486
|
+
patternIds: z.array(z.string().uuid()),
|
|
1487
|
+
/** 保存したEmbedding ID一覧 */
|
|
1488
|
+
embeddingIds: z.array(z.string().uuid()),
|
|
1489
|
+
/** エラー理由(失敗時) */
|
|
1490
|
+
reason: z.string().optional(),
|
|
1491
|
+
/** カテゴリ別保存数 */
|
|
1492
|
+
byCategory: z
|
|
1493
|
+
.object({
|
|
1494
|
+
animationZones: z.number().int().nonnegative(),
|
|
1495
|
+
layoutShifts: z.number().int().nonnegative(),
|
|
1496
|
+
motionVectors: z.number().int().nonnegative(),
|
|
1497
|
+
})
|
|
1498
|
+
.optional(),
|
|
1499
|
+
})
|
|
1500
|
+
.optional()
|
|
1501
|
+
.describe(
|
|
1502
|
+
"DB save result for frame analysis. Set when save_to_db=true and analyze_frames=true. Saves AnimationZones, LayoutShifts, and MotionVectors as MotionPatterns with embeddings."
|
|
1503
|
+
),
|
|
1504
|
+
|
|
1505
|
+
// ============================================
|
|
1506
|
+
// Phase6: JS Animation Detection結果 (v0.1.0)
|
|
1507
|
+
// ============================================
|
|
1508
|
+
|
|
1509
|
+
/**
|
|
1510
|
+
* JSアニメーション検出結果
|
|
1511
|
+
* detect_js_animations=true かつ URL指定時(runtime/hybrid/videoモード)に設定
|
|
1512
|
+
* Chrome DevTools Protocol + Web Animations API + ライブラリ検出の統合結果
|
|
1513
|
+
*/
|
|
1514
|
+
js_animations: jsAnimationResultSchema
|
|
1515
|
+
.nullable()
|
|
1516
|
+
.optional()
|
|
1517
|
+
.describe(
|
|
1518
|
+
"JS animation detection results. Set when detect_js_animations=true and URL is provided. " +
|
|
1519
|
+
"Combines CDP Animation domain, Web Animations API, and library detection (GSAP, Framer Motion, Anime.js, Three.js, Lottie)."
|
|
1520
|
+
),
|
|
1521
|
+
|
|
1522
|
+
/**
|
|
1523
|
+
* JSアニメーション検出エラー情報
|
|
1524
|
+
* 検出が失敗した場合に設定(graceful degradation)
|
|
1525
|
+
*/
|
|
1526
|
+
js_animations_error: z
|
|
1527
|
+
.object({
|
|
1528
|
+
code: z.string(),
|
|
1529
|
+
message: z.string(),
|
|
1530
|
+
})
|
|
1531
|
+
.optional(),
|
|
1532
|
+
|
|
1533
|
+
/**
|
|
1534
|
+
* JSアニメーションDB保存結果 (v0.1.0)
|
|
1535
|
+
* save_to_db=true かつ JS Animation検出成功時に設定
|
|
1536
|
+
* js_animation_patterns + js_animation_embeddings テーブルへの保存結果
|
|
1537
|
+
*/
|
|
1538
|
+
js_animation_save_result: z
|
|
1539
|
+
.object({
|
|
1540
|
+
savedPatternCount: z.number().int().nonnegative(),
|
|
1541
|
+
embeddingCount: z.number().int().nonnegative(),
|
|
1542
|
+
error: z.string().optional(),
|
|
1543
|
+
})
|
|
1544
|
+
.optional()
|
|
1545
|
+
.describe(
|
|
1546
|
+
"DB save result for JS animation patterns. Set when save_to_db=true and JS animations are detected. " +
|
|
1547
|
+
"Saves to js_animation_patterns and js_animation_embeddings tables with multilingual-e5-base embeddings."
|
|
1548
|
+
),
|
|
1549
|
+
|
|
1550
|
+
// ============================================
|
|
1551
|
+
// レスポンスサイズ最適化メタデータ (v0.1.0)
|
|
1552
|
+
// ============================================
|
|
1553
|
+
|
|
1554
|
+
/**
|
|
1555
|
+
* サマリーモードフラグ
|
|
1556
|
+
* summary=true が適用された場合に true
|
|
1557
|
+
*/
|
|
1558
|
+
_summary_mode: z.boolean().optional(),
|
|
1559
|
+
|
|
1560
|
+
/**
|
|
1561
|
+
* 切り詰めフラグ
|
|
1562
|
+
* truncate_max_chars による切り詰めが発生した場合に true
|
|
1563
|
+
*/
|
|
1564
|
+
_truncated: z.boolean().optional(),
|
|
1565
|
+
|
|
1566
|
+
/**
|
|
1567
|
+
* 切り詰め前の元サイズ(文字数)
|
|
1568
|
+
* 切り詰めが発生した場合のみ設定
|
|
1569
|
+
*/
|
|
1570
|
+
_original_size: z.number().int().nonnegative().optional(),
|
|
1571
|
+
|
|
1572
|
+
/**
|
|
1573
|
+
* 切り詰められたパターン数
|
|
1574
|
+
* truncate_max_chars で削減されたパターンの数
|
|
1575
|
+
*/
|
|
1576
|
+
_patterns_truncated_count: z.number().int().nonnegative().optional(),
|
|
1577
|
+
|
|
1578
|
+
/**
|
|
1579
|
+
* サイズ最適化情報
|
|
1580
|
+
* auto_optimize=true で最適化が適用された場合に設定
|
|
1581
|
+
*/
|
|
1582
|
+
_size_optimization: sizeOptimizationSchema.optional(),
|
|
1583
|
+
});
|
|
1584
|
+
export type MotionDetectData = z.infer<typeof motionDetectDataSchema>;
|
|
1585
|
+
|
|
1586
|
+
/**
|
|
1587
|
+
* エラー情報スキーマ
|
|
1588
|
+
*/
|
|
1589
|
+
export const motionDetectErrorSchema = z.object({
|
|
1590
|
+
code: z.string(),
|
|
1591
|
+
message: z.string(),
|
|
1592
|
+
details: z.unknown().optional(),
|
|
1593
|
+
});
|
|
1594
|
+
export type MotionDetectError = z.infer<typeof motionDetectErrorSchema>;
|
|
1595
|
+
|
|
1596
|
+
/**
|
|
1597
|
+
* motion.detect 成功レスポンススキーマ
|
|
1598
|
+
*/
|
|
1599
|
+
export const motionDetectSuccessOutputSchema = z.object({
|
|
1600
|
+
success: z.literal(true),
|
|
1601
|
+
data: motionDetectDataSchema,
|
|
1602
|
+
});
|
|
1603
|
+
|
|
1604
|
+
/**
|
|
1605
|
+
* motion.detect 失敗レスポンススキーマ
|
|
1606
|
+
*/
|
|
1607
|
+
export const motionDetectErrorOutputSchema = z.object({
|
|
1608
|
+
success: z.literal(false),
|
|
1609
|
+
error: motionDetectErrorSchema,
|
|
1610
|
+
});
|
|
1611
|
+
|
|
1612
|
+
/**
|
|
1613
|
+
* motion.detect 出力スキーマ(統合)
|
|
1614
|
+
*/
|
|
1615
|
+
export const motionDetectOutputSchema = z.discriminatedUnion("success", [
|
|
1616
|
+
motionDetectSuccessOutputSchema,
|
|
1617
|
+
motionDetectErrorOutputSchema,
|
|
1618
|
+
]);
|
|
1619
|
+
export type MotionDetectOutput = z.infer<typeof motionDetectOutputSchema>;
|
|
1620
|
+
|
|
1621
|
+
// ============================================================================
|
|
1622
|
+
// Error Codes
|
|
1623
|
+
// ============================================================================
|
|
1624
|
+
|
|
1625
|
+
/**
|
|
1626
|
+
* motion.* ツール用エラーコード
|
|
1627
|
+
*/
|
|
1628
|
+
export const MOTION_MCP_ERROR_CODES = {
|
|
1629
|
+
/** バリデーションエラー */
|
|
1630
|
+
VALIDATION_ERROR: "VALIDATION_ERROR",
|
|
1631
|
+
/** ページが見つからない */
|
|
1632
|
+
PAGE_NOT_FOUND: "PAGE_NOT_FOUND",
|
|
1633
|
+
/** 無効なHTML */
|
|
1634
|
+
INVALID_HTML: "INVALID_HTML",
|
|
1635
|
+
/** 無効なCSS */
|
|
1636
|
+
INVALID_CSS: "INVALID_CSS",
|
|
1637
|
+
/** 解析エラー */
|
|
1638
|
+
PARSE_ERROR: "PARSE_ERROR",
|
|
1639
|
+
/** 検出エラー */
|
|
1640
|
+
DETECTION_ERROR: "DETECTION_ERROR",
|
|
1641
|
+
/** データベースエラー */
|
|
1642
|
+
DB_ERROR: "DB_ERROR",
|
|
1643
|
+
/** 内部エラー */
|
|
1644
|
+
INTERNAL_ERROR: "INTERNAL_ERROR",
|
|
1645
|
+
/** サービス利用不可 */
|
|
1646
|
+
SERVICE_UNAVAILABLE: "SERVICE_UNAVAILABLE",
|
|
1647
|
+
/** タイムアウト */
|
|
1648
|
+
TIMEOUT: "TIMEOUT",
|
|
1649
|
+
/** Phase1: 動画録画エラー */
|
|
1650
|
+
VIDEO_RECORD_ERROR: "VIDEO_RECORD_ERROR",
|
|
1651
|
+
/** Phase1: フレーム解析エラー */
|
|
1652
|
+
FRAME_ANALYSIS_ERROR: "FRAME_ANALYSIS_ERROR",
|
|
1653
|
+
/** Phase1: 動画タイムアウトエラー */
|
|
1654
|
+
VIDEO_TIMEOUT_ERROR: "VIDEO_TIMEOUT_ERROR",
|
|
1655
|
+
/** Phase1: SSRFブロック */
|
|
1656
|
+
SSRF_BLOCKED: "SSRF_BLOCKED",
|
|
1657
|
+
} as const;
|
|
1658
|
+
|
|
1659
|
+
export type MotionMcpErrorCode =
|
|
1660
|
+
(typeof MOTION_MCP_ERROR_CODES)[keyof typeof MOTION_MCP_ERROR_CODES];
|
|
1661
|
+
|
|
1662
|
+
// ============================================================================
|
|
1663
|
+
// Warning Codes
|
|
1664
|
+
// ============================================================================
|
|
1665
|
+
|
|
1666
|
+
/**
|
|
1667
|
+
* 警告コード
|
|
1668
|
+
*/
|
|
1669
|
+
export const MOTION_WARNING_CODES = {
|
|
1670
|
+
/** パフォーマンス警告: レイアウトトリガー */
|
|
1671
|
+
PERF_LAYOUT_TRIGGER: "PERF_LAYOUT_TRIGGER",
|
|
1672
|
+
/** パフォーマンス警告: 過度なアニメーション */
|
|
1673
|
+
PERF_TOO_MANY_ANIMATIONS: "PERF_TOO_MANY_ANIMATIONS",
|
|
1674
|
+
/** パフォーマンス警告: 長いduration */
|
|
1675
|
+
PERF_LONG_DURATION: "PERF_LONG_DURATION",
|
|
1676
|
+
/** アクセシビリティ警告: reduced-motion未対応 */
|
|
1677
|
+
A11Y_NO_REDUCED_MOTION: "A11Y_NO_REDUCED_MOTION",
|
|
1678
|
+
/** アクセシビリティ警告: 無限アニメーション */
|
|
1679
|
+
A11Y_INFINITE_ANIMATION: "A11Y_INFINITE_ANIMATION",
|
|
1680
|
+
/** 解析警告: 不完全なキーフレーム */
|
|
1681
|
+
PARSE_INCOMPLETE_KEYFRAMES: "PARSE_INCOMPLETE_KEYFRAMES",
|
|
1682
|
+
/** 解析警告: 無効なイージング */
|
|
1683
|
+
PARSE_INVALID_EASING: "PARSE_INVALID_EASING",
|
|
1684
|
+
/** 外部CSS取得失敗 */
|
|
1685
|
+
EXTERNAL_CSS_FETCH_FAILED: "EXTERNAL_CSS_FETCH_FAILED",
|
|
1686
|
+
/** 外部CSS SSRF保護によりブロック */
|
|
1687
|
+
EXTERNAL_CSS_SSRF_BLOCKED: "EXTERNAL_CSS_SSRF_BLOCKED",
|
|
1688
|
+
/** Phase3: Lighthouse利用不可 */
|
|
1689
|
+
LIGHTHOUSE_UNAVAILABLE: "LIGHTHOUSE_UNAVAILABLE",
|
|
1690
|
+
/** Phase4: AnimationMetrics分析にはLighthouseが必要 */
|
|
1691
|
+
ANALYZE_METRICS_REQUIRES_LIGHTHOUSE: "ANALYZE_METRICS_REQUIRES_LIGHTHOUSE",
|
|
1692
|
+
/** Phase4: AnimationMetrics分析が利用不可 */
|
|
1693
|
+
ANIMATION_METRICS_UNAVAILABLE: "ANIMATION_METRICS_UNAVAILABLE",
|
|
1694
|
+
/** Phase5: Frame Image Analysis利用不可 */
|
|
1695
|
+
FRAME_ANALYSIS_UNAVAILABLE: "FRAME_ANALYSIS_UNAVAILABLE",
|
|
1696
|
+
/** WebGL/Canvas検出機能が無効(detect_js_animations=false時)*/
|
|
1697
|
+
WEBGL_DETECTION_DISABLED: "WEBGL_DETECTION_DISABLED",
|
|
1698
|
+
} as const;
|
|
1699
|
+
|
|
1700
|
+
export type MotionWarningCode = (typeof MOTION_WARNING_CODES)[keyof typeof MOTION_WARNING_CODES];
|
|
1701
|
+
|
|
1702
|
+
// ============================================================================
|
|
1703
|
+
// Utility Functions
|
|
1704
|
+
// ============================================================================
|
|
1705
|
+
|
|
1706
|
+
/**
|
|
1707
|
+
* パフォーマンスレベルを計算
|
|
1708
|
+
*/
|
|
1709
|
+
export function calculatePerformanceLevel(info: PerformanceInfo): PerformanceLevel {
|
|
1710
|
+
// GPU加速プロパティのみ使用 && レイアウト/ペイントなし = excellent
|
|
1711
|
+
if ((info.usesTransform || info.usesOpacity) && !info.triggersLayout && !info.triggersPaint) {
|
|
1712
|
+
return "excellent";
|
|
1713
|
+
}
|
|
1714
|
+
|
|
1715
|
+
// レイアウトトリガーあり = poor
|
|
1716
|
+
if (info.triggersLayout) {
|
|
1717
|
+
return "poor";
|
|
1718
|
+
}
|
|
1719
|
+
|
|
1720
|
+
// ペイントトリガーあり = fair
|
|
1721
|
+
if (info.triggersPaint) {
|
|
1722
|
+
return "fair";
|
|
1723
|
+
}
|
|
1724
|
+
|
|
1725
|
+
// それ以外 = good
|
|
1726
|
+
return "good";
|
|
1727
|
+
}
|
|
1728
|
+
|
|
1729
|
+
/**
|
|
1730
|
+
* 複雑度スコアを計算
|
|
1731
|
+
*/
|
|
1732
|
+
export function calculateComplexityScore(patterns: MotionPattern[]): number {
|
|
1733
|
+
if (patterns.length === 0) return 0;
|
|
1734
|
+
|
|
1735
|
+
let score = 0;
|
|
1736
|
+
|
|
1737
|
+
// パターン数による加算
|
|
1738
|
+
score += Math.min(patterns.length * 5, 30);
|
|
1739
|
+
|
|
1740
|
+
// キーフレーム複雑度
|
|
1741
|
+
const keyframeCount = patterns.reduce((sum, p) => sum + (p.keyframes?.length ?? 0), 0);
|
|
1742
|
+
score += Math.min(keyframeCount * 2, 20);
|
|
1743
|
+
|
|
1744
|
+
// プロパティ数(propertiesがない場合も安全に処理)
|
|
1745
|
+
const propertyCount = patterns.reduce((sum, p) => sum + (p.properties?.length ?? 0), 0);
|
|
1746
|
+
score += Math.min(propertyCount * 3, 30);
|
|
1747
|
+
|
|
1748
|
+
// 無限アニメーション('infinite' または -1 をサポート)
|
|
1749
|
+
const infiniteCount = patterns.filter(
|
|
1750
|
+
(p) =>
|
|
1751
|
+
p.animation?.iterations === "infinite" ||
|
|
1752
|
+
p.animation?.iterations === -1 ||
|
|
1753
|
+
p.animation?.iterations === Infinity
|
|
1754
|
+
).length;
|
|
1755
|
+
score += Math.min(infiniteCount * 5, 20);
|
|
1756
|
+
|
|
1757
|
+
return Math.min(score, 100);
|
|
1758
|
+
}
|
|
1759
|
+
|
|
1760
|
+
/**
|
|
1761
|
+
* 平均duration計算
|
|
1762
|
+
*/
|
|
1763
|
+
export function calculateAverageDuration(patterns: MotionPattern[]): number {
|
|
1764
|
+
const durations = patterns
|
|
1765
|
+
.map((p) => p.animation?.duration)
|
|
1766
|
+
.filter((d): d is number => d !== undefined && d > 0);
|
|
1767
|
+
|
|
1768
|
+
if (durations.length === 0) return 0;
|
|
1769
|
+
|
|
1770
|
+
return Math.round(durations.reduce((a, b) => a + b, 0) / durations.length);
|
|
1771
|
+
}
|
|
1772
|
+
|
|
1773
|
+
/**
|
|
1774
|
+
* タイプ別集計
|
|
1775
|
+
*/
|
|
1776
|
+
export function countByType(patterns: MotionPattern[]): Record<MotionType, number> {
|
|
1777
|
+
const counts: Record<MotionType, number> = {
|
|
1778
|
+
css_animation: 0,
|
|
1779
|
+
css_transition: 0,
|
|
1780
|
+
keyframes: 0,
|
|
1781
|
+
library_animation: 0,
|
|
1782
|
+
video_motion: 0,
|
|
1783
|
+
};
|
|
1784
|
+
|
|
1785
|
+
for (const pattern of patterns) {
|
|
1786
|
+
counts[pattern.type]++;
|
|
1787
|
+
}
|
|
1788
|
+
|
|
1789
|
+
return counts;
|
|
1790
|
+
}
|
|
1791
|
+
|
|
1792
|
+
/**
|
|
1793
|
+
* トリガー別集計
|
|
1794
|
+
*/
|
|
1795
|
+
export function countByTrigger(patterns: MotionPattern[]): Record<TriggerType, number> {
|
|
1796
|
+
const counts: Record<TriggerType, number> = {
|
|
1797
|
+
scroll: 0,
|
|
1798
|
+
scroll_velocity: 0,
|
|
1799
|
+
hover: 0,
|
|
1800
|
+
click: 0,
|
|
1801
|
+
focus: 0,
|
|
1802
|
+
load: 0,
|
|
1803
|
+
intersection: 0,
|
|
1804
|
+
time: 0,
|
|
1805
|
+
state_change: 0,
|
|
1806
|
+
unknown: 0,
|
|
1807
|
+
};
|
|
1808
|
+
|
|
1809
|
+
for (const pattern of patterns) {
|
|
1810
|
+
counts[pattern.trigger]++;
|
|
1811
|
+
}
|
|
1812
|
+
|
|
1813
|
+
return counts;
|
|
1814
|
+
}
|
|
1815
|
+
|
|
1816
|
+
/**
|
|
1817
|
+
* カテゴリ別集計
|
|
1818
|
+
*/
|
|
1819
|
+
export function countByCategory(patterns: MotionPattern[]): Record<MotionCategory, number> {
|
|
1820
|
+
const counts: Record<MotionCategory, number> = {
|
|
1821
|
+
scroll_trigger: 0,
|
|
1822
|
+
hover_effect: 0,
|
|
1823
|
+
page_transition: 0,
|
|
1824
|
+
loading_state: 0,
|
|
1825
|
+
micro_interaction: 0,
|
|
1826
|
+
attention_grabber: 0,
|
|
1827
|
+
navigation: 0,
|
|
1828
|
+
feedback: 0,
|
|
1829
|
+
entrance: 0,
|
|
1830
|
+
exit: 0,
|
|
1831
|
+
// v0.1.0 new categories
|
|
1832
|
+
marquee: 0,
|
|
1833
|
+
video_overlay: 0,
|
|
1834
|
+
parallax: 0,
|
|
1835
|
+
reveal: 0,
|
|
1836
|
+
morphing: 0,
|
|
1837
|
+
background_animation: 0,
|
|
1838
|
+
typing_animation: 0,
|
|
1839
|
+
unknown: 0,
|
|
1840
|
+
};
|
|
1841
|
+
|
|
1842
|
+
for (const pattern of patterns) {
|
|
1843
|
+
counts[pattern.category]++;
|
|
1844
|
+
}
|
|
1845
|
+
|
|
1846
|
+
return counts;
|
|
1847
|
+
}
|
|
1848
|
+
|
|
1849
|
+
// ============================================================================
|
|
1850
|
+
// Frame Capture Utility Functions (video mode)
|
|
1851
|
+
// ============================================================================
|
|
1852
|
+
|
|
1853
|
+
/**
|
|
1854
|
+
* フレームキャプチャ設定の計算結果
|
|
1855
|
+
*/
|
|
1856
|
+
export interface FrameCaptureConfig {
|
|
1857
|
+
frame_rate: number;
|
|
1858
|
+
frame_interval_ms: number;
|
|
1859
|
+
scroll_speed_px_per_sec: number;
|
|
1860
|
+
scroll_px_per_frame: number;
|
|
1861
|
+
output_format: "png" | "jpeg";
|
|
1862
|
+
output_dir: string;
|
|
1863
|
+
filename_pattern: string;
|
|
1864
|
+
page_height_px: number;
|
|
1865
|
+
scroll_duration_sec: number;
|
|
1866
|
+
total_frames: number;
|
|
1867
|
+
}
|
|
1868
|
+
|
|
1869
|
+
/**
|
|
1870
|
+
* フレームキャプチャ設定を計算
|
|
1871
|
+
*
|
|
1872
|
+
* デフォルト値を適用し、相互に依存する値を計算します。
|
|
1873
|
+
*
|
|
1874
|
+
* デフォルト値:
|
|
1875
|
+
* - scroll_px_per_frame = 15 (Reftrix仕様)
|
|
1876
|
+
* - frame_rate = 30
|
|
1877
|
+
* - frame_interval_ms = 1000 / frame_rate = 33.33ms
|
|
1878
|
+
*
|
|
1879
|
+
* 計算式:
|
|
1880
|
+
* - frame_interval_ms = 1000 / frame_rate
|
|
1881
|
+
* - scroll_speed_px_per_sec = page_height_px / scroll_duration_sec
|
|
1882
|
+
* - total_frames = ceil(scroll_duration_sec * frame_rate)
|
|
1883
|
+
*
|
|
1884
|
+
* @param options - フレームキャプチャオプション
|
|
1885
|
+
* @returns 計算済みの設定
|
|
1886
|
+
*/
|
|
1887
|
+
export function calculateFrameCaptureConfig(options: FrameCaptureOptions = {}): FrameCaptureConfig {
|
|
1888
|
+
// デフォルト値
|
|
1889
|
+
const page_height_px = options.page_height_px ?? 1080;
|
|
1890
|
+
const scroll_duration_sec = options.scroll_duration_sec ?? 5;
|
|
1891
|
+
const frame_rate = options.frame_rate ?? 30;
|
|
1892
|
+
const output_format = options.output_format ?? "png";
|
|
1893
|
+
const output_dir = options.output_dir ?? "/tmp/reftrix-frames/";
|
|
1894
|
+
const filename_pattern = options.filename_pattern ?? "frame-{0000}.png";
|
|
1895
|
+
|
|
1896
|
+
// 計算式: frame_interval_ms = 1000 / frame_rate
|
|
1897
|
+
const frame_interval_ms = options.frame_interval_ms ?? 1000 / frame_rate;
|
|
1898
|
+
|
|
1899
|
+
// 計算式: scroll_speed_px_per_sec = page_height_px / scroll_duration_sec
|
|
1900
|
+
const scroll_speed_px_per_sec =
|
|
1901
|
+
options.scroll_speed_px_per_sec ?? page_height_px / scroll_duration_sec;
|
|
1902
|
+
|
|
1903
|
+
// デフォルト値: 15px/frame(Reftrix仕様)
|
|
1904
|
+
// 15px/frameの根拠:
|
|
1905
|
+
// - 60fps等価スクロール(216px/秒 ÷ 60 ≈ 3.6px)と50px/frameの中間
|
|
1906
|
+
// - IntersectionObserver閾値(0.1〜0.3)を確実に検出
|
|
1907
|
+
// - cubic-bezier easing曲線の解析に十分なサンプル数
|
|
1908
|
+
// - parallax微動(係数0.02〜0.05)の検出可能
|
|
1909
|
+
const scroll_px_per_frame = options.scroll_px_per_frame ?? 15;
|
|
1910
|
+
|
|
1911
|
+
// 計算式: total_frames = scroll_duration_sec * frame_rate
|
|
1912
|
+
const total_frames = Math.ceil(scroll_duration_sec * frame_rate);
|
|
1913
|
+
|
|
1914
|
+
if (process.env.NODE_ENV === "development" && process.env.DEBUG_FRAME_CAPTURE) {
|
|
1915
|
+
console.warn("[FrameCapture] Config calculated:", {
|
|
1916
|
+
frame_rate,
|
|
1917
|
+
frame_interval_ms,
|
|
1918
|
+
scroll_speed_px_per_sec,
|
|
1919
|
+
scroll_px_per_frame,
|
|
1920
|
+
total_frames,
|
|
1921
|
+
});
|
|
1922
|
+
}
|
|
1923
|
+
|
|
1924
|
+
return {
|
|
1925
|
+
frame_rate,
|
|
1926
|
+
frame_interval_ms,
|
|
1927
|
+
scroll_speed_px_per_sec,
|
|
1928
|
+
scroll_px_per_frame,
|
|
1929
|
+
output_format,
|
|
1930
|
+
output_dir,
|
|
1931
|
+
filename_pattern,
|
|
1932
|
+
page_height_px,
|
|
1933
|
+
scroll_duration_sec,
|
|
1934
|
+
total_frames,
|
|
1935
|
+
};
|
|
1936
|
+
}
|
|
1937
|
+
|
|
1938
|
+
/**
|
|
1939
|
+
* フレームファイル情報の生成
|
|
1940
|
+
*
|
|
1941
|
+
* 設定に基づいて各フレームのファイル情報を生成します。
|
|
1942
|
+
*
|
|
1943
|
+
* @param config - フレームキャプチャ設定
|
|
1944
|
+
* @returns フレームファイル情報の配列
|
|
1945
|
+
*/
|
|
1946
|
+
export function generateFrameFileInfos(config: FrameCaptureConfig): FrameFileInfo[] {
|
|
1947
|
+
const files: FrameFileInfo[] = [];
|
|
1948
|
+
const pattern = config.filename_pattern;
|
|
1949
|
+
const ext = config.output_format;
|
|
1950
|
+
|
|
1951
|
+
for (let i = 0; i < config.total_frames; i++) {
|
|
1952
|
+
const frame_number = i;
|
|
1953
|
+
const scroll_position_px = Math.min(i * config.scroll_px_per_frame, config.page_height_px);
|
|
1954
|
+
const timestamp_ms = i * config.frame_interval_ms;
|
|
1955
|
+
|
|
1956
|
+
// ファイル名パターンの置換: {0000} -> 0001, {000} -> 001
|
|
1957
|
+
let filename = pattern.replace(/\{(\d+)\}/g, (_, digits) => {
|
|
1958
|
+
const padLength = digits.length;
|
|
1959
|
+
return String(i).padStart(padLength, "0");
|
|
1960
|
+
});
|
|
1961
|
+
|
|
1962
|
+
// 拡張子の置換
|
|
1963
|
+
filename = filename.replace(/\.(png|jpeg)$/, `.${ext}`);
|
|
1964
|
+
|
|
1965
|
+
const file_path = `${config.output_dir}${filename}`;
|
|
1966
|
+
|
|
1967
|
+
files.push({
|
|
1968
|
+
frame_number,
|
|
1969
|
+
scroll_position_px,
|
|
1970
|
+
timestamp_ms,
|
|
1971
|
+
file_path,
|
|
1972
|
+
});
|
|
1973
|
+
}
|
|
1974
|
+
|
|
1975
|
+
if (process.env.NODE_ENV === "development" && process.env.DEBUG_FRAME_CAPTURE) {
|
|
1976
|
+
console.warn("[FrameCapture] Generated", files.length, "frame file infos");
|
|
1977
|
+
}
|
|
1978
|
+
|
|
1979
|
+
return files;
|
|
1980
|
+
}
|
|
1981
|
+
|
|
1982
|
+
// ============================================================================
|
|
1983
|
+
// MCP Tool Definitions
|
|
1984
|
+
// ============================================================================
|
|
1985
|
+
|
|
1986
|
+
/**
|
|
1987
|
+
* MCP Tool definitions for motion.* tools
|
|
1988
|
+
* MCPプロトコル準拠のツール定義
|
|
1989
|
+
*/
|
|
1990
|
+
export const motionMcpTools = {
|
|
1991
|
+
"motion.detect": {
|
|
1992
|
+
name: "motion.detect",
|
|
1993
|
+
description:
|
|
1994
|
+
"Webページからモーション/アニメーションパターンを検出・分類します。CSSアニメーション、トランジション、キーフレームを解析し、パフォーマンスやアクセシビリティの問題を警告します。",
|
|
1995
|
+
inputSchema: motionDetectInputSchema,
|
|
1996
|
+
},
|
|
1997
|
+
"motion.search": {
|
|
1998
|
+
name: "motion.search",
|
|
1999
|
+
description:
|
|
2000
|
+
"モーションパターンを類似検索します。自然言語クエリまたはサンプルパターンを使用して、類似のアニメーション/トランジションパターンを検索できます。",
|
|
2001
|
+
// inputSchema is defined below after motionSearchInputSchema
|
|
2002
|
+
},
|
|
2003
|
+
} as const;
|
|
2004
|
+
|
|
2005
|
+
export type MotionMcpToolName = keyof typeof motionMcpTools;
|