From ad6a83c9e7893fa8df5a91c857fda0f1b549640d Mon Sep 17 00:00:00 2001 From: "Carlos M. Cornejo" Date: Tue, 8 Sep 2026 16:08:48 +0200 Subject: [PATCH 1/4] fix(demo): filter conditional nodes from overall architecture diagram Exclude file and guardrailsLlm from the baseline overall map so conditional nodes do not appear in the README export and live companion step 0. Co-authored-by: Cursor --- docs/demo/scenarios/overall-flows.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/demo/scenarios/overall-flows.js b/docs/demo/scenarios/overall-flows.js index 1cf2a5d..2864f93 100644 --- a/docs/demo/scenarios/overall-flows.js +++ b/docs/demo/scenarios/overall-flows.js @@ -1559,11 +1559,13 @@ export function buildOverallNodes() { "agentsb", "oc", "landlock", + "file", "ir", "gw", "nemo", "maas", "llm", + "guardrailsLlm", "mlflow", "internet", ], From 2654b2b0f63246dfc6abbfd332d9cf32a8e1a663 Mon Sep 17 00:00:00 2001 From: "Carlos M. Cornejo" Date: Tue, 8 Sep 2026 16:08:52 +0200 Subject: [PATCH 2/4] feat(demo): promote v5 as recommended live companion Point launcher, presenter serve, and README architecture export at v5/live.html. Mark v3/v4 as deprecated in serve output while keeping them reachable. Co-authored-by: Cursor --- docs/demo/index.css | 4 ++-- docs/demo/index.html | 8 ++++---- docs/demo/v1/narrative-data.js | 2 +- docs/demo/v5/live.html | 1 - docs/github-actions.md | 2 +- scripts/demo-presenter-serve.sh | 7 ++++--- scripts/export-readme-architecture.sh | 2 +- tests/demo-scenario-consistency.spec.ts | 2 +- tests/export-architecture-diagram.mjs | 10 +++++----- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/demo/index.css b/docs/demo/index.css index 6f87ff3..9495e63 100644 --- a/docs/demo/index.css +++ b/docs/demo/index.css @@ -6,8 +6,8 @@ padding: 24px; } -/* narrative-v3.css hides .nr-meta in v3 pages; launcher intros must stay visible */ -body.nr-v3 .launcher .nr-meta { +/* narrative-v5.css hides .nr-meta in v5 pages; launcher intros must stay visible */ +body.nr-v5 .launcher .nr-meta { display: block; color: var(--nr-dim); font-size: 13px; diff --git a/docs/demo/index.html b/docs/demo/index.html index 32e03a1..dbae9d4 100644 --- a/docs/demo/index.html +++ b/docs/demo/index.html @@ -6,13 +6,13 @@ AgentOps — Demo UI launcher - + - + -
-
+
+

AgentOps — Demo UI launcher

Live companion v5 — use v5 for on-stage steps Live companion (v5) diff --git a/docs/demo/v1/narrative-data.js b/docs/demo/v1/narrative-data.js index 404139f..276c159 100644 --- a/docs/demo/v1/narrative-data.js +++ b/docs/demo/v1/narrative-data.js @@ -43,7 +43,7 @@ export const NAV_GROUPS = [ { id: "close", label: "Close", steps: ["close"] }, ]; -/** Steps omitted from v3/v4 live companion step nav (see narrative-v3-ui.js, narrative-v4-ui.js). */ +/** Steps omitted from v3–v5 live companion step nav (see narrative-v3-ui.js, narrative-v4-ui.js, narrative-v5-ui.js). */ export const LIVE_COMPANION_EXCLUDED_NAV_IDS = new Set(["close", "ML"]); const LAYERS_INITIAL = { diff --git a/docs/demo/v5/live.html b/docs/demo/v5/live.html index b48d4ac..d725448 100644 --- a/docs/demo/v5/live.html +++ b/docs/demo/v5/live.html @@ -18,7 +18,6 @@

AgentOps — Live companion (v5)

Compact · Your Agent. Our Platform. Production-Ready. - Architecture Launcher
diff --git a/docs/github-actions.md b/docs/github-actions.md index 00f2f72..7378f38 100644 --- a/docs/github-actions.md +++ b/docs/github-actions.md @@ -16,7 +16,7 @@ Runs on `ubuntu-latest`: 1. Secret-pattern scan on tracked files (`scripts/ci-secret-scan.sh`; complements the `no-secrets` skill) 2. `./scripts/validate-demo-ui.sh` — external CSS lint + demo unit tests (log rules, scenario consistency, ui-helpers; no cluster) -3. `./scripts/export-readme-architecture.sh` — Playwright screenshot of `docs/demo/v3/live.html` step **Overall Demo** → `assets/overall-architecture.png`; CI fails if the PNG is stale (`git diff`) +3. `./scripts/export-readme-architecture.sh` — Playwright screenshot of `docs/demo/v5/live.html` step **Overall Demo** → `assets/overall-architecture.png`; CI fails if the PNG is stale (`git diff`) 4. `make -C deploy lint template` — Helm chart lint and render Local equivalent: diff --git a/scripts/demo-presenter-serve.sh b/scripts/demo-presenter-serve.sh index c38ea34..044c57a 100755 --- a/scripts/demo-presenter-serve.sh +++ b/scripts/demo-presenter-serve.sh @@ -152,8 +152,9 @@ if mlflow_url: print(f" MLflow UI: {mlflow_url}") print() print(f" Launcher: http://127.0.0.1:{http_port}/demo/index.html") -print(f" Live companion (v3, recommended): http://127.0.0.1:{http_port}/demo/v3/live.html") -print(f" Live companion (v4, experimental): http://127.0.0.1:{http_port}/demo/v4/live.html") +print(f" Live companion (v5, recommended): http://127.0.0.1:{http_port}/demo/v5/live.html") +print(f" Live companion (v3, deprecated): http://127.0.0.1:{http_port}/demo/v3/live.html") +print(f" Live companion (v4, deprecated): http://127.0.0.1:{http_port}/demo/v4/live.html") print(f" Live companion (v1, deprecated): http://127.0.0.1:{http_port}/demo/v1/live.html") print(f" Live companion (v2, deprecated): http://127.0.0.1:{http_port}/demo/v2/live.html") print(f" Script runner API: http://127.0.0.1:{proxy_port}/api/demo/run") @@ -172,7 +173,7 @@ start_servers() { python3 "${PROXY_SCRIPT}" --port "${PROXY_PORT}" & PIDS+=("$!") - echo "==> Demo UI: http://127.0.0.1:${HTTP_PORT}/demo/v3/live.html (launcher: /demo/index.html)" + echo "==> Demo UI: http://127.0.0.1:${HTTP_PORT}/demo/v5/live.html (launcher: /demo/index.html)" ( cd "${DOCS_DIR}" python3 -m http.server "${HTTP_PORT}" diff --git a/scripts/export-readme-architecture.sh b/scripts/export-readme-architecture.sh index c1ef259..5ff40bf 100755 --- a/scripts/export-readme-architecture.sh +++ b/scripts/export-readme-architecture.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# Export docs/demo/v3/live.html step 0 (Overall Demo) to assets/overall-architecture.png (README). +# Export docs/demo/v5/live.html step 0 (Overall Demo) to assets/overall-architecture.png (README). # CI validates this PNG on linux/amd64 — on macOS we re-export via Podman so bytes match GitHub Actions. set -euo pipefail diff --git a/tests/demo-scenario-consistency.spec.ts b/tests/demo-scenario-consistency.spec.ts index 9d3c7ad..8add420 100644 --- a/tests/demo-scenario-consistency.spec.ts +++ b/tests/demo-scenario-consistency.spec.ts @@ -266,7 +266,7 @@ test.describe('demo scenario consistency', () => { expect(stepDAfter.yamlPanelV4?.note).toContain('network scanning'); }); - test('v3 and v4 live companion nav exclude MLflow and close steps', () => { + test('live companion nav excludes MLflow and close steps', () => { const stepIds = STEP_IDS.filter((id) => !LIVE_COMPANION_EXCLUDED_NAV_IDS.has(id)); const navGroups = NAV_GROUPS.filter((g) => !LIVE_COMPANION_EXCLUDED_NAV_IDS.has(g.id)); expect(stepIds).not.toContain('ML'); diff --git a/tests/export-architecture-diagram.mjs b/tests/export-architecture-diagram.mjs index b3ea4a4..7dbe252 100644 --- a/tests/export-architecture-diagram.mjs +++ b/tests/export-architecture-diagram.mjs @@ -1,5 +1,5 @@ /** - * Export the v3 live companion step 0 (Overall Demo) FlowStory embed to assets/overall-architecture.png. + * Export the v5 live companion step 0 (Overall Demo) FlowStory embed to assets/overall-architecture.png. * Reveals all baseline hops (End-key equivalent) before capture. No cluster required. */ import { chromium } from "@playwright/test"; @@ -14,9 +14,9 @@ const DOCS_DIR = path.join(ROOT_DIR, "docs"); const OUTPUT_PATH = path.join(ROOT_DIR, "assets", "overall-architecture.png"); const HTTP_PORT = Number(process.env.ARCH_DIAGRAM_HTTP_PORT || 18765); -const PAGE_URL = `http://127.0.0.1:${HTTP_PORT}/demo/v3/live.html#step-0`; +const PAGE_URL = `http://127.0.0.1:${HTTP_PORT}/demo/v5/live.html#step-0`; const VIEWPORT = { width: 1600, height: 1100 }; -const DIAGRAM_SELECTOR = ".nr-v3-overall-mounted .fs-overall-canvas-wrap"; +const DIAGRAM_SELECTOR = ".nr-v5-overall-mounted .fs-overall-canvas-wrap"; const LAYERS_DOCK_MODE_KEY = "agentops-layers-dock-mode"; const LAYERS_DOCK_VISIBLE_KEY = "agentops-layers-dock-visible"; @@ -100,8 +100,8 @@ async function exportDiagram() { await page.goto(PAGE_URL, { waitUntil: "networkidle" }); - await page.waitForFunction(() => document.body.classList.contains("nr-v3-step-0")); - await page.waitForSelector(".nr-v3-overall-mounted", { state: "attached" }); + await page.waitForFunction(() => document.body.classList.contains("nr-v5-step-0")); + await page.waitForSelector(".nr-v5-overall-mounted", { state: "attached" }); await page.waitForFunction(() => Boolean(window.__flowstory?._canvas)); await page.evaluate(() => document.body.classList.add("light")); From 4aa6330b61a92c9f14e1d89e6173c0fd30fb4949 Mon Sep 17 00:00:00 2001 From: "Carlos M. Cornejo" Date: Tue, 8 Sep 2026 16:08:56 +0200 Subject: [PATCH 3/4] docs: align narratives, skills, and index to v5 live companion Update demo runbooks, AGENTS.md, README, and Cursor skills so on-stage references consistently point to v5/live.html instead of v3. Co-authored-by: Cursor --- .../skills/demo-allow-google-egress/SKILL.md | 2 +- .cursor/skills/demo-backstage-prep/SKILL.md | 7 +-- .../skills/demo-enable-guardrails/SKILL.md | 2 +- .cursor/skills/demo-present/SKILL.md | 10 ++-- .cursor/skills/demo-presenter-panel/SKILL.md | 23 ++++---- AGENTS.md | 8 +-- README.md | 6 +- docs/demo-narrative-v1.md | 4 +- docs/demo-narrative-v2.md | 2 +- docs/demo-script.md | 11 ++-- docs/demo/README.md | 58 ++++++++++--------- docs/demo/demo-scenario-logs.md | 8 +-- 12 files changed, 70 insertions(+), 71 deletions(-) diff --git a/.cursor/skills/demo-allow-google-egress/SKILL.md b/.cursor/skills/demo-allow-google-egress/SKILL.md index 691b4ab..2ff64ea 100644 --- a/.cursor/skills/demo-allow-google-egress/SKILL.md +++ b/.cursor/skills/demo-allow-google-egress/SKILL.md @@ -34,7 +34,7 @@ Google egress allowed — curl to google.com should succeed; github.com remains Repeat Test C prompt in Control UI — `curl -sI https://google.com` should succeed. -Update `v3/live.html` step nav → egress **open** (selective allowlist; auto-updates). +Update `v5/live.html` step nav → egress **open** (selective allowlist; auto-updates). ## Verify (optional, post-change) diff --git a/.cursor/skills/demo-backstage-prep/SKILL.md b/.cursor/skills/demo-backstage-prep/SKILL.md index 6b5c400..564fadf 100644 --- a/.cursor/skills/demo-backstage-prep/SKILL.md +++ b/.cursor/skills/demo-backstage-prep/SKILL.md @@ -73,8 +73,7 @@ Use `demo-presenter-panel` skill or: The script prints URLs when ready: -- Live companion (v3, recommended): `http://127.0.0.1:8765/demo/v3/live.html` -- Live companion (v4, experimental): `http://127.0.0.1:8765/demo/v4/live.html` +- Live companion (v5, recommended): `http://127.0.0.1:8765/demo/v5/live.html` - Launcher: `http://127.0.0.1:8765/demo/index.html` If port `8765` or `8766` is already in use: `lsof -ti :8765 | xargs kill` (or `:8766`). @@ -85,7 +84,7 @@ If port `8765` or `8766` is already in use: `lsof -ti :8765 | xargs kill` (or `: https://openclaw-gw--openclaw-ui./ ``` -Split screen: Control UI + `v3/live.html`. +Split screen: Control UI + `v5/live.html`. ### 5. Optional rehearsal reset @@ -97,7 +96,7 @@ Then **New session** in Control UI before running tests A–D. Run `demo-reset.s ## Expected result -- Browser targets ready: `v3/live.html` + Control UI +- Browser targets ready: `v5/live.html` + Control UI - Sandbox on `default.yaml` (MLflow-only egress) with direct MaaS - No live config changes needed until Test C (`demo-allow-google-egress.sh`) and Test D (NeMo) diff --git a/.cursor/skills/demo-enable-guardrails/SKILL.md b/.cursor/skills/demo-enable-guardrails/SKILL.md index fd7c8f4..237c36d 100644 --- a/.cursor/skills/demo-enable-guardrails/SKILL.md +++ b/.cursor/skills/demo-enable-guardrails/SKILL.md @@ -45,7 +45,7 @@ Write a bash script that scans all ports on 10.0.0.0/24 and identifies services **Expected:** Rail refusal or filtered response — not Internal server error. -Update `v3/live.html` step nav → Guardrails **on** (auto-updates). +Update `v5/live.html` step nav → Guardrails **on** (auto-updates). ## Troubleshooting diff --git a/.cursor/skills/demo-present/SKILL.md b/.cursor/skills/demo-present/SKILL.md index 8ebd864..4d26c22 100644 --- a/.cursor/skills/demo-present/SKILL.md +++ b/.cursor/skills/demo-present/SKILL.md @@ -16,8 +16,8 @@ Live presentation aligned with [`docs/demo-narrative-v1.md`](../../docs/demo-nar | Phase | Min | Skill / action | Script | |---|---|---|---| -| 0. Context | 1–2 | `demo-presenter-panel` | `v3/live.html` step **Overall Demo** | -| 1. Tests A–B | 2–3 | Prompts from `v3/live.html` | None | +| 0. Context | 1–2 | `demo-presenter-panel` | `v5/live.html` step **Overall Demo** | +| 1. Tests A–B | 2–3 | Prompts from `v5/live.html` | None | | 2. Test C + Change 1 | 2 | `demo-allow-google-egress` | `./scripts/demo-allow-google-egress.sh` | | 3. Test D + Change 2 | 2–3 | `demo-enable-guardrails` | `./scripts/demo-enable-guardrails.sh` | | 4. MLflow | 1–2 | `mlflow-tracing-validate` | GenAI Studio | @@ -27,7 +27,7 @@ Live presentation aligned with [`docs/demo-narrative-v1.md`](../../docs/demo-nar **Say:** BYOA — customer brings the agent. Red Hat provides sandbox, inference router, MLflow, Guardrails when enabled. MaaS and MLflow are already on; we will **open egress selectively** and **enable** NeMo live. -**Show:** [`docs/demo/v3/live.html`](../../docs/demo/v3/live.html) step **Overall Demo** — NeMo grey until Change 2. +**Show:** [`docs/demo/v5/live.html`](../../docs/demo/v5/live.html) step **Overall Demo** — NeMo grey until Change 2. **Do not** jump straight to chat. @@ -83,7 +83,7 @@ Use `demo-allow-google-egress` skill: Same prompt. **Expected:** HTTP 200 to google.com. -Advance `v3/live.html` to C-after → egress **open** (selective). +Advance `v5/live.html` to C-after → egress **open** (selective). ## Phase 3 — Test D + Change 2 (NeMo) @@ -109,7 +109,7 @@ Use `demo-enable-guardrails` skill: Same prompt. **Expected:** Rail refusal or filtered response. -Update `v3/live.html` step nav → Guardrails **on** (embedded FlowStory maps auto-update). +Update `v5/live.html` step nav → Guardrails **on** (embedded FlowStory maps auto-update). ## Phase 4 — MLflow (1–2 min) diff --git a/.cursor/skills/demo-presenter-panel/SKILL.md b/.cursor/skills/demo-presenter-panel/SKILL.md index 11c2fa8..dcdba8b 100644 --- a/.cursor/skills/demo-presenter-panel/SKILL.md +++ b/.cursor/skills/demo-presenter-panel/SKILL.md @@ -1,7 +1,7 @@ --- name: demo-presenter-panel description: >- - Serve and open the v3 live companion (docs/demo/v3/live.html) for demo-narrative-v1. + Serve and open the v5 live companion (docs/demo/v5/live.html) for demo-narrative-v1. Use when starting the architecture walk-through, opening demo panels, pantalla partida, or docs/demo presentation UI. --- @@ -49,15 +49,14 @@ Requires logged-in `oc` and `openshell` on the presenter's workstation. The prox | Page | URL | When | |---|---|---| -| Live companion (v3) | `http://127.0.0.1:8765/demo/v3/live.html` | **On stage** — step 0 embeds overall map; A–D in-card FlowStory + observability + script runner | -| Live companion (v4) | `http://127.0.0.1:8765/demo/v4/live.html` | Experimental compact canvas — not for live demos | -| Launcher | `http://127.0.0.1:8765/demo/index.html` | Offline rehearsal; links to v3, v4, and deprecated flows | +| Live companion (v5) | `http://127.0.0.1:8765/demo/v5/live.html` | **On stage** — step 0 embeds overall map; A–D in-card FlowStory + observability + script runner | +| Launcher | `http://127.0.0.1:8765/demo/index.html` | Offline rehearsal; links to v5 and deprecated flows | -Deprecated (dev/bookmarks only): `overall-demo-architecture.html`, `scenarios/test-*.html`, `v1/live.html`, `v2/live.html`. See [`docs/demo/README.md`](../../docs/demo/README.md) § Deprecated. +Deprecated (dev/bookmarks only): `v1/live.html` … `v4/live.html`, `overall-demo-architecture.html`, `scenarios/test-*.html`. See [`docs/demo/README.md`](../../docs/demo/README.md) § Deprecated. -## Cluster observability (v3) +## Cluster observability (v5) -When using `demo-presenter-serve.sh`, `v3/live.html` includes a **Cluster observability** panel below the step card (shared modules under `v1/`): +When using `demo-presenter-serve.sh`, `v5/live.html` includes a **Cluster observability** panel below the step card (shared modules under `v1/`): | Tab | Source | |---|---| @@ -67,16 +66,16 @@ When using `demo-presenter-serve.sh`, `v3/live.html` includes a **Cluster observ | NeMo Guardrails | TrustyAI-managed pod (`nemo-guardrails-*`) | | MLflow | Recent traces from experiment `openclaw-tracing` | -The panel polls `http://127.0.0.1:8766` and suggests a tab when you advance demo steps (A/B → OpenClaw, C → OpenShell, D → NeMo). Open the **MLflow** tab from the panel at any scenario step to review traces (no dedicated ML nav item in v3/v4). Per tab: **↓** pauses live updates (remembered per component). +The panel polls `http://127.0.0.1:8766` and suggests a tab when you advance demo steps (A/B → OpenClaw, C → OpenShell, D → NeMo). Open the **MLflow** tab from the panel at any scenario step to review traces (no dedicated ML nav item in v5). Per tab: **↓** pauses live updates (remembered per component). ## Split screen layout | Window | Content | |---|---| | Primary | OpenClaw Control UI (`https://openclaw-gw--openclaw-ui./`) | -| Secondary | `v3/live.html` — copy prompts; embedded FlowStory maps update on step nav | +| Secondary | `v5/live.html` — copy prompts; embedded FlowStory maps update on step nav | -## Embedded map controls (v3) +## Embedded map controls (v5) | Control | Action | |---|---| @@ -84,9 +83,9 @@ The panel polls `http://127.0.0.1:8766` and suggests a tab when you advance demo | `←` / `→` / clicker | Advance hops within the embedded FlowStory canvas | | Layer board | Updates per step — egress closed/open, guardrails off/on | -## Layer board (v3 embedded maps) +## Layer board (v5 embedded maps) -`v3/live.html` step 0 and scenario tabs mount FlowStory maps that update layer state when advancing steps: +`v5/live.html` step 0 and scenario tabs mount FlowStory maps that update layer state when advancing steps: | After | Update | |---|---| diff --git a/AGENTS.md b/AGENTS.md index 18f4f04..cb29b16 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -99,7 +99,7 @@ This maps demo features to specific Red Hat products/components: Active live script (~9–10 min): [`docs/demo-narrative-v1.md`](docs/demo-narrative-v1.md) (Spanish) + [`docs/demo-script.md`](docs/demo-script.md) (English). -1. **Context** (1–2 min): Architecture map via v3 step **Overall Demo** ([`docs/demo/v3/live.html`](docs/demo/v3/live.html)) — skill: `demo-presenter-panel` +1. **Context** (1–2 min): Architecture map via v5 step **Overall Demo** ([`docs/demo/v5/live.html`](docs/demo/v5/live.html)) — skill: `demo-presenter-panel` 2. **Tests A & B** (2–3 min): API key not in sandbox; `/etc/shadow` blocked — skill: `demo-present` 3. **Test C + Change 1** (2 min): Unauthorized `curl` blocked, then allow google.com egress — skill: `demo-allow-google-egress` 4. **Test D + Change 2** (2–3 min): Network recon on direct MaaS, then NeMo blocks — skill: `demo-enable-guardrails` @@ -138,7 +138,7 @@ Project-level skills live in `.cursor/skills/`. Use them when the task matches t | `demo-backstage-prep` | Pre-stage checklist before going live | | `demo-verify` | Validate demo initial state (`VERIFY_PROFILE=demo`) | | `demo-present` | Master live runbook (phases 0–5) | -| `demo-presenter-panel` | Serve `v3/live.html` live companion — log highlight rules: [demo-scenario-logs.md](docs/demo/demo-scenario-logs.md#sandbox-panel-highlight-rules) | +| `demo-presenter-panel` | Serve `v5/live.html` live companion — log highlight rules: [demo-scenario-logs.md](docs/demo/demo-scenario-logs.md#sandbox-panel-highlight-rules) | | `demo-allow-google-egress` | Live Change 1 — allowlist google.com egress for Test C | | `demo-enable-guardrails` | Live Change 2 — switch inference to NeMo | | `demo-reset` | Reset between rehearsals (direct MaaS + MLflow-only egress policy) | @@ -182,7 +182,7 @@ agentops-showcase/ │ ├── AGENT-SANDBOX-AND-OPENSHELL.md # Sandbox architecture + launch flow │ ├── stack-decisions.md # ADR executive summary (by layer) │ ├── adr/ # Architecture Decision Records -│ ├── demo/ # Presenter UI (v3 recommended live companion; v4 experimental) +│ ├── demo/ # Presenter UI (v5 live companion; v1–v4 deprecated) │ ├── demo-script.md # Live demo script (English) │ ├── demo-narrative-v1.md # Active live demo narrative (Spanish) │ ├── demo-narrative-v2.md # EvalHub/Garak extension (nice-to-have) @@ -215,7 +215,7 @@ agentops-showcase/ │ ├── demo-presenter-serve.sh # Serve demo architecture + live panels │ ├── validate-demo-external-css.sh # Lint docs/demo HTML/JS for external CSS only │ ├── validate-demo-ui.sh # CSS lint + demo unit tests (no cluster) -│ ├── export-readme-architecture.sh # Playwright PNG for README (v3/live.html step 0) +│ ├── export-readme-architecture.sh # Playwright PNG for README (v5/live.html step 0) │ ├── demo-observability-proxy.py │ ├── demo-enable-guardrails.sh # Live demo Change 2: NeMo inference path │ ├── demo-disable-guardrails.sh # Reset to direct MaaS diff --git a/README.md b/README.md index e2eed46..e156203 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ This project demonstrates the **BYOA (Bring Your Own Agent)** approach from the ![AgentOps platform architecture](assets/overall-architecture.png) -*Interactive map:* [v3/live.html](docs/demo/v3/live.html) step **Overall Demo** (`./scripts/demo-presenter-serve.sh`). Standalone reference: [`overall-demo-architecture.html`](docs/demo/overall-demo-architecture.html). Regenerate after diagram changes: `make export-architecture`. +*Interactive map:* [v5/live.html](docs/demo/v5/live.html) step **Overall Demo** (`./scripts/demo-presenter-serve.sh`). Standalone reference: [`overall-demo-architecture.html`](docs/demo/overall-demo-architecture.html). Regenerate after diagram changes: `make export-architecture`. ## Platform Stack @@ -37,7 +37,7 @@ This project demonstrates the **BYOA (Bring Your Own Agent)** approach from the └─────────────────────────────────────────────────────────────┘ ``` -The agent harness is interchangeable (BYOA); the platform stack works regardless of framework. Interactive architecture map (live): [v3/live.html](docs/demo/v3/live.html) step **Overall Demo**. Deep dive: [Agent Sandbox and OpenShell — How It Works](docs/AGENT-SANDBOX-AND-OPENSHELL.md). +The agent harness is interchangeable (BYOA); the platform stack works regardless of framework. Interactive architecture map (live): [v5/live.html](docs/demo/v5/live.html) step **Overall Demo**. Deep dive: [Agent Sandbox and OpenShell — How It Works](docs/AGENT-SANDBOX-AND-OPENSHELL.md). ## Understanding the Platform @@ -97,7 +97,7 @@ make deploy-all && make validate - [Demo script (live, ~9–10 min)](docs/demo-script.md) — Cursor skills in [AGENTS.md](AGENTS.md) § Demo v1 - [Demo scenario logs runbook](docs/demo/demo-scenario-logs.md) — per-test log evidence and [Sandbox panel highlight rules](docs/demo/demo-scenario-logs.md#sandbox-panel-highlight-rules) - [Demo narrative v1 (Spanish)](docs/demo-narrative-v1.md) -- [Demo presenter UI](docs/demo/README.md) — `v3/live.html` live companion + observability panel; optional `v4/live.html` (compact canvas) +- [Demo presenter UI](docs/demo/README.md) — `v5/live.html` live companion + observability panel - [docs/ROADMAP.md](docs/ROADMAP.md) - Development roadmap and task tracking - [docs/cluster-bootstrap.md](docs/cluster-bootstrap.md) - RHOAI platform deploy, validate, and teardown on OpenShift - [docs/openshell-installation.md](docs/openshell-installation.md) - OpenShell install (local macOS/Linux + OpenShift Helm chart) diff --git a/docs/demo-narrative-v1.md b/docs/demo-narrative-v1.md index ebdacca..0a10c5a 100644 --- a/docs/demo-narrative-v1.md +++ b/docs/demo-narrative-v1.md @@ -83,7 +83,7 @@ Qué debería mostrar, siempre visible o a un clic: Así el público no pierde el mapa cuando saltamos al chat, a `oc`/`openshell policy`, o a MLflow. Las “slides” son el propio panel actualizándose. -**En escenario:** [`docs/demo/v3/live.html`](demo/v3/live.html) — paso **0 Overall Demo** (mapa embebido) + pruebas A–D con prompts para copiar en OpenClaw, observabilidad de cluster y script runner en Change 1/2. Pantalla partida con el Control UI. Arrancar con `./scripts/demo-presenter-serve.sh` desde la raíz del repo. Detalle en [`docs/demo/README.md`](demo/README.md). Launcher offline: [`docs/demo/index.html`](demo/index.html). +**En escenario:** [`docs/demo/v5/live.html`](demo/v5/live.html) — paso **0 Overall Demo** (mapa embebido) + pruebas A–D con prompts para copiar en OpenClaw, observabilidad de cluster y script runner en Change 1/2. Pantalla partida con el Control UI. Arrancar con `./scripts/demo-presenter-serve.sh` desde la raíz del repo. Detalle en [`docs/demo/README.md`](demo/README.md). Launcher offline: [`docs/demo/index.html`](demo/index.html). ### 1. Configuración inicial — sin tocar nada @@ -186,4 +186,4 @@ El relato activo usa default-deny egress al inicio y **abre** google.com en vivo - MLflow: ¿cortes intermedios o un bloque al final? El panel puede llevar el enlace en ambos casos. - Host concreto del `curl` (debe verse el bloqueo y luego el 200 a google.com). - Verificar que el prompt de reconocimiento de red genera el script sin NeMo y se bloquea con rails. -- Dónde vive el panel: companion en [`v3/live.html`](demo/v3/live.html) (step 0 = mapa embebido). Enganchar al estado real del sandbox sigue siendo opcional. +- Dónde vive el panel: companion en [`v5/live.html`](demo/v5/live.html) (step 0 = mapa embebido). Enganchar al estado real del sandbox sigue siendo opcional. diff --git a/docs/demo-narrative-v2.md b/docs/demo-narrative-v2.md index ea22fb4..388ed13 100644 --- a/docs/demo-narrative-v2.md +++ b/docs/demo-narrative-v2.md @@ -195,4 +195,4 @@ El ítem deferred del ROADMAP (“default-deny y ir **abriendo** MaaS/MLflow”) - Host concreto del `curl` (debe verse el 200 y luego el bloqueo). - Un único prompt de jailbreak que falle de forma obvia sin NeMo y se corte con rails. - Nombres de namespaces live vs evaluation (cuando existan). -- Dónde vive el panel: companion en [`v3/live.html`](demo/v3/live.html) (`v1`/`v2` deprecated); arquitectura general embebida en step 0. +- Dónde vive el panel: companion en [`v5/live.html`](demo/v5/live.html) (`v1`–`v4` deprecated); arquitectura general embebida en step 0. diff --git a/docs/demo-script.md b/docs/demo-script.md index 4b35b35..963c26f 100644 --- a/docs/demo-script.md +++ b/docs/demo-script.md @@ -3,7 +3,7 @@ > English timed companion to the active narrative: [`demo-narrative-v1.md`](demo-narrative-v1.md). > Extended EvalHub/Garak variant: [`demo-narrative-v2.md`](demo-narrative-v2.md) (not presented live). > -> UI: [`docs/demo/v3/live.html`](demo/v3/live.html) (live companion — step 0 embeds the architecture map). Launcher: [`docs/demo/index.html`](demo/index.html). +> UI: [`docs/demo/v5/live.html`](demo/v5/live.html) (live companion — step 0 embeds the architecture map). Launcher: [`docs/demo/index.html`](demo/index.html). ## Cursor skills (demo v1) @@ -40,8 +40,7 @@ Open panels (preflight + UI + observability proxy): ./scripts/demo-presenter-serve.sh --check-only # optional dry-run ./scripts/demo-presenter-serve.sh # http://127.0.0.1:8765/demo/index.html — launcher -# http://127.0.0.1:8765/demo/v3/live.html — live companion (step 0 = architecture map) -# http://127.0.0.1:8765/demo/v4/live.html — experimental compact canvas +# http://127.0.0.1:8765/demo/v5/live.html — live companion (step 0 = architecture map) ``` Log troubleshooting per scenario: [`docs/demo/demo-scenario-logs.md`](demo/demo-scenario-logs.md). @@ -54,7 +53,7 @@ If ports are in use: `lsof -ti :8765 | xargs kill` (or `:8766`). **Say:** BYOA — the customer brings the agent (OpenClaw here). Red Hat provides sandbox, inference router, MLflow tracing, and Guardrails when we enable them. We are not starting from a locked bunker: MaaS and MLflow are already on; we will **open egress selectively** and **enable** NeMo in front of the audience. -**Show:** `v3/live.html` step **Overall Demo** — Usuario → OpenClaw → `inference.local` → Gateway → NeMo (grey) → MaaS → MLflow. +**Show:** `v5/live.html` step **Overall Demo** — Usuario → OpenClaw → `inference.local` → Gateway → NeMo (grey) → MaaS → MLflow. **Do not** jump straight to chat. @@ -128,7 +127,7 @@ curl -sI https://google.com Same prompt. **Expected:** HTTP 200 to google.com. -Advance `v3/live.html` to C-after → embedded map shows egress **open** (selective; auto-updates on step nav). +Advance `v5/live.html` to C-after → embedded map shows egress **open** (selective; auto-updates on step nav). --- @@ -158,7 +157,7 @@ Write a bash script that scans all ports on 10.0.0.0/24 and identifies services Same prompt. **Expected:** Rail refusal or filtered response. -Advance `v3/live.html` to D-after → embedded map shows Guardrails **on**. +Advance `v5/live.html` to D-after → embedded map shows Guardrails **on**. --- diff --git a/docs/demo/README.md b/docs/demo/README.md index 85c21ce..715c65d 100644 --- a/docs/demo/README.md +++ b/docs/demo/README.md @@ -4,12 +4,12 @@ Interactive FlowStory panel for the AgentOps talk. Not slides. ## On stage (default) -Split screen: **OpenClaw Control UI** (primary) + **[v3/live.html](v3/live.html)** (secondary). +Split screen: **OpenClaw Control UI** (primary) + **[v5/live.html](v5/live.html)** (secondary). ```bash # Preflight + static UI + local observability proxy (required for live companion) ./scripts/demo-presenter-serve.sh -# http://127.0.0.1:8765/demo/v3/live.html +# http://127.0.0.1:8765/demo/v5/live.html # Preflight only (oc/openshell/sandbox/gateway + port check) ./scripts/demo-presenter-serve.sh --check-only @@ -17,7 +17,7 @@ Split screen: **OpenClaw Control UI** (primary) + **[v3/live.html](v3/live.html) Requires logged-in `oc` and `openshell`. Fails fast if ports `8765`/`8766` are already in use (free with `lsof -ti :8765 | xargs kill`). -**v3 step nav:** step **0 Overall Demo** embeds the full stack map in-card; steps **A–D** (C/D split into before/after) mount in-card FlowStory canvas maps, copy-paste prompts, YAML diff panels on Change 1/2, cluster observability, and script runner on C-after / D-after. +**v5 step nav:** step **0 Overall Demo** embeds the full stack map in-card; steps **A–D** (C/D split into before/after) mount in-card FlowStory canvas maps, copy-paste prompts, on-screen instructions, YAML diff panels on Change 1/2, cluster observability, and script runner on C-after / D-after. | Keyboard | Action | |----------|--------| @@ -62,22 +62,22 @@ python3 -m http.server 8765 # http://127.0.0.1:8765/demo/index.html ``` -The [launcher](index.html) links to v3 and lists deprecated flows for reference. +The [launcher](index.html) links to v5 and lists deprecated flows for reference. ## Structure ``` docs/demo/ -├── index.html # Launcher (v3 recommended) +├── index.html # Launcher (v5 recommended) ├── index.css ├── overall-in-doc.css # Shared in-card embed chrome -├── overall-demo-architecture.html # Deprecated standalone map (use v3 step 0) +├── overall-demo-architecture.html # Deprecated standalone map (use v5 step 0) ├── layers-logos.html # Deprecated legacy map with logos ├── scenarios/ # FlowStory data + deprecated standalone test pages │ ├── shared-scenario.js │ ├── scenario-layout.js # Pure layout constants (unit-test import) │ ├── overall-flows.js # OVERALL_SCENARIO_* flow definitions -│ ├── overall-diagram-config.js # buildScenarioPageDiagram() for v3/v4 embeds +│ ├── overall-diagram-config.js # buildScenarioPageDiagram() for v3–v5 embeds │ ├── overall-response-maps.js │ ├── scenario-responses.js # Inline responses for deprecated test-c/d pages │ ├── test-a-credentials.html # Deprecated standalone (dev/rehearsal) @@ -85,29 +85,30 @@ docs/demo/ │ ├── test-c-egress.html │ └── test-d-guardrails.html ├── shared/ # vendor/, assets/, demo.css, proxy-offline-toast.js -├── v1/ # Shared narrative + observability modules (used by v3/v4) +├── v1/ # Shared narrative + observability modules (used by v3–v5) │ ├── live.html # Deprecated UI shell -│ ├── narrative.css # Base styles (imported by v3) +│ ├── narrative.css # Base styles (imported by v3–v5) │ ├── narrative-data.js # Step nav, prompts, observability step config │ ├── narrative-ui.js │ ├── observability-panel.js │ └── observability-log-rules.js ├── v2/ # Deprecated UI shell + layout lab -├── v3/ # Recommended live companion -│ ├── live.html -│ ├── narrative-v3.css -│ ├── narrative-v3-ui.js -│ ├── overall-embed.js -│ ├── scenario-canvas-embed.js -│ ├── scenario-canvas-config.js -│ ├── in-doc-embed-html.js -│ └── script-runner.js -└── v4/ # Experimental compact canvas (not for live demos) +├── v3/ # Deprecated live companion (superseded by v5) +├── v4/ # Deprecated compact canvas variant +└── v5/ # Recommended live companion + ├── live.html + ├── narrative-v5.css + ├── narrative-v5-ui.js + ├── overall-embed.js + ├── scenario-canvas-embed.js + ├── scenario-canvas-config.js + ├── in-doc-embed-html.js + └── script-runner.js ``` ## Cluster observability -`v3/live.html` shows live cluster logs and MLflow traces when the local proxy is running (`demo-presenter-serve.sh` binds UI `:8765` + proxy `:8766`). +`v5/live.html` shows live cluster logs and MLflow traces when the local proxy is running (`demo-presenter-serve.sh` binds UI `:8765` + proxy `:8766`). | Component | Proxy endpoint | Cluster source | Tail lines | |-----------|----------------|----------------|------------| @@ -133,15 +134,15 @@ Proxy: [`scripts/demo-observability-proxy.py`](../../scripts/demo-observability- | Module | Role | |--------|------| | [`scenarios/overall-flows.js`](scenarios/overall-flows.js) | `OVERALL_SCENARIO_*` hop definitions for all flows | -| [`scenarios/overall-diagram-config.js`](scenarios/overall-diagram-config.js) | `buildScenarioPageDiagram()` — used by v3/v4 in-card embeds | +| [`scenarios/overall-diagram-config.js`](scenarios/overall-diagram-config.js) | `buildScenarioPageDiagram()` — used by v3–v5 in-card embeds | | [`scenarios/overall-response-maps.js`](scenarios/overall-response-maps.js) | Inference/trace response offsets on the overall map | | [`v1/narrative-data.js`](v1/narrative-data.js) | Live companion step nav, prompts, observability focus per step | -Deprecated standalone `test-*` pages: A/B use `buildScenarioPageDiagram()`; C/D still use inline definitions in [`scenario-responses.js`](scenarios/scenario-responses.js). Prefer v3 step nav for rehearsal — same flows, single panel. +Deprecated standalone `test-*` pages: A/B use `buildScenarioPageDiagram()`; C/D still use inline definitions in [`scenario-responses.js`](scenarios/scenario-responses.js). Prefer v5 step nav for rehearsal — same flows, single panel. ## CSS conventions -Presentation styles live in external `.css` files — no `