{"record":{"id":"f99adcf2531b1d3b","repo":"NousResearch/hermes-agent","slug":"install-of-slug-did-not-produce-a-spritesheet","errorCode":null,"errorMessage":"install of '{slug}' did not produce a spritesheet","messagePattern":"install of '(.+?)' did not produce a spritesheet","errorType":"exception","errorClass":"PetStoreError","httpStatus":null,"severity":"error","filePath":"agent/pet/store.py","lineNumber":203,"sourceCode":"\n    # Fetch the upstream pet.json if present; otherwise synthesize a minimal\n    # one so the local layout is self-describing.\n    meta: dict = {}\n    if entry.pet_json_url and _is_petdex_host(entry.pet_json_url):\n        try:\n            meta = _download_json(entry.pet_json_url, timeout=timeout)\n        except Exception as exc:  # noqa: BLE001 - non-fatal, fall back below\n            logger.debug(\"pet.json fetch failed for %s: %s\", slug, exc)\n    if not isinstance(meta, dict) or not meta:\n        meta = {\"id\": slug, \"displayName\": entry.display_name, \"description\": \"\"}\n    meta[\"spritesheetPath\"] = sprite_path.name\n    meta.setdefault(\"id\", slug)\n    meta.setdefault(\"displayName\", entry.display_name)\n    (directory / \"pet.json\").write_text(json.dumps(meta, indent=2), encoding=\"utf-8\")\n\n    pet = load_pet(slug)\n    if pet is None or not pet.exists:\n        raise PetStoreError(f\"install of '{slug}' did not produce a spritesheet\")\n    return pet\n\n\ndef slugify(name: str) -> str:\n    \"\"\"Lowercase, hyphenate, and strip a display name into a filesystem slug.\"\"\"\n    slug = re.sub(r\"[^a-z0-9]+\", \"-\", (name or \"\").strip().lower()).strip(\"-\")\n    return slug or \"pet\"\n\n\ndef unique_slug(name: str) -> str:\n    \"\"\"A :func:`slugify` result that doesn't collide with an existing pet dir.\"\"\"\n    base = slugify(name)\n    slug = base\n    counter = 2\n    while (pets_dir() / slug).exists():\n        slug = f\"{base}-{counter}\"\n        counter += 1\n    return slug","sourceCodeStart":185,"sourceCodeEnd":221,"githubUrl":"https://github.com/NousResearch/hermes-agent/blob/c896c09c42910c584c4c7d2325b58c14713ea42c/agent/pet/store.py#L185-L221","documentation":"Error \"install of '{slug}' did not produce a spritesheet\" thrown in NousResearch/hermes-agent.","triggerScenarios":"Thrown at agent/pet/store.py:203 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Retry the install; the spritesheet download or write failed.","Check the pet store directory is writable and has free space."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c896c09c42910c584c4c7d2325b58c14713ea42c","analyzedAt":"2026-08-14T17:18:01.089Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}