Fish Audio
s2.1-pro-free
Required for new tutorial narration; supplied audio supports offline replay. Uses only s2.1-pro-free, with measured phrase captions and no paid fallback.
FISH_STUDIO_APIKEYFISH_API_KEYCompose a polished proof-first 16:9 Wiggly tutorial from real browser, coding-agent, narration, caption, checkpoint, and finished-result ingredients.
By Wiggly Studio · Updated September 2026
Before you start
s2.1-pro-free
Required for new tutorial narration; supplied audio supports offline replay. Uses only s2.1-pro-free, with measured phrase captions and no paid fallback.
FISH_STUDIO_APIKEYFISH_API_KEYOptional simultaneous publishing to YouTube, Instagram, TikTok, and X after the finished tutorial is approved.
BUFFER_API_KEYSetup, validation & inspection
Node.js >=22 · npm · FFmpeg · FFprobe · Chrome/Chromium or Remotion-managed browser · ffmpeg · ffprobe
Typical run estimate
$0 provider cost with supplied media or Fish s2.1-pro-free; coding-agent usage is separate. Paid calls require an estimate and approval.
Estimates describe the saved recipe, not a price guarantee. Confirm current provider pricing and approve any spend before generation. Your coding agent may have its own fees or usage limits. Never paste API keys into chat.
Included assets
The published package includes its agent instructions, input contract, and quality rules, plus 4 viewable asset references below. Reference media teaches the recipe; it is not a new result for your input.

Signature proof-first and browser-step background.

Signature coding-agent and terminal-step background.

Signature closing and final-result background.

Both public proof videos are direct outputs of runtime/tutorial-video.jsx from editable ingredient JSON; the Batman proof is the canonical regression target.
Examples
1 saved examples for this recipe—not 1 separate Repos. Each example keeps its original version and provenance.
From input to output
From the published pipeline.json. The agent follows the packaged runtime and its approval gates.
Step 01 · approval
Agent asks which format, finds its real result, scripts the walkthrough, and captures actual browser/terminal actions
Step 02
Deterministic 5-law retention & proof-first script linter report
Step 03 · provider
Fish s2.1-pro-free narration and measured phrase captions; supplied-audio replay also supported
Step 04
Validated editable timeline; pre-rendered source masters rejected
Step 05
Signature Wiggly tutorial rendered by runtime/tutorial-video.jsx
Step 06 · approval
Metadata, hashes, every-step contact sheet, and explicit audiovisual review record
Step 07 · approval
Optional multi-platform publishing receipt for approved YouTube, Instagram, TikTok, and X posts with zero secret leakage
Proof & quality
Two different Wiggly Formats exercise one ingredient-driven compositor without source masters or runtime edits.
Receipts bind input, runtime, and output hashes; contact sheets show the packaged signature features.
Both public proof videos are direct outputs of runtime/tutorial-video.jsx from editable ingredient JSON; the Batman proof is the canonical regression target.

