davinci-resolve-mcp 2.82.1 → 2.86.2
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/CHANGELOG.md +267 -1
- package/README.md +16 -3
- package/README.zh-CN.md +261 -0
- package/docs/SKILL.md +6 -3
- package/docs/process/release-process.md +6 -0
- package/docs/reference/api-coverage.md +17 -10
- package/docs/reference/api-limitations.md +4 -4
- package/install.py +3 -3
- package/package.json +1 -1
- package/resolve-advanced/server/db-patch.mjs +43 -4
- package/resolve-advanced/vendor/drp-format/subtitle-style.js +11 -5
- package/scripts/doctor.py +4 -2
- package/scripts/resolve_bridge_launcher.py +2 -1
- package/src/analysis_dashboard.py +2 -2
- package/src/granular/common.py +1 -1
- package/src/server.py +158 -19
- package/src/utils/api_truth.py +29 -7
- package/src/utils/edit_engine.py +6 -0
- package/src/utils/resolve_bridge_client.py +6 -3
- package/src/utils/resolve_connection.py +47 -12
- package/src/utils/resolve_versions.py +338 -0
- package/src/utils/swallowed_retakes.py +139 -0
- package/src/utils/take_ranking.py +18 -1
|
@@ -160,7 +160,10 @@ RANKING_CAVEAT = (
|
|
|
160
160
|
"most of what makes a take the right one. The take that plays best is "
|
|
161
161
|
"regularly the least fluent one: the hesitation is often the acting. Use "
|
|
162
162
|
"this to find the clean safety take or to skip the warm-ups, not to choose "
|
|
163
|
-
"the read."
|
|
163
|
+
"the read. It also UNDERCOUNTS restarts: an immediate re-read is reported "
|
|
164
|
+
"by whisper as a single clean utterance, so a take that stumbled and "
|
|
165
|
+
"recovered can outscore one that did not (issue #125). Check "
|
|
166
|
+
"possible_swallowed_retakes before trusting a close ranking."
|
|
164
167
|
)
|
|
165
168
|
|
|
166
169
|
|
|
@@ -185,6 +188,19 @@ def rank_takes(
|
|
|
185
188
|
take["rank"] = position
|
|
186
189
|
|
|
187
190
|
unreliable = [s["label"] for s in scored if not s["reliable"]]
|
|
191
|
+
|
|
192
|
+
# Restarts WITHIN a take are precisely what whisper's timestamps hide: an
|
|
193
|
+
# immediate re-read is emitted once, so the restart never reaches the filler
|
|
194
|
+
# or false-start counts and the take scores as cleaner than it was. Flagging
|
|
195
|
+
# the stretched words at least tells the caller which takes to distrust
|
|
196
|
+
# rather than letting the ranking imply it saw everything (issue #125).
|
|
197
|
+
from src.utils import swallowed_retakes as _swallowed
|
|
198
|
+
swallowed: Dict[str, Any] = {}
|
|
199
|
+
for take, source in zip(scored, takes):
|
|
200
|
+
report = _swallowed.swallowed_retake_report(source.get("words") or [])
|
|
201
|
+
if report["count"]:
|
|
202
|
+
swallowed[take["label"]] = report
|
|
203
|
+
|
|
188
204
|
return {
|
|
189
205
|
"success": True,
|
|
190
206
|
"kind": "take_ranking",
|
|
@@ -194,6 +210,7 @@ def rank_takes(
|
|
|
194
210
|
"most_fluent": scored[0]["label"] if scored else None,
|
|
195
211
|
"script_supplied": bool(script and script.strip()),
|
|
196
212
|
"unreliable_takes": unreliable,
|
|
213
|
+
"possible_swallowed_retakes": swallowed,
|
|
197
214
|
"caveat": RANKING_CAVEAT,
|
|
198
215
|
"note": (
|
|
199
216
|
f"Ranked {len(scored)} takes by fluency. "
|