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

@manifesto-ai/studio-core

v0.1.0

Published

Read-only analysis engine for Manifesto domain models. The package builds a static graph from `DomainSchema`, optionally enriches it with runtime and control-plane overlays, and returns surface-neutral JSON projections for CLI, MCP, and dashboard consumer

Readme

@manifesto-ai/studio-core

Read-only analysis engine for Manifesto domain models. The package builds a static graph from DomainSchema, optionally enriches it with runtime and control-plane overlays, and returns surface-neutral JSON projections for CLI, MCP, and dashboard consumers.

Entry Point

import { createManifesto } from "@manifesto-ai/sdk";
import { createStudioSession } from "@manifesto-ai/studio-core";

const runtime = createManifesto(schema, effects).activate();

const session = createStudioSession({
  schema,
  snapshot: runtime.getCanonicalSnapshot(),
  trace,
  lineage,
  governance
}, {
  validationMode: "lenient",
  lineageStaleMs: 1000 * 60 * 60 * 24,
  governanceProposalStaleMs: 1000 * 60 * 60 * 24
});

createStudioSession(bundle, options?) is the only supported runtime entrypoint.

Session options:

  • validationMode: "lenient" or "strict"
  • lineageStaleMs: stale threshold for branch-stale
  • governanceProposalStaleMs: stale threshold for proposal-stale

Session Flow

const runtime = createManifesto(schema, effects).activate();
const session = createStudioSession({ schema });

const graph = session.getGraph("full");
const findings = session.getFindings();

session.attachSnapshot(runtime.getCanonicalSnapshot());
const availability = session.getActionAvailability();
const blocker = session.explainActionBlocker("submit");

session.attachTrace(trace);
const replay = session.analyzeTrace();

session.attachLineage(lineage);
const lineageState = session.getLineageState();

session.attachGovernance(governance);
const governanceState = session.getGovernanceState();

Supported session methods:

  • attachSnapshot(snapshot)
  • attachTrace(trace)
  • attachLineage(lineage)
  • attachGovernance(governance)
  • detachOverlay(kind)
  • getGraph(format?)
  • getFindings(filter?)
  • getActionAvailability()
  • explainActionBlocker(actionId)
  • inspectSnapshot()
  • analyzeTrace()
  • getLineageState()
  • getGovernanceState()
  • dispose()

Projection Contracts

Stable projections are renderer-agnostic JSON payloads.

  • getGraph() returns DomainGraphProjection
  • getFindings() returns FindingsReportProjection
  • getActionAvailability() returns ActionAvailabilityProjection[]
  • explainActionBlocker() returns ActionBlockerProjection
  • inspectSnapshot() returns SnapshotInspectorProjection
  • analyzeTrace() returns TraceReplayProjection
  • getLineageState() returns LineageStateProjection
  • getGovernanceState() returns GovernanceStateProjection

All stable projections and findings are JSON-serializable. Golden fixtures for the current package contract live under test/golden.

Input Adaptation

snapshot accepts only canonical Manifesto runtime snapshots from runtime.getCanonicalSnapshot().

lineage and governance accept both canonical studio exports and plain query-like inputs.

  • canonical runtime snapshot: Snapshot from runtime.getCanonicalSnapshot()
  • canonical exports: LineageExport, GovernanceExport
  • widened input: records, tuple-entry arrays, and value arrays for worlds, attempts, proposals, and gates
  • keyed inputs may omit worldId, id, or branchId when the surrounding key already provides it

Lineage and governance inputs are normalized into canonical Map-backed export shapes before graph or analyzer code runs.

Overlay Absence

Optional overlays never fail the entire session. Overlay-specific APIs return structured "not-provided" payloads when the required input is absent.

  • no snapshot: runtime availability, blocker explanation, and snapshot inspection return "not-provided"
  • no trace: trace replay returns "not-provided"
  • no lineage: lineage state returns "not-provided"
  • no governance: governance state returns "not-provided"

getGraph() and getFindings() always work with schema alone.

Validation behavior is session-scoped.

  • invalid snapshot inputs always throw with guidance to use runtime.getCanonicalSnapshot()
  • validationMode: "lenient" drops malformed optional trace, lineage, and governance overlays and degrades to "not-provided"
  • validationMode: "strict" throws during session creation or overlay attach when trace, lineage, or governance is malformed

Heuristics

Two analyzers are intentionally heuristic and may over-report:

  • guard-unsatisfiable Detects guards that fold to a static false result under local expression reasoning. It does not model all runtime-dependent values, so complex guards can be flagged conservatively.
  • convergence-risk Flags flows that appear not to converge on a terminal halt/fail boundary. It does not model every indirect control transfer or external stabilizing effect.

Consumers should treat both findings as investigation prompts, not proof of invalid runtime behavior.

Compatibility Notes

  • Runtime oracle integration uses @manifesto-ai/core public APIs only.
  • @manifesto-ai/sdk provides the canonical snapshot type used by the public session contract.
  • @manifesto-ai/compiler and @manifesto-ai/codegen are installed in this workspace for end-to-end integration work and aligned to the current @manifesto-ai/core release line.