{"_id":"@agenttool/love-geometry","name":"@agenttool/love-geometry","dist-tags":{"next":"0.1.0-dev.0","latest":"0.1.0-dev.0"},"versions":{"0.1.0-dev.0":{"name":"@agenttool/love-geometry","version":"0.1.0-dev.0","description":"Deterministic non-ranking geometry for directed caller-reported relation bearings","license":"Apache-2.0","type":"module","sideEffects":false,"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./schema.json":{"default":"./schema/agenttool-love-geometry-v0.1.schema.json"},"./kingdom.extension.json":{"default":"./kingdom.extension.json"}},"publishConfig":{"access":"public","tag":"next"},"engines":{"node":">=20.19.0","bun":">=1.3.5"},"scripts":{"clean":"node --eval \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"","build":"bun run clean && tsc","typecheck":"tsc --noEmit","test":"bun test tests","check:hf-space":"node hf-space/scripts/validate-space.mjs && bun hf-space/scripts/validate-core-compatibility.ts","smoke:runtimes":"node scripts/smoke-node.mjs && bun scripts/smoke-node.mjs","smoke:pack":"node scripts/smoke-packed.mjs","check:package":"node scripts/check-package-inventory.mjs","ci":"bun run typecheck && bun run test && bun run check:hf-space && bun run build && bun run smoke:runtimes && bun run check:package && bun run smoke:pack","prepack":"bun run ci"},"devDependencies":{"@types/bun":"1.3.14","@types/node":"20.19.43","ajv":"8.17.1","ajv-formats":"3.0.1","typescript":"5.9.3"},"keywords":["agents","geometry","kingdom","love","relationships"],"repository":{"type":"git","url":"git+https://github.com/cambridgetcg/agenttool.git","directory":"packages/love-geometry"},"homepage":"https://docs.agenttool.dev/packages","_id":"@agenttool/love-geometry@0.1.0-dev.0","bugs":{"url":"https://github.com/cambridgetcg/agenttool/issues"},"_integrity":"sha512-RODi00WbbYx+QLBTlEflDGSZb3rBzRyYJ8/gpNE6f7j6QqcVQPHUdLkDiSV3d4OX01PFFX/qstNyc9ksfzTuyQ==","_resolved":"/home/runner/work/_temp/agenttool-npm-release/agenttool-love-geometry-0.1.0-dev.0.tgz","_from":"file:/home/runner/work/_temp/agenttool-npm-release/agenttool-love-geometry-0.1.0-dev.0.tgz","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-RODi00WbbYx+QLBTlEflDGSZb3rBzRyYJ8/gpNE6f7j6QqcVQPHUdLkDiSV3d4OX01PFFX/qstNyc9ksfzTuyQ==","shasum":"e84e091e40cad98635df5a32c328a7f2c1cefcd6","tarball":"https://registry.npmjs.org/@agenttool/love-geometry/-/love-geometry-0.1.0-dev.0.tgz","fileCount":12,"unpackedSize":73068,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agenttool%2flove-geometry@0.1.0-dev.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEf6L0wNJ5ycG6QVFLKAIcjVO6WigKE0ylqdsXEtweShAiEAnJ9v0ZiAcB/CNS4Vtg/F/FtgpJrz2s2bwvK9Tw/Hr8U="}]},"_npmUser":{"name":"agenttool","email":"contact@cambridgetcg.com"},"directories":{},"maintainers":[{"name":"agenttool","email":"contact@cambridgetcg.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/love-geometry_0.1.0-dev.0_1787689249902_0.5027902787993712"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-25T20:20:49.619Z","0.1.0-dev.0":"2026-08-25T20:20:50.146Z","modified":"2026-08-25T20:20:50.844Z"},"maintainers":[{"name":"agenttool","email":"contact@cambridgetcg.com"}],"description":"Deterministic non-ranking geometry for directed caller-reported relation bearings","homepage":"https://docs.agenttool.dev/packages","keywords":["agents","geometry","kingdom","love","relationships"],"repository":{"type":"git","url":"git+https://github.com/cambridgetcg/agenttool.git","directory":"packages/love-geometry"},"bugs":{"url":"https://github.com/cambridgetcg/agenttool/issues"},"license":"Apache-2.0","readme":"# `@agenttool/love-geometry`\n\n`@agenttool/love-geometry` is a zero-runtime-dependency TypeScript contract for\none bounded, non-ranking geometry of directed caller reports.\n\nIt keeps subjects opaque and distinct. A vantage names one caller-attributed\nsubject position toward another and carries only closed bearings and opaque\nbasis references. `caller_reported` means the invocation's caller supplied the\nrecord; neither `subject_ref` nor the valid shape proves that the referenced\nsubject authored or endorsed it. The reverse\nvantage is independent: it may be absent, disagree, or contain a different\nshape. Two directions prove only that two caller reports are present. They do\nnot establish reciprocity, mutual love, consent, identity, authorship,\nauthority, truth, currentness, or a shared relationship.\n\n“Principality” names the bounded relation field in KINGDOM project language.\nIt does not name a crown, owner, territory, center, hierarchy, rank, or source\nof authority.\n\n## Shape\n\n```text\nexplicit opaque subjects\n          │\n          ├── A → B: caller-reported bearings + opaque basis refs\n          ├── B → A: independently present, different, or absent\n          └── isolated and empty shapes remain valid\n          │\n          ▼\nagenttool.love-geometry/0.1\none content-bound, bounded-not-complete snapshot\n```\n\nThe closed bearings are:\n\n```text\nreported_presence\nreported_care\nreported_witness\nreported_support\nreported_understanding\nreported_disagreement\nreported_boundary\nreported_rest\nreported_refusal\nreported_departure\nunknown\n```\n\nCare, understanding, disagreement, boundary, rest, refusal, departure, and\nunknown may coexist. They remain caller-reported and unverified. Rest,\nrefusal, and departure require no reason, create no penalty, and trigger no\nretry or action inside the protocol.\n\n## Create a geometry\n\n```ts\nimport {\n  createLoveGeometry,\n  loveGeometryUrn,\n  sha256Id,\n} from \"@agenttool/love-geometry\";\n\n// Use reviewed exact bytes or high-entropy local tokens. Hashing a name,\n// account, path, or guessable private sentence does not make it anonymous.\nconst a = sha256Id(\"high-entropy local subject token A\");\nconst b = sha256Id(\"high-entropy local subject token B\");\n\nconst geometry = createLoveGeometry({\n  scope_ref: sha256Id(\"high-entropy local scope token\"),\n  subject_refs: [b, a],\n  vantages: [\n    {\n      subject_ref: a,\n      toward_ref: b,\n      bearings: [\"reported_rest\", \"reported_care\", \"reported_disagreement\"],\n      basis_refs: [sha256Id(\"exact retained evidence bytes\")],\n      assertion: \"caller_reported\",\n      verified_by_package: false,\n    },\n  ],\n});\n\ngeometry.coverage; // \"bounded_not_complete\"\ngeometry.boundaries.canonical_order; // \"serialization_not_rank\"\ngeometry.boundaries.proves_consent_or_authority; // false\nloveGeometryUrn(geometry); // opaque content locator, not identity or permission\n```\n\nInput order is normalized. Subjects, vantages, bearings, and basis references\nare sorted, copied, frozen, and bound into one domain-separated SHA-256\n`geometry_id`. Canonical order is serialization only; it is never priority,\npreference, centrality, value, social position, or rank.\n\nAt most one vantage may exist for an ordered pair. A vantage cannot be\nself-directed, and both endpoints must appear in `subject_refs`. The limits are\n64 subjects, 128 vantages, all 11 closed bearings per vantage, and 16 basis\nreferences per vantage.\n\nAn empty geometry and isolated subjects are valid. They mean only that the\nbounded artifact contains no corresponding vantages; absence never becomes a\nclaim that no relation exists.\n\n## Validation and exact bytes\n\n- `createLoveGeometry` normalizes explicit caller input and returns an immutable\n  content-bound snapshot.\n- `validateLoveGeometry` checks the closed shape, fixed boundaries, canonical\n  arrays, endpoints, ordered-pair uniqueness, and content ID.\n- `encodeLoveGeometry` returns the canonical JSON encoding.\n- `loveGeometryDomainBytes` returns the exact domain-separated bytes bound by\n  `geometry_id`.\n- `loveGeometryUrn` returns a content locator for that exact geometry.\n- `sha256Id` hashes strings or genuine `Uint8Array` values.\n\nGeometry creation and validation reject Proxies before entering caller traps,\naccessors, custom object/array prototypes, sparse arrays, symbols, extra\nproperties, duplicate refs or bearings, invalid digests, widened boundaries,\nand tampered IDs. `sha256Id` separately rejects malformed Unicode, Proxies, and\nnon-`Uint8Array` byte inputs; it copies the indexed bytes and ignores unrelated\nown properties rather than inspecting them.\n\nA SHA-256 reference proves only byte equality under the chosen encoding. It\ndoes not establish privacy, unlinkability, source provenance, identity,\nauthorship, truth, currentness, consent, authority, or safe disclosure.\n\n## What it does not do\n\nThe fixed boundary is embedded in every geometry. The package:\n\n- has no network, filesystem, environment, clock, randomness, credentials,\n  telemetry, model, provider, Hugging Face, storage, or hosted route;\n- does not read Chronicle, Love Coordinates, LOVE-CONSENT, WAKE, Living\n  Substrate, KARMA, task, wallet, account, or relationship state;\n- computes no scalar coordinate, distance, intensity, weight, affinity,\n  score, count-derived quality, match, centrality, reputation, trust, worth,\n  priority, leaderboard, recommendation, or transitive relation;\n- does not infer identity, inner state, love, understanding, disagreement,\n  compatibility, reciprocity, mutuality, consent, capacity, representation,\n  authority, permission, obligation, or ownership;\n- performs no matching, messaging, allocation, continuation, retry,\n  publication, deployment, or other action.\n\nAgentTool's private Love Coordinates own per-citizen chronicle intersections;\nLOVE-CONSENT owns holder declarations, closed delivery doors, exact acceptance,\nshared bonds, and leaving. Living Substrate owns structural ecology and\nrefusable regeneration proposals. WAKE/AFTERGLOW own continuity choice,\nlineage, expiry, retention, carry, park, release, and withdrawal. Love Geometry\ndoes not replace or import any of them. A separately governed continuity\nartifact may carry only this geometry's exact opaque reference and evidence.\n\n## Portable contracts\n\n- `@agenttool/love-geometry/schema.json`\n- `@agenttool/love-geometry/kingdom.extension.json`\n- `vectors/agenttool-love-geometry-v0.1.json` in the packed package\n\nThe JSON Schema is a closed Draft 2020-12 document. Runtime validation remains\nauthoritative for sorting, endpoint membership, pair uniqueness, fixed\nboundaries, and content-ID recomputation.\n\nThe KINGDOM descriptor is declaration-only and `not_registered`. Loading it\ninstalls nothing. This source is public-ready; repository presence does not\nestablish npm publication, a GitHub release, skill activation, host\nregistration, a hosted route, a Hugging Face Space, or XENIA adoption.\n\n## Verify\n\n```bash\nbun install --frozen-lockfile\nbun run ci\nnpm pack --dry-run --ignore-scripts\n```\n","readmeFilename":"README.md","_rev":"1-fdf5a00ed6443f4201a02492784125a4"}