davinci-resolve-mcp 2.57.5 → 2.58.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 (327) hide show
  1. package/AGENTS.md +20 -0
  2. package/CHANGELOG.md +166 -2
  3. package/LICENSE +1 -1
  4. package/README.md +73 -1
  5. package/bin/davinci-resolve-advanced-mcp.mjs +20 -0
  6. package/docs/README.md +19 -0
  7. package/docs/SKILL.md +62 -1
  8. package/docs/contributing.md +1 -1
  9. package/docs/guides/control-panel.md +9 -0
  10. package/docs/kernels/README.md +21 -0
  11. package/docs/kernels/audio-fairlight-kernel.md +22 -0
  12. package/docs/kernels/color-grade-kernel.md +51 -0
  13. package/docs/kernels/fusion-composition-kernel.md +17 -0
  14. package/docs/kernels/media-pool-ingest-kernel.md +20 -0
  15. package/docs/kernels/render-deliver-kernel.md +32 -0
  16. package/docs/kernels/timeline-conform-interchange-kernel.md +39 -0
  17. package/docs/kernels/timeline-edit-kernel.md +17 -0
  18. package/docs/process/release-process.md +29 -7
  19. package/docs/reference/api-coverage.md +1 -1
  20. package/install.py +27 -4
  21. package/package.json +23 -2
  22. package/resolve-advanced/README.md +194 -0
  23. package/resolve-advanced/package.json +50 -0
  24. package/resolve-advanced/server/black-balance.mjs +92 -0
  25. package/resolve-advanced/server/capabilities.mjs +86 -0
  26. package/resolve-advanced/server/cdl-io.mjs +76 -0
  27. package/resolve-advanced/server/contrast-normalize.mjs +180 -0
  28. package/resolve-advanced/server/db-patch.mjs +91 -0
  29. package/resolve-advanced/server/deliverable-entities.mjs +86 -0
  30. package/resolve-advanced/server/deliverable-qc.mjs +270 -0
  31. package/resolve-advanced/server/editorial.mjs +370 -0
  32. package/resolve-advanced/server/exposure-level.mjs +129 -0
  33. package/resolve-advanced/server/extract-frames.mjs +196 -0
  34. package/resolve-advanced/server/ffprobe-media.mjs +88 -0
  35. package/resolve-advanced/server/gamut-legal.mjs +112 -0
  36. package/resolve-advanced/server/grade-body-patch.mjs +246 -0
  37. package/resolve-advanced/server/grade-transfer.mjs +66 -0
  38. package/resolve-advanced/server/group-grade-read.mjs +137 -0
  39. package/resolve-advanced/server/index.mjs +105 -0
  40. package/resolve-advanced/server/lib.mjs +84 -0
  41. package/resolve-advanced/server/libs.mjs +65 -0
  42. package/resolve-advanced/server/lineage-db.mjs +479 -0
  43. package/resolve-advanced/server/lut-apply.mjs +61 -0
  44. package/resolve-advanced/server/match-to-reference.mjs +173 -0
  45. package/resolve-advanced/server/media-inventory.mjs +169 -0
  46. package/resolve-advanced/server/media-ops.mjs +243 -0
  47. package/resolve-advanced/server/node-meta-db.mjs +62 -0
  48. package/resolve-advanced/server/node-provenance.mjs +102 -0
  49. package/resolve-advanced/server/offline-ref-db.mjs +420 -0
  50. package/resolve-advanced/server/offline-ref.mjs +179 -0
  51. package/resolve-advanced/server/project-db.mjs +233 -0
  52. package/resolve-advanced/server/provenance-audit.mjs +210 -0
  53. package/resolve-advanced/server/qc-frame.mjs +224 -0
  54. package/resolve-advanced/server/qc-sampler.mjs +67 -0
  55. package/resolve-advanced/server/readback.mjs +77 -0
  56. package/resolve-advanced/server/render-manifest.mjs +93 -0
  57. package/resolve-advanced/server/reverse-clip-db.mjs +270 -0
  58. package/resolve-advanced/server/runner-apply-contract.mjs +64 -0
  59. package/resolve-advanced/server/runner.mjs +244 -0
  60. package/resolve-advanced/server/saturation-match.mjs +108 -0
  61. package/resolve-advanced/server/scope-read.mjs +257 -0
  62. package/resolve-advanced/server/season-look.mjs +96 -0
  63. package/resolve-advanced/server/shot-intent.mjs +82 -0
  64. package/resolve-advanced/server/shot-match.mjs +147 -0
  65. package/resolve-advanced/server/skin-match.mjs +205 -0
  66. package/resolve-advanced/server/spec-compile.mjs +217 -0
  67. package/resolve-advanced/server/tone-curve-transfer.mjs +184 -0
  68. package/resolve-advanced/server/tool-catalog.mjs +265 -0
  69. package/resolve-advanced/server/tools/audio.mjs +54 -0
  70. package/resolve-advanced/server/tools/audio_plan.mjs +58 -0
  71. package/resolve-advanced/server/tools/capabilities.mjs +16 -0
  72. package/resolve-advanced/server/tools/color_trace.mjs +165 -0
  73. package/resolve-advanced/server/tools/conform.mjs +291 -0
  74. package/resolve-advanced/server/tools/deliverable.mjs +105 -0
  75. package/resolve-advanced/server/tools/drp.mjs +232 -0
  76. package/resolve-advanced/server/tools/drt.mjs +200 -0
  77. package/resolve-advanced/server/tools/drx.mjs +943 -0
  78. package/resolve-advanced/server/tools/editorial.mjs +69 -0
  79. package/resolve-advanced/server/tools/fairlight.mjs +108 -0
  80. package/resolve-advanced/server/tools/fusion.mjs +64 -0
  81. package/resolve-advanced/server/tools/media.mjs +102 -0
  82. package/resolve-advanced/server/tools/offline_ref.mjs +123 -0
  83. package/resolve-advanced/server/tools/pipeline.mjs +137 -0
  84. package/resolve-advanced/server/tools/project_db.mjs +200 -0
  85. package/resolve-advanced/server/tools/project_read.mjs +212 -0
  86. package/resolve-advanced/server/tools/provenance.mjs +73 -0
  87. package/resolve-advanced/server/verify-grade.mjs +113 -0
  88. package/resolve-advanced/server/white-balance-match.mjs +122 -0
  89. package/resolve-advanced/vendor/audio/format-converter.js +330 -0
  90. package/resolve-advanced/vendor/audio/split.js +173 -0
  91. package/resolve-advanced/vendor/audio/trim.js +188 -0
  92. package/resolve-advanced/vendor/audio-fairlight/index.js +391 -0
  93. package/resolve-advanced/vendor/conform-qc/adapters/frame-sampler.js +56 -0
  94. package/resolve-advanced/vendor/conform-qc/adapters/local-ffmpeg-sampler.js +65 -0
  95. package/resolve-advanced/vendor/conform-qc/adapters/rendernode-ffmpeg-sampler.js +50 -0
  96. package/resolve-advanced/vendor/conform-qc/adapters/resolve/driver.py +176 -0
  97. package/resolve-advanced/vendor/conform-qc/adapters/resolve-driver.js +61 -0
  98. package/resolve-advanced/vendor/conform-qc/adapters/resolve-headless-driver.js +86 -0
  99. package/resolve-advanced/vendor/conform-qc/adapters/vision-validator.js +75 -0
  100. package/resolve-advanced/vendor/conform-qc/cli.js +63 -0
  101. package/resolve-advanced/vendor/conform-qc/compare/advisory.js +106 -0
  102. package/resolve-advanced/vendor/conform-qc/compare/decode.js +36 -0
  103. package/resolve-advanced/vendor/conform-qc/compare/index.js +61 -0
  104. package/resolve-advanced/vendor/conform-qc/compare/locate.js +70 -0
  105. package/resolve-advanced/vendor/conform-qc/compare/metrics.js +409 -0
  106. package/resolve-advanced/vendor/conform-qc/docs/runbook.md +72 -0
  107. package/resolve-advanced/vendor/conform-qc/index.js +49 -0
  108. package/resolve-advanced/vendor/conform-qc/knowledge/index.js +110 -0
  109. package/resolve-advanced/vendor/conform-qc/ops/conform-core.js +137 -0
  110. package/resolve-advanced/vendor/conform-qc/ops/conform-diff.js +109 -0
  111. package/resolve-advanced/vendor/conform-qc/ops/insert.js +108 -0
  112. package/resolve-advanced/vendor/conform-qc/ops/local-conform.js +61 -0
  113. package/resolve-advanced/vendor/conform-qc/ops/patch.js +80 -0
  114. package/resolve-advanced/vendor/conform-qc/ops/trigger.js +32 -0
  115. package/resolve-advanced/vendor/conform-qc/ops/verify.js +105 -0
  116. package/resolve-advanced/vendor/conform-qc/ops/workflow.js +30 -0
  117. package/resolve-advanced/vendor/conform-qc/oracle/emulate.js +155 -0
  118. package/resolve-advanced/vendor/conform-qc/oracle/index.js +38 -0
  119. package/resolve-advanced/vendor/conform-qc/oracle/resolve.js +196 -0
  120. package/resolve-advanced/vendor/conform-qc/package.json +16 -0
  121. package/resolve-advanced/vendor/conform-qc/packaging/emit-aaf.js +30 -0
  122. package/resolve-advanced/vendor/conform-qc/packaging/emit-fcp7.js +64 -0
  123. package/resolve-advanced/vendor/conform-qc/packaging/index.js +169 -0
  124. package/resolve-advanced/vendor/conform-qc/packaging/media-ops.js +56 -0
  125. package/resolve-advanced/vendor/conform-qc/packaging/otio.js +50 -0
  126. package/resolve-advanced/vendor/conform-qc/packaging/relink.js +50 -0
  127. package/resolve-advanced/vendor/conform-qc/packaging/surgical-relink.js +195 -0
  128. package/resolve-advanced/vendor/conform-qc/parse/index.js +54 -0
  129. package/resolve-advanced/vendor/conform-qc/parse/merge-dto.js +27 -0
  130. package/resolve-advanced/vendor/conform-qc/parse/xmeml-geometry.js +256 -0
  131. package/resolve-advanced/vendor/conform-qc/reference/burnin-ocr.js +100 -0
  132. package/resolve-advanced/vendor/conform-qc/reference/sidecar.js +37 -0
  133. package/resolve-advanced/vendor/conform-qc/repair/analysis.js +62 -0
  134. package/resolve-advanced/vendor/conform-qc/repair/index.js +78 -0
  135. package/resolve-advanced/vendor/conform-qc/repair/media-analysis.js +139 -0
  136. package/resolve-advanced/vendor/conform-qc/repair/media-index.js +135 -0
  137. package/resolve-advanced/vendor/conform-qc/repair/strategies.js +250 -0
  138. package/resolve-advanced/vendor/conform-qc/report/index.js +133 -0
  139. package/resolve-advanced/vendor/conform-qc/roles/index.js +96 -0
  140. package/resolve-advanced/vendor/conform-qc/synthetic/generate.js +233 -0
  141. package/resolve-advanced/vendor/conform-qc/test/advisory.test.js +85 -0
  142. package/resolve-advanced/vendor/conform-qc/test/cli.test.js +39 -0
  143. package/resolve-advanced/vendor/conform-qc/test/compare.test.js +152 -0
  144. package/resolve-advanced/vendor/conform-qc/test/conform-diff.test.js +70 -0
  145. package/resolve-advanced/vendor/conform-qc/test/emulate.test.js +51 -0
  146. package/resolve-advanced/vendor/conform-qc/test/frame-sampler.test.js +30 -0
  147. package/resolve-advanced/vendor/conform-qc/test/geometry.test.js +112 -0
  148. package/resolve-advanced/vendor/conform-qc/test/knowledge.test.js +56 -0
  149. package/resolve-advanced/vendor/conform-qc/test/lifecycle.test.js +110 -0
  150. package/resolve-advanced/vendor/conform-qc/test/local-ffmpeg-sampler.test.js +66 -0
  151. package/resolve-advanced/vendor/conform-qc/test/locate.test.js +63 -0
  152. package/resolve-advanced/vendor/conform-qc/test/media-analysis.test.js +63 -0
  153. package/resolve-advanced/vendor/conform-qc/test/media-index-normalized.test.js +65 -0
  154. package/resolve-advanced/vendor/conform-qc/test/media-index-origin.test.js +53 -0
  155. package/resolve-advanced/vendor/conform-qc/test/metrics-fast.test.js +91 -0
  156. package/resolve-advanced/vendor/conform-qc/test/oracle-reverse.test.js +86 -0
  157. package/resolve-advanced/vendor/conform-qc/test/oracle.test.js +136 -0
  158. package/resolve-advanced/vendor/conform-qc/test/p0-acceptance.test.js +60 -0
  159. package/resolve-advanced/vendor/conform-qc/test/p1-acceptance.test.js +75 -0
  160. package/resolve-advanced/vendor/conform-qc/test/p45-patch-acceptance.test.js +102 -0
  161. package/resolve-advanced/vendor/conform-qc/test/packaging.test.js +133 -0
  162. package/resolve-advanced/vendor/conform-qc/test/parse-stubs.test.js +28 -0
  163. package/resolve-advanced/vendor/conform-qc/test/repair-strategies.test.js +128 -0
  164. package/resolve-advanced/vendor/conform-qc/test/repair.test.js +84 -0
  165. package/resolve-advanced/vendor/conform-qc/test/report.test.js +52 -0
  166. package/resolve-advanced/vendor/conform-qc/test/resolve-readback.test.js +71 -0
  167. package/resolve-advanced/vendor/conform-qc/test/roles.test.js +107 -0
  168. package/resolve-advanced/vendor/conform-qc/test/runbook.test.js +30 -0
  169. package/resolve-advanced/vendor/conform-qc/test/scale-residual.test.js +40 -0
  170. package/resolve-advanced/vendor/conform-qc/test/sidecar.test.js +51 -0
  171. package/resolve-advanced/vendor/conform-qc/test/smoke.test.js +87 -0
  172. package/resolve-advanced/vendor/conform-qc/test/surgical-relink.test.js +73 -0
  173. package/resolve-advanced/vendor/conform-qc/test/synthetic.test.js +98 -0
  174. package/resolve-advanced/vendor/conform-qc/test/verify.test.js +93 -0
  175. package/resolve-advanced/vendor/conform-qc/test/vision-validator.test.js +43 -0
  176. package/resolve-advanced/vendor/conform-qc/test/workflow-driver.test.js +46 -0
  177. package/resolve-advanced/vendor/conform-qc/toolset/index.js +53 -0
  178. package/resolve-advanced/vendor/drp-format/README.md +116 -0
  179. package/resolve-advanced/vendor/drp-format/__tests__/_resolve-verify.js +39 -0
  180. package/resolve-advanced/vendor/drp-format/__tests__/add-media-clip.test.js +30 -0
  181. package/resolve-advanced/vendor/drp-format/__tests__/assemble-timeline.test.js +68 -0
  182. package/resolve-advanced/vendor/drp-format/__tests__/author-project.test.js +57 -0
  183. package/resolve-advanced/vendor/drp-format/__tests__/composition-text.test.js +98 -0
  184. package/resolve-advanced/vendor/drp-format/__tests__/diff.test.js +272 -0
  185. package/resolve-advanced/vendor/drp-format/__tests__/effect-filters-compressed.test.js +143 -0
  186. package/resolve-advanced/vendor/drp-format/__tests__/fixtures/p0-3-session30-empty-effectfilters.drp +0 -0
  187. package/resolve-advanced/vendor/drp-format/__tests__/fixtures/retimed-timemap-50pct.hex +1 -0
  188. package/resolve-advanced/vendor/drp-format/__tests__/fixtures/retimed-timemap-dynamic.hex +1 -0
  189. package/resolve-advanced/vendor/drp-format/__tests__/inject-grades.test.js +238 -0
  190. package/resolve-advanced/vendor/drp-format/__tests__/keyed-dict.test.js +85 -0
  191. package/resolve-advanced/vendor/drp-format/__tests__/lut-refs.test.js +119 -0
  192. package/resolve-advanced/vendor/drp-format/__tests__/media-blobs.test.js +25 -0
  193. package/resolve-advanced/vendor/drp-format/__tests__/media-timemap.test.js +119 -0
  194. package/resolve-advanced/vendor/drp-format/__tests__/place-fusion-title.test.js +52 -0
  195. package/resolve-advanced/vendor/drp-format/__tests__/place-generator.test.js +40 -0
  196. package/resolve-advanced/vendor/drp-format/__tests__/place-transition.test.js +48 -0
  197. package/resolve-advanced/vendor/drp-format/__tests__/protobuf-wire.test.js +64 -0
  198. package/resolve-advanced/vendor/drp-format/__tests__/relink-media.test.js +106 -0
  199. package/resolve-advanced/vendor/drp-format/__tests__/splice-clips.test.js +256 -0
  200. package/resolve-advanced/vendor/drp-format/assemble-timeline.js +65 -0
  201. package/resolve-advanced/vendor/drp-format/author-project.js +118 -0
  202. package/resolve-advanced/vendor/drp-format/composition-text.js +213 -0
  203. package/resolve-advanced/vendor/drp-format/curves-encoder.js +763 -0
  204. package/resolve-advanced/vendor/drp-format/diff.js +310 -0
  205. package/resolve-advanced/vendor/drp-format/drp-packager.js +201 -0
  206. package/resolve-advanced/vendor/drp-format/drp-validator.js +809 -0
  207. package/resolve-advanced/vendor/drp-format/effect-encoder.js +640 -0
  208. package/resolve-advanced/vendor/drp-format/extract-lut-refs.js +119 -0
  209. package/resolve-advanced/vendor/drp-format/grade-encoder.example.js +133 -0
  210. package/resolve-advanced/vendor/drp-format/grade-encoder.js +401 -0
  211. package/resolve-advanced/vendor/drp-format/grade-encoder.test.js +171 -0
  212. package/resolve-advanced/vendor/drp-format/grade-encoder.verify.js +249 -0
  213. package/resolve-advanced/vendor/drp-format/grade-node-extractor.js +495 -0
  214. package/resolve-advanced/vendor/drp-format/grade-parameter-decoder.js +774 -0
  215. package/resolve-advanced/vendor/drp-format/index.js +174 -0
  216. package/resolve-advanced/vendor/drp-format/inject-grades.js +219 -0
  217. package/resolve-advanced/vendor/drp-format/keyed-dict.js +227 -0
  218. package/resolve-advanced/vendor/drp-format/marker-encoder.js +532 -0
  219. package/resolve-advanced/vendor/drp-format/media-blobs.js +53 -0
  220. package/resolve-advanced/vendor/drp-format/media-timemap.js +164 -0
  221. package/resolve-advanced/vendor/drp-format/mp-folder-builder.js +293 -0
  222. package/resolve-advanced/vendor/drp-format/node-tree-encoder.js +1246 -0
  223. package/resolve-advanced/vendor/drp-format/package.json +18 -0
  224. package/resolve-advanced/vendor/drp-format/place-fusion-title.js +131 -0
  225. package/resolve-advanced/vendor/drp-format/place-generator.js +77 -0
  226. package/resolve-advanced/vendor/drp-format/place-transition.js +91 -0
  227. package/resolve-advanced/vendor/drp-format/power-window-encoder.js +776 -0
  228. package/resolve-advanced/vendor/drp-format/protobuf-wire.js +111 -0
  229. package/resolve-advanced/vendor/drp-format/qualifier-encoder.js +706 -0
  230. package/resolve-advanced/vendor/drp-format/relink-media.js +218 -0
  231. package/resolve-advanced/vendor/drp-format/rich-title-encoder.js +447 -0
  232. package/resolve-advanced/vendor/drp-format/seq-container-builder.js +572 -0
  233. package/resolve-advanced/vendor/drp-format/seq-surgery.js +155 -0
  234. package/resolve-advanced/vendor/drp-format/splice-clips.js +445 -0
  235. package/resolve-advanced/vendor/drp-format/templates/empty-project.drp +0 -0
  236. package/resolve-advanced/vendor/drp-format/templates/fusion-title.xml +56 -0
  237. package/resolve-advanced/vendor/drp-format/templates/generator-solid-color.xml +21 -0
  238. package/resolve-advanced/vendor/drp-format/templates/media-clip-h264.drp +0 -0
  239. package/resolve-advanced/vendor/drp-format/templates/transition-cross-dissolve.xml +22 -0
  240. package/resolve-advanced/vendor/drp-format/tool-registry.descriptor.js +80 -0
  241. package/resolve-advanced/vendor/drp-format/utils/safe-archive.js +54 -0
  242. package/resolve-advanced/vendor/drp-format/xml-builder.js +759 -0
  243. package/resolve-advanced/vendor/drt-format/__tests__/_resolve-verify.js +21 -0
  244. package/resolve-advanced/vendor/drt-format/__tests__/build.test.js +113 -0
  245. package/resolve-advanced/vendor/drt-format/__tests__/multi-format.test.js +93 -0
  246. package/resolve-advanced/vendor/drt-format/__tests__/parse-real-resolve21.test.js +51 -0
  247. package/resolve-advanced/vendor/drt-format/__tests__/parse.test.js +134 -0
  248. package/resolve-advanced/vendor/drt-format/__tests__/resolve-versions.test.js +120 -0
  249. package/resolve-advanced/vendor/drt-format/__tests__/schema-fingerprint.test.js +62 -0
  250. package/resolve-advanced/vendor/drt-format/__tests__/smoke.test.js +27 -0
  251. package/resolve-advanced/vendor/drt-format/__tests__/validate.test.js +109 -0
  252. package/resolve-advanced/vendor/drt-format/capabilities.js +69 -0
  253. package/resolve-advanced/vendor/drt-format/capability-domains.js +56 -0
  254. package/resolve-advanced/vendor/drt-format/drt-builder.js +42 -0
  255. package/resolve-advanced/vendor/drt-format/drt-parser.js +164 -0
  256. package/resolve-advanced/vendor/drt-format/drt-validator.js +98 -0
  257. package/resolve-advanced/vendor/drt-format/index.js +45 -0
  258. package/resolve-advanced/vendor/drt-format/package.json +17 -0
  259. package/resolve-advanced/vendor/drt-format/resolve-versions.js +153 -0
  260. package/resolve-advanced/vendor/drt-format/schema-fingerprint.js +74 -0
  261. package/resolve-advanced/vendor/drt-format/templates/drt-project-shell.xml +124 -0
  262. package/resolve-advanced/vendor/drx-codec/__tests__/curves-roundtrip.test.js +148 -0
  263. package/resolve-advanced/vendor/drx-codec/__tests__/fixtures/p2-1-face-refinement.drx +58 -0
  264. package/resolve-advanced/vendor/drx-codec/__tests__/fixtures/p2-1-filmgrain.drx +58 -0
  265. package/resolve-advanced/vendor/drx-codec/__tests__/fixtures/p2-1-glow.drx +58 -0
  266. package/resolve-advanced/vendor/drx-codec/__tests__/fixtures/p2-1-lens-flare.drx +58 -0
  267. package/resolve-advanced/vendor/drx-codec/__tests__/fixtures/p2-3-beauty-25.drx +58 -0
  268. package/resolve-advanced/vendor/drx-codec/__tests__/fixtures/p2-3-beauty-75.drx +58 -0
  269. package/resolve-advanced/vendor/drx-codec/__tests__/fixtures/p5-1-node-no-lut.drx +58 -0
  270. package/resolve-advanced/vendor/drx-codec/__tests__/fixtures/p5-1-node-with-lut.drx +58 -0
  271. package/resolve-advanced/vendor/drx-codec/__tests__/hsl-curves-roundtrip.test.js +117 -0
  272. package/resolve-advanced/vendor/drx-codec/__tests__/lut-refs-roundtrip.test.js +112 -0
  273. package/resolve-advanced/vendor/drx-codec/__tests__/matte-roundtrip.test.js +167 -0
  274. package/resolve-advanced/vendor/drx-codec/__tests__/ofx-roundtrip.test.js +215 -0
  275. package/resolve-advanced/vendor/drx-codec/__tests__/ofx-slugs-discovery.test.js +149 -0
  276. package/resolve-advanced/vendor/drx-codec/__tests__/power-window-roundtrip.test.js +230 -0
  277. package/resolve-advanced/vendor/drx-codec/__tests__/qualifier-roundtrip.test.js +226 -0
  278. package/resolve-advanced/vendor/drx-codec/cdl-exporter.js +470 -0
  279. package/resolve-advanced/vendor/drx-codec/color-nlp-parser.js +833 -0
  280. package/resolve-advanced/vendor/drx-codec/data/color-nlp-action-mappings.json +2232 -0
  281. package/resolve-advanced/vendor/drx-codec/drx-generator.js +4123 -0
  282. package/resolve-advanced/vendor/drx-codec/drx-merger.js +320 -0
  283. package/resolve-advanced/vendor/drx-codec/drx-parser.js +1808 -0
  284. package/resolve-advanced/vendor/drx-codec/extract-custom-curves.js +215 -0
  285. package/resolve-advanced/vendor/drx-codec/extract-hsl-curves.js +180 -0
  286. package/resolve-advanced/vendor/drx-codec/extract-lut-refs.js +158 -0
  287. package/resolve-advanced/vendor/drx-codec/extract-matte-finesse.js +83 -0
  288. package/resolve-advanced/vendor/drx-codec/extract-ofx-params.js +226 -0
  289. package/resolve-advanced/vendor/drx-codec/extract-power-window.js +184 -0
  290. package/resolve-advanced/vendor/drx-codec/extract-qualifier.js +99 -0
  291. package/resolve-advanced/vendor/drx-codec/index.js +109 -0
  292. package/resolve-advanced/vendor/drx-codec/node-layout.js +249 -0
  293. package/resolve-advanced/vendor/drx-codec/resolved-drx-generator.js +393 -0
  294. package/resolve-advanced/vendor/drx-codec/tool-resolver.js +974 -0
  295. package/resolve-advanced/vendor/drx-codec/training-examples.js +548 -0
  296. package/resolve-advanced/vendor/drx-codec/vocabulary-intents.js +539 -0
  297. package/resolve-advanced/vendor/drx-parameters/CALIBRATION-STATUS.md +319 -0
  298. package/resolve-advanced/vendor/drx-parameters/DRX-VALUE-SCALING.md +251 -0
  299. package/resolve-advanced/vendor/drx-parameters/calibrated-ranges.json +17737 -0
  300. package/resolve-advanced/vendor/drx-parameters/corrector-types.js +120 -0
  301. package/resolve-advanced/vendor/drx-parameters/index.js +193 -0
  302. package/resolve-advanced/vendor/drx-parameters/parameter-codec.js +451 -0
  303. package/resolve-advanced/vendor/drx-parameters/parameter-ids.js +1292 -0
  304. package/resolve-advanced/vendor/drx-parameters/parameter-ranges.js +570 -0
  305. package/resolve-advanced/vendor/drx-parameters/parameter-validator.js +392 -0
  306. package/resolve-advanced/vendor/drx-parameters/resolvefx-registry.json +14973 -0
  307. package/resolve-advanced/vendor/drx-parameters/tool-registry.descriptor.js +38 -0
  308. package/resolve-advanced/vendor/drx-parameters/tools/drx-analyzer.js +371 -0
  309. package/resolve-advanced/vendor/fairlight/index.js +833 -0
  310. package/resolve-advanced/vendor/fusion-codec/composition-generator.js +401 -0
  311. package/resolve-advanced/vendor/fusion-codec/templates/blur-region.js +103 -0
  312. package/resolve-advanced/vendor/fusion-codec/templates/color-correct.js +87 -0
  313. package/resolve-advanced/vendor/fusion-codec/templates/film-grain.js +106 -0
  314. package/resolve-advanced/vendor/fusion-codec/templates/lower-third.js +241 -0
  315. package/resolve-advanced/vendor/fusion-codec/templates/picture-in-picture.js +188 -0
  316. package/resolve-advanced/vendor/fusion-codec/templates/text-overlay.js +161 -0
  317. package/resolve-advanced/vendor/fusion-codec/templates/title-card.js +184 -0
  318. package/resolve-advanced/vendor/fusion-codec/templates/vignette.js +107 -0
  319. package/resolve-advanced/vendor/fusion-codec/templates/watermark.js +101 -0
  320. package/scripts/agent-rules/README.md +68 -0
  321. package/src/analysis_dashboard.py +233 -1
  322. package/src/granular/common.py +1 -1
  323. package/src/server.py +378 -25
  324. package/src/utils/api_truth.py +21 -0
  325. package/src/utils/cut_ir.py +1 -1
  326. package/src/utils/failure_tracker.py +0 -2
  327. package/src/utils/timeline_xml.py +405 -0
