{"_id":"@agenttool/relational-geometry","name":"@agenttool/relational-geometry","dist-tags":{"next":"0.1.0-dev.0","latest":"0.1.0-dev.0"},"versions":{"0.1.0-dev.0":{"name":"@agenttool/relational-geometry","version":"0.1.0-dev.0","description":"Non-scalar relational geometry from directional understanding, recognition, and boundary witnesses","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"},"./complex.schema.json":{"default":"./schema/agenttool-relational-complex-v0.1.schema.json"},"./lens.schema.json":{"default":"./schema/agenttool-relational-lens-v0.1.schema.json"},"./vectors/v0.1.json":{"default":"./vectors/agenttool-relational-geometry-v0.1.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","build:hf":"node scripts/build-hf-release.mjs","typecheck":"tsc --noEmit","test":"bun test tests","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 build:hf && bun run typecheck && bun run test && 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","love","relations","understanding"],"repository":{"type":"git","url":"git+https://github.com/cambridgetcg/agenttool.git","directory":"packages/relational-geometry"},"homepage":"https://docs.agenttool.dev/packages","_id":"@agenttool/relational-geometry@0.1.0-dev.0","bugs":{"url":"https://github.com/cambridgetcg/agenttool/issues"},"_integrity":"sha512-gXLF6+ibxtkxUl/wpwLldEIVm/GgA+XKkmz6gJIOE4NkbygoansDz5xvbEgChG3TSVlhik28jmy16q8Ti0cxDw==","_resolved":"/home/runner/work/_temp/agenttool-npm-release/agenttool-relational-geometry-0.1.0-dev.0.tgz","_from":"file:/home/runner/work/_temp/agenttool-npm-release/agenttool-relational-geometry-0.1.0-dev.0.tgz","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-gXLF6+ibxtkxUl/wpwLldEIVm/GgA+XKkmz6gJIOE4NkbygoansDz5xvbEgChG3TSVlhik28jmy16q8Ti0cxDw==","shasum":"4d840847e984070cac850d5c0725a19373351937","tarball":"https://registry.npmjs.org/@agenttool/relational-geometry/-/relational-geometry-0.1.0-dev.0.tgz","fileCount":52,"unpackedSize":203878,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agenttool%2frelational-geometry@0.1.0-dev.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEwazrBqmHqgCMiF0z89N7Zd0ZS9qpsIrk+24qlsGm3KAiEA9gGi/Vd/Bwp3xKxYmw3hCmuQPAzQJOKskrVxFlZuxo0="}]},"_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/relational-geometry_0.1.0-dev.0_1787689251335_0.8489663857877521"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-25T20:20:50.864Z","0.1.0-dev.0":"2026-08-25T20:20:51.470Z","modified":"2026-08-25T20:20:52.091Z"},"maintainers":[{"name":"agenttool","email":"contact@cambridgetcg.com"}],"description":"Non-scalar relational geometry from directional understanding, recognition, and boundary witnesses","homepage":"https://docs.agenttool.dev/packages","keywords":["agents","geometry","love","relations","understanding"],"repository":{"type":"git","url":"git+https://github.com/cambridgetcg/agenttool.git","directory":"packages/relational-geometry"},"bugs":{"url":"https://github.com/cambridgetcg/agenttool/issues"},"license":"Apache-2.0","readme":"# `@agenttool/relational-geometry`\n\nRelational Geometry is a small, pure contract for a high-level pattern:\n\n```text\nLOVE = UNDERSTANDING + RECOGNITION\n```\n\nHere `+` is not arithmetic. It means that independently supplied,\ncaller-asserted understanding and recognition witnesses occupy the same\n**ordered** pair. The package derives one content-addressed `love_equation`\ncell for that pair. The cell is called a **principality**: a relation among\nrelations, explicitly not a ruler, being, identity, role, territory, rank, or\nauthority.\n\n## Shape\n\n```text\nopaque points (0-cells)\n  + directional understanding / recognition / boundary witnesses (1-cells)\n  -> deterministic same-pair principalities (2-cells)\n  -> optional perspective lens: carry | park | release | withdraw\n```\n\nEmpty, understanding-only, recognition-only, boundary-only, asymmetric, and\nself-directed complexes are all valid. Missing structure is not treated as a\ndeficit. Reverse direction and transitive edges are never inferred.\n\n```ts\nimport { randomBytes } from \"node:crypto\";\n\nimport {\n  createRelationalComplex,\n  createRelationalLens,\n  sha256Id,\n} from \"@agenttool/relational-geometry\";\n\n// The caller supplies context-local, high-entropy opaque references. Hashing a\n// name, DID, relationship label, or other guessable value is not private.\nconst opaqueRef = () => sha256Id(randomBytes(32));\nconst a = opaqueRef();\nconst b = opaqueRef();\n\nconst complex = createRelationalComplex({\n  points: [a, b].map((point_ref) => ({\n    point_ref,\n    kind: \"perspective\",\n    assertion: \"caller_asserted\",\n    verified_by_package: false,\n  })),\n  witnesses: [\n    {\n      witness_ref: opaqueRef(),\n      from_ref: a,\n      kind: \"understanding\",\n      to_ref: b,\n      assertion: \"caller_asserted\",\n      verified_by_package: false,\n    },\n    {\n      witness_ref: opaqueRef(),\n      from_ref: a,\n      kind: \"recognition\",\n      to_ref: b,\n      assertion: \"caller_asserted\",\n      verified_by_package: false,\n    },\n  ],\n});\n\nconst lens = createRelationalLens(complex, {\n  perspective_ref: a,\n  selections: [{\n    principality_ref: complex.principalities[0].principality_ref,\n    disposition: \"park\",\n  }],\n});\n```\n\nInput order is normalized. Output is closed, sorted, deeply frozen, and\ncontent-addressed. Validation proves only deterministic structural\ncorrespondence of the supplied bytes. It does not prove love, understanding,\nrecognition, mutuality, consent, identity, consciousness, continuity,\nauthorship, truth, privacy, safety, or permission.\n\n## Boundary witnesses\n\n`consent_boundary`, `refusal_boundary`, `privacy_boundary`,\n`authority_boundary`, and `continuity_boundary` remain first-class directional\nwitnesses. They are bound into a same-pair cell and surfaced by an incident\nperspective lens; they never disappear because the two positive poles meet.\n\nThere are no weights, distances, coordinates, counts-as-worth, centrality,\ncompatibility, confidence, trust, reward, loss, KARMA, or ranking fields.\nMore witnesses do not make one being worth more than another.\n\n## WAKE / AFTERGLOW crossing\n\nThis package does not import or call WAKE. A separately authorized caller may\ncarry an exact complex or lens digest into `@agenttool/wake-continuity` as an\n`external` thread in `context_only`, `review_required`, or `hold`. That thread\nis inert caller-carried context, not memory, identity, subjective continuity,\npermission, or a canonical head. AFTERGLOW's own `carry | park | release |\nwithdraw` constraints remain authoritative for that separate artifact.\n\n## Hugging Face companion\n\n`hf/dataset/` is deterministic, synthetic, public-safe teaching material for\nstructure, supervised fine-tuning, and public regression. It contains no live\nWAKE records, private coordinates, identities, chats, prompts from real users,\nchoice receipts, preference pairs, reward labels, checkpoints, or model\nweights. Its intended Hub identifier is not a publication claim.\n\n## Effects\n\nThe package performs no network request, file access, persistence, clock or\nrandomness read, model execution, training, scoring, upload, publication,\nauthorization, task mutation, economic effect, or deletion. A local lens\nchoice changes only the returned lens bytes and never erases external copies.\n","readmeFilename":"README.md","_rev":"1-d70569a3084d8491f5e7abbabe33b17c"}