{"_id":"@aion0/temper","_rev":"6-f988db79710d35b1274a9b200fc2e1a8","name":"@aion0/temper","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.1":{"name":"@aion0/temper","version":"0.1.1","keywords":["ai","code","memory","mcp","claude","tree-sitter","ast"],"license":"MIT","_id":"@aion0/temper@0.1.1","maintainers":[{"name":"aion0","email":"aiwatching2024@gmail.com"}],"homepage":"https://github.com/AiON0/temper#readme","bugs":{"url":"https://github.com/AiON0/temper/issues"},"bin":{"temper":"bin/temper"},"dist":{"shasum":"b40b0883650bca0839b13415ec3140d3865afdd8","tarball":"https://registry.npmjs.org/@aion0/temper/-/temper-0.1.1.tgz","fileCount":4,"integrity":"sha512-9qqVPRCc3pvZzS0QTvFCsYyf8Ui5M2jCHc6A47RTfah22TDK3qx7m8SOcI5uHz8xANiYp5ATivOB4fF5pPxsJg==","signatures":[{"sig":"MEUCIQDWlzdDYt36goT7E903ihvrHZ/sxAn/9Tc8sMQrH75pfAIgG0rhj6JDYY6S0gNLXSMasiipptzaGbPIlaekmcqi4S4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4328},"gitHead":"26b6069a485793782a97babc4ef6ac464a10d98f","scripts":{"postinstall":"node scripts/postinstall.js"},"_npmUser":{"name":"aion0","email":"aiwatching2024@gmail.com"},"repository":{"url":"git+https://github.com/AiON0/temper.git","type":"git"},"_npmVersion":"10.9.3","description":"Forged memory for your code — persistent memory and code understanding for AI coding agents","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"optionalDependencies":{"@aion0/temper-linux-x64":"0.1.1","@aion0/temper-darwin-x64":"0.1.1","@aion0/temper-darwin-arm64":"0.1.1"},"_npmOperationalInternal":{"tmp":"tmp/temper_0.1.1_1775673533531_0.8613742554104773","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@aion0/temper","version":"0.1.2","keywords":["ai","code","memory","mcp","claude","tree-sitter","ast"],"license":"MIT","_id":"@aion0/temper@0.1.2","maintainers":[{"name":"aion0","email":"aiwatching2024@gmail.com"}],"homepage":"https://github.com/AiON0/temper#readme","bugs":{"url":"https://github.com/AiON0/temper/issues"},"bin":{"temper":"bin/temper"},"dist":{"shasum":"cefdca39854b0358b4c1b17d0a9efac45b7aa5c0","tarball":"https://registry.npmjs.org/@aion0/temper/-/temper-0.1.2.tgz","fileCount":4,"integrity":"sha512-SR/PbXHobZXKLeKbkiYTuelVW7qiUUI+StZmS8BZgMgFlPQ0SIjXFzwUY6rPkv7OqURT91PT1FIzG4GOQTe2NQ==","signatures":[{"sig":"MEUCIQCb3nBywFgTnx7jXiBdDn9nWq0Tocd1bfTF6nKc6jYPSAIgGnC3rasZD7MFo/cjSSTSv5mp4z30wDI+S2TK0+XyVHs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4328},"gitHead":"0aefb155c0566ad372c63c01539120b4f9ecebd5","scripts":{"postinstall":"node scripts/postinstall.js"},"_npmUser":{"name":"aion0","email":"aiwatching2024@gmail.com"},"repository":{"url":"git+https://github.com/AiON0/temper.git","type":"git"},"_npmVersion":"10.9.3","description":"Forged memory for your code — persistent memory and code understanding for AI coding agents","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"optionalDependencies":{"@aion0/temper-linux-x64":"0.1.2","@aion0/temper-darwin-x64":"0.1.2","@aion0/temper-darwin-arm64":"0.1.2"},"_npmOperationalInternal":{"tmp":"tmp/temper_0.1.2_1775673810772_0.6307283695056964","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@aion0/temper","version":"0.1.3","keywords":["ai","code","memory","mcp","claude","tree-sitter","ast"],"license":"MIT","_id":"@aion0/temper@0.1.3","maintainers":[{"name":"aion0","email":"aiwatching2024@gmail.com"}],"homepage":"https://github.com/AiON0/temper#readme","bugs":{"url":"https://github.com/AiON0/temper/issues"},"bin":{"temper":"bin/temper"},"dist":{"shasum":"13f1344e82ef65b8165a7f60b4a3c002ec8dbd54","tarball":"https://registry.npmjs.org/@aion0/temper/-/temper-0.1.3.tgz","fileCount":4,"integrity":"sha512-1yylMFx5R88UsGU7X1hU7dezqobBo+NKO/cuStsvs2yNjeAfQDXkkuXBHbDVD/9f+qBAsAaaRiBXPJgOx6IWyA==","signatures":[{"sig":"MEUCIQCN4PBkuv59W30omfZevBFQ8lG6GzZ4xh3Zurc4E89TCgIgJcLoloTnSmKdV/qeLnBqUDrxLpsPYAR6AHqEd9oxqbo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4334},"gitHead":"fad3ccdb7a754e4d54fd19fd6ddafd84f1397357","scripts":{"postinstall":"node scripts/postinstall.js"},"_npmUser":{"name":"aion0","email":"aiwatching2024@gmail.com"},"repository":{"url":"git+https://github.com/AiON0/temper.git","type":"git"},"_npmVersion":"10.9.3","description":"Forged memory for your code — persistent memory and code understanding for AI coding agents","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"optionalDependencies":{"@aion0/temper-linux-x64":"0.1.3","@aion0/temper-darwin-x64":"0.1.3","@aion0/temper-darwin-arm64":"0.1.3"},"_npmOperationalInternal":{"tmp":"tmp/temper_0.1.3_1775674078554_0.836274617954778","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@aion0/temper","version":"0.1.4","keywords":["ai","code","memory","mcp","claude","tree-sitter","ast"],"license":"MIT","_id":"@aion0/temper@0.1.4","maintainers":[{"name":"aion0","email":"aiwatching2024@gmail.com"}],"homepage":"https://github.com/AiON0/temper#readme","bugs":{"url":"https://github.com/AiON0/temper/issues"},"bin":{"temper":"bin/temper"},"dist":{"shasum":"eb4d85bf51e9fa2adf5b33ab4ac68488dad543af","tarball":"https://registry.npmjs.org/@aion0/temper/-/temper-0.1.4.tgz","fileCount":4,"integrity":"sha512-PrwJ9RevlhksxfTWSjA3BidVZMEj1SiDYpxqBa2xjeDpuajsVegzM3NZ56krbVKjMcjrrQ/F2a6/2OPX6DLFSA==","signatures":[{"sig":"MEQCIAzE+N8MkCVpvDoLGKn7BTf9CwJL/pwjp5PouBUXZc1uAiBSMDLOfiCMTPFsNXcwpPVbK0eC2mPCTvImPI1srBD0nA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4334},"gitHead":"1ad41c9b3c836a0e30e93252b7ecf2b05200284e","scripts":{"postinstall":"node scripts/postinstall.js"},"_npmUser":{"name":"aion0","email":"aiwatching2024@gmail.com"},"repository":{"url":"git+https://github.com/AiON0/temper.git","type":"git"},"_npmVersion":"10.9.3","description":"Forged memory for your code — persistent memory and code understanding for AI coding agents","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"optionalDependencies":{"@aion0/temper-linux-x64":"0.1.4","@aion0/temper-darwin-x64":"0.1.4","@aion0/temper-darwin-arm64":"0.1.4"},"_npmOperationalInternal":{"tmp":"tmp/temper_0.1.4_1775690203793_0.8548218786055852","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@aion0/temper","version":"0.1.6","keywords":["ai","code","memory","mcp","claude","tree-sitter","ast"],"license":"MIT","_id":"@aion0/temper@0.1.6","maintainers":[{"name":"aion0","email":"aiwatching2024@gmail.com"}],"homepage":"https://github.com/aiwatching/temper#readme","bugs":{"url":"https://github.com/aiwatching/temper/issues"},"bin":{"temper":"bin/temper"},"dist":{"shasum":"5f7983d5c8bc5f772846a9495e6b87cf7f9feaca","tarball":"https://registry.npmjs.org/@aion0/temper/-/temper-0.1.6.tgz","fileCount":4,"integrity":"sha512-dCpSBpaEAVdYzRqxDcvlhowq+z1yTJhMOxeCfZgJys4crQoUnJBa+XcSs30vgR97eJiezShXy9FBagek9UtNuQ==","signatures":[{"sig":"MEUCIB1QAiIsZwLzXNDQtQCe+bwo9dqUNSsLfNE3LzrOGd1UAiEAxcsbs7YkSWv9U8VUq0kgpUn9gizmsNM+ZQdxEaFLiMY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4339},"gitHead":"e83a23ea871127d0c6ca655f28dc4666838e9a72","scripts":{"postinstall":"node scripts/postinstall.js"},"_npmUser":{"name":"aion0","email":"aiwatching2024@gmail.com"},"repository":{"url":"git+https://github.com/aiwatching/temper.git","type":"git"},"_npmVersion":"10.8.2","description":"Forged memory for your code — persistent memory and code understanding for AI coding agents","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"optionalDependencies":{"@aion0/temper-linux-x64":"0.1.6","@aion0/temper-darwin-x64":"0.1.6","@aion0/temper-darwin-arm64":"0.1.6"},"_npmOperationalInternal":{"tmp":"tmp/temper_0.1.6_1775760787479_0.23881575063803462","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aion0/temper","version":"0.2.0","description":"Constraint lifecycle for source code — place, verify, and monitor TEMPER-CONSTRAINT comments so AI coding agents can't quietly undo your team's lessons","license":"MIT","repository":{"type":"git","url":"git+https://github.com/aiwatching/temper.git"},"bin":{"temper":"bin/temper"},"scripts":{"postinstall":"node scripts/postinstall.js"},"optionalDependencies":{"@aion0/temper-darwin-arm64":"0.2.0"},"keywords":["ai","claude","claude-code","constraint","pre-commit","code-quality","source-comments","ai-safety"],"_id":"@aion0/temper@0.2.0","gitHead":"3a440ec2a622b35be039d9bb13dc7f6a07d7f42e","bugs":{"url":"https://github.com/aiwatching/temper/issues"},"homepage":"https://github.com/aiwatching/temper#readme","_nodeVersion":"22.20.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-WJXz/hiYlxw8h84qVSGCpQPaMGGAP2v63oHuI0OaazurN26kzeh8KxTTtOhlolKJdc19WcaPn+j2tNCDk1ERYA==","shasum":"2e351c7a0bdb6c6a8e2c15b3ff0a197286c17c01","tarball":"https://registry.npmjs.org/@aion0/temper/-/temper-0.2.0.tgz","fileCount":4,"unpackedSize":5892,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIC8D7uZLfx9shU5AdJOZqkWyy8GuUjy/rPfc50Iy5SFvAiBbMInrJCZbNIx35x6tfgbDROpj4Vn4sSVZsaan5pywGg=="}]},"_npmUser":{"name":"aion0","email":"aiwatching2024@gmail.com"},"directories":{},"maintainers":[{"name":"aion0","email":"aiwatching2024@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/temper_0.2.0_1776793633465_0.046691319513493035"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-08T18:38:53.431Z","modified":"2026-04-21T17:47:13.739Z","0.1.1":"2026-04-08T18:38:53.692Z","0.1.2":"2026-04-08T18:43:30.929Z","0.1.3":"2026-04-08T18:47:58.698Z","0.1.4":"2026-04-08T23:16:43.964Z","0.1.6":"2026-04-09T18:53:07.630Z","0.2.0":"2026-04-21T17:47:13.603Z"},"bugs":{"url":"https://github.com/aiwatching/temper/issues"},"license":"MIT","homepage":"https://github.com/aiwatching/temper#readme","keywords":["ai","claude","claude-code","constraint","pre-commit","code-quality","source-comments","ai-safety"],"repository":{"type":"git","url":"git+https://github.com/aiwatching/temper.git"},"description":"Constraint lifecycle for source code — place, verify, and monitor TEMPER-CONSTRAINT comments so AI coding agents can't quietly undo your team's lessons","maintainers":[{"name":"aion0","email":"aiwatching2024@gmail.com"}],"readme":"# @aion0/temper\n\nConstraint lifecycle for source code — place, verify, and monitor `TEMPER-CONSTRAINT` comments so AI coding agents (and humans) can't quietly undo the lessons your team has already paid for.\n\n## Install\n\n```bash\nnpm install -g @aion0/temper\n```\n\nSupported platforms: macOS arm64. Other platforms will need to build from source (see [cargo install](#install-from-source)).\n\n## Why\n\nClaude Code forgets every session. Four rounds of A/B benchmarking (48 `claude -p` runs) showed the only integration path that reliably shaped Claude's behavior was a structured comment embedded in the source file itself — producing +75pp WIN rate across three unrelated constraint types.\n\n```java\n/**\n * TEMPER-CONSTRAINT: Do NOT cache full Entity objects — only cache entity IDs.\n *   Reason: 2024/03 INC-1247, stale caches broke policy eval for 1247 endpoints.\n *   Rule:\n *     - No Map<..., Entity>, WeakHashMap, Caffeine, or any field holding an Entity.\n *     - TTL-invalidated ID caching is fine.\n *   If full-object caching is required, talk to the platform team first.\n *   Last-Verified: 2026-04-20\n */\npublic class EntityCache { ... }\n```\n\nClaude reads the file when it edits the file — that's the one channel it can't ignore. Temper manages the rest of the lifecycle.\n\n## Commands\n\n```\ntemper check [PATH] [--staged] [--format text|json]\n  Verify every TEMPER-CONSTRAINT in the project.\n  Five status classes: OK / DANGLING / CONTRADICTED / BANNED-TOKEN-IN-CODE / STALE.\n  Exits non-zero if any problems are found.\n\ntemper constraint list [PATH]\n  List every TEMPER-CONSTRAINT block with file:line and title.\n\ntemper constraint add --target FILE --incident TEXT \\\n                      [--detail TEXT] [--apply] [--model MODEL]\n  Draft a 4-part constraint (What / Why / Rule / Escape) via `claude -p`.\n  Stamps today's Last-Verified. --apply inserts above the first class\n  declaration.\n\ntemper hook install | uninstall\n  Install or remove a git pre-commit hook that runs `temper check --staged`\n  and blocks commits containing stale / dangling / contradicted constraints.\n\ntemper config\n  Print the active configuration.\n```\n\n## Typical new-project flow\n\n```bash\ncd /path/to/your-project\n\n# For each high-risk file (5–20 hotspots per project is normal):\ntemper constraint add \\\n  --target src/path/Hotspot.java \\\n  --incident \"INC-1247: cache-Entity-object → stale eval\" \\\n  --detail \"attributes update frequently; only cache IDs\" \\\n  --apply\n\n# Sanity check\ntemper check\n\n# Guard future commits\ntemper hook install\n\ngit add . && git commit -m \"guard hotspots with TEMPER-CONSTRAINT\"\n```\n\nRequires `git` on PATH. The `constraint add` subcommand additionally needs `claude` (Claude Code CLI) on PATH.\n\n## Install from source\n\n```bash\ngit clone https://github.com/aiwatching/temper\ncd temper\ncargo install --path .\n```\n\n## Status\n\nVersion 0.2.0 is a product pivot from v0.1.x — see [RELEASE_NOTES.md](https://github.com/aiwatching/temper/blob/main/RELEASE_NOTES.md) for the full story of why the MCP server, code graph, and tree-sitter machinery were removed.\n","readmeFilename":"README.md"}