canonical regression
cross-format replay
These are the acceptance criteria in quality.json—not a claim that every pictured example passed the current version. Inspect each new output before finalizing.
Open the package
Actual files from the published v0.4.0 package. Expand any file to inspect the instructions, requirements, or evidence before sending the Repo to your agent.
# Tutorial Video v1 Tutorial Video is an executable 16:9 compositor, not a wrapper around a finished master. Give it the editable ingredients of a first-run walkthrough: format metadata, permitted browser and coding-agent captures, supplied narration tracks, timed captions, checkpoint copy, and the format's finished video. The packaged Remotion runtime directly renders the Wiggly tutorial look: - acid-lime, electric-blue, and warm-cream retro grid backgrounds; - macOS-style browser and terminal windows; - numbered step badges and a bottom progress rail; - neon checkpoint cards; - bold, timed subtitles; and - native-audio result playback before and after the walkthrough. The runtime rejects `sourceVideo`. A fresh agent cannot hand it a pre-rendered tutorial or replace the format with a generic slideshow. ## Quick start ```bash npm ci --ignore-scripts --no-audit --no-fund npm test node runner.mjs init --output=my-tutorial.json node runner.mjs validate --input=my-tutorial.json node runner.mjs render --input=my-tutorial.json --output=my-tutorial.mp4 node runner.mjs inspect --input=my-tutorial.mp4 --report=quality-report.json ``` Run those commands **one at a time**. `npm test` already performs the official smoke render; do not run `npm run smoke` beside it or immediately repeat the same preflight. Use `npm run smoke` only when you want the smoke by itself. Remotion also needs to bind a temporary localhost port. In a sandboxed coding agent, grant that local browser/port permission before the first `npm test` or `render` command. This is local process access—not internet or a provider call. `doctor` reports `localhostPort: true` when the permission is ready. Use `examples/batman-arkham-first-run/input.json` and `examples/animal-conversations-compositor/input.json` as complete examples. All media paths are relative to `media/`, even when the input JSON lives in a different directory. The bundled examples are immutable proofs and may be rendered unchanged when a user asks to reproduce them. For a new tutorial, run `init`, copy new assets under `media/runs/<name>/`, and edit the new input—not an example in place. ## Start with a target Tell your agent which Wiggly Format to teach. It follows `references/preparation.md` to find the result, capture real actions, write the script, and generate narration using Fish Audio `s2.1-pro-free`. It asks one short question at a time when needed. Configure `FISH_STUDIO_APIKEY` or `FISH_API_KEY` locally for new narration; no paid model is selected. `runner.mjs make` uses the strict Fish path in `runtime/voice.mjs`; the lower-level `runtime/narrate.mjs` command takes a narration plan and produces measured narration/caption ingredients. Captures use your coding agent's browser or recording tools. Supplied audio still allows offline replay. ## Ingredients the agent prepares 1. Format name, promise, public URL, and output label. 2. Four to fourteen tutorial steps totaling 12–240 seconds. 3. At least one permitted browser capture and one permitted terminal/coding- agent capture, with provenance. 4. At least two generated or supplied narration audio tracks and their reviewed timed caption phrases. 5. At least one neon checkpoint and exactly one final-result step that keeps the result video's native audio. 6. Optional supplied music long enough for the full tutorial. Music is muted during native-result sections. Copy files beneath `media/`, declare `authorized: true`, and write meaningful `provenance` for each one. The validator refuses missing, external, symlinked, oversized, or too-short media; it never silently loops or freezes a clip. ## Agent workflow 1. Read `SKILL.md`, the contracts, and a complete example. Run commands one at a time; concurrent Remotion commands can contend for local browser ports. 2. Confirm permission and provenance for every capture, audio file, and result. 3. Draft the tutorial as ingredient steps. Show the result first; use plain verbs such as choose, copy, send, render, inspect, and watch. 4. Put the media under `media/` and validate before spending render time. If `npm test` passed, do not run a redundant standalone smoke before the target. 5. Render through `runner.mjs`; do not duplicate or rewrite the compositor. 6. Inspect the output and contact sheet. A human must still watch and hear the entire output before finalization. `inspect` reads the adjacent render receipt and samples the midpoint of every declared ingredient step, so short browser or terminal steps cannot disappear between evenly spaced screenshots. After complete playback, copy `fixtures/creative-review.example.json`, record the reviewer decision, and run: ```bash node runner.mjs finalize --input=my-tutorial.mp4 --report=quality-report.json \ --review=creative-review.json --output=delivery.json ``` ## Cost and boundaries The compositor and offline tests make **zero provider calls**. New narration uses the packaged Fish path, pinned to `s2.1-pro-free`; $0 under the provider's fair-use limits. A key and selected voice are required. If Fish is unavailable, the real run stops with a clear error—there is no OS-voice, sine-wave, or paid fallback. Local dependency setup and rendering do not consume media-model credits. Coding-agent usage is separate. If an agent wants to generate music, images, or video with a paid service, it must first show a per-provider estimate and receive explicit user approval. URL downloading and screen capture use the host agent's tools and the preparation recipe; narration and measured caption assembly are implemented in the Repo. The two bundled proofs were rendered by this same runtime from different JSON inputs. The Batman proof demonstrates the recovered visual identity against the exact format that exposed the old shell; the Animal Conversations proof shows that the compositor generalizes without code changes.
--- name: tutorial-video description: Render a proof-first Wiggly tutorial from editable browser, terminal, narration, caption, checkpoint, and finished-result ingredients using the packaged 16:9 compositor. --- # Tutorial Video Wiggly Repo (v0.4.0) Use this skill when a user wants a polished first-run tutorial for a Wiggly Format. The official renderer is `runner.mjs` plus `runtime/tutorial-video.jsx`. Never replace it with slides, a second renderer, or a pre-rendered master. ## Conversation: keep it easy Report the manifest version in one short sentence. If the target is unknown, ask only: “Which Wiggly format should this tutorial teach?” Wait for the answer. Ask one short question at a time only when a decision cannot be resolved from the target page, workspace, or available tools. Default to 16:9, a friendly narrator, and natural timing; do not force a 90-second length. Never ask the user for an asset checklist, JSON, captions, or technical setup up front. Keep progress updates to one sentence and ordinary replies under 60 words. ## Prepare the ingredients Follow `references/preparation.md` in order. The agent owns preparation: inspect the target Repo, locate its finished example, capture the real browser and terminal workflow, write concise narration, and generate it through the packaged Fish path using `s2.1-pro-free`. `runner.mjs make` uses `runtime/voice.mjs`; the lower-level measured helper is `node runtime/narrate.mjs narration-plan.json`. Fish is required for new narration; supplied audio still supports offline replay. Configure `FISH_STUDIO_APIKEY` or `FISH_API_KEY` locally. Never substitute an OS/robotic voice, a paid model, or another provider silently. ### 0.1 Retention & Proof-First Script Critique Engine (`runtime/critique.mjs`) Before rendering, run the deterministic 5-law script linter: ```bash npm run critique [path/to/input.json] # or: node runtime/critique.mjs [path/to/input.json] --json ``` The critique engine deterministically enforces the **5 Inviolable Tutorial Laws**: - **Law 1: Proof-First Opening (25 pts)** — Step 1 must be `kind: "hero"` or `"final"` with `nativeAudio: true` and no narrator voiceover (let the finished format speak for itself). - **Law 2: Imperative Action Titles (20 pts)** — Every step label must begin with a strong action verb (`See`, `Choose`, `Copy`, `Paste`, `Run`, `Inspect`, `Watch`, `Try`). - **Law 3: Zero Conversational Fluff (20 pts)** — Banned filler phrases (*"Hey guys"*, *"In this video"*, *"Without further ado"*, *"Simply click"*) are penalized. Requires concrete technical/action density. - **Law 4: Explicit Checkpoint Quality (15 pts)** — Must include at least one verified troubleshooting card (`headline`, `badge`, `eyebrow`) confirming what success looks like. - **Law 5: Narration-to-Screen Clock & Pacing (20 pts)** — Narration audio must finish within 85-90% of each step's `durationSeconds` to ensure clean transitions, with speech rate under 2.8 words/sec. A score $\ge 85$ (`PASS`) is required for release. ### 0.2 Autonomous 1-Click Pipeline (`node runner.mjs make`) To autonomously build a complete tutorial without manual screen recording or manual voiceover typing: ```bash node runner.mjs make --target=<format-slug> [--audience=creator|developer] [--skip-render] # Example: node runner.mjs make --target=mugsy-explains ``` This automated pipeline executes 5 discrete stages: 1. **Harvests** the target format's official proof MP4, renders a 16:9 format page still, and generates a dark-mode macOS terminal graphic (`runtime/harvest.mjs`). 2. **Synthesizes voiceover** audio and computes proportional microsecond subtitle timestamps (`runtime/voice.mjs`). 3. **Writes** `inputs/<target-slug>.json`. 4. **Lints** the script against the 5 Inviolable Tutorial Laws (`runtime/critique.mjs`). 5. **Renders** the official 1920x1080 MP4 through Remotion and generates a step contact-sheet inspection report (`outputs/<target-slug>-tutorial.mp4`). ## Required loop 1. Run `node runner.mjs doctor` and stop if a required local tool is missing. Run every command sequentially; never launch two Remotion commands together. If `localhostPort` is false, request permission to bind a temporary localhost port before the first render. This is local browser access, not a provider. 2. Read `input-contract.json`, `composition-contract.json`, and one complete example input. 3. Gather permitted ingredients under `media/`: the real Wiggly page, the real coding-agent or terminal flow, supplied narration, and the finished format video. Preserve authorization and provenance for each file. 4. Create an ingredient JSON with at least one browser step, one terminal step, two narrated/captioned steps, one checkpoint, and one native-audio final. 5. Run `node runner.mjs validate --input=<input.json>` before rendering. 6. Run `node runner.mjs render --input=<input.json> --output=<output.mp4>`. 7. Run `node runner.mjs inspect --input=<output.mp4> --report=<report.json>` and inspect the generated contact sheet. 8. Have a human watch and hear the entire MP4. Only then create an approval JSON from `fixtures/creative-review.example.json` and use `runner.mjs finalize`. `npm test` already includes the official smoke render. Do not also run `npm run smoke` during the same preflight; the latter is a standalone shortcut. Bundled example inputs may be rerun unchanged as proofs. For a new target, use `runner.mjs init` and edit the new input; never overwrite an included example. ## Format grammar - Open with the finished result so the value is obvious before explanation. - Use the bundled lime, blue, and cream grid backgrounds. - Put browser/terminal media inside the compositor's visible macOS window. - Keep numbered badges at the top, captions in reserved lower space, the neon checkpoint above the progress rail, and the progress rail visible throughout. - Preserve result audio in hero/final sections. Never narrate over the final. - Keep language concrete: choose a format, copy it, send it, render, inspect, and watch. ## Hard boundaries - `sourceVideo` is forbidden. Supply editable ingredients. - Do not rewrite or bypass the official compositor. - Do not claim URL download, transcription, synthetic speech, or screen capture is built into the Repo. - Do not invent permissions, provenance, captions, or narration approval. - Do not loop short media or freeze its final frame to hide missing footage. - There are no providers in this kit. Before any paid generation, show the estimate and wait for explicit approval. - Do not misread a sandbox's denied localhost port as missing media. Grant the local Remotion browser/port permission before the first render attempt. - Automated metadata and contact-sheet checks do not replace complete human audiovisual review. ## Commands ```bash npm ci --ignore-scripts --no-audit --no-fund npm test node runner.mjs init --output=my-tutorial.json node runner.mjs validate --input=my-tutorial.json node runner.mjs render --input=my-tutorial.json --output=my-tutorial.mp4 node runner.mjs inspect --input=my-tutorial.mp4 --report=quality-report.json ``` ## Multi-Platform Social Distribution (Optional) When a tutorial video is rendered and approved, the agent can distribute it across YouTube, Instagram, TikTok, and X via the packaged `runtime/publish.mjs` CLI or connected Buffer MCP tools: 1. **Author platform-tailored copy in `inputs/distribution.json`:** - **YouTube:** High-retention title (≤100 chars), categoryId (`27` for Education or `28` for Science & Technology). Handles standard 16:9 video or vertical Shorts automatically based on aspect ratio. - **Twitter/X:** Engaging educational hook with key takeaways (≤280 chars total). - **Instagram:** Informative caption with relevant hashtags (feed video or Reels). - **TikTok:** Engaging caption with trending tutorial tags (≤2200 chars). 2. **Dry-run validation:** ```sh node runtime/publish.mjs --dry-run inputs/distribution.json examples/animal-conversations-first-run/final.mp4 ``` 3. **Live dispatch requires explicit human sign-off:** - Confirm target channels and copy with the user (`approvalRequired: true`). - Execute with connected Buffer MCP tools or `node runtime/publish.mjs inputs/distribution.json /path/to/final.mp4`. - Generates a verified distribution receipt (`<video>.distribution.json`) with zero secret leakage.
{
"schemaVersion": 2,
"localTools": ["Node.js >=22", "npm", "FFmpeg", "FFprobe", "Chrome/Chromium or Remotion-managed browser"],
"providers": [
{
"name": "Fish Audio",
"purpose": "Required for new tutorial narration; supplied audio supports offline replay. Uses only s2.1-pro-free, with measured phrase captions and no paid fallback.",
"optional": false,
"environmentVariables": ["FISH_STUDIO_APIKEY", "FISH_API_KEY"],
"model": "s2.1-pro-free",
"pricingSource": "https://docs.fish.audio/developer-guide/models-pricing/models-overview"
},
{
"name": "Social Publisher (Buffer MCP or API)",
"purpose": "Optional simultaneous publishing to YouTube, Instagram, TikTok, and X after the finished tutorial is approved.",
"optional": true,
"environmentVariables": ["BUFFER_API_KEY"],
"pricingSource": "https://buffer.com/pricing"
}
],
"optionalTools": ["yt-dlp", "whisper.cpp"],
"paidApprovalRequired": true,
"automaticInstallation": false,
"environmentVariables": ["FFMPEG (optional)", "FFPROBE (optional)", "REMOTION_BROWSER_EXECUTABLE (optional)"],
"runtime": {"node": ">=22", "binaries": ["ffmpeg", "ffprobe"]},
"notes": [
"npm ci installs the pinned local Remotion runtime; this is dependency setup, not a paid media/model call.",
"The compositor makes zero provider calls and works entirely from authorized local ingredients.",
"Remotion binds a temporary localhost port for its local browser. Sandboxed agents must request that local permission before the first test or render; this is not internet access.",
"New narration uses runtime/voice.mjs or runtime/narrate.mjs with Fish s2.1-pro-free ($0 subject to fair-use limits). A configured key and selected voice ID are required. Errors stop without automatic retries or paid fallback.",
"The host agent captures the real browser/terminal workflow using the packaged instructions; optional yt-dlp or whisper.cpp can help prepare permitted source media.",
"Social publishing is optional, requires explicit approval of channels and copy, and is never called by render, smoke, or verification.",
"Never invoke a paid provider without showing an estimate and receiving explicit user approval."
]
}
{
"schemaVersion": 2,
"stages": [
{"id": "ingredients", "output": "Agent asks which format, finds its real result, scripts the walkthrough, and captures actual browser/terminal actions", "approvalRequired": true, "providerCall": false, "paid": false},
{"id": "critique-script", "output": "Deterministic 5-law retention & proof-first script linter report", "approvalRequired": false, "providerCall": false, "paid": false},
{"id": "narration", "output": "Fish s2.1-pro-free narration and measured phrase captions; supplied-audio replay also supported", "approvalRequired": false, "providerCall": true, "paid": false},
{"id": "validation", "output": "Validated editable timeline; pre-rendered source masters rejected", "approvalRequired": false, "providerCall": false, "paid": false},
{"id": "official-composition", "output": "Signature Wiggly tutorial rendered by runtime/tutorial-video.jsx", "approvalRequired": false, "providerCall": false, "paid": false},
{"id": "inspection", "output": "Metadata, hashes, every-step contact sheet, and explicit audiovisual review record", "approvalRequired": true, "providerCall": false, "paid": false},
{"id": "distribute", "output": "Optional multi-platform publishing receipt for approved YouTube, Instagram, TikTok, and X posts with zero secret leakage", "approvalRequired": true, "providerCall": false, "paid": false}
]
}
{
"schemaVersion": 2,
"fixed": [
{"localPath": "media/fixed/grid-acid-lime-v1.png", "label": "Acid-lime retro grid", "purpose": "Signature proof-first and browser-step background."},
{"localPath": "media/fixed/grid-electric-blue-v1.png", "label": "Electric-blue retro grid", "purpose": "Signature coding-agent and terminal-step background."},
{"localPath": "media/fixed/grid-warm-cream-v1.png", "label": "Warm-cream retro grid", "purpose": "Signature closing and final-result background."}
],
"proofInputs": [
{"input": "examples/batman-arkham-first-run/input.json", "output": "examples/batman-arkham-first-run/final.mp4", "purpose": "Cross-format proof that directly addresses the failed blind-agent Batman run."},
{"input": "examples/animal-conversations-compositor/input.json", "output": "examples/animal-conversations-compositor/final.mp4", "purpose": "Second distinct input through the same compositor."}
],
"sourceReference": {
"exampleOutput": "examples/batman-arkham-first-run/final.mp4",
"referenceInput": "examples/batman-arkham-first-run/poster.jpg",
"referenceNote": "Both public proof videos are direct outputs of runtime/tutorial-video.jsx from editable ingredient JSON; the Batman proof is the canonical regression target.",
"verification": "Receipts bind input, runtime, and output hashes; contact sheets show the packaged signature features."
},
"policy": "All variable media is explicitly authorized with provenance in its input JSON. No provider-generated assets are created by the runtime."
}
{
"schemaVersion": 2,
"automatic": {"width": 1920, "height": 1080, "fps": 30, "durationSeconds": "sum of ingredient steps", "durationToleranceSeconds": 0.12, "videoCodec": "h264", "audioCodec": "aac", "audioRequired": true},
"technicalGates": [
"schemaVersion 2 ingredient contract passes",
"sourceVideo master is rejected",
"required browser, terminal, narration, caption, checkpoint, and final ingredients exist",
"authorized local media remains inside media/ and is long enough",
"1920x1080 H.264/AAC output matches the ingredient timeline",
"receipt binds input, runtime, and output hashes",
"providerCalls equals zero"
],
"visualGates": ["retro grid visible", "macOS window chrome visible", "numbered step badge visible", "neon checkpoint readable", "captions readable", "progress rail visible", "native result is framed without distortion"],
"humanReview": {"required": true, "criteria": ["watch and hear the entire video", "narration is intelligible", "captions match speech", "native result audio is preserved", "pacing feels intentional", "no generic slide-deck substitution"]}
}
{
"schemaVersion": 2,
"purpose": "Two different Wiggly Formats exercise one ingredient-driven compositor without source masters or runtime edits.",
"canonicalContactSheet": "examples/batman-arkham-first-run/quality-report-contact-sheet.jpg",
"examples": [
{"id": "batman-arkham-first-run", "title": "Batman Arkham Conversations tutorial", "role": "canonical regression", "whyItWorks": ["Tests the exact format that exposed the old empty shell", "Shows every required signature feature", "Preserves native vertical result audio", "Provider calls: 0"], "knownWeaknesses": ["Full audiovisual approval must be recorded by a human viewer."]},
{"id": "animal-conversations-compositor", "title": "Animal Conversations tutorial", "role": "cross-format replay", "whyItWorks": ["Different content and timings use the same runtime", "Uses moving browser and coding-agent captures", "Shows the same signature grammar without code changes", "Provider calls: 0"], "knownWeaknesses": ["Recovered operator-approved narration is specific to the demonstrated handoff."]}
]
}
{
"schemaVersion": 2,
"officialRuntime": "runtime/tutorial-video.jsx",
"sequence": ["proof-first", "real-wiggly-page", "coding-agent-handoff", "neon-checkpoint", "native-finished-output"],
"visual": {
"width": 1920,
"height": 1080,
"fps": 30,
"aspectRatio": "16:9",
"fixedBackgrounds": ["grid-acid-lime-v1.png", "grid-electric-blue-v1.png", "grid-warm-cream-v1.png"],
"requiredSignatureFeatures": ["retro-grid", "macOS-window-chrome", "numbered-step-badges", "neon-checkpoint-cards", "styled-subtitles", "progress-bar"]
},
"audio": {
"tutorialNarration": "Supplied per narrated step and captioned with timed phrases.",
"nativeResult": "Preserved in hero/final steps and never covered by tutorial narration.",
"music": "Optional supplied bed at <=0.2 gain; muted during native-result playback."
},
"editorial": {"proofFirst": true, "showRealBrowserAndAgent": true, "plainLanguage": true, "oneSharedCompositor": true, "noPreRenderedMaster": true}
}
{
"schemaVersion": 2,
"id": "tutorial-video",
"slug": "tutorial-video",
"title": "Tutorial Video",
"name": "Tutorial Video",
"version": "0.4.0",
"owner": "Wiggly Studio",
"status": "published",
"summary": "A real 16:9 tutorial compositor: supply format metadata, browser and agent captures, narration, captions, checkpoint copy, and the finished-format proof.",
"output": "One narrated, captioned 1920 × 1080 MP4 composed from editable ingredients with the signature Wiggly tutorial design.",
"runtime": "Local Remotion compositor plus Fish s2.1-pro-free narration and FFmpeg/FFprobe inspection; no paid provider calls.",
"canonicalSkill": "SKILL.md"
}
{
"schemaVersion": 2,
"type": "object",
"additionalProperties": false,
"forbidden": ["sourceVideo"],
"required": ["schemaVersion", "title", "audience", "format", "steps"],
"properties": {
"schemaVersion": {"const": 2},
"title": {"type": "string", "minLength": 1, "maxLength": 80},
"audience": {"type": "string", "minLength": 1, "maxLength": 120},
"format": {"type": "object", "required": ["name", "slug", "promise", "url", "outputLabel"]},
"steps": {
"type": "array",
"minItems": 4,
"maxItems": 14,
"items": {
"required": ["id", "kind", "number", "label", "background", "durationSeconds"],
"kind": ["hero", "browser", "terminal", "media", "final", "end"],
"background": ["lime", "blue", "cream"],
"media": "Authorized image or video under media/, with provenance and optional startSeconds/fit.",
"narration": "Authorized local audio under media/, with provenance and startSeconds.",
"captions": "Ordered timed phrases relative to the step; required with narration.",
"checkpoint": "Optional neon eyebrow/headline/badge callout.",
"nativeAudio": "Allowed only for hero/final video; required for the single final step."
}
},
"music": "Optional authorized local audio under media/, long enough for the entire timeline; volume > 0 and <= 0.2."
},
"crossFieldRules": [
"sourceVideo is rejected: users supply editable ingredients, never a pre-rendered tutorial master.",
"At least one browser step, one terminal step, two narrated steps, one checkpoint, and exactly one final step are required.",
"Every local media path is relative to media/, regular, non-symlinked, <=250 MB, authorized, and carries provenance.",
"Video sections must have enough source duration; the runtime never loops or freezes short media.",
"The ingredient timeline must be 12–240 seconds and align to 30 fps."
],
"canonicalValidator": "runtime/contract.mjs"
}
{
"schemaVersion": 2,
"kit": "wiggly-tutorial-video-format-kit",
"formatVersion": "0.4.0",
"officialFormat": ".",
"canonicalSkill": "SKILL.md",
"officialRuntime": "runtime/tutorial-video.jsx",
"validator": "runtime/contract.mjs",
"install": "npm ci --ignore-scripts --no-audit --no-fund",
"check": "npm test",
"smoke": "npm run smoke (standalone only; npm test already includes this smoke and commands must run sequentially)",
"render": "node runner.mjs render --input=<input.json> --output=<output.mp4>",
"releaseAcceptance": "Two ingredient inputs use one runtime, package smoke passes, blind-agent run passes, and direct human audiovisual review remains explicit.",
"excluded": ["secrets", "node_modules", "raw unapproved third-party media", "paid provider outputs"]
}
{
"schemaVersion": 2,
"file": "MP4",
"video": {"width": 1920, "height": 1080, "aspectRatio": "16:9", "codec": "h264", "pixelFormat": "yuv420p", "fps": 30},
"audio": {"required": true, "codec": "aac", "sampleRate": 48000, "channels": 2},
"durationSeconds": {"sameAs": "sum(steps.durationSeconds)", "tolerance": 0.12, "minimum": 12, "maximum": 240.12},
"captions": "Burned in by the official compositor from each narrated step's timed caption phrases.",
"evidence": ["<output>.receipt.json", "quality-report.json", "quality-report-contact-sheet.jpg", "sha256"],
"providerCalls": 0
}
{
"name": "wiggly-tutorial-video-format-kit",
"version": "0.4.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "wiggly-tutorial-video-format-kit",
"version": "0.4.0",
"dependencies": {
"@remotion/bundler": "4.0.473",
"@remotion/renderer": "4.0.473",
"playwright-core": "^1.60.0",
"react": "19.0.1",
"react-dom": "19.0.1",
"remotion": "4.0.473",
"sharp": "^0.33.5"
}
},
"node_modules/@emnapi/core": {
"version": "1.11.3",
"resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.3.tgz",
"integrity": "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==",
"license": "MIT",
"optional": true,
"dependencies": {
"@emnapi/wasi-threads": "1.2.3",
"tslib": "^2.4.0"
}
},
"node_modules/@emnapi/runtime": {
"version": "1.11.3",
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz",
"integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==",
"license": "MIT",
"optional": true,
"dependencies": {
"tslib": "^2.4.0"
}
},
"node_modules/@emnapi/wasi-threads": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.3.tgz",
"integrity": "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==",
"license": "MIT",
"optional": true,
"dependencies": {
"tslib": "^2.4.0"
}
},
"node_modules/@esbuild/aix-ppc64": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.0.tgz",
"integrity": "sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==",
"cpu": [
"ppc64"
],
"license": "MIT",
"optional": true,
"os": [
"aix"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/android-arm": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.0.tgz",
"integrity": "sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==",
"cpu": [
"arm"
],
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/android-arm64": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.0.tgz",
"integrity": "sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/android-x64": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.0.tgz",
"integrity": "sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/darwin-arm64": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.0.tgz",
"integrity": "sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/darwin-x64": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.0.tgz",
"integrity": "sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/freebsd-arm64": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.0.tgz",
"integrity": "sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/freebsd-x64": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.0.tgz",
"integrity": "sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-arm": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.0.tgz",
"integrity": "sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==",
"cpu": [
"arm"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-arm64": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.0.tgz",
"integrity": "sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-ia32": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.0.tgz",
"integrity": "sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==",
"cpu": [
"ia32"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-loong64": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.0.tgz",
"integrity": "sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==",
"cpu": [
"loong64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-mips64el": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.0.tgz",
"integrity": "sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==",
"cpu": [
"mips64el"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-ppc64": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.0.tgz",
"integrity": "sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==",
"cpu": [
"ppc64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-riscv64": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.0.tgz",
"integrity": "sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==",
"cpu": [
"riscv64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-s390x": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.0.tgz",
"integrity": "sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==",
"cpu": [
"s390x"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-x64": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.0.tgz",
"integrity": "sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/netbsd-arm64": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.0.tgz",
"integrity": "sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"netbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/netbsd-x64": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.0.tgz",
"integrity": "sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"netbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/openbsd-arm64": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.0.tgz",
"integrity": "sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"openbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/openbsd-x64": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.0.tgz",
"integrity": "sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"openbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/openharmony-arm64": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.0.tgz",
"integrity": "sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"openharmony"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/sunos-x64": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.0.tgz",
"integrity": "sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"sunos"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/win32-arm64": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.0.tgz",
"integrity": "sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/win32-ia32": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.0.tgz",
"integrity": "sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==",
"cpu": [
"ia32"
],
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/win32-x64": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.0.tgz",
"integrity": "sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@img/sharp-darwin-arm64": {
"version": "0.33.5",
"resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz",
"integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==",
"cpu": [
"arm64"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
},
"optionalDependencies": {
"@img/sharp-libvips-darwin-arm64": "1.0.4"
}
},
"node_modules/@img/sharp-darwin-x64": {
"version": "0.33.5",
"resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz",
"integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==",
"cpu": [
"x64"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
},
"optionalDependencies": {
"@img/sharp-libvips-darwin-x64": "1.0.4"
}
},
"node_modules/@img/sharp-libvips-darwin-arm64": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz",
"integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==",
"cpu": [
"arm64"
],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
"darwin"
],
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/@img/sharp-libvips-darwin-x64": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz",
"integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==",
"cpu": [
"x64"
],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
"darwin"
],
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/@img/sharp-libvips-linux-arm": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz",
"integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==",
"cpu": [
"arm"
],
"libc": [
"glibc"
],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
"linux"
],
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/@img/sharp-libvips-linux-arm64": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz",
"integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==",
"cpu": [
"arm64"
],
"libc": [
"glibc"
],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
"linux"
],
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/@img/sharp-libvips-linux-s390x": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz",
"integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==",
"cpu": [
"s390x"
],
"libc": [
"glibc"
],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
"linux"
],
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/@img/sharp-libvips-linux-x64": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz",
"integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==",
"cpu": [
"x64"
],
"libc": [
"glibc"
],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
"linux"
],
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/@img/sharp-libvips-linuxmusl-arm64": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz",
"integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==",
"cpu": [
"arm64"
],
"libc": [
"musl"
],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
"linux"
],
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/@img/sharp-libvips-linuxmusl-x64": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz",
"integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==",
"cpu": [
"x64"
],
"libc": [
"musl"
],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
"linux"
],
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/@img/sharp-linux-arm": {
"version": "0.33.5",
"resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz",
"integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==",
"cpu": [
"arm"
],
"libc": [
"glibc"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
},
"optionalDependencies": {
"@img/sharp-libvips-linux-arm": "1.0.5"
}
},
"node_modules/@img/sharp-linux-arm64": {
"version": "0.33.5",
"resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz",
"integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==",
"cpu": [
"arm64"
],
"libc": [
"glibc"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
},
"optionalDependencies": {
"@img/sharp-libvips-linux-arm64": "1.0.4"
}
},
"node_modules/@img/sharp-linux-s390x": {
"version": "0.33.5",
"resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz",
"integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==",
"cpu": [
"s390x"
],
"libc": [
"glibc"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
},
"optionalDependencies": {
"@img/sharp-libvips-linux-s390x": "1.0.4"
}
},
"node_modules/@img/sharp-linux-x64": {
"version": "0.33.5",
"resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz",
"integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==",
"cpu": [
"x64"
],
"libc": [
"glibc"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
},
"optionalDependencies": {
"@img/sharp-libvips-linux-x64": "1.0.4"
}
},
"node_modules/@img/sharp-linuxmusl-arm64": {
"version": "0.33.5",
"resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz",
"integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==",
"cpu": [
"arm64"
],
"libc": [
"musl"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
},
"optionalDependencies": {
"@img/sharp-libvips-linuxmusl-arm64": "1.0.4"
}
},
"node_modules/@img/sharp-linuxmusl-x64": {
"version": "0.33.5",
"resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz",
"integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==",
"cpu": [
"x64"
],
"libc": [
"musl"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
},
"optionalDependencies": {
"@img/sharp-libvips-linuxmusl-x64": "1.0.4"
}
},
"node_modules/@img/sharp-wasm32": {
"version": "0.33.5",
"resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz",
"integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==",
"cpu": [
"wasm32"
],
"license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
"optional": true,
"dependencies": {
"@emnapi/runtime": "^1.2.0"
},
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/@img/sharp-win32-ia32": {
"version": "0.33.5",
"resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz",
"integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==",
"cpu": [
"ia32"
],
"license": "Apache-2.0 AND LGPL-3.0-or-later",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/@img/sharp-win32-x64": {
"version": "0.33.5",
"resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz",
"integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==",
"cpu": [
"x64"
],
"license": "Apache-2.0 AND LGPL-3.0-or-later",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.13",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
"integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
"license": "MIT",
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.5.0",
"@jridgewell/trace-mapping": "^0.3.24"
}
},
"node_modules/@jridgewell/resolve-uri": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
"license": "MIT",
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/source-map": {
"version": "0.3.11",
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz",
"integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==",
"license": "MIT",
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25"
}
},
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz",
"integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==",
"license": "MIT"
},
"node_modules/@jridgewell/trace-mapping": {
"version": "0.3.31",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
"integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
"license": "MIT",
"dependencies": {
"@jridgewell/resolve-uri": "^3.1.0",
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
"node_modules/@mediabunny/aac-encoder": {
"version": "1.45.0",
"resolved": "https://registry.npmjs.org/@mediabunny/aac-encoder/-/aac-encoder-1.45.0.tgz",
"integrity": "sha512-vLQw8cY7Me6pvTTMkMhOiH9UCuINzfTOETCeDxbGNeNfDqc/7QlxloUH1Ylp/Zz2ek0O8kc6YdygV2vWAPakrA==",
"license": "MPL-2.0",
"funding": {
"type": "individual",
"url": "https://github.com/sponsors/Vanilagy"
},
"peerDependencies": {
"mediabunny": "^1.0.0"
}
},
"node_modules/@mediabunny/flac-encoder": {
"version": "1.45.0",
"resolved": "https://registry.npmjs.org/@mediabunny/flac-encoder/-/flac-encoder-1.45.0.tgz",
"integrity": "sha512-LfKbAMZVkxRS7PpEIVnWOY/l0KcHv+rjO7pYY3O0TPCZvbHWfrnQjn8JPacPIfuq6Yv7r4f8lhcl7yHSynoRkQ==",
"license": "MPL-2.0",
"funding": {
"type": "individual",
"url": "https://github.com/sponsors/Vanilagy"
},
"peerDependencies": {
"mediabunny": "^1.0.0"
}
},
"node_modules/@mediabunny/mp3-encoder": {
"version": "1.45.0",
"resolved": "https://registry.npmjs.org/@mediabunny/mp3-encoder/-/mp3-encoder-1.45.0.tgz",
"integrity": "sha512-Bobi6AaQYEc7TWmPJ8Q0/hcUtBN7pLUC2qjoC7oZR4FcGqGztby6k7A1SWlmswoMOEIhYsOrgDaemrSDAC0QVQ==",
"license": "MPL-2.0",
"funding": {
"type": "individual",
"url": "https://github.com/sponsors/Vanilagy"
},
"peerDependencies": {
"mediabunny": "^1.0.0"
}
},
"node_modules/@module-federation/error-codes": {
"version": "0.22.0",
"resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.22.0.tgz",
"integrity": "sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug==",
"license": "MIT"
},
"node_modules/@module-federation/runtime": {
"version": "0.22.0",
"resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.22.0.tgz",
"integrity": "sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA==",
"license": "MIT",
"dependencies": {
"@module-federation/error-codes": "0.22.0",
"@module-federation/runtime-core": "0.22.0",
"@module-federation/sdk": "0.22.0"
}
},
"node_modules/@module-federation/runtime-core": {
"version": "0.22.0",
"resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.22.0.tgz",
"integrity": "sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA==",
"license": "MIT",
"dependencies": {
"@module-federation/error-codes": "0.22.0",
"@module-federation/sdk": "0.22.0"
}
},
"node_modules/@module-federation/runtime-tools": {
"version": "0.22.0",
"resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.22.0.tgz",
"integrity": "sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA==",
"license": "MIT",
"dependencies": {
"@module-federation/runtime": "0.22.0",
"@module-federation/webpack-bundler-runtime": "0.22.0"
}
},
"node_modules/@module-federation/sdk": {
"version": "0.22.0",
"resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.22.0.tgz",
"integrity": "sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g==",
"license": "MIT"
},
"node_modules/@module-federation/webpack-bundler-runtime": {
"version": "0.22.0",
"resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.22.0.tgz",
"integrity": "sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA==",
"license": "MIT",
"dependencies": {
"@module-federation/runtime": "0.22.0",
"@module-federation/sdk": "0.22.0"
}
},
"node_modules/@napi-rs/wasm-runtime": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.7.tgz",
"integrity": "sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==",
"license": "MIT",
"optional": true,
"dependencies": {
"@emnapi/core": "^1.5.0",
"@emnapi/runtime": "^1.5.0",
"@tybys/wasm-util": "^0.10.1"
}
},
"node_modules/@remotion/bundler": {
"version": "4.0.473",
"resolved": "https://registry.npmjs.org/@remotion/bundler/-/bundler-4.0.473.tgz",
"integrity": "sha512-UOGKU3iSmU5mICCcW9qZx++sSBssjAZofX8UA3pbyKJIVvVfG+QznikA0fI4W+1/1l5zMyxd/fwMFbz8+q4u2A==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@remotion/media-parser": "4.0.473",
"@remotion/studio": "4.0.473",
"@remotion/studio-shared": "4.0.473",
"@remotion/timeline-utils": "4.0.473",
"@rspack/core": "1.7.6",
"@rspack/plugin-react-refresh": "1.6.1",
"css-loader": "7.1.4",
"esbuild": "0.28.0",
"react-refresh": "0.18.0",
"remotion": "4.0.473",
"style-loader": "4.0.0",
"webpack": "5.105.0"
},
"peerDependencies": {
"react": ">=16.8.0",
"react-dom": ">=16.8.0"
}
},
"node_modules/@remotion/compositor-darwin-arm64": {
"version": "4.0.473",
"resolved": "https://registry.npmjs.org/@remotion/compositor-darwin-arm64/-/compositor-darwin-arm64-4.0.473.tgz",
"integrity": "sha512-cSKS6VPKpLlEs+W0TSgXbxzdHDFxj+ft1jeP/MhedtL3rcSDyjir8RTI8bqDgrcEF4km3Rcg0CxrGbYTKgUVVQ==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@remotion/compositor-darwin-x64": {
"version": "4.0.473",
"resolved": "https://registry.npmjs.org/@remotion/compositor-darwin-x64/-/compositor-darwin-x64-4.0.473.tgz",
"integrity": "sha512-Sf0IHz/zXroP4UGZ0NkyVn0ICiOMeUj07i8nRoz0A95d4TDR3YKVThY4U16ElsaLSbHk3pMcobCxx1tscvtZYQ==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@remotion/compositor-linux-arm64-gnu": {
"version": "4.0.473",
"resolved": "https://registry.npmjs.org/@remotion/compositor-linux-arm64-gnu/-/compositor-linux-arm64-gnu-4.0.473.tgz",
"integrity": "sha512-HeV247O9dwhSfXFYoA7Dd0zPmyn2grbrIhaYs2MJZxO6IHmEUk0gm9/drWyjDHy4e2WCg98uSlcycNOmWtG5ng==",
"cpu": [
"arm64"
],
"libc": [
"glibc"
],
"optional": true,
"os": [
"linux"
]
},
"node_modules/@remotion/compositor-linux-arm64-musl": {
"version": "4.0.473",
"resolved": "https://registry.npmjs.org/@remotion/compositor-linux-arm64-musl/-/compositor-linux-arm64-musl-4.0.473.tgz",
"integrity": "sha512-7EGy2MtQch3yLzwxvWncz/3rmXOWQkWigCDL37I90aHhlf8JgrMZXo8dUtIoD0LP/zHWtFNBcJmgg9Ej+bHshA==",
"cpu": [
"arm64"
],
"libc": [
"musl"
],
"optional": true,
"os": [
"linux"
]
},
"node_modules/@remotion/compositor-linux-x64-gnu": {
"version": "4.0.473",
"resolved": "https://registry.npmjs.org/@remotion/compositor-linux-x64-gnu/-/compositor-linux-x64-gnu-4.0.473.tgz",
"integrity": "sha512-X5Gzod9Q8sTtzjc+hIYKw6PMaB3tY0ADx68j2z+Zm8nJanmkzLZEDyZvlMexmE4nkb7IdOkHzYGm9NpynbMH2A==",
"cpu": [
"x64"
],
"libc": [
"glibc"
],
"optional": true,
"os": [
"linux"
]
},
"node_modules/@remotion/compositor-linux-x64-musl": {
"version": "4.0.473",
"resolved": "https://registry.npmjs.org/@remotion/compositor-linux-x64-musl/-/compositor-linux-x64-musl-4.0.473.tgz",
"integrity": "sha512-REyhvrjGYfFTxGaaRDP31zANM744JI7pKXCgTqXHZBCe8mCZjxZCxmwt9pNL2lJsQ+qLr9zai488Bbj/PUuB6g==",
"cpu": [
"x64"
],
"libc": [
"musl"
],
"optional": true,
"os": [
"linux"
]
},
"node_modules/@remotion/compositor-win32-x64-msvc": {
"version": "4.0.473",
"resolved": "https://registry.npmjs.org/@remotion/compositor-win32-x64-msvc/-/compositor-win32-x64-msvc-4.0.473.tgz",
"integrity": "sha512-J69HIENHpH1m8I85kTe111viqB5AGgKJdTCSKp4mGBxM95IL4nydzrYxVd91BvWjanQfVVq1C3voaF8YLwkT7A==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"win32"
]
},
"node_modules/@remotion/licensing": {
"version": "4.0.473",
"resolved": "https://registry.npmjs.org/@remotion/licensing/-/licensing-4.0.473.tgz",
"integrity": "sha512-BBw6SuEWuUD/lYXbLKEC0TTUzW7aLsO0X72pG38W1dOUyfU2KZYYfWGZkd+ermZTWWJ8cW+mevIwloUGk7FRaQ==",
"license": "MIT"
},
"node_modules/@remotion/media-parser": {
"version": "4.0.473",
"resolved": "https://registry.npmjs.org/@remotion/media-parser/-/media-parser-4.0.473.tgz",
"integrity": "sha512-jajhgumDSdnM/CUb3lZgae7D2pfioz9rczc6tLaRNP28IG3d2foQ0jP8INfCdMsOszCD0wKw4RHe0m5GKRxhTg==",
"license": "Remotion License https://remotion.dev/license"
},
"node_modules/@remotion/media-utils": {
"version": "4.0.473",
"resolved": "https://registry.npmjs.org/@remotion/media-utils/-/media-utils-4.0.473.tgz",
"integrity": "sha512-f4Ip10pkawlUBTunE++DZ6J/TrPtKalkxoTx7qQGBlhz3BcWRK7AbEGouZtcAmkLFVxq80hpH/1cBFOMF6FVfA==",
"license": "MIT",
"dependencies": {
"mediabunny": "1.45.0",
"remotion": "4.0.473"
},
"peerDependencies": {
"react": ">=16.8.0",
"react-dom": ">=16.8.0"
}
},
"node_modules/@remotion/player": {
"version": "4.0.473",
"resolved": "https://registry.npmjs.org/@remotion/player/-/player-4.0.473.tgz",
"integrity": "sha512-giJ8cIQEdVxftpcX4m+9jWYCbIvpcdKRGVUc3ownxYEsJ30WUSP2+TuQ6aqqLXFAfwhY/SdBVLfopylh3BgMXA==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"remotion": "4.0.473"
},
"peerDependencies": {
"react": ">=16.8.0",
"react-dom": ">=16.8.0"
}
},
"node_modules/@remotion/renderer": {
"version": "4.0.473",
"resolved": "https://registry.npmjs.org/@remotion/renderer/-/renderer-4.0.473.tgz",
"integrity": "sha512-WOOmT38O3ax78oDIE75FnsDi8eUMBKOdnqiXU3NeArNoA/xQZv7yDUgV3e1SxFaCHS7IbWHIATXUfVgS8TIXBA==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@remotion/licensing": "4.0.473",
"@remotion/streaming": "4.0.473",
"execa": "5.1.1",
"remotion": "4.0.473",
"source-map": "0.8.0-beta.0",
"ws": "8.20.1"
},
"optionalDependencies": {
"@remotion/compositor-darwin-arm64": "4.0.473",
"@remotion/compositor-darwin-x64": "4.0.473",
"@remotion/compositor-linux-arm64-gnu": "4.0.473",
"@remotion/compositor-linux-arm64-musl": "4.0.473",
"@remotion/compositor-linux-x64-gnu": "4.0.473",
"@remotion/compositor-linux-x64-musl": "4.0.473",
"@remotion/compositor-win32-x64-msvc": "4.0.473"
},
"peerDependencies": {
"react": ">=16.8.0",
"react-dom": ">=16.8.0"
}
},
"node_modules/@remotion/streaming": {
"version": "4.0.473",
"resolved": "https://registry.npmjs.org/@remotion/streaming/-/streaming-4.0.473.tgz",
"integrity": "sha512-JRXgqnzHbcaZU+LH3VK9KRNBHd7rhNnf34C3uUeFYFChRQhnmHWTSo7p/SDUhCpVh+hIHsS52xJz9JPwwy5gUw==",
"license": "MIT"
},
"node_modules/@remotion/studio": {
"version": "4.0.473",
"resolved": "https://registry.npmjs.org/@remotion/studio/-/studio-4.0.473.tgz",
"integrity": "sha512-d7FnevW0TGhoJovdLs/Mi8kmthj800QL5gSxDXlpoznymeT41CdRRgiQoXGM2f43r7WyoX0bvE2i9AxIogJoWg==",
"license": "MIT",
"dependencies": {
"@jridgewell/trace-mapping": "0.3.31",
"@remotion/media-utils": "4.0.473",
"@remotion/player": "4.0.473",
"@remotion/renderer": "4.0.473",
"@remotion/studio-shared": "4.0.473",
"@remotion/timeline-utils": "4.0.473",
"@remotion/web-renderer": "4.0.473",
"@remotion/zod-types": "4.0.473",
"mediabunny": "1.45.0",
"memfs": "3.4.3",
"open": "8.4.2",
"remotion": "4.0.473",
"semver": "7.5.3",
"zod": "4.3.6"
},
"peerDependencies": {
"react": ">=16.8.0",
"react-dom": ">=16.8.0"
}
},
"node_modules/@remotion/studio-shared": {
"version": "4.0.473",
"resolved": "https://registry.npmjs.org/@remotion/studio-shared/-/studio-shared-4.0.473.tgz",
"integrity": "sha512-nOONVvgEMw0lL7oPobmXAguvKVgVnV6MAwOfB5ZvjJrkLorFFePZ8ryhoftpRVrn3hGU3ZgQM2Zbb2eiaQPycg==",
"license": "MIT",
"dependencies": {
"remotion": "4.0.473"
}
},
"node_modules/@remotion/timeline-utils": {
"version": "4.0.473",
"resolved": "https://registry.npmjs.org/@remotion/timeline-utils/-/timeline-utils-4.0.473.tgz",
"integrity": "sha512-DrEvnOY97lBlMVUJkU997Ip70Z1hkggXVoiZZk7udTIpkrbhEfI4GrdOd/HOMCTtniepkGH8kXmk6Aqv99Q0uA==",
"license": "MIT",
"dependencies": {
"mediabunny": "1.45.0"
}
},
"node_modules/@remotion/web-renderer": {
"version": "4.0.473",
"resolved": "https://registry.npmjs.org/@remotion/web-renderer/-/web-renderer-4.0.473.tgz",
"integrity": "sha512-WTyFdBdqsmmqrMpW1k6Uhcze2z8tZvKc15BYu1FwmDgdQ1QeaAMgEsyp5qRLzKZ/000XafK4q8bUjdEQoudc8A==",
"license": "UNLICENSED",
"dependencies": {
"@mediabunny/aac-encoder": "1.45.0",
"@mediabunny/flac-encoder": "1.45.0",
"@mediabunny/mp3-encoder": "1.45.0",
"@remotion/licensing": "4.0.473",
"mediabunny": "1.45.0",
"remotion": "4.0.473"
},
"peerDependencies": {
"react": ">=18.0.0",
"react-dom": ">=18.0.0"
}
},
"node_modules/@remotion/zod-types": {
"version": "4.0.473",
"resolved": "https://registry.npmjs.org/@remotion/zod-types/-/zod-types-4.0.473.tgz",
"integrity": "sha512-hAUla1gXVe6afzoRACiDp2L58pgGOfS5pxAG9wPHLv2Br16K6K/ToGZYLwxwugUxmZdMNPGOCkR3pWK5x7O5HQ==",
"license": "MIT",
"dependencies": {
"remotion": "4.0.473"
},
"peerDependencies": {
"zod": "4.3.6"
}
},
"node_modules/@rspack/binding": {
"version": "1.7.6",
"resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.7.6.tgz",
"integrity": "sha512-/NrEcfo8Gx22hLGysanrV6gHMuqZSxToSci/3M4kzEQtF5cPjfOv5pqeLK/+B6cr56ul/OmE96cCdWcXeVnFjQ==",
"license": "MIT",
"optionalDependencies": {
"@rspack/binding-darwin-arm64": "1.7.6",
"@rspack/binding-darwin-x64": "1.7.6",
"@rspack/binding-linux-arm64-gnu": "1.7.6",
"@rspack/binding-linux-arm64-musl": "1.7.6",
"@rspack/binding-linux-x64-gnu": "1.7.6",
"@rspack/binding-linux-x64-musl": "1.7.6",
"@rspack/binding-wasm32-wasi": "1.7.6",
"@rspack/binding-win32-arm64-msvc": "1.7.6",
"@rspack/binding-win32-ia32-msvc": "1.7.6",
"@rspack/binding-win32-x64-msvc": "1.7.6"
}
},
"node_modules/@rspack/binding-darwin-arm64": {
"version": "1.7.6",
"resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.7.6.tgz",
"integrity": "sha512-NZ9AWtB1COLUX1tA9HQQvWpTy07NSFfKBU8A6ylWd5KH8AePZztpNgLLAVPTuNO4CZXYpwcoclf8jG/luJcQdQ==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@rspack/binding-darwin-x64": {
"version": "1.7.6",
"resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.7.6.tgz",
"integrity": "sha512-J2g6xk8ZS7uc024dNTGTHxoFzFovAZIRixUG7PiciLKTMP78svbSSWrmW6N8oAsAkzYfJWwQpVgWfFNRHvYxSw==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@rspack/binding-linux-arm64-gnu": {
"version": "1.7.6",
"resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.7.6.tgz",
"integrity": "sha512-eQfcsaxhFrv5FmtaA7+O1F9/2yFDNIoPZzV/ZvqvFz5bBXVc4FAm/1fVpBg8Po/kX1h0chBc7Xkpry3cabFW8w==",
"cpu": [
"arm64"
],
"libc": [
"glibc"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rspack/binding-linux-arm64-musl": {
"version": "1.7.6",
"resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.7.6.tgz",
"integrity": "sha512-DfQXKiyPIl7i1yECHy4eAkSmlUzzsSAbOjgMuKn7pudsWf483jg0UUYutNgXSlBjc/QSUp7906Cg8oty9OfwPA==",
"cpu": [
"arm64"
],
"libc": [
"musl"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rspack/binding-linux-x64-gnu": {
"version": "1.7.6",
"resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.7.6.tgz",
"integrity": "sha512-NdA+2X3lk2GGrMMnTGyYTzM3pn+zNjaqXqlgKmFBXvjfZqzSsKq3pdD1KHZCd5QHN+Fwvoszj0JFsquEVhE1og==",
"cpu": [
"x64"
],
"libc": [
"glibc"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rspack/binding-linux-x64-musl": {
"version": "1.7.6",
"resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.7.6.tgz",
"integrity": "sha512-rEy6MHKob02t/77YNgr6dREyJ0e0tv1X6Xsg8Z5E7rPXead06zefUbfazj4RELYySWnM38ovZyJAkPx/gOn3VA==",
"cpu": [
"x64"
],
"libc": [
"musl"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rspack/binding-wasm32-wasi": {
"version": "1.7.6",
"resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.7.6.tgz",
"integrity": "sha512-YupOrz0daSG+YBbCIgpDgzfMM38YpChv+afZpaxx5Ml7xPeAZIIdgWmLHnQ2rts73N2M1NspAiBwV00Xx0N4Vg==",
"cpu": [
"wasm32"
],
"license": "MIT",
"optional": true,
"dependencies": {
"@napi-rs/wasm-runtime": "1.0.7"
}
},
"node_modules/@rspack/binding-win32-arm64-msvc": {
"version": "1.7.6",
"resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.7.6.tgz",
"integrity": "sha512-INj7aVXjBvlZ84kEhSK4kJ484ub0i+BzgnjDWOWM1K+eFYDZjLdAsQSS3fGGXwVc3qKbPIssFfnftATDMTEJHQ==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rspack/binding-win32-ia32-msvc": {
"version": "1.7.6",
"resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.7.6.tgz",
"integrity": "sha512-lXGvC+z67UMcw58In12h8zCa9IyYRmuptUBMItQJzu+M278aMuD1nETyGLL7e4+OZ2lvrnnBIcjXN1hfw2yRzw==",
"cpu": [
"ia32"
],
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rspack/binding-win32-x64-msvc": {
"version": "1.7.6",
"resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.7.6.tgz",
"integrity": "sha512-zeUxEc0ZaPpmaYlCeWcjSJUPuRRySiSHN23oJ2Xyw0jsQ01Qm4OScPdr0RhEOFuK/UE+ANyRtDo4zJsY52Hadw==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rspack/core": {
"version": "1.7.6",
"resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.7.6.tgz",
"integrity": "sha512-Iax6UhrfZqJajA778c1d5DBFbSIqPOSrI34kpNIiNpWd8Jq7mFIa+Z60SQb5ZQDZuUxcCZikjz5BxinFjTkg7Q==",
"license": "MIT",
"dependencies": {
"@module-federation/runtime-tools": "0.22.0",
"@rspack/binding": "1.7.6",
"@rspack/lite-tapable": "1.1.0"
},
"engines": {
"node": ">=18.12.0"
},
"peerDependencies": {
"@swc/helpers": ">=0.5.1"
},
"peerDependenciesMeta": {
"@swc/helpers": {
"optional": true
}
}
},
"node_modules/@rspack/lite-tapable": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.1.0.tgz",
"integrity": "sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw==",
"license": "MIT"
},
"node_modules/@rspack/plugin-react-refresh": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/@rspack/plugin-react-refresh/-/plugin-react-refresh-1.6.1.tgz",
"integrity": "sha512-eqqW5645VG3CzGzFgNg5HqNdHVXY+567PGjtDhhrM8t67caxmsSzRmT5qfoEIfBcGgFkH9vEg7kzXwmCYQdQDw==",
"license": "MIT",
"dependencies": {
"error-stack-parser": "^2.1.4",
"html-entities": "^2.6.0"
},
"peerDependencies": {
"react-refresh": ">=0.10.0 <1.0.0",
"webpack-hot-middleware": "2.x"
},
"peerDependenciesMeta": {
"webpack-hot-middleware": {
"optional": true
}
}
},
"node_modules/@tybys/wasm-util": {
"version": "0.10.3",
"resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz",
"integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==",
"license": "MIT",
"optional": true,
"dependencies": {
"tslib": "^2.4.0"
}
},
"node_modules/@types/dom-mediacapture-transform": {
"version": "0.1.12",
"resolved": "https://registry.npmjs.org/@types/dom-mediacapture-transform/-/dom-mediacapture-transform-0.1.12.tgz",
"integrity": "sha512-d7/QsLRwF864A5mgIM/YrfiglHoYn7zgCcAoJgW404r+2DwnNr7EBbLnCWpmOMgH8y0te73L1AV6H1bmauaWFw==",
"license": "MIT",
"dependencies": {
"@types/dom-webcodecs": "*"
}
},
"node_modules/@types/dom-webcodecs": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/@types/dom-webcodecs/-/dom-webcodecs-0.1.13.tgz",
"integrity": "sha512-O5hkiFIcjjszPIYyUSyvScyvrBoV3NOEEZx/pMlsu44TKzWNkLVBBxnxJz42in5n3QIolYOcBYFCPZZ0h8SkwQ==",
"license": "MIT"
},
"node_modules/@types/eslint": {
"version": "9.6.1",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz",
"integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==",
"license": "MIT",
"dependencies": {
"@types/estree": "*",
"@types/json-schema": "*"
}
},
"node_modules/@types/eslint-scope": {
"version": "3.7.7",
"resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
"integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
"license": "MIT",
"dependencies": {
"@types/eslint": "*",
"@types/estree": "*"
}
},
"node_modules/@types/estree": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
"integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==",
"license": "MIT"
},
"node_modules/@types/json-schema": {
"version": "7.0.15",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
"license": "MIT"
},
"node_modules/@types/node": {
"version": "26.5.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.5.0.tgz",
"integrity": "sha512-dVSGpriSoCgz8WnDNTuSSuSv1PC/ALXihO4ulRZt7Md8k9mlbdin3lGOcDE8SnWOgf513ByWlXd7BK4azmyg/A==",
"license": "MIT",
"dependencies": {
"undici-types": "~8.9.0"
}
},
"node_modules/@webassemblyjs/ast": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz",
"integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==",
"license": "MIT",
"dependencies": {
"@webassemblyjs/helper-numbers": "1.13.2",
"@webassemblyjs/helper-wasm-bytecode": "1.13.2"
}
},
"node_modules/@webassemblyjs/floating-point-hex-parser": {
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz",
"integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==",
"license": "MIT"
},
"node_modules/@webassemblyjs/helper-api-error": {
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz",
"integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==",
"license": "MIT"
},
"node_modules/@webassemblyjs/helper-buffer": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz",
"integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==",
"license": "MIT"
},
"node_modules/@webassemblyjs/helper-numbers": {
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz",
"integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==",
"license": "MIT",
"dependencies": {
"@webassemblyjs/floating-point-hex-parser": "1.13.2",
"@webassemblyjs/helper-api-error": "1.13.2",
"@xtuc/long": "4.2.2"
}
},
"node_modules/@webassemblyjs/helper-wasm-bytecode": {
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz",
"integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==",
"license": "MIT"
},
"node_modules/@webassemblyjs/helper-wasm-section": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz",
"integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==",
"license": "MIT",
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-buffer": "1.14.1",
"@webassemblyjs/helper-wasm-bytecode": "1.13.2",
"@webassemblyjs/wasm-gen": "1.14.1"
}
},
"node_modules/@webassemblyjs/ieee754": {
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz",
"integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==",
"license": "MIT",
"dependencies": {
"@xtuc/ieee754": "^1.2.0"
}
},
"node_modules/@webassemblyjs/leb128": {
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz",
"integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==",
"license": "Apache-2.0",
"dependencies": {
"@xtuc/long": "4.2.2"
}
},
"node_modules/@webassemblyjs/utf8": {
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz",
"integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==",
"license": "MIT"
},
"node_modules/@webassemblyjs/wasm-edit": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz",
"integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==",
"license": "MIT",
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-buffer": "1.14.1",
"@webassemblyjs/helper-wasm-bytecode": "1.13.2",
"@webassemblyjs/helper-wasm-section": "1.14.1",
"@webassemblyjs/wasm-gen": "1.14.1",
"@webassemblyjs/wasm-opt": "1.14.1",
"@webassemblyjs/wasm-parser": "1.14.1",
"@webassemblyjs/wast-printer": "1.14.1"
}
},
"node_modules/@webassemblyjs/wasm-gen": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz",
"integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==",
"license": "MIT",
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-wasm-bytecode": "1.13.2",
"@webassemblyjs/ieee754": "1.13.2",
"@webassemblyjs/leb128": "1.13.2",
"@webassemblyjs/utf8": "1.13.2"
}
},
"node_modules/@webassemblyjs/wasm-opt": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz",
"integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==",
"license": "MIT",
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-buffer": "1.14.1",
"@webassemblyjs/wasm-gen": "1.14.1",
"@webassemblyjs/wasm-parser": "1.14.1"
}
},
"node_modules/@webassemblyjs/wasm-parser": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz",
"integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==",
"license": "MIT",
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-api-error": "1.13.2",
"@webassemblyjs/helper-wasm-bytecode": "1.13.2",
"@webassemblyjs/ieee754": "1.13.2",
"@webassemblyjs/leb128": "1.13.2",
"@webassemblyjs/utf8": "1.13.2"
}
},
"node_modules/@webassemblyjs/wast-printer": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz",
"integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==",
"license": "MIT",
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@xtuc/long": "4.2.2"
}
},
"node_modules/@xtuc/ieee754": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
"integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
"license": "BSD-3-Clause"
},
"node_modules/@xtuc/long": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
"license": "Apache-2.0"
},
"node_modules/acorn": {
"version": "8.18.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz",
"integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==",
"license": "MIT",
"bin": {
"acorn": "bin/acorn"
},
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/acorn-import-phases": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz",
"integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==",
"license": "MIT",
"engines": {
"node": ">=10.13.0"
},
"peerDependencies": {
"acorn": "^8.14.0"
}
},
"node_modules/ajv": {
"version": "8.20.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz",
"integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
"license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.3",
"fast-uri": "^3.0.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/ajv-formats": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
"integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
"license": "MIT",
"dependencies": {
"ajv": "^8.0.0"
},
"peerDependencies": {
"ajv": "^8.0.0"
},
"peerDependenciesMeta": {
"ajv": {
"optional": true
}
}
},
"node_modules/ajv-keywords": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
"integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
"license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.3"
},
"peerDependencies": {
"ajv": "^8.8.2"
}
},
"node_modules/baseline-browser-mapping": {
"version": "2.11.21",
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.21.tgz",
"integrity": "sha512-uh8vpY/1/YyFkunIDFH/12p7/7VdPKA1hejMVEbdkEaWnUz0Hesvx5EbiU6XxjyHZIOju+ZMbQJkRh+es3/spQ==",
"license": "Apache-2.0",
"bin": {
"baseline-browser-mapping": "dist/cli.cjs"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/browserslist": {
"version": "4.28.9",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.9.tgz",
"integrity": "sha512-EWazOblFYUvlGZcfGhPUPmYh3nikUxBVb+y9MJun5f3hBi812X+8MSQTujLBtgK3cf51fJWbWfOjyeO954d+Eg==",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/browserslist"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/browserslist"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"dependencies": {
"baseline-browser-mapping": "^2.11.20",
"caniuse-lite": "^1.0.30001810",
"electron-to-chromium": "^1.5.420",
"node-releases": "^2.0.54",
"update-browserslist-db": "^1.3.2"
},
"bin": {
"browserslist": "cli.js"
},
"engines": {
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
}
},
"node_modules/buffer-from": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
"license": "MIT"
},
"node_modules/caniuse-lite": {
"version": "1.0.30001810",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001810.tgz",
"integrity": "sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/browserslist"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "CC-BY-4.0"
},
"node_modules/chrome-trace-event": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
"integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==",
"license": "MIT",
"engines": {
"node": ">=6.0"
}
},
"node_modules/color": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
"integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1",
"color-string": "^1.9.0"
},
"engines": {
"node": ">=12.5.0"
}
},
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"license": "MIT"
},
"node_modules/color-string": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
"integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
"license": "MIT",
"dependencies": {
"color-name": "^1.0.0",
"simple-swizzle": "^0.2.2"
}
},
"node_modules/commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"license": "MIT"
},
"node_modules/cross-spawn": {
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
"license": "MIT",
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
"which": "^2.0.1"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/css-loader": {
"version": "7.1.4",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.4.tgz",
"integrity": "sha512-vv3J9tlOl04WjiMvHQI/9tmIrCxVrj6PFbHemBB1iihpeRbi/I4h033eoFIhwxBBqLhI0KYFS7yvynBFhIZfTw==",
"license": "MIT",
"dependencies": {
"icss-utils": "^5.1.0",
"postcss": "^8.4.40",
"postcss-modules-extract-imports": "^3.1.0",
"postcss-modules-local-by-default": "^4.0.5",
"postcss-modules-scope": "^3.2.0",
"postcss-modules-values": "^4.0.0",
"postcss-value-parser": "^4.2.0",
"semver": "^7.6.3"
},
"engines": {
"node": ">= 18.12.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/webpack"
},
"peerDependencies": {
"@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0",
"webpack": "^5.27.0"
},
"peerDependenciesMeta": {
"@rspack/core": {
"optional": true
},
"webpack": {
"optional": true
}
}
},
"node_modules/css-loader/node_modules/semver": {
"version": "7.8.5",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
"integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/cssesc": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
"license": "MIT",
"bin": {
"cssesc": "bin/cssesc"
},
"engines": {
"node": ">=4"
}
},
"node_modules/define-lazy-prop": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
"integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/detect-libc": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
"integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
"license": "Apache-2.0",
"engines": {
"node": ">=8"
}
},
"node_modules/electron-to-chromium": {
"version": "1.5.424",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.424.tgz",
"integrity": "sha512-rTOe76LHREmnLOWc0NlakB7AlnWjhTNflk4YE3gnIBPbSXLiY+VDEgwYl4wAYdBPD7eq9NQq6TR8lvd9Fls2CA==",
"license": "ISC"
},
"node_modules/enhanced-resolve": {
"version": "5.24.5",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.5.tgz",
"integrity": "sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==",
"license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.4",
"tapable": "^2.3.3"
},
"engines": {
"node": ">=10.13.0"
}
},
"node_modules/error-stack-parser": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
"integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
"license": "MIT",
"dependencies": {
"stackframe": "^1.3.4"
}
},
"node_modules/es-module-lexer": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.2.tgz",
"integrity": "sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==",
"license": "MIT"
},
"node_modules/esbuild": {
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.0.tgz",
"integrity": "sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==",
"hasInstallScript": true,
"license": "MIT",
"bin": {
"esbuild": "bin/esbuild"
},
"engines": {
"node": ">=18"
},
"optionalDependencies": {
"@esbuild/aix-ppc64": "0.28.0",
"@esbuild/android-arm": "0.28.0",
"@esbuild/android-arm64": "0.28.0",
"@esbuild/android-x64": "0.28.0",
"@esbuild/darwin-arm64": "0.28.0",
"@esbuild/darwin-x64": "0.28.0",
"@esbuild/freebsd-arm64": "0.28.0",
"@esbuild/freebsd-x64": "0.28.0",
"@esbuild/linux-arm": "0.28.0",
"@esbuild/linux-arm64": "0.28.0",
"@esbuild/linux-ia32": "0.28.0",
"@esbuild/linux-loong64": "0.28.0",
"@esbuild/linux-mips64el": "0.28.0",
"@esbuild/linux-ppc64": "0.28.0",
"@esbuild/linux-riscv64": "0.28.0",
"@esbuild/linux-s390x": "0.28.0",
"@esbuild/linux-x64": "0.28.0",
"@esbuild/netbsd-arm64": "0.28.0",
"@esbuild/netbsd-x64": "0.28.0",
"@esbuild/openbsd-arm64": "0.28.0",
"@esbuild/openbsd-x64": "0.28.0",
"@esbuild/openharmony-arm64": "0.28.0",
"@esbuild/sunos-x64": "0.28.0",
"@esbuild/win32-arm64": "0.28.0",
"@esbuild/win32-ia32": "0.28.0",
"@esbuild/win32-x64": "0.28.0"
}
},
"node_modules/escalade": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
"integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
"license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/eslint-scope": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
"integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
"license": "BSD-2-Clause",
"dependencies": {
"esrecurse": "^4.3.0",
"estraverse": "^4.1.1"
},
"engines": {
"node": ">=8.0.0"
}
},
"node_modules/esrecurse": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
"integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
"license": "BSD-2-Clause",
"dependencies": {
"estraverse": "^5.2.0"
},
"engines": {
"node": ">=4.0"
}
},
"node_modules/esrecurse/node_modules/estraverse": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"license": "BSD-2-Clause",
"engines": {
"node": ">=4.0"
}
},
"node_modules/estraverse": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
"license": "BSD-2-Clause",
"engines": {
"node": ">=4.0"
}
},
"node_modules/events": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
"integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
"license": "MIT",
"engines": {
"node": ">=0.8.x"
}
},
"node_modules/execa": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
"integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
"license": "MIT",
"dependencies": {
"cross-spawn": "^7.0.3",
"get-stream": "^6.0.0",
"human-signals": "^2.1.0",
"is-stream": "^2.0.0",
"merge-stream": "^2.0.0",
"npm-run-path": "^4.0.1",
"onetime": "^5.1.2",
"signal-exit": "^3.0.3",
"strip-final-newline": "^2.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
"license": "MIT"
},
"node_modules/fast-uri": {
"version": "3.1.7",
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.7.tgz",
"integrity": "sha512-dOvZVzjdZdz7phd9v6jCbwxrBW3fK6n8Rc0CtdmM4bumzMnxywBYhuph6J819RRw/ku+rLbelwfMunktuzVVHg==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/fastify"
},
{
"type": "opencollective",
"url": "https://opencollective.com/fastify"
}
],
"license": "BSD-3-Clause"
},
"node_modules/fs-monkey": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz",
"integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==",
"license": "Unlicense"
},
"node_modules/get-stream": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
"integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
"license": "MIT",
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/glob-to-regexp": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
"license": "BSD-2-Clause"
},
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
"license": "ISC"
},
"node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/html-entities": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz",
"integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/mdevils"
},
{
"type": "patreon",
"url": "https://patreon.com/mdevils"
}
],
"license": "MIT"
},
"node_modules/human-signals": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
"integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
"license": "Apache-2.0",
"engines": {
"node": ">=10.17.0"
}
},
"node_modules/icss-utils": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
"integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
"license": "ISC",
"engines": {
"node": "^10 || ^12 || >= 14"
},
"peerDependencies": {
"postcss": "^8.1.0"
}
},
"node_modules/is-arrayish": {
"version": "0.3.4",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz",
"integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==",
"license": "MIT"
},
"node_modules/is-docker": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
"integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
"license": "MIT",
"bin": {
"is-docker": "cli.js"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-stream": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
"license": "MIT",
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-wsl": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
"integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
"license": "MIT",
"dependencies": {
"is-docker": "^2.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"license": "ISC"
},
"node_modules/jest-worker": {
"version": "27.5.1",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
"integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
"license": "MIT",
"dependencies": {
"@types/node": "*",
"merge-stream": "^2.0.0",
"supports-color": "^8.0.0"
},
"engines": {
"node": ">= 10.13.0"
}
},
"node_modules/json-parse-even-better-errors": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
"license": "MIT"
},
"node_modules/json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"license": "MIT"
},
"node_modules/loader-runner": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.2.tgz",
"integrity": "sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==",
"license": "MIT",
"engines": {
"node": ">=6.11.5"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/webpack"
}
},
"node_modules/lodash.sortby": {
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
"integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
"license": "MIT"
},
"node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"license": "ISC",
"dependencies": {
"yallist": "^4.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/mediabunny": {
"version": "1.45.0",
"resolved": "https://registry.npmjs.org/mediabunny/-/mediabunny-1.45.0.tgz",
"integrity": "sha512-oK3sMMYbucoF6LUX62L/2M9d+p9ve6KDQgL87kNfhsB0/XmTe9iRLUcgQgg9Gpgvi8Sb96zYfOUL6i17y0bdNg==",
"license": "MPL-2.0",
"workspaces": [
".",
"packages/*"
],
"dependencies": {
"@types/dom-mediacapture-transform": "^0.1.11",
"@types/dom-webcodecs": "0.1.13"
},
"funding": {
"type": "individual",
"url": "https://github.com/sponsors/Vanilagy"
}
},
"node_modules/memfs": {
"version": "3.4.3",
"resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.3.tgz",
"integrity": "sha512-eivjfi7Ahr6eQTn44nvTnR60e4a1Fs1Via2kCR5lHo/kyNoiMWaXCNJ/GpSd0ilXas2JSOl9B5FTIhflXu0hlg==",
"license": "Unlicense",
"dependencies": {
"fs-monkey": "1.0.3"
},
"engines": {
"node": ">= 4.0.0"
}
},
"node_modules/merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
"license": "MIT"
},
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"license": "MIT",
"dependencies": {
"mime-db": "1.52.0"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mimic-fn": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/nanoid": {
"version": "3.3.18",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz",
"integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"bin": {
"nanoid": "bin/nanoid.cjs"
},
"engines": {
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/neo-async": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
"license": "MIT"
},
"node_modules/node-releases": {
"version": "2.0.54",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.54.tgz",
"integrity": "sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ==",
"license": "MIT",
"engines": {
"node": ">=18"
}
},
"node_modules/npm-run-path": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
"integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
"license": "MIT",
"dependencies": {
"path-key": "^3.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/onetime": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
"license": "MIT",
"dependencies": {
"mimic-fn": "^2.1.0"
},
"engines": {
"node": ">=6"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/open": {
"version": "8.4.2",
"resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
"integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
"license": "MIT",
"dependencies": {
"define-lazy-prop": "^2.0.0",
"is-docker": "^2.1.1",
"is-wsl": "^2.2.0"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
"license": "ISC"
},
"node_modules/playwright-core": {
"version": "1.63.0",
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.63.0.tgz",
"integrity": "sha512-rYCsBF/M5HjUch52bbtVONEFjv6Xu8sm8h72dNlR5bzIE1fvC/bxgspzkjSfU+MweEMmPM8KJebG6nnyxo5mCg==",
"license": "Apache-2.0",
"bin": {
"playwright-core": "cli.js"
},
"engines": {
"node": ">=20"
}
},
"node_modules/postcss": {
"version": "8.5.28",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.28.tgz",
"integrity": "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"dependencies": {
"nanoid": "^3.3.18",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
"engines": {
"node": "^10 || ^12 || >=14"
}
},
"node_modules/postcss-modules-extract-imports": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz",
"integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==",
"license": "ISC",
"engines": {
"node": "^10 || ^12 || >= 14"
},
"peerDependencies": {
"postcss": "^8.1.0"
}
},
"node_modules/postcss-modules-local-by-default": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz",
"integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==",
"license": "MIT",
"dependencies": {
"icss-utils": "^5.0.0",
"postcss-selector-parser": "^7.0.0",
"postcss-value-parser": "^4.1.0"
},
"engines": {
"node": "^10 || ^12 || >= 14"
},
"peerDependencies": {
"postcss": "^8.1.0"
}
},
"node_modules/postcss-modules-scope": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz",
"integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==",
"license": "ISC",
"dependencies": {
"postcss-selector-parser": "^7.0.0"
},
"engines": {
"node": "^10 || ^12 || >= 14"
},
"peerDependencies": {
"postcss": "^8.1.0"
}
},
"node_modules/postcss-modules-values": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
"integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
"license": "ISC",
"dependencies": {
"icss-utils": "^5.0.0"
},
"engines": {
"node": "^10 || ^12 || >= 14"
},
"peerDependencies": {
"postcss": "^8.1.0"
}
},
"node_modules/postcss-selector-parser": {
"version": "7.1.6",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.6.tgz",
"integrity": "sha512-7qASPzhKF2l2KLboRZux8CCTRMdGiV08vWmyKzPz22qZ7ZjQBOeY7rNzNoCLSUiftJ7HUq0GERHmxw/t0dCdMw==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
},
"engines": {
"node": ">=4"
}
},
"node_modules/postcss-value-parser": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
"license": "MIT"
},
"node_modules/punycode": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
"integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
"license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/react": {
"version": "19.0.1",
"resolved": "https://registry.npmjs.org/react/-/react-19.0.1.tgz",
"integrity": "sha512-nVRaZCuEyvu69sWrkdwjP6QY57C+lY+uMNNMyWUFJb9Z/JlaBOQus7mSMfGYsblv7R691u6SSJA/dX9IRnyyLQ==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/react-dom": {
"version": "19.0.1",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.1.tgz",
"integrity": "sha512-3TJg51HSbJiLVYCS6vWwWsyqoS36aGEOCmtLLHxROlSZZ5Bk10xpxHFbrCu4DdqgR85DDc9Vucxqhai3g2xjtA==",
"license": "MIT",
"dependencies": {
"scheduler": "^0.25.0"
},
"peerDependencies": {
"react": "^19.0.1"
}
},
"node_modules/react-refresh": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz",
"integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/remotion": {
"version": "4.0.473",
"resolved": "https://registry.npmjs.org/remotion/-/remotion-4.0.473.tgz",
"integrity": "sha512-Li2u4cVxlbxWgxQPn5oBpUlmNKYFpLUmpE9OHMP7QurvOMfvVK1tcC7utxVEwYFZf18tXwqIPBwmuFvdzMu+YA==",
"license": "SEE LICENSE IN LICENSE.md",
"peerDependencies": {
"react": ">=16.8.0",
"react-dom": ">=16.8.0"
}
},
"node_modules/require-from-string": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/scheduler": {
"version": "0.25.0",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz",
"integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==",
"license": "MIT"
},
"node_modules/schema-utils": {
"version": "4.3.3",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz",
"integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==",
"license": "MIT",
"dependencies": {
"@types/json-schema": "^7.0.9",
"ajv": "^8.9.0",
"ajv-formats": "^2.1.1",
"ajv-keywords": "^5.1.0"
},
"engines": {
"node": ">= 10.13.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/webpack"
}
},
"node_modules/semver": {
"version": "7.5.3",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
"integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
"license": "ISC",
"dependencies": {
"lru-cache": "^6.0.0"
},
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/sharp": {
"version": "0.33.5",
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz",
"integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==",
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
"color": "^4.2.3",
"detect-libc": "^2.0.3",
"semver": "^7.6.3"
},
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
},
"optionalDependencies": {
"@img/sharp-darwin-arm64": "0.33.5",
"@img/sharp-darwin-x64": "0.33.5",
"@img/sharp-libvips-darwin-arm64": "1.0.4",
"@img/sharp-libvips-darwin-x64": "1.0.4",
"@img/sharp-libvips-linux-arm": "1.0.5",
"@img/sharp-libvips-linux-arm64": "1.0.4",
"@img/sharp-libvips-linux-s390x": "1.0.4",
"@img/sharp-libvips-linux-x64": "1.0.4",
"@img/sharp-libvips-linuxmusl-arm64": "1.0.4",
"@img/sharp-libvips-linuxmusl-x64": "1.0.4",
"@img/sharp-linux-arm": "0.33.5",
"@img/sharp-linux-arm64": "0.33.5",
"@img/sharp-linux-s390x": "0.33.5",
"@img/sharp-linux-x64": "0.33.5",
"@img/sharp-linuxmusl-arm64": "0.33.5",
"@img/sharp-linuxmusl-x64": "0.33.5",
"@img/sharp-wasm32": "0.33.5",
"@img/sharp-win32-ia32": "0.33.5",
"@img/sharp-win32-x64": "0.33.5"
}
},
"node_modules/sharp/node_modules/semver": {
"version": "7.8.5",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
"integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"license": "MIT",
"dependencies": {
"shebang-regex": "^3.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/shebang-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/signal-exit": {
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
"license": "ISC"
},
"node_modules/simple-swizzle": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz",
"integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==",
"license": "MIT",
"dependencies": {
"is-arrayish": "^0.3.1"
}
},
"node_modules/source-map": {
"version": "0.8.0-beta.0",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
"integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==",
"deprecated": "The work that was done in this beta branch won't be included in future versions",
"license": "BSD-3-Clause",
"dependencies": {
"whatwg-url": "^7.0.0"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/source-map-support": {
"version": "0.5.21",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
"integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
"license": "MIT",
"dependencies": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
}
},
"node_modules/source-map-support/node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/stackframe": {
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
"integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==",
"license": "MIT"
},
"node_modules/strip-final-newline": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
"license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/style-loader": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-4.0.0.tgz",
"integrity": "sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==",
"license": "MIT",
"engines": {
"node": ">= 18.12.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/webpack"
},
"peerDependencies": {
"webpack": "^5.27.0"
}
},
"node_modules/supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
"node_modules/tapable": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz",
"integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==",
"license": "MIT",
"engines": {
"node": ">=6"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/webpack"
}
},
"node_modules/terser": {
"version": "5.51.2",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.51.2.tgz",
"integrity": "sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==",
"license": "BSD-2-Clause",
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
"acorn": "^8.15.0",
"commander": "^2.20.0",
"source-map-support": "~0.5.20"
},
"bin": {
"terser": "bin/terser"
},
"engines": {
"node": ">=10"
}
},
"node_modules/terser-webpack-plugin": {
"version": "5.6.1",
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.6.1.tgz",
"integrity": "sha512-201R5j+sJpK8nFWwKVyNfZot8FaJbLZDq5evriVzbV1wDtSXDjRUDRfJzHpAaxFDMEhsZL1QkeqM61wgsS3KaQ==",
"license": "MIT",
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.25",
"jest-worker": "^27.4.5",
"schema-utils": "^4.3.0",
"terser": "^5.31.1"
},
"engines": {
"node": ">= 10.13.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/webpack"
},
"peerDependencies": {
"webpack": "^5.1.0"
},
"peerDependenciesMeta": {
"@minify-html/node": {
"optional": true
},
"@swc/core": {
"optional": true
},
"@swc/css": {
"optional": true
},
"@swc/html": {
"optional": true
},
"clean-css": {
"optional": true
},
"cssnano": {
"optional": true
},
"csso": {
"optional": true
},
"esbuild": {
"optional": true
},
"html-minifier-terser": {
"optional": true
},
"lightningcss": {
"optional": true
},
"postcss": {
"optional": true
},
"uglify-js": {
"optional": true
}
}
},
"node_modules/tr46": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
"integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
"license": "MIT",
"dependencies": {
"punycode": "^2.1.0"
}
},
"node_modules/tslib": {
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
"license": "0BSD",
"optional": true
},
"node_modules/undici-types": {
"version": "8.9.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.9.0.tgz",
"integrity": "sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==",
"license": "MIT"
},
"node_modules/update-browserslist-db": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.2.tgz",
"integrity": "sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw==",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/browserslist"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/browserslist"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"dependencies": {
"escalade": "^3.2.0",
"picocolors": "^1.1.1"
},
"bin": {
"update-browserslist-db": "cli.js"
},
"peerDependencies": {
"browserslist": ">= 4.21.0"
}
},
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
"license": "MIT"
},
"node_modules/watchpack": {
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.2.tgz",
"integrity": "sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg==",
"license": "MIT",
"dependencies": {
"graceful-fs": "^4.1.2"
},
"engines": {
"node": ">=10.13.0"
}
},
"node_modules/webidl-conversions": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
"integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
"license": "BSD-2-Clause"
},
"node_modules/webpack": {
"version": "5.105.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.0.tgz",
"integrity": "sha512-gX/dMkRQc7QOMzgTe6KsYFM7DxeIONQSui1s0n/0xht36HvrgbxtM1xBlgx596NbpHuQU8P7QpKwrZYwUX48nw==",
"license": "MIT",
"dependencies": {
"@types/eslint-scope": "^3.7.7",
"@types/estree": "^1.0.8",
"@types/json-schema": "^7.0.15",
"@webassemblyjs/ast": "^1.14.1",
"@webassemblyjs/wasm-edit": "^1.14.1",
"@webassemblyjs/wasm-parser": "^1.14.1",
"acorn": "^8.15.0",
"acorn-import-phases": "^1.0.3",
"browserslist": "^4.28.1",
"chrome-trace-event": "^1.0.2",
"enhanced-resolve": "^5.19.0",
"es-module-lexer": "^2.0.0",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.2.11",
"json-parse-even-better-errors": "^2.3.1",
"loader-runner": "^4.3.1",
"mime-types": "^2.1.27",
"neo-async": "^2.6.2",
"schema-utils": "^4.3.3",
"tapable": "^2.3.0",
"terser-webpack-plugin": "^5.3.16",
"watchpack": "^2.5.1",
"webpack-sources": "^3.3.3"
},
"bin": {
"webpack": "bin/webpack.js"
},
"engines": {
"node": ">=10.13.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/webpack"
},
"peerDependenciesMeta": {
"webpack-cli": {
"optional": true
}
}
},
"node_modules/webpack-sources": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.5.1.tgz",
"integrity": "sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw==",
"license": "MIT",
"engines": {
"node": ">=10.13.0"
}
},
"node_modules/whatwg-url": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
"integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
"license": "MIT",
"dependencies": {
"lodash.sortby": "^4.7.0",
"tr46": "^1.0.1",
"webidl-conversions": "^4.0.2"
}
},
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"license": "ISC",
"dependencies": {
"isexe": "^2.0.0"
},
"bin": {
"node-which": "bin/node-which"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/ws": {
"version": "8.20.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.20.1.tgz",
"integrity": "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==",
"license": "MIT",
"engines": {
"node": ">=10.0.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
"utf-8-validate": ">=5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
"optional": true
},
"utf-8-validate": {
"optional": true
}
}
},
"node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"license": "ISC"
},
"node_modules/zod": {
"version": "4.3.6",
"resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz",
"integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
}
}
}
{
"name": "wiggly-tutorial-video-format-kit",
"version": "0.4.0",
"private": true,
"type": "module",
"scripts": {
"test": "node scripts/verify.mjs",
"critique": "node runtime/critique.mjs",
"harvest": "node runtime/harvest.mjs",
"voice": "node runtime/voice.mjs",
"make": "node runner.mjs make",
"smoke": "node runner.mjs smoke",
"build": "node build-kit.mjs"
},
"dependencies": {
"@remotion/bundler": "4.0.473",
"@remotion/renderer": "4.0.473",
"react": "19.0.1",
"react-dom": "19.0.1",
"remotion": "4.0.473",
"sharp": "^0.33.5",
"playwright-core": "^1.60.0"
}
}
# Tutorial Video 0.4.0 proof report ## Failure addressed Version 0.2.0 accepted a finished `sourceVideo` and only re-encoded it. A fresh agent therefore had no executable visual grammar and could substitute a generic slide deck. Version 0.4.0 rejects `sourceVideo`, ships the actual compositor, validator, grid assets, examples, and inspection tooling. ## Runtime proof `runtime/tutorial-video.jsx` renders the retro grids, macOS window chrome, numbered step badges, neon checkpoint cards, timed captions, native-result frames, and progress rail. `runtime/contract.mjs` requires editable ingredients and verifies media authorization, provenance, path safety, duration, and timeline structure before rendering. New narration is a separate measured preparation stage. `runtime/voice.mjs` and `runtime/narrate.mjs` pin Fish Audio to `s2.1-pro-free`, derive caption timing from probed audio, and stop on a missing key or provider error; neither can fall back to an OS voice, a sine wave, or a paid model. Dry-run and offline tests use fixtures and make zero provider calls. Two meaningfully different inputs were rendered without changing the runtime: - `examples/batman-arkham-first-run/input.json` produced a 40.981-second Batman Arkham Conversations tutorial. - `examples/animal-conversations-compositor/input.json` produced a 23.787- second Animal Conversations tutorial. Both are 1920 × 1080, 30 fps H.264/AAC, contain audio, carry input/runtime/output hash receipts, and report `providerCalls: 0`. Their contact sheets visibly show the packaged signature features. Automated inspection cannot judge narration intelligibility or perceived sync; complete human audiovisual approval remains an explicit finalization gate. A context-free agent then received only a clean extracted 0.3.0 download and the Batman request. After the package's preflight identified the required local Remotion browser/port permission, the agent validated, rendered once, and inspected successfully without accessing the source checkout, network, or any provider. See `evidence/blind-agent-run.json`. The compositor proof remains the baseline blind-agent evidence; 0.4.0 adds the new Fish preparation and failure gates without changing that renderer. ## Reproduction ```text npm ci --ignore-scripts --no-audit --no-fund npm test node runner.mjs validate --input=examples/batman-arkham-first-run/input.json node runner.mjs render --input=examples/batman-arkham-first-run/input.json --output=/tmp/tutorial.mp4 node runner.mjs inspect --input=/tmp/tutorial.mp4 --report=/tmp/tutorial-report.json ``` Local Remotion/FFmpeg rendering and all included evidence used zero paid model or media calls. New narration uses Fish `s2.1-pro-free`, which is $0 under the provider's fair-use limits; coding-agent usage and any separately approved asset generation are outside this runtime.
# Provenance - `media/fixed/grid-*.png` are Wiggly-owned background assets recovered from the original Animal Conversations tutorial production workspace and now shipped as fixed format assets. - Batman proof media comes from the public Wiggly Batman Arkham Conversations page, its published example video, a locally rasterized real runtime receipt, and operator-approved human narration recovered from the original tutorial production. Each input entry records its specific provenance. - Animal Conversations proof media and narration are operator-approved assets recovered from the original tutorial production workspace. They are consumed as separate editable ingredients, not as a tutorial master. - `examples/*/final.mp4` are direct outputs of the packaged `runtime/tutorial-video.jsx` compositor. Adjacent receipts bind each input, runtime, and output SHA-256. - Smoke images, tones, and video under `media/smoke/` are locally generated mechanical fixtures and are never represented as creative proof. - No provider call, paid generation, secret, cookie, or private URL is required or included. Authorization statements describe the supplied evidence only; the runtime does not infer ownership.
{
"schemaVersion": 2,
"kit": "wiggly-tutorial-video-format-kit",
"version": "0.4.0",
"files": [
{
"file": "KIT-MANIFEST.json",
"sha256": "5d158c21f74963ce8e3dd6448bec45f27e529289a2ac6f33d6c6279c4d73d852",
"sizeBytes": 798
},
{
"file": "PROOF-REPORT.md",
"sha256": "09f04145e7c28636bddaac46598571b94e6c14d6ed93db8ba877878664bda929",
"sizeBytes": 2867
},
{
"file": "PROVENANCE.md",
"sha256": "023d03eb6e43470bcec6f4d84bc3d506715c3555508721b2be804e2b1107b1e2",
"sizeBytes": 1226
},
{
"file": "README.md",
"sha256": "f7bb27ae5092150c6ae6a0f1684bda010528084379142482fd76ae989d83cfbd",
"sizeBytes": 5917
},
{
"file": "SKILL.md",
"sha256": "bf47113d4bd971153e1e61e8079a542ac43a6d4e8c4830405e0050cacf91efdf",
"sizeBytes": 8460
},
{
"file": "assets.json",
"sha256": "141a4be4c98e976b413d055a4db298b719802c13f730aba8143adda72ba5aff0",
"sizeBytes": 1565
},
{
"file": "build-kit.mjs",
"sha256": "c67f79c252d44507041c5afc0e769059ad05be7b2fd8ee69a45d88e2a81d2bde",
"sizeBytes": 2329
},
{
"file": "composition-contract.json",
"sha256": "df3f996929566998a5ae99ba5e96aedf6e553fad5287b80dd3d07b199acf7216",
"sizeBytes": 999
},
{
"file": "evidence/blind-agent-run.json",
"sha256": "95968b510bd3f563b0e69c8116595d942eec35d2cce5dd02621141cd02978533",
"sizeBytes": 1421
},
{
"file": "evidence/compositor-runs.json",
"sha256": "499768451ab104c6cf3c2d40a24c57a20bb4c038486a1a8ca7689c80a3e3e33d",
"sizeBytes": 1195
},
{
"file": "examples/animal-conversations-compositor/final.mp4",
"sha256": "49ed3faccfaae97015acea2aa692efd866a8db11c0a69df8472c2515190787e9",
"sizeBytes": 4481759
},
{
"file": "examples/animal-conversations-compositor/final.mp4.receipt.json",
"sha256": "e97f13d9bdbfe8436a6aa09da5871b39d76b75af8ddee2cba79cbf1a851cd479",
"sizeBytes": 720
},
{
"file": "examples/animal-conversations-compositor/input.json",
"sha256": "f8b76b3384c1fadac7444bb4240c2b834fe8f40d48cc4d6bfef4f302fa5386a6",
"sizeBytes": 3808
},
{
"file": "examples/animal-conversations-compositor/quality-report-contact-sheet.jpg",
"sha256": "eb2605446a39a050297b2e428f2209d1a60dab42a8492b25e9014bbfa4f52fd0",
"sizeBytes": 72930
},
{
"file": "examples/animal-conversations-compositor/quality-report.json",
"sha256": "d91e83708d72750202e195d6b3874321f694bd48be531218df04a4563bdbef43",
"sizeBytes": 1062
},
{
"file": "examples/batman-arkham-first-run/final.mp4",
"sha256": "3a24911245135050f976ce3eff5f7f112dba93e6cfdd4318adbdc9a4f900f6ac",
"sizeBytes": 13308376
},
{
"file": "examples/batman-arkham-first-run/final.mp4.receipt.json",
"sha256": "d218cda951fdfc00102f43fb05dbcce8bfea5761758af2f0ea6131c5b5252c21",
"sizeBytes": 704
},
{
"file": "examples/batman-arkham-first-run/input.json",
"sha256": "c31bc6ad434ffe4e5a5fb4ddf8e385ebf667360b52b08e63dbb7a035a209cee0",
"sizeBytes": 5779
},
{
"file": "examples/batman-arkham-first-run/poster.jpg",
"sha256": "60faf9b1a8cee2f1f3d9757522b7fe8139affab21bb89a051695f69bd3f39d25",
"sizeBytes": 208726
},
{
"file": "examples/batman-arkham-first-run/quality-report-contact-sheet.jpg",
"sha256": "b497a0514a07fe8827a1e631eb9581ecb7298883ed3b494ceedb501e46307b99",
"sizeBytes": 106123
},
{
"file": "examples/batman-arkham-first-run/quality-report.json",
"sha256": "f6f09faf449e8e62bf04763924faa8679938ffab46246d90b549b715bf30048b",
"sizeBytes": 1087
},
{
"file": "fixtures/creative-review.example.json",
"sha256": "4d59d073f19ae4f3124b991c23ea17af977298c5b40e503644dbd59ae9973765",
"sizeBytes": 383
},
{
"file": "fixtures/narration-plan.json",
"sha256": "ae57b17c351268131d75073c9a4a8ba42ee0a84ec72efb379762de784f11a382",
"sizeBytes": 489
},
{
"file": "fixtures/smoke/input.json",
"sha256": "fda777ab55c0fa88a0cc28c48863aceb054c7a4f0d8d7e4f646ebfdda83c057c",
"sizeBytes": 3038
},
{
"file": "fixtures/template/input.json",
"sha256": "4aec0cf52db44b63c476c14859d673b8f5ba0908a69f567760f9788ac390b540",
"sizeBytes": 3122
},
{
"file": "format.json",
"sha256": "c2361a8164b13d3d2dd429061f1c975184efe8a3fb33fd2299bf41d1c7cade4c",
"sizeBytes": 678
},
{
"file": "goldens.json",
"sha256": "3b8ab052a754fca78a0229825f56d4b4f392cb90e3ca42d82710c48102b8d9af",
"sizeBytes": 1075
},
{
"file": "input-contract.json",
"sha256": "9672520aac54bf3ec10d995a0a0242c5fb58796c9a34d4d7b7a639b74ebf8ec5",
"sizeBytes": 1994
},
{
"file": "inputs/distribution.json",
"sha256": "5df4721d99096f6d0a390c6ff59a8842cba99bd5ed7d568f42439a4a4e42eeff",
"sizeBytes": 1344
},
{
"file": "inputs/mugsy-explains.json",
"sha256": "abe79e13f51178a1f2ce958fe9989daaea3462a975409f2f7af57e068e7fd213",
"sizeBytes": 4965
},
{
"file": "media/examples/animal-conversations/06-copy.wav",
"sha256": "df671c3b7a350845522ac5cfd43e2ccd682da4a620fe4c0bc9028ad8d4233078",
"sizeBytes": 929298
},
{
"file": "media/examples/animal-conversations/07-paste.wav",
"sha256": "5238cbf2aa98b1d0dfee42768d0e90326dd59ddd295caa47a4a37a2979ba24bc",
"sizeBytes": 1804734
},
{
"file": "media/examples/animal-conversations/final-result.mp4",
"sha256": "888860f5a2e4ee3eb4c66661ea4b122a1015d19938b20037702410350cfdea63",
"sizeBytes": 2132866
},
{
"file": "media/examples/animal-conversations/format-page.mp4",
"sha256": "32710f244042881b02bbf1ee15bdaffecef1814c2952840f10136d353b6b93fc",
"sizeBytes": 246675
},
{
"file": "media/examples/animal-conversations/paste-focused.mp4",
"sha256": "24bfe8cc8512d1fe6a7a527944782ca69da3dd23dd77c4d5d58cac2e00b4ff7f",
"sizeBytes": 263021
},
{
"file": "media/examples/batman-arkham/02-agent.wav",
"sha256": "75b7ce27454785fda66c9ad90b781141f3358601d7b6aa0c28cd4c9fe5213be4",
"sizeBytes": 1756098
},
{
"file": "media/examples/batman-arkham/03-copy.wav",
"sha256": "df671c3b7a350845522ac5cfd43e2ccd682da4a620fe4c0bc9028ad8d4233078",
"sizeBytes": 929298
},
{
"file": "media/examples/batman-arkham/04-paste.wav",
"sha256": "5238cbf2aa98b1d0dfee42768d0e90326dd59ddd295caa47a4a37a2979ba24bc",
"sizeBytes": 1804734
},
{
"file": "media/examples/batman-arkham/06-close.wav",
"sha256": "3bf3dcb467bdaf1756c96501afcd6f3f3036b3666e4ef5cccbd0dce7561070c5",
"sizeBytes": 1707462
},
{
"file": "media/examples/batman-arkham/final-result.mp4",
"sha256": "02abd830832603a033401177b6759687aa6d2f7c4beb6f4f26d856547c591362",
"sizeBytes": 24039535
},
{
"file": "media/examples/batman-arkham/format-page.png",
"sha256": "2e16a9efe0f1a67c85f1c1abd611fa19926ca5f169a77adccdd7e8c902aa67bb",
"sizeBytes": 246231
},
{
"file": "media/examples/batman-arkham/runtime-receipt.png",
"sha256": "df0916570e237166e210b4422d95cf9693508e2b38fdb498f6b546cb7c07f27e",
"sizeBytes": 79921
},
{
"file": "media/fixed/grid-acid-lime-v1.png",
"sha256": "8d691ffbdcd0ff1297bdc7c86984d2e1a57134d067ae1ab02890d34ab9fe7005",
"sizeBytes": 953898
},
{
"file": "media/fixed/grid-electric-blue-v1.png",
"sha256": "fa1eed1a8e640f01309aa07f218274556c0cacb6807262360680aecb4e102a58",
"sizeBytes": 1122993
},
{
"file": "media/fixed/grid-warm-cream-v1.png",
"sha256": "e0152ed7e377428579c22a4c8f885d28d357c112369f20534825c0b3b50df405",
"sizeBytes": 934154
},
{
"file": "media/mugsy-explains/browser-interaction.mp4",
"sha256": "3eeef61058dd66629174eb290ee7b49d4da413e8b7cc19311a86e64ca2345869",
"sizeBytes": 576420
},
{
"file": "media/mugsy-explains/final-result.mp4",
"sha256": "2e978f8873a5ef32a30d1378fd3e9ccaeade9d39a3bb3d91d9a850725f4eebf2",
"sizeBytes": 1436612
},
{
"file": "media/mugsy-explains/format-page.png",
"sha256": "5b6be73d26163087adcdea9439b3874c6fc1e37b82717d82cd8daf8ba84dc3ac",
"sizeBytes": 124585
},
{
"file": "media/mugsy-explains/runtime-receipt.png",
"sha256": "aa16dce0f55e75902fb5133e809628ccbd7dd70ac3562a79caccca048a485f2e",
"sizeBytes": 109030
},
{
"file": "media/mugsy-explains/step-02.wav",
"sha256": "c249cc19a256b60f1537015790f4d55e8adc8cbdcc5324a9ab8606b025dfb49f",
"sizeBytes": 403238
},
{
"file": "media/mugsy-explains/step-03.wav",
"sha256": "7616dba2fb8267bbf064e243760c5a820e4b4032774ca4b6547d363660f2a330",
"sizeBytes": 563178
},
{
"file": "media/mugsy-explains/step-05.wav",
"sha256": "7545d0861d0821be611f9b296f9d01b585c9aa6b3d9446bffcbb70a8030efd8f",
"sizeBytes": 524168
},
{
"file": "media/mugsy-explains/terminal-execution.mp4",
"sha256": "2640baf6d41df72261963b6ace61d401697c5e6e75c8b73551d5e4688b6fe1e1",
"sizeBytes": 261949
},
{
"file": "media/smoke/browser-narration.wav",
"sha256": "14542df96292023a58c5a4b039cb3a30d92c30605051908ce87062424ab6788c",
"sizeBytes": 230478
},
{
"file": "media/smoke/browser.jpg",
"sha256": "41905db0a94262d478238849bf1d1bd0914b7d58c676ac93be245b5d0e6c3607",
"sizeBytes": 27951
},
{
"file": "media/smoke/result.mp4",
"sha256": "0ad7f81d3e6f5da08005d8f0b304d0b869ac14b36f1967acc099db339434752d",
"sizeBytes": 5875160
},
{
"file": "media/smoke/terminal-narration.wav",
"sha256": "72f208b94c5e7668eeb5e976533ecbc041bd9d3bec3dc1d67aa5027c19bee8e7",
"sizeBytes": 230478
},
{
"file": "media/smoke/terminal.png",
"sha256": "108448318fea3ab78b311ebb533bbea98386cb91d68912cc491d342d123efd6e",
"sizeBytes": 119249
},
{
"file": "output-contract.json",
"sha256": "12060438fbb9d8e46392dcab7c914887765c982809ca85c6c8286ad29ff8b651",
"sizeBytes": 597
},
{
"file": "outputs/mugsy-explains-tutorial.mp4",
"sha256": "3cb42d3a935e5e70eccec748940e9ad45b996b38ee1dabcb260a3894bb740769",
"sizeBytes": 7888979
},
{
"file": "outputs/mugsy-explains-tutorial.mp4.quality-report-contact-sheet.jpg",
"sha256": "f83a24d2d43f24320af7cccae00924beab18b8aec28e8a862c76fa265c9f5c49",
"sizeBytes": 85794
},
{
"file": "outputs/mugsy-explains-tutorial.mp4.quality-report.json",
"sha256": "2d8bab3ae53d33a9be54e7b215a2d17533927667d5b563d33082a350df266803",
"sizeBytes": 1055
},
{
"file": "outputs/mugsy-explains-tutorial.mp4.receipt.json",
"sha256": "bb101290799b34070647ab7ff8a4f012dcb7edfaf6dbb554c571834579748328",
"sizeBytes": 676
},
{
"file": "package-lock.json",
"sha256": "2eaffbbef1535e172cdc8a014a716a227eb953100ce1f4a38f7e134f61b8ca27",
"sizeBytes": 113676
},
{
"file": "package.json",
"sha256": "a7ccfdcbdf6ac1407b5446a6d28e7b93319a082a27fe115b2e6734d013cdad8f",
"sizeBytes": 636
},
{
"file": "pipeline.json",
"sha256": "14b897184f6f4ec9ead5cea2bc33cb6c053b5f28cf4d11280d5952e516aa6013",
"sizeBytes": 1396
},
{
"file": "quality.json",
"sha256": "869369346f264e81e176f57fcc9961622c572790dc2ba060b963fcaccf7d8316",
"sizeBytes": 1129
},
{
"file": "references/preparation.md",
"sha256": "57f435b9691549a1f8137d411511bc3f8e65343423cd6c77192fc371bbf4a603",
"sizeBytes": 2116
},
{
"file": "references/tutorial-grammar.md",
"sha256": "6869d1009e729155f324fbe5d800203b8f32ab943010495d2da14dfe6785ac55",
"sizeBytes": 1451
},
{
"file": "release-files.json",
"sha256": "f489885ace77b0abd80b3b3c984c46eba650ab4148825201adf6fd51c059c7d3",
"sizeBytes": 450
},
{
"file": "requirements.json",
"sha256": "e2d42b041b3ceb506e94219089f02d46b911a91fd88b60fe723eaea21248d2e6",
"sizeBytes": 2274
},
{
"file": "runner.mjs",
"sha256": "9a4363f5f83ed2f4929fe3d86e5d550ba2e10ce1ae09035cc7fcc2861fe23eb5",
"sizeBytes": 19641
},
{
"file": "runtime/contract.mjs",
"sha256": "2089412ed4454a7cb53441e9a45fe4fa008dddc3523af0dc3e6fc8542a0f9ff6",
"sizeBytes": 11017
},
{
"file": "runtime/critique.mjs",
"sha256": "28155ea586c1f6cb36c4bb2470295d54dd2efa4abfeebeccfd4ea8bc466c78f6",
"sizeBytes": 12444
},
{
"file": "runtime/harvest.mjs",
"sha256": "607d13175583e5e888cdc14824daec79343d60fb801a874e23759e9ddc1b8424",
"sizeBytes": 32777
},
{
"file": "runtime/index.jsx",
"sha256": "9c10aeb19a9e36ed5b361bda6562fbf96a2b95165bab1c75bd70c3834dcb5695",
"sizeBytes": 113
},
{
"file": "runtime/narrate.mjs",
"sha256": "7463bd777ee1ea62dbc575243819f2206dfa2f6d16f1083c7a7aa23cf2e0079f",
"sizeBytes": 6992
},
{
"file": "runtime/publish.mjs",
"sha256": "bb3a52033f126603bbf1af8253b1353ae5b1351c6e4cef730fa2699ab18cdcba",
"sizeBytes": 6578
},
{
"file": "runtime/root.jsx",
"sha256": "4c58eb5daf507ad66762c98bb7e67318f4db426812f03ae6ec61de3d95aa286a",
"sizeBytes": 849
},
{
"file": "runtime/tutorial-video.jsx",
"sha256": "3999ca04d215ea4036e42d4a7d6a648023b597c4f3fb506bed303fc76be5b04b",
"sizeBytes": 12033
},
{
"file": "runtime/voice.mjs",
"sha256": "9ca6a749f428bcde335121d7e770a93312e6289e2dac9f214ff795c55479804a",
"sizeBytes": 8155
},
{
"file": "scripts/verify.mjs",
"sha256": "1648cde91331d629a74216282c9c7b3c14919330bb3191d136931049353deac7",
"sizeBytes": 5869
},
{
"file": "tests/critique.test.mjs",
"sha256": "53bae4a142768a20dcb5cd3f655e971f8d7c741a3abe63efd03da855416606e4",
"sizeBytes": 6769
},
{
"file": "tests/distribution.test.mjs",
"sha256": "5e605fcf532258776c0dfd86e8a9fc401a6156d9881db6045906717105cfe0a9",
"sizeBytes": 4208
},
{
"file": "tests/harvest.test.mjs",
"sha256": "dcf00c36db848c4e34263a01e1955638c2f510958bcd2dc630a9c7e4b27766c0",
"sizeBytes": 2259
},
{
"file": "tests/make.test.mjs",
"sha256": "62094014e217007a6a8406f4aacc9af68123782fa6e5f770cc01021f801b51bb",
"sizeBytes": 2058
},
{
"file": "tests/narrate.test.mjs",
"sha256": "83fead8007fa4c55cc0ae7dc6728ac1e6531a871a30a953d9dca19cc291cfa22",
"sizeBytes": 1610
},
{
"file": "tests/voice.test.mjs",
"sha256": "84584a70258c40accbc74e20a5001a35ea8472636a0e5f6ce4988e6f2d30e853",
"sizeBytes": 3895
}
]
}
{
"schemaVersion": 2,
"version": "0.4.0",
"archive": "downloads/wiggly-tutorial-video-format-kit-0.4.0.zip",
"include": ["README.md", "SKILL.md", "*.json", "runner.mjs", "build-kit.mjs", "runtime/", "scripts/", "references/", "evidence/", "fixtures/", "media/", "examples/"],
"exclude": ["downloads/", "node_modules/", "secrets.env", "assets/source/", "examples/animal-conversations-first-run/", "examples/animal-conversations-variant/"]
}
Run it with a coding agent
The agent reads this version’s instructions, checks the requirements, and walks you through the approved workflow. Review the inputs and estimate before starting.
Typical run
$0 provider cost with supplied media or Fish s2.1-pro-free; coding-agent usage is separate. Paid calls require an estimate and approval.
You provide
Permitted browser and coding-agent captures from the real workflow · The Wiggly Format metadata, URL, and finished-result video · A Fish Audio key and authorized voice ID for new narration, or supplied narration for offline replay · Reviewed caption timings and checkpoint copy · A coding agent with terminal, filesystem, and media access
Output
One narrated, captioned 1920 × 1080 MP4 (16:9) rendered directly from the editable ingredient timeline