cozyclay 2.0.2 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/README.md +17 -2
  3. package/THIRD_PARTY_NOTICES.md +8 -0
  4. package/bin/agent/agent-routes.mjs +211 -36
  5. package/bin/agent/agent-runner.mjs +98 -4
  6. package/bin/agent/codex-client.mjs +2 -1
  7. package/bin/agent/fal-contract.mjs +0 -17
  8. package/bin/agent/h3-preservation.mjs +6 -8
  9. package/bin/agent/provider-keys.mjs +1 -1
  10. package/bin/agent/providers.mjs +124 -3
  11. package/bin/agent/script-tool.mjs +74 -0
  12. package/bin/agent/session-store.mjs +5 -5
  13. package/bin/agent/studio-prompt.mjs +2 -1
  14. package/bin/agent/studio-rebase.mjs +314 -0
  15. package/bin/agent/studio-tools.mjs +21 -14
  16. package/bin/agent/supervisor.mjs +311 -0
  17. package/bin/agent/video-adapters.mjs +0 -7
  18. package/bin/codex-auth.mjs +4 -4
  19. package/bin/live/cli.mjs +2 -3
  20. package/bin/live/client.mjs +1 -1
  21. package/bin/live/studio.mjs +5 -2
  22. package/bin/mcp-runtime.mjs +2 -2
  23. package/bin/telemetry-state.mjs +3 -3
  24. package/dist/app/index.html +6 -6
  25. package/dist/assets/analytics-B41FmPYI.js +1 -0
  26. package/dist/assets/app-Do-Og5Pu.css +1 -0
  27. package/dist/assets/app-DwP-tl2x.js +4920 -0
  28. package/dist/assets/{demo-ByeYp-dY.js → demo-Dt0qZfS7.js} +1 -1
  29. package/dist/assets/{first-shot-handoff-DgT28ZiV.js → first-shot-handoff-BlT33CGf.js} +1 -1
  30. package/dist/assets/{landing-BaXkpFip.js → landing-BSesrCpL.js} +1 -1
  31. package/dist/assets/scene-asset-sync-BCWDJB1d.js +19 -0
  32. package/dist/assets/{shot-prompt-CbqWcWYi.css → scene-asset-sync-DjJ_cJ2R.css} +1 -1
  33. package/dist/assets/{ticket-BcmsnHn5.js → ticket-jqMhqL88.js} +1 -1
  34. package/dist/assets/workflow-Br-K7Srs.js +179 -0
  35. package/dist/cozyclay-package.json +1 -1
  36. package/dist/index.html +328 -222
  37. package/dist/sitemap.xml +1 -1
  38. package/dist/workflow/index.html +4 -4
  39. package/mcp/LIVE-PROTOCOL.md +23 -2
  40. package/mcp/README.md +37 -2
  41. package/mcp/ardy-prompts.mjs +1 -1
  42. package/mcp/image-file.mjs +132 -0
  43. package/mcp/live-hub.mjs +2 -2
  44. package/mcp/package.json +1 -0
  45. package/mcp/runtime/package-lock.json +7 -0
  46. package/mcp/runtime/package.json +1 -0
  47. package/mcp/server.mjs +0 -6
  48. package/mcp/tool-handlers.mjs +289 -87
  49. package/package.json +11 -2
  50. package/src/App.jsx +789 -263
  51. package/src/agent-image-client.js +94 -0
  52. package/src/analytics.js +47 -3
  53. package/src/app-stage.jsx +129 -2745
  54. package/src/ardy/auto-physics.js +6 -16
  55. package/src/ardy/collision-blockers.js +3 -7
  56. package/src/ardy/fix-collisions.js +5 -35
  57. package/src/ardy/ik-drag.js +86 -5
  58. package/src/ardy/ik-key-json.js +3 -1
  59. package/src/ardy/ik.js +15 -13
  60. package/src/ardy/motion-calibration.js +1 -1
  61. package/src/ardy/npz.js +0 -8
  62. package/src/ardy/physics-panel.jsx +3 -2
  63. package/src/ardy/physics-review.js +3 -2
  64. package/src/ardy/physics-support.js +1 -1
  65. package/src/ardy/physics-surface.js +1 -1
  66. package/src/ardy/platform-fit-panel.jsx +2 -1
  67. package/src/ardy/playback.js +1 -5
  68. package/src/ardy/range-pin.js +2 -2
  69. package/src/ardy/root-drop.js +0 -1
  70. package/src/ardy/timeline.css +184 -6
  71. package/src/ardy/timeline.jsx +113 -28
  72. package/src/ardy/to-cskel27.js +0 -2
  73. package/src/ardy/waypoints.js +0 -3
  74. package/src/ardy-bridge-contract.js +281 -0
  75. package/src/asset-pane.jsx +19 -9
  76. package/src/auto-color.js +1 -1
  77. package/src/burn-in.js +1 -1
  78. package/src/camera-block.js +1 -1
  79. package/src/camera-follow.js +75 -32
  80. package/src/camera-move.js +0 -6
  81. package/src/camera-tutorial.jsx +6 -7
  82. package/src/character-kind.js +79 -0
  83. package/src/command-bus.js +76 -17
  84. package/src/commands/cast.js +31 -7
  85. package/src/commands/elements/object.js +1 -1
  86. package/src/commands/elements/shot.js +1 -1
  87. package/src/commands/elements.js +1 -1
  88. package/src/commands/export.js +3 -3
  89. package/src/commands/motion.js +2 -2
  90. package/src/commands/objects.js +105 -10
  91. package/src/commands/project.js +15 -2
  92. package/src/commands/sculpt-images.js +53 -0
  93. package/src/commands/shot.js +88 -10
  94. package/src/commands/view.js +10 -4
  95. package/src/coplanar-depth.js +216 -0
  96. package/src/cuts.js +7 -6
  97. package/src/domains/cast.js +60 -43
  98. package/src/domains/motion/motion-intent-codec.js +50 -0
  99. package/src/domains/motion/motion-range-pin-rules.js +23 -0
  100. package/src/domains/motion/motion-video-capture.js +664 -0
  101. package/src/domains/motion.js +253 -742
  102. package/src/domains/objects.js +106 -5
  103. package/src/domains/scenes.js +79 -28
  104. package/src/domains/shots.js +33 -7
  105. package/src/error-boundary.jsx +1 -1
  106. package/src/execution-telemetry.js +5 -5
  107. package/src/facing-marks.js +14 -1
  108. package/src/first-success-guide.jsx +35 -4
  109. package/src/gizmo-claim.js +3 -1
  110. package/src/grid-floor.jsx +1 -4
  111. package/src/hierarchy-model.js +48 -35
  112. package/src/hierarchy-panel.css +1 -0
  113. package/src/hierarchy-panel.jsx +54 -102
  114. package/src/history.js +0 -2
  115. package/src/i2v-motion-client.js +1 -4
  116. package/src/ime.js +6 -0
  117. package/src/keyframe-pack.js +15 -6
  118. package/src/line-edit.js +4 -4
  119. package/src/live-control.js +6 -6
  120. package/src/matte-editor.js +2 -8
  121. package/src/matte.js +0 -19
  122. package/src/mesh-graph-clone.js +16 -2
  123. package/src/mesh-sniff.js +0 -1
  124. package/src/monotone-cubic.js +40 -0
  125. package/src/motion-store.js +4 -4
  126. package/src/motion-trail.js +5 -11
  127. package/src/multimodel-ingest.js +1 -3
  128. package/src/object-catalog.jsx +7 -5
  129. package/src/object-gizmo.jsx +45 -31
  130. package/src/object-path.js +310 -67
  131. package/src/object-travel.js +224 -0
  132. package/src/otio.js +8 -3
  133. package/src/panels/CharacterTransformPanel.jsx +24 -6
  134. package/src/panels/ObjectTransformPanel.jsx +4 -3
  135. package/src/panels/PoseImagePanel.jsx +205 -0
  136. package/src/panels/PromptBlocksPanel.jsx +3 -1
  137. package/src/panels/ProxyFigurePanel.jsx +56 -0
  138. package/src/panels/ReferenceImageField.jsx +1 -1
  139. package/src/panels/RigControlPanel.jsx +24 -3
  140. package/src/panels/RigPanel.jsx +2 -1
  141. package/src/panels/SculptPanel.jsx +405 -0
  142. package/src/panels/SubjectBox.jsx +1 -1
  143. package/src/panels/SubjectsPanel.jsx +0 -2
  144. package/src/panels/VideoCapturePanel.jsx +2 -1
  145. package/src/panels/pose-image.css +42 -0
  146. package/src/panels/pose.css +3 -0
  147. package/src/panels/sculpt.css +162 -0
  148. package/src/plan-diagram.js +184 -0
  149. package/src/planview.jsx +127 -80
  150. package/src/playground.js +3 -5
  151. package/src/pose-fade.js +77 -0
  152. package/src/pose-gizmo.css +23 -0
  153. package/src/pose-gizmo.js +96 -0
  154. package/src/posestudio.jsx +134 -83
  155. package/src/project-browser.css +53 -0
  156. package/src/project-browser.jsx +49 -4
  157. package/src/project.js +55 -24
  158. package/src/props.jsx +177 -36
  159. package/src/proxy-figure.jsx +69 -0
  160. package/src/range-pin-panel.jsx +0 -1
  161. package/src/receipt-findings.js +20 -0
  162. package/src/render-passes.js +0 -1
  163. package/src/resource-status.jsx +1 -1
  164. package/src/root-path.js +48 -0
  165. package/src/route-owner.js +52 -0
  166. package/src/scene-asset-cache.js +1 -2
  167. package/src/scene-assets.js +12 -4
  168. package/src/scene-fbx.js +1 -1
  169. package/src/scene-mesh-cache.js +0 -1
  170. package/src/scene-objects.js +319 -19
  171. package/src/scenes.js +58 -9
  172. package/src/sculpt-blueprint.js +65 -0
  173. package/src/sculpt-compare.js +384 -0
  174. package/src/sculpt-geometry.js +141 -0
  175. package/src/sculpt-mode.js +168 -0
  176. package/src/sculpt-recipe.js +385 -0
  177. package/src/sculpt-run.js +351 -0
  178. package/src/sculpt-stage.jsx +221 -0
  179. package/src/settings-menu.jsx +1 -1
  180. package/src/shell/BoardSlot.jsx +341 -0
  181. package/src/shell/BottomDock.jsx +58 -14
  182. package/src/shell/DetailsSlot.jsx +26 -6
  183. package/src/shell/MenuBar.jsx +78 -6
  184. package/src/shell/OutlinerSlot.jsx +3 -1
  185. package/src/shell/TopBar.jsx +17 -3
  186. package/src/shell/ViewportToolbar.jsx +18 -3
  187. package/src/shell/dock.css +239 -0
  188. package/src/shell/glass-regions.css +3 -2
  189. package/src/shell/log-store.js +4 -4
  190. package/src/shell/mode.css +20 -0
  191. package/src/shell/studio-shell-context.js +4 -1
  192. package/src/shot-authoring.js +69 -6
  193. package/src/stable-items.js +1 -1
  194. package/src/stage-attach-frames.js +169 -0
  195. package/src/stage-canvas-rigs.jsx +402 -0
  196. package/src/stage-capture.jsx +216 -0
  197. package/src/stage-characters.jsx +302 -0
  198. package/src/stage-editor-gizmos.jsx +1229 -0
  199. package/src/stage-labels-ko.js +204 -0
  200. package/src/stage-startup-defaults.js +182 -0
  201. package/src/starter-scenes.js +1 -1
  202. package/src/storyboard.js +24 -5
  203. package/src/studio-actions.js +42 -9
  204. package/src/studio-agent-commands.js +186 -23
  205. package/src/studio-agent-context.js +11 -9
  206. package/src/studio-agent-motion.js +2 -1
  207. package/src/studio-agent-protocol.js +56 -23
  208. package/src/studio-app-binding.js +52 -23
  209. package/src/studio-contact-sheet.js +3 -3
  210. package/src/studio-elements.js +11 -2
  211. package/src/studio-geometry-facts.js +114 -0
  212. package/src/styles.css +92 -9
  213. package/src/ui-scrub.js +4 -4
  214. package/src/ui.jsx +6 -4
  215. package/src/use-asset-shelf.js +60 -0
  216. package/src/use-camera-tutorial.js +50 -0
  217. package/src/use-embed-bridge.js +12 -0
  218. package/src/use-first-success-prompt.js +7 -0
  219. package/src/use-i2v-capture-modal.js +15 -0
  220. package/src/use-sculpt-mode.js +95 -0
  221. package/src/workflow/AgentPanel.jsx +106 -18
  222. package/src/workflow/WorkflowBuilder.jsx +1 -1
  223. package/src/workflow/agent-client.js +113 -45
  224. package/src/workflow/agent-panel.css +35 -0
  225. package/src/workflow/attachment-image.js +1 -1
  226. package/src/workflow/canvas-commands.js +3 -3
  227. package/src/workflow/cozy-scene-node.js +3 -3
  228. package/src/workflow/local-workflow.js +2 -2
  229. package/src/workflow/motion-input.js +3 -3
  230. package/src/workflow/node-schema.js +1 -1
  231. package/src/workflow/scene-asset-sync.js +2 -9
  232. package/src/workflow/shot-prompt-node.js +1 -1
  233. package/src/workflow/video-contract.js +1 -1
  234. package/src/workflow/workflow-resources.js +0 -8
  235. package/src/workflow-send.js +87 -0
  236. package/tools/ardy/__pycache__/cclay_gvhmr_worker.cpython-313.pyc +0 -0
  237. package/tools/check-eslint.mjs +57 -0
  238. package/tools/check-knip.mjs +60 -0
  239. package/tools/check-loc.mjs +54 -0
  240. package/tools/demo-worker/api-client.mjs +7 -13
  241. package/tools/demo-worker/generate.mjs +2 -4
  242. package/tools/eslint-baseline.json +23 -0
  243. package/tools/kimodo/effector-constraints.mjs +4 -4
  244. package/tools/kimodo/generate.mjs +1 -1
  245. package/tools/knip-baseline.json +331 -0
  246. package/tools/loc-baseline.json +126 -0
  247. package/tools/process-supervisor.mjs +1 -1
  248. package/tools/projflow/replay.mjs +4 -4
  249. package/tools/projflow/runner.mjs +3 -3
  250. package/tools/qa/studio-control-count.mjs +2 -0
  251. package/tools/run-tests.mjs +94 -7
  252. package/dist/assets/analytics-MVZOEW8O.js +0 -1
  253. package/dist/assets/app-BxBLC6GT.js +0 -4876
  254. package/dist/assets/app-CJdxvnrl.css +0 -1
  255. package/dist/assets/shot-prompt-hN0j_O-p.js +0 -17
  256. package/dist/assets/workflow-B5XZwVfe.js +0 -179
