davinci-resolve-mcp 2.57.4 → 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.
- package/AGENTS.md +20 -0
- package/CHANGELOG.md +197 -2
- package/LICENSE +1 -1
- package/README.md +73 -1
- package/bin/davinci-resolve-advanced-mcp.mjs +20 -0
- package/docs/README.md +19 -0
- package/docs/SKILL.md +62 -1
- package/docs/contributing.md +1 -1
- package/docs/guides/control-panel.md +9 -0
- package/docs/kernels/README.md +21 -0
- package/docs/kernels/audio-fairlight-kernel.md +22 -0
- package/docs/kernels/color-grade-kernel.md +51 -0
- package/docs/kernels/fusion-composition-kernel.md +17 -0
- package/docs/kernels/media-pool-ingest-kernel.md +20 -0
- package/docs/kernels/render-deliver-kernel.md +32 -0
- package/docs/kernels/timeline-conform-interchange-kernel.md +39 -0
- package/docs/kernels/timeline-edit-kernel.md +17 -0
- package/docs/process/release-process.md +29 -7
- package/docs/reference/api-coverage.md +1 -1
- package/docs/reference/api-limitations.md +38 -1
- package/install.py +27 -4
- package/package.json +23 -2
- package/resolve-advanced/README.md +194 -0
- package/resolve-advanced/package.json +50 -0
- package/resolve-advanced/server/black-balance.mjs +92 -0
- package/resolve-advanced/server/capabilities.mjs +86 -0
- package/resolve-advanced/server/cdl-io.mjs +76 -0
- package/resolve-advanced/server/contrast-normalize.mjs +180 -0
- package/resolve-advanced/server/db-patch.mjs +91 -0
- package/resolve-advanced/server/deliverable-entities.mjs +86 -0
- package/resolve-advanced/server/deliverable-qc.mjs +270 -0
- package/resolve-advanced/server/editorial.mjs +370 -0
- package/resolve-advanced/server/exposure-level.mjs +129 -0
- package/resolve-advanced/server/extract-frames.mjs +196 -0
- package/resolve-advanced/server/ffprobe-media.mjs +88 -0
- package/resolve-advanced/server/gamut-legal.mjs +112 -0
- package/resolve-advanced/server/grade-body-patch.mjs +246 -0
- package/resolve-advanced/server/grade-transfer.mjs +66 -0
- package/resolve-advanced/server/group-grade-read.mjs +137 -0
- package/resolve-advanced/server/index.mjs +105 -0
- package/resolve-advanced/server/lib.mjs +84 -0
- package/resolve-advanced/server/libs.mjs +65 -0
- package/resolve-advanced/server/lineage-db.mjs +479 -0
- package/resolve-advanced/server/lut-apply.mjs +61 -0
- package/resolve-advanced/server/match-to-reference.mjs +173 -0
- package/resolve-advanced/server/media-inventory.mjs +169 -0
- package/resolve-advanced/server/media-ops.mjs +243 -0
- package/resolve-advanced/server/node-meta-db.mjs +62 -0
- package/resolve-advanced/server/node-provenance.mjs +102 -0
- package/resolve-advanced/server/offline-ref-db.mjs +420 -0
- package/resolve-advanced/server/offline-ref.mjs +179 -0
- package/resolve-advanced/server/project-db.mjs +233 -0
- package/resolve-advanced/server/provenance-audit.mjs +210 -0
- package/resolve-advanced/server/qc-frame.mjs +224 -0
- package/resolve-advanced/server/qc-sampler.mjs +67 -0
- package/resolve-advanced/server/readback.mjs +77 -0
- package/resolve-advanced/server/render-manifest.mjs +93 -0
- package/resolve-advanced/server/reverse-clip-db.mjs +270 -0
- package/resolve-advanced/server/runner-apply-contract.mjs +64 -0
- package/resolve-advanced/server/runner.mjs +244 -0
- package/resolve-advanced/server/saturation-match.mjs +108 -0
- package/resolve-advanced/server/scope-read.mjs +257 -0
- package/resolve-advanced/server/season-look.mjs +96 -0
- package/resolve-advanced/server/shot-intent.mjs +82 -0
- package/resolve-advanced/server/shot-match.mjs +147 -0
- package/resolve-advanced/server/skin-match.mjs +205 -0
- package/resolve-advanced/server/spec-compile.mjs +217 -0
- package/resolve-advanced/server/tone-curve-transfer.mjs +184 -0
- package/resolve-advanced/server/tool-catalog.mjs +265 -0
- package/resolve-advanced/server/tools/audio.mjs +54 -0
- package/resolve-advanced/server/tools/audio_plan.mjs +58 -0
- package/resolve-advanced/server/tools/capabilities.mjs +16 -0
- package/resolve-advanced/server/tools/color_trace.mjs +165 -0
- package/resolve-advanced/server/tools/conform.mjs +291 -0
- package/resolve-advanced/server/tools/deliverable.mjs +105 -0
- package/resolve-advanced/server/tools/drp.mjs +232 -0
- package/resolve-advanced/server/tools/drt.mjs +200 -0
- package/resolve-advanced/server/tools/drx.mjs +943 -0
- package/resolve-advanced/server/tools/editorial.mjs +69 -0
- package/resolve-advanced/server/tools/fairlight.mjs +108 -0
- package/resolve-advanced/server/tools/fusion.mjs +64 -0
- package/resolve-advanced/server/tools/media.mjs +102 -0
- package/resolve-advanced/server/tools/offline_ref.mjs +123 -0
- package/resolve-advanced/server/tools/pipeline.mjs +137 -0
- package/resolve-advanced/server/tools/project_db.mjs +200 -0
- package/resolve-advanced/server/tools/project_read.mjs +212 -0
- package/resolve-advanced/server/tools/provenance.mjs +73 -0
- package/resolve-advanced/server/verify-grade.mjs +113 -0
- package/resolve-advanced/server/white-balance-match.mjs +122 -0
- package/resolve-advanced/vendor/audio/format-converter.js +330 -0
- package/resolve-advanced/vendor/audio/split.js +173 -0
- package/resolve-advanced/vendor/audio/trim.js +188 -0
- package/resolve-advanced/vendor/audio-fairlight/index.js +391 -0
- package/resolve-advanced/vendor/conform-qc/adapters/frame-sampler.js +56 -0
- package/resolve-advanced/vendor/conform-qc/adapters/local-ffmpeg-sampler.js +65 -0
- package/resolve-advanced/vendor/conform-qc/adapters/rendernode-ffmpeg-sampler.js +50 -0
- package/resolve-advanced/vendor/conform-qc/adapters/resolve/driver.py +176 -0
- package/resolve-advanced/vendor/conform-qc/adapters/resolve-driver.js +61 -0
- package/resolve-advanced/vendor/conform-qc/adapters/resolve-headless-driver.js +86 -0
- package/resolve-advanced/vendor/conform-qc/adapters/vision-validator.js +75 -0
- package/resolve-advanced/vendor/conform-qc/cli.js +63 -0
- package/resolve-advanced/vendor/conform-qc/compare/advisory.js +106 -0
- package/resolve-advanced/vendor/conform-qc/compare/decode.js +36 -0
- package/resolve-advanced/vendor/conform-qc/compare/index.js +61 -0
- package/resolve-advanced/vendor/conform-qc/compare/locate.js +70 -0
- package/resolve-advanced/vendor/conform-qc/compare/metrics.js +409 -0
- package/resolve-advanced/vendor/conform-qc/docs/runbook.md +72 -0
- package/resolve-advanced/vendor/conform-qc/index.js +49 -0
- package/resolve-advanced/vendor/conform-qc/knowledge/index.js +110 -0
- package/resolve-advanced/vendor/conform-qc/ops/conform-core.js +137 -0
- package/resolve-advanced/vendor/conform-qc/ops/conform-diff.js +109 -0
- package/resolve-advanced/vendor/conform-qc/ops/insert.js +108 -0
- package/resolve-advanced/vendor/conform-qc/ops/local-conform.js +61 -0
- package/resolve-advanced/vendor/conform-qc/ops/patch.js +80 -0
- package/resolve-advanced/vendor/conform-qc/ops/trigger.js +32 -0
- package/resolve-advanced/vendor/conform-qc/ops/verify.js +105 -0
- package/resolve-advanced/vendor/conform-qc/ops/workflow.js +30 -0
- package/resolve-advanced/vendor/conform-qc/oracle/emulate.js +155 -0
- package/resolve-advanced/vendor/conform-qc/oracle/index.js +38 -0
- package/resolve-advanced/vendor/conform-qc/oracle/resolve.js +196 -0
- package/resolve-advanced/vendor/conform-qc/package.json +16 -0
- package/resolve-advanced/vendor/conform-qc/packaging/emit-aaf.js +30 -0
- package/resolve-advanced/vendor/conform-qc/packaging/emit-fcp7.js +64 -0
- package/resolve-advanced/vendor/conform-qc/packaging/index.js +169 -0
- package/resolve-advanced/vendor/conform-qc/packaging/media-ops.js +56 -0
- package/resolve-advanced/vendor/conform-qc/packaging/otio.js +50 -0
- package/resolve-advanced/vendor/conform-qc/packaging/relink.js +50 -0
- package/resolve-advanced/vendor/conform-qc/packaging/surgical-relink.js +195 -0
- package/resolve-advanced/vendor/conform-qc/parse/index.js +54 -0
- package/resolve-advanced/vendor/conform-qc/parse/merge-dto.js +27 -0
- package/resolve-advanced/vendor/conform-qc/parse/xmeml-geometry.js +256 -0
- package/resolve-advanced/vendor/conform-qc/reference/burnin-ocr.js +100 -0
- package/resolve-advanced/vendor/conform-qc/reference/sidecar.js +37 -0
- package/resolve-advanced/vendor/conform-qc/repair/analysis.js +62 -0
- package/resolve-advanced/vendor/conform-qc/repair/index.js +78 -0
- package/resolve-advanced/vendor/conform-qc/repair/media-analysis.js +139 -0
- package/resolve-advanced/vendor/conform-qc/repair/media-index.js +135 -0
- package/resolve-advanced/vendor/conform-qc/repair/strategies.js +250 -0
- package/resolve-advanced/vendor/conform-qc/report/index.js +133 -0
- package/resolve-advanced/vendor/conform-qc/roles/index.js +96 -0
- package/resolve-advanced/vendor/conform-qc/synthetic/generate.js +233 -0
- package/resolve-advanced/vendor/conform-qc/test/advisory.test.js +85 -0
- package/resolve-advanced/vendor/conform-qc/test/cli.test.js +39 -0
- package/resolve-advanced/vendor/conform-qc/test/compare.test.js +152 -0
- package/resolve-advanced/vendor/conform-qc/test/conform-diff.test.js +70 -0
- package/resolve-advanced/vendor/conform-qc/test/emulate.test.js +51 -0
- package/resolve-advanced/vendor/conform-qc/test/frame-sampler.test.js +30 -0
- package/resolve-advanced/vendor/conform-qc/test/geometry.test.js +112 -0
- package/resolve-advanced/vendor/conform-qc/test/knowledge.test.js +56 -0
- package/resolve-advanced/vendor/conform-qc/test/lifecycle.test.js +110 -0
- package/resolve-advanced/vendor/conform-qc/test/local-ffmpeg-sampler.test.js +66 -0
- package/resolve-advanced/vendor/conform-qc/test/locate.test.js +63 -0
- package/resolve-advanced/vendor/conform-qc/test/media-analysis.test.js +63 -0
- package/resolve-advanced/vendor/conform-qc/test/media-index-normalized.test.js +65 -0
- package/resolve-advanced/vendor/conform-qc/test/media-index-origin.test.js +53 -0
- package/resolve-advanced/vendor/conform-qc/test/metrics-fast.test.js +91 -0
- package/resolve-advanced/vendor/conform-qc/test/oracle-reverse.test.js +86 -0
- package/resolve-advanced/vendor/conform-qc/test/oracle.test.js +136 -0
- package/resolve-advanced/vendor/conform-qc/test/p0-acceptance.test.js +60 -0
- package/resolve-advanced/vendor/conform-qc/test/p1-acceptance.test.js +75 -0
- package/resolve-advanced/vendor/conform-qc/test/p45-patch-acceptance.test.js +102 -0
- package/resolve-advanced/vendor/conform-qc/test/packaging.test.js +133 -0
- package/resolve-advanced/vendor/conform-qc/test/parse-stubs.test.js +28 -0
- package/resolve-advanced/vendor/conform-qc/test/repair-strategies.test.js +128 -0
- package/resolve-advanced/vendor/conform-qc/test/repair.test.js +84 -0
- package/resolve-advanced/vendor/conform-qc/test/report.test.js +52 -0
- package/resolve-advanced/vendor/conform-qc/test/resolve-readback.test.js +71 -0
- package/resolve-advanced/vendor/conform-qc/test/roles.test.js +107 -0
- package/resolve-advanced/vendor/conform-qc/test/runbook.test.js +30 -0
- package/resolve-advanced/vendor/conform-qc/test/scale-residual.test.js +40 -0
- package/resolve-advanced/vendor/conform-qc/test/sidecar.test.js +51 -0
- package/resolve-advanced/vendor/conform-qc/test/smoke.test.js +87 -0
- package/resolve-advanced/vendor/conform-qc/test/surgical-relink.test.js +73 -0
- package/resolve-advanced/vendor/conform-qc/test/synthetic.test.js +98 -0
- package/resolve-advanced/vendor/conform-qc/test/verify.test.js +93 -0
- package/resolve-advanced/vendor/conform-qc/test/vision-validator.test.js +43 -0
- package/resolve-advanced/vendor/conform-qc/test/workflow-driver.test.js +46 -0
- package/resolve-advanced/vendor/conform-qc/toolset/index.js +53 -0
- package/resolve-advanced/vendor/drp-format/README.md +116 -0
- package/resolve-advanced/vendor/drp-format/__tests__/_resolve-verify.js +39 -0
- package/resolve-advanced/vendor/drp-format/__tests__/add-media-clip.test.js +30 -0
- package/resolve-advanced/vendor/drp-format/__tests__/assemble-timeline.test.js +68 -0
- package/resolve-advanced/vendor/drp-format/__tests__/author-project.test.js +57 -0
- package/resolve-advanced/vendor/drp-format/__tests__/composition-text.test.js +98 -0
- package/resolve-advanced/vendor/drp-format/__tests__/diff.test.js +272 -0
- package/resolve-advanced/vendor/drp-format/__tests__/effect-filters-compressed.test.js +143 -0
- package/resolve-advanced/vendor/drp-format/__tests__/fixtures/p0-3-session30-empty-effectfilters.drp +0 -0
- package/resolve-advanced/vendor/drp-format/__tests__/fixtures/retimed-timemap-50pct.hex +1 -0
- package/resolve-advanced/vendor/drp-format/__tests__/fixtures/retimed-timemap-dynamic.hex +1 -0
- package/resolve-advanced/vendor/drp-format/__tests__/inject-grades.test.js +238 -0
- package/resolve-advanced/vendor/drp-format/__tests__/keyed-dict.test.js +85 -0
- package/resolve-advanced/vendor/drp-format/__tests__/lut-refs.test.js +119 -0
- package/resolve-advanced/vendor/drp-format/__tests__/media-blobs.test.js +25 -0
- package/resolve-advanced/vendor/drp-format/__tests__/media-timemap.test.js +119 -0
- package/resolve-advanced/vendor/drp-format/__tests__/place-fusion-title.test.js +52 -0
- package/resolve-advanced/vendor/drp-format/__tests__/place-generator.test.js +40 -0
- package/resolve-advanced/vendor/drp-format/__tests__/place-transition.test.js +48 -0
- package/resolve-advanced/vendor/drp-format/__tests__/protobuf-wire.test.js +64 -0
- package/resolve-advanced/vendor/drp-format/__tests__/relink-media.test.js +106 -0
- package/resolve-advanced/vendor/drp-format/__tests__/splice-clips.test.js +256 -0
- package/resolve-advanced/vendor/drp-format/assemble-timeline.js +65 -0
- package/resolve-advanced/vendor/drp-format/author-project.js +118 -0
- package/resolve-advanced/vendor/drp-format/composition-text.js +213 -0
- package/resolve-advanced/vendor/drp-format/curves-encoder.js +763 -0
- package/resolve-advanced/vendor/drp-format/diff.js +310 -0
- package/resolve-advanced/vendor/drp-format/drp-packager.js +201 -0
- package/resolve-advanced/vendor/drp-format/drp-validator.js +809 -0
- package/resolve-advanced/vendor/drp-format/effect-encoder.js +640 -0
- package/resolve-advanced/vendor/drp-format/extract-lut-refs.js +119 -0
- package/resolve-advanced/vendor/drp-format/grade-encoder.example.js +133 -0
- package/resolve-advanced/vendor/drp-format/grade-encoder.js +401 -0
- package/resolve-advanced/vendor/drp-format/grade-encoder.test.js +171 -0
- package/resolve-advanced/vendor/drp-format/grade-encoder.verify.js +249 -0
- package/resolve-advanced/vendor/drp-format/grade-node-extractor.js +495 -0
- package/resolve-advanced/vendor/drp-format/grade-parameter-decoder.js +774 -0
- package/resolve-advanced/vendor/drp-format/index.js +174 -0
- package/resolve-advanced/vendor/drp-format/inject-grades.js +219 -0
- package/resolve-advanced/vendor/drp-format/keyed-dict.js +227 -0
- package/resolve-advanced/vendor/drp-format/marker-encoder.js +532 -0
- package/resolve-advanced/vendor/drp-format/media-blobs.js +53 -0
- package/resolve-advanced/vendor/drp-format/media-timemap.js +164 -0
- package/resolve-advanced/vendor/drp-format/mp-folder-builder.js +293 -0
- package/resolve-advanced/vendor/drp-format/node-tree-encoder.js +1246 -0
- package/resolve-advanced/vendor/drp-format/package.json +18 -0
- package/resolve-advanced/vendor/drp-format/place-fusion-title.js +131 -0
- package/resolve-advanced/vendor/drp-format/place-generator.js +77 -0
- package/resolve-advanced/vendor/drp-format/place-transition.js +91 -0
- package/resolve-advanced/vendor/drp-format/power-window-encoder.js +776 -0
- package/resolve-advanced/vendor/drp-format/protobuf-wire.js +111 -0
- package/resolve-advanced/vendor/drp-format/qualifier-encoder.js +706 -0
- package/resolve-advanced/vendor/drp-format/relink-media.js +218 -0
- package/resolve-advanced/vendor/drp-format/rich-title-encoder.js +447 -0
- package/resolve-advanced/vendor/drp-format/seq-container-builder.js +572 -0
- package/resolve-advanced/vendor/drp-format/seq-surgery.js +155 -0
- package/resolve-advanced/vendor/drp-format/splice-clips.js +445 -0
- package/resolve-advanced/vendor/drp-format/templates/empty-project.drp +0 -0
- package/resolve-advanced/vendor/drp-format/templates/fusion-title.xml +56 -0
- package/resolve-advanced/vendor/drp-format/templates/generator-solid-color.xml +21 -0
- package/resolve-advanced/vendor/drp-format/templates/media-clip-h264.drp +0 -0
- package/resolve-advanced/vendor/drp-format/templates/transition-cross-dissolve.xml +22 -0
- package/resolve-advanced/vendor/drp-format/tool-registry.descriptor.js +80 -0
- package/resolve-advanced/vendor/drp-format/utils/safe-archive.js +54 -0
- package/resolve-advanced/vendor/drp-format/xml-builder.js +759 -0
- package/resolve-advanced/vendor/drt-format/__tests__/_resolve-verify.js +21 -0
- package/resolve-advanced/vendor/drt-format/__tests__/build.test.js +113 -0
- package/resolve-advanced/vendor/drt-format/__tests__/multi-format.test.js +93 -0
- package/resolve-advanced/vendor/drt-format/__tests__/parse-real-resolve21.test.js +51 -0
- package/resolve-advanced/vendor/drt-format/__tests__/parse.test.js +134 -0
- package/resolve-advanced/vendor/drt-format/__tests__/resolve-versions.test.js +120 -0
- package/resolve-advanced/vendor/drt-format/__tests__/schema-fingerprint.test.js +62 -0
- package/resolve-advanced/vendor/drt-format/__tests__/smoke.test.js +27 -0
- package/resolve-advanced/vendor/drt-format/__tests__/validate.test.js +109 -0
- package/resolve-advanced/vendor/drt-format/capabilities.js +69 -0
- package/resolve-advanced/vendor/drt-format/capability-domains.js +56 -0
- package/resolve-advanced/vendor/drt-format/drt-builder.js +42 -0
- package/resolve-advanced/vendor/drt-format/drt-parser.js +164 -0
- package/resolve-advanced/vendor/drt-format/drt-validator.js +98 -0
- package/resolve-advanced/vendor/drt-format/index.js +45 -0
- package/resolve-advanced/vendor/drt-format/package.json +17 -0
- package/resolve-advanced/vendor/drt-format/resolve-versions.js +153 -0
- package/resolve-advanced/vendor/drt-format/schema-fingerprint.js +74 -0
- package/resolve-advanced/vendor/drt-format/templates/drt-project-shell.xml +124 -0
- package/resolve-advanced/vendor/drx-codec/__tests__/curves-roundtrip.test.js +148 -0
- package/resolve-advanced/vendor/drx-codec/__tests__/fixtures/p2-1-face-refinement.drx +58 -0
- package/resolve-advanced/vendor/drx-codec/__tests__/fixtures/p2-1-filmgrain.drx +58 -0
- package/resolve-advanced/vendor/drx-codec/__tests__/fixtures/p2-1-glow.drx +58 -0
- package/resolve-advanced/vendor/drx-codec/__tests__/fixtures/p2-1-lens-flare.drx +58 -0
- package/resolve-advanced/vendor/drx-codec/__tests__/fixtures/p2-3-beauty-25.drx +58 -0
- package/resolve-advanced/vendor/drx-codec/__tests__/fixtures/p2-3-beauty-75.drx +58 -0
- package/resolve-advanced/vendor/drx-codec/__tests__/fixtures/p5-1-node-no-lut.drx +58 -0
- package/resolve-advanced/vendor/drx-codec/__tests__/fixtures/p5-1-node-with-lut.drx +58 -0
- package/resolve-advanced/vendor/drx-codec/__tests__/hsl-curves-roundtrip.test.js +117 -0
- package/resolve-advanced/vendor/drx-codec/__tests__/lut-refs-roundtrip.test.js +112 -0
- package/resolve-advanced/vendor/drx-codec/__tests__/matte-roundtrip.test.js +167 -0
- package/resolve-advanced/vendor/drx-codec/__tests__/ofx-roundtrip.test.js +215 -0
- package/resolve-advanced/vendor/drx-codec/__tests__/ofx-slugs-discovery.test.js +149 -0
- package/resolve-advanced/vendor/drx-codec/__tests__/power-window-roundtrip.test.js +230 -0
- package/resolve-advanced/vendor/drx-codec/__tests__/qualifier-roundtrip.test.js +226 -0
- package/resolve-advanced/vendor/drx-codec/cdl-exporter.js +470 -0
- package/resolve-advanced/vendor/drx-codec/color-nlp-parser.js +833 -0
- package/resolve-advanced/vendor/drx-codec/data/color-nlp-action-mappings.json +2232 -0
- package/resolve-advanced/vendor/drx-codec/drx-generator.js +4123 -0
- package/resolve-advanced/vendor/drx-codec/drx-merger.js +320 -0
- package/resolve-advanced/vendor/drx-codec/drx-parser.js +1808 -0
- package/resolve-advanced/vendor/drx-codec/extract-custom-curves.js +215 -0
- package/resolve-advanced/vendor/drx-codec/extract-hsl-curves.js +180 -0
- package/resolve-advanced/vendor/drx-codec/extract-lut-refs.js +158 -0
- package/resolve-advanced/vendor/drx-codec/extract-matte-finesse.js +83 -0
- package/resolve-advanced/vendor/drx-codec/extract-ofx-params.js +226 -0
- package/resolve-advanced/vendor/drx-codec/extract-power-window.js +184 -0
- package/resolve-advanced/vendor/drx-codec/extract-qualifier.js +99 -0
- package/resolve-advanced/vendor/drx-codec/index.js +109 -0
- package/resolve-advanced/vendor/drx-codec/node-layout.js +249 -0
- package/resolve-advanced/vendor/drx-codec/resolved-drx-generator.js +393 -0
- package/resolve-advanced/vendor/drx-codec/tool-resolver.js +974 -0
- package/resolve-advanced/vendor/drx-codec/training-examples.js +548 -0
- package/resolve-advanced/vendor/drx-codec/vocabulary-intents.js +539 -0
- package/resolve-advanced/vendor/drx-parameters/CALIBRATION-STATUS.md +319 -0
- package/resolve-advanced/vendor/drx-parameters/DRX-VALUE-SCALING.md +251 -0
- package/resolve-advanced/vendor/drx-parameters/calibrated-ranges.json +17737 -0
- package/resolve-advanced/vendor/drx-parameters/corrector-types.js +120 -0
- package/resolve-advanced/vendor/drx-parameters/index.js +193 -0
- package/resolve-advanced/vendor/drx-parameters/parameter-codec.js +451 -0
- package/resolve-advanced/vendor/drx-parameters/parameter-ids.js +1292 -0
- package/resolve-advanced/vendor/drx-parameters/parameter-ranges.js +570 -0
- package/resolve-advanced/vendor/drx-parameters/parameter-validator.js +392 -0
- package/resolve-advanced/vendor/drx-parameters/resolvefx-registry.json +14973 -0
- package/resolve-advanced/vendor/drx-parameters/tool-registry.descriptor.js +38 -0
- package/resolve-advanced/vendor/drx-parameters/tools/drx-analyzer.js +371 -0
- package/resolve-advanced/vendor/fairlight/index.js +833 -0
- package/resolve-advanced/vendor/fusion-codec/composition-generator.js +401 -0
- package/resolve-advanced/vendor/fusion-codec/templates/blur-region.js +103 -0
- package/resolve-advanced/vendor/fusion-codec/templates/color-correct.js +87 -0
- package/resolve-advanced/vendor/fusion-codec/templates/film-grain.js +106 -0
- package/resolve-advanced/vendor/fusion-codec/templates/lower-third.js +241 -0
- package/resolve-advanced/vendor/fusion-codec/templates/picture-in-picture.js +188 -0
- package/resolve-advanced/vendor/fusion-codec/templates/text-overlay.js +161 -0
- package/resolve-advanced/vendor/fusion-codec/templates/title-card.js +184 -0
- package/resolve-advanced/vendor/fusion-codec/templates/vignette.js +107 -0
- package/resolve-advanced/vendor/fusion-codec/templates/watermark.js +101 -0
- package/scripts/agent-rules/README.md +68 -0
- package/src/analysis_dashboard.py +233 -1
- package/src/granular/common.py +1 -1
- package/src/server.py +479 -29
- package/src/utils/api_truth.py +117 -0
- package/src/utils/cut_ir.py +1 -1
- package/src/utils/failure_tracker.py +0 -2
- 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,201 @@
|
|
|
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
|
+
|
|
169
|
+
## What's New in v2.57.5
|
|
170
|
+
|
|
171
|
+
Fixes a silent data-loss bug on Reel Name writes (issue #77) and bundles the
|
|
172
|
+
community-contributed API-limitation entries from PR #76 (issue #75).
|
|
173
|
+
|
|
174
|
+
- **Fixed** (#77) `set_clip_property` / `set_metadata` reporting `success: true`
|
|
175
|
+
when writing the `Reel Name` clip property even though Resolve silently
|
|
176
|
+
dropped the value. Resolve gates `Reel Name` behind the project setting
|
|
177
|
+
*General Options > Assist using reel names from the:* — when that derives reel
|
|
178
|
+
names automatically, scripted writes are ignored but still return `True`. On a
|
|
179
|
+
batch ingest this meant hundreds of clips believed to have reel names assigned
|
|
180
|
+
when none actually stuck. The server now reads the value back after writing
|
|
181
|
+
known-unreliable keys and refuses to report success on mismatch, surfacing the
|
|
182
|
+
project-setting gate as a `hint`. Wired into `set_clip_property`,
|
|
183
|
+
`set_metadata` (both forms), and the bulk `normalize_metadata` path. Adds an
|
|
184
|
+
`api_truth` bug entry (report now lists 18 missing + 11 bugs) and 10 unit
|
|
185
|
+
tests.
|
|
186
|
+
- **Added** (PR #76, thanks @swayll) four `submit: missing` API-limitation
|
|
187
|
+
entries verified on Resolve 21.0.0: per-subtitle text/timing editing, subtitle
|
|
188
|
+
track styling/presets, speech-recognition engine selection + SRT import, and
|
|
189
|
+
Media Pool folder rename. These document the API ceiling behind the subtitle
|
|
190
|
+
feature request in #75 — direct subtitle text editing and SRT round-trip are
|
|
191
|
+
not exposed by the Blackmagic scripting API.
|
|
192
|
+
|
|
193
|
+
### Validation
|
|
194
|
+
|
|
195
|
+
- Offline: full unit suite green; new `tests/test_reel_name_writeback.py` (10
|
|
196
|
+
tests) plus the api_truth/limitations drift guards. Live Resolve validation of
|
|
197
|
+
the Reel Name read-back is recommended but not performed here — forcing the
|
|
198
|
+
gate would require writing reel names into a live project's media metadata.
|
|
199
|
+
|
|
5
200
|
## What's New in v2.57.4
|
|
6
201
|
|
|
7
202
|
Live mutating verification of the catalogued API gaps.
|
|
@@ -1684,8 +1879,8 @@ coverage, the destructive hook, update hardening, and update history.
|
|
|
1684
1879
|
**Validation** — `tests/test_import.py`, `scripts/audit_api_parity.py`,
|
|
1685
1880
|
`node bin/davinci-resolve-mcp.mjs --version`, `npm pack --dry-run`, and
|
|
1686
1881
|
`git diff --check` all pass. 375 focused unit tests pass. Live Resolve
|
|
1687
|
-
validation covered the D1–F2 surface end-to-end against
|
|
1688
|
-
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
|
|
1689
1884
|
plans + CAPS_REFUSAL manifests, E1 8 MCP resource URIs, E2 escalation on
|
|
1690
1885
|
3× repeated failure, E3 `prefer_handle` job handoff with
|
|
1691
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
|
-
[](https://github.com/samuelgursky/davinci-resolve-mcp/releases)
|
|
4
4
|
[](https://www.npmjs.com/package/davinci-resolve-mcp)
|
|
5
5
|
[](docs/reference/api-coverage.md)
|
|
6
6
|
[-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` |
|
|
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)`,
|
package/docs/contributing.md
CHANGED
|
@@ -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 —
|
|
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.
|
package/docs/kernels/README.md
CHANGED
|
@@ -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:
|