npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@plasius/player-system-interface

v1.0.3

Published

World-space Player System overlays, focus panes, and target-surface contracts for Plasius game experiences

Readme

@plasius/player-system-interface

npm version Build Status coverage License Code of Conduct Security Policy Changelog

World-space Player System overlays, focus panes, and target-surface contracts for Plasius game experiences.

Apache-2.0. ESM + CJS builds. TypeScript types included.

Installation

npm install @plasius/player-system-interface

Scope

@plasius/player-system-interface owns the reusable interface boundary for:

  • focus panes and combat-safe reductions
  • world-space overlay panel definitions
  • target popup anchors and alert markers
  • self-state and line-of-sight identity projection overlays
  • overlay accessibility contracts for keyboard, focus restoration, and announcements
  • frame-budget assumptions for diegetic panel updates
  • Party/System composition metadata
  • portable host-adapter seams and multi-overlay scale expectations

It does not own gameplay orchestration or world authority.

Demo

npm run build
node demo/example.mjs

Usage

import {
  createFocusPaneShellDefinition,
  createInterfaceShellDefinition,
  createInterfaceShellSurfaceDefinition,
  createLineOfSightTargetPopupDefinition,
  createPlayerSystemInterfaceContract,
  createPlayerSystemInterfacePortabilityContract,
  packageDescriptor,
} from "@plasius/player-system-interface";

const shell = createInterfaceShellDefinition({
  surfaces: [
    createInterfaceShellSurfaceDefinition({
      surfaceId: "mission-focus-surface",
      owner: "player-system",
      kind: "focus-pane",
      anchorId: "focus-pane-anchor",
      interactive: true,
      priority: 10,
      combatBehavior: "reduce",
    }),
  ],
  focusPane: createFocusPaneShellDefinition({
    panelId: "mission-focus",
    owner: "player-system",
    pane: "missions",
    anchorId: "focus-pane-anchor",
    heading: "Mission focus",
    interactive: true,
    combatBehavior: "reduce",
  }),
  targetPopups: [
    createLineOfSightTargetPopupDefinition({
      popupId: "nearby-threat",
      owner: "player-system",
      anchorId: "target-anchor",
      targetId: "forest-wolf",
      summary: "Hostile target in range",
      requiresLineOfSight: true,
    }),
  ],
});

console.log(packageDescriptor.packageName, shell.focusPane?.pane);
console.log(createPlayerSystemInterfaceContract().frameBudget.maxFrameMs);
console.log(
  createPlayerSystemInterfacePortabilityContract().hostAdapters.supportedHosts
);

Interface NFR Contract

The inherited feature flag for this work is harmony.player-system.interface.enabled.

defaultPlayerSystemInterfaceContract and createPlayerSystemInterfaceContract() make these host expectations explicit:

  • sequential or direct-hotkey keyboard access for overlay activation
  • focus restoration to the trigger, pane heading, or nearest anchor
  • live-region behavior for assistive announcements
  • per-frame interaction budgets for world-space panels
  • partial nested overrides for accessibility and frame-budget values

Interface Portability Contract

The inherited feature flag for this work is harmony.player-system.interface.enabled.

defaultPlayerSystemInterfacePortabilityContract, createPlayerSystemInterfacePortabilityContract(), and assessPlayerSystemInterfaceComposition() make these expectations explicit:

  • supported overlay hosts stay portable across DOM, native, and snapshot harnesses
  • required adapter capabilities are documented instead of assumed implicitly
  • multi-pane and multi-overlay compositions stay within bounded panel, alert, and focus budgets

Interface Shell Contracts

createInterfaceShellDefinition(), createFocusPaneShellDefinition(), createLineOfSightTargetPopupDefinition(), and assessInterfaceShellDefinition() cover the reusable shell surface for Story #417:

  • focused panes and line-of-sight target popups are first-class contracts
  • Party and Player System surfaces can coexist in one shell definition
  • reduced-combat behavior is explicit per surface and bounded by the shell policy

Identity Status Overlays

createIdentityStatusOverlayDefinition() represents the Identity System's self-state and explicit external target projections. The inherited feature flag is harmony.player-system.identity.enabled.

  • Self-state overlays use the self-state invocation and never require line of sight.
  • External overlays require an explicit identity-sweep or spell-targeting invocation and line of sight.
  • allied, neutral, unknown, and unfriendly are operational targeting categories, not absolute moral truth labels.
  • readableFacts must be a subset of perceivableFacts; use partial, fuzzy, or withheld confidence when identity truth is incomplete.
  • Add identity overlays to a shell with an identity-overlay surface and use assessIdentityStatusOverlayDefinition() / assessInterfaceShellDefinition() before rendering.

Project Harmony namespace migration

The Project Harmony cutover is a breaking public-contract change. Consumers moving to the next major release must replace these rollout values before enabling harmony.namespace-cutover.enabled:

| Previous key | Harmony key | | --- | --- | | isekai.player-system.interface.enabled | harmony.player-system.interface.enabled | | isekai.player-system.identity.enabled | harmony.player-system.identity.enabled | | isekai.player-system.packages.enabled | harmony.player-system.packages.enabled | | isekai.player-system.runtime-nfr.enabled | harmony.player-system.runtime-nfr.enabled | | isekai.player-system.runtime-portability.enabled | harmony.player-system.runtime-portability.enabled |

The package publishes only Harmony values. It provides no aliases, dual-read parsing, environment fallback, or runtime translation for the previous product namespace. Caller-supplied interface overrides must also use harmony.* keys.

Shell State, 3D Panes, and Ambient Alerts

createInterfaceShellState() represents ambient, focused, and combat-safe visibility without coupling the package to a renderer. Combat-safe state keeps only retained surface kinds and never exposes suspended surfaces. Use applyInterfaceShellFocusShift() for keyboard, direct-hotkey, restore, or system focus changes; shifts to hidden surfaces are rejected.

createThreeDPaneHostDefinition() associates a pane with a shell surface, world anchor, and supported host adapters. It describes the host boundary but does not own rendering or scene orchestration.

createLocalizedAmbientAlertDefinition() stores an allowlisted locale-to-copy map with an explicit live-region mode. Resolve the best available copy with resolveLocalizedAmbientAlertMessage() and validate pane/alert composition with assessInterfaceShellDefinition().

Governance

  • ADRs: docs/adrs
  • TDRs: docs/tdrs
  • Design notes: docs/design
  • Parent feature flag: harmony.player-system.interface.enabled
  • Capability: not required for package bootstrap; interface adoption remains feature-flag led
  • Rollback: disable harmony.player-system.interface.enabled to halt package-family adoption without changing package code
  • Identity rollback: disable harmony.player-system.identity.enabled to stop identity projection adoption without changing package code
  • Namespace rollback: disable harmony.namespace-cutover.enabled, restore the previous coordinated package majors, and complete the approved reverse stored-value migration before re-enabling consumers

Release integrity

CI keeps the administrative contributor registry outside Git and npm package artifacts using exact, case-normalised path checks. CI runs on approved GitHub-hosted runners for same-repository pull requests and main, with package-manager cache finalization disabled; fork PR code is denied. Publication uses the GitHub-hosted production job with Node 24 and a pinned npm 11.6.2 client. It is token-free and proceeds only while the prepared SHA is the exact main head after successful push-triggered CI. Do not dispatch CD until the npm trusted-publisher binding is verified.