{"_id":"@canonry/val-kit","_rev":"2-aed56885ea96c83cb7f230ddb4ab1625","name":"@canonry/val-kit","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@canonry/val-kit","version":"0.1.0","license":"FSL-1.1-ALv2","_id":"@canonry/val-kit@0.1.0","maintainers":[{"name":"arberx","email":"xhindoliarber@gmail.com"}],"dist":{"shasum":"ecedeabaf36b0e02c07f3844bd5e982ee412bc12","tarball":"https://registry.npmjs.org/@canonry/val-kit/-/val-kit-0.1.0.tgz","fileCount":34,"integrity":"sha512-BEFLIrdOLkwO4I9t1j3OHsl2LYcBP6QLNfSmaJMNo7w7IIrGoCKGmXHg6L1OBmFYFA0RwnXmI9PssRKpDLjtPw==","signatures":[{"sig":"MEUCIBwVLflCCEjoWVpmk6eYCgMta7WIJWE5bYBa2MjKBDMiAiEAnZUxeJqHYms8T/gkuoyOitOICVS3jtCMwzTnLfgFMgY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":565820},"type":"module","_from":"file:canonry-val-kit-0.1.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ui":{"types":"./dist/ui.d.ts","default":"./dist/ui.js"},"./mcp":{"types":"./dist/mcp.d.ts","default":"./dist/mcp.js"},"./jobs":{"types":"./dist/jobs.d.ts","default":"./dist/jobs.js"},"./config":{"types":"./dist/config.d.ts","default":"./dist/config.js"},"./storage":{"types":"./dist/storage.d.ts","default":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","default":"./dist/security.js"},"./perception":{"types":"./dist/perception.d.ts","default":"./dist/perception.js"},"./visibility":{"types":"./dist/visibility.d.ts","default":"./dist/visibility.js"}},"scripts":{"lint":"eslint src/ test/","test":"vitest run --config ../../vitest.package.config.ts","build":"tsup","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"arberx","email":"xhindoliarber@gmail.com"},"_resolved":"/tmp/98f59b27e3c345ee1a79ce945ad557c2/canonry-val-kit-0.1.0.tgz","_integrity":"sha512-BEFLIrdOLkwO4I9t1j3OHsl2LYcBP6QLNfSmaJMNo7w7IIrGoCKGmXHg6L1OBmFYFA0RwnXmI9PssRKpDLjtPw==","_npmVersion":"10.9.8","description":"Host-agnostic core shared by Canonry's Val Town sample vals: the AI-visibility engine, the public-check admission machinery, storage, MCP framing, and the design tokens.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@google/genai":"1.46.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1"},"_npmOperationalInternal":{"tmp":"tmp/val-kit_0.1.0_1788453247549_0.5992300274641873","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@canonry/val-kit","version":"0.2.0","description":"Host-agnostic core shared by Canonry's Val Town sample vals: the AI-visibility engine, the public-check admission machinery, storage, MCP framing, and the design tokens.","license":"FSL-1.1-ALv2","type":"module","sideEffects":false,"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./visibility":{"types":"./dist/visibility.d.ts","default":"./dist/visibility.js"},"./perception":{"types":"./dist/perception.d.ts","default":"./dist/perception.js"},"./security":{"types":"./dist/security.d.ts","default":"./dist/security.js"},"./storage":{"types":"./dist/storage.d.ts","default":"./dist/storage.js"},"./jobs":{"types":"./dist/jobs.d.ts","default":"./dist/jobs.js"},"./mcp":{"types":"./dist/mcp.d.ts","default":"./dist/mcp.js"},"./ui":{"types":"./dist/ui.d.ts","default":"./dist/ui.js"},"./config":{"types":"./dist/config.d.ts","default":"./dist/config.js"}},"types":"./dist/index.d.ts","publishConfig":{"access":"public"},"dependencies":{"@google/genai":"1.46.0"},"devDependencies":{"tsup":"^8.5.1"},"engines":{"node":">=22"},"scripts":{"build":"tsup","typecheck":"tsc --noEmit -p tsconfig.json","test":"vitest run --config ../../vitest.package.config.ts","lint":"eslint src/ test/"},"_id":"@canonry/val-kit@0.2.0","_integrity":"sha512-ZhONFlG4XwBBo4Iyrcc3neR24Y1dP40E5eM8IiEOg4sqttvi1xvqC6HvgxpdB9oPfcP+Jq+MWdpkxYoQ78Yjzw==","_resolved":"/tmp/3c3df6f44a55e3eaf1f520dbb8eeaf45/canonry-val-kit-0.2.0.tgz","_from":"file:canonry-val-kit-0.2.0.tgz","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-ZhONFlG4XwBBo4Iyrcc3neR24Y1dP40E5eM8IiEOg4sqttvi1xvqC6HvgxpdB9oPfcP+Jq+MWdpkxYoQ78Yjzw==","shasum":"e7f3e38a64a4c5fe4ddb518d7926ebb015a4d0e7","tarball":"https://registry.npmjs.org/@canonry/val-kit/-/val-kit-0.2.0.tgz","fileCount":34,"unpackedSize":566169,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDL/NS/fsUgFc6GsTU9posl2jvp/j1PVDQcRhWv8iJ8eAIgJkYEiIQdSgo/NJqZ07/vEb9Eqyio6q7VtaMX1Gq5pO8="}]},"_npmUser":{"name":"arberx","email":"xhindoliarber@gmail.com"},"directories":{},"maintainers":[{"name":"arberx","email":"xhindoliarber@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/val-kit_0.2.0_1788472530251_0.9873678777512445"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-03T16:34:07.339Z","modified":"2026-09-03T21:55:30.687Z","0.1.0":"2026-09-03T16:34:07.714Z","0.2.0":"2026-09-03T21:55:30.398Z"},"license":"FSL-1.1-ALv2","description":"Host-agnostic core shared by Canonry's Val Town sample vals: the AI-visibility engine, the public-check admission machinery, storage, MCP framing, and the design tokens.","maintainers":[{"name":"arberx","email":"xhindoliarber@gmail.com"}],"readme":"# @canonry/val-kit\n\nThe host-agnostic core shared by Canonry's public [Val Town](https://val.town) samples.\n\nEach val is its own product with its own surface — its own name, pages, MCP tools, and copy. What they have in\ncommon is everything underneath: the AI-visibility engine, the admission and lease machinery that bounds what an\nanonymous visitor can spend, the check stores, the MCP wire format, and the design tokens. That is this package,\nso there is one source of truth instead of one per val.\n\nIt is pure and portable: no HTTP framework, no crawler, no `Deno` global, no `esm.town` import. Everything that\ntouches a host — the request handler, the SQLite binding, the environment — is passed in.\n\n## Install\n\n```sh\nnpm install @canonry/val-kit\n```\n\nA Val Town val ignores import maps, so import it by fully-qualified specifier:\n\n```ts\nimport { runVisibilityProbe } from 'npm:@canonry/val-kit@0.2.0/visibility'\n```\n\n## Subpaths\n\n| Subpath | What it holds |\n| --- | --- |\n| `@canonry/val-kit` | Everything below, in one import |\n| `@canonry/val-kit/visibility` | Probe contracts, brand/citation matching, the evidence runner, share of voice, and the Gemini adapter |\n| `@canonry/val-kit/perception` | Branded query planning, verdict extraction with verbatim-evidence verification, source typing, and aggregation |\n| `@canonry/val-kit/security` | Public-domain normalization (the SSRF input boundary) and Turnstile human verification |\n| `@canonry/val-kit/storage` | `MemoryCheckStore` and `ValSqliteCheckStore` (over a `ValSqliteClient` the host supplies) |\n| `@canonry/val-kit/jobs` | Check record and store contracts, record identity and expiry, and the admission/lease machinery |\n| `@canonry/val-kit/mcp` | Model Context Protocol framing plus the bundled Canonry skills served as resources |\n| `@canonry/val-kit/ui` | Design tokens and the Canonry mark |\n| `@canonry/val-kit/config` | Host environment parsing |\n\nRequires Node 22 or newer, or any runtime with the same web standards (`fetch`, `AbortSignal`, `crypto`).\n`@google/genai` is a peer of the visibility subpath and is installed with the package.\n\n---\n\nPowered by [Canonry](https://github.com/Canonry/canonry), the open-source AEO operating platform.\n","readmeFilename":"README.md"}