Not in the top 1,000 by GitHub stars

img2threejs/plugin-interior

Production interior authoring and interactive Three.js delivery plugin for img2.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

f2c3667bb6d3 → f2c3667bb6d3

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → f2c3667bb6d3

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit f2c3667bb6d3bacfc9e38898a7516d47bc2e90b1

258GitHub stars
2stars in 7 days
1skill in this repository
7commits in 30 days

Heat

3.6
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Nov 2, 2026258

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

img2-interior

When your agent uses it

Builds image-led interiors through Blender/Python, PBR, render-and-repair, bake/export and an interactive Three.js viewer; verifies native/runtime/portable delivery with img2.

What it loads into context

Frontmatter

84 tokens

Always available to the agent

SKILL.md

2,411 tokens

When the skill is activated

Reference documents

28,499 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Showcase and support (discoverable reference)
  2. Start from the actual image
  3. Execute the complete production loop
  4. Run real authoring and visual iterations
  5. Attest only observed stages
  6. Current audits and final gate
  7. Handoff and authority

Scripts executed separately

  • authoring/__init__.py
  • authoring/calibration.py
  • authoring/geometry.py
  • authoring/inspection.py
  • authoring/pipeline.py
  • authoring/regression.py
  • examples/studio/build_scene.py
  • package.json
  • recipes/oak-linen/build_scene.py
  • resources_lib/__init__.py
  • resources_lib/polyhaven.py
  • resources_lib/storage.py
  • resources_lib/surfaces.py
  • runtime/viewer/package.json
  • runtime/viewer/src/interior-curtains.js
  • runtime/viewer/src/interior-lightmaps.js
  • runtime/viewer/src/interior-manifest.js
  • runtime/viewer/src/interior-navigation.js
  • runtime/viewer/src/interior.js
  • runtime/viewer/vite.config.js
  • scripts/package_plugin.py
  • scripts/verify_install.py
  • tests/test_audits.py
  • tests/test_authoring.py
  • tests/test_project.py
  • tests/test_resources.py
  • tests/test_workflow.py
  • tests/viewer/curtains.test.mjs
  • tests/viewer/helpers.mjs
  • tests/viewer/manifest.test.mjs
  • tests/viewer/navigation-lightmaps.test.mjs
  • tools/audit_delivery.py
  • tools/audit_materials.py
  • tools/audit_support.py
  • tools/author_scene.py
  • tools/compare_views.py
  • tools/gate_workflow.py
  • tools/inspect_scene.py
  • tools/interior_project.py
  • tools/interior_workflow.py
  • tools/polyhaven.py
  • tools/prepare_surfaces.py
  • tools/project_support.py
  • tools/run_gates.py
  • tools/validate_scene.mjs
  • tools/workflow_support.py

Files

  • .github/FUNDING.ymlasset93 bytes
  • .github/workflows/ci.ymlasset1,344 bytes
  • .gitignoreasset108 bytes
  • .npmignoreasset150 bytes
  • CHANGELOG.mddoc9,916 bytes
  • LICENSEasset4,972 bytes
  • README.mddoc17,997 bytes
  • SECURITY.mddoc4,938 bytes
  • SKILL.mdcore11,149 bytes
  • SKILL.mdcore11,149 bytes
  • SKILL.mdcore11,149 bytes
  • SKILL.mdcore11,149 bytes
  • SKILL.mdcore11,149 bytes
  • SKILL.mdcore11,149 bytes
  • SKILL.mdcore11,149 bytes
  • SKILL.mdcore11,149 bytes
  • SKILL.mdcore11,149 bytes
  • SKILL.mdcore11,149 bytes
  • SKILL.mdcore11,149 bytes
  • SKILL.mdcore11,149 bytes
  • SKILL.mdcore11,149 bytes
  • SKILL.mdcore11,149 bytes
  • SKILL.mdcore11,149 bytes
  • SKILL.mdcore11,149 bytes
  • SKILL.mdcore11,149 bytes
  • SKILL.mdcore11,149 bytes
  • SKILL.mdcore11,149 bytes
  • SKILL.mdcore11,149 bytes
  • SKILL.mdcore11,149 bytes
  • THIRD_PARTY_NOTICES.mddoc3,404 bytes
  • authoring/__init__.pyruns3,802 bytes
  • authoring/calibration.pyruns10,083 bytes
  • authoring/geometry.pyruns18,128 bytes
  • authoring/inspection.pyruns8,384 bytes
  • authoring/pipeline.pyruns38,437 bytes
  • authoring/regression.pyruns13,938 bytes
  • docs/showcase/README.mddoc4,074 bytes
  • docs/showcase/living-room-comparison.webpasset63,378 bytes
  • docs/showcase/living-room-viewer.webpasset107,930 bytes
  • examples/oak-linen-intake.jsonasset921 bytes
  • examples/oak-linen-material-policy.jsonasset493 bytes
  • examples/studio/build_scene.pyruns5,388 bytes
  • examples/studio/scene-spec.jsonasset1,870 bytes
  • gates.jsonasset549 bytes
  • licenses/Apache-2.0.txtdoc11,337 bytes
  • package.jsonruns1,935 bytes
  • plugin.jsonasset402 bytes
  • recipes/oak-linen/build_scene.pyruns37,646 bytes
  • recipes/oak-linen/resource-selection.jsonasset2,005 bytes
  • recipes/oak-linen/scene-spec.jsonasset3,163 bytes
  • recipes/oak-linen/surfaces.jsonasset4,622 bytes
  • reference/bake-export.mddoc7,829 bytes
  • reference/delivery.mddoc4,658 bytes
  • reference/geometry.mddoc3,024 bytes
  • reference/installation.mddoc16,315 bytes
  • reference/intake-camera.mddoc3,690 bytes
  • reference/interaction.mddoc4,184 bytes
  • reference/lighting.mddoc4,015 bytes
  • reference/materials.mddoc4,236 bytes
  • reference/oak-linen-recipe.mddoc4,229 bytes
  • reference/production-runbook.mddoc8,152 bytes
  • reference/reference-analysis.mddoc3,922 bytes
  • reference/resources.mddoc5,721 bytes
  • reference/review.mddoc3,863 bytes
  • reference/scene-contract.mddoc6,421 bytes
  • reference/showcase-lessons.mddoc4,282 bytes
  • reference/tool-inputs.mddoc4,430 bytes
  • reference/viewer-integration.mddoc5,500 bytes
  • requirements-authoring.txtdoc296 bytes
  • requirements-surfaces.txtdoc113 bytes
  • requirements.txtdoc320 bytes
  • resources_lib/__init__.pyruns86 bytes
  • resources_lib/polyhaven.pyruns11,684 bytes
  • resources_lib/storage.pyruns2,852 bytes
  • resources_lib/surfaces.pyruns15,840 bytes
  • runtime/viewer/index.htmlasset6,595 bytes
  • runtime/viewer/package-lock.jsonasset35,653 bytes
  • runtime/viewer/package.jsonruns394 bytes
  • runtime/viewer/src/interior-curtains.jsruns35,452 bytes
  • runtime/viewer/src/interior-lightmaps.jsruns1,382 bytes
  • runtime/viewer/src/interior-manifest.jsruns5,945 bytes
  • runtime/viewer/src/interior-navigation.jsruns4,491 bytes
  • runtime/viewer/src/interior.cssasset10,093 bytes
  • runtime/viewer/src/interior.jsruns36,255 bytes
  • runtime/viewer/vite.config.jsruns90 bytes
  • scripts/package_plugin.pyruns4,427 bytes
  • scripts/verify_install.pyruns6,654 bytes
  • steps.jsonasset8,590 bytes
  • tests/test_audits.pyruns24,810 bytes
  • tests/test_authoring.pyruns6,486 bytes
  • tests/test_project.pyruns8,164 bytes
  • tests/test_resources.pyruns17,754 bytes
  • tests/test_workflow.pyruns19,176 bytes
  • tests/viewer/curtains.test.mjsruns6,569 bytes
  • tests/viewer/helpers.mjsruns4,325 bytes
  • tests/viewer/manifest.test.mjsruns2,828 bytes
  • tests/viewer/navigation-lightmaps.test.mjsruns4,195 bytes
  • tools/audit_delivery.pyruns8,309 bytes
  • tools/audit_materials.pyruns25,121 bytes
  • tools/audit_support.pyruns10,206 bytes
  • tools/author_scene.pyruns2,234 bytes
  • tools/compare_views.pyruns4,756 bytes
  • tools/gate_workflow.pyruns1,420 bytes
  • tools/inspect_scene.pyruns1,420 bytes
  • tools/interior_project.pyruns3,502 bytes
  • tools/interior_workflow.pyruns2,961 bytes
  • tools/polyhaven.pyruns2,270 bytes
  • tools/prepare_surfaces.pyruns1,124 bytes
  • tools/project_support.pyruns19,939 bytes
  • tools/run_gates.pyruns506 bytes
  • tools/validate_scene.mjsruns4,389 bytes
  • tools/workflow_support.pyruns17,170 bytes