@@ -0,0 +1,331 @@
1
+ [
2
+ "export bin/agent/agent-runner.mjs#classifyProviderError",
3
+ "export bin/agent/provider-keys.mjs#removeKey",
4
+ "export bin/agent/provider-keys.mjs#setKey",
5
+ "export bin/agent/video-adapters.mjs#falVideoContract",
6
+ "export bin/package-signature.mjs#PACKAGE_SIGNATURE_PUBLIC_KEY",
7
+ "export mcp/image-file.mjs#REFERENCE_MAX_BYTES",
8
+ "export src/ardy/client.js#listBases",
9
+ "export src/ardy/convert.js#basisToLocal",
10
+ "export src/ardy/npz.js#CHARACTER_SCALE_MAX",
11
+ "export src/ardy/npz.js#CHARACTER_SCALE_MIN",
12
+ "export src/ardy/playback.js#boneStretch",
13
+ "export src/asset-pane.jsx#CHARACTER_ASSETS",
14
+ "export src/asset-pane.jsx#FolderGrid",
15
+ "export src/burn-in.js#burnInCapture",
16
+ "export src/camera-block.js#CAMERA_MODES",
17
+ "export src/camera-tutorial.jsx#CAMERA_TUTORIAL_STEPS",
18
+ "export src/camera-tutorial.jsx#GestureCue",
19
+ "export src/camera-tutorial.jsx#TUTORIAL_BEACONS",
20
+ "export src/camera-tutorial.jsx#TutorialBeacon",
21
+ "export src/camera-tutorial.jsx#WALK_KEYS",
22
+ "export src/camera-tutorial.jsx#default",
23
+ "export src/domains/motion.js#createMotionDomain",
24
+ "export src/domains/objects.js#createObjectsDomain",
25
+ "export src/grid-view.js#STAGE_BACKGROUND",
26
+ "export src/grid-view.js#STAGE_BACKGROUND_LIGHT",
27
+ "export src/mesh-sniff.js#isFbxBinaryMagic",
28
+ "export src/mesh-sniff.js#isGlbMagic",
29
+ "export src/mesh-sniff.js#looksLikeObj",
30
+ "export src/mesh-sniff.js#readFbxVersion",
31
+ "export src/motion-resources.js#loadMotionFromUrl",
32
+ "export src/object-catalog.jsx#default",
33
+ "export src/object-path.js#MAX_PATH_HEIGHT",
34
+ "export src/pose-extract/detector.js#POSE_WASM_BASE",
35
+ "export src/pose-extract/detector.js#TASKS_VISION_VERSION",
36
+ "export src/pose-extract/image-frame.js#decodeImage",
37
+ "export src/pose-extract/index.js#LEFT_RIGHT_PAIRS",
38
+ "export src/pose-extract/index.js#POSE_LANDMARK",
39
+ "export src/pose-extract/index.js#POSE_MODELS",
40
+ "export src/pose-extract/index.js#POSE_MODEL_URL",
41
+ "export src/pose-extract/index.js#POSE_MODEL_URL_HEAVY",
42
+ "export src/pose-extract/index.js#POSE_WASM_BASE",
43
+ "export src/pose-extract/index.js#TASKS_VISION_VERSION",
44
+ "export src/pose-extract/index.js#averageLandmarkSets",
45
+ "export src/pose-extract/index.js#decodeImage",
46
+ "export src/pose-extract/index.js#detectMirrorAveraged",
47
+ "export src/pose-extract/index.js#filterLandmarkTrack",
48
+ "export src/pose-extract/index.js#fitLandmarksToPose",
49
+ "export src/pose-extract/index.js#mirrorLandmarks",
50
+ "export src/pose-extract/index.js#normalizeLandmarkTrack",
51
+ "export src/pose-extract/index.js#poseChangeScores",
52
+ "export src/pose-extract/index.js#sampleTimes",
53
+ "export src/pose-extract/index.js#selectPoseKeyframes",
54
+ "export src/pose-extract/index.js#videoFrames",
55
+ "export src/pose-extract/keyframes.js#poseChangeScores",
56
+ "export src/project.js#storeProjectHandle",
57
+ "export src/range-pin-panel.jsx#RANGE_PIN_TRACKS",
58
+ "export src/scene-asset-cache.js#loadAssetTexture",
59
+ "export src/scene-mesh-cache.js#loadMeshScene",
60
+ "export src/scenes.js#CHARACTER_SCALE_MAX",
61
+ "export src/scenes.js#CHARACTER_SCALE_MIN",
62
+ "export src/scenes.js#LEGACY_FRAME_FPS",
63
+ "export src/scenes.js#toTimelineFrame",
64
+ "export src/stage-attach-frames.js#ATTACH_BONE_NAMES",
65
+ "export src/stage-attach-frames.js#ATTACH_UNIT_SCALE",
66
+ "export src/stage-attach-frames.js#attachBoneCache",
67
+ "export src/stage-attach-frames.js#attachBoneOf",
68
+ "export src/stage-attach-frames.js#attachInverseMatrix",
69
+ "export src/stage-attach-frames.js#attachLocalMatrix",
70
+ "export src/stage-attach-frames.js#attachPos",
71
+ "export src/stage-attach-frames.js#attachQuat",
72
+ "export src/stage-attach-frames.js#attachRootPos",
73
+ "export src/stage-attach-frames.js#attachRootQuat",
74
+ "export src/stage-attach-frames.js#attachScale",
75
+ "export src/stage-attach-frames.js#attachToMatrix",
76
+ "export src/stage-attach-frames.js#placeEuler",
77
+ "export src/stage-attach-frames.js#placePos",
78
+ "export src/stage-attach-frames.js#placeQuat",
79
+ "export src/stage-attach-frames.js#placeScale",
80
+ "export src/stage-attach-frames.js#sceneObjectPlacement",
81
+ "export src/stage-editor-gizmos.jsx#CRANE_ARROW_LEN",
82
+ "export src/stage-editor-gizmos.jsx#CRANE_AXES",
83
+ "export src/stage-editor-gizmos.jsx#CRANE_GIZMO_SCALE",
84
+ "export src/stage-editor-gizmos.jsx#GizmoLabel",
85
+ "export src/stage-editor-gizmos.jsx#prepareRailBend",
86
+ "export src/ui-scrub.js#SCRUB_RANGE_STEPS",
87
+ "export src/use-semantic-state.js#useSemanticState",
88
+ "export src/workflow/AgentPanel.jsx#AGENT_PANEL_RAIL_WIDTH",
89
+ "export src/workflow/AgentPanel.jsx#AGENT_STATES",
90
+ "export src/workflow/video-contract.js#falVideoContract",
91
+ "export test/bus/generation-hooks.mjs#begin",
92
+ "export test/bus/generation-hooks.mjs#subscribe",
93
+ "export test/bus/generation-hooks.mjs#useState",
94
+ "export test/bus/motion-cache-fixture.mjs#getMotion",
95
+ "export test/bus/motion-cache-fixture.mjs#openMotionDb",
96
+ "export test/bus/motion-cache-fixture.mjs#putMotion",
97
+ "export test/bus/motion-cache-fixture.mjs#records",
98
+ "export test/bus/motion-cache-fixture.mjs#subscribe",
99
+ "export test/bus/objects-asset-db.mjs#db",
100
+ "export test/bus/objects-asset-db.mjs#holdNextWrite",
101
+ "export test/bus/objects-asset-db.mjs#records",
102
+ "export test/bus/objects-fixture.mjs#objectPanels",
103
+ "export test/bus/stage-fixture.mjs#stagePanels",
104
+ "export test/bus/verify-bus-coverage.mjs#applyRatchet",
105
+ "export test/bus/verify-motion-concurrent.mjs#motionJobParity",
106
+ "export test/bus/verify-motion-generation.mjs#ok",
107
+ "export test/bus/verify-motion-generation.mjs#source",
108
+ "export test/bus/verify-motion-private-owners-removed.mjs#sourceFiles",
109
+ "export test/bus/verify-parity-matrix.mjs#executeParity",
110
+ "export test/bus/verify-parity-matrix.mjs#parityMatrix",
111
+ "export test/bus/verify-stage-gestures.mjs#elements",
112
+ "export test/fixtures/fake-model.mjs#createFauxModel",
113
+ "export test/fixtures/fake-model.mjs#fakeModel",
114
+ "export test/fixtures/studio-agent-motion.mjs#createFixtureMotion",
115
+ "export test/fixtures/write-cube-glb.mjs#cubeGeometry",
116
+ "export test/fixtures/write-cube-glb.mjs#writeGlb",
117
+ "export test/fixtures/write-cube-obj.mjs#cubeObj",
118
+ "export test/verify-gvhmr-detector-flag.mjs#GVHMR_SMOOTH_SIGMA",
119
+ "export tools/ardy/runners/remote.mjs#createRemoteRunner",
120
+ "export tools/bench/exp3.mjs#main",
121
+ "export tools/bench/exp3.mjs#summarizeGt",
122
+ "export tools/bench/extract-bench-lib.mjs#CONDITIONS",
123
+ "export tools/bench/extract-bench-lib.mjs#DEFAULT_CONDITIONS",
124
+ "export tools/bench/extract-bench-lib.mjs#DEFAULT_VARIANTS",
125
+ "export tools/bench/extract-bench-lib.mjs#FMM_SUFFIX",
126
+ "export tools/bench/fal-generate.mjs#costFields",
127
+ "export tools/bench/fit-bench.mjs#USAGE",
128
+ "export tools/bench/fit/camera.mjs#transformMotion",
129
+ "export tools/bench/fit/contact.mjs#continuousSceneDeltas",
130
+ "export tools/bench/metrics.mjs#DEG",
131
+ "export tools/bench/obs-bench.mjs#DEFAULT_OBS_ROOT",
132
+ "export tools/bench/obs-bench.mjs#USAGE",
133
+ "export tools/bench/obs-bench.mjs#characterStandingAnkle",
134
+ "export tools/bench/obs-bench.mjs#main",
135
+ "export tools/bench/obs-bench.mjs#scoreFal",
136
+ "export tools/bench/obs-bench.mjs#trackerRigPath",
137
+ "export tools/bench/obs/heading.mjs#worldYawDeg",
138
+ "export tools/bench/obs/ladder.mjs#DEFAULTS",
139
+ "export tools/bench/obs/ladder.mjs#SMPL_PARENTS",
140
+ "export tools/bench/obs/ladder.mjs#ayfzNormalize",
141
+ "export tools/bench/obs/ladder.mjs#calibrateAnklePlane",
142
+ "export tools/bench/obs/ladder.mjs#floorOffset",
143
+ "export tools/bench/obs/ladder.mjs#framesOf",
144
+ "export tools/bench/obs/ladder.mjs#obsFps",
145
+ "export tools/bench/obs/ladder.mjs#obsGlobal",
146
+ "export tools/bench/obs/ladder.mjs#smoothSmplParams",
147
+ "export tools/bench/obs/ladder.mjs#toCskel27",
148
+ "export tools/bench/obs/ladder.mjs#vectorsOf",
149
+ "export tools/bench/obs/ybot-targets.mjs#RIG_SEGMENTS",
150
+ "export tools/bench/obs/ybot-targets.mjs#ybotTargets",
151
+ "export tools/demo-worker/index.mjs#BACKOFF_MAX_MS",
152
+ "export tools/demo-worker/index.mjs#BACKOFF_MIN_MS",
153
+ "export tools/demo-worker/index.mjs#EMPTY_QUEUE_BACKOFF_MAX_MS",
154
+ "export tools/demo-worker/index.mjs#EMPTY_QUEUE_BACKOFF_MIN_MS",
155
+ "export tools/demo-worker/index.mjs#HEARTBEAT_INTERVAL_MS",
156
+ "export tools/demo-worker/index.mjs#JOB_HARD_TIMEOUT_MS",
157
+ "export tools/demo-worker/index.mjs#default",
158
+ "export tools/demo-worker/index.mjs#main",
159
+ "export tools/demo-worker/index.mjs#run",
160
+ "export tools/demo-worker/sign.mjs#bodyBytes",
161
+ "export tools/demo-worker/sign.mjs#canonicalString",
162
+ "export tools/demo-worker/sign.mjs#digestHex",
163
+ "export tools/demo-worker/sign.mjs#randomNonce",
164
+ "export tools/demo-worker/sign.mjs#runCli",
165
+ "export tools/demo-worker/sign.mjs#signRequest",
166
+ "export tools/demo-worker/sign.mjs#toBase64Url",
167
+ "export tools/gt-render/browser.mjs#connect",
168
+ "export tools/gt-render/camera-math.mjs#FULL_FRAME_DIAGONAL_MM",
169
+ "export tools/gt-render/camera-math.mjs#rotationYXZ",
170
+ "export tools/gt-render/camera-math.mjs#solvePlacement",
171
+ "export tools/gt-render/camera-math.mjs#worldToCameraCv",
172
+ "export tools/gt-render/camera-math.mjs#worldToCameraGl",
173
+ "export tools/kimodo/compare-seam.mjs#rootSpeeds",
174
+ "export tools/kimodo/measure-preserve.mjs#CSKEL27_GROUPS",
175
+ "export tools/kimodo/measure-preserve.mjs#buildFrameMap",
176
+ "export tools/kimodo/measure-preserve.mjs#footSliding",
177
+ "export tools/kimodo/measure-preserve.mjs#loadMotion",
178
+ "export tools/kimodo/measure-preserve.mjs#measurePreserve",
179
+ "export tools/kimodo/measure-preserve.mjs#parseRanges",
180
+ "export tools/kimodo/soma77-to-cskel27.mjs#CSKEL27_IDENTITY",
181
+ "export tools/projflow/hml22-to-cskel27.mjs#CSKEL27_IDENTITY",
182
+ "export tools/projflow/line-edit-job.mjs#maxJointStep",
183
+ "export tools/projflow/replay.mjs#LINE_EDIT_PINS_MAX",
184
+ "export tools/projflow/replay.mjs#LINE_EDIT_PINS_MIN",
185
+ "export tools/projflow/service.mjs#stopResidentService",
186
+ "export tools/track/backfill-provenance.mjs#KINDS",
187
+ "export tools/track/backfill-provenance.mjs#USAGE",
188
+ "export tools/track/backfill-provenance.mjs#main",
189
+ "export tools/track/backfill-provenance.mjs#parseArgs",
190
+ "export tools/track/backfill-provenance.mjs#plan",
191
+ "export tools/track/check-rig.mjs#boneWorlds",
192
+ "export tools/track/check-rig.mjs#checkRig",
193
+ "export tools/track/check-rig.mjs#restJoints",
194
+ "export tools/track/check-rig.mjs#skinVertex",
195
+ "export tools/track/export-rig.mjs#dumpRig",
196
+ "export tools/track/export-rig.mjs#exportRig",
197
+ "export tools/track/fk-parity-fixture.mjs#buildFixture",
198
+ "export tools/track/fk-parity-fixture.mjs#prng",
199
+ "export tools/track/gate.mjs#evaluate",
200
+ "export tools/track/masks.mjs#DEFAULT_CACHE_ROOT",
201
+ "export tools/track/masks.mjs#HASHED_PROVENANCE",
202
+ "export tools/track/masks.mjs#MASKS_SCRIPT",
203
+ "export tools/track/metrics.mjs#STANCE_SPEED_MPS",
204
+ "export tools/track/publish-obs.mjs#USAGE",
205
+ "export tools/track/publish-obs.mjs#parseArgs",
206
+ "export tools/track/publish-obs.mjs#plan",
207
+ "export tools/track/publish-obs.mjs#runItems",
208
+ "export tools/track/run-box.mjs#idleCheck",
209
+ "export tools/track/study-2d.mjs#BILATERAL",
210
+ "export tools/track/study-2d.mjs#BODY_KEYPOINTS",
211
+ "export tools/track/study-2d.mjs#COCO_NAMES",
212
+ "export tools/track/study-2d.mjs#COCO_TO_RIG",
213
+ "export tools/track/study-2d.mjs#SWAP_CONF_MIN",
214
+ "export tools/track/study-2d.mjs#SWAP_MARGIN",
215
+ "export tools/track/study-2d.mjs#SWAP_MIN_PAIRS",
216
+ "export tools/track/study-2d.mjs#USAGE",
217
+ "export tools/track/study-2d.mjs#cameraProbe",
218
+ "export tools/track/study-2d.mjs#ceilingInputs",
219
+ "export tools/track/study-2d.mjs#ceilingItem",
220
+ "export tools/track/study-2d.mjs#codeSha",
221
+ "export tools/track/study-2d.mjs#handoffCheck",
222
+ "export tools/track/study-2d.mjs#inputKey",
223
+ "export tools/track/study-2d.mjs#main",
224
+ "export tools/track/study-2d.mjs#parseArgs",
225
+ "export tools/track/study-2d.mjs#skinProvenance",
226
+ "export tools/track/study-2d.mjs#stanceItem",
227
+ "export workers/api/src/auth.js#OAUTH_COOKIE",
228
+ "export workers/api/src/auth.js#PROVIDERS",
229
+ "export workers/api/src/auth.js#SESSION_COOKIE",
230
+ "export workers/api/src/auth.js#clearOAuthStateCookie",
231
+ "export workers/api/src/auth.js#constantTimeEqual",
232
+ "export workers/api/src/auth.js#cookieValue",
233
+ "export workers/api/src/auth.js#oauthStateCookie",
234
+ "export workers/api/src/auth.js#redirectUri",
235
+ "export workers/api/src/auth.js#safeNextPath",
236
+ "export workers/api/src/auth.js#sessionCookie",
237
+ "export workers/api/src/auth.js#sha256Hex",
238
+ "export workers/api/src/auth.js#signedState",
239
+ "export workers/api/src/auth.js#verifyState",
240
+ "export workers/api/src/cors.js#originAllowed",
241
+ "export workers/api/src/eta.js#ETA_FALLBACK_TEXT",
242
+ "export workers/api/src/index.js#clearSessionCookie",
243
+ "export workers/api/src/index.js#json",
244
+ "export workers/api/src/index.js#motionEnabled",
245
+ "export workers/api/src/index.js#motionUsageFor",
246
+ "export workers/api/src/index.js#mutationGuard",
247
+ "export workers/api/src/index.js#npzLooksValid",
248
+ "export workers/api/src/index.js#publicMotionJob",
249
+ "export workers/api/src/index.js#requireOrigin",
250
+ "export workers/api/src/index.js#route",
251
+ "export workers/api/src/index.js#runMotionJob",
252
+ "export workers/api/src/index.js#submitMotion",
253
+ "export workers/api/src/index.js#withCors",
254
+ "export workers/api/src/motion.js#MAX_DURATION",
255
+ "export workers/api/src/motion.js#MAX_STILL_BYTES",
256
+ "export workers/api/src/motion.js#MIN_DURATION",
257
+ "export workers/api/src/motion.js#uploadStill",
258
+ "export workers/api/src/policy.js#SITE_ORIGIN",
259
+ "export workers/api/src/policy.js#apiOriginFor",
260
+ "export workers/api/src/prompt.js#PROMPT_MAX_CHARS",
261
+ "export workers/api/src/queue.js#changesOf",
262
+ "export workers/api/src/queue.js#cleanupWorkerNonces",
263
+ "export workers/api/src/queue.js#positionFormula",
264
+ "export workers/api/src/turnstile.js#TURNSTILE_ALWAYS_BLOCK_SECRET_KEY",
265
+ "export workers/api/src/turnstile.js#TURNSTILE_ALWAYS_BLOCK_SITE_KEY",
266
+ "export workers/api/src/turnstile.js#TURNSTILE_ALWAYS_PASS_SECRET_KEY",
267
+ "export workers/api/src/turnstile.js#TURNSTILE_ALWAYS_PASS_SITE_KEY",
268
+ "export workers/api/src/worker-auth.js#bodyBytes",
269
+ "export workers/api/src/worker-auth.js#digestHex",
270
+ "export workers/api/src/worker-auth.js#fromBase64Url",
271
+ "export workers/api/src/worker-auth.js#randomNonce",
272
+ "export workers/api/src/worker-auth.js#signedHeaders",
273
+ "export workers/api/src/worker-auth.js#toBase64Url",
274
+ "file test/scene-panel-harness.jsx",
275
+ "file workers/api/scripts/dev-session.mjs",
276
+ "unlisted bin/agent/pi-tools.mjs#typebox",
277
+ "unlisted mcp/image-file.mjs#jpeg-js",
278
+ "unlisted mcp/live-hub.mjs#ws",
279
+ "unlisted mcp/qa-sculpt-live.mjs#@modelcontextprotocol/sdk",
280
+ "unlisted mcp/server.mjs#@modelcontextprotocol/sdk",
281
+ "unlisted mcp/server.mjs#zod",
282
+ "unlisted mcp/tool-handlers.mjs#zod",
283
+ "unlisted mcp/verify-live-batch.mjs#@modelcontextprotocol/sdk",
284
+ "unlisted mcp/verify-live-batch.mjs#ws",
285
+ "unlisted mcp/verify-live-capture.mjs#@modelcontextprotocol/sdk",
286
+ "unlisted mcp/verify-live-capture.mjs#ws",
287
+ "unlisted mcp/verify-live-controller.mjs#@modelcontextprotocol/sdk",
288
+ "unlisted mcp/verify-live-controller.mjs#ws",
289
+ "unlisted mcp/verify-live-editor-model.mjs#@modelcontextprotocol/sdk",
290
+ "unlisted mcp/verify-live-execution.mjs#ws",
291
+ "unlisted mcp/verify-live-motion-job.mjs#@modelcontextprotocol/sdk",
292
+ "unlisted mcp/verify-live-motion-job.mjs#ws",
293
+ "unlisted mcp/verify-live-p0.mjs#@modelcontextprotocol/sdk",
294
+ "unlisted mcp/verify-live-p0.mjs#ws",
295
+ "unlisted mcp/verify-live-routing.mjs#@modelcontextprotocol/sdk",
296
+ "unlisted mcp/verify-live-routing.mjs#ws",
297
+ "unlisted mcp/verify-live-scene-parity.mjs#zod",
298
+ "unlisted mcp/verify-live.mjs#ws",
299
+ "unlisted mcp/verify-live.mjs#zod",
300
+ "unlisted mcp/verify-sculpt-object.mjs#jpeg-js",
301
+ "unlisted mcp/verify-tool-annotations.mjs#@modelcontextprotocol/sdk",
302
+ "unlisted mcp/verify.mjs#@modelcontextprotocol/sdk",
303
+ "unlisted test/ardy/compare-npz.mjs#fflate",
304
+ "unlisted test/ardy/verify-compare-npz.mjs#fflate",
305
+ "unlisted test/bus/agent-path-loc.mjs#rolldown",
306
+ "unlisted test/bus/cast-fixture.mjs#rolldown",
307
+ "unlisted test/bus/generation-fixture.mjs#rolldown",
308
+ "unlisted test/bus/handler-coverage.mjs#rolldown",
309
+ "unlisted test/bus/history-owners.mjs#rolldown",
310
+ "unlisted test/bus/motion-fixture.mjs#rolldown",
311
+ "unlisted test/bus/verify-agent-path-retirement.mjs#rolldown",
312
+ "unlisted test/bus/verify-app-context.mjs#rolldown",
313
+ "unlisted test/bus/verify-app-domain-writers.mjs#rolldown",
314
+ "unlisted test/bus/verify-browser-navigation.mjs#rolldown",
315
+ "unlisted test/bus/verify-bus-coverage.mjs#rolldown",
316
+ "unlisted test/bus/verify-command-registry.mjs#rolldown",
317
+ "unlisted test/bus/verify-domain-modules.mjs#rolldown",
318
+ "unlisted test/bus/verify-history-app.mjs#rolldown",
319
+ "unlisted test/bus/verify-motion-agent-loc.mjs#rolldown",
320
+ "unlisted test/bus/verify-native-roundtrip.mjs#rolldown",
321
+ "unlisted test/bus/verify-objects-gesture-undo.mjs#rolldown",
322
+ "unlisted test/bus/verify-objects-strict-initializer.mjs#rolldown",
323
+ "unlisted test/bus/verify-store-domain-routing.mjs#rolldown",
324
+ "unlisted test/verify-agent-panel.mjs#rolldown",
325
+ "unlisted test/verify-export-recovery.mjs#rolldown",
326
+ "unlisted test/verify-motion-trail-persistence.mjs#rolldown",
327
+ "unlisted test/verify-schema-to-typebox.mjs#typebox",
328
+ "unlisted test/verify-studio-agent-binding.mjs#rolldown",
329
+ "unlisted test/verify-studio-undo-hygiene.mjs#rolldown",
330
+ "unlisted tools/qa/css-rule-usage.mjs#postcss"
331
+ ]
@@ -0,0 +1,126 @@
1
+ {
2
+ "bin/agent/agent-routes.mjs": 903,
3
+ "bin/agent/agent-runner.mjs": 496,
4
+ "bin/agent/providers.mjs": 409,
5
+ "bin/agent/session-store.mjs": 324,
6
+ "bin/agent/studio-rebase.mjs": 268,
7
+ "bin/agent/supervisor.mjs": 283,
8
+ "bin/agent/video-adapters.mjs": 334,
9
+ "bin/cozyclay.mjs": 527,
10
+ "bin/live/cli.mjs": 440,
11
+ "mcp/live-hub.mjs": 534,
12
+ "mcp/tool-handlers.mjs": 1890,
13
+ "mcp/verify-live-batch.mjs": 490,
14
+ "mcp/verify-live-capture.mjs": 268,
15
+ "mcp/verify-live-controller.mjs": 340,
16
+ "mcp/verify-live-motion-job.mjs": 336,
17
+ "mcp/verify-live-p0.mjs": 287,
18
+ "mcp/verify-live.mjs": 455,
19
+ "src/analytics.js": 1181,
20
+ "src/App.jsx": 6624,
21
+ "src/ardy/auto-physics.js": 1094,
22
+ "src/ardy/collision-blockers.js": 273,
23
+ "src/ardy/convert.js": 285,
24
+ "src/ardy/fix-collisions.js": 1987,
25
+ "src/ardy/ik.js": 1135,
26
+ "src/ardy/npz.js": 534,
27
+ "src/ardy/physics-review.js": 510,
28
+ "src/ardy/platform-fit.js": 277,
29
+ "src/ardy/playback.js": 565,
30
+ "src/ardy/range-pin.js": 277,
31
+ "src/ardy/root-drop.js": 313,
32
+ "src/ardy/timeline.jsx": 2384,
33
+ "src/ardy/waypoints.js": 311,
34
+ "src/asset-pane.jsx": 648,
35
+ "src/camera-follow.js": 505,
36
+ "src/camera-move.js": 289,
37
+ "src/camera-tutorial.jsx": 443,
38
+ "src/command-bus.js": 378,
39
+ "src/controls.jsx": 340,
40
+ "src/domains/cast.js": 859,
41
+ "src/domains/motion.js": 2277,
42
+ "src/domains/motion/motion-video-capture.js": 592,
43
+ "src/domains/objects.js": 907,
44
+ "src/domains/scenes.js": 801,
45
+ "src/domains/shots.js": 411,
46
+ "src/dualview.jsx": 371,
47
+ "src/hierarchy-panel.jsx": 779,
48
+ "src/line-edit.js": 1215,
49
+ "src/live-control.js": 338,
50
+ "src/matte-editor.js": 486,
51
+ "src/matte.js": 472,
52
+ "src/motion-trail.js": 550,
53
+ "src/multimodel-ingest.js": 344,
54
+ "src/object-gizmo.jsx": 824,
55
+ "src/object-path.js": 410,
56
+ "src/panels/ObjectTransformPanel.jsx": 545,
57
+ "src/panels/PromptBlocksPanel.jsx": 433,
58
+ "src/panels/SculptPanel.jsx": 370,
59
+ "src/planview.jsx": 887,
60
+ "src/poses.js": 321,
61
+ "src/posestudio.jsx": 1263,
62
+ "src/project-browser.jsx": 401,
63
+ "src/project-resources.js": 256,
64
+ "src/project.js": 691,
65
+ "src/props.jsx": 649,
66
+ "src/range-pin-panel.jsx": 305,
67
+ "src/scene-assets.js": 400,
68
+ "src/scene-mesh.js": 350,
69
+ "src/scene-objects.js": 1233,
70
+ "src/scenes.js": 456,
71
+ "src/sculpt-compare.js": 357,
72
+ "src/sculpt-recipe.js": 363,
73
+ "src/sculpt-run.js": 309,
74
+ "src/shell/BoardSlot.jsx": 316,
75
+ "src/shell/BottomDock.jsx": 460,
76
+ "src/shell/DetailsSlot.jsx": 517,
77
+ "src/shell/MenuBar.jsx": 640,
78
+ "src/shell/PreferencesDialog.jsx": 516,
79
+ "src/shell/ViewportToolbar.jsx": 638,
80
+ "src/shot-authoring.js": 348,
81
+ "src/stage-canvas-rigs.jsx": 352,
82
+ "src/stage-editor-gizmos.jsx": 1116,
83
+ "src/studio-agent-commands.js": 466,
84
+ "src/studio-agent-protocol.js": 518,
85
+ "src/studio-app-binding.js": 360,
86
+ "src/ui.jsx": 393,
87
+ "src/workflow/agent-client.js": 1386,
88
+ "src/workflow/AgentPanel.jsx": 894,
89
+ "src/workflow/WorkflowBuilder.jsx": 608,
90
+ "tools/ardy/bridge.mjs": 1321,
91
+ "tools/ardy/bvh-cskel27.mjs": 912,
92
+ "tools/ardy/extract-rest.mjs": 266,
93
+ "tools/ardy/extract.mjs": 412,
94
+ "tools/ardy/footage.mjs": 409,
95
+ "tools/ardy/motion-stabilize.mjs": 279,
96
+ "tools/ardy/npz.mjs": 369,
97
+ "tools/ardy/runners/local.mjs": 367,
98
+ "tools/bench/extract-bench.mjs": 284,
99
+ "tools/bench/fit/contact.mjs": 380,
100
+ "tools/bench/metrics.mjs": 290,
101
+ "tools/bench/obs-bench.mjs": 486,
102
+ "tools/bench/obs/ground.mjs": 265,
103
+ "tools/bench/obs/ladder.mjs": 480,
104
+ "tools/bench/score.mjs": 316,
105
+ "tools/demo-worker/generate.mjs": 274,
106
+ "tools/demo-worker/index.mjs": 426,
107
+ "tools/gt-render/camera-math.mjs": 255,
108
+ "tools/gt-render/render.mjs": 485,
109
+ "tools/kimodo/generate.mjs": 519,
110
+ "tools/kimodo/local-output.mjs": 255,
111
+ "tools/kimodo/measure-preserve.mjs": 795,
112
+ "tools/kimodo/preserve-mask.mjs": 452,
113
+ "tools/kimodo/soma77-to-cskel27.mjs": 271,
114
+ "tools/projflow/generate.mjs": 682,
115
+ "tools/projflow/hml22-to-cskel27.mjs": 633,
116
+ "tools/projflow/line-edit-job.mjs": 484,
117
+ "tools/projflow/replay.mjs": 397,
118
+ "tools/projflow/service.mjs": 651,
119
+ "tools/qa/css-rule-usage.mjs": 251,
120
+ "tools/run-tests.mjs": 563,
121
+ "tools/track/gate.mjs": 325,
122
+ "tools/track/masks.mjs": 297,
123
+ "tools/track/study-2d.mjs": 663,
124
+ "workers/api/src/index.js": 426,
125
+ "workers/api/src/queue.js": 441
126
+ }
@@ -33,7 +33,7 @@ function bridgeError(name, port, detail, code) {
33
33
  return error;
34
34
  }
