== with-deps run 20260820-120807 == -- npm install (README: npm install --no-package-lock) -- PASS: npm install --no-package-lock exits 0 install seconds: 6 -- resolved top-level deps -- visual-explainer@0.10.0 /tmp/ve-deps-20260820-120807 -> ./ ├── @earendil-works/pi-coding-agent@0.84.2 ├── @modelcontextprotocol/server@2.0.0 ├── node-html-parser@9.0.1 ├── pptxgenjs@4.0.1 └── zod@4.4.3 -- MCP handshake (isolated HOME=/tmp/ve-mcp-home-20260820-120807) -- PASS: initialize serverInfo name=visual-explainer PASS: serverInfo version=0.10.0 PASS: tools/list returns exactly 3 tools PASS: all 3 documented tool names present PASS: prompts/list returns 7 command templates PASS: resources/list returns 10 (3 core + 7 command resources) -- tool call: visual_explainer_prepare -- PASS: prepare returns isError false PASS: prepare returns recommendedFlow text -- tool call: visual_explainer_render_quick (valid spec, open=false) -- PASS: render_quick valid spec returns isError false PASS: html written to isolated ~/.agent/diagrams/ve-smoke-auth-flow.html PASS: rendered content contains spec title PASS: step/status markup rendered -- tool call: determinism via MCP -- PASS: two MCP renders byte-identical (md5 24eedb7d14f967bc07f820e71731981b) -- tool call: negative cases -- PASS: invalid spec rejected: isError true, names the bad key PASS: path traversal filename rejected (basename enforced) PASS: no file written outside ~/.agent/diagrams PASS: html fragment rejected (complete-document contract enforced) PASS: valid document accepted (favicon/lang/viewport auto-added) PASS: favicon injected into doc missing one PASS: lang attribute injected -- pptx exporter -- PASS: pptx export exits 0 PASS: deck.pptx written (75655 bytes) PASS: pptx is a valid ZIP container (PK magic) RESULT: 24 passed, 0 failed (with-deps run 20260820-120807)