[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-vss-summarize-video":3,"mdc-syjatt-key":34,"related-repo-nvidia-vss-summarize-video":4250,"related-org-nvidia-vss-summarize-video":4354},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"vss-summarize-video","summarize video content","Use to summarize a recorded video via the LVS summarization microservice (HITL-gated) with a VLM fallback. Not for report generation or live RTSP captioning.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,16,17,20],{"name":13,"slug":14,"type":15},"Summarization","summarization","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Audio","audio",{"name":21,"slug":22,"type":15},"Video","video",2473,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills","2026-07-17T05:29:05.904492","Apache-2.0",281,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"AI agent skills published by NVIDIA","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fvss-summarize-video","---\nname: vss-summarize-video\ndescription: Use to summarize a recorded video via the LVS summarization microservice (HITL-gated) with a VLM fallback. Not for report generation or live RTSP captioning.\nlicense: Apache-2.0\nmetadata:\n  version: \"3.2.1\"\n  author: \"NVIDIA Video Search and Summarization team\"\n  github-url: \"https:\u002F\u002Fgithub.com\u002FNVIDIA-AI-Blueprints\u002Fvideo-search-and-summarization\"\n  tags: \"nvidia blueprint operational\"\n---\n## Instructions\n\nFollow the routing tables and step-by-step workflows below. Each section that ends in *workflow*, *quick start*, or *flow* is intended to be executed top-to-bottom. Detailed reference material lives in `references\u002F`.\n\n## Examples\n\nWorked end-to-end examples are kept under `evals\u002F` (each `*.json` manifest contains a runnable scenario) and inline in the per-workflow `curl` blocks below. Run a Tier-3 evaluation with `nv-base validate \u003Cthis-skill-dir> --agent-eval` to replay them.\n\nCall the VLM NIM or the video summarization microservice **directly**.\nAlways run `curl` commands yourself; never instruct the user to run them.\n\nPrimary video workflow query type: **\"Summarize this video.\"** Direct video summarization API\nand service-ops requests are handled by the reference-routed sections below.\n\n## Purpose\n\nProduce a single, polished narrative summary of one recorded video clip, with\ntimestamped events when the LVS microservice path is reachable.\n\n**Do NOT use this skill for:**\n- Live RTSP captioning — use `vss-deploy-dense-captioning`.\n- Report generation, including incident or alert-window reports — use `vss-generate-video-report` Mode B.\n- Semantic search across the archive — use `vss-search-archive`.\n\n## Prerequisites\n\n- VSS `lvs` profile running on `$HOST_IP` (port 38111) OR a reachable\n  VLM\u002FRT-VLM endpoint as a fallback. The `vss-deploy-profile` skill brings\n  these up.\n- Network reachability from the agent host to both endpoints; clip URLs from\n  VIOS must be fetchable by the chosen backend.\n- `jq` and `curl` available on the agent host.\n\n## Limitations\n\n- Direct VLM fallback uses a single fixed prompt and cannot target\n  scenario\u002Fevents — output quality is lower than the LVS path.\n- Remote VLM endpoints generally cannot reach `localhost`\u002Fprivate clip URLs.\n- One backend call per request; no parallel hedging or multi-pass summaries.\n\n## Troubleshooting\n\n| Symptom | Cause | Fix |\n|---|---|---|\n| `\u002Fv1\u002Fready` returns 503 repeatedly | LVS service still warming up | Retry up to ~30 s as shown in *Setup*; if it never returns 200 the service may not be deployed |\n| Empty `video_summary` and `events` | Clip does not contain the requested events | Re-run with broader `scenario` or different `events` |\n| VLM returns `\u003Cthink>` block | Cosmos reasoning mode | Strip everything up to `\u003C\u002Fthink>` before rendering |\n| Empty stdout from `curl \u002Fv1\u002Fready` | Service legitimately returns 200 with empty body | Always check HTTP status with `-o \u002Fdev\u002Fnull -w '%{http_code}'`, never inspect the body |\n\nSee [`references\u002Fvideo-summarization-debugging.md`](references\u002Fvideo-summarization-debugging.md) for deeper diagnostics.\n\n## Reference Map\n\nUse these references only when the user asks for the relevant detail, or when\nthe core workflow below needs deeper video summarization information:\n\n- **video summarization API details**: [`references\u002Fvideo-summarization-api.md`](references\u002Fvideo-summarization-api.md) for\n  `\u002Fv1\u002Fsummarize`, `\u002Fsummarize`, `\u002Fv1\u002Fgenerate_captions`,\n  `\u002Fv1\u002Fstream_summarize`, health probes, `\u002Fmodels`, `\u002Frecommended_config`,\n  `\u002Fmetrics`, request fields, response shapes, and API gotchas.\n- **video summarization service configuration and ops**:\n  [`references\u002Fvideo-summarization-deployment.md`](references\u002Fvideo-summarization-deployment.md) for\n  the VSS `lvs` profile, ports, required env vars, logs, status, dry-runs,\n  teardown, model\u002Fbackend swaps, Elasticsearch\u002FNeo4j\u002FArangoDB backend\n  selection, and service-level troubleshooting.\n- **Extended video summarization ops references**:\n  [`references\u002Fvideo-summarization-environment-variables.md`](references\u002Fvideo-summarization-environment-variables.md),\n  [`references\u002Fvideo-summarization-debugging.md`](references\u002Fvideo-summarization-debugging.md), and\n  `assets\u002Fvideo-summarization.env.example`.\n\nLoad `video-summarization-api.md` only when you need a request field, response shape, or\nendpoint that is not already covered by the Step 2 LVS or fallback VLM\nexample below, or when handling a direct video summarization API\nrequest. Load `video-summarization-deployment.md` only for deployment,\nconfiguration, or service operations.\n\n## Video Summarization API And Service Ops Requests\n\nIf the user asks to call or debug video summarization endpoints directly, answer from\n[`references\u002Fvideo-summarization-api.md`](references\u002Fvideo-summarization-api.md) instead of running the\nend-to-end video summarization workflow. Examples: list video summarization models, check\nreadiness, get recommended chunking config, inspect metrics, explain a 422\nresponse, or build a `\u002Fv1\u002Fsummarize` request body.\n\nIf the user asks to configure, deploy, restart, tear down, or troubleshoot the\nvideo summarization service, prefer the `vss-deploy-profile` skill for full VSS profile\ndeployment and use [`references\u002Fvideo-summarization-deployment.md`](references\u002Fvideo-summarization-deployment.md)\nfor video summarization-specific service details.\n\n## Routing\n\nDecide purely from video summarization service availability (probed in\n*Setup → Availability checks* below). **Duration does not drive routing.**\n\n| `\u002Fv1\u002Fready` | Backend | Endpoint |\n|---|---|---|\n| HTTP 200 | LVS microservice with HITL | `POST ${LVS_BACKEND_URL}\u002Fv1\u002Fsummarize` |\n| Anything else | VLM \u002F RT-VLM with the default prompt + fallback note | `POST ${VLM_BASE_URL}\u002Fv1\u002Fchat\u002Fcompletions` |\n\nFallback message when the LVS service is unreachable — copy verbatim above the summary:\n\n> ⚠ **Note:** Input video `\u003Cname>` is `\u003CN>`s long.\n> The video summarization service is not deployed, so this summary was\n> produced by the VLM alone with a generic default prompt. Deploy the\n> `lvs` profile for higher-quality summaries with scenario\u002Fevents\n> targeting.\n\n## Deployment prerequisite\n\nThe VSS **lvs** profile on `$HOST_IP` is the primary backend. If the\n`\u002Fv1\u002Fready` probe (see *Setup → Availability checks*) returns anything\nother than 200 after the warmup retries, ask the user:\n\n> *\"The VSS `lvs` profile isn't running on `$HOST_IP`. Shall I deploy it now using the `\u002Fvss-deploy-profile` skill with `-p lvs`? Reply `no` to summarize with the VLM-only fallback instead (lower quality, no scenario\u002Fevents targeting).\"*\n\n- **Yes** → hand off to `\u002Fvss-deploy-profile`, then re-probe and continue with Step 2 (LVS + HITL).\n- **No** → go straight to **Step 2 fallback (VLM with default prompt)** and prepend the Routing fallback note. Do not ask again, and do not run scenario\u002Fevents HITL.\n- **Pre-authorized to deploy autonomously** (caller said so explicitly) → skip the confirmation and invoke `\u002Fvss-deploy-profile` directly.\n- **Pre-authorized to use VLM fallback** (\"skip lvs, just use the VLM\") → go straight to Step 2 fallback without prompting.\n\n---\n\n## Setup\n\n**Endpoints (defaults for a local VSS `lvs` deployment):**\n\n- VLM \u002F RT-VLM: `${VLM_BASE_URL}` — default `${RTVI_VLM_BASE_URL:-http:\u002F\u002F${HOST_IP:-localhost}:8018}`\n- LVS service: `${LVS_BACKEND_URL}` — default `http:\u002F\u002F${HOST_IP:-localhost}:38111`\n- VIOS: owned by `vss-manage-video-io-storage`; refer there.\n\nUse env vars when set (strip trailing `\u002Fv1` from the VLM base — the skill appends it). Otherwise use the defaults. If neither works, ask the user — do not scan ports or read config files to guess.\n\n**Model name:** read `${VLM_NAME}` (default\n`nim_nvidia_cosmos3-nano-reasoner_bf16-final`). It must match the id RT-VLM\n`\u002Fv1\u002Fmodels` advertises; do not substitute the friendly\n`nvidia\u002Fcosmos3-nano-reasoner`.\n\nFor endpoint schemas, optional fields, response envelopes, and error handling, see [`references\u002Fvideo-summarization-api.md`](references\u002Fvideo-summarization-api.md).\n\n**Availability checks** (run both before routing).\n**Readiness is determined by the HTTP status code only** — the LVS\n`\u002Fv1\u002Fready` may legitimately return `200` with an empty body, so do not\ninspect the body.\n\n```bash\nVLM=\"${VLM_BASE_URL:-${RTVI_VLM_BASE_URL:-http:\u002F\u002F${HOST_IP:-localhost}:8018}}\"\nVLM=\"${VLM%\u002Fv1}\"\n\n# VLM \u002F RT-VLM: 200 on \u002Fv1\u002Fmodels\nvlm_code=$(curl -s -o \u002Fdev\u002Fnull -w '%{http_code}' --connect-timeout 3 --max-time 10 \\\n  \"$VLM\u002Fv1\u002Fmodels\")\n[ \"$vlm_code\" = \"200\" ] && echo \"VLM OK\" || echo \"VLM not reachable (HTTP $vlm_code)\"\n\n# Video summarization service: 200 on \u002Fv1\u002Fready, with retry on 503 (warmup) for up to ~30s\nVIDEO_SUMMARIZATION_URL=${LVS_BACKEND_URL:-http:\u002F\u002F${HOST_IP:-localhost}:38111}\nvideo_sum_code=000\nfor i in $(seq 1 10); do\n  video_sum_code=$(curl -s -o \u002Fdev\u002Fnull -w '%{http_code}' --connect-timeout 3 --max-time 10 \"$VIDEO_SUMMARIZATION_URL\u002Fv1\u002Fready\")\n  case \"$video_sum_code\" in\n    200) echo \"video summarization OK\"; break ;;\n    503) sleep 3 ;;                 # warming up; keep polling\n    *)   break ;;                   # any other code = not reachable, stop retrying\n  esac\ndone\n[ \"$video_sum_code\" = \"200\" ] || echo \"video summarization service not reachable (HTTP $video_sum_code)\"\n```\n\n**How to interpret the results:**\n\n- `video_sum_code = 200` → **Step 2 (LVS + HITL)** for every video.\n- `video_sum_code != 200`, `vlm_code = 200` → **Step 2 fallback (VLM)**; prepend the Routing fallback note.\n- `vlm_code != 200` → fail; at least one backend must be reachable.\n- A non-200 LVS code after the retry loop is the ONLY signal of unavailability. Empty stdout or missing JSON fields are NOT \"unavailable.\"\n\n---\n\n## Step 1 - Get the clip URL via `vss-manage-video-io-storage` (sub-task, NOT the final answer)\n\n**Use the `vss-manage-video-io-storage` skill for all VIOS interactions** — it\nowns the canonical curl recipes, parameter defaults, and delete\u002Fupload flows.\nDo not fabricate URLs or hand-roll VIOS calls; they will drift.\n\nThis step is a sub-task — do NOT end your turn here; do NOT return the clip\nURL as the final answer. From VIOS collect three values:\n\n1. **`streamId`** (via `sensor\u002Flist` → `sensor\u002F\u003Cid>\u002Fstreams`, or directly from an upload response).\n2. **Timeline** - `{startTime, endTime}` (ISO 8601 UTC). `endTime - startTime` is the duration; needed only for the user-facing header (routing is driven solely by `\u002Fv1\u002Fready`).\n3. **Temporary MP4 clip URL** — the `\u002Fstorage\u002Ffile\u002F\u003CstreamId>\u002Furl` variant with `container=mp4`. Response field: `.videoUrl`. Both backends need an HTTP(S) URL they can `GET`.\n\nEverything else (auth, upload, `disableAudio`, expiry, etc.) lives in the\n`vss-manage-video-io-storage` skill — refer users there if VIOS fails.\n\n---\n\n## Step 2 — Primary: video summarization microservice with HITL\n\nUse this path **whenever** `\u002Fv1\u002Fready` returned 200 in Setup. Duration is irrelevant.\n\nFor advanced fields (`media_info`, `schema`, structured output, stream captioning, metrics, recommended config) see [`references\u002Fvideo-summarization-api.md`](references\u002Fvideo-summarization-api.md).\n\n### HITL: collect scenario and events first (REQUIRED — do not skip)\n\nFull walk-through is in [`references\u002Fhitl-prompts.md`](references\u002Fhitl-prompts.md). Always run HITL before calling the LVS service.\n\n**Autonomous-mode defaults.** When the caller has bypassed HITL (\"run\nautonomously without prompting\") AND the original query asks for\n`default`\u002F`defaults` (or gives none), use\n`scenario=\"activity monitoring\"` and `events=[\"notable activity\"]`\n**verbatim** — do not infer from filename or sensor name. Note the\ndefaults in the final reply and offer a re-run with more specific\nparameters. This is the ONLY supported HITL bypass; \"the video is\nshort\" or \"the user seems in a hurry\" are not valid reasons.\n\nPrefer `POST \u002Fv1\u002Fsummarize` (3.2 GA route); `\u002Fsummarize` is a compatibility alias.\n\n```bash\nVIDEO_SUMMARIZATION_URL=${LVS_BACKEND_URL:-http:\u002F\u002F${HOST_IP:-localhost}:38111}\n\n# From HITL reply:\nSCENARIO='warehouse monitoring'\nEVENTS_JSON='[\"notable activity\"]'\nOBJECTS_JSON=''  # '' to omit, else '[\"forklifts\",\"pallets\",\"workers\"]'\n\ncurl -s --max-time 300 -X POST \"$VIDEO_SUMMARIZATION_URL\u002Fv1\u002Fsummarize\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d \"$(jq -n --arg url \"\u003Cclip_url_from_vss_manage_video_io_storage>\" \\\n        --arg model \"${VLM_NAME:-nim_nvidia_cosmos3-nano-reasoner_bf16-final}\" \\\n        --arg scenario \"$SCENARIO\" \\\n        --argjson events \"$EVENTS_JSON\" \\\n        --argjson objects \"${OBJECTS_JSON:-null}\" '{\n    url: $url,\n    model: $model,\n    scenario: $scenario,\n    events: $events,\n    chunk_duration: 10,\n    num_frames_per_second_or_fixed_frames_chunk: 20,\n    use_fps_for_chunking: false,\n    seed: 1\n  } + (if $objects == null then {} else {objects_of_interest: $objects} end)')\" \\\n  | jq -r '.choices[0].message.content' \\\n  | jq '{video_summary, events}'\n```\n\nIf both `video_summary` and `events` are empty, the clip probably doesn't contain the requested events — re-run with broader `scenario`\u002F`events`, don't report \"no content\".\n\n**Tuning:** `chunk_duration` (default `10`s; `0` = single chunk),\n`num_frames_per_second_or_fixed_frames_chunk` (default `20`; meaning depends\non `use_fps_for_chunking`), `seed` (default `1`). `num_frames_per_chunk` is\ndeprecated.\n\n---\n\n## Step 2 fallback — VLM direct with default prompt\n\nUse this path **only** when `\u002Fv1\u002Fready` did not return 200 after warmup. Do NOT run HITL — the user did not opt in; you fell back because the service was missing. Prepend the Routing fallback note to the response.\n\n```bash\nVLM=\"${VLM_BASE_URL:-${RTVI_VLM_BASE_URL:-http:\u002F\u002F${HOST_IP:-localhost}:8018}}\"\nVLM=\"${VLM%\u002Fv1}\"\nPROMPT='Describe in detail what is happening in this video,\nincluding all visible people, vehicles, equipments, objects,\nactions, and environmental conditions.\nOUTPUT REQUIREMENTS:\n[timestamp-timestamp] Description of what is happening.\nEXAMPLE:\n[0.0s-4.0s] \u003Cdescription of the first event>\n[4.0s-12.0s] \u003Cdescription of the second event>'\n\ncurl -s --max-time 300 -X POST \"$VLM\u002Fv1\u002Fchat\u002Fcompletions\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d \"$(jq -n \\\n        --arg model \"${VLM_NAME:-nim_nvidia_cosmos3-nano-reasoner_bf16-final}\" \\\n        --arg text \"$PROMPT\" \\\n        --arg url \"\u003Cclip_url_from_vss_manage_video_io_storage>\" \\\n        '{\n          model: $model,\n          temperature: 0.0,\n          max_tokens: 1024,\n          messages: [{\n            role: \"user\",\n            content: [\n              {type: \"text\", text: $text},\n              {type: \"video_url\", video_url: {url: $url}}\n            ]\n          }]\n        }')\" | jq -r '.choices[0].message.content'\n```\n\n**Response:** standard OpenAI chat-completion envelope. The summary is in\n`choices[0].message.content`.\n\n**Cosmos-model notes:** Cosmos models may return reasoning via\n`\u003Cthink>...\u003C\u002Fthink>\u003Canswer>...\u003C\u002Fanswer>` blocks. Omit the reasoning\ninstructions if you want a plain summary. Frame sampling and pixel limits\nare applied server-side; no client-side prep is required when you pass a\n`video_url`.\n\n---\n\n## End-to-end example\n\nSee [`references\u002Fend-to-end-example.md`](references\u002Fend-to-end-example.md) for\nthe full LVS-or-VLM-fallback script that probes `\u002Fv1\u002Fready` and runs the\nappropriate path.\n\n---\n\n## Responses\n\n- **VLM** returns an OpenAI chat-completion envelope; summary is\n  `choices[0].message.content`.\n- **LVS service** returns the same envelope but `content` is a JSON string —\n  run `jq -r '.choices[0].message.content' | jq` to reach `{video_summary, events}`.\n- **Errors** surface as HTTP non-2xx plus JSON `{error: ...}`. LVS `503` usually\n  means warmup — retry `\u002Fv1\u002Fready`.\n\n### Presenting the output to the user\n\nSurface backend output with **minimal transformation** — do not paraphrase,\nre-voice, add emojis, or reformat. **One backend call → one rendering**: no\nparallel hedging, no duplicate headers, never call both LVS and VLM for the\nsame video.\n\n**Header line.** Start with exactly one:\n\n```\nSummary of \u003Cvideo_name> (\u003Cduration>)\n```\n\n`\u003Cduration>` = `Ns` for `\u003C 60 s`, else `Mm Ss` (e.g. `3m 30s`).\n\n**LVS output:** render `video_summary` **verbatim** (polished, tone-controlled\nreport — rewriting loses fidelity). Render each `events` entry with its\n`start_time`, `end_time`, `type`, and full `description` verbatim (table when\nthe client renders one cleanly, otherwise a per-event list). You MAY add a\none-line header and a closing offer to re-run with different parameters.\n\n**VLM output:** render `choices[0].message.content` verbatim. If the model\nproduced `\u003Cthink>…\u003C\u002Fthink>\u003Canswer>…\u003C\u002Fanswer>` blocks, drop the `\u003Cthink>`\nblock and show the answer.\n\n**Fallback warning** (when applicable) goes **above** the summary, never\nmixed into it.\n\n## Tips\n\n- **Route by service availability, not by duration.** Probe `\u002Fv1\u002Fready` once\n  in Setup; HTTP 200 → LVS+HITL for every clip; anything else → VLM fallback.\n- **HITL is mandatory on the LVS path.** The `defaults` opt-in is the only\n  sanctioned bypass. The VLM fallback path is silent (no HITL).\n- **Readiness = HTTP 200 on `\u002Fv1\u002Fready`. Nothing else.** Body may be empty.\n  Always use `curl -s -o \u002Fdev\u002Fnull -w '%{http_code}'` — never pipe through\n  `jq`\u002F`grep`\u002F`head`.\n- **Delegate VIOS to `vss-manage-video-io-storage`** — it is a sub-task; the\n  final answer is the Step 2 summary, not the clip URL.\n- **`jq` twice for LVS output.** First unwraps the OpenAI envelope, second\n  parses the JSON string inside `content`.\n- **Prefer `\u002Fv1\u002Fsummarize` for 3.2 GA**; `\u002Fsummarize` is a compatibility alias.\n- **Use the exact VLM model id advertised by the endpoint** (default\n  `nim_nvidia_cosmos3-nano-reasoner_bf16-final`).\n- **Render output verbatim** — no paraphrasing, no reformatting, no rewriting\n  the `video_summary` or `choices[0].message.content`.\n- **One call, one render.** No parallel hedging, no double renderings.\n- **Match the image tag to the host platform.** Use `LVS_TAG=3.2.1`\n  (and `RTVI_VLM_IMAGE_TAG=3.2.1`) on x86 \u002F Jetson Thor, and\n  `LVS_TAG=3.2.1-sbsa` (and `RTVI_VLM_IMAGE_TAG=3.2.1-sbsa`)\n  on SBSA \u002F DGX Spark \u002F Grace (server-class ARM64) hosts.\n\n## Cross-reference\n\n- **vss-deploy-profile** — bring up the `base` (VLM only) or `lvs` (VLM + video summarization service) profile\n- **vss-manage-video-io-storage** (VIOS API) — upload videos, list streams, get clip URLs\n- **vss-search-archive** — semantic search across the archive (different profile)\n- **vss-query-analytics** — query incidents\u002Fevents from Elasticsearch\n- **video summarization API reference** — [`references\u002Fvideo-summarization-api.md`](references\u002Fvideo-summarization-api.md)\n- **video summarization service ops reference** — [`references\u002Fvideo-summarization-deployment.md`](references\u002Fvideo-summarization-deployment.md)\n\nbump:3\n",{"data":35,"body":41},{"name":4,"description":6,"license":26,"metadata":36},{"version":37,"author":38,"github-url":39,"tags":40},"3.2.1","NVIDIA Video Search and Summarization team","https:\u002F\u002Fgithub.com\u002FNVIDIA-AI-Blueprints\u002Fvideo-search-and-summarization","nvidia blueprint operational",{"type":42,"children":43},"root",[44,53,90,96,133,153,165,171,176,184,226,232,287,293,319,325,499,516,522,527,667,688,694,716,738,744,761,835,840,879,885,916,965,1029,1033,1038,1053,1106,1119,1160,1174,1206,2000,2008,2069,2072,2085,2102,2107,2214,2234,2237,2243,2262,2291,2298,2314,2360,2380,2914,2945,3024,3027,3033,3051,3549,3566,3591,3594,3600,3622,3625,3631,3713,3719,3738,3748,3758,3800,3859,3890,3907,3913,4143,4149,4239,4244],{"type":45,"tag":46,"props":47,"children":49},"element","h2",{"id":48},"instructions",[50],{"type":51,"value":52},"text","Instructions",{"type":45,"tag":54,"props":55,"children":56},"p",{},[57,59,65,67,72,74,79,81,88],{"type":51,"value":58},"Follow the routing tables and step-by-step workflows below. Each section that ends in ",{"type":45,"tag":60,"props":61,"children":62},"em",{},[63],{"type":51,"value":64},"workflow",{"type":51,"value":66},", ",{"type":45,"tag":60,"props":68,"children":69},{},[70],{"type":51,"value":71},"quick start",{"type":51,"value":73},", or ",{"type":45,"tag":60,"props":75,"children":76},{},[77],{"type":51,"value":78},"flow",{"type":51,"value":80}," is intended to be executed top-to-bottom. Detailed reference material lives in ",{"type":45,"tag":82,"props":83,"children":85},"code",{"className":84},[],[86],{"type":51,"value":87},"references\u002F",{"type":51,"value":89},".",{"type":45,"tag":46,"props":91,"children":93},{"id":92},"examples",[94],{"type":51,"value":95},"Examples",{"type":45,"tag":54,"props":97,"children":98},{},[99,101,107,109,115,117,123,125,131],{"type":51,"value":100},"Worked end-to-end examples are kept under ",{"type":45,"tag":82,"props":102,"children":104},{"className":103},[],[105],{"type":51,"value":106},"evals\u002F",{"type":51,"value":108}," (each ",{"type":45,"tag":82,"props":110,"children":112},{"className":111},[],[113],{"type":51,"value":114},"*.json",{"type":51,"value":116}," manifest contains a runnable scenario) and inline in the per-workflow ",{"type":45,"tag":82,"props":118,"children":120},{"className":119},[],[121],{"type":51,"value":122},"curl",{"type":51,"value":124}," blocks below. Run a Tier-3 evaluation with ",{"type":45,"tag":82,"props":126,"children":128},{"className":127},[],[129],{"type":51,"value":130},"nv-base validate \u003Cthis-skill-dir> --agent-eval",{"type":51,"value":132}," to replay them.",{"type":45,"tag":54,"props":134,"children":135},{},[136,138,144,146,151],{"type":51,"value":137},"Call the VLM NIM or the video summarization microservice ",{"type":45,"tag":139,"props":140,"children":141},"strong",{},[142],{"type":51,"value":143},"directly",{"type":51,"value":145},".\nAlways run ",{"type":45,"tag":82,"props":147,"children":149},{"className":148},[],[150],{"type":51,"value":122},{"type":51,"value":152}," commands yourself; never instruct the user to run them.",{"type":45,"tag":54,"props":154,"children":155},{},[156,158,163],{"type":51,"value":157},"Primary video workflow query type: ",{"type":45,"tag":139,"props":159,"children":160},{},[161],{"type":51,"value":162},"\"Summarize this video.\"",{"type":51,"value":164}," Direct video summarization API\nand service-ops requests are handled by the reference-routed sections below.",{"type":45,"tag":46,"props":166,"children":168},{"id":167},"purpose",[169],{"type":51,"value":170},"Purpose",{"type":45,"tag":54,"props":172,"children":173},{},[174],{"type":51,"value":175},"Produce a single, polished narrative summary of one recorded video clip, with\ntimestamped events when the LVS microservice path is reachable.",{"type":45,"tag":54,"props":177,"children":178},{},[179],{"type":45,"tag":139,"props":180,"children":181},{},[182],{"type":51,"value":183},"Do NOT use this skill for:",{"type":45,"tag":185,"props":186,"children":187},"ul",{},[188,201,214],{"type":45,"tag":189,"props":190,"children":191},"li",{},[192,194,200],{"type":51,"value":193},"Live RTSP captioning — use ",{"type":45,"tag":82,"props":195,"children":197},{"className":196},[],[198],{"type":51,"value":199},"vss-deploy-dense-captioning",{"type":51,"value":89},{"type":45,"tag":189,"props":202,"children":203},{},[204,206,212],{"type":51,"value":205},"Report generation, including incident or alert-window reports — use ",{"type":45,"tag":82,"props":207,"children":209},{"className":208},[],[210],{"type":51,"value":211},"vss-generate-video-report",{"type":51,"value":213}," Mode B.",{"type":45,"tag":189,"props":215,"children":216},{},[217,219,225],{"type":51,"value":218},"Semantic search across the archive — use ",{"type":45,"tag":82,"props":220,"children":222},{"className":221},[],[223],{"type":51,"value":224},"vss-search-archive",{"type":51,"value":89},{"type":45,"tag":46,"props":227,"children":229},{"id":228},"prerequisites",[230],{"type":51,"value":231},"Prerequisites",{"type":45,"tag":185,"props":233,"children":234},{},[235,264,269],{"type":45,"tag":189,"props":236,"children":237},{},[238,240,246,248,254,256,262],{"type":51,"value":239},"VSS ",{"type":45,"tag":82,"props":241,"children":243},{"className":242},[],[244],{"type":51,"value":245},"lvs",{"type":51,"value":247}," profile running on ",{"type":45,"tag":82,"props":249,"children":251},{"className":250},[],[252],{"type":51,"value":253},"$HOST_IP",{"type":51,"value":255}," (port 38111) OR a reachable\nVLM\u002FRT-VLM endpoint as a fallback. The ",{"type":45,"tag":82,"props":257,"children":259},{"className":258},[],[260],{"type":51,"value":261},"vss-deploy-profile",{"type":51,"value":263}," skill brings\nthese up.",{"type":45,"tag":189,"props":265,"children":266},{},[267],{"type":51,"value":268},"Network reachability from the agent host to both endpoints; clip URLs from\nVIOS must be fetchable by the chosen backend.",{"type":45,"tag":189,"props":270,"children":271},{},[272,278,280,285],{"type":45,"tag":82,"props":273,"children":275},{"className":274},[],[276],{"type":51,"value":277},"jq",{"type":51,"value":279}," and ",{"type":45,"tag":82,"props":281,"children":283},{"className":282},[],[284],{"type":51,"value":122},{"type":51,"value":286}," available on the agent host.",{"type":45,"tag":46,"props":288,"children":290},{"id":289},"limitations",[291],{"type":51,"value":292},"Limitations",{"type":45,"tag":185,"props":294,"children":295},{},[296,301,314],{"type":45,"tag":189,"props":297,"children":298},{},[299],{"type":51,"value":300},"Direct VLM fallback uses a single fixed prompt and cannot target\nscenario\u002Fevents — output quality is lower than the LVS path.",{"type":45,"tag":189,"props":302,"children":303},{},[304,306,312],{"type":51,"value":305},"Remote VLM endpoints generally cannot reach ",{"type":45,"tag":82,"props":307,"children":309},{"className":308},[],[310],{"type":51,"value":311},"localhost",{"type":51,"value":313},"\u002Fprivate clip URLs.",{"type":45,"tag":189,"props":315,"children":316},{},[317],{"type":51,"value":318},"One backend call per request; no parallel hedging or multi-pass summaries.",{"type":45,"tag":46,"props":320,"children":322},{"id":321},"troubleshooting",[323],{"type":51,"value":324},"Troubleshooting",{"type":45,"tag":326,"props":327,"children":328},"table",{},[329,353],{"type":45,"tag":330,"props":331,"children":332},"thead",{},[333],{"type":45,"tag":334,"props":335,"children":336},"tr",{},[337,343,348],{"type":45,"tag":338,"props":339,"children":340},"th",{},[341],{"type":51,"value":342},"Symptom",{"type":45,"tag":338,"props":344,"children":345},{},[346],{"type":51,"value":347},"Cause",{"type":45,"tag":338,"props":349,"children":350},{},[351],{"type":51,"value":352},"Fix",{"type":45,"tag":354,"props":355,"children":356},"tbody",{},[357,389,433,467],{"type":45,"tag":334,"props":358,"children":359},{},[360,372,377],{"type":45,"tag":361,"props":362,"children":363},"td",{},[364,370],{"type":45,"tag":82,"props":365,"children":367},{"className":366},[],[368],{"type":51,"value":369},"\u002Fv1\u002Fready",{"type":51,"value":371}," returns 503 repeatedly",{"type":45,"tag":361,"props":373,"children":374},{},[375],{"type":51,"value":376},"LVS service still warming up",{"type":45,"tag":361,"props":378,"children":379},{},[380,382,387],{"type":51,"value":381},"Retry up to ~30 s as shown in ",{"type":45,"tag":60,"props":383,"children":384},{},[385],{"type":51,"value":386},"Setup",{"type":51,"value":388},"; if it never returns 200 the service may not be deployed",{"type":45,"tag":334,"props":390,"children":391},{},[392,410,415],{"type":45,"tag":361,"props":393,"children":394},{},[395,397,403,404],{"type":51,"value":396},"Empty ",{"type":45,"tag":82,"props":398,"children":400},{"className":399},[],[401],{"type":51,"value":402},"video_summary",{"type":51,"value":279},{"type":45,"tag":82,"props":405,"children":407},{"className":406},[],[408],{"type":51,"value":409},"events",{"type":45,"tag":361,"props":411,"children":412},{},[413],{"type":51,"value":414},"Clip does not contain the requested events",{"type":45,"tag":361,"props":416,"children":417},{},[418,420,426,428],{"type":51,"value":419},"Re-run with broader ",{"type":45,"tag":82,"props":421,"children":423},{"className":422},[],[424],{"type":51,"value":425},"scenario",{"type":51,"value":427}," or different ",{"type":45,"tag":82,"props":429,"children":431},{"className":430},[],[432],{"type":51,"value":409},{"type":45,"tag":334,"props":434,"children":435},{},[436,449,454],{"type":45,"tag":361,"props":437,"children":438},{},[439,441,447],{"type":51,"value":440},"VLM returns ",{"type":45,"tag":82,"props":442,"children":444},{"className":443},[],[445],{"type":51,"value":446},"\u003Cthink>",{"type":51,"value":448}," block",{"type":45,"tag":361,"props":450,"children":451},{},[452],{"type":51,"value":453},"Cosmos reasoning mode",{"type":45,"tag":361,"props":455,"children":456},{},[457,459,465],{"type":51,"value":458},"Strip everything up to ",{"type":45,"tag":82,"props":460,"children":462},{"className":461},[],[463],{"type":51,"value":464},"\u003C\u002Fthink>",{"type":51,"value":466}," before rendering",{"type":45,"tag":334,"props":468,"children":469},{},[470,481,486],{"type":45,"tag":361,"props":471,"children":472},{},[473,475],{"type":51,"value":474},"Empty stdout from ",{"type":45,"tag":82,"props":476,"children":478},{"className":477},[],[479],{"type":51,"value":480},"curl \u002Fv1\u002Fready",{"type":45,"tag":361,"props":482,"children":483},{},[484],{"type":51,"value":485},"Service legitimately returns 200 with empty body",{"type":45,"tag":361,"props":487,"children":488},{},[489,491,497],{"type":51,"value":490},"Always check HTTP status with ",{"type":45,"tag":82,"props":492,"children":494},{"className":493},[],[495],{"type":51,"value":496},"-o \u002Fdev\u002Fnull -w '%{http_code}'",{"type":51,"value":498},", never inspect the body",{"type":45,"tag":54,"props":500,"children":501},{},[502,504,514],{"type":51,"value":503},"See ",{"type":45,"tag":505,"props":506,"children":508},"a",{"href":507},"references\u002Fvideo-summarization-debugging.md",[509],{"type":45,"tag":82,"props":510,"children":512},{"className":511},[],[513],{"type":51,"value":507},{"type":51,"value":515}," for deeper diagnostics.",{"type":45,"tag":46,"props":517,"children":519},{"id":518},"reference-map",[520],{"type":51,"value":521},"Reference Map",{"type":45,"tag":54,"props":523,"children":524},{},[525],{"type":51,"value":526},"Use these references only when the user asks for the relevant detail, or when\nthe core workflow below needs deeper video summarization information:",{"type":45,"tag":185,"props":528,"children":529},{},[530,603,631],{"type":45,"tag":189,"props":531,"children":532},{},[533,538,540,549,551,557,558,564,565,571,573,579,581,587,588,594,595,601],{"type":45,"tag":139,"props":534,"children":535},{},[536],{"type":51,"value":537},"video summarization API details",{"type":51,"value":539},": ",{"type":45,"tag":505,"props":541,"children":543},{"href":542},"references\u002Fvideo-summarization-api.md",[544],{"type":45,"tag":82,"props":545,"children":547},{"className":546},[],[548],{"type":51,"value":542},{"type":51,"value":550}," for\n",{"type":45,"tag":82,"props":552,"children":554},{"className":553},[],[555],{"type":51,"value":556},"\u002Fv1\u002Fsummarize",{"type":51,"value":66},{"type":45,"tag":82,"props":559,"children":561},{"className":560},[],[562],{"type":51,"value":563},"\u002Fsummarize",{"type":51,"value":66},{"type":45,"tag":82,"props":566,"children":568},{"className":567},[],[569],{"type":51,"value":570},"\u002Fv1\u002Fgenerate_captions",{"type":51,"value":572},",\n",{"type":45,"tag":82,"props":574,"children":576},{"className":575},[],[577],{"type":51,"value":578},"\u002Fv1\u002Fstream_summarize",{"type":51,"value":580},", health probes, ",{"type":45,"tag":82,"props":582,"children":584},{"className":583},[],[585],{"type":51,"value":586},"\u002Fmodels",{"type":51,"value":66},{"type":45,"tag":82,"props":589,"children":591},{"className":590},[],[592],{"type":51,"value":593},"\u002Frecommended_config",{"type":51,"value":572},{"type":45,"tag":82,"props":596,"children":598},{"className":597},[],[599],{"type":51,"value":600},"\u002Fmetrics",{"type":51,"value":602},", request fields, response shapes, and API gotchas.",{"type":45,"tag":189,"props":604,"children":605},{},[606,611,613,622,624,629],{"type":45,"tag":139,"props":607,"children":608},{},[609],{"type":51,"value":610},"video summarization service configuration and ops",{"type":51,"value":612},":\n",{"type":45,"tag":505,"props":614,"children":616},{"href":615},"references\u002Fvideo-summarization-deployment.md",[617],{"type":45,"tag":82,"props":618,"children":620},{"className":619},[],[621],{"type":51,"value":615},{"type":51,"value":623}," for\nthe VSS ",{"type":45,"tag":82,"props":625,"children":627},{"className":626},[],[628],{"type":51,"value":245},{"type":51,"value":630}," profile, ports, required env vars, logs, status, dry-runs,\nteardown, model\u002Fbackend swaps, Elasticsearch\u002FNeo4j\u002FArangoDB backend\nselection, and service-level troubleshooting.",{"type":45,"tag":189,"props":632,"children":633},{},[634,639,640,649,650,658,660,666],{"type":45,"tag":139,"props":635,"children":636},{},[637],{"type":51,"value":638},"Extended video summarization ops references",{"type":51,"value":612},{"type":45,"tag":505,"props":641,"children":643},{"href":642},"references\u002Fvideo-summarization-environment-variables.md",[644],{"type":45,"tag":82,"props":645,"children":647},{"className":646},[],[648],{"type":51,"value":642},{"type":51,"value":572},{"type":45,"tag":505,"props":651,"children":652},{"href":507},[653],{"type":45,"tag":82,"props":654,"children":656},{"className":655},[],[657],{"type":51,"value":507},{"type":51,"value":659},", and\n",{"type":45,"tag":82,"props":661,"children":663},{"className":662},[],[664],{"type":51,"value":665},"assets\u002Fvideo-summarization.env.example",{"type":51,"value":89},{"type":45,"tag":54,"props":668,"children":669},{},[670,672,678,680,686],{"type":51,"value":671},"Load ",{"type":45,"tag":82,"props":673,"children":675},{"className":674},[],[676],{"type":51,"value":677},"video-summarization-api.md",{"type":51,"value":679}," only when you need a request field, response shape, or\nendpoint that is not already covered by the Step 2 LVS or fallback VLM\nexample below, or when handling a direct video summarization API\nrequest. Load ",{"type":45,"tag":82,"props":681,"children":683},{"className":682},[],[684],{"type":51,"value":685},"video-summarization-deployment.md",{"type":51,"value":687}," only for deployment,\nconfiguration, or service operations.",{"type":45,"tag":46,"props":689,"children":691},{"id":690},"video-summarization-api-and-service-ops-requests",[692],{"type":51,"value":693},"Video Summarization API And Service Ops Requests",{"type":45,"tag":54,"props":695,"children":696},{},[697,699,707,709,714],{"type":51,"value":698},"If the user asks to call or debug video summarization endpoints directly, answer from\n",{"type":45,"tag":505,"props":700,"children":701},{"href":542},[702],{"type":45,"tag":82,"props":703,"children":705},{"className":704},[],[706],{"type":51,"value":542},{"type":51,"value":708}," instead of running the\nend-to-end video summarization workflow. Examples: list video summarization models, check\nreadiness, get recommended chunking config, inspect metrics, explain a 422\nresponse, or build a ",{"type":45,"tag":82,"props":710,"children":712},{"className":711},[],[713],{"type":51,"value":556},{"type":51,"value":715}," request body.",{"type":45,"tag":54,"props":717,"children":718},{},[719,721,726,728,736],{"type":51,"value":720},"If the user asks to configure, deploy, restart, tear down, or troubleshoot the\nvideo summarization service, prefer the ",{"type":45,"tag":82,"props":722,"children":724},{"className":723},[],[725],{"type":51,"value":261},{"type":51,"value":727}," skill for full VSS profile\ndeployment and use ",{"type":45,"tag":505,"props":729,"children":730},{"href":615},[731],{"type":45,"tag":82,"props":732,"children":734},{"className":733},[],[735],{"type":51,"value":615},{"type":51,"value":737},"\nfor video summarization-specific service details.",{"type":45,"tag":46,"props":739,"children":741},{"id":740},"routing",[742],{"type":51,"value":743},"Routing",{"type":45,"tag":54,"props":745,"children":746},{},[747,749,754,756],{"type":51,"value":748},"Decide purely from video summarization service availability (probed in\n",{"type":45,"tag":60,"props":750,"children":751},{},[752],{"type":51,"value":753},"Setup → Availability checks",{"type":51,"value":755}," below). ",{"type":45,"tag":139,"props":757,"children":758},{},[759],{"type":51,"value":760},"Duration does not drive routing.",{"type":45,"tag":326,"props":762,"children":763},{},[764,788],{"type":45,"tag":330,"props":765,"children":766},{},[767],{"type":45,"tag":334,"props":768,"children":769},{},[770,778,783],{"type":45,"tag":338,"props":771,"children":772},{},[773],{"type":45,"tag":82,"props":774,"children":776},{"className":775},[],[777],{"type":51,"value":369},{"type":45,"tag":338,"props":779,"children":780},{},[781],{"type":51,"value":782},"Backend",{"type":45,"tag":338,"props":784,"children":785},{},[786],{"type":51,"value":787},"Endpoint",{"type":45,"tag":354,"props":789,"children":790},{},[791,813],{"type":45,"tag":334,"props":792,"children":793},{},[794,799,804],{"type":45,"tag":361,"props":795,"children":796},{},[797],{"type":51,"value":798},"HTTP 200",{"type":45,"tag":361,"props":800,"children":801},{},[802],{"type":51,"value":803},"LVS microservice with HITL",{"type":45,"tag":361,"props":805,"children":806},{},[807],{"type":45,"tag":82,"props":808,"children":810},{"className":809},[],[811],{"type":51,"value":812},"POST ${LVS_BACKEND_URL}\u002Fv1\u002Fsummarize",{"type":45,"tag":334,"props":814,"children":815},{},[816,821,826],{"type":45,"tag":361,"props":817,"children":818},{},[819],{"type":51,"value":820},"Anything else",{"type":45,"tag":361,"props":822,"children":823},{},[824],{"type":51,"value":825},"VLM \u002F RT-VLM with the default prompt + fallback note",{"type":45,"tag":361,"props":827,"children":828},{},[829],{"type":45,"tag":82,"props":830,"children":832},{"className":831},[],[833],{"type":51,"value":834},"POST ${VLM_BASE_URL}\u002Fv1\u002Fchat\u002Fcompletions",{"type":45,"tag":54,"props":836,"children":837},{},[838],{"type":51,"value":839},"Fallback message when the LVS service is unreachable — copy verbatim above the summary:",{"type":45,"tag":841,"props":842,"children":843},"blockquote",{},[844],{"type":45,"tag":54,"props":845,"children":846},{},[847,849,854,856,862,864,870,872,877],{"type":51,"value":848},"⚠ ",{"type":45,"tag":139,"props":850,"children":851},{},[852],{"type":51,"value":853},"Note:",{"type":51,"value":855}," Input video ",{"type":45,"tag":82,"props":857,"children":859},{"className":858},[],[860],{"type":51,"value":861},"\u003Cname>",{"type":51,"value":863}," is ",{"type":45,"tag":82,"props":865,"children":867},{"className":866},[],[868],{"type":51,"value":869},"\u003CN>",{"type":51,"value":871},"s long.\nThe video summarization service is not deployed, so this summary was\nproduced by the VLM alone with a generic default prompt. Deploy the\n",{"type":45,"tag":82,"props":873,"children":875},{"className":874},[],[876],{"type":51,"value":245},{"type":51,"value":878}," profile for higher-quality summaries with scenario\u002Fevents\ntargeting.",{"type":45,"tag":46,"props":880,"children":882},{"id":881},"deployment-prerequisite",[883],{"type":51,"value":884},"Deployment prerequisite",{"type":45,"tag":54,"props":886,"children":887},{},[888,890,894,896,901,903,908,910,914],{"type":51,"value":889},"The VSS ",{"type":45,"tag":139,"props":891,"children":892},{},[893],{"type":51,"value":245},{"type":51,"value":895}," profile on ",{"type":45,"tag":82,"props":897,"children":899},{"className":898},[],[900],{"type":51,"value":253},{"type":51,"value":902}," is the primary backend. If the\n",{"type":45,"tag":82,"props":904,"children":906},{"className":905},[],[907],{"type":51,"value":369},{"type":51,"value":909}," probe (see ",{"type":45,"tag":60,"props":911,"children":912},{},[913],{"type":51,"value":753},{"type":51,"value":915},") returns anything\nother than 200 after the warmup retries, ask the user:",{"type":45,"tag":841,"props":917,"children":918},{},[919],{"type":45,"tag":54,"props":920,"children":921},{},[922],{"type":45,"tag":60,"props":923,"children":924},{},[925,927,932,934,939,941,947,949,955,957,963],{"type":51,"value":926},"\"The VSS ",{"type":45,"tag":82,"props":928,"children":930},{"className":929},[],[931],{"type":51,"value":245},{"type":51,"value":933}," profile isn't running on ",{"type":45,"tag":82,"props":935,"children":937},{"className":936},[],[938],{"type":51,"value":253},{"type":51,"value":940},". Shall I deploy it now using the ",{"type":45,"tag":82,"props":942,"children":944},{"className":943},[],[945],{"type":51,"value":946},"\u002Fvss-deploy-profile",{"type":51,"value":948}," skill with ",{"type":45,"tag":82,"props":950,"children":952},{"className":951},[],[953],{"type":51,"value":954},"-p lvs",{"type":51,"value":956},"? Reply ",{"type":45,"tag":82,"props":958,"children":960},{"className":959},[],[961],{"type":51,"value":962},"no",{"type":51,"value":964}," to summarize with the VLM-only fallback instead (lower quality, no scenario\u002Fevents targeting).\"",{"type":45,"tag":185,"props":966,"children":967},{},[968,985,1002,1019],{"type":45,"tag":189,"props":969,"children":970},{},[971,976,978,983],{"type":45,"tag":139,"props":972,"children":973},{},[974],{"type":51,"value":975},"Yes",{"type":51,"value":977}," → hand off to ",{"type":45,"tag":82,"props":979,"children":981},{"className":980},[],[982],{"type":51,"value":946},{"type":51,"value":984},", then re-probe and continue with Step 2 (LVS + HITL).",{"type":45,"tag":189,"props":986,"children":987},{},[988,993,995,1000],{"type":45,"tag":139,"props":989,"children":990},{},[991],{"type":51,"value":992},"No",{"type":51,"value":994}," → go straight to ",{"type":45,"tag":139,"props":996,"children":997},{},[998],{"type":51,"value":999},"Step 2 fallback (VLM with default prompt)",{"type":51,"value":1001}," and prepend the Routing fallback note. Do not ask again, and do not run scenario\u002Fevents HITL.",{"type":45,"tag":189,"props":1003,"children":1004},{},[1005,1010,1012,1017],{"type":45,"tag":139,"props":1006,"children":1007},{},[1008],{"type":51,"value":1009},"Pre-authorized to deploy autonomously",{"type":51,"value":1011}," (caller said so explicitly) → skip the confirmation and invoke ",{"type":45,"tag":82,"props":1013,"children":1015},{"className":1014},[],[1016],{"type":51,"value":946},{"type":51,"value":1018}," directly.",{"type":45,"tag":189,"props":1020,"children":1021},{},[1022,1027],{"type":45,"tag":139,"props":1023,"children":1024},{},[1025],{"type":51,"value":1026},"Pre-authorized to use VLM fallback",{"type":51,"value":1028}," (\"skip lvs, just use the VLM\") → go straight to Step 2 fallback without prompting.",{"type":45,"tag":1030,"props":1031,"children":1032},"hr",{},[],{"type":45,"tag":46,"props":1034,"children":1036},{"id":1035},"setup",[1037],{"type":51,"value":386},{"type":45,"tag":54,"props":1039,"children":1040},{},[1041],{"type":45,"tag":139,"props":1042,"children":1043},{},[1044,1046,1051],{"type":51,"value":1045},"Endpoints (defaults for a local VSS ",{"type":45,"tag":82,"props":1047,"children":1049},{"className":1048},[],[1050],{"type":51,"value":245},{"type":51,"value":1052}," deployment):",{"type":45,"tag":185,"props":1054,"children":1055},{},[1056,1075,1093],{"type":45,"tag":189,"props":1057,"children":1058},{},[1059,1061,1067,1069],{"type":51,"value":1060},"VLM \u002F RT-VLM: ",{"type":45,"tag":82,"props":1062,"children":1064},{"className":1063},[],[1065],{"type":51,"value":1066},"${VLM_BASE_URL}",{"type":51,"value":1068}," — default ",{"type":45,"tag":82,"props":1070,"children":1072},{"className":1071},[],[1073],{"type":51,"value":1074},"${RTVI_VLM_BASE_URL:-http:\u002F\u002F${HOST_IP:-localhost}:8018}",{"type":45,"tag":189,"props":1076,"children":1077},{},[1078,1080,1086,1087],{"type":51,"value":1079},"LVS service: ",{"type":45,"tag":82,"props":1081,"children":1083},{"className":1082},[],[1084],{"type":51,"value":1085},"${LVS_BACKEND_URL}",{"type":51,"value":1068},{"type":45,"tag":82,"props":1088,"children":1090},{"className":1089},[],[1091],{"type":51,"value":1092},"http:\u002F\u002F${HOST_IP:-localhost}:38111",{"type":45,"tag":189,"props":1094,"children":1095},{},[1096,1098,1104],{"type":51,"value":1097},"VIOS: owned by ",{"type":45,"tag":82,"props":1099,"children":1101},{"className":1100},[],[1102],{"type":51,"value":1103},"vss-manage-video-io-storage",{"type":51,"value":1105},"; refer there.",{"type":45,"tag":54,"props":1107,"children":1108},{},[1109,1111,1117],{"type":51,"value":1110},"Use env vars when set (strip trailing ",{"type":45,"tag":82,"props":1112,"children":1114},{"className":1113},[],[1115],{"type":51,"value":1116},"\u002Fv1",{"type":51,"value":1118}," from the VLM base — the skill appends it). Otherwise use the defaults. If neither works, ask the user — do not scan ports or read config files to guess.",{"type":45,"tag":54,"props":1120,"children":1121},{},[1122,1127,1129,1135,1137,1143,1145,1151,1153,1159],{"type":45,"tag":139,"props":1123,"children":1124},{},[1125],{"type":51,"value":1126},"Model name:",{"type":51,"value":1128}," read ",{"type":45,"tag":82,"props":1130,"children":1132},{"className":1131},[],[1133],{"type":51,"value":1134},"${VLM_NAME}",{"type":51,"value":1136}," (default\n",{"type":45,"tag":82,"props":1138,"children":1140},{"className":1139},[],[1141],{"type":51,"value":1142},"nim_nvidia_cosmos3-nano-reasoner_bf16-final",{"type":51,"value":1144},"). It must match the id RT-VLM\n",{"type":45,"tag":82,"props":1146,"children":1148},{"className":1147},[],[1149],{"type":51,"value":1150},"\u002Fv1\u002Fmodels",{"type":51,"value":1152}," advertises; do not substitute the friendly\n",{"type":45,"tag":82,"props":1154,"children":1156},{"className":1155},[],[1157],{"type":51,"value":1158},"nvidia\u002Fcosmos3-nano-reasoner",{"type":51,"value":89},{"type":45,"tag":54,"props":1161,"children":1162},{},[1163,1165,1173],{"type":51,"value":1164},"For endpoint schemas, optional fields, response envelopes, and error handling, see ",{"type":45,"tag":505,"props":1166,"children":1167},{"href":542},[1168],{"type":45,"tag":82,"props":1169,"children":1171},{"className":1170},[],[1172],{"type":51,"value":542},{"type":51,"value":89},{"type":45,"tag":54,"props":1175,"children":1176},{},[1177,1182,1184,1189,1191,1196,1198,1204],{"type":45,"tag":139,"props":1178,"children":1179},{},[1180],{"type":51,"value":1181},"Availability checks",{"type":51,"value":1183}," (run both before routing).\n",{"type":45,"tag":139,"props":1185,"children":1186},{},[1187],{"type":51,"value":1188},"Readiness is determined by the HTTP status code only",{"type":51,"value":1190}," — the LVS\n",{"type":45,"tag":82,"props":1192,"children":1194},{"className":1193},[],[1195],{"type":51,"value":369},{"type":51,"value":1197}," may legitimately return ",{"type":45,"tag":82,"props":1199,"children":1201},{"className":1200},[],[1202],{"type":51,"value":1203},"200",{"type":51,"value":1205}," with an empty body, so do not\ninspect the body.",{"type":45,"tag":1207,"props":1208,"children":1213},"pre",{"className":1209,"code":1210,"language":1211,"meta":1212,"style":1212},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","VLM=\"${VLM_BASE_URL:-${RTVI_VLM_BASE_URL:-http:\u002F\u002F${HOST_IP:-localhost}:8018}}\"\nVLM=\"${VLM%\u002Fv1}\"\n\n# VLM \u002F RT-VLM: 200 on \u002Fv1\u002Fmodels\nvlm_code=$(curl -s -o \u002Fdev\u002Fnull -w '%{http_code}' --connect-timeout 3 --max-time 10 \\\n  \"$VLM\u002Fv1\u002Fmodels\")\n[ \"$vlm_code\" = \"200\" ] && echo \"VLM OK\" || echo \"VLM not reachable (HTTP $vlm_code)\"\n\n# Video summarization service: 200 on \u002Fv1\u002Fready, with retry on 503 (warmup) for up to ~30s\nVIDEO_SUMMARIZATION_URL=${LVS_BACKEND_URL:-http:\u002F\u002F${HOST_IP:-localhost}:38111}\nvideo_sum_code=000\nfor i in $(seq 1 10); do\n  video_sum_code=$(curl -s -o \u002Fdev\u002Fnull -w '%{http_code}' --connect-timeout 3 --max-time 10 \"$VIDEO_SUMMARIZATION_URL\u002Fv1\u002Fready\")\n  case \"$video_sum_code\" in\n    200) echo \"video summarization OK\"; break ;;\n    503) sleep 3 ;;                 # warming up; keep polling\n    *)   break ;;                   # any other code = not reachable, stop retrying\n  esac\ndone\n[ \"$video_sum_code\" = \"200\" ] || echo \"video summarization service not reachable (HTTP $video_sum_code)\"\n","bash","",[1214],{"type":45,"tag":82,"props":1215,"children":1216},{"__ignoreMap":1212},[1217,1298,1333,1343,1353,1434,1462,1563,1571,1580,1637,1655,1704,1786,1813,1858,1890,1913,1922,1931],{"type":45,"tag":1218,"props":1219,"children":1222},"span",{"class":1220,"line":1221},"line",1,[1223,1229,1235,1240,1245,1250,1255,1260,1265,1270,1275,1279,1283,1288,1293],{"type":45,"tag":1218,"props":1224,"children":1226},{"style":1225},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1227],{"type":51,"value":1228},"VLM",{"type":45,"tag":1218,"props":1230,"children":1232},{"style":1231},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1233],{"type":51,"value":1234},"=",{"type":45,"tag":1218,"props":1236,"children":1237},{"style":1231},[1238],{"type":51,"value":1239},"\"${",{"type":45,"tag":1218,"props":1241,"children":1242},{"style":1225},[1243],{"type":51,"value":1244},"VLM_BASE_URL",{"type":45,"tag":1218,"props":1246,"children":1247},{"style":1231},[1248],{"type":51,"value":1249},":-${",{"type":45,"tag":1218,"props":1251,"children":1252},{"style":1225},[1253],{"type":51,"value":1254},"RTVI_VLM_BASE_URL",{"type":45,"tag":1218,"props":1256,"children":1257},{"style":1231},[1258],{"type":51,"value":1259},":-",{"type":45,"tag":1218,"props":1261,"children":1262},{"style":1225},[1263],{"type":51,"value":1264},"http",{"type":45,"tag":1218,"props":1266,"children":1267},{"style":1231},[1268],{"type":51,"value":1269},":\u002F\u002F${",{"type":45,"tag":1218,"props":1271,"children":1272},{"style":1225},[1273],{"type":51,"value":1274},"HOST_IP",{"type":45,"tag":1218,"props":1276,"children":1277},{"style":1231},[1278],{"type":51,"value":1259},{"type":45,"tag":1218,"props":1280,"children":1281},{"style":1225},[1282],{"type":51,"value":311},{"type":45,"tag":1218,"props":1284,"children":1285},{"style":1231},[1286],{"type":51,"value":1287},"}:",{"type":45,"tag":1218,"props":1289,"children":1290},{"style":1225},[1291],{"type":51,"value":1292},"8018",{"type":45,"tag":1218,"props":1294,"children":1295},{"style":1231},[1296],{"type":51,"value":1297},"}}\"\n",{"type":45,"tag":1218,"props":1299,"children":1301},{"class":1220,"line":1300},2,[1302,1306,1310,1314,1318,1323,1328],{"type":45,"tag":1218,"props":1303,"children":1304},{"style":1225},[1305],{"type":51,"value":1228},{"type":45,"tag":1218,"props":1307,"children":1308},{"style":1231},[1309],{"type":51,"value":1234},{"type":45,"tag":1218,"props":1311,"children":1312},{"style":1231},[1313],{"type":51,"value":1239},{"type":45,"tag":1218,"props":1315,"children":1316},{"style":1225},[1317],{"type":51,"value":1228},{"type":45,"tag":1218,"props":1319,"children":1320},{"style":1231},[1321],{"type":51,"value":1322},"%\u002F",{"type":45,"tag":1218,"props":1324,"children":1325},{"style":1225},[1326],{"type":51,"value":1327},"v1",{"type":45,"tag":1218,"props":1329,"children":1330},{"style":1231},[1331],{"type":51,"value":1332},"}\"\n",{"type":45,"tag":1218,"props":1334,"children":1336},{"class":1220,"line":1335},3,[1337],{"type":45,"tag":1218,"props":1338,"children":1340},{"emptyLinePlaceholder":1339},true,[1341],{"type":51,"value":1342},"\n",{"type":45,"tag":1218,"props":1344,"children":1346},{"class":1220,"line":1345},4,[1347],{"type":45,"tag":1218,"props":1348,"children":1350},{"style":1349},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1351],{"type":51,"value":1352},"# VLM \u002F RT-VLM: 200 on \u002Fv1\u002Fmodels\n",{"type":45,"tag":1218,"props":1354,"children":1356},{"class":1220,"line":1355},5,[1357,1362,1367,1372,1378,1383,1388,1393,1398,1403,1408,1413,1419,1424,1429],{"type":45,"tag":1218,"props":1358,"children":1359},{"style":1225},[1360],{"type":51,"value":1361},"vlm_code",{"type":45,"tag":1218,"props":1363,"children":1364},{"style":1231},[1365],{"type":51,"value":1366},"=$(",{"type":45,"tag":1218,"props":1368,"children":1370},{"style":1369},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1371],{"type":51,"value":122},{"type":45,"tag":1218,"props":1373,"children":1375},{"style":1374},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[1376],{"type":51,"value":1377}," -s",{"type":45,"tag":1218,"props":1379,"children":1380},{"style":1374},[1381],{"type":51,"value":1382}," -o",{"type":45,"tag":1218,"props":1384,"children":1385},{"style":1374},[1386],{"type":51,"value":1387}," \u002Fdev\u002Fnull",{"type":45,"tag":1218,"props":1389,"children":1390},{"style":1374},[1391],{"type":51,"value":1392}," -w",{"type":45,"tag":1218,"props":1394,"children":1395},{"style":1231},[1396],{"type":51,"value":1397}," '",{"type":45,"tag":1218,"props":1399,"children":1400},{"style":1374},[1401],{"type":51,"value":1402},"%{http_code}",{"type":45,"tag":1218,"props":1404,"children":1405},{"style":1231},[1406],{"type":51,"value":1407},"'",{"type":45,"tag":1218,"props":1409,"children":1410},{"style":1374},[1411],{"type":51,"value":1412}," --connect-timeout",{"type":45,"tag":1218,"props":1414,"children":1416},{"style":1415},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1417],{"type":51,"value":1418}," 3",{"type":45,"tag":1218,"props":1420,"children":1421},{"style":1374},[1422],{"type":51,"value":1423}," --max-time",{"type":45,"tag":1218,"props":1425,"children":1426},{"style":1415},[1427],{"type":51,"value":1428}," 10",{"type":45,"tag":1218,"props":1430,"children":1431},{"style":1225},[1432],{"type":51,"value":1433}," \\\n",{"type":45,"tag":1218,"props":1435,"children":1437},{"class":1220,"line":1436},6,[1438,1443,1448,1452,1457],{"type":45,"tag":1218,"props":1439,"children":1440},{"style":1231},[1441],{"type":51,"value":1442},"  \"",{"type":45,"tag":1218,"props":1444,"children":1445},{"style":1225},[1446],{"type":51,"value":1447},"$VLM",{"type":45,"tag":1218,"props":1449,"children":1450},{"style":1374},[1451],{"type":51,"value":1150},{"type":45,"tag":1218,"props":1453,"children":1454},{"style":1231},[1455],{"type":51,"value":1456},"\"",{"type":45,"tag":1218,"props":1458,"children":1459},{"style":1231},[1460],{"type":51,"value":1461},")\n",{"type":45,"tag":1218,"props":1463,"children":1465},{"class":1220,"line":1464},7,[1466,1471,1476,1481,1485,1490,1494,1498,1502,1507,1512,1518,1522,1527,1531,1536,1540,1544,1549,1553,1558],{"type":45,"tag":1218,"props":1467,"children":1468},{"style":1231},[1469],{"type":51,"value":1470},"[",{"type":45,"tag":1218,"props":1472,"children":1473},{"style":1231},[1474],{"type":51,"value":1475}," \"",{"type":45,"tag":1218,"props":1477,"children":1478},{"style":1225},[1479],{"type":51,"value":1480},"$vlm_code",{"type":45,"tag":1218,"props":1482,"children":1483},{"style":1231},[1484],{"type":51,"value":1456},{"type":45,"tag":1218,"props":1486,"children":1487},{"style":1231},[1488],{"type":51,"value":1489}," =",{"type":45,"tag":1218,"props":1491,"children":1492},{"style":1231},[1493],{"type":51,"value":1475},{"type":45,"tag":1218,"props":1495,"children":1496},{"style":1374},[1497],{"type":51,"value":1203},{"type":45,"tag":1218,"props":1499,"children":1500},{"style":1231},[1501],{"type":51,"value":1456},{"type":45,"tag":1218,"props":1503,"children":1504},{"style":1231},[1505],{"type":51,"value":1506}," ]",{"type":45,"tag":1218,"props":1508,"children":1509},{"style":1231},[1510],{"type":51,"value":1511}," &&",{"type":45,"tag":1218,"props":1513,"children":1515},{"style":1514},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[1516],{"type":51,"value":1517}," echo",{"type":45,"tag":1218,"props":1519,"children":1520},{"style":1231},[1521],{"type":51,"value":1475},{"type":45,"tag":1218,"props":1523,"children":1524},{"style":1374},[1525],{"type":51,"value":1526},"VLM OK",{"type":45,"tag":1218,"props":1528,"children":1529},{"style":1231},[1530],{"type":51,"value":1456},{"type":45,"tag":1218,"props":1532,"children":1533},{"style":1231},[1534],{"type":51,"value":1535}," ||",{"type":45,"tag":1218,"props":1537,"children":1538},{"style":1514},[1539],{"type":51,"value":1517},{"type":45,"tag":1218,"props":1541,"children":1542},{"style":1231},[1543],{"type":51,"value":1475},{"type":45,"tag":1218,"props":1545,"children":1546},{"style":1374},[1547],{"type":51,"value":1548},"VLM not reachable (HTTP ",{"type":45,"tag":1218,"props":1550,"children":1551},{"style":1225},[1552],{"type":51,"value":1480},{"type":45,"tag":1218,"props":1554,"children":1555},{"style":1374},[1556],{"type":51,"value":1557},")",{"type":45,"tag":1218,"props":1559,"children":1560},{"style":1231},[1561],{"type":51,"value":1562},"\"\n",{"type":45,"tag":1218,"props":1564,"children":1566},{"class":1220,"line":1565},8,[1567],{"type":45,"tag":1218,"props":1568,"children":1569},{"emptyLinePlaceholder":1339},[1570],{"type":51,"value":1342},{"type":45,"tag":1218,"props":1572,"children":1574},{"class":1220,"line":1573},9,[1575],{"type":45,"tag":1218,"props":1576,"children":1577},{"style":1349},[1578],{"type":51,"value":1579},"# Video summarization service: 200 on \u002Fv1\u002Fready, with retry on 503 (warmup) for up to ~30s\n",{"type":45,"tag":1218,"props":1581,"children":1583},{"class":1220,"line":1582},10,[1584,1589,1594,1599,1603,1607,1611,1615,1619,1623,1627,1632],{"type":45,"tag":1218,"props":1585,"children":1586},{"style":1225},[1587],{"type":51,"value":1588},"VIDEO_SUMMARIZATION_URL",{"type":45,"tag":1218,"props":1590,"children":1591},{"style":1231},[1592],{"type":51,"value":1593},"=${",{"type":45,"tag":1218,"props":1595,"children":1596},{"style":1225},[1597],{"type":51,"value":1598},"LVS_BACKEND_URL",{"type":45,"tag":1218,"props":1600,"children":1601},{"style":1231},[1602],{"type":51,"value":1259},{"type":45,"tag":1218,"props":1604,"children":1605},{"style":1225},[1606],{"type":51,"value":1264},{"type":45,"tag":1218,"props":1608,"children":1609},{"style":1231},[1610],{"type":51,"value":1269},{"type":45,"tag":1218,"props":1612,"children":1613},{"style":1225},[1614],{"type":51,"value":1274},{"type":45,"tag":1218,"props":1616,"children":1617},{"style":1231},[1618],{"type":51,"value":1259},{"type":45,"tag":1218,"props":1620,"children":1621},{"style":1225},[1622],{"type":51,"value":311},{"type":45,"tag":1218,"props":1624,"children":1625},{"style":1231},[1626],{"type":51,"value":1287},{"type":45,"tag":1218,"props":1628,"children":1629},{"style":1225},[1630],{"type":51,"value":1631},"38111",{"type":45,"tag":1218,"props":1633,"children":1634},{"style":1231},[1635],{"type":51,"value":1636},"}\n",{"type":45,"tag":1218,"props":1638,"children":1640},{"class":1220,"line":1639},11,[1641,1646,1650],{"type":45,"tag":1218,"props":1642,"children":1643},{"style":1225},[1644],{"type":51,"value":1645},"video_sum_code",{"type":45,"tag":1218,"props":1647,"children":1648},{"style":1231},[1649],{"type":51,"value":1234},{"type":45,"tag":1218,"props":1651,"children":1652},{"style":1374},[1653],{"type":51,"value":1654},"000\n",{"type":45,"tag":1218,"props":1656,"children":1658},{"class":1220,"line":1657},12,[1659,1665,1670,1675,1680,1685,1690,1694,1699],{"type":45,"tag":1218,"props":1660,"children":1662},{"style":1661},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[1663],{"type":51,"value":1664},"for",{"type":45,"tag":1218,"props":1666,"children":1667},{"style":1225},[1668],{"type":51,"value":1669}," i ",{"type":45,"tag":1218,"props":1671,"children":1672},{"style":1661},[1673],{"type":51,"value":1674},"in",{"type":45,"tag":1218,"props":1676,"children":1677},{"style":1231},[1678],{"type":51,"value":1679}," $(",{"type":45,"tag":1218,"props":1681,"children":1682},{"style":1369},[1683],{"type":51,"value":1684},"seq",{"type":45,"tag":1218,"props":1686,"children":1687},{"style":1415},[1688],{"type":51,"value":1689}," 1",{"type":45,"tag":1218,"props":1691,"children":1692},{"style":1415},[1693],{"type":51,"value":1428},{"type":45,"tag":1218,"props":1695,"children":1696},{"style":1231},[1697],{"type":51,"value":1698},");",{"type":45,"tag":1218,"props":1700,"children":1701},{"style":1661},[1702],{"type":51,"value":1703}," do\n",{"type":45,"tag":1218,"props":1705,"children":1707},{"class":1220,"line":1706},13,[1708,1713,1717,1721,1725,1729,1733,1737,1741,1745,1749,1753,1757,1761,1765,1769,1774,1778,1782],{"type":45,"tag":1218,"props":1709,"children":1710},{"style":1225},[1711],{"type":51,"value":1712},"  video_sum_code",{"type":45,"tag":1218,"props":1714,"children":1715},{"style":1231},[1716],{"type":51,"value":1366},{"type":45,"tag":1218,"props":1718,"children":1719},{"style":1369},[1720],{"type":51,"value":122},{"type":45,"tag":1218,"props":1722,"children":1723},{"style":1374},[1724],{"type":51,"value":1377},{"type":45,"tag":1218,"props":1726,"children":1727},{"style":1374},[1728],{"type":51,"value":1382},{"type":45,"tag":1218,"props":1730,"children":1731},{"style":1374},[1732],{"type":51,"value":1387},{"type":45,"tag":1218,"props":1734,"children":1735},{"style":1374},[1736],{"type":51,"value":1392},{"type":45,"tag":1218,"props":1738,"children":1739},{"style":1231},[1740],{"type":51,"value":1397},{"type":45,"tag":1218,"props":1742,"children":1743},{"style":1374},[1744],{"type":51,"value":1402},{"type":45,"tag":1218,"props":1746,"children":1747},{"style":1231},[1748],{"type":51,"value":1407},{"type":45,"tag":1218,"props":1750,"children":1751},{"style":1374},[1752],{"type":51,"value":1412},{"type":45,"tag":1218,"props":1754,"children":1755},{"style":1415},[1756],{"type":51,"value":1418},{"type":45,"tag":1218,"props":1758,"children":1759},{"style":1374},[1760],{"type":51,"value":1423},{"type":45,"tag":1218,"props":1762,"children":1763},{"style":1415},[1764],{"type":51,"value":1428},{"type":45,"tag":1218,"props":1766,"children":1767},{"style":1231},[1768],{"type":51,"value":1475},{"type":45,"tag":1218,"props":1770,"children":1771},{"style":1225},[1772],{"type":51,"value":1773},"$VIDEO_SUMMARIZATION_URL",{"type":45,"tag":1218,"props":1775,"children":1776},{"style":1374},[1777],{"type":51,"value":369},{"type":45,"tag":1218,"props":1779,"children":1780},{"style":1231},[1781],{"type":51,"value":1456},{"type":45,"tag":1218,"props":1783,"children":1784},{"style":1231},[1785],{"type":51,"value":1461},{"type":45,"tag":1218,"props":1787,"children":1789},{"class":1220,"line":1788},14,[1790,1795,1799,1804,1808],{"type":45,"tag":1218,"props":1791,"children":1792},{"style":1661},[1793],{"type":51,"value":1794},"  case",{"type":45,"tag":1218,"props":1796,"children":1797},{"style":1231},[1798],{"type":51,"value":1475},{"type":45,"tag":1218,"props":1800,"children":1801},{"style":1225},[1802],{"type":51,"value":1803},"$video_sum_code",{"type":45,"tag":1218,"props":1805,"children":1806},{"style":1231},[1807],{"type":51,"value":1456},{"type":45,"tag":1218,"props":1809,"children":1810},{"style":1661},[1811],{"type":51,"value":1812}," in\n",{"type":45,"tag":1218,"props":1814,"children":1816},{"class":1220,"line":1815},15,[1817,1822,1826,1830,1834,1839,1843,1848,1853],{"type":45,"tag":1218,"props":1818,"children":1819},{"style":1374},[1820],{"type":51,"value":1821},"    200",{"type":45,"tag":1218,"props":1823,"children":1824},{"style":1231},[1825],{"type":51,"value":1557},{"type":45,"tag":1218,"props":1827,"children":1828},{"style":1514},[1829],{"type":51,"value":1517},{"type":45,"tag":1218,"props":1831,"children":1832},{"style":1231},[1833],{"type":51,"value":1475},{"type":45,"tag":1218,"props":1835,"children":1836},{"style":1374},[1837],{"type":51,"value":1838},"video summarization OK",{"type":45,"tag":1218,"props":1840,"children":1841},{"style":1231},[1842],{"type":51,"value":1456},{"type":45,"tag":1218,"props":1844,"children":1845},{"style":1231},[1846],{"type":51,"value":1847},";",{"type":45,"tag":1218,"props":1849,"children":1850},{"style":1661},[1851],{"type":51,"value":1852}," break",{"type":45,"tag":1218,"props":1854,"children":1855},{"style":1231},[1856],{"type":51,"value":1857}," ;;\n",{"type":45,"tag":1218,"props":1859,"children":1861},{"class":1220,"line":1860},16,[1862,1867,1871,1876,1880,1885],{"type":45,"tag":1218,"props":1863,"children":1864},{"style":1374},[1865],{"type":51,"value":1866},"    503",{"type":45,"tag":1218,"props":1868,"children":1869},{"style":1231},[1870],{"type":51,"value":1557},{"type":45,"tag":1218,"props":1872,"children":1873},{"style":1369},[1874],{"type":51,"value":1875}," sleep",{"type":45,"tag":1218,"props":1877,"children":1878},{"style":1415},[1879],{"type":51,"value":1418},{"type":45,"tag":1218,"props":1881,"children":1882},{"style":1231},[1883],{"type":51,"value":1884}," ;;",{"type":45,"tag":1218,"props":1886,"children":1887},{"style":1349},[1888],{"type":51,"value":1889},"                 # warming up; keep polling\n",{"type":45,"tag":1218,"props":1891,"children":1893},{"class":1220,"line":1892},17,[1894,1899,1904,1908],{"type":45,"tag":1218,"props":1895,"children":1896},{"style":1231},[1897],{"type":51,"value":1898},"    *)",{"type":45,"tag":1218,"props":1900,"children":1901},{"style":1661},[1902],{"type":51,"value":1903},"   break",{"type":45,"tag":1218,"props":1905,"children":1906},{"style":1231},[1907],{"type":51,"value":1884},{"type":45,"tag":1218,"props":1909,"children":1910},{"style":1349},[1911],{"type":51,"value":1912},"                   # any other code = not reachable, stop retrying\n",{"type":45,"tag":1218,"props":1914,"children":1916},{"class":1220,"line":1915},18,[1917],{"type":45,"tag":1218,"props":1918,"children":1919},{"style":1661},[1920],{"type":51,"value":1921},"  esac\n",{"type":45,"tag":1218,"props":1923,"children":1925},{"class":1220,"line":1924},19,[1926],{"type":45,"tag":1218,"props":1927,"children":1928},{"style":1661},[1929],{"type":51,"value":1930},"done\n",{"type":45,"tag":1218,"props":1932,"children":1934},{"class":1220,"line":1933},20,[1935,1939,1943,1947,1951,1955,1959,1963,1967,1971,1975,1979,1983,1988,1992,1996],{"type":45,"tag":1218,"props":1936,"children":1937},{"style":1231},[1938],{"type":51,"value":1470},{"type":45,"tag":1218,"props":1940,"children":1941},{"style":1231},[1942],{"type":51,"value":1475},{"type":45,"tag":1218,"props":1944,"children":1945},{"style":1225},[1946],{"type":51,"value":1803},{"type":45,"tag":1218,"props":1948,"children":1949},{"style":1231},[1950],{"type":51,"value":1456},{"type":45,"tag":1218,"props":1952,"children":1953},{"style":1231},[1954],{"type":51,"value":1489},{"type":45,"tag":1218,"props":1956,"children":1957},{"style":1231},[1958],{"type":51,"value":1475},{"type":45,"tag":1218,"props":1960,"children":1961},{"style":1374},[1962],{"type":51,"value":1203},{"type":45,"tag":1218,"props":1964,"children":1965},{"style":1231},[1966],{"type":51,"value":1456},{"type":45,"tag":1218,"props":1968,"children":1969},{"style":1231},[1970],{"type":51,"value":1506},{"type":45,"tag":1218,"props":1972,"children":1973},{"style":1231},[1974],{"type":51,"value":1535},{"type":45,"tag":1218,"props":1976,"children":1977},{"style":1514},[1978],{"type":51,"value":1517},{"type":45,"tag":1218,"props":1980,"children":1981},{"style":1231},[1982],{"type":51,"value":1475},{"type":45,"tag":1218,"props":1984,"children":1985},{"style":1374},[1986],{"type":51,"value":1987},"video summarization service not reachable (HTTP ",{"type":45,"tag":1218,"props":1989,"children":1990},{"style":1225},[1991],{"type":51,"value":1803},{"type":45,"tag":1218,"props":1993,"children":1994},{"style":1374},[1995],{"type":51,"value":1557},{"type":45,"tag":1218,"props":1997,"children":1998},{"style":1231},[1999],{"type":51,"value":1562},{"type":45,"tag":54,"props":2001,"children":2002},{},[2003],{"type":45,"tag":139,"props":2004,"children":2005},{},[2006],{"type":51,"value":2007},"How to interpret the results:",{"type":45,"tag":185,"props":2009,"children":2010},{},[2011,2029,2053,2064],{"type":45,"tag":189,"props":2012,"children":2013},{},[2014,2020,2022,2027],{"type":45,"tag":82,"props":2015,"children":2017},{"className":2016},[],[2018],{"type":51,"value":2019},"video_sum_code = 200",{"type":51,"value":2021}," → ",{"type":45,"tag":139,"props":2023,"children":2024},{},[2025],{"type":51,"value":2026},"Step 2 (LVS + HITL)",{"type":51,"value":2028}," for every video.",{"type":45,"tag":189,"props":2030,"children":2031},{},[2032,2038,2039,2045,2046,2051],{"type":45,"tag":82,"props":2033,"children":2035},{"className":2034},[],[2036],{"type":51,"value":2037},"video_sum_code != 200",{"type":51,"value":66},{"type":45,"tag":82,"props":2040,"children":2042},{"className":2041},[],[2043],{"type":51,"value":2044},"vlm_code = 200",{"type":51,"value":2021},{"type":45,"tag":139,"props":2047,"children":2048},{},[2049],{"type":51,"value":2050},"Step 2 fallback (VLM)",{"type":51,"value":2052},"; prepend the Routing fallback note.",{"type":45,"tag":189,"props":2054,"children":2055},{},[2056,2062],{"type":45,"tag":82,"props":2057,"children":2059},{"className":2058},[],[2060],{"type":51,"value":2061},"vlm_code != 200",{"type":51,"value":2063}," → fail; at least one backend must be reachable.",{"type":45,"tag":189,"props":2065,"children":2066},{},[2067],{"type":51,"value":2068},"A non-200 LVS code after the retry loop is the ONLY signal of unavailability. Empty stdout or missing JSON fields are NOT \"unavailable.\"",{"type":45,"tag":1030,"props":2070,"children":2071},{},[],{"type":45,"tag":46,"props":2073,"children":2075},{"id":2074},"step-1-get-the-clip-url-via-vss-manage-video-io-storage-sub-task-not-the-final-answer",[2076,2078,2083],{"type":51,"value":2077},"Step 1 - Get the clip URL via ",{"type":45,"tag":82,"props":2079,"children":2081},{"className":2080},[],[2082],{"type":51,"value":1103},{"type":51,"value":2084}," (sub-task, NOT the final answer)",{"type":45,"tag":54,"props":2086,"children":2087},{},[2088,2100],{"type":45,"tag":139,"props":2089,"children":2090},{},[2091,2093,2098],{"type":51,"value":2092},"Use the ",{"type":45,"tag":82,"props":2094,"children":2096},{"className":2095},[],[2097],{"type":51,"value":1103},{"type":51,"value":2099}," skill for all VIOS interactions",{"type":51,"value":2101}," — it\nowns the canonical curl recipes, parameter defaults, and delete\u002Fupload flows.\nDo not fabricate URLs or hand-roll VIOS calls; they will drift.",{"type":45,"tag":54,"props":2103,"children":2104},{},[2105],{"type":51,"value":2106},"This step is a sub-task — do NOT end your turn here; do NOT return the clip\nURL as the final answer. From VIOS collect three values:",{"type":45,"tag":2108,"props":2109,"children":2110},"ol",{},[2111,2140,2173],{"type":45,"tag":189,"props":2112,"children":2113},{},[2114,2123,2125,2131,2132,2138],{"type":45,"tag":139,"props":2115,"children":2116},{},[2117],{"type":45,"tag":82,"props":2118,"children":2120},{"className":2119},[],[2121],{"type":51,"value":2122},"streamId",{"type":51,"value":2124}," (via ",{"type":45,"tag":82,"props":2126,"children":2128},{"className":2127},[],[2129],{"type":51,"value":2130},"sensor\u002Flist",{"type":51,"value":2021},{"type":45,"tag":82,"props":2133,"children":2135},{"className":2134},[],[2136],{"type":51,"value":2137},"sensor\u002F\u003Cid>\u002Fstreams",{"type":51,"value":2139},", or directly from an upload response).",{"type":45,"tag":189,"props":2141,"children":2142},{},[2143,2148,2150,2156,2158,2164,2166,2171],{"type":45,"tag":139,"props":2144,"children":2145},{},[2146],{"type":51,"value":2147},"Timeline",{"type":51,"value":2149}," - ",{"type":45,"tag":82,"props":2151,"children":2153},{"className":2152},[],[2154],{"type":51,"value":2155},"{startTime, endTime}",{"type":51,"value":2157}," (ISO 8601 UTC). ",{"type":45,"tag":82,"props":2159,"children":2161},{"className":2160},[],[2162],{"type":51,"value":2163},"endTime - startTime",{"type":51,"value":2165}," is the duration; needed only for the user-facing header (routing is driven solely by ",{"type":45,"tag":82,"props":2167,"children":2169},{"className":2168},[],[2170],{"type":51,"value":369},{"type":51,"value":2172},").",{"type":45,"tag":189,"props":2174,"children":2175},{},[2176,2181,2183,2189,2191,2197,2199,2205,2207,2213],{"type":45,"tag":139,"props":2177,"children":2178},{},[2179],{"type":51,"value":2180},"Temporary MP4 clip URL",{"type":51,"value":2182}," — the ",{"type":45,"tag":82,"props":2184,"children":2186},{"className":2185},[],[2187],{"type":51,"value":2188},"\u002Fstorage\u002Ffile\u002F\u003CstreamId>\u002Furl",{"type":51,"value":2190}," variant with ",{"type":45,"tag":82,"props":2192,"children":2194},{"className":2193},[],[2195],{"type":51,"value":2196},"container=mp4",{"type":51,"value":2198},". Response field: ",{"type":45,"tag":82,"props":2200,"children":2202},{"className":2201},[],[2203],{"type":51,"value":2204},".videoUrl",{"type":51,"value":2206},". Both backends need an HTTP(S) URL they can ",{"type":45,"tag":82,"props":2208,"children":2210},{"className":2209},[],[2211],{"type":51,"value":2212},"GET",{"type":51,"value":89},{"type":45,"tag":54,"props":2215,"children":2216},{},[2217,2219,2225,2227,2232],{"type":51,"value":2218},"Everything else (auth, upload, ",{"type":45,"tag":82,"props":2220,"children":2222},{"className":2221},[],[2223],{"type":51,"value":2224},"disableAudio",{"type":51,"value":2226},", expiry, etc.) lives in the\n",{"type":45,"tag":82,"props":2228,"children":2230},{"className":2229},[],[2231],{"type":51,"value":1103},{"type":51,"value":2233}," skill — refer users there if VIOS fails.",{"type":45,"tag":1030,"props":2235,"children":2236},{},[],{"type":45,"tag":46,"props":2238,"children":2240},{"id":2239},"step-2-primary-video-summarization-microservice-with-hitl",[2241],{"type":51,"value":2242},"Step 2 — Primary: video summarization microservice with HITL",{"type":45,"tag":54,"props":2244,"children":2245},{},[2246,2248,2253,2255,2260],{"type":51,"value":2247},"Use this path ",{"type":45,"tag":139,"props":2249,"children":2250},{},[2251],{"type":51,"value":2252},"whenever",{"type":51,"value":2254}," ",{"type":45,"tag":82,"props":2256,"children":2258},{"className":2257},[],[2259],{"type":51,"value":369},{"type":51,"value":2261}," returned 200 in Setup. Duration is irrelevant.",{"type":45,"tag":54,"props":2263,"children":2264},{},[2265,2267,2273,2274,2280,2282,2290],{"type":51,"value":2266},"For advanced fields (",{"type":45,"tag":82,"props":2268,"children":2270},{"className":2269},[],[2271],{"type":51,"value":2272},"media_info",{"type":51,"value":66},{"type":45,"tag":82,"props":2275,"children":2277},{"className":2276},[],[2278],{"type":51,"value":2279},"schema",{"type":51,"value":2281},", structured output, stream captioning, metrics, recommended config) see ",{"type":45,"tag":505,"props":2283,"children":2284},{"href":542},[2285],{"type":45,"tag":82,"props":2286,"children":2288},{"className":2287},[],[2289],{"type":51,"value":542},{"type":51,"value":89},{"type":45,"tag":2292,"props":2293,"children":2295},"h3",{"id":2294},"hitl-collect-scenario-and-events-first-required-do-not-skip",[2296],{"type":51,"value":2297},"HITL: collect scenario and events first (REQUIRED — do not skip)",{"type":45,"tag":54,"props":2299,"children":2300},{},[2301,2303,2312],{"type":51,"value":2302},"Full walk-through is in ",{"type":45,"tag":505,"props":2304,"children":2306},{"href":2305},"references\u002Fhitl-prompts.md",[2307],{"type":45,"tag":82,"props":2308,"children":2310},{"className":2309},[],[2311],{"type":51,"value":2305},{"type":51,"value":2313},". Always run HITL before calling the LVS service.",{"type":45,"tag":54,"props":2315,"children":2316},{},[2317,2322,2324,2330,2332,2338,2340,2346,2347,2353,2358],{"type":45,"tag":139,"props":2318,"children":2319},{},[2320],{"type":51,"value":2321},"Autonomous-mode defaults.",{"type":51,"value":2323}," When the caller has bypassed HITL (\"run\nautonomously without prompting\") AND the original query asks for\n",{"type":45,"tag":82,"props":2325,"children":2327},{"className":2326},[],[2328],{"type":51,"value":2329},"default",{"type":51,"value":2331},"\u002F",{"type":45,"tag":82,"props":2333,"children":2335},{"className":2334},[],[2336],{"type":51,"value":2337},"defaults",{"type":51,"value":2339}," (or gives none), use\n",{"type":45,"tag":82,"props":2341,"children":2343},{"className":2342},[],[2344],{"type":51,"value":2345},"scenario=\"activity monitoring\"",{"type":51,"value":279},{"type":45,"tag":82,"props":2348,"children":2350},{"className":2349},[],[2351],{"type":51,"value":2352},"events=[\"notable activity\"]",{"type":45,"tag":139,"props":2354,"children":2355},{},[2356],{"type":51,"value":2357},"verbatim",{"type":51,"value":2359}," — do not infer from filename or sensor name. Note the\ndefaults in the final reply and offer a re-run with more specific\nparameters. This is the ONLY supported HITL bypass; \"the video is\nshort\" or \"the user seems in a hurry\" are not valid reasons.",{"type":45,"tag":54,"props":2361,"children":2362},{},[2363,2365,2371,2373,2378],{"type":51,"value":2364},"Prefer ",{"type":45,"tag":82,"props":2366,"children":2368},{"className":2367},[],[2369],{"type":51,"value":2370},"POST \u002Fv1\u002Fsummarize",{"type":51,"value":2372}," (3.2 GA route); ",{"type":45,"tag":82,"props":2374,"children":2376},{"className":2375},[],[2377],{"type":51,"value":563},{"type":51,"value":2379}," is a compatibility alias.",{"type":45,"tag":1207,"props":2381,"children":2383},{"className":1209,"code":2382,"language":1211,"meta":1212,"style":1212},"VIDEO_SUMMARIZATION_URL=${LVS_BACKEND_URL:-http:\u002F\u002F${HOST_IP:-localhost}:38111}\n\n# From HITL reply:\nSCENARIO='warehouse monitoring'\nEVENTS_JSON='[\"notable activity\"]'\nOBJECTS_JSON=''  # '' to omit, else '[\"forklifts\",\"pallets\",\"workers\"]'\n\ncurl -s --max-time 300 -X POST \"$VIDEO_SUMMARIZATION_URL\u002Fv1\u002Fsummarize\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d \"$(jq -n --arg url \"\u003Cclip_url_from_vss_manage_video_io_storage>\" \\\n        --arg model \"${VLM_NAME:-nim_nvidia_cosmos3-nano-reasoner_bf16-final}\" \\\n        --arg scenario \"$SCENARIO\" \\\n        --argjson events \"$EVENTS_JSON\" \\\n        --argjson objects \"${OBJECTS_JSON:-null}\" '{\n    url: $url,\n    model: $model,\n    scenario: $scenario,\n    events: $events,\n    chunk_duration: 10,\n    num_frames_per_second_or_fixed_frames_chunk: 20,\n    use_fps_for_chunking: false,\n    seed: 1\n  } + (if $objects == null then {} else {objects_of_interest: $objects} end)')\" \\\n  | jq -r '.choices[0].message.content' \\\n  | jq '{video_summary, events}'\n",[2384],{"type":45,"tag":82,"props":2385,"children":2386},{"__ignoreMap":1212},[2387,2438,2445,2453,2479,2504,2526,2533,2583,2608,2647,2681,2706,2731,2769,2777,2785,2793,2801,2809,2817,2826,2835,2853,2889],{"type":45,"tag":1218,"props":2388,"children":2389},{"class":1220,"line":1221},[2390,2394,2398,2402,2406,2410,2414,2418,2422,2426,2430,2434],{"type":45,"tag":1218,"props":2391,"children":2392},{"style":1225},[2393],{"type":51,"value":1588},{"type":45,"tag":1218,"props":2395,"children":2396},{"style":1231},[2397],{"type":51,"value":1593},{"type":45,"tag":1218,"props":2399,"children":2400},{"style":1225},[2401],{"type":51,"value":1598},{"type":45,"tag":1218,"props":2403,"children":2404},{"style":1231},[2405],{"type":51,"value":1259},{"type":45,"tag":1218,"props":2407,"children":2408},{"style":1225},[2409],{"type":51,"value":1264},{"type":45,"tag":1218,"props":2411,"children":2412},{"style":1231},[2413],{"type":51,"value":1269},{"type":45,"tag":1218,"props":2415,"children":2416},{"style":1225},[2417],{"type":51,"value":1274},{"type":45,"tag":1218,"props":2419,"children":2420},{"style":1231},[2421],{"type":51,"value":1259},{"type":45,"tag":1218,"props":2423,"children":2424},{"style":1225},[2425],{"type":51,"value":311},{"type":45,"tag":1218,"props":2427,"children":2428},{"style":1231},[2429],{"type":51,"value":1287},{"type":45,"tag":1218,"props":2431,"children":2432},{"style":1225},[2433],{"type":51,"value":1631},{"type":45,"tag":1218,"props":2435,"children":2436},{"style":1231},[2437],{"type":51,"value":1636},{"type":45,"tag":1218,"props":2439,"children":2440},{"class":1220,"line":1300},[2441],{"type":45,"tag":1218,"props":2442,"children":2443},{"emptyLinePlaceholder":1339},[2444],{"type":51,"value":1342},{"type":45,"tag":1218,"props":2446,"children":2447},{"class":1220,"line":1335},[2448],{"type":45,"tag":1218,"props":2449,"children":2450},{"style":1349},[2451],{"type":51,"value":2452},"# From HITL reply:\n",{"type":45,"tag":1218,"props":2454,"children":2455},{"class":1220,"line":1345},[2456,2461,2465,2469,2474],{"type":45,"tag":1218,"props":2457,"children":2458},{"style":1225},[2459],{"type":51,"value":2460},"SCENARIO",{"type":45,"tag":1218,"props":2462,"children":2463},{"style":1231},[2464],{"type":51,"value":1234},{"type":45,"tag":1218,"props":2466,"children":2467},{"style":1231},[2468],{"type":51,"value":1407},{"type":45,"tag":1218,"props":2470,"children":2471},{"style":1374},[2472],{"type":51,"value":2473},"warehouse monitoring",{"type":45,"tag":1218,"props":2475,"children":2476},{"style":1231},[2477],{"type":51,"value":2478},"'\n",{"type":45,"tag":1218,"props":2480,"children":2481},{"class":1220,"line":1355},[2482,2487,2491,2495,2500],{"type":45,"tag":1218,"props":2483,"children":2484},{"style":1225},[2485],{"type":51,"value":2486},"EVENTS_JSON",{"type":45,"tag":1218,"props":2488,"children":2489},{"style":1231},[2490],{"type":51,"value":1234},{"type":45,"tag":1218,"props":2492,"children":2493},{"style":1231},[2494],{"type":51,"value":1407},{"type":45,"tag":1218,"props":2496,"children":2497},{"style":1374},[2498],{"type":51,"value":2499},"[\"notable activity\"]",{"type":45,"tag":1218,"props":2501,"children":2502},{"style":1231},[2503],{"type":51,"value":2478},{"type":45,"tag":1218,"props":2505,"children":2506},{"class":1220,"line":1436},[2507,2512,2516,2521],{"type":45,"tag":1218,"props":2508,"children":2509},{"style":1225},[2510],{"type":51,"value":2511},"OBJECTS_JSON",{"type":45,"tag":1218,"props":2513,"children":2514},{"style":1231},[2515],{"type":51,"value":1234},{"type":45,"tag":1218,"props":2517,"children":2518},{"style":1231},[2519],{"type":51,"value":2520},"''",{"type":45,"tag":1218,"props":2522,"children":2523},{"style":1349},[2524],{"type":51,"value":2525},"  # '' to omit, else '[\"forklifts\",\"pallets\",\"workers\"]'\n",{"type":45,"tag":1218,"props":2527,"children":2528},{"class":1220,"line":1464},[2529],{"type":45,"tag":1218,"props":2530,"children":2531},{"emptyLinePlaceholder":1339},[2532],{"type":51,"value":1342},{"type":45,"tag":1218,"props":2534,"children":2535},{"class":1220,"line":1565},[2536,2540,2544,2548,2553,2558,2563,2567,2571,2575,2579],{"type":45,"tag":1218,"props":2537,"children":2538},{"style":1369},[2539],{"type":51,"value":122},{"type":45,"tag":1218,"props":2541,"children":2542},{"style":1374},[2543],{"type":51,"value":1377},{"type":45,"tag":1218,"props":2545,"children":2546},{"style":1374},[2547],{"type":51,"value":1423},{"type":45,"tag":1218,"props":2549,"children":2550},{"style":1415},[2551],{"type":51,"value":2552}," 300",{"type":45,"tag":1218,"props":2554,"children":2555},{"style":1374},[2556],{"type":51,"value":2557}," -X",{"type":45,"tag":1218,"props":2559,"children":2560},{"style":1374},[2561],{"type":51,"value":2562}," POST",{"type":45,"tag":1218,"props":2564,"children":2565},{"style":1231},[2566],{"type":51,"value":1475},{"type":45,"tag":1218,"props":2568,"children":2569},{"style":1225},[2570],{"type":51,"value":1773},{"type":45,"tag":1218,"props":2572,"children":2573},{"style":1374},[2574],{"type":51,"value":556},{"type":45,"tag":1218,"props":2576,"children":2577},{"style":1231},[2578],{"type":51,"value":1456},{"type":45,"tag":1218,"props":2580,"children":2581},{"style":1225},[2582],{"type":51,"value":1433},{"type":45,"tag":1218,"props":2584,"children":2585},{"class":1220,"line":1573},[2586,2591,2595,2600,2604],{"type":45,"tag":1218,"props":2587,"children":2588},{"style":1374},[2589],{"type":51,"value":2590},"  -H",{"type":45,"tag":1218,"props":2592,"children":2593},{"style":1231},[2594],{"type":51,"value":1475},{"type":45,"tag":1218,"props":2596,"children":2597},{"style":1374},[2598],{"type":51,"value":2599},"Content-Type: application\u002Fjson",{"type":45,"tag":1218,"props":2601,"children":2602},{"style":1231},[2603],{"type":51,"value":1456},{"type":45,"tag":1218,"props":2605,"children":2606},{"style":1225},[2607],{"type":51,"value":1433},{"type":45,"tag":1218,"props":2609,"children":2610},{"class":1220,"line":1582},[2611,2616,2621,2625,2630,2634,2639,2643],{"type":45,"tag":1218,"props":2612,"children":2613},{"style":1374},[2614],{"type":51,"value":2615},"  -d",{"type":45,"tag":1218,"props":2617,"children":2618},{"style":1231},[2619],{"type":51,"value":2620}," \"$(",{"type":45,"tag":1218,"props":2622,"children":2623},{"style":1369},[2624],{"type":51,"value":277},{"type":45,"tag":1218,"props":2626,"children":2627},{"style":1374},[2628],{"type":51,"value":2629}," -n --arg url ",{"type":45,"tag":1218,"props":2631,"children":2632},{"style":1231},[2633],{"type":51,"value":1456},{"type":45,"tag":1218,"props":2635,"children":2636},{"style":1374},[2637],{"type":51,"value":2638},"\u003Cclip_url_from_vss_manage_video_io_storage>",{"type":45,"tag":1218,"props":2640,"children":2641},{"style":1231},[2642],{"type":51,"value":1456},{"type":45,"tag":1218,"props":2644,"children":2645},{"style":1225},[2646],{"type":51,"value":1433},{"type":45,"tag":1218,"props":2648,"children":2649},{"class":1220,"line":1639},[2650,2655,2659,2664,2668,2672,2677],{"type":45,"tag":1218,"props":2651,"children":2652},{"style":1374},[2653],{"type":51,"value":2654},"        --arg model ",{"type":45,"tag":1218,"props":2656,"children":2657},{"style":1231},[2658],{"type":51,"value":1239},{"type":45,"tag":1218,"props":2660,"children":2661},{"style":1225},[2662],{"type":51,"value":2663},"VLM_NAME",{"type":45,"tag":1218,"props":2665,"children":2666},{"style":1231},[2667],{"type":51,"value":1259},{"type":45,"tag":1218,"props":2669,"children":2670},{"style":1225},[2671],{"type":51,"value":1142},{"type":45,"tag":1218,"props":2673,"children":2674},{"style":1231},[2675],{"type":51,"value":2676},"}\"",{"type":45,"tag":1218,"props":2678,"children":2679},{"style":1225},[2680],{"type":51,"value":1433},{"type":45,"tag":1218,"props":2682,"children":2683},{"class":1220,"line":1657},[2684,2689,2693,2698,2702],{"type":45,"tag":1218,"props":2685,"children":2686},{"style":1374},[2687],{"type":51,"value":2688},"        --arg scenario ",{"type":45,"tag":1218,"props":2690,"children":2691},{"style":1231},[2692],{"type":51,"value":1456},{"type":45,"tag":1218,"props":2694,"children":2695},{"style":1225},[2696],{"type":51,"value":2697},"$SCENARIO",{"type":45,"tag":1218,"props":2699,"children":2700},{"style":1231},[2701],{"type":51,"value":1456},{"type":45,"tag":1218,"props":2703,"children":2704},{"style":1225},[2705],{"type":51,"value":1433},{"type":45,"tag":1218,"props":2707,"children":2708},{"class":1220,"line":1706},[2709,2714,2718,2723,2727],{"type":45,"tag":1218,"props":2710,"children":2711},{"style":1374},[2712],{"type":51,"value":2713},"        --argjson events ",{"type":45,"tag":1218,"props":2715,"children":2716},{"style":1231},[2717],{"type":51,"value":1456},{"type":45,"tag":1218,"props":2719,"children":2720},{"style":1225},[2721],{"type":51,"value":2722},"$EVENTS_JSON",{"type":45,"tag":1218,"props":2724,"children":2725},{"style":1231},[2726],{"type":51,"value":1456},{"type":45,"tag":1218,"props":2728,"children":2729},{"style":1225},[2730],{"type":51,"value":1433},{"type":45,"tag":1218,"props":2732,"children":2733},{"class":1220,"line":1788},[2734,2739,2743,2747,2751,2756,2760,2764],{"type":45,"tag":1218,"props":2735,"children":2736},{"style":1374},[2737],{"type":51,"value":2738},"        --argjson objects ",{"type":45,"tag":1218,"props":2740,"children":2741},{"style":1231},[2742],{"type":51,"value":1239},{"type":45,"tag":1218,"props":2744,"children":2745},{"style":1225},[2746],{"type":51,"value":2511},{"type":45,"tag":1218,"props":2748,"children":2749},{"style":1231},[2750],{"type":51,"value":1259},{"type":45,"tag":1218,"props":2752,"children":2753},{"style":1225},[2754],{"type":51,"value":2755},"null",{"type":45,"tag":1218,"props":2757,"children":2758},{"style":1231},[2759],{"type":51,"value":2676},{"type":45,"tag":1218,"props":2761,"children":2762},{"style":1231},[2763],{"type":51,"value":1397},{"type":45,"tag":1218,"props":2765,"children":2766},{"style":1374},[2767],{"type":51,"value":2768},"{\n",{"type":45,"tag":1218,"props":2770,"children":2771},{"class":1220,"line":1815},[2772],{"type":45,"tag":1218,"props":2773,"children":2774},{"style":1374},[2775],{"type":51,"value":2776},"    url: $url,\n",{"type":45,"tag":1218,"props":2778,"children":2779},{"class":1220,"line":1860},[2780],{"type":45,"tag":1218,"props":2781,"children":2782},{"style":1374},[2783],{"type":51,"value":2784},"    model: $model,\n",{"type":45,"tag":1218,"props":2786,"children":2787},{"class":1220,"line":1892},[2788],{"type":45,"tag":1218,"props":2789,"children":2790},{"style":1374},[2791],{"type":51,"value":2792},"    scenario: $scenario,\n",{"type":45,"tag":1218,"props":2794,"children":2795},{"class":1220,"line":1915},[2796],{"type":45,"tag":1218,"props":2797,"children":2798},{"style":1374},[2799],{"type":51,"value":2800},"    events: $events,\n",{"type":45,"tag":1218,"props":2802,"children":2803},{"class":1220,"line":1924},[2804],{"type":45,"tag":1218,"props":2805,"children":2806},{"style":1374},[2807],{"type":51,"value":2808},"    chunk_duration: 10,\n",{"type":45,"tag":1218,"props":2810,"children":2811},{"class":1220,"line":1933},[2812],{"type":45,"tag":1218,"props":2813,"children":2814},{"style":1374},[2815],{"type":51,"value":2816},"    num_frames_per_second_or_fixed_frames_chunk: 20,\n",{"type":45,"tag":1218,"props":2818,"children":2820},{"class":1220,"line":2819},21,[2821],{"type":45,"tag":1218,"props":2822,"children":2823},{"style":1374},[2824],{"type":51,"value":2825},"    use_fps_for_chunking: false,\n",{"type":45,"tag":1218,"props":2827,"children":2829},{"class":1220,"line":2828},22,[2830],{"type":45,"tag":1218,"props":2831,"children":2832},{"style":1374},[2833],{"type":51,"value":2834},"    seed: 1\n",{"type":45,"tag":1218,"props":2836,"children":2838},{"class":1220,"line":2837},23,[2839,2844,2849],{"type":45,"tag":1218,"props":2840,"children":2841},{"style":1374},[2842],{"type":51,"value":2843},"  } + (if $objects == null then {} else {objects_of_interest: $objects} end)",{"type":45,"tag":1218,"props":2845,"children":2846},{"style":1231},[2847],{"type":51,"value":2848},"')\"",{"type":45,"tag":1218,"props":2850,"children":2851},{"style":1225},[2852],{"type":51,"value":1433},{"type":45,"tag":1218,"props":2854,"children":2856},{"class":1220,"line":2855},24,[2857,2862,2867,2872,2876,2881,2885],{"type":45,"tag":1218,"props":2858,"children":2859},{"style":1231},[2860],{"type":51,"value":2861},"  |",{"type":45,"tag":1218,"props":2863,"children":2864},{"style":1369},[2865],{"type":51,"value":2866}," jq",{"type":45,"tag":1218,"props":2868,"children":2869},{"style":1374},[2870],{"type":51,"value":2871}," -r",{"type":45,"tag":1218,"props":2873,"children":2874},{"style":1231},[2875],{"type":51,"value":1397},{"type":45,"tag":1218,"props":2877,"children":2878},{"style":1374},[2879],{"type":51,"value":2880},".choices[0].message.content",{"type":45,"tag":1218,"props":2882,"children":2883},{"style":1231},[2884],{"type":51,"value":1407},{"type":45,"tag":1218,"props":2886,"children":2887},{"style":1225},[2888],{"type":51,"value":1433},{"type":45,"tag":1218,"props":2890,"children":2892},{"class":1220,"line":2891},25,[2893,2897,2901,2905,2910],{"type":45,"tag":1218,"props":2894,"children":2895},{"style":1231},[2896],{"type":51,"value":2861},{"type":45,"tag":1218,"props":2898,"children":2899},{"style":1369},[2900],{"type":51,"value":2866},{"type":45,"tag":1218,"props":2902,"children":2903},{"style":1231},[2904],{"type":51,"value":1397},{"type":45,"tag":1218,"props":2906,"children":2907},{"style":1374},[2908],{"type":51,"value":2909},"{video_summary, events}",{"type":45,"tag":1218,"props":2911,"children":2912},{"style":1231},[2913],{"type":51,"value":2478},{"type":45,"tag":54,"props":2915,"children":2916},{},[2917,2919,2924,2925,2930,2932,2937,2938,2943],{"type":51,"value":2918},"If both ",{"type":45,"tag":82,"props":2920,"children":2922},{"className":2921},[],[2923],{"type":51,"value":402},{"type":51,"value":279},{"type":45,"tag":82,"props":2926,"children":2928},{"className":2927},[],[2929],{"type":51,"value":409},{"type":51,"value":2931}," are empty, the clip probably doesn't contain the requested events — re-run with broader ",{"type":45,"tag":82,"props":2933,"children":2935},{"className":2934},[],[2936],{"type":51,"value":425},{"type":51,"value":2331},{"type":45,"tag":82,"props":2939,"children":2941},{"className":2940},[],[2942],{"type":51,"value":409},{"type":51,"value":2944},", don't report \"no content\".",{"type":45,"tag":54,"props":2946,"children":2947},{},[2948,2953,2954,2960,2962,2968,2970,2976,2978,2984,2985,2991,2993,2999,3001,3007,3008,3014,3016,3022],{"type":45,"tag":139,"props":2949,"children":2950},{},[2951],{"type":51,"value":2952},"Tuning:",{"type":51,"value":2254},{"type":45,"tag":82,"props":2955,"children":2957},{"className":2956},[],[2958],{"type":51,"value":2959},"chunk_duration",{"type":51,"value":2961}," (default ",{"type":45,"tag":82,"props":2963,"children":2965},{"className":2964},[],[2966],{"type":51,"value":2967},"10",{"type":51,"value":2969},"s; ",{"type":45,"tag":82,"props":2971,"children":2973},{"className":2972},[],[2974],{"type":51,"value":2975},"0",{"type":51,"value":2977}," = single chunk),\n",{"type":45,"tag":82,"props":2979,"children":2981},{"className":2980},[],[2982],{"type":51,"value":2983},"num_frames_per_second_or_fixed_frames_chunk",{"type":51,"value":2961},{"type":45,"tag":82,"props":2986,"children":2988},{"className":2987},[],[2989],{"type":51,"value":2990},"20",{"type":51,"value":2992},"; meaning depends\non ",{"type":45,"tag":82,"props":2994,"children":2996},{"className":2995},[],[2997],{"type":51,"value":2998},"use_fps_for_chunking",{"type":51,"value":3000},"), ",{"type":45,"tag":82,"props":3002,"children":3004},{"className":3003},[],[3005],{"type":51,"value":3006},"seed",{"type":51,"value":2961},{"type":45,"tag":82,"props":3009,"children":3011},{"className":3010},[],[3012],{"type":51,"value":3013},"1",{"type":51,"value":3015},"). ",{"type":45,"tag":82,"props":3017,"children":3019},{"className":3018},[],[3020],{"type":51,"value":3021},"num_frames_per_chunk",{"type":51,"value":3023}," is\ndeprecated.",{"type":45,"tag":1030,"props":3025,"children":3026},{},[],{"type":45,"tag":46,"props":3028,"children":3030},{"id":3029},"step-2-fallback-vlm-direct-with-default-prompt",[3031],{"type":51,"value":3032},"Step 2 fallback — VLM direct with default prompt",{"type":45,"tag":54,"props":3034,"children":3035},{},[3036,3037,3042,3044,3049],{"type":51,"value":2247},{"type":45,"tag":139,"props":3038,"children":3039},{},[3040],{"type":51,"value":3041},"only",{"type":51,"value":3043}," when ",{"type":45,"tag":82,"props":3045,"children":3047},{"className":3046},[],[3048],{"type":51,"value":369},{"type":51,"value":3050}," did not return 200 after warmup. Do NOT run HITL — the user did not opt in; you fell back because the service was missing. Prepend the Routing fallback note to the response.",{"type":45,"tag":1207,"props":3052,"children":3054},{"className":1209,"code":3053,"language":1211,"meta":1212,"style":1212},"VLM=\"${VLM_BASE_URL:-${RTVI_VLM_BASE_URL:-http:\u002F\u002F${HOST_IP:-localhost}:8018}}\"\nVLM=\"${VLM%\u002Fv1}\"\nPROMPT='Describe in detail what is happening in this video,\nincluding all visible people, vehicles, equipments, objects,\nactions, and environmental conditions.\nOUTPUT REQUIREMENTS:\n[timestamp-timestamp] Description of what is happening.\nEXAMPLE:\n[0.0s-4.0s] \u003Cdescription of the first event>\n[4.0s-12.0s] \u003Cdescription of the second event>'\n\ncurl -s --max-time 300 -X POST \"$VLM\u002Fv1\u002Fchat\u002Fcompletions\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d \"$(jq -n \\\n        --arg model \"${VLM_NAME:-nim_nvidia_cosmos3-nano-reasoner_bf16-final}\" \\\n        --arg text \"$PROMPT\" \\\n        --arg url \"\u003Cclip_url_from_vss_manage_video_io_storage>\" \\\n        '{\n          model: $model,\n          temperature: 0.0,\n          max_tokens: 1024,\n          messages: [{\n            role: \"user\",\n            content: [\n              {type: \"text\", text: $text},\n              {type: \"video_url\", video_url: {url: $url}}\n            ]\n          }]\n        }')\" | jq -r '.choices[0].message.content'\n",[3055],{"type":45,"tag":82,"props":3056,"children":3057},{"__ignoreMap":1212},[3058,3121,3152,3173,3181,3189,3197,3205,3213,3221,3233,3240,3288,3311,3336,3367,3392,3416,3428,3436,3444,3452,3460,3468,3476,3484,3493,3502,3511],{"type":45,"tag":1218,"props":3059,"children":3060},{"class":1220,"line":1221},[3061,3065,3069,3073,3077,3081,3085,3089,3093,3097,3101,3105,3109,3113,3117],{"type":45,"tag":1218,"props":3062,"children":3063},{"style":1225},[3064],{"type":51,"value":1228},{"type":45,"tag":1218,"props":3066,"children":3067},{"style":1231},[3068],{"type":51,"value":1234},{"type":45,"tag":1218,"props":3070,"children":3071},{"style":1231},[3072],{"type":51,"value":1239},{"type":45,"tag":1218,"props":3074,"children":3075},{"style":1225},[3076],{"type":51,"value":1244},{"type":45,"tag":1218,"props":3078,"children":3079},{"style":1231},[3080],{"type":51,"value":1249},{"type":45,"tag":1218,"props":3082,"children":3083},{"style":1225},[3084],{"type":51,"value":1254},{"type":45,"tag":1218,"props":3086,"children":3087},{"style":1231},[3088],{"type":51,"value":1259},{"type":45,"tag":1218,"props":3090,"children":3091},{"style":1225},[3092],{"type":51,"value":1264},{"type":45,"tag":1218,"props":3094,"children":3095},{"style":1231},[3096],{"type":51,"value":1269},{"type":45,"tag":1218,"props":3098,"children":3099},{"style":1225},[3100],{"type":51,"value":1274},{"type":45,"tag":1218,"props":3102,"children":3103},{"style":1231},[3104],{"type":51,"value":1259},{"type":45,"tag":1218,"props":3106,"children":3107},{"style":1225},[3108],{"type":51,"value":311},{"type":45,"tag":1218,"props":3110,"children":3111},{"style":1231},[3112],{"type":51,"value":1287},{"type":45,"tag":1218,"props":3114,"children":3115},{"style":1225},[3116],{"type":51,"value":1292},{"type":45,"tag":1218,"props":3118,"children":3119},{"style":1231},[3120],{"type":51,"value":1297},{"type":45,"tag":1218,"props":3122,"children":3123},{"class":1220,"line":1300},[3124,3128,3132,3136,3140,3144,3148],{"type":45,"tag":1218,"props":3125,"children":3126},{"style":1225},[3127],{"type":51,"value":1228},{"type":45,"tag":1218,"props":3129,"children":3130},{"style":1231},[3131],{"type":51,"value":1234},{"type":45,"tag":1218,"props":3133,"children":3134},{"style":1231},[3135],{"type":51,"value":1239},{"type":45,"tag":1218,"props":3137,"children":3138},{"style":1225},[3139],{"type":51,"value":1228},{"type":45,"tag":1218,"props":3141,"children":3142},{"style":1231},[3143],{"type":51,"value":1322},{"type":45,"tag":1218,"props":3145,"children":3146},{"style":1225},[3147],{"type":51,"value":1327},{"type":45,"tag":1218,"props":3149,"children":3150},{"style":1231},[3151],{"type":51,"value":1332},{"type":45,"tag":1218,"props":3153,"children":3154},{"class":1220,"line":1335},[3155,3160,3164,3168],{"type":45,"tag":1218,"props":3156,"children":3157},{"style":1225},[3158],{"type":51,"value":3159},"PROMPT",{"type":45,"tag":1218,"props":3161,"children":3162},{"style":1231},[3163],{"type":51,"value":1234},{"type":45,"tag":1218,"props":3165,"children":3166},{"style":1231},[3167],{"type":51,"value":1407},{"type":45,"tag":1218,"props":3169,"children":3170},{"style":1374},[3171],{"type":51,"value":3172},"Describe in detail what is happening in this video,\n",{"type":45,"tag":1218,"props":3174,"children":3175},{"class":1220,"line":1345},[3176],{"type":45,"tag":1218,"props":3177,"children":3178},{"style":1374},[3179],{"type":51,"value":3180},"including all visible people, vehicles, equipments, objects,\n",{"type":45,"tag":1218,"props":3182,"children":3183},{"class":1220,"line":1355},[3184],{"type":45,"tag":1218,"props":3185,"children":3186},{"style":1374},[3187],{"type":51,"value":3188},"actions, and environmental conditions.\n",{"type":45,"tag":1218,"props":3190,"children":3191},{"class":1220,"line":1436},[3192],{"type":45,"tag":1218,"props":3193,"children":3194},{"style":1374},[3195],{"type":51,"value":3196},"OUTPUT REQUIREMENTS:\n",{"type":45,"tag":1218,"props":3198,"children":3199},{"class":1220,"line":1464},[3200],{"type":45,"tag":1218,"props":3201,"children":3202},{"style":1374},[3203],{"type":51,"value":3204},"[timestamp-timestamp] Description of what is happening.\n",{"type":45,"tag":1218,"props":3206,"children":3207},{"class":1220,"line":1565},[3208],{"type":45,"tag":1218,"props":3209,"children":3210},{"style":1374},[3211],{"type":51,"value":3212},"EXAMPLE:\n",{"type":45,"tag":1218,"props":3214,"children":3215},{"class":1220,"line":1573},[3216],{"type":45,"tag":1218,"props":3217,"children":3218},{"style":1374},[3219],{"type":51,"value":3220},"[0.0s-4.0s] \u003Cdescription of the first event>\n",{"type":45,"tag":1218,"props":3222,"children":3223},{"class":1220,"line":1582},[3224,3229],{"type":45,"tag":1218,"props":3225,"children":3226},{"style":1374},[3227],{"type":51,"value":3228},"[4.0s-12.0s] \u003Cdescription of the second event>",{"type":45,"tag":1218,"props":3230,"children":3231},{"style":1231},[3232],{"type":51,"value":2478},{"type":45,"tag":1218,"props":3234,"children":3235},{"class":1220,"line":1639},[3236],{"type":45,"tag":1218,"props":3237,"children":3238},{"emptyLinePlaceholder":1339},[3239],{"type":51,"value":1342},{"type":45,"tag":1218,"props":3241,"children":3242},{"class":1220,"line":1657},[3243,3247,3251,3255,3259,3263,3267,3271,3275,3280,3284],{"type":45,"tag":1218,"props":3244,"children":3245},{"style":1369},[3246],{"type":51,"value":122},{"type":45,"tag":1218,"props":3248,"children":3249},{"style":1374},[3250],{"type":51,"value":1377},{"type":45,"tag":1218,"props":3252,"children":3253},{"style":1374},[3254],{"type":51,"value":1423},{"type":45,"tag":1218,"props":3256,"children":3257},{"style":1415},[3258],{"type":51,"value":2552},{"type":45,"tag":1218,"props":3260,"children":3261},{"style":1374},[3262],{"type":51,"value":2557},{"type":45,"tag":1218,"props":3264,"children":3265},{"style":1374},[3266],{"type":51,"value":2562},{"type":45,"tag":1218,"props":3268,"children":3269},{"style":1231},[3270],{"type":51,"value":1475},{"type":45,"tag":1218,"props":3272,"children":3273},{"style":1225},[3274],{"type":51,"value":1447},{"type":45,"tag":1218,"props":3276,"children":3277},{"style":1374},[3278],{"type":51,"value":3279},"\u002Fv1\u002Fchat\u002Fcompletions",{"type":45,"tag":1218,"props":3281,"children":3282},{"style":1231},[3283],{"type":51,"value":1456},{"type":45,"tag":1218,"props":3285,"children":3286},{"style":1225},[3287],{"type":51,"value":1433},{"type":45,"tag":1218,"props":3289,"children":3290},{"class":1220,"line":1706},[3291,3295,3299,3303,3307],{"type":45,"tag":1218,"props":3292,"children":3293},{"style":1374},[3294],{"type":51,"value":2590},{"type":45,"tag":1218,"props":3296,"children":3297},{"style":1231},[3298],{"type":51,"value":1475},{"type":45,"tag":1218,"props":3300,"children":3301},{"style":1374},[3302],{"type":51,"value":2599},{"type":45,"tag":1218,"props":3304,"children":3305},{"style":1231},[3306],{"type":51,"value":1456},{"type":45,"tag":1218,"props":3308,"children":3309},{"style":1225},[3310],{"type":51,"value":1433},{"type":45,"tag":1218,"props":3312,"children":3313},{"class":1220,"line":1788},[3314,3318,3322,3326,3331],{"type":45,"tag":1218,"props":3315,"children":3316},{"style":1374},[3317],{"type":51,"value":2615},{"type":45,"tag":1218,"props":3319,"children":3320},{"style":1231},[3321],{"type":51,"value":2620},{"type":45,"tag":1218,"props":3323,"children":3324},{"style":1369},[3325],{"type":51,"value":277},{"type":45,"tag":1218,"props":3327,"children":3328},{"style":1374},[3329],{"type":51,"value":3330}," -n ",{"type":45,"tag":1218,"props":3332,"children":3333},{"style":1225},[3334],{"type":51,"value":3335},"\\\n",{"type":45,"tag":1218,"props":3337,"children":3338},{"class":1220,"line":1815},[3339,3343,3347,3351,3355,3359,3363],{"type":45,"tag":1218,"props":3340,"children":3341},{"style":1374},[3342],{"type":51,"value":2654},{"type":45,"tag":1218,"props":3344,"children":3345},{"style":1231},[3346],{"type":51,"value":1239},{"type":45,"tag":1218,"props":3348,"children":3349},{"style":1225},[3350],{"type":51,"value":2663},{"type":45,"tag":1218,"props":3352,"children":3353},{"style":1231},[3354],{"type":51,"value":1259},{"type":45,"tag":1218,"props":3356,"children":3357},{"style":1225},[3358],{"type":51,"value":1142},{"type":45,"tag":1218,"props":3360,"children":3361},{"style":1231},[3362],{"type":51,"value":2676},{"type":45,"tag":1218,"props":3364,"children":3365},{"style":1225},[3366],{"type":51,"value":1433},{"type":45,"tag":1218,"props":3368,"children":3369},{"class":1220,"line":1860},[3370,3375,3379,3384,3388],{"type":45,"tag":1218,"props":3371,"children":3372},{"style":1374},[3373],{"type":51,"value":3374},"        --arg text ",{"type":45,"tag":1218,"props":3376,"children":3377},{"style":1231},[3378],{"type":51,"value":1456},{"type":45,"tag":1218,"props":3380,"children":3381},{"style":1225},[3382],{"type":51,"value":3383},"$PROMPT",{"type":45,"tag":1218,"props":3385,"children":3386},{"style":1231},[3387],{"type":51,"value":1456},{"type":45,"tag":1218,"props":3389,"children":3390},{"style":1225},[3391],{"type":51,"value":1433},{"type":45,"tag":1218,"props":3393,"children":3394},{"class":1220,"line":1892},[3395,3400,3404,3408,3412],{"type":45,"tag":1218,"props":3396,"children":3397},{"style":1374},[3398],{"type":51,"value":3399},"        --arg url ",{"type":45,"tag":1218,"props":3401,"children":3402},{"style":1231},[3403],{"type":51,"value":1456},{"type":45,"tag":1218,"props":3405,"children":3406},{"style":1374},[3407],{"type":51,"value":2638},{"type":45,"tag":1218,"props":3409,"children":3410},{"style":1231},[3411],{"type":51,"value":1456},{"type":45,"tag":1218,"props":3413,"children":3414},{"style":1225},[3415],{"type":51,"value":1433},{"type":45,"tag":1218,"props":3417,"children":3418},{"class":1220,"line":1915},[3419,3424],{"type":45,"tag":1218,"props":3420,"children":3421},{"style":1231},[3422],{"type":51,"value":3423},"        '",{"type":45,"tag":1218,"props":3425,"children":3426},{"style":1374},[3427],{"type":51,"value":2768},{"type":45,"tag":1218,"props":3429,"children":3430},{"class":1220,"line":1924},[3431],{"type":45,"tag":1218,"props":3432,"children":3433},{"style":1374},[3434],{"type":51,"value":3435},"          model: $model,\n",{"type":45,"tag":1218,"props":3437,"children":3438},{"class":1220,"line":1933},[3439],{"type":45,"tag":1218,"props":3440,"children":3441},{"style":1374},[3442],{"type":51,"value":3443},"          temperature: 0.0,\n",{"type":45,"tag":1218,"props":3445,"children":3446},{"class":1220,"line":2819},[3447],{"type":45,"tag":1218,"props":3448,"children":3449},{"style":1374},[3450],{"type":51,"value":3451},"          max_tokens: 1024,\n",{"type":45,"tag":1218,"props":3453,"children":3454},{"class":1220,"line":2828},[3455],{"type":45,"tag":1218,"props":3456,"children":3457},{"style":1374},[3458],{"type":51,"value":3459},"          messages: [{\n",{"type":45,"tag":1218,"props":3461,"children":3462},{"class":1220,"line":2837},[3463],{"type":45,"tag":1218,"props":3464,"children":3465},{"style":1374},[3466],{"type":51,"value":3467},"            role: \"user\",\n",{"type":45,"tag":1218,"props":3469,"children":3470},{"class":1220,"line":2855},[3471],{"type":45,"tag":1218,"props":3472,"children":3473},{"style":1374},[3474],{"type":51,"value":3475},"            content: [\n",{"type":45,"tag":1218,"props":3477,"children":3478},{"class":1220,"line":2891},[3479],{"type":45,"tag":1218,"props":3480,"children":3481},{"style":1374},[3482],{"type":51,"value":3483},"              {type: \"text\", text: $text},\n",{"type":45,"tag":1218,"props":3485,"children":3487},{"class":1220,"line":3486},26,[3488],{"type":45,"tag":1218,"props":3489,"children":3490},{"style":1374},[3491],{"type":51,"value":3492},"              {type: \"video_url\", video_url: {url: $url}}\n",{"type":45,"tag":1218,"props":3494,"children":3496},{"class":1220,"line":3495},27,[3497],{"type":45,"tag":1218,"props":3498,"children":3499},{"style":1374},[3500],{"type":51,"value":3501},"            ]\n",{"type":45,"tag":1218,"props":3503,"children":3505},{"class":1220,"line":3504},28,[3506],{"type":45,"tag":1218,"props":3507,"children":3508},{"style":1374},[3509],{"type":51,"value":3510},"          }]\n",{"type":45,"tag":1218,"props":3512,"children":3514},{"class":1220,"line":3513},29,[3515,3520,3524,3529,3533,3537,3541,3545],{"type":45,"tag":1218,"props":3516,"children":3517},{"style":1374},[3518],{"type":51,"value":3519},"        }",{"type":45,"tag":1218,"props":3521,"children":3522},{"style":1231},[3523],{"type":51,"value":2848},{"type":45,"tag":1218,"props":3525,"children":3526},{"style":1231},[3527],{"type":51,"value":3528}," |",{"type":45,"tag":1218,"props":3530,"children":3531},{"style":1369},[3532],{"type":51,"value":2866},{"type":45,"tag":1218,"props":3534,"children":3535},{"style":1374},[3536],{"type":51,"value":2871},{"type":45,"tag":1218,"props":3538,"children":3539},{"style":1231},[3540],{"type":51,"value":1397},{"type":45,"tag":1218,"props":3542,"children":3543},{"style":1374},[3544],{"type":51,"value":2880},{"type":45,"tag":1218,"props":3546,"children":3547},{"style":1231},[3548],{"type":51,"value":2478},{"type":45,"tag":54,"props":3550,"children":3551},{},[3552,3557,3559,3565],{"type":45,"tag":139,"props":3553,"children":3554},{},[3555],{"type":51,"value":3556},"Response:",{"type":51,"value":3558}," standard OpenAI chat-completion envelope. The summary is in\n",{"type":45,"tag":82,"props":3560,"children":3562},{"className":3561},[],[3563],{"type":51,"value":3564},"choices[0].message.content",{"type":51,"value":89},{"type":45,"tag":54,"props":3567,"children":3568},{},[3569,3574,3576,3582,3584,3590],{"type":45,"tag":139,"props":3570,"children":3571},{},[3572],{"type":51,"value":3573},"Cosmos-model notes:",{"type":51,"value":3575}," Cosmos models may return reasoning via\n",{"type":45,"tag":82,"props":3577,"children":3579},{"className":3578},[],[3580],{"type":51,"value":3581},"\u003Cthink>...\u003C\u002Fthink>\u003Canswer>...\u003C\u002Fanswer>",{"type":51,"value":3583}," blocks. Omit the reasoning\ninstructions if you want a plain summary. Frame sampling and pixel limits\nare applied server-side; no client-side prep is required when you pass a\n",{"type":45,"tag":82,"props":3585,"children":3587},{"className":3586},[],[3588],{"type":51,"value":3589},"video_url",{"type":51,"value":89},{"type":45,"tag":1030,"props":3592,"children":3593},{},[],{"type":45,"tag":46,"props":3595,"children":3597},{"id":3596},"end-to-end-example",[3598],{"type":51,"value":3599},"End-to-end example",{"type":45,"tag":54,"props":3601,"children":3602},{},[3603,3604,3613,3615,3620],{"type":51,"value":503},{"type":45,"tag":505,"props":3605,"children":3607},{"href":3606},"references\u002Fend-to-end-example.md",[3608],{"type":45,"tag":82,"props":3609,"children":3611},{"className":3610},[],[3612],{"type":51,"value":3606},{"type":51,"value":3614}," for\nthe full LVS-or-VLM-fallback script that probes ",{"type":45,"tag":82,"props":3616,"children":3618},{"className":3617},[],[3619],{"type":51,"value":369},{"type":51,"value":3621}," and runs the\nappropriate path.",{"type":45,"tag":1030,"props":3623,"children":3624},{},[],{"type":45,"tag":46,"props":3626,"children":3628},{"id":3627},"responses",[3629],{"type":51,"value":3630},"Responses",{"type":45,"tag":185,"props":3632,"children":3633},{},[3634,3649,3681],{"type":45,"tag":189,"props":3635,"children":3636},{},[3637,3641,3643,3648],{"type":45,"tag":139,"props":3638,"children":3639},{},[3640],{"type":51,"value":1228},{"type":51,"value":3642}," returns an OpenAI chat-completion envelope; summary is\n",{"type":45,"tag":82,"props":3644,"children":3646},{"className":3645},[],[3647],{"type":51,"value":3564},{"type":51,"value":89},{"type":45,"tag":189,"props":3650,"children":3651},{},[3652,3657,3659,3665,3667,3673,3675,3680],{"type":45,"tag":139,"props":3653,"children":3654},{},[3655],{"type":51,"value":3656},"LVS service",{"type":51,"value":3658}," returns the same envelope but ",{"type":45,"tag":82,"props":3660,"children":3662},{"className":3661},[],[3663],{"type":51,"value":3664},"content",{"type":51,"value":3666}," is a JSON string —\nrun ",{"type":45,"tag":82,"props":3668,"children":3670},{"className":3669},[],[3671],{"type":51,"value":3672},"jq -r '.choices[0].message.content' | jq",{"type":51,"value":3674}," to reach ",{"type":45,"tag":82,"props":3676,"children":3678},{"className":3677},[],[3679],{"type":51,"value":2909},{"type":51,"value":89},{"type":45,"tag":189,"props":3682,"children":3683},{},[3684,3689,3691,3697,3699,3705,3707,3712],{"type":45,"tag":139,"props":3685,"children":3686},{},[3687],{"type":51,"value":3688},"Errors",{"type":51,"value":3690}," surface as HTTP non-2xx plus JSON ",{"type":45,"tag":82,"props":3692,"children":3694},{"className":3693},[],[3695],{"type":51,"value":3696},"{error: ...}",{"type":51,"value":3698},". LVS ",{"type":45,"tag":82,"props":3700,"children":3702},{"className":3701},[],[3703],{"type":51,"value":3704},"503",{"type":51,"value":3706}," usually\nmeans warmup — retry ",{"type":45,"tag":82,"props":3708,"children":3710},{"className":3709},[],[3711],{"type":51,"value":369},{"type":51,"value":89},{"type":45,"tag":2292,"props":3714,"children":3716},{"id":3715},"presenting-the-output-to-the-user",[3717],{"type":51,"value":3718},"Presenting the output to the user",{"type":45,"tag":54,"props":3720,"children":3721},{},[3722,3724,3729,3731,3736],{"type":51,"value":3723},"Surface backend output with ",{"type":45,"tag":139,"props":3725,"children":3726},{},[3727],{"type":51,"value":3728},"minimal transformation",{"type":51,"value":3730}," — do not paraphrase,\nre-voice, add emojis, or reformat. ",{"type":45,"tag":139,"props":3732,"children":3733},{},[3734],{"type":51,"value":3735},"One backend call → one rendering",{"type":51,"value":3737},": no\nparallel hedging, no duplicate headers, never call both LVS and VLM for the\nsame video.",{"type":45,"tag":54,"props":3739,"children":3740},{},[3741,3746],{"type":45,"tag":139,"props":3742,"children":3743},{},[3744],{"type":51,"value":3745},"Header line.",{"type":51,"value":3747}," Start with exactly one:",{"type":45,"tag":1207,"props":3749,"children":3753},{"className":3750,"code":3752,"language":51},[3751],"language-text","Summary of \u003Cvideo_name> (\u003Cduration>)\n",[3754],{"type":45,"tag":82,"props":3755,"children":3756},{"__ignoreMap":1212},[3757],{"type":51,"value":3752},{"type":45,"tag":54,"props":3759,"children":3760},{},[3761,3767,3769,3775,3777,3783,3785,3791,3793,3799],{"type":45,"tag":82,"props":3762,"children":3764},{"className":3763},[],[3765],{"type":51,"value":3766},"\u003Cduration>",{"type":51,"value":3768}," = ",{"type":45,"tag":82,"props":3770,"children":3772},{"className":3771},[],[3773],{"type":51,"value":3774},"Ns",{"type":51,"value":3776}," for ",{"type":45,"tag":82,"props":3778,"children":3780},{"className":3779},[],[3781],{"type":51,"value":3782},"\u003C 60 s",{"type":51,"value":3784},", else ",{"type":45,"tag":82,"props":3786,"children":3788},{"className":3787},[],[3789],{"type":51,"value":3790},"Mm Ss",{"type":51,"value":3792}," (e.g. ",{"type":45,"tag":82,"props":3794,"children":3796},{"className":3795},[],[3797],{"type":51,"value":3798},"3m 30s",{"type":51,"value":2172},{"type":45,"tag":54,"props":3801,"children":3802},{},[3803,3808,3810,3815,3816,3820,3822,3827,3829,3835,3836,3842,3843,3849,3851,3857],{"type":45,"tag":139,"props":3804,"children":3805},{},[3806],{"type":51,"value":3807},"LVS output:",{"type":51,"value":3809}," render ",{"type":45,"tag":82,"props":3811,"children":3813},{"className":3812},[],[3814],{"type":51,"value":402},{"type":51,"value":2254},{"type":45,"tag":139,"props":3817,"children":3818},{},[3819],{"type":51,"value":2357},{"type":51,"value":3821}," (polished, tone-controlled\nreport — rewriting loses fidelity). Render each ",{"type":45,"tag":82,"props":3823,"children":3825},{"className":3824},[],[3826],{"type":51,"value":409},{"type":51,"value":3828}," entry with its\n",{"type":45,"tag":82,"props":3830,"children":3832},{"className":3831},[],[3833],{"type":51,"value":3834},"start_time",{"type":51,"value":66},{"type":45,"tag":82,"props":3837,"children":3839},{"className":3838},[],[3840],{"type":51,"value":3841},"end_time",{"type":51,"value":66},{"type":45,"tag":82,"props":3844,"children":3846},{"className":3845},[],[3847],{"type":51,"value":3848},"type",{"type":51,"value":3850},", and full ",{"type":45,"tag":82,"props":3852,"children":3854},{"className":3853},[],[3855],{"type":51,"value":3856},"description",{"type":51,"value":3858}," verbatim (table when\nthe client renders one cleanly, otherwise a per-event list). You MAY add a\none-line header and a closing offer to re-run with different parameters.",{"type":45,"tag":54,"props":3860,"children":3861},{},[3862,3867,3868,3873,3875,3881,3883,3888],{"type":45,"tag":139,"props":3863,"children":3864},{},[3865],{"type":51,"value":3866},"VLM output:",{"type":51,"value":3809},{"type":45,"tag":82,"props":3869,"children":3871},{"className":3870},[],[3872],{"type":51,"value":3564},{"type":51,"value":3874}," verbatim. If the model\nproduced ",{"type":45,"tag":82,"props":3876,"children":3878},{"className":3877},[],[3879],{"type":51,"value":3880},"\u003Cthink>…\u003C\u002Fthink>\u003Canswer>…\u003C\u002Fanswer>",{"type":51,"value":3882}," blocks, drop the ",{"type":45,"tag":82,"props":3884,"children":3886},{"className":3885},[],[3887],{"type":51,"value":446},{"type":51,"value":3889},"\nblock and show the answer.",{"type":45,"tag":54,"props":3891,"children":3892},{},[3893,3898,3900,3905],{"type":45,"tag":139,"props":3894,"children":3895},{},[3896],{"type":51,"value":3897},"Fallback warning",{"type":51,"value":3899}," (when applicable) goes ",{"type":45,"tag":139,"props":3901,"children":3902},{},[3903],{"type":51,"value":3904},"above",{"type":51,"value":3906}," the summary, never\nmixed into it.",{"type":45,"tag":46,"props":3908,"children":3910},{"id":3909},"tips",[3911],{"type":51,"value":3912},"Tips",{"type":45,"tag":185,"props":3914,"children":3915},{},[3916,3933,3950,3995,4010,4031,4053,4068,4091,4101],{"type":45,"tag":189,"props":3917,"children":3918},{},[3919,3924,3926,3931],{"type":45,"tag":139,"props":3920,"children":3921},{},[3922],{"type":51,"value":3923},"Route by service availability, not by duration.",{"type":51,"value":3925}," Probe ",{"type":45,"tag":82,"props":3927,"children":3929},{"className":3928},[],[3930],{"type":51,"value":369},{"type":51,"value":3932}," once\nin Setup; HTTP 200 → LVS+HITL for every clip; anything else → VLM fallback.",{"type":45,"tag":189,"props":3934,"children":3935},{},[3936,3941,3943,3948],{"type":45,"tag":139,"props":3937,"children":3938},{},[3939],{"type":51,"value":3940},"HITL is mandatory on the LVS path.",{"type":51,"value":3942}," The ",{"type":45,"tag":82,"props":3944,"children":3946},{"className":3945},[],[3947],{"type":51,"value":2337},{"type":51,"value":3949}," opt-in is the only\nsanctioned bypass. The VLM fallback path is silent (no HITL).",{"type":45,"tag":189,"props":3951,"children":3952},{},[3953,3965,3967,3973,3975,3980,3981,3987,3988,3994],{"type":45,"tag":139,"props":3954,"children":3955},{},[3956,3958,3963],{"type":51,"value":3957},"Readiness = HTTP 200 on ",{"type":45,"tag":82,"props":3959,"children":3961},{"className":3960},[],[3962],{"type":51,"value":369},{"type":51,"value":3964},". Nothing else.",{"type":51,"value":3966}," Body may be empty.\nAlways use ",{"type":45,"tag":82,"props":3968,"children":3970},{"className":3969},[],[3971],{"type":51,"value":3972},"curl -s -o \u002Fdev\u002Fnull -w '%{http_code}'",{"type":51,"value":3974}," — never pipe through\n",{"type":45,"tag":82,"props":3976,"children":3978},{"className":3977},[],[3979],{"type":51,"value":277},{"type":51,"value":2331},{"type":45,"tag":82,"props":3982,"children":3984},{"className":3983},[],[3985],{"type":51,"value":3986},"grep",{"type":51,"value":2331},{"type":45,"tag":82,"props":3989,"children":3991},{"className":3990},[],[3992],{"type":51,"value":3993},"head",{"type":51,"value":89},{"type":45,"tag":189,"props":3996,"children":3997},{},[3998,4008],{"type":45,"tag":139,"props":3999,"children":4000},{},[4001,4003],{"type":51,"value":4002},"Delegate VIOS to ",{"type":45,"tag":82,"props":4004,"children":4006},{"className":4005},[],[4007],{"type":51,"value":1103},{"type":51,"value":4009}," — it is a sub-task; the\nfinal answer is the Step 2 summary, not the clip URL.",{"type":45,"tag":189,"props":4011,"children":4012},{},[4013,4023,4025,4030],{"type":45,"tag":139,"props":4014,"children":4015},{},[4016,4021],{"type":45,"tag":82,"props":4017,"children":4019},{"className":4018},[],[4020],{"type":51,"value":277},{"type":51,"value":4022}," twice for LVS output.",{"type":51,"value":4024}," First unwraps the OpenAI envelope, second\nparses the JSON string inside ",{"type":45,"tag":82,"props":4026,"children":4028},{"className":4027},[],[4029],{"type":51,"value":3664},{"type":51,"value":89},{"type":45,"tag":189,"props":4032,"children":4033},{},[4034,4045,4047,4052],{"type":45,"tag":139,"props":4035,"children":4036},{},[4037,4038,4043],{"type":51,"value":2364},{"type":45,"tag":82,"props":4039,"children":4041},{"className":4040},[],[4042],{"type":51,"value":556},{"type":51,"value":4044}," for 3.2 GA",{"type":51,"value":4046},"; ",{"type":45,"tag":82,"props":4048,"children":4050},{"className":4049},[],[4051],{"type":51,"value":563},{"type":51,"value":2379},{"type":45,"tag":189,"props":4054,"children":4055},{},[4056,4061,4062,4067],{"type":45,"tag":139,"props":4057,"children":4058},{},[4059],{"type":51,"value":4060},"Use the exact VLM model id advertised by the endpoint",{"type":51,"value":1136},{"type":45,"tag":82,"props":4063,"children":4065},{"className":4064},[],[4066],{"type":51,"value":1142},{"type":51,"value":2172},{"type":45,"tag":189,"props":4069,"children":4070},{},[4071,4076,4078,4083,4085,4090],{"type":45,"tag":139,"props":4072,"children":4073},{},[4074],{"type":51,"value":4075},"Render output verbatim",{"type":51,"value":4077}," — no paraphrasing, no reformatting, no rewriting\nthe ",{"type":45,"tag":82,"props":4079,"children":4081},{"className":4080},[],[4082],{"type":51,"value":402},{"type":51,"value":4084}," or ",{"type":45,"tag":82,"props":4086,"children":4088},{"className":4087},[],[4089],{"type":51,"value":3564},{"type":51,"value":89},{"type":45,"tag":189,"props":4092,"children":4093},{},[4094,4099],{"type":45,"tag":139,"props":4095,"children":4096},{},[4097],{"type":51,"value":4098},"One call, one render.",{"type":51,"value":4100}," No parallel hedging, no double renderings.",{"type":45,"tag":189,"props":4102,"children":4103},{},[4104,4109,4111,4117,4119,4125,4127,4133,4135,4141],{"type":45,"tag":139,"props":4105,"children":4106},{},[4107],{"type":51,"value":4108},"Match the image tag to the host platform.",{"type":51,"value":4110}," Use ",{"type":45,"tag":82,"props":4112,"children":4114},{"className":4113},[],[4115],{"type":51,"value":4116},"LVS_TAG=3.2.1",{"type":51,"value":4118},"\n(and ",{"type":45,"tag":82,"props":4120,"children":4122},{"className":4121},[],[4123],{"type":51,"value":4124},"RTVI_VLM_IMAGE_TAG=3.2.1",{"type":51,"value":4126},") on x86 \u002F Jetson Thor, and\n",{"type":45,"tag":82,"props":4128,"children":4130},{"className":4129},[],[4131],{"type":51,"value":4132},"LVS_TAG=3.2.1-sbsa",{"type":51,"value":4134}," (and ",{"type":45,"tag":82,"props":4136,"children":4138},{"className":4137},[],[4139],{"type":51,"value":4140},"RTVI_VLM_IMAGE_TAG=3.2.1-sbsa",{"type":51,"value":4142},")\non SBSA \u002F DGX Spark \u002F Grace (server-class ARM64) hosts.",{"type":45,"tag":46,"props":4144,"children":4146},{"id":4145},"cross-reference",[4147],{"type":51,"value":4148},"Cross-reference",{"type":45,"tag":185,"props":4150,"children":4151},{},[4152,4176,4185,4194,4204,4222],{"type":45,"tag":189,"props":4153,"children":4154},{},[4155,4159,4161,4167,4169,4174],{"type":45,"tag":139,"props":4156,"children":4157},{},[4158],{"type":51,"value":261},{"type":51,"value":4160}," — bring up the ",{"type":45,"tag":82,"props":4162,"children":4164},{"className":4163},[],[4165],{"type":51,"value":4166},"base",{"type":51,"value":4168}," (VLM only) or ",{"type":45,"tag":82,"props":4170,"children":4172},{"className":4171},[],[4173],{"type":51,"value":245},{"type":51,"value":4175}," (VLM + video summarization service) profile",{"type":45,"tag":189,"props":4177,"children":4178},{},[4179,4183],{"type":45,"tag":139,"props":4180,"children":4181},{},[4182],{"type":51,"value":1103},{"type":51,"value":4184}," (VIOS API) — upload videos, list streams, get clip URLs",{"type":45,"tag":189,"props":4186,"children":4187},{},[4188,4192],{"type":45,"tag":139,"props":4189,"children":4190},{},[4191],{"type":51,"value":224},{"type":51,"value":4193}," — semantic search across the archive (different profile)",{"type":45,"tag":189,"props":4195,"children":4196},{},[4197,4202],{"type":45,"tag":139,"props":4198,"children":4199},{},[4200],{"type":51,"value":4201},"vss-query-analytics",{"type":51,"value":4203}," — query incidents\u002Fevents from Elasticsearch",{"type":45,"tag":189,"props":4205,"children":4206},{},[4207,4212,4214],{"type":45,"tag":139,"props":4208,"children":4209},{},[4210],{"type":51,"value":4211},"video summarization API reference",{"type":51,"value":4213}," — ",{"type":45,"tag":505,"props":4215,"children":4216},{"href":542},[4217],{"type":45,"tag":82,"props":4218,"children":4220},{"className":4219},[],[4221],{"type":51,"value":542},{"type":45,"tag":189,"props":4223,"children":4224},{},[4225,4230,4231],{"type":45,"tag":139,"props":4226,"children":4227},{},[4228],{"type":51,"value":4229},"video summarization service ops reference",{"type":51,"value":4213},{"type":45,"tag":505,"props":4232,"children":4233},{"href":615},[4234],{"type":45,"tag":82,"props":4235,"children":4237},{"className":4236},[],[4238],{"type":51,"value":615},{"type":45,"tag":54,"props":4240,"children":4241},{},[4242],{"type":51,"value":4243},"bump:3",{"type":45,"tag":4245,"props":4246,"children":4247},"style",{},[4248],{"type":51,"value":4249},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":4251,"total":4353},[4252,4269,4283,4297,4309,4324,4339],{"slug":4253,"name":4253,"fn":4254,"description":4255,"org":4256,"tags":4257,"stars":23,"repoUrl":24,"updatedAt":4268},"accelerated-computing-cudf","accelerate data processing with cuDF","Official NVIDIA-authored guidance for NVIDIA cuDF GPU DataFrames, pandas acceleration, dask-cuDF, ETL, joins, groupby, CSV\u002FParquet I\u002FO, nullable semantics, and multi-GPU DataFrame workloads.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4258,4261,4264,4265],{"name":4259,"slug":4260,"type":15},"Data Analysis","data-analysis",{"name":4262,"slug":4263,"type":15},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":15},{"name":4266,"slug":4267,"type":15},"Performance","performance","2026-07-14T05:28:43.176466",{"slug":4270,"name":4270,"fn":4271,"description":4272,"org":4273,"tags":4274,"stars":23,"repoUrl":24,"updatedAt":4282},"aiq-deploy","deploy and manage NVIDIA AI-Q infrastructure","Use when asked to install, deploy, run, validate, troubleshoot, or stop NVIDIA AI-Q Blueprint infrastructure.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4275,4278,4281],{"name":4276,"slug":4277,"type":15},"Deployment","deployment",{"name":4279,"slug":4280,"type":15},"Infrastructure","infrastructure",{"name":9,"slug":8,"type":15},"2026-07-14T05:29:06.667109",{"slug":4284,"name":4284,"fn":4285,"description":4286,"org":4287,"tags":4288,"stars":23,"repoUrl":24,"updatedAt":4296},"aiq-research","conduct deep research with AI-Q","Use when asked to run deep research or AI-Q research through a reachable NVIDIA AI-Q Blueprint backend.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4289,4292,4293],{"name":4290,"slug":4291,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":4294,"slug":4295,"type":15},"Research","research","2026-07-14T05:28:06.816956",{"slug":4298,"name":4298,"fn":4299,"description":4300,"org":4301,"tags":4302,"stars":23,"repoUrl":24,"updatedAt":4308},"amc-run-sample-calibration","run AMC sample dataset calibration","Run end-to-end calibration on the shipped sample dataset (sdg_08_2_sample_data_010926.zip) against a running AMC microservice. Use when user says 'test sample dataset', 'run sample calibration', 'verify AMC install', or 'launch and test'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4303,4304,4305],{"name":4259,"slug":4260,"type":15},{"name":9,"slug":8,"type":15},{"name":4306,"slug":4307,"type":15},"Testing","testing","2026-07-17T05:29:03.913266",{"slug":4310,"name":4310,"fn":4311,"description":4312,"org":4313,"tags":4314,"stars":23,"repoUrl":24,"updatedAt":4323},"amc-run-video-calibration","calibrate video datasets with AutoMagicCalib","Calibrate a new dataset from pre-recorded video files via the AutoMagicCalib REST API. Use when user has local MP4s and says 'calibrate my videos', 'run AMC on these videos', or similar. For RTSP\u002Flive streams, use amc-run-rtsp-calibration instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4315,4318,4321,4322],{"name":4316,"slug":4317,"type":15},"Automation","automation",{"name":4319,"slug":4320,"type":15},"Imaging","imaging",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"2026-07-17T05:28:53.905004",{"slug":4325,"name":4325,"fn":4326,"description":4327,"org":4328,"tags":4329,"stars":23,"repoUrl":24,"updatedAt":4338},"amc-setup-calibration-stack","deploy AutoMagicCalib microservice with Docker","Launch AutoMagicCalib microservice and web UI from NGC release images via Docker Compose. Use when user says 'deploy auto calibration', 'launch auto calibration', 'launch AMC', 'start MS+UI', or 'set up auto-magic-calib'. Requires NGC API key.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4330,4331,4334,4335],{"name":4276,"slug":4277,"type":15},{"name":4332,"slug":4333,"type":15},"Docker","docker",{"name":9,"slug":8,"type":15},{"name":4336,"slug":4337,"type":15},"Operations","operations","2026-07-17T05:28:56.913999",{"slug":4340,"name":4340,"fn":4341,"description":4342,"org":4343,"tags":4344,"stars":23,"repoUrl":24,"updatedAt":4352},"cudaq-guide","develop quantum applications with CUDA-Q","CUDA-Q onboarding guide for installation, test programs, GPU simulation, QPU hardware, and quantum applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4345,4346,4349],{"name":9,"slug":8,"type":15},{"name":4347,"slug":4348,"type":15},"Quantum Computing","quantum-computing",{"name":4350,"slug":4351,"type":15},"Simulation","simulation","2026-07-14T05:26:58.898253",305,{"items":4355,"total":4506},[4356,4374,4390,4401,4413,4427,4440,4454,4465,4474,4488,4497],{"slug":4357,"name":4357,"fn":4358,"description":4359,"org":4360,"tags":4361,"stars":4371,"repoUrl":4372,"updatedAt":4373},"nemoclaw-user-guide","retrieve NemoClaw documentation and configuration","Guides human users' AI agents to the NemoClaw docs MCP server and canonical Fern documentation in Markdown form. Use when users ask how to install, configure, operate, troubleshoot, secure, or learn NemoClaw with an AI coding assistant. Trigger keywords - nemoclaw docs, use nemoclaw with ai agent, nemoclaw mcp docs, nemoclaw install help, nemoclaw quickstart, nemoclaw markdown docs, llms.txt, agent skills.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4362,4365,4368],{"name":4363,"slug":4364,"type":15},"Documentation","documentation",{"name":4366,"slug":4367,"type":15},"MCP","mcp",{"name":4369,"slug":4370,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":4375,"name":4375,"fn":4376,"description":4377,"org":4378,"tags":4379,"stars":4387,"repoUrl":4388,"updatedAt":4389},"mcore-build-and-dependency","manage Megatron-LM development environments","Container-based dev environment setup and dependency management for Megatron-LM. Covers acquiring and launching the CI container, uv package management, and updating uv.lock.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4380,4383,4384],{"name":4381,"slug":4382,"type":15},"Containers","containers",{"name":4276,"slug":4277,"type":15},{"name":4385,"slug":4386,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":4391,"name":4391,"fn":4392,"description":4393,"org":4394,"tags":4395,"stars":4387,"repoUrl":4388,"updatedAt":4400},"mcore-bump-base-image","update NVIDIA PyTorch base images","Bump the NVIDIA PyTorch base image (`nvcr.io\u002Fnvidia\u002Fpytorch:YY.MM-py3`) used by Megatron-LM CI. Covers the two pin sites (GitHub CI in `docker\u002F.ngc_version.dev` and GitLab CI in `.gitlab\u002Fstages\u002F01.build.yml`), the post-bump CI loop (re-run functional tests, refresh golden values, mark broken tests), and the gotchas that bit PRs",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4396,4399],{"name":4397,"slug":4398,"type":15},"CI\u002FCD","ci-cd",{"name":4276,"slug":4277,"type":15},"2026-07-14T05:25:59.97109",{"slug":4402,"name":4402,"fn":4403,"description":4404,"org":4405,"tags":4406,"stars":4387,"repoUrl":4388,"updatedAt":4412},"mcore-cicd","manage CI\u002FCD pipelines for Megatron-LM","CI\u002FCD reference for Megatron-LM. Covers CI pipeline structure, PR scope labels, triggering internal GitLab CI (which force-pushes the current branch to a pull-request\u002FBRANCH ref — always dry-run and verify the destination first; never run against shared or protected branches), and CI failure investigation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4407,4408,4409],{"name":4397,"slug":4398,"type":15},{"name":4276,"slug":4277,"type":15},{"name":4410,"slug":4411,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":4414,"name":4414,"fn":4415,"description":4416,"org":4417,"tags":4418,"stars":4387,"repoUrl":4388,"updatedAt":4426},"mcore-create-issue","investigate CI failures and create issues","Investigate a failing GitHub Actions run or job and create a GitHub issue for the failure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4419,4422,4423],{"name":4420,"slug":4421,"type":15},"Debugging","debugging",{"name":4410,"slug":4411,"type":15},{"name":4424,"slug":4425,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":4428,"name":4428,"fn":4429,"description":4430,"org":4431,"tags":4432,"stars":4387,"repoUrl":4388,"updatedAt":4439},"mcore-linting-and-formatting","lint and format Megatron-LM code","Linting and formatting for Megatron-LM. Covers running autoformat.sh, tools (ruff, black, isort, pylint, mypy), and code style rules.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4433,4436],{"name":4434,"slug":4435,"type":15},"Best Practices","best-practices",{"name":4437,"slug":4438,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":4441,"name":4441,"fn":4442,"description":4443,"org":4444,"tags":4445,"stars":4387,"repoUrl":4388,"updatedAt":4453},"mcore-migrate-gpt-to-hybrid","migrate Megatron-LM models to HybridModel","Migration guide for moving Megatron Core GPTModel checkpoints, model providers, training commands, and layer mappings to HybridModel.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4446,4449,4452],{"name":4447,"slug":4448,"type":15},"Machine Learning","machine-learning",{"name":4450,"slug":4451,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":4455,"name":4455,"fn":4456,"description":4457,"org":4458,"tags":4459,"stars":4387,"repoUrl":4388,"updatedAt":4464},"mcore-onboard-gb200-1node-tests","onboard functional tests for GB200","Onboard 1-node GitHub MR functional tests for GB200 from existing mr-scoped 2-node tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4460,4463],{"name":4461,"slug":4462,"type":15},"QA","qa",{"name":4306,"slug":4307,"type":15},"2026-07-14T05:25:53.673039",{"slug":4466,"name":4466,"fn":4467,"description":4468,"org":4469,"tags":4470,"stars":4387,"repoUrl":4388,"updatedAt":4473},"mcore-run-on-slurm","launch distributed training jobs on SLURM","How to launch distributed Megatron-LM training jobs on a SLURM cluster. Covers a minimal sbatch skeleton, environment-variable setup for torch.distributed.run, CUDA_DEVICE_MAX_CONNECTIONS rules across hardware and parallelism modes, container conventions, monitoring, and per-rank failure diagnosis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4471,4472],{"name":4276,"slug":4277,"type":15},{"name":4279,"slug":4280,"type":15},"2026-07-14T05:25:49.362534",{"slug":4475,"name":4475,"fn":4476,"description":4477,"org":4478,"tags":4479,"stars":4387,"repoUrl":4388,"updatedAt":4487},"mcore-split-pr","split pull requests to reduce review load","Split a PR into multiple PRs to reduce the number of required CODEOWNERS reviewer groups.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4480,4483,4484],{"name":4481,"slug":4482,"type":15},"Code Review","code-review",{"name":4410,"slug":4411,"type":15},{"name":4485,"slug":4486,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":4489,"name":4489,"fn":4490,"description":4491,"org":4492,"tags":4493,"stars":4387,"repoUrl":4388,"updatedAt":4496},"mcore-testing","run and manage Megatron-LM tests","Test system for Megatron-LM. Covers test layout, recipe YAML structure, adding and running unit and functional tests, golden values, marker filters, and CI parity.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4494,4495],{"name":4461,"slug":4462,"type":15},{"name":4306,"slug":4307,"type":15},"2026-07-14T05:25:54.928983",{"slug":4498,"name":4498,"fn":4499,"description":4500,"org":4501,"tags":4502,"stars":4387,"repoUrl":4388,"updatedAt":4505},"nightly-sync","manage nightly main-to-dev sync workflows","Domain knowledge for the nightly main-to-dev sync workflow. Covers merge strategy, CI architecture, failure investigation, and known issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4503,4504],{"name":4316,"slug":4317,"type":15},{"name":4397,"slug":4398,"type":15},"2026-07-30T05:29:03.275638",496]