/** * Generated by scripts/gen-agent-command-catalog.ts. * Regenerate with `npm run agent:catalog:gen`. */ export type AgentCommandSource = "tool" | "cli"; export interface AgentCommandCatalogEntry { command: string; summary: string; mutates: boolean; unsafe: boolean; source: AgentCommandSource; } export const AGENT_COMMAND_CATALOG = [ { command: "add-params", summary: "Append a custom-parameter page (knobs/menus/toggles/pulses) to a COMP.", mutates: true, unsafe: false, source: "tool", }, { command: "agent-guide", summary: "Emit a project-local CLAUDE.md/AGENTS.md with tdmcp conventions.", mutates: true, unsafe: false, source: "tool", }, { command: "ai-party", summary: "Dry-run one Hermes/Telegram AI party message through policy.", mutates: false, unsafe: false, source: "cli", }, { command: "ai-party llm-setup", summary: "Check/start local Ollama and print AI Party ShowIntent model setup commands.", mutates: false, unsafe: false, source: "cli", }, { command: "ai-party telegram-once", summary: "Process one Telegram long-poll batch through the AI party gateway.", mutates: false, unsafe: false, source: "cli", }, { command: "ai-party-poc", summary: "Run the AI-Controlled Party producer POC in dry-run/simulated mode.", mutates: false, unsafe: false, source: "cli", }, { command: "analyze", summary: "Find dead ops, broken file deps, orphan COMPs + a dependency map.", mutates: false, unsafe: false, source: "tool", }, { command: "animate", summary: "Drive parameters with an LFO.", mutates: true, unsafe: false, source: "tool", }, { command: "annotate", summary: "Create/list annotation boxes + comments; list ops enclosed by a box.", mutates: true, unsafe: false, source: "tool", }, { command: "apply-creative-card", summary: "Read a Creative RAG card and route to one of its whitelisted Layer 1 tdmcpAffordances with optional overrides (use `dry_run: true` to preview).", mutates: true, unsafe: false, source: "tool", }, { command: "apply-glsl-mapping", summary: "Build a GLSL TOP from a pre-translated mapping (fragment + uniforms + channels + controls).", mutates: true, unsafe: false, source: "tool", }, { command: "apply-lut", summary: "Apply a .cube/.3dl LUT to a TOP via lookupTOP, with optional strength + before/after preview.", mutates: true, unsafe: false, source: "tool", }, { command: "arrange", summary: "Auto-arrange a network left→right.", mutates: true, unsafe: false, source: "tool", }, { command: "asset-validate", summary: "Validate a local library asset and manifest reference.", mutates: false, unsafe: false, source: "tool", }, { command: "audio-features", summary: "Extract reactive channels (level/bass/mid/treble) to bind to params.", mutates: true, unsafe: false, source: "tool", }, { command: "audio-fingerprint-to-visual", summary: "Sample audio, fingerprint it, and dispatch a matching Layer 1 generator tuned to it.", mutates: true, unsafe: false, source: "tool", }, { command: "audio-reactive", summary: "Build an audio-reactive visual.", mutates: true, unsafe: false, source: "tool", }, { command: "audio3d", summary: "Build a 3D scene that reacts to sound (instanced FFT bars / bass pulse).", mutates: true, unsafe: false, source: "tool", }, { command: "author-script-operator", summary: "Author a Script CHOP/TOP/SOP/DAT with validated callbacks + parameters.", mutates: true, unsafe: false, source: "tool", }, { command: "automation-lane", summary: "Timeline automation lane: animate target parameters from a CHOP curve.", mutates: true, unsafe: false, source: "tool", }, { command: "autopilot", summary: "Beat-driven auto-VJ: every N beats randomize controls or cycle cues.", mutates: true, unsafe: false, source: "tool", }, { command: "band-router", summary: "Split audio into EQ bands and route each band level to its own target(s).", mutates: true, unsafe: false, source: "tool", }, { command: "batch", summary: "Run many create/connect/setParam ops in one fail-forward call.", mutates: true, unsafe: false, source: "tool", }, { command: "beat-grid", summary: "Build a beat/bar step-grid sequencer (param or cue per active step).", mutates: true, unsafe: false, source: "tool", }, { command: "bind", summary: "Bind parameters to a CHOP channel (audio feature / beat) by expression.", mutates: true, unsafe: false, source: "tool", }, { command: "blob-reactive", summary: "Track blob/hand positions from a camera or TOP and bind params to them.", mutates: true, unsafe: false, source: "tool", }, { command: "body-bubbles", summary: "Create open-palm bubble physics with body/hand collision.", mutates: true, unsafe: false, source: "tool", }, { command: "body-reactive", summary: "Drive a visual from tracked body motion (camera-reactive performance).", mutates: true, unsafe: false, source: "tool", }, { command: "body-tracking", summary: "One-shot webcam body tracking: load the MediaPipe engine + adapter + live skeleton.", mutates: true, unsafe: false, source: "tool", }, { command: "build-chop-chain", summary: "Assemble a typed CHOP-processing chain from a recipe of stages.", mutates: true, unsafe: false, source: "tool", }, { command: "build-pop-chain", summary: "Assemble a typed POP (Point OPerator) chain from a recipe of stages.", mutates: true, unsafe: false, source: "tool", }, { command: "build-sop-geometry", summary: "Assemble a typed SOP geometry chain from a recipe of stages.", mutates: true, unsafe: false, source: "tool", }, { command: "caption-top", summary: "Caption a TOP: plain-text description of colors/brightness/motion (vision LLM or histogram).", mutates: false, unsafe: false, source: "tool", }, { command: "capture-loop", summary: "Bidirectional Spout/Syphon/NDI bridge (receive + publish in one container).", mutates: true, unsafe: false, source: "tool", }, { command: "chain", summary: "Create a chain of connected nodes.", mutates: true, unsafe: false, source: "tool", }, { command: "checkpoint", summary: "Store/restore a full sub-network snapshot (undo point).", mutates: true, unsafe: false, source: "tool", }, { command: "checksum-verify-pack", summary: "Compute or verify SHA-256 checksums for tdmcp artifacts (tox/recipes/bundles).", mutates: true, unsafe: false, source: "tool", }, { command: "chop-recorder", summary: "Record an incoming CHOP stream to disk and play it back as an animation/curve.", mutates: true, unsafe: false, source: "tool", }, { command: "chroma-reactive", summary: "Harmonic/chroma audio analysis -> chroma_* channels driving target params.", mutates: true, unsafe: false, source: "tool", }, { command: "classes get", summary: "Get one Python class (offline).", mutates: false, unsafe: false, source: "tool", }, { command: "classes list", summary: "List TD Python API classes (offline).", mutates: false, unsafe: false, source: "tool", }, { command: "classes search", summary: "Search TD Python API classes, methods, and members (offline).", mutates: false, unsafe: false, source: "tool", }, { command: "clock-sync", summary: "Drive the global tempo from a Bpm knob + tap-tempo (beat-match the DJ).", mutates: true, unsafe: false, source: "tool", }, { command: "collect-assets", summary: "Scan a COMP subtree for external file dependencies into an inventory + optional manifest.", mutates: true, unsafe: false, source: "tool", }, { command: "colorgrade", summary: "Color-grade a source (lift/gamma/gain + saturation/hue + LUT).", mutates: true, unsafe: false, source: "tool", }, { command: "colorwheels", summary: "Colour wheels: lift/gamma/gain RGB tints + offset + saturation chain.", mutates: true, unsafe: false, source: "tool", }, { command: "commands", summary: "Print the machine-readable tdmcp-agent command catalog.", mutates: false, unsafe: false, source: "cli", }, { command: "completion ", summary: "Print a completion snippet for bash, zsh, or fish.", mutates: false, unsafe: false, source: "cli", }, { command: "component", summary: "Save/load a COMP as a .tox.", mutates: true, unsafe: false, source: "tool", }, { command: "component-changelog-trail", summary: "Track a component's changelog trail across versions.", mutates: true, unsafe: false, source: "tool", }, { command: "component-health", summary: "Check externaltox links for missing local component files.", mutates: false, unsafe: false, source: "tool", }, { command: "compose-cue-list", summary: "Author a cue list from rows: scaffolds cues + step sequencer wired to a navigator.", mutates: true, unsafe: false, source: "tool", }, { command: "config", summary: "Print the effective config, list profiles, or initialize a starter config.", mutates: false, unsafe: false, source: "cli", }, { command: "connect", summary: "Wire two nodes together.", mutates: true, unsafe: false, source: "tool", }, { command: "connect-comfyui", summary: "Bridge to a ComfyUI workflow endpoint (submit prompts, fetch generated frames).", mutates: true, unsafe: false, source: "tool", }, { command: "connect-daydream-cloud", summary: "Bridge to a Daydream cloud realtime-diffusion endpoint.", mutates: true, unsafe: false, source: "tool", }, { command: "container", summary: "Create a COMP container.", mutates: true, unsafe: false, source: "tool", }, { command: "control-panel", summary: "Add bound custom-parameter controls to a COMP.", mutates: true, unsafe: false, source: "tool", }, { command: "controller-bridge", summary: "Bridge controller events into tdmcp commands.", mutates: true, unsafe: false, source: "cli", }, { command: "create-ai-mirror", summary: "Live AI-mirror combo: camera → StreamDiffusion (+ optional pose/depth controls) → preview.", mutates: true, unsafe: false, source: "tool", }, { command: "create-ascii-render", summary: "Render a source as ASCII art (glyph atlas + GLSL sampler).", mutates: true, unsafe: false, source: "tool", }, { command: "create-audio-glsl-uniforms", summary: "Bind audio CHOP channels to GLSL TOP uniform slots.", mutates: true, unsafe: false, source: "tool", }, { command: "create-chrome-blobs", summary: "Build a chrome/metaball blob network with reflective shading.", mutates: true, unsafe: false, source: "tool", }, { command: "create-depth-from-2d", summary: "Estimate per-pixel depth from a 2D image/video source via an AI depth model.", mutates: true, unsafe: false, source: "tool", }, { command: "create-depth-pop-field", summary: "Drive a POP field from a depth source (sensor TOP → POP positions).", mutates: true, unsafe: false, source: "tool", }, { command: "create-facade-mapping", summary: "Build a building-facade projection-mapping network (per-window tiling + warp).", mutates: true, unsafe: false, source: "tool", }, { command: "create-gaussian-splat-scene", summary: "Render a 3D Gaussian Splat scene (point/splat dataset) into the network.", mutates: true, unsafe: false, source: "tool", }, { command: "create-llm-chain", summary: "Compose an LLM prompt chain DAT graph driving TD parameters/text.", mutates: true, unsafe: false, source: "tool", }, { command: "create-phrase-locked-cue-engine", summary: "Lock cue advances to bar/phrase boundaries from a tempo CHOP.", mutates: true, unsafe: false, source: "tool", }, { command: "create-pixel-sort", summary: "Build a pixel-sort glitch effect over an input TOP.", mutates: true, unsafe: false, source: "tool", }, { command: "create-pop-growth", summary: "Grow a POP field over time (additive emission + lifetime + accumulation).", mutates: true, unsafe: false, source: "tool", }, { command: "create-pop-lines-pointcloud", summary: "Render POP points as connected lines / pointcloud (Line MAT or Point MAT pipeline).", mutates: true, unsafe: false, source: "tool", }, { command: "create-pop-particle-system", summary: "Build a POP particle system (emitter + forces + audio reactivity) into a previewed render.", mutates: true, unsafe: false, source: "tool", }, { command: "create-pose-controlnet-driver", summary: "Render a pose CHOP into a ControlNet-ready skeleton TOP for AI image bridges.", mutates: true, unsafe: false, source: "tool", }, { command: "create-reaction-diffusion", summary: "Build a Gray-Scott reaction-diffusion feedback network.", mutates: true, unsafe: false, source: "tool", }, { command: "create-slit-scan", summary: "Build a slit-scan time-displacement effect over an input TOP.", mutates: true, unsafe: false, source: "tool", }, { command: "create-stipple-pointcloud", summary: "Stipple a source TOP into a sampled POP pointcloud (intensity-weighted dots).", mutates: true, unsafe: false, source: "tool", }, { command: "create-vintage-lens", summary: "Apply a vintage-lens stack (chromatic aberration, vignette, grain, distortion) to a TOP.", mutates: true, unsafe: false, source: "tool", }, { command: "create-volumetric-field", summary: "Build a volumetric/3D scalar-field render (raymarched volume).", mutates: true, unsafe: false, source: "tool", }, { command: "create-voxel-stack", summary: "Build a stacked-voxel render of a source TOP or geometry.", mutates: true, unsafe: false, source: "tool", }, { command: "cubemap-dome", summary: "True cube-map dome render → fisheye/equirectangular for planetarium/360.", mutates: true, unsafe: false, source: "tool", }, { command: "cue", summary: "Scene system: store/recall/morph/list/delete cues (timed crossfade).", mutates: true, unsafe: false, source: "tool", }, { command: "cue-sequencer", summary: "Bar-quantized cue timeline: fire stored cues at musical positions on a loop.", mutates: true, unsafe: false, source: "tool", }, { command: "curated-collection-pack", summary: "Bundle a curated collection of library assets into a verifiable pack.", mutates: true, unsafe: false, source: "tool", }, { command: "dashboard", summary: "Unified web performance surface: cue buttons + faders + panic + live readout.", mutates: true, unsafe: false, source: "tool", }, { command: "dat-edit", summary: "Surgically replace text in a DAT (unique-match or replace_all).", mutates: true, unsafe: false, source: "tool", }, { command: "dat-get", summary: "Read a DAT's text/table content with paging (offset/limit, header, preview).", mutates: false, unsafe: false, source: "tool", }, { command: "dat-set", summary: "Overwrite a DAT's whole text (refuses silent wipes unless confirm_wipe).", mutates: true, unsafe: false, source: "tool", }, { command: "data-source", summary: "Ingest live external data (json/csv/osc/serial) onto a bindable CHOP.", mutates: true, unsafe: false, source: "tool", }, { command: "data-source-http-ws", summary: "Create an HTTP poller or WebSocket data source feeding a CHOP/DAT channel.", mutates: true, unsafe: false, source: "tool", }, { command: "datamosh", summary: "Build a datamosh / time-echo / frame-blend smear (feedback ghost trails).", mutates: true, unsafe: false, source: "tool", }, { command: "dataviz", summary: "Build a data visualization.", mutates: true, unsafe: false, source: "tool", }, { command: "decks", summary: "Build DJ-style A/B decks with a master crossfader.", mutates: true, unsafe: false, source: "tool", }, { command: "depth-displace", summary: "Displace a plane into 3D by a depth/luminance map (2.5D relief).", mutates: true, unsafe: false, source: "tool", }, { command: "detect-tempo", summary: "Auto-BPM from audio onsets; optionally drive the global tempo (experimental).", mutates: true, unsafe: false, source: "tool", }, { command: "diagnose-tdableton-mapper", summary: "Inspect or repair TDAbleton TDA_Mapper routing for a hand Ableton mapper.", mutates: true, unsafe: false, source: "tool", }, { command: "diff", summary: "Diff two network snapshots (offline).", mutates: false, unsafe: false, source: "tool", }, { command: "digest", summary: "Tiny token-bounded structural digest of a network.", mutates: false, unsafe: false, source: "tool", }, { command: "disconnect", summary: "Remove input wire(s) from a node (the inverse of connect).", mutates: true, unsafe: false, source: "tool", }, { command: "dither", summary: "Apply 1-bit / Bayer / error-diffusion dither with palette modes (mono/duotone/rgb).", mutates: true, unsafe: false, source: "tool", }, { command: "dmx-fixture-pipeline", summary: "Build a DMX/Art-Net fixture pipeline (channels → patch → Art-Net Out).", mutates: true, unsafe: false, source: "tool", }, { command: "doc-site", summary: "Compose a multi-file documentation package (README + topology + optional gallery) for a network.", mutates: true, unsafe: false, source: "tool", }, { command: "docs-assets", summary: "Copy docs into a package and update its manifest.", mutates: true, unsafe: false, source: "tool", }, { command: "doctor", summary: "Diagnose TD bridge, LLM, vault, config and tool setup.", mutates: false, unsafe: false, source: "cli", }, { command: "document", summary: "Document a network (summary + mermaid).", mutates: false, unsafe: false, source: "tool", }, { command: "dome", summary: "Remap a source to fisheye/equirectangular for dome / 360 output.", mutates: true, unsafe: false, source: "tool", }, { command: "drive-streamdiffusion", summary: "Drive StreamDiffusion realtime img2img bridge (TouchDiffusion / StreamDiffusion TD).", mutates: true, unsafe: false, source: "tool", }, { command: "duplicate", summary: "Duplicate a network.", mutates: true, unsafe: false, source: "tool", }, { command: "elicit-missing-args", summary: "Elicit missing required tool args from partial input + context.", mutates: false, unsafe: false, source: "tool", }, { command: "energy-structure", summary: "Multi-band energy state machine with edge-triggered state changes.", mutates: true, unsafe: false, source: "tool", }, { command: "engine-comp", summary: "Build a load-balanced Engine COMP cluster for offloading sub-networks to worker processes.", mutates: true, unsafe: false, source: "tool", }, { command: "enhance-build", summary: "Apply targeted improvements to an existing build and rescore.", mutates: true, unsafe: false, source: "tool", }, { command: "envelope", summary: "Shape a reactive signal: attack/release + gate/duck (sidechain). Experimental.", mutates: true, unsafe: false, source: "tool", }, { command: "errors summarize", summary: "Cluster network errors by cause.", mutates: false, unsafe: false, source: "tool", }, { command: "exec node-method", summary: "Escape hatch: call a Python method on a node.", mutates: true, unsafe: true, source: "tool", }, { command: "exec python", summary: "Escape hatch: run arbitrary Python in TD.", mutates: true, unsafe: true, source: "tool", }, { command: "extend-data-source-fabric", summary: "Extend create_data_source with new feed adapters (websocket/sse/mqtt/file-tail/process).", mutates: true, unsafe: false, source: "tool", }, { command: "face-tracking", summary: "Set up MediaPipe face tracking: 468-sample face-landmark CHOP (tx/ty/tz/confidence, centred on nose tip) from camera. No blendshapes yet.", mutates: true, unsafe: false, source: "tool", }, { command: "fanout", summary: "Fan out commands to multiple bridge targets.", mutates: true, unsafe: false, source: "cli", }, { command: "feedback", summary: "Build a feedback network.", mutates: true, unsafe: false, source: "tool", }, { command: "feedback-tunnel", summary: "Build an infinite zoom/rotate/hue feedback tunnel generator.", mutates: true, unsafe: false, source: "tool", }, { command: "flock", summary: "Boids-style GPU particle flocking (separation/alignment/cohesion).", mutates: true, unsafe: false, source: "tool", }, { command: "flow-abstraction", summary: "Painterly flow-abstraction effect (edge-tangent-flow → flow-based DoG, Kyprianidis style) over a source TOP.", mutates: true, unsafe: false, source: "tool", }, { command: "fluid-sim", summary: "Build a real-time fluid simulation (advect/diffuse/project feedback chain).", mutates: true, unsafe: false, source: "tool", }, { command: "gen-audio", summary: "Synthesize audio (oscillator/fm/noise); optional device output.", mutates: true, unsafe: false, source: "tool", }, { command: "generative", summary: "Build a generative-art system.", mutates: true, unsafe: false, source: "tool", }, { command: "genre", summary: "Scaffold a genre-flavored show (techno/ambient/installation).", mutates: true, unsafe: false, source: "tool", }, { command: "get-inline-preview", summary: "Inline inspection snapshot for one operator: small base64 thumbnail + errors (self + parents) + top-N changed-from-default parameters + 1-line cook stats. Single-round-trip 'is this op alive/healthy?' read.", mutates: false, unsafe: false, source: "tool", }, { command: "glitch", summary: "Apply a glitch look (RGB-shift + noise displacement).", mutates: true, unsafe: false, source: "tool", }, { command: "glsl", summary: "Create a GLSL TOP shader.", mutates: true, unsafe: false, source: "tool", }, { command: "gpu-displays", summary: "Inspect host GPU + connected displays (offline-friendly).", mutates: false, unsafe: false, source: "tool", }, { command: "gpu-particles", summary: "GPU particle field via feedback TOPs + instancing (experimental).", mutates: true, unsafe: false, source: "tool", }, { command: "growth-system", summary: "Build an organic growth/branching system (L-system flavour).", mutates: true, unsafe: false, source: "tool", }, { command: "halftone", summary: "Stylise a source as halftone dots / CMYK / dither / posterize (GLSL).", mutates: true, unsafe: false, source: "tool", }, { command: "hand-ableton-mapper", summary: "Build MediaPipe hand controls for TDAbleton TDA_Mapper (map1 left pinch, map2 right pinch, map3/map4 wrist roll).", mutates: true, unsafe: false, source: "tool", }, { command: "hand-gesture-bus", summary: "Create a stable hand gesture CHOP bus for palm, float anchor, pinch, scale, light, and audio controls.", mutates: true, unsafe: false, source: "tool", }, { command: "hand-hologram", summary: "Build a palm-anchored hologram visual; open palm shows it, opposite-hand pinch scales/glows it.", mutates: true, unsafe: false, source: "tool", }, { command: "hand-tracking", summary: "Set up MediaPipe hand tracking: per-finger landmark CHOP (max_hands×21 with tx/ty/tz/confidence/handedness) from camera. No gesture classification — wire detectors downstream.", mutates: true, unsafe: false, source: "tool", }, { command: "hardware-diagnose", summary: "Preflight bridge, displays/projectors and generated sensor/helper status DATs.", mutates: false, unsafe: false, source: "tool", }, { command: "help ", summary: "Print focused help for one command without contacting TouchDesigner.", mutates: false, unsafe: false, source: "cli", }, { command: "histogram-scope", summary: "Build a video histogram scope (luma/RGB) for monitoring tone and color distribution.", mutates: true, unsafe: false, source: "tool", }, { command: "image-to-particles", summary: "Convert an image into a particle field whose colours/positions sample the source.", mutates: true, unsafe: false, source: "tool", }, { command: "import-isf", summary: "Import an ISF shader into a native GLSL TOP network.", mutates: true, unsafe: false, source: "tool", }, { command: "import-shadertoy", summary: "Import a Shadertoy shader (URL/ID/source) into a native GLSL TOP network.", mutates: true, unsafe: false, source: "tool", }, { command: "info", summary: "Health check + TD/bridge info.", mutates: false, unsafe: false, source: "tool", }, { command: "init", summary: "Scaffold a show skeleton (master output + beat clock).", mutates: true, unsafe: false, source: "tool", }, { command: "inspect-comp", summary: "Read a COMP's storage, promoted extension members, and custom-parameter definitions.", mutates: false, unsafe: false, source: "tool", }, { command: "install-library", summary: "Install a local package folder, zip, tox, or manifest into a package directory.", mutates: true, unsafe: false, source: "tool", }, { command: "interactive-projection", summary: "Build a synthetic-safe camera/projector interactive projection mapping rig.", mutates: true, unsafe: false, source: "tool", }, { command: "io", summary: "Bridge OSC/MIDI in, DMX out, NDI/Syphon in.", mutates: true, unsafe: false, source: "tool", }, { command: "jfa-voronoi", summary: "Build a Jump Flood Algorithm Voronoi / distance-field network from seed points.", mutates: true, unsafe: false, source: "tool", }, { command: "kaleidoscope", summary: "Wrap a source in an N-fold kaleidoscope (radial mirror).", mutates: true, unsafe: false, source: "tool", }, { command: "keyer", summary: "Key a source (chroma/luma/rgb) and composite it over a background.", mutates: true, unsafe: false, source: "tool", }, { command: "keyframe", summary: "Animate parameters along a keyframed curve (synced/looping).", mutates: true, unsafe: false, source: "tool", }, { command: "kinect-wall-harp", summary: "Build a Kinect v2/FreenectTD projected wall harp with two-hand zone triggers and internal pluck synth.", mutates: true, unsafe: false, source: "tool", }, { command: "kinetictext", summary: "Animated/beat-flashed kinetic typography (lyric flashes).", mutates: true, unsafe: false, source: "tool", }, { command: "knowledge search", summary: "Search embedded TD operators, versions, compatibility notes, techniques, and classes.", mutates: false, unsafe: false, source: "tool", }, { command: "launcher", summary: "Build an Ableton-style grid of cue-trigger buttons.", mutates: true, unsafe: false, source: "tool", }, { command: "layer-stack", summary: "Build an N-layer VJ compositor (per-layer blend + opacity + mute/solo + control strip).", mutates: true, unsafe: false, source: "tool", }, { command: "learn", summary: "MIDI/OSC learn: snapshot an input CHOP, then bind the moved control (experimental).", mutates: true, unsafe: false, source: "tool", }, { command: "learn-conventions", summary: "Read a live TD subtree and write the artist's house conventions into the vault Memory notes.", mutates: true, unsafe: false, source: "tool", }, { command: "learn-from-my-corpus", summary: "Mine the vault corpus to surface style/usage conventions.", mutates: false, unsafe: false, source: "tool", }, { command: "led-mapper", summary: "Pixel-map a source TOP to an LED fixture layout → DMX/Art-Net out.", mutates: true, unsafe: false, source: "tool", }, { command: "library", summary: "Browse recipes and local component packages.", mutates: false, unsafe: false, source: "tool", }, { command: "library-diff", summary: "Offline deep-diff two saved library assets (recipe/manifest/spec JSON).", mutates: false, unsafe: false, source: "tool", }, { command: "library-index", summary: "Write a Markdown contact-sheet of the whole vault library (thumbnails + load snippets).", mutates: true, unsafe: false, source: "tool", }, { command: "library-lineage-graph", summary: "Scan the vault library and emit a lineage graph (JSON / Mermaid / Graphviz DOT).", mutates: false, unsafe: false, source: "tool", }, { command: "live-source", summary: "Build a live input layer (screen-grab/ndi/syphon-spout/camera/stream) → a previewed Null.", mutates: true, unsafe: false, source: "tool", }, { command: "llm-voice", summary: "Run the LLM-backed voice copilot.", mutates: true, unsafe: false, source: "cli", }, { command: "log-tail", summary: "Tail and filter TouchDesigner bridge logs.", mutates: false, unsafe: false, source: "cli", }, { command: "logs", summary: "Collect recent cook errors/warnings (+ best-effort textport) for debugging.", mutates: false, unsafe: false, source: "tool", }, { command: "look-bank", summary: "Snapshot/morph look bank: store, recall, A↔B blend named looks on a control COMP.", mutates: true, unsafe: false, source: "tool", }, { command: "macro", summary: "Add one knob that drives many parameters.", mutates: true, unsafe: false, source: "tool", }, { command: "macro-record", summary: "Record / stop / list / load tool-call macros (replay ships in wave 5).", mutates: true, unsafe: false, source: "tool", }, { command: "manage-component-storage", summary: "Read/write COMP `storage` slots safely.", mutates: true, unsafe: false, source: "tool", }, { command: "manifest", summary: "Inspect a component package manifest.", mutates: false, unsafe: false, source: "tool", }, { command: "mapping", summary: "Wrap a source in a corner-pin for projection mapping.", mutates: true, unsafe: false, source: "tool", }, { command: "marketplace-index", summary: "Write an index.json for a local package directory.", mutates: true, unsafe: false, source: "tool", }, { command: "media-bin", summary: "Build a folder-fed clip bin (Movie File In + Switch) with Index/Next/Prev/Crossfade.", mutates: true, unsafe: false, source: "tool", }, { command: "merge-vaults", summary: "Merge two Obsidian vaults safely.", mutates: true, unsafe: false, source: "tool", }, { command: "mesh-warp", summary: "Map a source onto a deformable curved grid (dome/column/sculpture).", mutates: true, unsafe: false, source: "tool", }, { command: "midi-map", summary: "Build a MIDI controller preset map (APC/Launchpad/MIDI Mix/nanoKONTROL). Hardware-UNVERIFIED.", mutates: true, unsafe: false, source: "tool", }, { command: "midi-notes", summary: "Build a MIDI-note reactive chain (synthetic source previews without gear).", mutates: true, unsafe: false, source: "tool", }, { command: "mixer", summary: "Build a VJ layer mixer (crossfade/blend).", mutates: true, unsafe: false, source: "tool", }, { command: "model", summary: "Import a 3D model file and render it.", mutates: true, unsafe: false, source: "tool", }, { command: "modulators", summary: "Build a bank of BPM-synced LFOs on one Null (the 'everything breathes' lever).", mutates: true, unsafe: false, source: "tool", }, { command: "module help", summary: "Human-readable help for a class (offline).", mutates: false, unsafe: false, source: "tool", }, { command: "moodboard-to-system", summary: "Ingest moodboard images and build a matching generative system in TouchDesigner.", mutates: true, unsafe: false, source: "tool", }, { command: "morph-pack", summary: "Pack/unpack a create_preset_morph slot set as a portable, sha256-verified vault JSON.", mutates: true, unsafe: false, source: "tool", }, { command: "motion-reactive", summary: "Extract camera reactive channels (brightness/motion) to bind to params.", mutates: true, unsafe: false, source: "tool", }, { command: "movie", summary: "Record a TOP to a movie/sequence (start/stop).", mutates: true, unsafe: false, source: "tool", }, { command: "multi-output", summary: "Fan a master TOP across N projectors (cropped tiles + optional windows).", mutates: true, unsafe: false, source: "tool", }, { command: "multipass-3d", summary: "Build a multipass 3D scene (Render + SSAO + a synthetic Depth output).", mutates: true, unsafe: false, source: "tool", }, { command: "node-state", summary: "Read an operator's runtime telemetry (cook time/count, res, channels, GPU mem).", mutates: false, unsafe: false, source: "tool", }, { command: "nodes compare", summary: "Diff two nodes' parameters.", mutates: false, unsafe: false, source: "tool", }, { command: "nodes create", summary: "Create an operator.", mutates: true, unsafe: false, source: "tool", }, { command: "nodes delete", summary: "Delete a node.", mutates: true, unsafe: false, source: "tool", }, { command: "nodes errors", summary: "Check a node/network for errors.", mutates: false, unsafe: false, source: "tool", }, { command: "nodes find", summary: "Search nodes by name pattern and/or type.", mutates: false, unsafe: false, source: "tool", }, { command: "nodes flags", summary: "Inspect node flags + wiring (why-is-it-black).", mutates: false, unsafe: false, source: "tool", }, { command: "nodes get", summary: "Read a node's parameters.", mutates: false, unsafe: false, source: "tool", }, { command: "nodes list", summary: "List a COMP's child nodes (summary by default).", mutates: false, unsafe: false, source: "tool", }, { command: "nodes performance", summary: "Report cook times.", mutates: false, unsafe: false, source: "tool", }, { command: "nodes profile", summary: "Profile per-node cook cost (n samples) and rank hot spots.", mutates: false, unsafe: false, source: "tool", }, { command: "nodes snapshot", summary: "Capture a network snapshot.", mutates: false, unsafe: false, source: "tool", }, { command: "nodes topology", summary: "Map nodes + connections.", mutates: false, unsafe: false, source: "tool", }, { command: "nodes update", summary: "Set node parameters.", mutates: true, unsafe: false, source: "tool", }, { command: "npr-filter", summary: "Non-photorealistic painterly filter (Kuwahara → oil / pencil / watercolor).", mutates: true, unsafe: false, source: "tool", }, { command: "onsets", summary: "Detect kick/snare/hat onsets (per-band pulse + optional events).", mutates: true, unsafe: false, source: "tool", }, { command: "operators", summary: "Search the operator knowledge base by keyword (offline).", mutates: false, unsafe: false, source: "tool", }, { command: "operators compare-docs", summary: "Compare two operator docs from offline knowledge.", mutates: false, unsafe: false, source: "tool", }, { command: "operators guide", summary: "Get operator connections, examples, and next-operator suggestions (offline).", mutates: false, unsafe: false, source: "tool", }, { command: "operators suggest-chain", summary: "Suggest a read-only operator chain for a creative or technical goal (offline).", mutates: false, unsafe: false, source: "tool", }, { command: "operators validate-chain", summary: "Validate an ordered operator chain before creating nodes (offline).", mutates: false, unsafe: false, source: "tool", }, { command: "optical-flow", summary: "Compute optical flow from a video/camera source and expose flow vectors for reactive use.", mutates: true, unsafe: false, source: "tool", }, { command: "optimize", summary: "Find (and optionally fix) cook-time bottlenecks.", mutates: true, unsafe: false, source: "tool", }, { command: "output", summary: "Set up a window / NDI / Syphon-Spout output.", mutates: true, unsafe: false, source: "tool", }, { command: "palette", summary: "Generate a color palette/gradient (harmony rules or sampled from a source).", mutates: true, unsafe: false, source: "tool", }, { command: "palette-export", summary: "Save a COMP as a .tox into the TouchDesigner Palette folder for drag-and-drop reuse.", mutates: true, unsafe: false, source: "tool", }, { command: "panic", summary: "Live safety: instant Blackout + Freeze over an output.", mutates: true, unsafe: false, source: "tool", }, { command: "panic ", summary: "Live blackout/freeze hotkey verbs.", mutates: true, unsafe: false, source: "cli", }, { command: "params", summary: "Set many parameters across nodes at once.", mutates: true, unsafe: false, source: "tool", }, { command: "params-menu", summary: "Read a parameter's live menu names/labels + current value (menu-style params).", mutates: false, unsafe: false, source: "tool", }, { command: "params-modes", summary: "Read each parameter's mode (constant/expression/export/bind) + raw expr/bind/export.", mutates: false, unsafe: false, source: "tool", }, { command: "particles", summary: "Build a particle system.", mutates: true, unsafe: false, source: "tool", }, { command: "pbr-scene", summary: "3D scene with a PBR material + environment light rig.", mutates: true, unsafe: false, source: "tool", }, { command: "perform-mode", summary: "Toggle perform mode: store advisory flag; built-in guard skips preview captures.", mutates: true, unsafe: false, source: "tool", }, { command: "phone-gesture", summary: "Phone IMU/gesture WebSocket receiver (orientation + gestures) as control channels.", mutates: true, unsafe: false, source: "tool", }, { command: "pitch", summary: "Detect monophonic pitch (Hz/note) from the FFT (experimental).", mutates: true, unsafe: false, source: "tool", }, { command: "plan", summary: "Plan which tool/recipe builds a described visual (creates nothing).", mutates: false, unsafe: false, source: "tool", }, { command: "point-cloud", summary: "Render a point cloud from a depth/luminance map or synthetic source.", mutates: true, unsafe: false, source: "tool", }, { command: "pop-field", summary: "Build a GPU POP point field (experimental — live-validation pending).", mutates: true, unsafe: false, source: "tool", }, { command: "pop-geometry", summary: "Procedural Op Pattern geometry: SOP chain (primitive→transform→subdiv→noise→mat) rendered to a TOP.", mutates: true, unsafe: false, source: "tool", }, { command: "portable-tox", summary: "Save a COMP as a portable .tox package with a manifest.", mutates: true, unsafe: false, source: "tool", }, { command: "pose-track", summary: "Build a pose-tracking source (MediaPipe/OSC/synthetic) → a 33-landmark pose CHOP.", mutates: true, unsafe: false, source: "tool", }, { command: "post-fx", summary: "Apply post-processing (bloom/blur/…).", mutates: true, unsafe: false, source: "tool", }, { command: "post-passes-3d", summary: "Composited 3D post-passes (SSAO / SSR / DOF / motion blur) using depth/normal/velocity AOVs.", mutates: true, unsafe: false, source: "tool", }, { command: "preset", summary: "Store/recall/list/delete COMP presets.", mutates: true, unsafe: false, source: "tool", }, { command: "preview ", summary: "Capture a TOP to a PNG file.", mutates: false, unsafe: false, source: "cli", }, { command: "preview-assets", summary: "Capture TOP previews into package asset files.", mutates: true, unsafe: false, source: "tool", }, { command: "prob-sequencer", summary: "Probabilistic Markov-style state sequencer driving params/cues per state.", mutates: true, unsafe: false, source: "tool", }, { command: "provenance-stamp", summary: "Write a .provenance.json sidecar (sha256 + source + toolchain + git) next to a saved artifact.", mutates: true, unsafe: false, source: "tool", }, { command: "randomize", summary: "Randomize a COMP's numeric controls within range.", mutates: true, unsafe: false, source: "tool", }, { command: "raymarch", summary: "Volumetric GLSL raymarcher: SDF scenes (sphere-field/menger/tunnel).", mutates: true, unsafe: false, source: "tool", }, { command: "react-audio", summary: "One-shot: auto-map a COMP's knobs to audio bands and bind them to a feature CHOP.", mutates: true, unsafe: false, source: "tool", }, { command: "react-data", summary: "Map live data-source channels onto a COMP's knobs with per-mapping range remap.", mutates: true, unsafe: false, source: "tool", }, { command: "readme", summary: "Generate a Markdown project doc (params, I/O, deps, preview).", mutates: false, unsafe: false, source: "tool", }, { command: "rebuild", summary: "Rebuild a network from a serialize_network spec (create + params + wires).", mutates: true, unsafe: false, source: "tool", }, { command: "recipe", summary: "Build a recipe by id.", mutates: true, unsafe: false, source: "tool", }, { command: "recipe-bundle-export", summary: "Export recipes to a portable bundle file.", mutates: true, unsafe: false, source: "tool", }, { command: "recipe-bundle-import", summary: "Import recipes from a portable bundle file.", mutates: true, unsafe: false, source: "tool", }, { command: "recipe-from-url", summary: "Fetch + validate + import a recipe/bundle JSON from an HTTPS URL.", mutates: true, unsafe: false, source: "tool", }, { command: "recipe-template", summary: "Write a minimal valid recipe JSON template.", mutates: true, unsafe: false, source: "tool", }, { command: "recipes", summary: "List the built-in recipe library (offline).", mutates: false, unsafe: false, source: "tool", }, { command: "recipes draft-chain", summary: "Draft a RecipeSchema JSON from an operator chain without applying it.", mutates: false, unsafe: false, source: "tool", }, { command: "record-fixtures", summary: "Record bridge fixtures for offline tests.", mutates: false, unsafe: false, source: "cli", }, { command: "reload", summary: "Hot-reload the bridge's Python after editing td/.", mutates: false, unsafe: false, source: "tool", }, { command: "remote", summary: "Serve a phone web panel for a COMP's controls.", mutates: true, unsafe: false, source: "tool", }, { command: "render", summary: "Save a TOP to a file at full resolution.", mutates: false, unsafe: false, source: "tool", }, { command: "repair-network", summary: "Bounded autonomous network repair: read errors, plan/apply safe fixes (dry-run by default), re-check.", mutates: true, unsafe: false, source: "tool", }, { command: "repl", summary: "Interactive tdmcp-agent command loop.", mutates: true, unsafe: false, source: "cli", }, { command: "replicator", summary: "Clone a template COMP per row of a Table DAT (Replicator COMP).", mutates: true, unsafe: false, source: "tool", }, { command: "run ", summary: "Run a JSON command file or stdin command stream.", mutates: true, unsafe: false, source: "cli", }, { command: "run-macro-script", summary: "Replay a recorded macro script of tool calls.", mutates: true, unsafe: false, source: "tool", }, { command: "scaffold-ext", summary: "Give a COMP a Python extension class (behavior/methods).", mutates: true, unsafe: false, source: "tool", }, { command: "scaffold-tool-generator", summary: "Scaffold a new tdmcp tool file + msw unit test from an inline spec.", mutates: true, unsafe: false, source: "tool", }, { command: "scene3d", summary: "Build a renderable 3D scene.", mutates: true, unsafe: false, source: "tool", }, { command: "schedule ", summary: "Run scene scheduler triggers.", mutates: true, unsafe: false, source: "cli", }, { command: "schema ", summary: "Print a command's JSON Schema and metadata.", mutates: false, unsafe: false, source: "cli", }, { command: "score-build", summary: "Score a built network 0–100 (palette/motion/complexity/errors/perf) with improvement suggestions.", mutates: false, unsafe: false, source: "tool", }, { command: "script", summary: "Create a DAT preloaded with Python.", mutates: true, unsafe: false, source: "tool", }, { command: "sdf-field", summary: "Build a signed-distance-field raymarched scene (volumetric SDF primitives + lighting).", mutates: true, unsafe: false, source: "tool", }, { command: "segmentation", summary: "Set up MediaPipe selfie segmentation: publishes a clean alpha-mask Null TOP (and optionally a pre-keyed RGBA) from the camera.", mutates: true, unsafe: false, source: "tool", }, { command: "serialize", summary: "Serialize a COMP's children to a diffable JSON spec (params + modes + wires).", mutates: false, unsafe: false, source: "tool", }, { command: "set-expr", summary: "Set a parameter to an expression/bind/constant without raw Python.", mutates: true, unsafe: false, source: "tool", }, { command: "set-nav", summary: "Build a stage cue-list navigator (Index/Next/Prev/Go, QLab model).", mutates: true, unsafe: false, source: "tool", }, { command: "setlist run ", summary: "Drive a setlist scene-by-scene.", mutates: true, unsafe: false, source: "cli", }, { command: "setup-mediapipe-plugin", summary: "Install/configure the MediaPipe TD plugin (camera-driven body/hand/face inputs).", mutates: true, unsafe: false, source: "tool", }, { command: "setup-tdableton", summary: "Bridge Ableton Live <-> TouchDesigner via TDAbleton (CHOPs for tempo, transport, params).", mutates: true, unsafe: false, source: "tool", }, { command: "shaderlib", summary: "Instantiate a curated GLSL shader (tunnel/raymarch/fractal/…).", mutates: true, unsafe: false, source: "tool", }, { command: "shaderpark", summary: "Compile Shader Park sculpture code into a GLSL MAT render network.", mutates: true, unsafe: false, source: "tool", }, { command: "shared-memory-bridge", summary: "Wire a Shared-Mem (in/out) bridge between processes.", mutates: true, unsafe: false, source: "tool", }, { command: "show-director", summary: "Dry-run AI Show Director intent policy decisions.", mutates: false, unsafe: false, source: "cli", }, { command: "sidechain", summary: "Pump many target params on a trigger channel (one-call sidechain duck).", mutates: true, unsafe: false, source: "tool", }, { command: "silhouette", summary: "Extract a silhouette/body mask from a depth or video source.", mutates: true, unsafe: false, source: "tool", }, { command: "simulation", summary: "Build a GPU simulation (RD/slime/fluid).", mutates: true, unsafe: false, source: "tool", }, { command: "skeleton", summary: "Draw a live stick-figure skeleton from a pose CHOP.", mutates: true, unsafe: false, source: "tool", }, { command: "soundcheck-monitor", summary: "Monitor soundcheck health and emit operator-friendly status.", mutates: false, unsafe: false, source: "cli", }, { command: "spectrum", summary: "Extract an N-band FFT spectrum to bind per-band.", mutates: true, unsafe: false, source: "tool", }, { command: "strange-attractor", summary: "Render a strange attractor (Lorenz / Aizawa / Halvorsen) as point/line geometry.", mutates: true, unsafe: false, source: "tool", }, { command: "strobe", summary: "Build a beat-syncable strobe/flash layer.", mutates: true, unsafe: false, source: "tool", }, { command: "surface", summary: "Build a playable panel: faders + cue buttons.", mutates: true, unsafe: false, source: "tool", }, { command: "sync-timecode", summary: "Lock the show clock to external timecode (LTC/MTC/MIDI).", mutates: true, unsafe: false, source: "tool", }, { command: "techniques draft-recipe", summary: "Draft a RecipeSchema JSON from a TouchDesigner technique (offline).", mutates: false, unsafe: false, source: "tool", }, { command: "techniques get", summary: "Inspect TouchDesigner technique packs and individual techniques (offline).", mutates: false, unsafe: false, source: "tool", }, { command: "tempo-sync", summary: "Create a beat clock (ramp/pulse/beat/bar/bpm) + optional beat events.", mutates: true, unsafe: false, source: "tool", }, { command: "test-pattern", summary: "Build a projector calibration/test pattern (grid/crosshair/color-bars/ramp/circle-grid).", mutates: true, unsafe: false, source: "tool", }, { command: "text", summary: "Composite styled text over a visual (lyrics/titles/credits).", mutates: true, unsafe: false, source: "tool", }, { command: "text-3d", summary: "Build extruded 3D text with spin/depth/material.", mutates: true, unsafe: false, source: "tool", }, { command: "text-crawl", summary: "Build a multi-line crawl/ticker/typewriter text source.", mutates: true, unsafe: false, source: "tool", }, { command: "time-echo", summary: "Per-pixel time effect (echo trails / slit-scan / time-displace) on a source TOP.", mutates: true, unsafe: false, source: "tool", }, { command: "timeline", summary: "Control TD timeline transport (play/pause/seek/rate/range).", mutates: true, unsafe: false, source: "tool", }, { command: "transient-reactive", summary: "Transient vs sustain detection: emits transient/sustain channels for routing.", mutates: true, unsafe: false, source: "tool", }, { command: "transition", summary: "Build an A→B transition (dissolve/luma_wipe/slide/zoom/glitch_cut) over a Progress knob.", mutates: true, unsafe: false, source: "tool", }, { command: "tutorials draft-recipe", summary: "Draft a RecipeSchema JSON from a TouchDesigner tutorial (offline).", mutates: false, unsafe: false, source: "tool", }, { command: "tutorials get", summary: "List, search, or retrieve TouchDesigner tutorials (offline).", mutates: false, unsafe: false, source: "tool", }, { command: "two-way-surface", summary: "Bidirectional control surface: parameter <-> external channel sync with guards.", mutates: true, unsafe: false, source: "tool", }, { command: "variant-pack", summary: "Generate a variant pack from a base vault asset.", mutates: true, unsafe: false, source: "tool", }, { command: "vault-repo-sync", summary: "Sync a vault with a git remote (clone/pull/push).", mutates: true, unsafe: false, source: "tool", }, { command: "vector-lines", summary: "Pulse-capture a source image into editable Trace SOP vector lines composited over the source.", mutates: true, unsafe: false, source: "tool", }, { command: "version", summary: "Print the installed package version.", mutates: false, unsafe: false, source: "cli", }, { command: "versions migration-plan", summary: "Plan a TD version migration from release and compatibility notes (offline).", mutates: false, unsafe: false, source: "tool", }, { command: "video", summary: "Build a movie/clip player (+playlist).", mutates: true, unsafe: false, source: "tool", }, { command: "video-scopes", summary: "Build broadcast video scopes (waveform / RGB parade / vectorscope) for a source TOP.", mutates: true, unsafe: false, source: "tool", }, { command: "videosynth", summary: "Analog video-synth patterns (lissajous/interference/scanlines).", mutates: true, unsafe: false, source: "tool", }, { command: "visual", summary: "Build a visual system from a description.", mutates: true, unsafe: false, source: "tool", }, { command: "voice", summary: "Run the voice copilot command interface.", mutates: true, unsafe: false, source: "cli", }, { command: "warp", summary: "Warp a source by noise / a second TOP / audio (displacement).", mutates: true, unsafe: false, source: "tool", }, { command: "watch", summary: "Stream TouchDesigner events as newline-delimited JSON.", mutates: false, unsafe: false, source: "cli", }, { command: "watch-build", summary: "Watch bridge/source files, rebuild, and reload TD bridge changes.", mutates: true, unsafe: false, source: "cli", }, { command: "waveform", summary: "Render a time-domain audio oscilloscope/waveform.", mutates: true, unsafe: false, source: "tool", }, { command: "xy-pad", summary: "Build a draggable 2D XY gesture pad that drives target parameters.", mutates: true, unsafe: false, source: "tool", }, ] satisfies AgentCommandCatalogEntry[]; export function listAgentCommandCatalog(): AgentCommandCatalogEntry[] { return AGENT_COMMAND_CATALOG.map((entry) => ({ ...entry })); }