@skenora/resources
v0.1.3
Published
Provider-based resource discovery, policy, caching, and lifecycle management for Skenora.
Readme
@skenora/resources
Provider-based resource discovery, policy, caching, integrity checks, and lifetime management for Skenora.
pnpm add @skenora/resourcesEntry points:
| Import | Purpose |
| ------------------------------ | --------------------------------------------------------- |
| @skenora/resources | ResourceManager, provider contracts, discovery helpers |
| @skenora/resources/workspace | workspace provider and shared resource context |
| @skenora/resources/http | opt-in allowlisted HTTPS provider |
| @skenora/resources/memory | in-memory Blob resources |
| @skenora/resources/particles | opt-in particle textures, metadata discovery and provider |
Resource providers translate persistent locators into acquired bytes.
ResourceScope owns temporary Blob URLs and must be disposed. Network loading
is unavailable until the host explicitly installs and authorizes an HTTP or
custom provider.
See the resource guide.
Scene-plan bindings and leases
Scene-plan inputs use logical references. The host supplies an already
authorized ResourceBinding and may validate it against the plan's kind,
media type, and SHA-256 integrity requirement without performing I/O:
import {
createResourceBindingScope,
createResourceBindingTable,
} from "@skenora/resources";
const bindings = createResourceBindingTable(
[{ assetRef: "chair", asset: authorizedAsset }],
[{ assetRef: "chair", kind: "model" }],
);
const bindingScope = createResourceBindingScope(resources, bindings);
const chair = bindingScope.acquire("chair");
const resolved = await chair.resource;
// Keep the lease until Runtime projection has completed.
bindingScope.dispose();ModelVisibleResourceDescriptor and
toModelVisibleResourceDescriptor() expose only an opaque logical reference
and safe metadata. They omit provider ids, sources, paths, URLs, thumbnails,
credentials, and Blob URLs. The existing ResourceDescriptor remains
available for trusted host/provider code for backward compatibility; callers
must project it before returning data to a model.
ResourceBindingScope creates one child ResourceScope per lease. Releasing
a lease or disposing the binding scope delegates to the existing
reference-counted cache and Blob URL cleanup. Authorization, downloads,
imports, and workspace writes remain outside this package.
