davinci-resolve-mcp 2.57.5 → 2.59.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 +209 -2
- package/LICENSE +1 -1
- package/README.md +76 -11
- 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/install.py +35 -4
- package/package.json +23 -2
- package/resolve-advanced/README.md +199 -0
- package/resolve-advanced/package.json +50 -0
- package/resolve-advanced/server/aaf.mjs +104 -0
- package/resolve-advanced/server/author-interchange.mjs +152 -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 +382 -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/prproj.mjs +262 -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/sequences.mjs +86 -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 +208 -0
- package/resolve-advanced/server/tools/drx.mjs +943 -0
- package/resolve-advanced/server/tools/editorial.mjs +142 -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 +656 -25
- package/src/utils/api_truth.py +21 -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
|
@@ -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
|
|
@@ -64,6 +64,38 @@ All actions are under `render(action=...)`.
|
|
|
64
64
|
existing `render_presets` tool, but the live kernel probe does not fabricate
|
|
65
65
|
arbitrary preset files.
|
|
66
66
|
|
|
67
|
+
## Advanced (offline) server — deliverable QC, media front-end, provenance
|
|
68
|
+
|
|
69
|
+
The live actions above plan and drive renders in a *running* Resolve. The
|
|
70
|
+
companion advanced server (`davinci-resolve-advanced`, see
|
|
71
|
+
`resolve-advanced/README.md`) QCs the **finished render** and manages media/
|
|
72
|
+
provenance with **no Resolve running**. It is report-only —
|
|
73
|
+
**`gate: review`, never auto-pass-clear.**
|
|
74
|
+
|
|
75
|
+
- **`deliverable`** — `deliverable_qc` (ffprobe a render vs its spec → pass/fail
|
|
76
|
+
**per field**), `loudness_qc` (ebur128 LUFS/true-peak/LRA),
|
|
77
|
+
`reframe_blanking_check`, `conform_completeness` (every intended shot present),
|
|
78
|
+
`re_delivery_diff`, `render_manifest` (build/reconcile), `expand_deliverable`
|
|
79
|
+
(texted/textless/stems/slate/leader entities).
|
|
80
|
+
- **`media`** (front-end / AE) — `ingest_verify` (hash seal/verify/dupes),
|
|
81
|
+
`media_inventory` (fps/codec/colorspace/TC + card gaps), `sync` (picture↔sound
|
|
82
|
+
TC + drift/MOS), `relink_manifest`, `rename_plan` (**refuses camera
|
|
83
|
+
originals**) / `reel_normalize`, `turnover_package`, `project_hygiene`.
|
|
84
|
+
- **`provenance`** (audit) — `grade_provenance` ("why is this graded this way"),
|
|
85
|
+
`gallery_lineage`, `cdl_export` / `cdl_diff` (round-trip asserted),
|
|
86
|
+
`revision_tracking`, `episode_report`.
|
|
87
|
+
|
|
88
|
+
Rules an agent must know:
|
|
89
|
+
|
|
90
|
+
- QC tools **refuse rather than fabricate** — a "refused" result means missing
|
|
91
|
+
file, wrong spec, or a metric it cannot honestly compute.
|
|
92
|
+
- Deliverable gates never auto-clear; surface the per-field verdict to a human.
|
|
93
|
+
- **Deps.** `deliverable`/`media` QC needs **ffmpeg + ffprobe on PATH** (GPL, not
|
|
94
|
+
bundled) — call the advanced `capabilities` tool for status + install hints.
|
|
95
|
+
|
|
96
|
+
See the `resolve-delivery` skill (`.claude/skills/delivery.md`) for the
|
|
97
|
+
craft ↔ live ↔ offline routing.
|
|
98
|
+
|
|
67
99
|
## Live Evidence
|
|
68
100
|
|
|
69
101
|
Final validation ran on May 9, 2026 with DaVinci Resolve Studio 20.3.2.9 and
|
|
@@ -84,6 +84,45 @@ Supported aliases include `aaf`, `drt`, `edl`, `edl_cdl`, `edl_sdl`,
|
|
|
84
84
|
- Export and import helpers require temp paths by default because they write
|
|
85
85
|
interchange artifacts.
|
|
86
86
|
|
|
87
|
+
## Advanced (offline) server — the conform QC engine
|
|
88
|
+
|
|
89
|
+
The live actions above operate on a *running* Resolve. The companion advanced
|
|
90
|
+
server (`davinci-resolve-advanced`, see `resolve-advanced/README.md`) does the
|
|
91
|
+
finishing-grade conform work with **no Resolve running**, against `.drt`/`.drp`
|
|
92
|
+
files and the project DB.
|
|
93
|
+
|
|
94
|
+
- **`conform`** — offline conform/relink QC with **frame-oracle math, not
|
|
95
|
+
filename matching** (it catches a clip relinked to the wrong-but-similarly-named
|
|
96
|
+
source). Also: reverse/retimed subclip DB repair (reversed `source_start` =
|
|
97
|
+
`masterFrames − 1 − endoffset`, live-validated), sequence lineage store + diff +
|
|
98
|
+
rollback (hashed snapshots), and per-cut frame QC (oracle-frame vs
|
|
99
|
+
reference-render, scale-corrected, red/yellow/cyan verdicts).
|
|
100
|
+
- **`color_trace`** — cross-project clip matching → a trace plan for carrying
|
|
101
|
+
grades across a re-conform (pairs with the color kernel's `drx grade_transfer`).
|
|
102
|
+
- **`offline_ref`** — offline-reference clips have **no scripting API** but live
|
|
103
|
+
inside `.drp`/`.drt` as `<OfflineClip>` entries; patch them here.
|
|
104
|
+
- **`editorial`** — `parse_interchange` (EDL/OTIO/XMEML; **AAF = honest refuse**),
|
|
105
|
+
`turnover_changelist` (moved/retimed/replaced/new/gone with timing guards),
|
|
106
|
+
`conform_manifest`, `marker_roundtrip`.
|
|
107
|
+
- **`drt` / `project_db`** — timeline file authoring and DB patching.
|
|
108
|
+
|
|
109
|
+
Gotchas the live path shares:
|
|
110
|
+
|
|
111
|
+
- **XML import via the scripting API goes _offline_** (missing-media/generators
|
|
112
|
+
abort). Use `import_timeline_checked` with media **sanitize** (FCP7/FCPXML) so
|
|
113
|
+
the API imports with links intact, then exact-path relink. Restart a running MCP
|
|
114
|
+
server to pick up the sanitize fix.
|
|
115
|
+
- **`.drt` version.** For DaVinci Resolve 19.1.3, set `DbPrjVer` 17 → 16 when
|
|
116
|
+
authoring a `.drt`.
|
|
117
|
+
- **`project_db` patches** require the project **CLOSED** plus
|
|
118
|
+
`iConfirmProjectClosed:true`; writes auto-back-up and read-back verify. Resolve
|
|
119
|
+
caches open projects — **fully quit and relaunch** after patching.
|
|
120
|
+
- **Deps.** `better-sqlite3` gates lineage/reverse/DB; `sharp`/ffmpeg gate frame
|
|
121
|
+
compare — call the advanced `capabilities` tool.
|
|
122
|
+
|
|
123
|
+
See the `resolve-conform` skill (`.claude/skills/conform.md`) for the
|
|
124
|
+
craft ↔ live ↔ offline routing.
|
|
125
|
+
|
|
87
126
|
## Live Probe
|
|
88
127
|
|
|
89
128
|
Run the live boundary probe with:
|
|
@@ -180,6 +180,23 @@ Some behavior depends on Resolve's current page or bridge state:
|
|
|
180
180
|
if Resolve loses current timeline state, the harness records the bridge
|
|
181
181
|
condition separately.
|
|
182
182
|
|
|
183
|
+
## Advanced (offline) server — editorial interchange + changelist
|
|
184
|
+
|
|
185
|
+
The kernel above restructures a *running* timeline. The companion advanced server
|
|
186
|
+
(`davinci-resolve-advanced`, see `resolve-advanced/README.md`) authors/diffs
|
|
187
|
+
timelines and reasons over editorial interchange with **no Resolve running**:
|
|
188
|
+
|
|
189
|
+
- **`editorial`** — `parse_interchange` (EDL/OTIO/XMEML; **AAF = honest refuse**),
|
|
190
|
+
`turnover_changelist` (moved/retimed/replaced/new/gone between two cuts, with
|
|
191
|
+
timing silent-lie guards), `conform_manifest`, `marker_roundtrip`.
|
|
192
|
+
- **`drt`** — `.drt` timeline file authoring + structural diff.
|
|
193
|
+
|
|
194
|
+
Use these to answer "what changed between v3 and v4" or to hand a conform an
|
|
195
|
+
accurate change list without opening either timeline. For conforming/relinking
|
|
196
|
+
that change list, see the Timeline Conform / Interchange kernel and the
|
|
197
|
+
`resolve-conform` skill; for the edit ↔ offline routing, see the `resolve-edit`
|
|
198
|
+
skill (`.claude/skills/timeline-edit.md`).
|
|
199
|
+
|
|
183
200
|
## Development Guardrails
|
|
184
201
|
|
|
185
202
|
- Use disposable projects and synthetic media for live validation.
|
|
@@ -35,11 +35,15 @@ Every release bump must update all version surfaces:
|
|
|
35
35
|
`venv/bin/python scripts/gen_api_limitations.py`. The
|
|
36
36
|
`tests.test_api_limitations_doc` drift guard fails the suite if it is stale.
|
|
37
37
|
- `docs/SKILL.md` when tool discovery, examples, or behavior changed
|
|
38
|
-
- `docs/guides/control-panel.md`
|
|
38
|
+
- `docs/guides/control-panel.md` — check EVERY release, not only when the
|
|
39
|
+
panel "changed": panel surfaces grow transitively (new tools, new docs pages,
|
|
40
|
+
new diagnostics cards), so review the guide for accuracy and update it plus
|
|
39
41
|
regenerated screenshots: start the panel against a project with analysis
|
|
40
42
|
data, then run `venv/bin/python scripts/regen_panel_screenshots.py`.
|
|
41
43
|
The `tests.test_panel_docs_drift` guard fails the suite (and the publish
|
|
42
|
-
workflow) when the guide drifts from the panel's navigation or screenshots
|
|
44
|
+
workflow) when the guide drifts from the panel's navigation or screenshots —
|
|
45
|
+
but the guard checks presence, not prose accuracy; the human pass is the
|
|
46
|
+
accuracy check.
|
|
43
47
|
- Git tag, e.g. `v2.4.1`
|
|
44
48
|
- GitHub Release notes
|
|
45
49
|
|
|
@@ -54,17 +58,35 @@ Always run static checks before release:
|
|
|
54
58
|
venv/bin/python tests/test_import.py
|
|
55
59
|
venv/bin/python scripts/audit_api_parity.py
|
|
56
60
|
venv/bin/python scripts/gen_api_limitations.py --check
|
|
57
|
-
|
|
61
|
+
node scripts/agent-rules/generate.mjs --check
|
|
62
|
+
venv/bin/python -m unittest tests.test_static_undefined_names tests.test_action_list_drift tests.test_panel_docs_drift tests.test_doc_tool_counts tests.test_agent_rules_drift
|
|
58
63
|
node bin/davinci-resolve-mcp.mjs --help
|
|
59
64
|
node bin/davinci-resolve-mcp.mjs --version
|
|
60
65
|
npm pack --dry-run
|
|
61
66
|
git diff --check
|
|
62
67
|
```
|
|
63
68
|
|
|
64
|
-
The
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
69
|
+
The drift guards (undefined names in `src/`, tool action lists vs dispatch,
|
|
70
|
+
control-panel guide vs panel navigation/screenshots, api-limitations vs the
|
|
71
|
+
api_truth ledger, and **tool counts across the docs vs reality** —
|
|
72
|
+
`test_doc_tool_counts`) also run in the `Publish npm package` workflow on every
|
|
73
|
+
`v*` tag, so a stale doc or drifted action list fails the publish — fix the drift
|
|
74
|
+
rather than bypassing the gate.
|
|
75
|
+
|
|
76
|
+
`test_doc_tool_counts` statically counts the compound (`src/server.py`), granular
|
|
77
|
+
(`src/granular/`), and Node advanced (`resolve-advanced/server/index.mjs`) tools and
|
|
78
|
+
asserts the numbers quoted in README, `resolve-advanced/README.md`, `docs/contributing.md`,
|
|
79
|
+
`docs/SKILL.md`, `docs/reference/api-coverage.md`, and `.github/copilot-instructions.md`
|
|
80
|
+
still match. When you add/remove a tool, update those docs to the counts the test prints.
|
|
81
|
+
|
|
82
|
+
The cross-platform agent rule files (`.cursor/rules/*`, `.github/instructions/*`,
|
|
83
|
+
`.windsurf/rules/*`, `.cursorrules`, `.windsurfrules`, the `AGENTS.md` domain-routing
|
|
84
|
+
block, and `.github/copilot-instructions.md`) are **generated** by
|
|
85
|
+
`scripts/agent-rules/generate.mjs`, which parses those same counts from their
|
|
86
|
+
canonical docs. After a count or tool-routing change, run
|
|
87
|
+
`node scripts/agent-rules/generate.mjs` and commit the result;
|
|
88
|
+
`test_agent_rules_drift` fails the suite (and publish) if the committed files are
|
|
89
|
+
stale. See `scripts/agent-rules/README.md`.
|
|
68
90
|
|
|
69
91
|
Run focused unit tests for the changed surface. For recent timeline/marker
|
|
70
92
|
helpers, this usually includes:
|
|
@@ -17,7 +17,7 @@ Complete Resolve scripting API coverage, live-test status, and method-by-method
|
|
|
17
17
|
|
|
18
18
|
## API Coverage
|
|
19
19
|
|
|
20
|
-
Every non-deprecated method in the DaVinci Resolve Scripting API is covered. The default compound server exposes **
|
|
20
|
+
Every non-deprecated method in the DaVinci Resolve Scripting API is covered. The default compound server exposes **34 tools** that group related operations by action parameter, keeping LLM context windows lean. The full granular server provides **341 individual tools** for power users. Both modes cover all 13 API object classes. MCP-level kernel actions are tracked separately in [Kernel Action Coverage](../kernels/README.md).
|
|
21
21
|
|
|
22
22
|
The 33rd compound tool is `timeline_versioning` (C6) — an MCP-level workflow
|
|
23
23
|
tool, not a wrapper around a Resolve API method. It surfaces the
|
package/install.py
CHANGED
|
@@ -35,7 +35,7 @@ from src.utils.update_check import (
|
|
|
35
35
|
|
|
36
36
|
# ─── Version ──────────────────────────────────────────────────────────────────
|
|
37
37
|
|
|
38
|
-
VERSION = "2.
|
|
38
|
+
VERSION = "2.59.0"
|
|
39
39
|
# Only hard floor: mcp[cli] requires Python 3.10+. There is no upper bound —
|
|
40
40
|
# Resolve's scripting bridge loads into newer interpreters on recent builds
|
|
41
41
|
# (Python 3.14 verified against Resolve Studio 20.3.2). Older Resolve builds
|
|
@@ -666,14 +666,45 @@ def write_client_config(client, python_path, server_path, api_path, lib_path, dr
|
|
|
666
666
|
return True, str(config_path)
|
|
667
667
|
|
|
668
668
|
|
|
669
|
+
def build_advanced_entry(server_path, python_path=None):
|
|
670
|
+
"""Build the config entry for the optional 'davinci-resolve-advanced' server.
|
|
671
|
+
|
|
672
|
+
This is the Node, beyond-the-scripting-API sibling (file/.drp/.drt/.drx
|
|
673
|
+
authoring + conform + editorial, no live Resolve required). It ships in the
|
|
674
|
+
same package as a second bin. Opt-in: include it only if you want the
|
|
675
|
+
file-level tools alongside the live server.
|
|
676
|
+
|
|
677
|
+
The Node server shells out to Python for the OFFLINE AAF reader (aaf_probe.py,
|
|
678
|
+
pyaaf2). We pin AAF_PROBE_PYTHON to the project venv's interpreter — the same
|
|
679
|
+
venv install.py installs pyaaf2 into — so AAF preview works out of the box
|
|
680
|
+
instead of depending on whatever `python3` happens to be on PATH.
|
|
681
|
+
"""
|
|
682
|
+
project_dir = Path(server_path).resolve().parents[1] # .../src/server.py -> repo root
|
|
683
|
+
advanced_bin = project_dir / "bin" / "davinci-resolve-advanced-mcp.mjs"
|
|
684
|
+
entry = {"command": "node", "args": [str(advanced_bin)]}
|
|
685
|
+
if python_path:
|
|
686
|
+
entry["env"] = {"AAF_PROBE_PYTHON": str(python_path)}
|
|
687
|
+
return entry
|
|
688
|
+
|
|
689
|
+
|
|
669
690
|
def generate_manual_config(python_path, server_path, api_path, lib_path):
|
|
670
691
|
"""Generate config snippets for manual setup."""
|
|
671
692
|
entry = build_server_entry(python_path, server_path, api_path, lib_path)
|
|
672
693
|
zed_entry = build_zed_entry(python_path, server_path, api_path, lib_path)
|
|
673
694
|
opencode_entry = build_opencode_entry(python_path, server_path, api_path, lib_path)
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
695
|
+
advanced = build_advanced_entry(server_path, python_path)
|
|
696
|
+
|
|
697
|
+
# Standard snippet includes BOTH servers: the live Python server and the
|
|
698
|
+
# optional Node 'advanced' server (file-level, no Resolve). Drop the
|
|
699
|
+
# advanced entry if you only want live control.
|
|
700
|
+
standard = json.dumps({"mcpServers": {
|
|
701
|
+
"davinci-resolve": entry,
|
|
702
|
+
"davinci-resolve-advanced": advanced,
|
|
703
|
+
}}, indent=2)
|
|
704
|
+
vscode_fmt = json.dumps({"servers": {
|
|
705
|
+
"davinci-resolve": entry,
|
|
706
|
+
"davinci-resolve-advanced": advanced,
|
|
707
|
+
}}, indent=2)
|
|
677
708
|
zed_fmt = json.dumps({"context_servers": {"davinci-resolve": zed_entry}}, indent=2)
|
|
678
709
|
opencode_fmt = json.dumps({"mcp": {"davinci-resolve": opencode_entry}}, indent=2)
|
|
679
710
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "davinci-resolve-mcp",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.59.0",
|
|
4
4
|
"description": "NPM bootstrapper for the DaVinci Resolve MCP Server.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Samuel Gursky <samgursky@gmail.com>",
|
|
@@ -14,11 +14,32 @@
|
|
|
14
14
|
},
|
|
15
15
|
"type": "module",
|
|
16
16
|
"bin": {
|
|
17
|
-
"davinci-resolve-mcp": "./bin/davinci-resolve-mcp.mjs"
|
|
17
|
+
"davinci-resolve-mcp": "./bin/davinci-resolve-mcp.mjs",
|
|
18
|
+
"davinci-resolve-advanced-mcp": "./bin/davinci-resolve-advanced-mcp.mjs"
|
|
19
|
+
},
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
22
|
+
"adm-zip": "^0.5.16",
|
|
23
|
+
"fast-xml-parser": "^5.7.3",
|
|
24
|
+
"fzstd": "^0.1.1",
|
|
25
|
+
"jszip": "^3.10.1",
|
|
26
|
+
"uuid": "^9.0.0",
|
|
27
|
+
"zod": "^3.25.76",
|
|
28
|
+
"zstd-codec": "^0.1.5"
|
|
29
|
+
},
|
|
30
|
+
"optionalDependencies": {
|
|
31
|
+
"better-sqlite3": "^11.0.0",
|
|
32
|
+
"js-yaml": "^4.1.0",
|
|
33
|
+
"pg": "^8.11.0",
|
|
34
|
+
"sharp": "^0.33.0"
|
|
18
35
|
},
|
|
19
36
|
"files": [
|
|
20
37
|
"bin/",
|
|
21
38
|
"src/**/*.py",
|
|
39
|
+
"resolve-advanced/server/**/*.mjs",
|
|
40
|
+
"resolve-advanced/vendor/**",
|
|
41
|
+
"resolve-advanced/package.json",
|
|
42
|
+
"resolve-advanced/README.md",
|
|
22
43
|
"docs/**/*.md",
|
|
23
44
|
"docs/reference/resolve_scripting_api.txt",
|
|
24
45
|
"examples/**/*.md",
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
# davinci-resolve-advanced-mcp
|
|
2
|
+
|
|
3
|
+
The **beyond-the-API** half of `davinci-resolve-mcp`: a Node MCP server that authors and edits
|
|
4
|
+
DaVinci Resolve **files** (`.drp` / `.drt` / `.drx`) and applies DB/XML-level changes (Fairlight
|
|
5
|
+
routing, offline-reference, conform, color-group grade read) — **with no DaVinci Resolve running.**
|
|
6
|
+
|
|
7
|
+
It ships as a second `bin` inside the `davinci-resolve-mcp` npm package (one install, two servers):
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
bin/davinci-resolve-mcp.mjs → Python, live, sanctioned scripting API (drives Resolve)
|
|
11
|
+
bin/davinci-resolve-advanced-mcp.mjs → Node, beyond-API file/DB authoring (no Resolve required) [this]
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Runs cloud or local — the file tools never touch Resolve.
|
|
15
|
+
|
|
16
|
+
## Two ways to use it
|
|
17
|
+
|
|
18
|
+
- **As an MCP server** (the bin above) — point any MCP client at it.
|
|
19
|
+
- **As a library** — `import` the engine directly. The package exposes a public API surface
|
|
20
|
+
(`server/lib.mjs`, wired via `package.json` `main`/`exports`), grouped as **codec** (offline
|
|
21
|
+
`.drp/.drt/.drx`), **grading** (deterministic compute cores), **pipeline** (the DB-as-truth
|
|
22
|
+
foundation), **tools** (the MCP tool handlers), and **mcp** (the stdio server entry). The MCP
|
|
23
|
+
server is a thin shell over these same exports.
|
|
24
|
+
|
|
25
|
+
## Usage
|
|
26
|
+
|
|
27
|
+
**As a library — a grading core.** You extract display-referred frames per clip (ffmpeg, your
|
|
28
|
+
call); the engine computes the grade offline and writes an apply-ready `.drx`. Applying it in
|
|
29
|
+
Resolve (via the scripting API) is the caller's job.
|
|
30
|
+
|
|
31
|
+
```js
|
|
32
|
+
import { computeSkinMatch } from 'davinci-resolve-advanced-mcp';
|
|
33
|
+
|
|
34
|
+
const { grades, report, warnings } = await computeSkinMatch(
|
|
35
|
+
[
|
|
36
|
+
{ id: 'B_0008', png: '/frames/B_0008.png', group: 'Guest' },
|
|
37
|
+
{ id: 'C_0016', png: '/frames/C_0016.png', group: 'Guest' },
|
|
38
|
+
],
|
|
39
|
+
{ outDir: '/out/skin' },
|
|
40
|
+
);
|
|
41
|
+
// grades[].drxPath → apply in Resolve; warnings flag over-corrections; low-skin clips are skipped, not faked.
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**The DB-as-truth pipeline** (via the `pipeline` tool handler — same API the MCP server exposes).
|
|
45
|
+
Compile YAML specs into the canonical DB, plan a run, execute a deterministic stage (you supply the
|
|
46
|
+
tool inputs), then read decoded state back and check drift:
|
|
47
|
+
|
|
48
|
+
```js
|
|
49
|
+
import { pipelineTool } from 'davinci-resolve-advanced-mcp';
|
|
50
|
+
const call = (action, args) => pipelineTool.handler({ action, args });
|
|
51
|
+
|
|
52
|
+
const dbPath = '/proj/project.db';
|
|
53
|
+
const now = new Date().toISOString(); // the tool takes an explicit timestamp
|
|
54
|
+
|
|
55
|
+
await call('compile', { dbPath, now, yamlDir: '/proj/specs' }); // YAML → resolved entity tree
|
|
56
|
+
const { runId, stages } = await call('plan', { dbPath, episodeSlug: 'e012', now });
|
|
57
|
+
|
|
58
|
+
// Deterministic stages run now (you pass the tool args); Resolve-apply stages return an action plan.
|
|
59
|
+
await call('execute_stage', {
|
|
60
|
+
dbPath, runId, stageIndex: 0, now,
|
|
61
|
+
toolArgs: { tool: 'gamut_legal', args: { clips: [{ id: 'f', png: '/frames/f.png' }] } },
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
// Pull decoded actual state up and flag intent↔actual drift.
|
|
65
|
+
await call('readback', {
|
|
66
|
+
dbPath, entitySlug: 'e012.group.Host', now,
|
|
67
|
+
facts: { 'look.lut': 'Kodak_5219' }, pushFields: [{ field: 'look.lut' }],
|
|
68
|
+
});
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Tools (18)
|
|
72
|
+
|
|
73
|
+
`drp` · `drt` · `drx` · `offline_ref` · `conform` · `color_trace` · `fusion` · `audio` ·
|
|
74
|
+
`audio_plan` · `fairlight` · `project_db` · `project_read` · `pipeline` · `capabilities` ·
|
|
75
|
+
`deliverable` · `media` · `editorial` · `provenance`
|
|
76
|
+
|
|
77
|
+
Each dispatches on an `action`. Highlights:
|
|
78
|
+
|
|
79
|
+
- **`drx`** — per-clip grade (`.drx`) codec: `parse`, `generate`, `generate_from_request`,
|
|
80
|
+
`export_cdl`, `merge`, plus the **grading/QC catalog** below.
|
|
81
|
+
- **`drp` / `drt`** — project / timeline file authoring + editing + grade injection + structural diff.
|
|
82
|
+
- **`conform`** — offline conform/relink QC engine (frame-oracle math, not filename matching),
|
|
83
|
+
reverse-clip DB repair, sequence lineage store + diff, per-cut frame QC.
|
|
84
|
+
- **`color_trace`** — cross-project clip matching → a trace plan for carrying grades across a re-conform.
|
|
85
|
+
- **`project_read` / `project_db`** — read/patch the Resolve project DB (SQLite or Postgres).
|
|
86
|
+
- **`pipeline`** — the DB-as-truth pipeline foundation (see below).
|
|
87
|
+
- **`deliverable`** — deliverable QC / compliance: `deliverable_qc` (ffprobe a render vs its spec →
|
|
88
|
+
pass/fail per field), `loudness_qc` (ebur128 LUFS/true-peak/LRA), `reframe_blanking_check`,
|
|
89
|
+
`conform_completeness`, `re_delivery_diff`, `render_manifest` (build/reconcile), `expand_deliverable`
|
|
90
|
+
(texted/textless/stems/slate/leader entities). Report-only (`gate: review` — never auto-pass-clear).
|
|
91
|
+
- **`media`** — media front-end / AE: `ingest_verify` (hash seal/verify/dupes-by-hash), `media_inventory`
|
|
92
|
+
(fps/codec/colorspace/TC + card gaps), `sync` (TC picture↔sound + drift/MOS), `relink_manifest`,
|
|
93
|
+
`rename_plan` (refuses camera originals) / `reel_normalize`, `turnover_package`, `project_hygiene`.
|
|
94
|
+
- **`editorial`** — editorial integrity: `parse_interchange` (EDL/OTIO/XMEML natively, AAF via pyaaf2,
|
|
95
|
+
**.prproj via gunzip+XML** — pass the file PATH for the binary ones), `list_sequences` (one picker entry
|
|
96
|
+
point across xml/edl/otio/drt/drp/aaf/prproj), `convert_to_interchange` (author OTIO/EDL/DRT that Resolve
|
|
97
|
+
imports, from events or a parsed source — **the .prproj→Resolve conform bridge**, no Premiere needed;
|
|
98
|
+
editorial timing/cuts/transitions/speed carry, per-clip effects/color do not),
|
|
99
|
+
`turnover_changelist` (moved/retimed/replaced/new/gone + timing silent-lie guards), `conform_manifest`,
|
|
100
|
+
`marker_roundtrip`.
|
|
101
|
+
- **`provenance`** — provenance / audit: `gallery_lineage`, `grade_provenance` ("why is this graded this
|
|
102
|
+
way"), `cdl_export` (+ `cdl_diff`, round-trip asserted), `revision_tracking`, `episode_report`.
|
|
103
|
+
|
|
104
|
+
### Grading / QC catalog (`drx` actions — all local, deterministic, no Resolve)
|
|
105
|
+
|
|
106
|
+
Frame-stats → arithmetic → `.drx` grade. Frame extraction and grade **apply** are the caller's job;
|
|
107
|
+
these compute the grade offline. Each carries guards that refuse to fabricate a match rather than emit
|
|
108
|
+
a silent no-op.
|
|
109
|
+
|
|
110
|
+
| Action | What |
|
|
111
|
+
|---|---|
|
|
112
|
+
| `level_clips` | within-camera exposure/WB drift → a group hero (whole-frame mean) |
|
|
113
|
+
| `skin_match` | cross-camera skin-tone cohesion (skin-gated mean; throws on log/wrong-space frames) |
|
|
114
|
+
| `shot_match` | b-roll cohesion — gray-world `neutralize` or `hero` match (per-channel median) |
|
|
115
|
+
| `white_balance_match` | WB from a known-neutral patch (gray card) — accurate, not gray-world guess |
|
|
116
|
+
| `contrast_normalize` | match black/white points to a hero (affine gain+offset) |
|
|
117
|
+
| `match_to_reference` | affine mean-std transfer toward an approved still (skin-line gated, luma-preserve) |
|
|
118
|
+
| `saturation_match` | skin/overall saturation cohesion toward a hero |
|
|
119
|
+
| `black_balance` | neutralize a shadow colour cast (p1 black point, offset-only) |
|
|
120
|
+
| `cdl_io` | import ASC CDL (`.cc`/`.ccc`/`.cdl`) → `.drx` |
|
|
121
|
+
| `grade_transfer` | lossless Body copy — a `.drp` group / `.drx` look → an apply-ready `.drx` |
|
|
122
|
+
| `relayout` | programmatic "Cleanup Node Graph" (the UI command has no API) — rewrite node x/y to Resolve's clean row, grade byte-preserved. Live recipe: grab → `relayout` → reset grade → apply (same-structure applies keep the old layout). Bulk whole-project sweep: `project_db` `relayout_node_graphs` |
|
|
123
|
+
| `author_look` / `carry_look` | version an approved season/host look + plan carrying it across episodes |
|
|
124
|
+
| `lut_apply` | attach a named `.cube` LUT to a node (Body-LUT write path, round-trip asserted) |
|
|
125
|
+
| `scope_read` | frame readouts: parade balance, vectorscope skin-line, black-balance, %clip/%crush + intent signals |
|
|
126
|
+
| `intent_tags` | derive L1 shot-intent tags (low_key, monochromatic, motivated_warm) to exclude from neutralize |
|
|
127
|
+
| `verify_grade` | intended vs applied `.drx` → landed/drifted/missing/unverifiable |
|
|
128
|
+
| `extract_frames` | ffmpeg display-referred frame extraction (hard log-refuse) |
|
|
129
|
+
| `gamut_legal` | broadcast-legal + hard-clip QC (measurement only, no grade emitted) |
|
|
130
|
+
|
|
131
|
+
### Pipeline foundation (`pipeline` tool — DB-as-truth)
|
|
132
|
+
|
|
133
|
+
A canonical local **SQLite project DB** is the source of truth; **YAML authoring compiles into it**
|
|
134
|
+
(4-layer inheritance: type → series → episode → deliverable, with validation); a **runner** reads the
|
|
135
|
+
resolved `pipeline:` and executes stages with gates + provenance; **readback** records decoded actual
|
|
136
|
+
state and flags intent↔actual **drift**. Deterministic stages run in Node; Resolve-apply stages emit an
|
|
137
|
+
action plan for the live agent (Node can't drive Resolve). Actions: `compile`, `list_entities`,
|
|
138
|
+
`get_entity`, `ancestry`, `catalog`, `plan`, `execute_stage`, `approve_gate`, `mark_applied`,
|
|
139
|
+
`readback`, `get_run`, `list_runs`, `provenance`, `drift`.
|
|
140
|
+
|
|
141
|
+
## Layout
|
|
142
|
+
- `vendor/` — vendored, MIT copies of the format libraries (CommonJS):
|
|
143
|
+
- `drp-format/` — `.drp` project authoring/editing + grade injection + structural diff
|
|
144
|
+
- `drt-format/` — `.drt` timeline authoring (delegates to drp-format)
|
|
145
|
+
- `drx-codec/` — per-clip DRX grade parse/generate, CDL export, node-tree/curves/qualifier/window codecs
|
|
146
|
+
- `drx-parameters/` — calibrated parameter ranges/ids consumed by drx-codec
|
|
147
|
+
- `conform-qc/` — the offline conform/relink QC engine
|
|
148
|
+
- `server/` — the MCP server, tools, grading cores, and the DB-as-truth pipeline foundation
|
|
149
|
+
- `test/` — offline unit suite (`npm test`); `.prettierrc.json` — formatting config
|
|
150
|
+
- `package.json` — manifest; intentionally CommonJS (no `"type": "module"`) so the vendored libs load
|
|
151
|
+
under the repo's `type: module` root.
|
|
152
|
+
|
|
153
|
+
## Requirements & optional features
|
|
154
|
+
|
|
155
|
+
The **core is pure-JS / MIT with zero required native modules or bundled binaries** — `drp`, `drt`,
|
|
156
|
+
`drx` (incl. the grading catalog needs `sharp`, see below), `offline_ref`, `fusion`, `audio_plan`,
|
|
157
|
+
`conform` (core), `color_trace`, `project_read`, `capabilities` all work out of the box, cloud or local.
|
|
158
|
+
|
|
159
|
+
A few features need something the **user installs themselves** (call the `capabilities` tool for live
|
|
160
|
+
status + install hints):
|
|
161
|
+
|
|
162
|
+
| Feature | Needs | Why not bundled / Install |
|
|
163
|
+
|---|---|---|
|
|
164
|
+
| `audio` (split/trim/convert), conform frame ops | **ffmpeg + ffprobe on PATH** | FFmpeg binaries are **GPL** — bundling them would taint this MIT package. `brew install ffmpeg` / `apt install ffmpeg` / `choco install ffmpeg`. |
|
|
165
|
+
| grading/QC catalog, `conform.verify` (frame compare) | `sharp` (optional) | native module; `npm i sharp` |
|
|
166
|
+
| `pipeline` (project DB), `fairlight` live-DB path, conform lineage/reverse | `better-sqlite3` (optional) | native module; `npm i better-sqlite3`. (The `.drp`-zip Fairlight path needs none.) |
|
|
167
|
+
| YAML authoring (`pipeline compile` from a YAML dir) | `js-yaml` (optional) | pure JS; `npm i js-yaml` |
|
|
168
|
+
| `editorial` AAF offline preview (`parse_interchange` format `aaf`, `list_sequences` on `.aaf`) | **Python 3 + `pyaaf2`** | AAF is binary; no trustworthy pure-JS reader. The server shells out to `aaf_probe.py` (pure-Python `aaf2`). `pip install pyaaf2`. Without it, AAF **honest-refuses** with a convert-upstream hint (EDL/OTIO/`.drt` need nothing). Live AAF import is on the Python `davinci-resolve` MCP (Resolve reads AAF natively). |
|
|
169
|
+
|
|
170
|
+
Missing features fail with a clear, actionable message rather than crashing; the server logs a one-line
|
|
171
|
+
"needs setup" summary to stderr at startup.
|
|
172
|
+
|
|
173
|
+
## Provenance & license
|
|
174
|
+
Vendored libraries are clean offline format-interop and deterministic compute code: no secrets, no
|
|
175
|
+
external service coupling, no network calls, no LLM dependency. Where a feature can take a second
|
|
176
|
+
opinion from an AI (the conform engine's advisory `VisionValidator`), it does so only through a
|
|
177
|
+
host-injected adapter — the engine ships the interface and a deterministic fake, never a concrete
|
|
178
|
+
LLM client. Licensed **MIT** under this repo's root `LICENSE` (Copyright DaVinci Resolve MCP
|
|
179
|
+
Contributors and Bradford Operations LLC).
|
|
180
|
+
|
|
181
|
+
> The bundled `vendor/drp-format/templates/media-clip-h264.drp` uses a neutral synthetic source
|
|
182
|
+
> (`/Media/sample.mp4`) — scrubbed of any personal path / third-party clip reference.
|
|
183
|
+
|
|
184
|
+
DRX write paths were calibrated live against DaVinci Resolve 19 Studio (2026-07): primaries use one
|
|
185
|
+
unified `space: 'ui' | 'drx'` value-space flag (panel units by default), and the structural writes —
|
|
186
|
+
power windows (circle/linear/gradient + polygon/curve vertex shapes), HSL/RGB/luma qualifiers, HDR
|
|
187
|
+
zones, ColorSlice globals, blur/key/motion-effects palettes, sat/lum-axis HSL curves, and hue-axis
|
|
188
|
+
HSL curves (single- **and** multi-band, via a canonical bezier-cage emitter that replicates Resolve's
|
|
189
|
+
own serialization; edge-on-band-slot geometry passes through raw) — are panel-readback-verified.
|
|
190
|
+
OFX/ResolveFX plugin params are read AND write verified (params are self-describing
|
|
191
|
+
on the wire; writes render-confirmed live — see the ResolveFX registry for the full
|
|
192
|
+
plugin universe, measured ranges, and per-plugin enum vocabularies). HDR zone
|
|
193
|
+
DEFINITIONS (custom Max Range/falloff), Motion Effects scales, and the tracker-data
|
|
194
|
+
blob are decoded and (where applicable) write-verified. Still experimental to write:
|
|
195
|
+
Color Warper on Resolve 19 (the pin-list wire format is R21's). Per-control status
|
|
196
|
+
lives in `vendor/drx-parameters/CALIBRATION-STATUS.md` — capabilities are flagged
|
|
197
|
+
honestly, not overclaimed.
|
|
198
|
+
The grading catalog and pipeline foundation are unit-tested offline; their Resolve **apply** is the
|
|
199
|
+
caller's job and is validated live separately.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "davinci-resolve-advanced-mcp",
|
|
3
|
+
"version": "0.0.0-dev",
|
|
4
|
+
"private": true,
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"description": "Beyond-the-API DaVinci Resolve MCP — offline .drp/.drt/.drx authoring/editing. Sibling Node server to the Python davinci-resolve-mcp. Dev-local package.json; deps promote to the repo root at packaging.",
|
|
7
|
+
"comment_commonjs": "Intentionally NO \"type\": \"module\" — the vendored libs are CommonJS (require()). The repo root is type:module, so this nested manifest scopes resolve-advanced/**/*.js back to CommonJS.",
|
|
8
|
+
"comment_exports": "Public library surface so a downstream consumer can import the codec/grading/pipeline API, not just spawn the MCP bin. `.` = the lib barrel; `./mcp` = the stdio server entry. Still private:true — publish name/registry + un-privating are a parked decision.",
|
|
9
|
+
"main": "./server/lib.mjs",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": "./server/lib.mjs",
|
|
12
|
+
"./mcp": "./server/index.mjs",
|
|
13
|
+
"./package.json": "./package.json"
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"server/**/*.mjs",
|
|
17
|
+
"vendor/**",
|
|
18
|
+
"README.md"
|
|
19
|
+
],
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
22
|
+
"adm-zip": "^0.5.16",
|
|
23
|
+
"fast-xml-parser": "^5.7.3",
|
|
24
|
+
"fzstd": "^0.1.1",
|
|
25
|
+
"jszip": "^3.10.1",
|
|
26
|
+
"uuid": "^9.0.0",
|
|
27
|
+
"zod": "^3.25.76",
|
|
28
|
+
"zstd-codec": "^0.1.5"
|
|
29
|
+
},
|
|
30
|
+
"optionalDependencies": {
|
|
31
|
+
"better-sqlite3": "^11.10.0",
|
|
32
|
+
"js-yaml": "^4.3.0",
|
|
33
|
+
"pg": "^8.22.0",
|
|
34
|
+
"sharp": "^0.33.0"
|
|
35
|
+
},
|
|
36
|
+
"peerDependenciesMeta": {
|
|
37
|
+
"_comment": "audio (split/trim/convert) + conform frame ops need system ffmpeg/ffprobe on PATH (NOT bundled — FFmpeg binaries are GPL; this package stays MIT). Install ffmpeg yourself: brew install ffmpeg."
|
|
38
|
+
},
|
|
39
|
+
"scripts": {
|
|
40
|
+
"test": "node --test vendor/drp-format/__tests__/ vendor/drt-format/__tests__/ vendor/drx-codec/__tests__/ test/",
|
|
41
|
+
"test:libs": "node --test vendor/drp-format/__tests__/ vendor/drt-format/__tests__/ vendor/drx-codec/__tests__/",
|
|
42
|
+
"test:server": "node --test test/"
|
|
43
|
+
},
|
|
44
|
+
"engines": {
|
|
45
|
+
"node": ">=18.0.0"
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"prettier": "^3.9.4"
|
|
49
|
+
}
|
|
50
|
+
}
|