package/AGENTS.md CHANGED
@@ -112,3 +112,23 @@ for Resolve scripting; 3.13/3.14 are accepted and verified on Resolve Studio
112
112
  live-validation guidance in `docs/process/release-process.md`.
113
113
  - For docs changes, keep the README concise and move durable detail into
114
114
  dedicated files under `docs/`.
115
+
116
+ <!-- BEGIN GENERATED: domain-routing -->
117
+ <!-- GENERATED by scripts/agent-rules/generate.mjs — edit that, not this file. -->
118
+ ## Domain Routing
119
+
120
+ Per-domain routers pair the live tools with their offline (advanced-server)
121
+ counterparts. Every domain is available on demand in ANY MCP client as a slash
122
+ prompt (`/color_grade_workflow`, `/timeline_edit_workflow`, `/conform_workflow`,
123
+ `/delivery_workflow`, `/analyze_media`) and, in Claude Code, as a `.claude/skills/`
124
+ skill. Full per-action depth lives in `docs/kernels/`.
125
+
126
+ - **Color / Grade** (`/color_grade_workflow`, skill `resolve-color`) — grading, correcting, shot matching, developing looks, or applying/modifying LUTs, CDLs, DRX grades, or copied grades. Live: timeline_item_color. Offline: drx. Depth: docs/kernels/color-grade-kernel.md + docs/guides/color-decision-guide.md.
127
+ - **Timeline Edit** (`/timeline_edit_workflow`, skill `resolve-edit`) — cutting, trimming, pacing, duplicating/moving clips, copying ranges, building variants, tightening a cut, or generating an editorial changelist. Live: timeline. Offline: editorial. Depth: docs/kernels/timeline-edit-kernel.md + docs/guides/editorial-decision-guide.md.
128
+ - **Conform / Interchange** (`/conform_workflow`, skill `resolve-conform`) — importing/relinking editorial, checking a conform against a reference, repairing reversed/retimed subclips, tracing grades across a re-conform, or QCing a conformed timeline. Live: timeline. Offline: conform. Depth: docs/kernels/timeline-conform-interchange-kernel.md.
129
+ - **Delivery / Deliverable QC** (`/delivery_workflow`, skill `resolve-delivery`) — preparing render jobs, validating render settings, QCing a finished render vs spec, building render manifests, expanding texted/textless/stems deliverables, verifying media ingest, or producing a provenance/episode report. Live: render. Offline: deliverable. Depth: docs/kernels/render-deliver-kernel.md.
130
+ - **Fusion Composition** (`/fusion_workflow`, skill `resolve-fusion`) — building or editing Fusion comps — titles, motion graphics, VFX, merges, masks, trackers. Live: fusion_comp. Offline: fusion. Depth: docs/kernels/fusion-composition-kernel.md.
131
+ - **Audio / Fairlight** (`/audio_workflow`, skill `resolve-audio`) — setting audio properties, syncing audio, isolating voice, generating subtitles, planning Fairlight tracks/buses, checking loudness, routing buses, or splitting/trimming/converting audio. Live: timeline. Offline: audio_plan. Depth: docs/kernels/audio-fairlight-kernel.md.
132
+ - **Media Pool / Ingest** (`/media_pool_workflow`, skill `resolve-media-pool`) — importing media, building multicam timelines, organizing/relinking clips, normalizing metadata, or verifying/inventorying a card before ingest. Live: media_pool. Offline: media. Depth: docs/kernels/media-pool-ingest-kernel.md + docs/guides/multicam-setup-guide.md.
133
+ - **Media Analysis** (`/analyze_media`, skill `resolve-media-analysis`) — reading or analyzing source media (technical, visual, or transcription) to inform Resolve actions. Live: media_analysis. Offline: media. Depth: docs/kernels/README.md + docs/guides/media-analysis-guide.md.
134
+ <!-- END GENERATED: domain-routing -->
package/CHANGELOG.md CHANGED
@@ -2,6 +2,170 @@
2
2
 
