This is an action bridge, not another editor
The tempting way to integrate an Agent with a video editor is to build a second editing surface around the model: another panel, another representation of tracks, another set of partial rules. That is also how three versions of the same product logic begin to drift apart. The plugin takes a thinner position. DeepSeek Harness owns discovery, validation, cancellation and model-facing results. The plugin launches Timeline Studio's command runner. Timeline Studio owns project parsing, edit validation, transactional writes and rendering.
The plugin is mounted inside Harness and does not add a separate visual panel. It also bundles the edit-timeline-studio Agent Skill, so the model receives both the tools and the operating guidance required to use them responsibly. The browser editor remains the place for visual preview, WebGPU features and composition that still needs direct human judgment.
Seven tools are enough when their boundaries are honest
The model-facing API is deliberately small. Four read tools inspect a project, track, clip or transcript. One previews a semantic project diff. One applies a batch. One renders. That separation gives the Agent a predictable rhythm: understand before proposing, preview before writing and verify after changing.
A dry run matters only if it exercises the same reducers and revision rules as the real write. Here, project_diff does exactly that. It is not a summary generated from a different interpretation of the plan.
The transaction begins with revision and identity
Editing is retry-heavy. An Agent call may time out after the command has already written a result. A user may change the project between inspection and apply. Without explicit identity, a retry can move the same clip twice; without a base revision, an apparently valid plan can overwrite a newer edit. The plugin uses both.
A successful non-empty operation batch increments the project revision once. Reusing an already-applied operation ID is an idempotent no-op. A stale base revision carrying new operations fails. If validation or any operation fails, the batch does not leave a half-edited archive behind. Source projects are not overwritten by default; a new editable project becomes the result.
dsh plugin --profile web add "github:MartinDelophy/dsh-timeline-studio-plugin#main" TIMELINE_STUDIO_ROOT=/absolute/path/to/web_player TIMELINE_PROJECTS_ROOT=/absolute/path/to/projects dsh --profile web
The filesystem boundary is part of the product
A path argument is not permission. The plugin's allowedRoots setting is a real filesystem boundary for project, plan, output and asset paths. The integration resolves real paths, protects nested references and rejects symlink escapes. Output parents are resolved as well, so a path that looks local cannot quietly redirect a write outside the authorized workspace.
Cancellation crosses the same boundary. When Harness cancels a tool call, the signal is propagated to the Timeline Studio child process instead of leaving an orphaned render consuming resources in the background. Errors are converted into structured tool results rather than disguised as successful prose.
A render is not true until it is inspected
The initial command renderer targets a documented portable subset: Visuals, Voiceover and Music. It verifies the resulting H.264/AAC MP4 container, dimensions, duration and audio stream. If the project uses visible features the renderer cannot reproduce, it rejects the composition instead of returning a plausible but incomplete video. Rich browser-only composition stays in Timeline Studio.
The end-to-end path creates a real .timeline project, inspects revision zero, previews an import and 9:16 conversion without writes, applies the batch at revision one, inspects tracks, clips and transcript data, renders a real vertical MP4 and verifies it with ffprobe. It also rejects an out-of-root project. The documented environment was last verified on August 15, 2026 with Node 24.11.1, Harness packages 0.1.0-rc.6, Cordis 4.0.1 and FFmpeg 8.0.1.
The durable outcome is an editable project
The most important design choice is not technical. The plugin does not reduce video editing to “prompt in, MP4 out.” The rendered video is a deliverable; the versioned .timeline archive remains the record a person can reopen, review and change. That is why inspection, diff and apply are first-class tools instead of hidden implementation steps.
The result is less magical and more useful: an Agent that can explain what it intends to change, prove that the plan fits the current revision, write a new editable project and return a render that has actually been checked.