No excerpt is shown for this license. Read the source on GitHub.

View the complete source on GitHub

Skills included

  • img2-interior

Repository facts

License
No license detected
Created
Oct 18, 2026
Last pushed
Oct 19, 2026
Forks
28
Open issues
0
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 5, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 20 notes
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 400 signals by file

.github/FUNDING.yml

  • Network accessline 3
    custom: ['https://img2threejs.io/donate.html']

.gitignore

  • Access to secretsline 9
    [Credential-related source omitted]

.npmignore

  • Access to secretsline 11
    [Credential-related source omitted]

CHANGELOG.md

  • Network accessline 18
    - Replace private-distribution plans: published as **`@img2threejs/img2interior@0.3.0`** with `npm publish --access public`. The public npm package and the public `img2threejs/img2interior` GitHub repository ship the same project; no authen
  • Network accessline 23
    - Redesign the README as a package landing page with a complete, room-independent copy-and-use prompt, explicit setup/delivery expectations, and actual Oak / Linen living-room reference/native/browser previews. Link the actual hosted [live 

LICENSE

  • Network accessline 52
    Request commercial permission through https://github.com/img2threejs. Repository

README.md

  • Network accessline 5
    An agent-operated interior reconstruction skill for **Claude Code, Codex and OpenCode**, powered by the [img2 harness](https://github.com/img2threejs/img2). Your agent reads the reference, authors a Blender scene, compares renders, and buil
  • Network accessline 9
    [Live demo](https://img2threejs.io/living-room/) · [Showcase](#showcase) · [Copy-and-use prompt](#copy-and-use-prompt) · [What you get](#what-you-get) · [Installation](#installation) · [Support](#support)
  • Network accessline 11
    > **Package:** `@img2threejs/img2interior@0.3.1`; **public npm distribution**. **Source:** [img2threejs/img2interior](https://github.com/img2threejs/img2interior), the same project published to npm. Install with `npm install` + official img
  • Network accessline 13
    [![npm](https://img.shields.io/npm/v/@img2threejs/img2interior.svg)](https://www.npmjs.com/package/@img2threejs/img2interior) [![npm downloads/month](https://img.shields.io/npm/dm/@img2threejs/img2interior.svg?label=downloads)](https://www.
  • Network accessline 17
    ### Oak / Linen — Living Room — **[Try the live demo](https://img2threejs.io/living-room/)**
  • Network accessline 21
    [![Side-by-side living-room comparison: an AI-generated reference on the left and the actual authored Blender render on the right.](https://raw.githubusercontent.com/img2threejs/img2interior-media/375e6af7ab526d7c0c10be91b0e72f2757391ec7/li
  • Network accessline 25
    The **[live demo](https://img2threejs.io/living-room/)** is the same authored scene running in a hosted Three.js viewer — camera views, wireframe, curtain controls, sofa finishes and downloads. The screenshot below is an archived capture of
  • Network accessline 32
    [![Archived browser screenshot of the living-room reconstruction, with source comparison, camera views, wireframe, curtain controls, sofa finishes and native/portable download links.](https://raw.githubusercontent.com/img2threejs/img2interi
  • Network accessline 34
    This is a **static capture of the working Three.js project**; the live, interactive page lives at **[img2threejs.io/living-room/](https://img2threejs.io/living-room/)**. Indirect lighting is baked; curtain movement does not produce fully dy
  • Network accessline 38
    [Live demo](https://img2threejs.io/living-room/) · [Public preview gallery](https://github.com/img2threejs/img2interior-media) · [Bundled gallery and limitations](docs/showcase/README.md)
  • Network accessline 141
    - **Package:** [`@img2threejs/img2interior`](https://www.npmjs.com/package/@img2threejs/img2interior), version `0.3.1`, published with `--access public`. - **Download counts** (last month, daily series, custom date ranges) and **package met
  • Network accessline 172
    - Ko-fi: [ko-fi.com/O8A625YLSR](https://ko-fi.com/O8A625YLSR)
  • Network accessline 173
    - Donate page (VietQR / MoMo / PayPal / Binance Pay): [img2threejs.io/donate.html](https://img2threejs.io/donate.html)
  • Network accessline 174
    - Direct PayPal: [paypal.com/paypalme/NguyenHoai545](https://www.paypal.com/paypalme/NguyenHoai545)
  • Network accessline 175
    - Direct Binance Pay: [app.binance.com/uni-qr/Trcs9shL](https://app.binance.com/uni-qr/Trcs9shL)
  • Network accessline 181
    Use [GitHub issues](https://github.com/img2threejs/img2interior/issues) for reproducible bugs and pull requests for fixes. Include plugin/harness versions, OS, the command, expected/actual behavior and a minimal reproduction. Remove credent
  • Network accessline 191
    You must obtain the copyright holder's **prior written permission** to sell or rebrand and resell the tool, bundle it into a commercial software product, or offer paid hosted/API access to its authoring or generation workflow. Attribution o

SKILL.md

  • Network accessline 16
    The bundled [showcase gallery](docs/showcase/README.md) is the same authored scene published at the [live demo](https://img2threejs.io/living-room/). It is inspiration for what a finished delivery looks like, not a benchmark for every room.

THIRD_PARTY_NOTICES.md

  • Network accessline 23
    Apache-2.0's [copyright grant, section 2](https://www.apache.org/licenses/LICENSE-2.0.txt), is perpetual and irrevocable, subject to the license's terms. A private repository, private npm package or changed license label does not withdraw t
  • Network accessline 27
    Apache-2.0 is compatible with GPLv3, not GPLv2-only. Blender and its Python API retain their own license requirements. [Blender's published licensing guidance](https://www.blender.org/about/license/#add-ons) requires distributed Python API 

authoring/__init__.py

  • Executable scriptline 1
    Executable file

authoring/calibration.py

  • Executable scriptline 1
    Executable file

authoring/geometry.py

  • Executable scriptline 1
    #!/usr/bin/env python3

authoring/inspection.py

  • Executable scriptline 1
    Executable file

authoring/pipeline.py

  • Executable scriptline 1
    Executable file

authoring/regression.py

  • Executable scriptline 1
    Executable file

docs/showcase/README.md

  • Network accessline 3
    These previews are bundled with the skill so anyone with the public package or public source can open them locally. Open this file in a Markdown viewer or ask the agent to open the adjacent WebP images. The landing-page README uses the iden
  • Network accessline 15
    This is an **archived browser screenshot** of the working Three.js project — not a public live demo and not the native render (the first image above is the native comparison; this one is the browser view). Visible download controls refer to

examples/studio/build_scene.py

  • Executable scriptline 1
    Executable file

licenses/Apache-2.0.txt

  • Network accessline 1
    Apache License                            Version 2.0, January 2004                         http://www.apache.org/licenses/
  • Network accessline 3
    http://www.apache.org/licenses/
  • Network accessline 195
    http://www.apache.org/licenses/LICENSE-2.0

package.json

  • Executable scriptline 1
    Executable file
  • Network accessline 9
    "repository": {     "type": "git",     "url": "git+https://github.com/img2threejs/img2interior.git"
  • Network accessline 10
    "type": "git",     "url": "git+https://github.com/img2threejs/img2interior.git"   },
  • Network accessline 11
    "url": "git+https://github.com/img2threejs/img2interior.git"
  • Network accessline 12
    },   "bugs": {     "url": "https://github.com/img2threejs/img2interior/issues"
  • Network accessline 13
    "bugs": {     "url": "https://github.com/img2threejs/img2interior/issues"   },
  • Network accessline 14
    "url": "https://github.com/img2threejs/img2interior/issues"
  • Network accessline 15
    },   "homepage": "https://img2threejs.io/living-room/",   "publishConfig": {
  • Network accessline 16
    "homepage": "https://img2threejs.io/living-room/",
  • Network accessline 17
    "publishConfig": {     "access": "public",     "registry": "https://registry.npmjs.org/"
  • Network accessline 18
    "access": "public",     "registry": "https://registry.npmjs.org/"   },
  • Network accessline 19
    "registry": "https://registry.npmjs.org/"
  • Network accessline 22
    {       "type": "ko-fi",       "url": "https://ko-fi.com/O8A625YLSR"
  • Network accessline 23
    "type": "ko-fi",       "url": "https://ko-fi.com/O8A625YLSR"     },
  • Network accessline 24
    "url": "https://ko-fi.com/O8A625YLSR"
  • Network accessline 26
    {       "type": "other",       "url": "https://img2threejs.io/donate.html"
  • Network accessline 27
    "type": "other",       "url": "https://img2threejs.io/donate.html"     }
  • Network accessline 28
    "url": "https://img2threejs.io/donate.html"
  • Access to secretsline 80
    [Credential-related source omitted]

recipes/oak-linen/build_scene.py

  • Executable scriptline 1
    Executable file

reference/installation.md

  • Network accessline 35
    git clone https://github.com/img2threejs/img2interior.git "$HOME/img2interior"
  • Network accessline 59
    Read public npm registry data through the documented endpoints; do not embed a tracker in the package or the source archive. Per the [npm download-counts spec](https://github.com/npm/registry/blob/main/docs/download-counts.md):
  • Network accessline 61
    - **Package metadata** (version, description, license, repository): `https://registry.npmjs.org/@img2threejs/img2interior` — no auth required for a public scoped package.
  • Network accessline 62
    - **Point-in-time total** for a single period (returns one integer count): `https://api.npmjs.org/downloads/point/{period}/@img2threejs/img2interior`, where `{period}` is `last-day`, `last-week` or `last-month`.
  • Network accessline 63
    - **Date range with one bucket per day**: `https://api.npmjs.org/downloads/range/last-month/@img2threejs/img2interior` — yields per-day totals for the last 30 days.
  • Network accessline 64
    - **Custom date range with one bucket per day**: `https://api.npmjs.org/downloads/range/YYYY-MM-DD:YYYY-MM-DD/@img2threejs/img2interior` for any period you choose.
  • Network accessline 80
    3. **Use public access and correct license metadata.** Scoped packages default to restricted access; set `publishConfig.access: "public"` and publish with `--access public`. Do not set `"private": true`, which prevents publication entirely.
  • Network accessline 81
    4. **Review the actual tarball.** Run `npm pack --dry-run`, build the tarball, inspect its complete file list and install that exact artifact in an isolated consumer. The source ZIP packager is a separate format, not proof of an npm package
  • Network accessline 82
    5. **Authorize and perform the first publication separately.** Use explicit `--access public`, reviewed bytes, the publishing account's required authentication/2FA. Do not publish merely to preview the README. For CI, review current [truste
  • Network accessline 98
    npm renders a root README using [GitHub Flavored Markdown](https://docs.npmjs.com/about-package-readme-files/). A GitHub README change does not update a published npm version until a new package release. Image bytes are pinned to an immutab
  • Network accessline 123
    Official references: [publishing packages](https://docs.npmjs.com/creating-and-publishing-packages/), [package metadata](https://docs.npmjs.com/cli/v11/configuring-npm/package-json/), [npm provenance](https://docs.npmjs.com/generating-prove

reference/reference-analysis.md

  • Network accessline 26
    - [Little Workshop Showroom](https://showroom.littleworkshop.fr/): showroom presentation and material/interaction inspection.
  • Network accessline 27
    - [TSUKAT Alex Interior](https://playcanv.as/apps/5219dda4/index.html): source-guided authored interior and runtime observation.

reference/resources.md

  • Network accessline 14
    The live [Poly Haven API](https://api.polyhaven.com/api-docs/swagger.json) provides ranked metadata search, asset info and file descriptors. Inspect candidate imagery or import/render candidate geometry. Rank/similarity is not silhouette, B
  • Network accessline 30
    The tool visibly credits **Powered by Poly Haven**. Downloaded assets are [CC0](https://polyhaven.com/license), while use of the live service has separate [API terms](https://github.com/Poly-Haven/Public-API/blob/master/ToS.md). The actual 

resources_lib/__init__.py

  • Executable scriptline 1
    Executable file

resources_lib/polyhaven.py

  • Executable scriptline 1
    Executable file
  • Network accessline 18
    API = 'https://api.polyhaven.com'
  • Network accessline 19
    API_TERMS = 'https://github.com/Poly-Haven/Public-API/blob/master/ToS.md'
  • Network accessline 20
    CREDIT = 'Powered by Poly Haven' HEADERS = {'User-Agent': 'img2interior/0.2 PolyHavenResourceClient',            'Referer': 'https://img2interior.local/authoring'}
  • Network accessline 21
    HEADERS = {'User-Agent': 'img2interior/0.2 PolyHavenResourceClient',            'Referer': 'https://img2interior.local/authoring'} HOSTS = frozenset(('api.polyhaven.com', 'dl.polyhaven.org', 'cdn.polyhaven.com'))
  • Network accessline 22
    'Referer': 'https://img2interior.local/authoring'}
  • Network accessline 26
    TYPES = {'hdris': 0, 'textures': 1, 'models': 2} PROVENANCE = {'provider': 'Poly Haven', 'license': 'CC0-1.0',               'licenseUrl': 'https://polyhaven.com/license', 'apiTerms': API_TERMS,
  • Network accessline 27
    PROVENANCE = {'provider': 'Poly Haven', 'license': 'CC0-1.0',               'licenseUrl': 'https://polyhaven.com/license', 'apiTerms': API_TERMS,               'credit': CREDIT}
  • Network accessline 28
    'licenseUrl': 'https://polyhaven.com/license', 'apiTerms': API_TERMS,
  • Network accessline 53
    def open(self, url):         return self.opener.open(urllib.request.Request(safe_url(url), headers=HEADERS), timeout=120)
  • Network accessline 54
    return self.opener.open(urllib.request.Request(safe_url(url), headers=HEADERS), timeout=120)
  • Network accessline 236
    def fetch(workspace, selection_path, client=None):

resources_lib/storage.py

  • Executable scriptline 1
    Executable file

resources_lib/surfaces.py

  • Executable scriptline 1
    Executable file

runtime/viewer/index.html

  • Network accessline 86
    <p>The packed Blender scene keeps PBR materials, geometry and lights for further editing. Downloads preserve the authored scene and original finishes, not the in-viewer changes or cloth simulation.</p>           </section>           <p id="
  • Network accessline 87
    </section>           <p id="resource-credit" class="asset-credit" hidden>Powered by <a href="https://polyhaven.com/" target="_blank" rel="noopener">Poly Haven</a> · CC0 assets.</p>         </aside>
  • Network accessline 88
    <p id="resource-credit" class="asset-credit" hidden>Powered by <a href="https://polyhaven.com/" target="_blank" rel="noopener">Poly Haven</a> · CC0 assets.</p>

runtime/viewer/package-lock.json

  • Network accessline 21
    "node_modules/@esbuild/aix-ppc64": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz",
  • Network accessline 22
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz",       "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==",
  • Network accessline 23
    "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz",
  • Network accessline 38
    "node_modules/@esbuild/android-arm": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz",
  • Network accessline 39
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz",       "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==",
  • Network accessline 40
    "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz",
  • Network accessline 55
    "node_modules/@esbuild/android-arm64": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz",
  • Network accessline 56
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz",       "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==",
  • Network accessline 57
    "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz",
  • Network accessline 72
    "node_modules/@esbuild/android-x64": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz",
  • Network accessline 73
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz",       "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==",
  • Network accessline 74
    "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz",
  • Network accessline 89
    "node_modules/@esbuild/darwin-arm64": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz",
  • Network accessline 90
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz",       "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==",
  • Network accessline 91
    "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz",
  • Network accessline 106
    "node_modules/@esbuild/darwin-x64": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz",
  • Network accessline 107
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz",       "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==",
  • Network accessline 108
    "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz",
  • Network accessline 123
    "node_modules/@esbuild/freebsd-arm64": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz",
  • Network accessline 124
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz",       "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==",
  • Network accessline 125
    "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz",
  • Network accessline 140
    "node_modules/@esbuild/freebsd-x64": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz",
  • Network accessline 141
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz",       "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==",
  • Network accessline 142
    "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz",
  • Network accessline 157
    "node_modules/@esbuild/linux-arm": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz",
  • Network accessline 158
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz",       "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==",
  • Network accessline 159
    "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz",
  • Network accessline 174
    "node_modules/@esbuild/linux-arm64": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz",
  • Network accessline 175
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz",       "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==",
  • Network accessline 176
    "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz",
  • Network accessline 191
    "node_modules/@esbuild/linux-ia32": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz",
  • Network accessline 192
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz",       "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==",
  • Network accessline 193
    "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz",
  • Network accessline 208
    "node_modules/@esbuild/linux-loong64": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz",
  • Network accessline 209
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz",       "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==",
  • Network accessline 210
    "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz",
  • Network accessline 225
    "node_modules/@esbuild/linux-mips64el": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz",
  • Network accessline 226
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz",       "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==",
  • Network accessline 227
    "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz",
  • Network accessline 242
    "node_modules/@esbuild/linux-ppc64": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz",
  • Network accessline 243
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz",       "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==",
  • Network accessline 244
    "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz",
  • Network accessline 259
    "node_modules/@esbuild/linux-riscv64": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz",
  • Network accessline 260
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz",       "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==",
  • Network accessline 261
    "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz",
  • Network accessline 276
    "node_modules/@esbuild/linux-s390x": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz",
  • Network accessline 277
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz",       "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==",
  • Network accessline 278
    "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz",
  • Network accessline 293
    "node_modules/@esbuild/linux-x64": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz",
  • Network accessline 294
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz",       "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==",
  • Network accessline 295
    "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz",
  • Network accessline 310
    "node_modules/@esbuild/netbsd-arm64": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz",
  • Network accessline 311
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz",       "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==",
  • Network accessline 312
    "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz",
  • Network accessline 327
    "node_modules/@esbuild/netbsd-x64": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz",
  • Network accessline 328
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz",       "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==",
  • Network accessline 329
    "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz",
  • Network accessline 344
    "node_modules/@esbuild/openbsd-arm64": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz",
  • Network accessline 345
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz",       "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==",
  • Network accessline 346
    "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz",
  • Network accessline 361
    "node_modules/@esbuild/openbsd-x64": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz",
  • Network accessline 362
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz",       "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==",
  • Network accessline 363
    "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz",
  • Network accessline 378
    "node_modules/@esbuild/openharmony-arm64": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz",
  • Network accessline 379
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz",       "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdA
  • Network accessline 380
    "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz",
  • Network accessline 395
    "node_modules/@esbuild/sunos-x64": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz",
  • Network accessline 396
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz",       "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==",
  • Network accessline 397
    "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz",
  • Network accessline 412
    "node_modules/@esbuild/win32-arm64": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz",
  • Network accessline 413
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz",       "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==",
  • Network accessline 414
    "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz",
  • Network accessline 429
    "node_modules/@esbuild/win32-ia32": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz",
  • Network accessline 430
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz",       "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==",
  • Network accessline 431
    "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz",
  • Network accessline 446
    "node_modules/@esbuild/win32-x64": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz",
  • Network accessline 447
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz",       "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==",
  • Network accessline 448
    "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz",
  • Network accessline 463
    "node_modules/@napi-rs/lzma-linux-x64-gnu": {       "version": "1.5.1",       "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz",
  • Network accessline 464
    "version": "1.5.1",       "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz",       "integrity": "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ
  • Network accessline 465
    "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz",
  • Network accessline 480
    "node_modules/@rollup/rollup-android-arm-eabi": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.64.7.tgz",
  • Network accessline 481
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.64.7.tgz",       "integrity": "sha512-GFF2tHk0NqYVObrK0+/ps/LEXsV/v2q6Lyiy7mZr+Ej24fpQScvqK2ziz9NHeEQYnKWKym38Ml7
  • Network accessline 482
    "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.64.7.tgz",
  • Network accessline 494
    "node_modules/@rollup/rollup-android-arm64": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.64.7.tgz",
  • Network accessline 495
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.64.7.tgz",       "integrity": "sha512-BOymcXJFYYXqluDidj6sLelNjXruC3u1BqVxLn2OPCXH9xaPSOTH+MS4uychsGI1NU7tJoiv9KvqijDHF
  • Network accessline 496
    "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.64.7.tgz",
  • Network accessline 508
    "node_modules/@rollup/rollup-darwin-arm64": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.64.7.tgz",
  • Network accessline 509
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.64.7.tgz",       "integrity": "sha512-jgVpGweIbls2H5jfBB70tnX52abMd5pJr3xmtoDILx6JdmGl+Un+tMb9R+MbHPVB46tTBpY8emtn7M71SnQ
  • Network accessline 510
    "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.64.7.tgz",
  • Network accessline 522
    "node_modules/@rollup/rollup-darwin-x64": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.64.7.tgz",
  • Network accessline 523
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.64.7.tgz",       "integrity": "sha512-AVMpt94mrXH7WjyWKmd9nT4RC5yM0AN3Lt6A89xVIsuLDi3dDX6dxMytLbW36FlppY9JsoqUoS3LUUpUrYxiMQ=
  • Network accessline 524
    "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.64.7.tgz",
  • Network accessline 536
    "node_modules/@rollup/rollup-freebsd-arm64": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.64.7.tgz",
  • Network accessline 537
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.64.7.tgz",       "integrity": "sha512-Nje29c/MyajxRNFGU05oyeTDS6SWdMg/wWMSlZSBTBju5BKz2NVc0kFiFSQGzRELNiB+CBk/ZvAVsWsEN
  • Network accessline 538
    "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.64.7.tgz",
  • Network accessline 550
    "node_modules/@rollup/rollup-freebsd-x64": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.64.7.tgz",
  • Network accessline 551
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.64.7.tgz",       "integrity": "sha512-xxgN5/kMzCNz/NYJ4t49B0/WS6InNlWv6xvgwUQqNnWM9WJMMwMUGWrAxdNEgYWdHL0sMnuh8I87StGrIMTA+
  • Network accessline 552
    "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.64.7.tgz",
  • Network accessline 564
    "node_modules/@rollup/rollup-linux-arm-gnueabihf": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.64.7.tgz",
  • Network accessline 565
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.64.7.tgz",       "integrity": "sha512-5U/9gVn/X657I8+NHoHO9Wnfyd0lEXwqbslobRoB9TC8SwYzOitcIr6TLE7531Q/NWs3L
  • Network accessline 566
    "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.64.7.tgz",
  • Network accessline 578
    "node_modules/@rollup/rollup-linux-arm-musleabihf": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.64.7.tgz",
  • Network accessline 579
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.64.7.tgz",       "integrity": "sha512-hcDS0a/Y8ggM3dcOfzH7UpSaogCViWTtNDSl0EXpWIj8g8/r86ITqptjil2hayTXS0U
  • Network accessline 580
    "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.64.7.tgz",
  • Network accessline 592
    "node_modules/@rollup/rollup-linux-arm64-gnu": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.64.7.tgz",
  • Network accessline 593
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.64.7.tgz",       "integrity": "sha512-awbAr4N7Qd/yjZAQBEEPzgcPveYG2Gi5L6gq1/Bp+3SMRjn5F68Wv1zKsntzvvoioBR6yKvhLtWqu
  • Network accessline 594
    "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.64.7.tgz",
  • Network accessline 606
    "node_modules/@rollup/rollup-linux-arm64-musl": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.64.7.tgz",
  • Network accessline 607
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.64.7.tgz",       "integrity": "sha512-Ut7xQJfeLhzu2yN3rHzVvL9ccyPJvN4aCdP1V7hJ5lGxX/eCzgB9SiMk/Md3J+rWWZgvoYsDW4B
  • Network accessline 608
    "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.64.7.tgz",
  • Network accessline 620
    "node_modules/@rollup/rollup-linux-loong64-gnu": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.64.7.tgz",
  • Network accessline 621
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.64.7.tgz",       "integrity": "sha512-trqoni/vHkuM5oo5iQhoKPh6fjjD7E80pMgCXWgGxU8vSRPUlwvG8GeYvEEcB6eJAxNa99WH9
  • Network accessline 622
    "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.64.7.tgz",
  • Network accessline 634
    "node_modules/@rollup/rollup-linux-loong64-musl": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.64.7.tgz",
  • Network accessline 635
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.64.7.tgz",       "integrity": "sha512-gvlUy0XFIwtUWiQmhc+4GT2Knm3KosinpUVhr7CtTFA78gFDnE5NWwMPzHrJsYpKkh2LlY7
  • Network accessline 636
    "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.64.7.tgz",
  • Network accessline 648
    "node_modules/@rollup/rollup-linux-ppc64-gnu": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.64.7.tgz",
  • Network accessline 649
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.64.7.tgz",       "integrity": "sha512-8yS/kSXTJ/47Z62JW+C2AJ3vd/8zZw016vFjtNpZwmZlwJumLua4s1i78dkYuSSqQ+0aIMxJcBp/4
  • Network accessline 650
    "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.64.7.tgz",
  • Network accessline 662
    "node_modules/@rollup/rollup-linux-ppc64-musl": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.64.7.tgz",
  • Network accessline 663
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.64.7.tgz",       "integrity": "sha512-mxVSKvvty0hOP1AFo/l4Kpv3i3HK0zx4rYUrirZDToYlWhS3xzmIkq3vUJ7rtrM2cPyXveDyDT6
  • Network accessline 664
    "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.64.7.tgz",
  • Network accessline 676
    "node_modules/@rollup/rollup-linux-riscv64-gnu": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.64.7.tgz",
  • Network accessline 677
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.64.7.tgz",       "integrity": "sha512-lEse1zra1CagM+uHH2bl28GInDsZZ45NJzHei2OMaXQFzZWKBO1hFo07rS0xB6ayV4WU360Ur
  • Network accessline 678
    "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.64.7.tgz",
  • Network accessline 690
    "node_modules/@rollup/rollup-linux-riscv64-musl": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.64.7.tgz",
  • Network accessline 691
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.64.7.tgz",       "integrity": "sha512-d/cqCoiG9WMZ5VuJZ5Qdlv9g97QyoGwnmvHccvGhKSacTy7xFrAS+jMcJSBdMNOw1oacSkl
  • Network accessline 692
    "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.64.7.tgz",
  • Network accessline 704
    "node_modules/@rollup/rollup-linux-s390x-gnu": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.64.7.tgz",
  • Network accessline 705
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.64.7.tgz",       "integrity": "sha512-kVEA//CeDOZZP1XCH2JBgqXb9+ALlwuA/4civaazMVdgzaSQC9WM38w65zG/LLk0lA7F9Od19CSBZ
  • Network accessline 706
    "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.64.7.tgz",
  • Network accessline 718
    "node_modules/@rollup/rollup-linux-x64-gnu": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.64.7.tgz",
  • Network accessline 719
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.64.7.tgz",       "integrity": "sha512-14oLfDsOSr0TSntT/34jRg/V8B2XW/Jomh9zX9CjIM9gwwNlI1OCymS/GVn0DV32h67eRf7U0GGem0rvf
  • Network accessline 720
    "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.64.7.tgz",
  • Network accessline 732
    "node_modules/@rollup/rollup-linux-x64-musl": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.64.7.tgz",
  • Network accessline 733
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.64.7.tgz",       "integrity": "sha512-dFVtPfjZqAnUPpPY4Bfg+87yo1IBW9HiY8iCFtg49Pn46MfZTebSHZh8PL6SOsgyt9LQP8Nj/sE6jm3
  • Network accessline 734
    "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.64.7.tgz",
  • Network accessline 746
    "node_modules/@rollup/rollup-openbsd-x64": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.64.7.tgz",
  • Network accessline 747
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.64.7.tgz",       "integrity": "sha512-Dm9CZ2SM3u2NgvBj4awW/gGqkOwzH8f6MSYIJE6+bKcKLI+T0+LhpD6vtetTfrIIx+rLXDf5RJqBP6v7V5O+w
  • Network accessline 748
    "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.64.7.tgz",
  • Network accessline 760
    "node_modules/@rollup/rollup-openharmony-arm64": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.64.7.tgz",
  • Network accessline 761
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.64.7.tgz",       "integrity": "sha512-oaxsvS2mL6+78741CT2HCORBvy1USg3Wqpt5qvZwy3aMXRMl4zxyDo8maeFRWJkF3dp0Wbi71
  • Network accessline 762
    "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.64.7.tgz",
  • Network accessline 774
    "node_modules/@rollup/rollup-win32-arm64-msvc": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.64.7.tgz",
  • Network accessline 775
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.64.7.tgz",       "integrity": "sha512-UKZz1Y4mxUqkWh60uH7B1aZn6UcAimPk4ipRktpb3wfZq7JrzZYyAXTwiafkb3T+kd5P3Sf+vzc
  • Network accessline 776
    "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.64.7.tgz",
  • Network accessline 788
    "node_modules/@rollup/rollup-win32-ia32-msvc": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.64.7.tgz",
  • Network accessline 789
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.64.7.tgz",       "integrity": "sha512-WWkSuC1J+mZJnsDh0mRaCAFSWfQdl6y3fDjZeWElI6zHo8CcOSG5lY3yurKJjEq+FrX0WD60sFrVV
  • Network accessline 790
    "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.64.7.tgz",
  • Network accessline 802
    "node_modules/@rollup/rollup-win32-x64-gnu": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.64.7.tgz",
  • Network accessline 803
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.64.7.tgz",       "integrity": "sha512-u9bp2yXCI3/BUjUxY6uWknAY32pfvvDCPysyUTySotx0dj3ydlFHrRQYfn/b/kZgnfjyEwySMtI7Ga054
  • Network accessline 804
    "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.64.7.tgz",
  • Network accessline 816
    "node_modules/@rollup/rollup-win32-x64-msvc": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.64.7.tgz",
  • Network accessline 817
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.64.7.tgz",       "integrity": "sha512-EhX6N3XPMEnVU5cRfNgzPOKcSucsbu3nNNWuoAaEuKIqmddBKHN5b9d4rPe65T1I+FaOT176JKiZNsU
  • Network accessline 818
    "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.64.7.tgz",
  • Network accessline 830
    "node_modules/@types/estree": {       "version": "1.0.9",       "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
  • Network accessline 831
    "version": "1.0.9",       "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",       "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==",
  • Network accessline 832
    "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
  • Network accessline 837
    "node_modules/esbuild": {       "version": "0.25.12",       "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz",
  • Network accessline 838
    "version": "0.25.12",       "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz",       "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==",
  • Network accessline 839
    "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz",
  • Network accessline 879
    "node_modules/fdir": {       "version": "6.5.0",       "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
  • Network accessline 880
    "version": "6.5.0",       "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",       "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
  • Network accessline 881
    "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
  • Network accessline 897
    "node_modules/fsevents": {       "version": "2.3.3",       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
  • Network accessline 898
    "version": "2.3.3",       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",       "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
  • Network accessline 899
    "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
  • Network accessline 912
    "node_modules/gltf-validator": {       "version": "2.0.0-dev.3.10",       "resolved": "https://registry.npmjs.org/gltf-validator/-/gltf-validator-2.0.0-dev.3.10.tgz",
  • Network accessline 913
    "version": "2.0.0-dev.3.10",       "resolved": "https://registry.npmjs.org/gltf-validator/-/gltf-validator-2.0.0-dev.3.10.tgz",       "integrity": "sha512-odJ4k0tRkGXiDGn78yDBg+fBbAIvBnXxh3RwAta0emSxGtyagFE8B4xELB1oYe3S5RD8Ci3uZAsZaascH2LAE
  • Network accessline 914
    "resolved": "https://registry.npmjs.org/gltf-validator/-/gltf-validator-2.0.0-dev.3.10.tgz",
  • Network accessline 919
    "node_modules/nanoid": {       "version": "3.3.20",       "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.20.tgz",
  • Network accessline 920
    "version": "3.3.20",       "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.20.tgz",       "integrity": "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==",
  • Network accessline 921
    "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.20.tgz",
  • Network accessline 925
    {           "type": "github",           "url": "https://github.com/sponsors/ai"
  • Network accessline 926
    "type": "github",           "url": "https://github.com/sponsors/ai"         }
  • Network accessline 927
    "url": "https://github.com/sponsors/ai"
  • Network accessline 938
    "node_modules/picocolors": {       "version": "1.1.1",       "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
  • Network accessline 939
    "version": "1.1.1",       "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",       "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
  • Network accessline 940
    "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
  • Network accessline 945
    "node_modules/picomatch": {       "version": "4.0.7",       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz",
  • Network accessline 946
    "version": "4.0.7",       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz",       "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==",
  • Network accessline 947
    "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz",
  • Network accessline 953
    },       "funding": {         "url": "https://github.com/sponsors/jonschlinkert"
  • Network accessline 954
    "funding": {         "url": "https://github.com/sponsors/jonschlinkert"       }
  • Network accessline 955
    "url": "https://github.com/sponsors/jonschlinkert"
  • Network accessline 958
    "node_modules/postcss": {       "version": "8.5.30",       "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.30.tgz",
  • Network accessline 959
    "version": "8.5.30",       "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.30.tgz",       "integrity": "sha512-zkd+e9S1AQHhmaBKye9zlFHWjOwVgqXl1q3ECYy8561K7qxR2cREf/STLskulBFd78k6AOFeA+ff1TtEzk9bAA==",
  • Network accessline 960
    "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.30.tgz",
  • Network accessline 964
    {           "type": "opencollective",           "url": "https://opencollective.com/postcss/"
  • Network accessline 965
    "type": "opencollective",           "url": "https://opencollective.com/postcss/"         },
  • Network accessline 966
    "url": "https://opencollective.com/postcss/"
  • Network accessline 968
    {           "type": "tidelift",           "url": "https://tidelift.com/funding/github/npm/postcss"
  • Network accessline 969
    "type": "tidelift",           "url": "https://tidelift.com/funding/github/npm/postcss"         },
  • Network accessline 970
    "url": "https://tidelift.com/funding/github/npm/postcss"
  • Network accessline 972
    {           "type": "github",           "url": "https://github.com/sponsors/ai"
  • Network accessline 973
    "type": "github",           "url": "https://github.com/sponsors/ai"         }
  • Network accessline 974
    "url": "https://github.com/sponsors/ai"
  • Network accessline 987
    "node_modules/rollup": {       "version": "4.64.7",       "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.64.7.tgz",
  • Network accessline 988
    "version": "4.64.7",       "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.64.7.tgz",       "integrity": "sha512-aCiJONoZp0lNGJ6sYqspLkh6UXaWEey/7Ko2TZyXQ4kgzAhDUxAgbt/oulXKmD+zFHXw1k+RF6ZZWOrjp7DZnQ==",
  • Network accessline 989
    "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.64.7.tgz",
  • Network accessline 1033
    "node_modules/source-map-js": {       "version": "1.2.2",       "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz",
  • Network accessline 1034
    "version": "1.2.2",       "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz",       "integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==",
  • Network accessline 1035
    "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz",
  • Network accessline 1043
    "node_modules/three": {       "version": "0.180.0",       "resolved": "https://registry.npmjs.org/three/-/three-0.180.0.tgz",
  • Network accessline 1044
    "version": "0.180.0",       "resolved": "https://registry.npmjs.org/three/-/three-0.180.0.tgz",       "integrity": "sha512-o+qycAMZrh+TsE01GqWUxUIKR1AL0S8pq7zDkYOQw8GqfX8b8VoCKYUoHbhiX5j+7hr8XsuHDVU6+gkQJQKg9w==",
  • Network accessline 1045
    "resolved": "https://registry.npmjs.org/three/-/three-0.180.0.tgz",
  • Network accessline 1049
    "node_modules/tinyglobby": {       "version": "0.2.17",       "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",
  • Network accessline 1050
    "version": "0.2.17",       "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",       "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==",
  • Network accessline 1051
    "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",
  • Network accessline 1061
    },       "funding": {         "url": "https://github.com/sponsors/SuperchupuDev"
  • Network accessline 1062
    "funding": {         "url": "https://github.com/sponsors/SuperchupuDev"       }
  • Network accessline 1063
    "url": "https://github.com/sponsors/SuperchupuDev"
  • Network accessline 1066
    "node_modules/vite": {       "version": "6.4.1",       "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz",
  • Network accessline 1067
    "version": "6.4.1",       "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz",       "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==",
  • Network accessline 1068
    "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz",
  • Network accessline 1085
    },       "funding": {         "url": "https://github.com/vitejs/vite?sponsor=1"
  • Network accessline 1086
    "funding": {         "url": "https://github.com/vitejs/vite?sponsor=1"       },
  • Network accessline 1087
    "url": "https://github.com/vitejs/vite?sponsor=1"

runtime/viewer/package.json

  • Executable scriptline 1
    Executable file

runtime/viewer/src/interior-curtains.js

  • Executable scriptline 1
    Executable file

runtime/viewer/src/interior-lightmaps.js

  • Executable scriptline 1
    Executable file

runtime/viewer/src/interior-manifest.js

  • Executable scriptline 1
    Executable file

runtime/viewer/src/interior-navigation.js

  • Executable scriptline 1
    Executable file

runtime/viewer/src/interior.js

  • Executable scriptline 1
    Executable file
  • Network accessline 518
    syncControls();   try {     const response = await fetch('/assets/interior/manifest.json', { cache: 'no-cache' });
  • Network accessline 519
    try {     const response = await fetch('/assets/interior/manifest.json', { cache: 'no-cache' });     if (!response.ok) throw new Error(`Could not load manifest (${response.status}).`);
  • Network accessline 520
    const response = await fetch('/assets/interior/manifest.json', { cache: 'no-cache' });

runtime/viewer/vite.config.js

  • Executable scriptline 1
    Executable file

scripts/package_plugin.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 39
    [Credential-related source omitted]

scripts/verify_install.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 40
    [Credential-related source omitted]

tests/test_audits.py

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 20
    PNG = base64.b64decode("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+aZ1sAAAAASUVORK5CYII=")
  • Access to secretsline 70
    [Credential-related source omitted]
  • Access to secretsline 83
    [Credential-related source omitted]
  • Network accessline 317
    (self.assets / "escape.png").symlink_to(outside)         for uri in ("../outside.png", "%2e%2e/outside.png", "escape.png", str(outside),                     "https://example.test/image.png", "file:///tmp/image.png", "..\\outside.png"):
  • Network accessline 318
    for uri in ("../outside.png", "%2e%2e/outside.png", "escape.png", str(outside),                     "https://example.test/image.png", "file:///tmp/image.png", "..\\outside.png"):             with self.subTest(uri=uri):
  • Network accessline 319
    "https://example.test/image.png", "file:///tmp/image.png", "..\\outside.png"):
  • Network accessline 397
    (self.assets / "escape.png").symlink_to(outside)         original = self.contract_data["assets"][0]["path"]         for path in ("../outside.png", str(outside), "escape.png", "https://example.test/file", "a/../source.png"):
  • Network accessline 398
    original = self.contract_data["assets"][0]["path"]         for path in ("../outside.png", str(outside), "escape.png", "https://example.test/file", "a/../source.png"):             with self.subTest(path=path):
  • Network accessline 399
    for path in ("../outside.png", str(outside), "escape.png", "https://example.test/file", "a/../source.png"):

tests/test_authoring.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 62
    [Credential-related source omitted]
  • Access to secretsline 82
    [Credential-related source omitted]
  • Access to secretsline 92
    [Credential-related source omitted]

tests/test_project.py

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 16
    PNG = base64.b64decode('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+/l9sAAAAASUVORK5CYII=')
  • Network accessline 130
    def test_delivery_rejects_external_or_traversing_manifest_dependencies(self):         directory, manifest = self.delivery_inputs()         for url in ['https://example.com/private.exr', '/assets/%2e%2e/private.exr', '/assets/interior/shared
  • Network accessline 131
    directory, manifest = self.delivery_inputs()         for url in ['https://example.com/private.exr', '/assets/%2e%2e/private.exr', '/assets/interior/shared.exr?hidden=1']:             with self.subTest(url=url):
  • Network accessline 132
    for url in ['https://example.com/private.exr', '/assets/%2e%2e/private.exr', '/assets/interior/shared.exr?hidden=1']:

tests/test_resources.py

  • Executable scriptline 1
    Executable file
  • Network accessline 32
    def file_descriptor(name, payload):     return {'url': 'https://dl.polyhaven.org/file/ph-assets/' + name,
  • Network accessline 33
    return {'url': 'https://dl.polyhaven.org/file/ph-assets/' + name,
  • Network accessline 44
    def get(self, endpoint):         self.requests.append(endpoint)
  • Network accessline 45
    self.requests.append(endpoint)
  • Network accessline 89
    def test_gltf_relative_dependencies_resolve_after_acquisition(self):         self.save('selection.json', self.model_selection())         result = ph.fetch(self.workspace, 'selection.json', self.client)
  • Network accessline 90
    self.save('selection.json', self.model_selection())         result = ph.fetch(self.workspace, 'selection.json', self.client)         root = self.workspace / result['models']['chair']
  • Network accessline 91
    result = ph.fetch(self.workspace, 'selection.json', self.client)
  • Network accessline 97
    self.save('selection.json', self.model_selection('textures/not-in-descriptor.jpg'))         with self.assertRaisesRegex(ValueError, 'include map'):             ph.fetch(self.workspace, 'selection.json', self.client)
  • Network accessline 98
    with self.assertRaisesRegex(ValueError, 'include map'):             ph.fetch(self.workspace, 'selection.json', self.client)         self.assertFalse((self.workspace / '.img2/artifacts/interior/resources.json').exists())
  • Network accessline 99
    ph.fetch(self.workspace, 'selection.json', self.client)
  • Network accessline 160
    def test_urls_and_redirects_never_leave_observed_provider_hosts(self):         for url in ('http://dl.polyhaven.org/file', 'https://dl.polyhaven.org.evil.test/file',
  • Network accessline 161
    for url in ('http://dl.polyhaven.org/file', 'https://dl.polyhaven.org.evil.test/file',
  • Network accessline 162
    'https://user@api.polyhaven.com/file', 'file:///tmp/file',
  • Network accessline 163
    'https://localhost/file', 'https://cdn.polyhaven.com:8443/file'):
  • Network accessline 165
    ph.safe_url(url)         for host in ph.HOSTS:             self.assertEqual(ph.safe_url(f'https://{host}/file'), f'https://{host}/file')
  • Network accessline 166
    for host in ph.HOSTS:             self.assertEqual(ph.safe_url(f'https://{host}/file'), f'https://{host}/file')         with self.assertRaises(ValueError):
  • Network accessline 167
    self.assertEqual(ph.safe_url(f'https://{host}/file'), f'https://{host}/file')         with self.assertRaises(ValueError):             ph.SafeRedirect().redirect_request(urllib.request.Request('https://api.polyhaven.com/files/a'),
  • Network accessline 168
    with self.assertRaises(ValueError):             ph.SafeRedirect().redirect_request(urllib.request.Request('https://api.polyhaven.com/files/a'),                                                 None, 302, 'Found', {}, 'https://evil.test/paylo
  • Network accessline 169
    ph.SafeRedirect().redirect_request(urllib.request.Request('https://api.polyhaven.com/files/a'),
  • Network accessline 170
    None, 302, 'Found', {}, 'https://evil.test/payload')

tests/test_workflow.py

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 22
    PNG = base64.b64decode("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+/l9sAAAAASUVORK5CYII=")
  • Access to secretsline 28
    [Credential-related source omitted]
  • Access to secretsline 41
    [Credential-related source omitted]

tests/viewer/curtains.test.mjs

  • Executable scriptline 1
    Executable file

tests/viewer/helpers.mjs

  • Executable scriptline 1
    Executable file

tests/viewer/manifest.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 35
    [m => { m.sourceImage = '/assets/../private.png'; }, /inside \/assets/],     [m => { m.model = '/assets/%2e%2e/room.glb'; }, /inside \/assets/],     [m => { m.model = 'https://example.org/model.glb'; }, /local \/assets/],
  • Network accessline 36
    [m => { m.model = '/assets/%2e%2e/room.glb'; }, /inside \/assets/],     [m => { m.model = 'https://example.org/model.glb'; }, /local \/assets/],     [m => { m.sourceImageSize = [0, 100]; }, /sourceImageSize/],
  • Network accessline 37
    [m => { m.model = 'https://example.org/model.glb'; }, /local \/assets/],

tests/viewer/navigation-lightmaps.test.mjs

  • Executable scriptline 1
    Executable file

tools/audit_delivery.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 5
    [Credential-related source omitted]

tools/audit_materials.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 5
    [Credential-related source omitted]
  • Possible obfuscationline 161
    data = base64.b64decode(encoded, validate=True)

tools/audit_support.py

  • Executable scriptline 1
    Executable file

tools/author_scene.py

  • Executable scriptline 1
    #!/usr/bin/env python3

tools/compare_views.py

  • Executable scriptline 1
    #!/usr/bin/env python3

tools/gate_workflow.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 2
    [Credential-related source omitted]

tools/inspect_scene.py

  • Executable scriptline 1
    #!/usr/bin/env python3

tools/interior_project.py

  • Executable scriptline 1
    #!/usr/bin/env python3

tools/interior_workflow.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 2
    [Credential-related source omitted]

tools/polyhaven.py

  • Executable scriptline 1
    Executable file
  • Network accessline 32
    client = Client()         if args.command == 'fetch':             result = fetch(workspace, args.selection, client)
  • Network accessline 33
    if args.command == 'fetch':             result = fetch(workspace, args.selection, client)         elif args.command == 'search':
  • Network accessline 34
    result = fetch(workspace, args.selection, client)

tools/prepare_surfaces.py

  • Executable scriptline 1
    Executable file

tools/project_support.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 379
    [Credential-related source omitted]

tools/run_gates.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 4
    [Credential-related source omitted]

tools/validate_scene.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

tools/workflow_support.py

  • Executable scriptline 1
    Executable file

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Declared and executed: 3 facts
  • Contacts registry.npmjs.org, which SKILL.md, the README and the plugin manifest do not mentionpackage.json:19High confidence
  • Contacts api.polyhaven.com, which SKILL.md, the README and the plugin manifest do not mentionresources_lib/polyhaven.py:18High confidence
  • Contacts polyhaven.com, which SKILL.md, the README and the plugin manifest do not mentionresources_lib/polyhaven.py:28High confidence
Signal confidence: 174 facts

and 124 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.