{
  "name": "@descix/frqtl-sdk",
  "version": "0.1.8",
  "description": "FRQTL SDK — Discrete fractal physics and game engine distribution.",
  "main": "dist/index.html",
  "exports": {
    ".": "./dist/index.html",
    "./node": "./dist/node/index.js",
    "./eyes": "./dist/eyes/index.js",
    "./package.json": "./package.json"
  },
  "files": [
    "dist",
    "README.md",
    "llms.txt",
    "CLAUDE.md"
  ],
  "scripts": {
    "build": "node build.js",
    "verify:publish-surface": "node scripts/verify-publish-surface.mjs",
    "verify:dist-is-artifact": "node scripts/verify-dist-is-artifact.mjs",
    "pack:dry-run": "npm pack --dry-run --ignore-scripts",
    "prepack": "npm run build && npm run verify:publish-surface"
  },
  "notes": "npm publish/pack IS run from sdk/frqtl-sdk/ (this directory). `files` above is npm's native allowlist — it includes dist/ (gitignored, but `files` bypasses .gitignore) and excludes src/, build.js, scripts/, ARCHITECTURE.md. `prepack` rebuilds dist/ and re-verifies the surface automatically on `npm pack`/`npm publish`. (Stale note removed 2026-07-10 ws-artifact-showcase Bite A1: the previous text said publish must run from a nonexistent ../../dist/frqtl-sdk/ path, a holdover from the pre-v3 layout — this builder dir + its `files` allowlist IS the publish root; verify:publish-surface's ALLOWED_PREFIXES assume this directory's own `npm pack` listing.)",
  "keywords": [
    "physics",
    "engine",
    "simulation",
    "fractal",
    "cellular-automata",
    "particle",
    "quantum",
    "wave-particle-duality",
    "emergent",
    "discrete-physics",
    "egpt",
    "frqtl",
    "descix"
  ],
  "author": "Essam Abadir",
  "license": "SEE LICENSE IN LICENSE",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/eabadir/fraqtl.git",
    "directory": "sdk/frqtl-sdk"
  },
  "dependencies": {
    "playwright": "1.61.0"
  },
  "dependencyNotes": "playwright is the DEFAULT STACK for exports[\"./eyes\"] (the hosted eyes): `composite` is the render stack's own output, so an agent must see it through a REAL browser or it is looking at a different picture than the user. It is therefore a REAL dependency, PINNED to an exact version (a range would let a browser build drift under a published corpus — the raster path is provenance, see build.gl), and deliberately NOT optionalDependencies (an optional dependency is a compat fence wearing a package-manager hat). It is reached only by the ./eyes entry — a consumer of `.` or `./node` never loads it — and `browserType` is the BYO seam for a consumer who brings their own.",
  "devDependencies": {
    "terser": "^5.31.0"
  }
}
