{"_id":"@circuit-nova/state-darwin-arm64","_rev":"5-f460094a1f2993f9641af79e7c68cef7","name":"@circuit-nova/state-darwin-arm64","dist-tags":{"latest":"0.4.0"},"versions":{"0.1.0":{"name":"@circuit-nova/state-darwin-arm64","version":"0.1.0","license":"MIT","_id":"@circuit-nova/state-darwin-arm64@0.1.0","maintainers":[{"name":"chrisnk1","email":"chris.kagabe@gmail.com"}],"os":["darwin"],"cpu":["arm64"],"dist":{"shasum":"b1c1a32429db61bcf198ed2ef913718f866241fd","tarball":"https://registry.npmjs.org/@circuit-nova/state-darwin-arm64/-/state-darwin-arm64-0.1.0.tgz","fileCount":4,"integrity":"sha512-gphc8o3dVrpuv5zUnELz83DE5K+TLYcPMsBaRHGIxfNPTj4myvNSDLw5ZVFYSwpExJkSoKJ6yJu8G07aAK8DWw==","signatures":[{"sig":"MEUCIQDmTgmEOaCQY/t/o0fqlqg91vtfLSkvQOhGyfHRzBu/2wIgBNy0C9Ln2M7yN7lgnbH2U0B8rk+SCrD6W96JKL293SA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2397049},"engines":{"node":">=22.5"},"_npmUser":{"name":"chrisnk1","email":"chris.kagabe@gmail.com"},"_npmVersion":"11.18.0","description":"Native nova-state history and memory index for darwin-arm64","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/state-darwin-arm64_0.1.0_1786675269279_0.1176782841824564","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@circuit-nova/state-darwin-arm64","version":"0.3.0","license":"MIT","_id":"@circuit-nova/state-darwin-arm64@0.3.0","maintainers":[{"name":"chrisnk1","email":"chris.kagabe@gmail.com"},{"name":"circuitnotion","email":"info@circuitnotion.com"}],"os":["darwin"],"cpu":["arm64"],"dist":{"shasum":"654ab73444a813eba3ca315fcdd25381a9c88fea","tarball":"https://registry.npmjs.org/@circuit-nova/state-darwin-arm64/-/state-darwin-arm64-0.3.0.tgz","fileCount":4,"integrity":"sha512-phxuFrlPxJ3Eirfq1E2iXSzUaZTi4EFmwzoKKa5UWFDfO1jWn/h6Q8//kLViog/HuH8rqb13vpRRoEo6MBcDSw==","signatures":[{"sig":"MEQCIBifDLGEuBb0OJhzAhwzG+QSXn1S/xZqiJmnIoASY2weAiBm35VWkWNYQINyJMwrnKZ6vtHiO6Hko38j7PhtAYcqfA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2398910},"engines":{"node":">=22.5"},"_npmUser":{"name":"chrisnk1","email":"chris.kagabe@gmail.com"},"_npmVersion":"11.18.0","description":"Native nova-state history and memory index for darwin-arm64","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/state-darwin-arm64_0.3.0_1787462718018_0.2044340910463558","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@circuit-nova/state-darwin-arm64","version":"0.4.0","license":"MIT","_id":"@circuit-nova/state-darwin-arm64@0.4.0","maintainers":[{"name":"chrisnk1","email":"chris.kagabe@gmail.com"},{"name":"circuitnotion","email":"info@circuitnotion.com"}],"os":["darwin"],"cpu":["arm64"],"dist":{"shasum":"94d22a09e400f7dab6475d7ba1e4a53359dc422c","tarball":"https://registry.npmjs.org/@circuit-nova/state-darwin-arm64/-/state-darwin-arm64-0.4.0.tgz","fileCount":4,"integrity":"sha512-R0FjfFXm/EWtX8kfz4ZVsft8NG5PfDEDKe90PkPtztdkt4bXHoS1GvmCdlK8Rv2CO6vbDR9Evrk9McKxvEq7wA==","signatures":[{"sig":"MEUCIQC1YvtYg1URP4HuAO1Qm8Nf9qAlri2MPV8YS6je67H5cwIgFc7DVrhgxj0sd+uE+IoVj80Wy7KEUxfsKO2Ik+cfBok=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2518162},"engines":{"node":">=22.5"},"_npmUser":{"name":"chrisnk1","email":"chris.kagabe@gmail.com"},"_npmVersion":"11.18.0","description":"Native nova-state history and memory index for darwin-arm64","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/state-darwin-arm64_0.4.0_1787609656737_0.25858485950310106","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-08-14T02:41:09.022Z","modified":"2026-09-01T20:44:34.401Z","0.1.0":"2026-08-14T02:41:09.477Z","0.3.0":"2026-08-23T05:25:18.160Z","0.4.0":"2026-08-24T22:14:16.983Z"},"license":"MIT","description":"Native nova-state history and memory index for darwin-arm64","maintainers":[{"email":"chris.kagabe@gmail.com","name":"chrisnk1"}],"readme":"# nova-state\n\n`nova-state` is Nova's local, rebuildable history index. It verifies the existing session snapshots\nand hash-chained event journals, projects them into SQLite WAL + FTS5, and exposes a small versioned\nJSON-lines protocol over standard input/output.\n\nThe same native sidecar also hosts the **Defensive Brain**, a deliberately separate read model over\nthe reviewed JSONL corpus in `defender-knowledge/`. It writes only the disposable\n`.nova/security-brain/brain-v1.sqlite3`; it never mixes security research with conversation history\nand never writes canonical knowledge. Defender mode retrieves at most eight relevant records, so\nthe corpus size does not become prompt size.\n\nThis first milestone is deliberately read-only with respect to canonical Nova state. It writes only\n`.nova/state/index-v1.sqlite3`, which can be deleted and rebuilt at any time. Session snapshots,\nevent journals, memory files, skills, jobs, and checkpoints remain authoritative in their current\nhuman-readable formats.\n\n## Protocol\n\nEvery input line is one request and every output line is one response:\n\n```json\n{\"id\":\"1\",\"protocolVersion\":1,\"method\":\"ping\",\"params\":{}}\n{\"id\":\"2\",\"protocolVersion\":1,\"method\":\"index.rebuild\",\"params\":{\"root\":\"/workspace/project\"}}\n{\"id\":\"3\",\"protocolVersion\":1,\"method\":\"search\",\"params\":{\"root\":\"/workspace/project\",\"query\":\"PaymentIntent\",\"limit\":5}}\n{\"id\":\"4\",\"protocolVersion\":1,\"method\":\"session.list\",\"params\":{\"root\":\"/workspace/project\",\"limit\":20}}\n{\"id\":\"5\",\"protocolVersion\":1,\"method\":\"brain.rebuild\",\"params\":{\"sourceRoot\":\"/installed/defender-knowledge\",\"dataRoot\":\"/workspace/.nova/security-brain\"}}\n{\"id\":\"6\",\"protocolVersion\":1,\"method\":\"brain.search\",\"params\":{\"sourceRoot\":\"/installed/defender-knowledge\",\"dataRoot\":\"/workspace/.nova/security-brain\",\"query\":\"post quantum migration\",\"limit\":4,\"now\":\"2026-08-24\"}}\n```\n\nSearch returns one best hit per session, a contextual window around the match, opening and closing\nsession bookends, and a short explanation of why the evidence matched. Snapshot messages and journal\nevents remain explicitly labelled so derived history never blurs into authoritative audit evidence.\nRuntime-generated verification prompts are marked internal and omitted here, so search results and\nturn counts never attribute Nova's own nudges to the user.\n\nThe CLI uses the sidecar for `/history`, ranked search, status, and its resume chooser. Startup\nincrementally indexes changed records; a missing or incompatible binary falls back to verified JSON\nrather than making conversation history unavailable.\n\n## Development\n\n```sh\ncargo test --manifest-path packages/nova-state/Cargo.toml\ncargo fmt --manifest-path packages/nova-state/Cargo.toml -- --check\ncargo clippy --manifest-path packages/nova-state/Cargo.toml --all-targets -- -D warnings\ncargo run --manifest-path packages/nova-state/Cargo.toml\ncargo run --release --features benchmark --manifest-path packages/nova-state/Cargo.toml --bin nova-state-bench -- --sessions 500 --messages 40 --queries 200\ncargo run --release --features benchmark --manifest-path packages/nova-state/Cargo.toml --bin nova-defender-brain-bench -- --records 10000 --queries 2000\n```\n\nOn the 2026-08-24 development machine, the shipped 14-record release benchmark measured a 17.7 ms\ncold rebuild, 0.33 ms unchanged-corpus check, 0.062 ms mean warm query, 0.107 ms p95, and 0.242 ms\np99. A deliberately oversized 10,000-record stress corpus used 2.86 KB/record with a truncated WAL;\ntwo runs measured 3.24–5.32 ms mean queries and 7.86–13.90 ms p95. Treat these as regression\nbaselines, not universal hardware guarantees.\n\n`bun run defender:refresh` uses `EXA_API_KEY` to research each domain against a constrained set of\nprimary-source domains. It writes mode-0600, ignored `untrusted-candidate` JSONL under\n`.nova/security-brain/candidates/`. It cannot modify the active corpus: a human must verify the\nlinked primary pages, write original defense-only guidance, and promote it through code review.\nUse `bun run defender:refresh --force --domain malware-reverse-engineering` for a targeted research\ncheck; targeted and partial runs deliberately do not advance the periodic full-refresh timestamp.\n\nThe release invariants and benchmark interpretation rules live in [INVARIANTS.md](./INVARIANTS.md).\n","readmeFilename":"README.md"}