3
3
  Release history for the DaVinci Resolve MCP Server. The latest release is summarized in the root README; older entries live here to keep the README focused.
4
4
 
5
+ ## What's New in v2.58.0
6
+
7
+ Major expansion of the optional **advanced** Node server (`davinci-resolve-advanced-mcp`,
8
+ bundled in the same package) — the beyond-the-API sibling that edits Resolve files
9
+ (`.drp`/`.drt`/`.drx`) offline. It grows from 14 to **18 tools** and adds a deterministic,
10
+ offline grading/QC/finishing catalog. All new capability is offline, deterministic, and
11
+ carries silent-lie guards (it refuses to fabricate a result). None of it touches the live
12
+ Python server or its tool counts.
13
+
14
+ ### Added
15
+
16
+ - **Grading catalog** (`drx` actions): `scope_read` (frame readouts — RGB parade, vectorscope
17
+ skin-line, black-balance, %clip/%crush + shot-intent signals), `intent_tags`, `verify_grade`
18
+ (intended vs applied → landed/drifted/missing/unverifiable), `extract_frames` (display-referred,
19
+ hard log-refuse), `match_to_reference`, `saturation_match`, `black_balance`, `tone_curve_transfer`
20
+ (luma CDF matching), `skin_match` v2 (luma-preserving skin-line metric), `author_look` / `carry_look`
21
+ (season-look authoring), and `lut_apply` — a reverse-engineered Body-LUT write path that attaches a
22
+ named `.cube` to a grade node with a round-trip assert.
23
+ - **`deliverable` tool** — deliverable QC/compliance: `deliverable_qc` (ffprobe vs spec, pass/fail per
24
+ field), `loudness_qc` (EBU R128), `reframe_blanking_check`, `render_manifest` (checksum/reconcile),
25
+ `conform_completeness`, `re_delivery_diff`, `expand_deliverable` (texted/textless/stems entities).
26
+ - **`media` tool** — media front-end / AE: `ingest_verify` (hash seal/verify/dupes), `media_inventory`,
27
+ `sync` (TC), `relink_manifest`, `rename_plan` / `reel_normalize` (refuses camera originals),
28
+ `turnover_package`, `project_hygiene`.
29
+ - **`editorial` tool** — editorial integrity: `parse_interchange` (EDL/OTIO/XMEML), `turnover_changelist`
30
+ with timing silent-lie guards, `conform_manifest`, `marker_roundtrip`.
31
+ - **`provenance` tool** — provenance/audit: `gallery_lineage`, `grade_provenance`, `cdl_export` (+diff),
32
+ `revision_tracking`, `episode_report`.
33
+ - **Node-labeling / provenance** on every auto-emitted grade node (`AUTO:<tool> v<n> → <source>`),
34
+ a **runner→apply contract** (stage → live-server action mapping), and runner **stage-resume**.
35
+ The pipeline records per-episode decoded facts, drift, and provenance (`readback`) — the
36
+ substrate the maintainers' managed application mines for cross-episode insights (see the
37
+ README's Bradford Post Assistant note).
38
+ - **DRX value-space calibration (Phase 1)** — one unified `space: 'ui' | 'drx'` flag on `drx`
39
+ `generate`/`merge`: `'ui'` (the default) takes Resolve panel numbers for every primary
40
+ (lift ×2, gamma ×4, gain 1:1, offset panel-delta ÷25, saturation 0–100 ÷50 — factors
41
+ calibrated by live panel readback against Resolve 19 Studio); `'drx'` takes raw internal
42
+ floats losslessly. 28 scalar/wheel/affine controls confirmed aligned. Factor reference in
43
+ `resolve-advanced/vendor/drx-parameters/DRX-VALUE-SCALING.md`; coverage ledger in
44
+ `CALIBRATION-STATUS.md` alongside it.
45
+ - **DRX structural write fidelity (Phase 2)** — the structural write paths (windows,
46
+ qualifiers, HDR zones, HSL curves, ColorSlice, Color Warper) were audited against live
47
+ Resolve and rebuilt where broken; items marked live-verified below were confirmed by
48
+ applying a generated `.drx` and reading the Resolve panel:
49
+ - **Power windows** — true live-calibrated transform scales (rotate −UI°/180, size
50
+ 1+(UI−50)×0.08, aspect (50−UI)/50, pan/tilt ×4096, softness ×16) replace placeholder
51
+ conventions the registry's old ranges clamped to garbage; linear softness masks and
52
+ gradient params now route to their real corrector blocks. Live-verified exact.
53
+ - **HDR zones** — multi-zone grades now write every zone into the single
54
+ `ZONE_ADJUSTMENTS` param (previously only the last zone survived the encode).
55
+ Live-verified with two zones exact.
56
+ - **Qualifiers** — HSL ranges live-verified exact; RGB and luma modes newly reachable via
57
+ `rgbQualifier` / `lumaQualifier` (mode flags corrected to their real varint wire form;
58
+ the Qualifier palette switches modes correctly). RGB live-verified exact.
59
+ - **ColorSlice** — new write path for the six global controls (identity scale, Hue stored
60
+ negated). Live-verified exact.
61
+ - **HSL curves** — sat/lum-axis curves write correctly with per-curve meta
62
+ (`hslCurveMeta`); hue-axis curves are a strict bezier control cage, and a canonical
63
+ emitter (`canonicalizeHueAxisPoints`) reproduces Resolve's own serialization —
64
+ live-verified single- AND multi-band at multiple positions and values. Known-bad
65
+ geometry (a bump edge landing exactly on a band slot) passes through raw instead
66
+ and now surfaces a `warnings` array on the `generate`/`merge` result ("renders
67
+ FLAT"). Because a malformed wrapped cage can crash Resolve 19 outright, caller-built
68
+ pre-wrapped point lists (x outside [0,1]) are **refused** unless
69
+ `allowWrappedHueCage:true` (the verbatim re-encode escape hatch). `generate` and
70
+ `merge` share the same `space:'ui'` default, and every bundled matcher emitter pins
71
+ `space` explicitly.
72
+ - **Polygon/curve window shapes** — new ct6 vertex-ring write path; geometry renders and
73
+ masks exactly as one window row.
74
+ - **Color Warper** — new pin-list write path matching the Resolve 21 wire format;
75
+ round-trips exactly but Resolve 19 ignores it (version-gated — pending an R21 verify).
76
+
77
+ ### Fixed
78
+
79
+ - `drx` `parse` now reads back custom curves / HSL curves / qualifiers / power windows through the tool
80
+ (the augmentation passed the node params object instead of the flat corrector parameters).
81
+ - **Two long-standing DRX "known bugs" resolved as not encoder bugs** (live panel readback):
82
+ `hueRotate` stores `(UI−50)/50` (input 60 → panel Hue 60.00), and `contrastHighRange` is
83
+ stored `1−UI` **by Resolve itself** (input 0.70 → panel ↑Rng 0.700; low range is 1:1).
84
+ Both now round-trip in `space:'drx'` via normalizer compensation; the old bug-locking test
85
+ was replaced with correct assertions.
86
+ - Vestigial `satVsSat` registry ranges removed — they silently clamped real gradient-window
87
+ writes (the 0x08F000xx ids belong to the gradient window; the real Sat-vs-Sat curve is an
88
+ HSL spline).
89
+ - **Blur / Key / Motion Effects palettes decoded AND writable** (the last unswept native
90
+ palettes): the registry's legacy "Curves corrector (Type 18)" grouping was measured
91
+ wrong — those ids are the Key palette (ct9, identity scales) and the Motion Effects
92
+ palette (a newly identified corrector type 15). Blur-palette radius/H-V ratio store as
93
+ (UI−0.5)×2 (two-point fit). New `gradeParams.blur` / `key` / `motionEffects` write
94
+ paths, panel-readback-verified (Frames varint = frames×2 confirmed); all named in the
95
+ registry and locked by a new fixture + calibration/write tests; the sweep grade decodes
96
+ with zero unknown_ params.
97
+ - **3D-qualifier selection volume blob decoded** (the last offline-reachable opaque blob):
98
+ a packed header + float32 sample point cloud — the keyer's chroma-plane stroke path,
99
+ now lifted as `qualifier3d` with a per-sample decode locked by test.
100
+ - **Programmatic "Cleanup Node Graph"** — Resolve's node-layout tidy is UI-only (no
101
+ scripting API); a before/after Project.db diff proved it rewrites only the per-node
102
+ x/y position varints in the graded version Body, and direct injection of rewritten
103
+ positions was live-verified to render with the grade intact. Two productized paths:
104
+ - `drx` `relayout` — rewrites node positions in a `.drx` to Resolve's own clean-row
105
+ layout (or explicit `positions`), byte-preserving everything else (labels, keyframes,
106
+ OFX). Live single-clip recipe (verified on a production clip): grab still → `relayout`
107
+ → `reset_all_grades` → `ApplyGradeFromDRX`. The reset is required — a same-structure
108
+ apply silently keeps the existing node layout (new `api_truth` entry).
109
+ - `project_db` `relayout_node_graphs` — whole-project sweep over every graded version
110
+ row (closed project, dry-run, auto-backup, per-row read-back verify, undecodable rows
111
+ skipped and reported, already-clean rows left untouched). Resolve caches open projects
112
+ in memory, so the patch is only visible after a full quit + relaunch — the result
113
+ says so explicitly.
114
+
115
+ ### Documentation
116
+
117
+ - Advanced-server section + tool table updated to 18 tools; `resolve-advanced/README.md` catalog expanded.
118
+ - **Control panel learns about the advanced server** (read-only): Setup → **Advanced**
119
+ (live capability card — pure-JS core + ffmpeg/sharp/better-sqlite3 status with install
120
+ hints), Setup → **Conform QC** (lineage-sidecar browser: snapshots, diff-vs-previous,
121
+ per-cut frame-QC verdicts with tallies), and Docs → **Advanced Server** (the full
122
+ 18-tool catalog rendered in-panel). Backed by a deliberate read-only Node bridge
123
+ (`resolve-advanced/scripts/panel-bridge.mjs` — capabilities + lineage
124
+ list/show/diff/verdicts only; ingest/QC/patches stay with the MCP tools) and two new
125
+ panel endpoints (`/api/advanced/capabilities`, `/api/advanced/lineage`). Degrades
126
+ gracefully when Node.js is absent.
127
+ - `docs/SKILL.md` gains an advanced-server operating section (value-space rules, hue-axis
128
+ guard/warnings, relayout recipes, closed-project DB-patch + quit/relaunch discipline) plus
129
+ DRX-apply gotchas and a session-start MCP-update note (surface `update_decision` once;
130
+ applying updates stays with `install.py` / the control panel).
131
+ - New DRX calibration docs: `CALIBRATION-STATUS.md` (per-control coverage ledger — what is
132
+ confirmed, how it was verified, and what remains experimental) and a corrected
133
+ `DRX-VALUE-SCALING.md` (offset ÷25, saturation ÷50, contrast 1:1, affine hue/contrast-range
134
+ mappings).
135
+
136
+ ### Validation
137
+
138
+ - Full offline Node suite green (671 tests / 650 pass, legacy live harnesses skip cleanly) +
139
+ doc-count drift guard. DRX write paths live-verified against DaVinci Resolve 19.1.3 Studio
140
+ by panel readback (windows, qualifiers, HDR zones, ColorSlice, HSL curves); Color Warper
141
+ write is R21-format and pends an R21 verify. Resolve-behavior validation for the offline
142
+ QC/finishing tools remains gated on real footage (they compute/plan; apply stays in the
143
+ live server) — no live Python-server behavior changed in this release.
144
+
145
+ ### Cross-platform agent guidance
146
+
147
+ Also in this release: per-domain agent routing between the live Python server and the
148
+ offline advanced server, available in every IDE — not just Claude Code. No tool counts
149
+ change (compound 34 / granular 341 / advanced 18).
150
+
151
+ - **7 per-domain MCP prompts** (`color_grade_workflow`, `timeline_edit_workflow`,
152
+ `conform_workflow`, `delivery_workflow`, `fusion_workflow`, `audio_workflow`,
153
+ `media_pool_workflow`) — slash commands in *every* MCP client, each routing a task
154
+ across its live tools and its offline advanced-server counterpart (compute offline,
155
+ apply live).
156
+ - **9 Claude Code skills** (`.claude/skills/`): a `resolve-mcp` index plus eight domain
157
+ routers (color, edit, conform, delivery, fusion, audio, media-pool, media-analysis).
158
+ Thin bridges to the kernels; all 18 advanced tools are routed.
159
+ - **Generated cross-platform rule files** from a single manifest
160
+ (`scripts/agent-rules/generate.mjs`): `.cursor/rules/*`, `.github/instructions/*` +
161
+ `.github/copilot-instructions.md`, `.windsurf/rules/*`, `.clinerules`, `.roo/rules/*`,
162
+ `.continue/rules/*`, and an `AGENTS.md` domain-routing block. Tool/action counts are
163
+ parsed from their canonical docs so they cannot drift; a stale generated file fails
164
+ `tests/test_agent_rules_drift.py`.
165
+ - Every kernel with an offline counterpart gained an "Advanced (offline) server" section.
166
+ Fixed stale tool counts / doc paths that had drifted in `.github/copilot-instructions.md`,
167
+ `.clinerules`, `.cursorrules`, and `.windsurfrules`.
168
+
5
169
  ## What's New in v2.57.5
