davinci-resolve-mcp 2.44.0 → 2.46.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.
@@ -473,7 +473,25 @@ def ingest_report(
473
473
  ),
474
474
  )
475
475
 
476
- # Sampled frames.
476
+ # Sampled frames. Shot mapping uses frame_indices_used when present,
477
+ # with a time-containment fallback (some commit paths don't record
478
+ # which frame indices fed which shot).
479
+ shot_intervals: List[Tuple[float, float, str]] = []
480
+ for entry in shot_entries:
481
+ if not isinstance(entry, dict):
482
+ continue
483
+ s, e = entry.get("time_seconds_start"), entry.get("time_seconds_end")
484
+ if isinstance(s, (int, float)) and isinstance(e, (int, float)):
485
+ shot_intervals.append((float(s), float(e), shot_uuid_for(clip_uuid, s, e)))
486
+
487
+ def _shot_for_time(t: Any) -> Optional[str]:
488
+ if not isinstance(t, (int, float)):
489
+ return None
490
+ for s, e, uuid_ in shot_intervals:
491
+ if s <= float(t) < e:
492
+ return uuid_
493
+ return None
494
+
477
495
  conn.execute("DELETE FROM frames WHERE clip_uuid = ?", (clip_uuid,))
478
496
  keyframes = motion.get("analysis_keyframes") if isinstance(motion.get("analysis_keyframes"), list) else []
479
497
  for kf in keyframes:
@@ -492,7 +510,7 @@ def ingest_report(
492
510
  """,
493
511
  (
494
512
  clip_uuid,
495
- frame_to_shot.get(frame_index),
513
+ frame_to_shot.get(frame_index) or _shot_for_time(kf.get("time_seconds")),
496
514
  frame_index,
497
515
  kf.get("time_seconds") if isinstance(kf.get("time_seconds"), (int, float)) else None,
498
516
  kf.get("frame_path") or kf.get("path"),
@@ -56,6 +56,11 @@ DESTRUCTIVE_ACTIONS_BY_TOOL: Dict[str, FrozenSet[str]] = {
56
56
  "delete_clip_mattes",
57
57
  "delete_timelines",
58
58
  }),
59
+ "edit_engine": frozenset({
60
+ "execute_selects",
61
+ "execute_tighten",
62
+ "execute_swap",
63
+ }),
59
64
  "timeline": frozenset({
60
65
  "create_timeline",
61
66
  "create_timeline_from_clips",