35
35
 
36
- export function waitForBridgeReady(child, { name, port, readyType, listenErrorType }, timeoutMs = 5000) {
36
+ function waitForBridgeReady(child, { name, port, readyType, listenErrorType }, timeoutMs = 5000) {
37
37
  return new Promise((resolve, reject) => {
38
38
  let settled = false;
39
39
  const finish = (callback, value) => {
@@ -27,9 +27,9 @@ import { TRACK_TO_HML22_JOINT, UNMAPPABLE_TRACKS } from "./generate.mjs";
27
27
 
28
28
  /** The tracks a line edit (C6) or a replay entry (C10) may name — the wrapper's
29
29
  * own track -> hml22 joint table, never a copy of it. */
30
- export const LINE_EDIT_TRACK_IDS = Object.keys(TRACK_TO_HML22_JOINT);
31
- export const LINE_EDIT_POINTS_MIN = 2;
32
- export const LINE_EDIT_POINTS_MAX = 64; // matches src/line-edit.js MAX_LINE_POINTS
30
+ const LINE_EDIT_TRACK_IDS = Object.keys(TRACK_TO_HML22_JOINT);
31
+ const LINE_EDIT_POINTS_MIN = 2;
32
+ const LINE_EDIT_POINTS_MAX = 64; // matches src/line-edit.js MAX_LINE_POINTS
33
33
  /** C6's OTHER gesture: 3D pins (`pins3d`), one per scrubbed moment.
34
34
  *
35
35
  * A pin is a keyframe — "the hand is HERE at frame 100" — and it is the shape
@@ -56,7 +56,7 @@ export const BOUNDARY_MARGIN = 5;
56
56
  /** Fields a replay entry may NOT carry: `replay` cannot be combined with the
57
57
  * modes that splice or rewrite an existing take, because then "the take the
58
58
  * replay applies to" has two candidate answers. */
59
- export const REPLAY_EXCLUSIVE = ["lineEdit", "motionEdit", "regenerateSegments"];
59
+ const REPLAY_EXCLUSIVE = ["lineEdit", "motionEdit", "regenerateSegments"];
60
60
 
61
61
  /* ------------------------------------------------------------------------- */
62
62
  /* the per-field rules, shared by C6 and C10 */
@@ -61,9 +61,9 @@ const RUN_LINE_EDIT = join(HERE, "generate.mjs");
61
61
 
62
62
  const SSH_OPTS = ["-o", "BatchMode=yes", "-o", "ConnectTimeout=10"];
63
63
 
64
- export const DEFAULT_REPO = "/home/yun/projflow-scout/repo";
65
- export const DEFAULT_PYTHON = "/home/yun/projflow-scout/venv/bin/python";
66
- export const DEFAULT_BOX_HOME = "/home/yun/projflow-scout/home";
64
+ const DEFAULT_REPO = "/home/yun/projflow-scout/repo";
65
+ const DEFAULT_PYTHON = "/home/yun/projflow-scout/venv/bin/python";
66
+ const DEFAULT_BOX_HOME = "/home/yun/projflow-scout/home";
67
67
 
68
68
  function run(argv, timeoutMs = 60_000) {
69
69
  return new Promise((resolve) => {
@@ -87,6 +87,8 @@ const states = [
87
87
  const out = {};
88
88
  const over = [];
89
89
  for (const [name, setup] of states) {
90
+ // A storyboard project (#650) has no Motion mode to measure.
91
+ if (name === "motion" && !(await ev("!!document.querySelector('[data-mode-key=\"4\"]')"))) { console.log("SKIP motion (no Motion mode in this project)"); continue; }
90
92
  await setup(); await settle();
91
93
  const shot = await send("Page.captureScreenshot", { format: "png" });
92
94
  writeFileSync(`${OUT}-${name}.png`, Buffer.from(shot.data, "base64"));