6
170
 
7
171
  Fixes a silent data-loss bug on Reel Name writes (issue #77) and bundles the
@@ -1715,8 +1879,8 @@ coverage, the destructive hook, update hardening, and update history.
1715
1879
  **Validation** — `tests/test_import.py`, `scripts/audit_api_parity.py`,
1716
1880
  `node bin/davinci-resolve-mcp.mjs --version`, `npm pack --dry-run`, and
1717
1881
  `git diff --check` all pass. 375 focused unit tests pass. Live Resolve
1718
- validation covered the D1–F2 surface end-to-end against project CKY /
1719
- Timeline 7 (D1 `retryable`, D2 XML descriptions, D3 partial-success on
1882
+ validation covered the D1–F2 surface end-to-end against a live production
1883
+ project / Timeline 7 (D1 `retryable`, D2 XML descriptions, D3 partial-success on
1720
1884
  plans + CAPS_REFUSAL manifests, E1 8 MCP resource URIs, E2 escalation on
1721
1885
  3× repeated failure, E3 `prefer_handle` job handoff with
1722
1886
  `batch_job_status` polling, F1 provenance block) — 6/6 PASS on the
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2025-2026 DaVinci Resolve MCP Contributors
3
+ Copyright (c) 2025-2026 DaVinci Resolve MCP Contributors and Bradford Operations LLC
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # DaVinci Resolve MCP Server
2
2
 
3
- [![Version](https://img.shields.io/badge/version-2.57.5-blue.svg)](https://github.com/samuelgursky/davinci-resolve-mcp/releases)
3
+ [![Version](https://img.shields.io/badge/version-2.58.0-blue.svg)](https://github.com/samuelgursky/davinci-resolve-mcp/releases)
4
4
  [![npm](https://img.shields.io/npm/v/davinci-resolve-mcp.svg?label=npm&color=CB3837)](https://www.npmjs.com/package/davinci-resolve-mcp)
5
5
  [![API Coverage](https://img.shields.io/badge/API%20Coverage-100%25-brightgreen.svg)](docs/reference/api-coverage.md)
6
6
  [![Tools](https://img.shields.io/badge/MCP%20Tools-34%20(341%20full)-blue.svg)](#server-modes)
@@ -54,6 +54,78 @@ The command starts a localhost server and opens the control panel in your browse
54
54
 
55
55
  The compound server is recommended unless you specifically need the granular one-tool-per-method surface.
56
56
 
57
+ ### Advanced server — beyond the scripting API (optional, Node)
58
+
59
+ The same package ships a second, optional MCP server: **`davinci-resolve-advanced-mcp`** (bin
60
+ `bin/davinci-resolve-advanced-mcp.mjs`). Where the Python server drives a *live* Resolve over the
61
+ sanctioned scripting API, the advanced server does what the API **can't** — it reads and edits Resolve
62
+ **files** (`.drp` / `.drt` / `.drx`) and applies DB/XML-level changes **with no Resolve running**, so it
63
+ runs cloud *or* local. 18 tools: `drp`, `drt`, `drx` (per-clip grade codec **plus a deterministic,
64
+ offline grading/QC catalog** — within-camera + cross-camera skin (v2 skin-line metric) + b-roll +
65
+ neutral-patch WB matching, match-to-reference, saturation/black-balance, contrast-normalize, ASC CDL
66
+ import, lossless grade-transfer + season-look authoring, named-LUT attach, scope reads + intent tags,
67
+ verify-grade, display-referred frame extraction, broadcast-legal QC), `offline_ref`,
68
+ `conform` (frame-oracle conform/relink QC + lineage), `color_trace` (carry grades across a re-conform),
69
+ `fusion`, `audio_plan`, `fairlight` (bus routing), `audio`, `project_read`, `project_db`, `pipeline`
70
+ (a **DB-as-truth pipeline**: compile YAML project specs into a canonical SQLite DB, then run stages with
71
+ gates, provenance, and intent↔actual drift detection), `capabilities`, `deliverable` (deliverable QC /
72
+ compliance), `media` (media front-end / AE ingest), `editorial` (editorial integrity / changelist),
73
+ `provenance` (provenance / audit / episode report). It can also be consumed **as a
74
+ library** (importable engine API), not just spawned as a server.
75
+
76
+ DRX grade writes are **live-calibrated against Resolve Studio**: grade params take Resolve's
77
+ on-screen panel units by default (`space: 'ui' | 'drx'`), and the structural writes (power windows,
78
+ qualifiers, HDR zones, HSL curves, ColorSlice, blur/key/motion-effects) are panel-readback-verified —
79
+ per-control status in `resolve-advanced/vendor/drx-parameters/CALIBRATION-STATUS.md`. It also closes
80
+ a UI-only gap: **programmatic "Cleanup Node Graph"** (`drx` `relayout` for one clip, `project_db`
81
+ `relayout_node_graphs` for a whole project) — node layout tidied, grade content byte-preserved.
82
+
83
+ Add it alongside the live server (both ship in one `npm install`):
84
+
85
+ ```json
86
+ {
87
+ "mcpServers": {
88
+ "davinci-resolve": { "command": "<python>", "args": ["<path>/src/server.py"] },
89
+ "davinci-resolve-advanced": { "command": "node", "args": ["<path>/bin/davinci-resolve-advanced-mcp.mjs"] }
90
+ }
91
+ }
92
+ ```
93
+
94
+ `install.py` prints both entries. The core is pure-JS/MIT with no required native modules; a few features
95
+ need user-installed tools (ffmpeg for `audio`, `sharp`/`better-sqlite3` for some paths) — call the
96
+ `capabilities` tool for live status and install hints.
97
+
98
+ ### Bradford Post Assistant — managed application (closed beta)
99
+
100
+ The maintainers also build **Bradford Post Assistant**, a desktop application on top of this
101
+ open foundation. Where the MCP servers give an agent hands, Post Assistant is the working
102
+ copilot around them — an on-device AI assistant for post-production where client material
103
+ never leaves the workstation:
104
+
105
+ - **A post-production copilot** — a desktop app that sits alongside DaVinci Resolve and
106
+ watches the session live (timeline, grades, and frames — not just API calls), with an
107
+ embedded AI assistant and agent runtime, local media analysis (transcription, frame
108
+ analysis, editorial intelligence), and in-app conform QC.
109
+ - **Memory** — persistent, encrypted on-device assistant memory plus cross-episode learning
110
+ mined from your pipeline's decoded facts (season-look drift, per-camera correction priors,
111
+ hero-frame libraries, conform path-map reuse), with accumulation managed for you and a
112
+ reviewed-insight workflow.
113
+ - **Self-contained by design** — Post Assistant wires everything itself: this MCP for
114
+ Resolve control, the Bradford API for its extended services, and your choice of LLM
115
+ provider. Nothing to configure by hand, no separate clients to manage, and the app keeps
116
+ itself (and its bundled MCP) current with signed auto-updates.
117
+ - **An extended professional toolset** — grade surgery on live projects, 22+ adaptive grade
118
+ families, a curated looks library, delivery-spec validation, editorial pacing/cleanup
119
+ analysis, natural-language color direction, and Fusion composition authoring — delivered
120
+ through the managed Bradford API.
121
+ - **Production workflows** — the raw tools composed into finished, real-world flows
122
+ (turnover → conform → QC → delivery, season-look carry, episode reporting) with the
123
+ guardrails and approvals a client-facing shop expects.
124
+
125
+ It is currently in **closed beta** — you can request access at
126
+ [bradfordoperations.com/software/post-assistant](https://www.bradfordoperations.com/software/post-assistant).
127
+ The open-source servers are complete and fully functional on their own.
128
+
57
129
  ## What You Can Do
58
130
 
59
131
  ```text
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * davinci-resolve-advanced-mcp — entry point.
4
+ *
5
+ * The Node, beyond-the-API sibling bin to davinci-resolve-mcp. Authors/edits
6
+ * DaVinci Resolve files (.drp/.drt/.drx) offline — no Resolve, cloud or local.
7
+ *
8
+ * Boots the stdio MCP server in resolve-advanced/server. (During dev the
9
+ * vendored libs + deps live under resolve-advanced/; Phase 4 promotes deps to
10
+ * the repo root for the published package.)
11
+ */
12
+
13
+ import { fileURLToPath } from 'node:url';
14
+ import path from 'node:path';
15
+
16
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
17
+ const serverEntry = path.resolve(__dirname, '..', 'resolve-advanced', 'server', 'index.mjs');
18
+
19
+ const { startServer } = await import(serverEntry);
20
+ await startServer();
package/docs/README.md CHANGED
@@ -41,6 +41,25 @@ ignored scratch folders such as `docs/_scratch/`.
41
41
  - [Project Lifecycle](kernels/project-lifecycle-kernel.md)
42
42
  - [Extension Authoring](kernels/extension-authoring-kernel.md)
43
43
 
44
+ ## Claude Code Skills
45
+
46
+ Per-domain skills in `.claude/skills/` route craft ↔ live tools ↔ offline
47
+ advanced tools automatically when an agent works in that domain. They are thin
48
+ bridges — the authoritative depth stays in the kernels and guides above.
49
+
50
+ - `resolve-mcp` (`.claude/skills/resolve.md`) — orientation/index: the map to the domain skills below (self-trigger; not an auto-loader)
51
+ - `resolve-color` (`.claude/skills/color-grade.md`) — grading, looks, shot match, LUT/CDL/DRX
52
+ - `resolve-edit` (`.claude/skills/timeline-edit.md`) — cutting, ranges, variants, changelist
53
+ - `resolve-conform` (`.claude/skills/conform.md`) — conform, relink, finishing QC, grade tracing
54
+ - `resolve-delivery` (`.claude/skills/delivery.md`) — render, deliverable QC, media/provenance
55
+ - `resolve-fusion` (`.claude/skills/fusion.md`) — Fusion comps (titles, motion graphics, VFX)
56
+ - `resolve-audio` (`.claude/skills/audio.md`) — audio/Fairlight tracks, buses, loudness, sync
57
+ - `resolve-media-pool` (`.claude/skills/media-pool.md`) — media pool ingest, organize, multicam
58
+ - `resolve-media-analysis` (`.claude/skills/media-analysis.md`) — source-safe media intelligence
59
+
60
+ The offline half of every one is the advanced server; see
61
+ [Advanced Server](../resolve-advanced/README.md).
62
+
44
63
  ## Authoring References
45
64
 
46
65
  - [Fuse + DCTL Authoring](authoring/fuse-dctl-authoring.md)
package/docs/SKILL.md CHANGED
@@ -17,6 +17,16 @@ DaVinci Resolve must be running with **Preferences > General > "External scripti
17
17
  using"** set to **Local**. The server auto-launches Resolve if it is not running,
18
18
  but that first connection can take up to 60 seconds.
19
19
 
20
+ **Session-start update note.** The first `resolve_control(action="get_version")`
21
+ of a session returns an `mcp` block with the cached update check
22
+ (`mcp.update` + `mcp.update_decision`). If `update_decision.action` is
23
+ `"notify"` or `"prompt"`, tell the user ONCE that a newer MCP release is
24
+ available (version + one-line pointer). Do not repeat it, do not auto-apply,
25
+ and do not treat it as an error — updates are applied by the user via
26
+ `python install.py` or the control panel's Settings page. If the user asks to
27
+ check on demand, use `resolve_control(action="mcp_update_status",
28
+ params={"force_check": true})`.
29
+
20
30
  Workflow Integration plugins/scripts are a separate Resolve-hosted UI mechanism.
21
31
  They are not required for this MCP server, but `docs/integrations/workflow-integrations.md`
22
32
  summarizes when they are useful for optional in-Resolve panels, UIManager
@@ -103,12 +113,55 @@ before mutating Resolve state.
103
113
 
104
114
  | Mode | Entry point | Tool count | Use when |
105
115
  |---|---|---|---|
106
- | Compound (default) | `src/server.py` | 32 tools | Most workflows — keeps context lean |
116
+ | Compound (default) | `src/server.py` | 34 tools | Most workflows — keeps context lean |
107
117
  | Granular (full) | `src/server.py --full` | 341 tools | Power users needing one tool per API method |
108
118
 
109
119
  This skill document covers the **compound server** (the default). Each compound
110
120
  tool accepts an `action` string and an optional `params` object.
111
121
 
122
+ ### The advanced server (`davinci-resolve-advanced-mcp`)
123
+
124
+ The same package ships an optional third surface: an offline Node server (18
125
+ tools, typically registered as `davinci-resolve-advanced`) that edits Resolve
126
+ **files** (`.drp`/`.drt`/`.drx`) and patches the project DB — no running Resolve
127
+ required. Rule of thumb: drive a *live session* with the Python server; compute
128
+ grades, QC, conform math, and file-level edits with the advanced server, then
129
+ apply results through the live server. Full catalog: `resolve-advanced/README.md`.
130
+
131
+ Operating rules an agent must know:
132
+
133
+ - **Grade value space.** `drx` `generate`/`merge` default to `space:'ui'` —
134
+ params are Resolve PANEL units (lift/gamma/gain/offset panel numbers,
135
+ saturation 0–100 neutral 50). Pass `space:'drx'` only for raw internal floats
136
+ (e.g. re-encoding decoded values). Decoded values are ground truth only for
137
+ the calibrated native set — check the `valueFidelity` marker on `parse`
138
+ results; per-control status is `resolve-advanced/vendor/drx-parameters/CALIBRATION-STATUS.md`.
139
+ - **Hue-axis curves.** Naive `[0,1]` point lists are canonicalized into the
140
+ verified bezier cage automatically. Pre-wrapped lists (x outside `[0,1]`) are
141
+ REFUSED unless `allowWrappedHueCage:true` (malformed cages can crash Resolve
142
+ 19). If a `generate`/`merge` result carries a `warnings` array, the curve was
143
+ passed through raw and will render FLAT — tell the user, don't ship it silently.
144
+ - **Node-graph relayout** (programmatic "Cleanup Node Graph"; the UI command
145
+ has no API). Single clip, live: `gallery_stills.grab_and_export` → advanced
146
+ `drx(action="relayout")` → `graph.reset_all_grades` → `safe_apply_drx` with
147
+ EXPLICIT item indices (the reset is required — a same-structure apply keeps
148
+ the old layout). Whole project, offline: `project_db(action="relayout_node_graphs")`.
149
+ - **project_db patches** require the project CLOSED in Resolve plus
150
+ `iConfirmProjectClosed:true`; every write auto-backs-up and read-back
151
+ verifies. Resolve caches open projects in memory: after patching, fully QUIT
152
+ and relaunch Resolve or the patch will not be visible.
153
+ - **Guards are load-bearing.** Advanced tools refuse rather than fabricate
154
+ (silent-lie guards): a thrown "refused" error usually means wrong input space,
155
+ log-encoded frames, or missing media — read the message before retrying.
156
+ Optional native deps (`better-sqlite3`, `sharp`, ffmpeg) gate some actions;
157
+ call the advanced `capabilities` tool for live status and install hints.
158
+
159
+ Per-domain depth for both servers lives in the kernels (`docs/kernels/`), each of
160
+ which carries an "Advanced (offline) server" section where an offline counterpart
161
+ exists. Claude Code skills in `.claude/skills/` (`resolve-color`, `resolve-edit`,
162
+ `resolve-conform`, `resolve-delivery`, `resolve-media-analysis`) route
163
+ craft ↔ live ↔ offline automatically when working in that domain.
164
+
112
165
  The compound server also registers MCP prompts. Use `davinci_resolve_workflow`
113
166
  as the compact operating brief, and use `analyze_media` as a slash-command style
114
167
  entry point for source-safe project, selected-clip, bin, file, or sequence
@@ -1157,6 +1210,14 @@ Key actions: `get_num_nodes(source?)`, `set_lut(node_index, lut_path, source?)`,
1157
1210
  `1`=source timecode aligned, `2`=start frames aligned,
1158
1211
  `reset_all_grades(source?)`
1159
1212
 
1213
+ DRX-apply gotchas (also apply to `timeline_item_color.safe_apply_drx`): ALWAYS pass
1214
+ `track_type`/`track_index`/`item_index` explicitly — the default target is video track 1
1215
+ item 0, NOT the current clip — and grab a still/`.drx` backup first (`safe_apply_drx` does
1216
+ not snapshot). When the applied `.drx` has the same node structure/ids as the target's
1217
+ current graph, Resolve keeps the existing node-editor layout (positions in the `.drx` are
1218
+ silently ignored); to re-layout a graph programmatically, reset the grade first, then
1219
+ apply (see the advanced server's `drx` `relayout` and `api_truth`).
1220
+
1160
1221
  **`color_group`** — Manage color groups.
1161
1222
 
1162
1223
  Key actions: `list`, `get_name(group_name)`, `set_name(group_name, new_name)`,
@@ -63,7 +63,7 @@ This MCP server controls DaVinci Resolve via its Scripting API. Some tools perfo
63
63
  davinci-resolve-mcp/
64
64
  ├── install.py # Universal installer (macOS/Windows/Linux)
65
65
  ├── src/
66
- │ ├── server.py # Compound MCP server — 32 tools (default)
66
+ │ ├── server.py # Compound MCP server — 34 tools (default)
67
67
  │ ├── resolve_mcp_server.py # Thin full-server entrypoint — 341 tools
68
68
  │ ├── granular/ # Modular full-server implementation
69
69
  │ └── utils/ # Platform detection, Resolve connection helpers
@@ -184,6 +184,15 @@ created, and render time against the active tier, and the AI-ops ledger
184
184
  sizes for the active project.
185
185
  - **Tools** — runtime helpers (ffprobe, ffmpeg, Whisper backends, OpenCV)
186
186
  with ready/missing status and copyable install commands.
187
+ - **Advanced** — live capability status for the optional offline Node server
188
+ (`davinci-resolve-advanced-mcp`): the pure-JS core plus each user-installed
189
+ helper (ffmpeg, sharp, better-sqlite3) with what it enables and how to
190
+ install it. The full tool catalog is available under Docs → Advanced Server.
191
+ - **Conform QC** — read-only browser for a conform lineage sidecar: point at
192
+ the `.db` the advanced server's `conform` tool writes to inspect snapshots,
193
+ diff a snapshot against its predecessor, and review per-cut frame-QC
194
+ verdicts (MATCH / OFFSET / WRONG / REF_OFFLINE / UNREADABLE) with tallies.
195
+ Ingest and QC runs stay with the MCP tools; the panel never writes.
187
196
  - **Media Pool History** — the provenance log for destructive media-pool
188
197
  operations (deletes, replaces, relinks), kept separate from timeline brain
189
198
  edits.
@@ -21,6 +21,27 @@ Current kernel coverage: **136 actions** across **9 compound MCP tools**.
21
21
  | Project lifecycle | `project_manager` | `project_capabilities`, `probe_project_lifecycle`, `probe_project_settings`, `safe_project_create`, `safe_project_export`, `safe_project_import`, `safe_project_archive`, `safe_project_restore`, `safe_project_delete`, `safe_set_project_settings`, `project_settings_snapshot`, `database_capabilities`, `safe_set_current_database`, `preset_lifecycle_probe`, `project_boundary_report` |
22
22
  | Extension authoring | `script_plugin` | `extension_capabilities`, `probe_fuse_lifecycle`, `probe_dctl_lifecycle`, `probe_script_lifecycle`, `safe_install_extension`, `safe_remove_extension`, `refresh_or_restart_required`, `extension_boundary_report` |
23
23
 
24
+ ## Advanced (offline) server
25
+
26
+ The kernels above wrap the **live** Python server (`davinci-resolve`), which
27
+ drives a running Resolve. A companion **advanced** server
28
+ (`davinci-resolve-advanced`, 18 tools — see `resolve-advanced/README.md`) does
29
+ the beyond-API, **no-Resolve-running** half: it authors/edits `.drp`/`.drt`/`.drx`
30
+ files, patches the project DB, and computes grades, conform QC, and deliverable
31
+ QC offline. The rule of thumb is *compute offline, apply live*. Kernels that have
32
+ an offline counterpart carry an "Advanced (offline) server" section linking the
33
+ two:
34
+
35
+ - Color / Grade → `drx` grading/QC catalog + relayout
36
+ - Timeline Conform / Interchange → `conform`, `color_trace`, `offline_ref`, `editorial`
37
+ - Render / Deliver → `deliverable`, `media`, `provenance`
38
+ - Timeline Edit → `editorial` (interchange + changelist), `drt`
39
+
40
+ Per-domain Claude Code skills route craft ↔ live ↔ offline automatically and live
41
+ in `.claude/skills/`: `resolve-color`, `resolve-edit`, `resolve-conform`,
42
+ `resolve-delivery` (plus `resolve-media-analysis`). `docs/SKILL.md` is the
43
+ top-level brief for both servers.
44
+
24
45
  Helper-tool details that need more than an action list live in guides. See
25
46
  [Multicam Setup Helper Guide](../guides/multicam-setup-guide.md) for the
26
47
  `media_pool.setup_multicam_timeline` helper/API boundary and Resolve UI
@@ -68,6 +68,28 @@ All kernel actions are exposed through `timeline`.
68
68
  - The public API does not expose full Fairlight mix automation curves or plugin
69
69
  parameter graphs.
70
70
 
71
+ ## Advanced (offline) server — Fairlight planning + bus routing
72
+
73
+ The actions above drive audio on a *running* Resolve. The companion advanced
74
+ server (`davinci-resolve-advanced`, see `resolve-advanced/README.md`) plans and
75
+ patches audio **offline, no Resolve running**:
76
+
77
+ - **`audio_plan`** (pure Node) — `list_templates`, `select_template`,
78
+ `track_plan`, `analyze_coverage`, `check_loudness` (against R128/ATSC/streaming
79
+ targets). Plan the Fairlight track/bus layout before building it live.
80
+ - **`fairlight`** — Fairlight **bus routing**, which has *no scripting API*: it
81
+ patches the `FLStudioModelBA` blob directly. `read_buses_from_blob` (offline
82
+ codec); `read_buses_from_db`, `expand_buses`, `export_template` /
83
+ `import_template`, `backup`, `restore` (DB path — needs optional
84
+ `better-sqlite3`; project CLOSED + quit/relaunch, like other DB patches).
85
+ - **`audio`** — offline ffmpeg ops: `split` (silence/TC/intervals), `trim`,
86
+ `convert` (needs ffmpeg on PATH — GPL, not bundled). Align/loudness-measure are
87
+ not yet vendored.
88
+
89
+ Rule of thumb: plan/measure offline, apply mix/track changes live; use
90
+ `fairlight` for bus work the scripting API can't reach. See the `resolve-audio`
91
+ skill (`.claude/skills/audio.md`) and the `/audio_workflow` prompt.
92
+
71
93
  ## Live Probe
72
94
 
73
95
  Run the live boundary probe with:
@@ -86,6 +86,57 @@ All actions are exposed through `timeline_item_color`.
86
86
  as callable methods but are not forced in the boundary report because they can
87
87
  be asynchronous, page dependent, and expensive.
88
88
 
89
+ ## Advanced (offline) server — the grading / QC catalog
90
+
91
+ The live actions above drive a *running* Resolve. The companion advanced server
92
+ (`davinci-resolve-advanced`, see `resolve-advanced/README.md`) *computes* grades
93
+ offline from extracted frames and reads/writes `.drx`/`.drp` grades with **no
94
+ Resolve running**. It emits an apply-ready `.drx`; **applying it is this kernel's
95
+ job** (`safe_apply_drx`). Node never drives Resolve.
96
+
97
+ `drx` grading/QC actions (frame-stats → arithmetic → `.drx`, all local,
98
+ deterministic, guarded — they refuse to fabricate a match rather than emit a
99
+ silent no-op):
100
+
101
+ | Action | Use when |
102
+ | --- | --- |
103
+ | `match_to_reference` | Match a clip toward an approved still (affine mean/std, skin-line gated, luma-preserving). |
104
+ | `level_clips` | Level within-camera exposure/WB drift to a group hero. |
105
+ | `skin_match` | Cross-camera skin-tone cohesion (skin-gated; throws on log/wrong-space frames). |
106
+ | `shot_match` | B-roll cohesion (gray-world neutralize or hero match). |
107
+ | `white_balance_match` | WB from a known-neutral patch / gray card. |
108
+ | `contrast_normalize` | Match black/white points to a hero (affine gain+offset). |
109
+ | `saturation_match` / `black_balance` | Saturation cohesion / neutralize a shadow cast. |
110
+ | `cdl_io` | Import ASC CDL (`.cc`/`.ccc`/`.cdl`) → `.drx`. |
111
+ | `grade_transfer` | Lossless Body copy — a `.drp` group / `.drx` look → apply-ready `.drx`. |
112
+ | `lut_apply` | Attach a named `.cube` LUT to a node (round-trip asserted). |
113
+ | `author_look` / `carry_look` | Version and carry an approved season/host look. |
114
+ | `scope_read` / `intent_tags` / `gamut_legal` | Read frames: parade/vectorscope/clip%, shot-intent tags, broadcast-legal QC. |
115
+ | `verify_grade` | Intended vs applied `.drx` → landed/drifted/missing/unverifiable. |
116
+
117
+ Cross-server rules an agent must know:
118
+
119
+ - **Value space.** `drx` `generate`/`merge` default to `space:'ui'` (Resolve
120
+ panel units; saturation 0–100, neutral 50). Pass `space:'drx'` only for raw
121
+ internal floats. Fidelity is ground-truth only for the calibrated set — check
122
+ the `valueFidelity` marker
123
+ (`resolve-advanced/vendor/drx-parameters/CALIBRATION-STATUS.md`).
124
+ - **Hue-axis curves.** Naive `[0,1]` point lists auto-canonicalize into the
125
+ verified bezier cage; a `warnings` array in the result means the curve went
126
+ through raw and will render **FLAT** — surface it, don't ship silently.
127
+ - **Apply targeting.** `safe_apply_drx` defaults to video track 1 / item 0 —
128
+ always pass `track_type`/`track_index`/`item_index` explicitly, and grab a
129
+ still/`.drx` backup first (`safe_apply_drx` does not snapshot).
130
+ - **Relayout ("Cleanup Node Graph," no UI API).** Single clip, live: grab still →
131
+ `drx(action="relayout")` → `graph.reset_all_grades` → `safe_apply_drx` with
132
+ explicit indices (a same-structure apply keeps the OLD layout — the reset is
133
+ required). Whole project, offline: `project_db(action="relayout_node_graphs")`.
134
+ - **Deps.** The grading catalog needs `sharp`; call the advanced `capabilities`
135
+ tool for live status and install hints.
136
+
137
+ See the `resolve-color` skill (`.claude/skills/color-grade.md`) for the
138
+ craft ↔ live ↔ offline routing and the frame-first rule.
139
+
89
140
  ## Live Probe
90
141
 
91
142
  Run the live boundary probe with:
@@ -104,6 +104,23 @@ in success and in error responses.
104
104
  effect parameter. Higher-level wrappers should probe before assuming a
105
105
  control exists.
106
106
 
107
+ ## Advanced (offline) server — declarative `.comp` authoring
108
+
109
+ The actions above build a Fusion comp on a timeline item in a *running* Resolve.
110
+ The companion advanced server (`davinci-resolve-advanced`, see
111
+ `resolve-advanced/README.md`) authors Fusion compositions **offline, no Resolve
112
+ running**, via the `fusion` tool:
113
+
114
+ - `generate` / `generate_from_template` — write a `.comp` from a declarative spec
115
+ or a named template (`list_templates`).
116
+ - `to_api_calls` — compile a spec into the ordered tool-creation / input /
117
+ connection calls the live server then replays.
118
+
119
+ Rule of thumb: author and verify the comp offline, then apply it live with
120
+ `fusion_comp` `safe_add_tool` → `safe_set_inputs` → `safe_connect_tools` (the
121
+ `to_api_calls` output maps directly onto those). See the `resolve-fusion` skill
122
+ (`.claude/skills/fusion.md`) and the `/fusion_workflow` prompt.
123
+
107
124
  ## Live Probe
108
125
 
109
126
  Run the live boundary probe with:
@@ -120,6 +120,26 @@ params={"confirm": true, ...})`.
120
120
  the installed DaVinci Resolve 20 Manual, Edit > Chapter 42, "Multicam
121
121
  Editing," for the current UI workflow.
122
122
 
123
+ ## Advanced (offline) server — media front-end / ingest verification
124
+
125
+ The actions above import and organize media in a *running* Resolve. The companion
126
+ advanced server (`davinci-resolve-advanced`, see `resolve-advanced/README.md`)
127
+ handles the front-end / assistant-editor ingest layer **offline, no Resolve
128
+ running**, via the `media` tool (needs ffmpeg + ffprobe on PATH for the probing
129
+ actions):
130
+
131
+ - `ingest_verify` — hash seal / verify / dupes-by-hash (chain-of-custody).
132
+ - `media_inventory` — fps / codec / colorspace / TC + card-gap report.
133
+ - `sync` — picture↔sound TC alignment + drift / MOS detection.
134
+ - `relink_manifest`, `rename_plan` (**refuses camera originals**) /
135
+ `reel_normalize`, `turnover_package`, `project_hygiene`.
136
+
137
+ Rule of thumb: verify and inventory the card offline *before* importing, then
138
+ import/organize live. `media` also serves the delivery side (see the
139
+ `resolve-delivery` skill). See the `resolve-media-pool` skill
140
+ (`.claude/skills/media-pool.md`) and the `/media_pool_workflow` prompt. Never
141
+ rename or derive camera originals without explicit approval.
142
+
123
143
  ## Live Evidence
124
144
 
125
145
  Final validation ran on May 9, 2026 with DaVinci Resolve Studio 20.3.2.9 and