{"_id":"@darksol/remem-v2","_rev":"2-4b0fa0a80f74290a4846b96107bfe905","name":"@darksol/remem-v2","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@darksol/remem-v2","version":"0.1.0","keywords":["ai","agent","agent-memory","context","extraction","graph","intake","memory","pipeline","recursive-memory","typescript"],"author":{"name":"DARKSOL"},"license":"MIT","_id":"@darksol/remem-v2@0.1.0","maintainers":[{"name":"darksol","email":"chris00claw@gmail.com"}],"homepage":"https://github.com/darks0l/remem-v2#readme","bugs":{"url":"https://github.com/darks0l/remem-v2/issues"},"dist":{"shasum":"52b33c3e0f04a2c6b966ab41f97bda4452bc5a03","tarball":"https://registry.npmjs.org/@darksol/remem-v2/-/remem-v2-0.1.0.tgz","fileCount":10,"integrity":"sha512-ff54H7uZWEsyFuHIND1pOVNQnWDgVGLqfA/XaPoIv0zT/QocvG2OtmDWDKz/TORRpeawK0Hlx2gXSRKn9wMb+A==","signatures":[{"sig":"MEYCIQCze1tpoFFihwDLpjEmM8E1keagOcFb3dyyBDDa437uOQIhAPKy+N7hT9hisge4ncXknrkFz36SKFOydiwXAxE69Ook","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1151703},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"b6ef82b0e4b45729a1c3d56dab53d62e0201a5fb","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"tsc --noEmit","test":"vitest run","build":"tsup src/index.ts --format cjs,esm --dts --clean","prepublishOnly":"npm run lint && npm test && npm run build && npm pack --dry-run"},"_npmUser":{"name":"darksol","email":"chris00claw@gmail.com"},"repository":{"url":"git+https://github.com/darks0l/remem-v2.git","type":"git"},"_npmVersion":"11.8.0","description":"ReMEM v2 core: intake pipelines, recursive recall, and bounded context assembly for agents","directories":{},"_nodeVersion":"24.13.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^4.1.9","typescript":"^5.3.0","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/remem-v2_0.1.0_1786161722504_0.38171478515026935","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@darksol/remem-v2","version":"0.2.0","description":"ReMEM v2 core: scoped memory planning, recall, extraction, graph expansion, and bounded context assembly for agents","type":"module","main":"dist/index.cjs","module":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"scripts":{"build":"tsup src/index.ts --format cjs,esm --dts --clean","dev":"tsup src/index.ts --format cjs,esm --dts --watch","test":"vitest run","test:artifact":"node scripts/smoke-pack.mjs","lint":"tsc --noEmit","prepublishOnly":"npm run lint && npm test && npm run build && npm run test:artifact && npm pack --dry-run"},"keywords":["ai","agent","agent-memory","context","extraction","graph","intake","memory","pipeline","recursive-memory","typescript"],"author":{"name":"DARKSOL"},"license":"MIT","homepage":"https://github.com/darks0l/remem-v2#readme","repository":{"type":"git","url":"git+https://github.com/darks0l/remem-v2.git"},"bugs":{"url":"https://github.com/darks0l/remem-v2/issues"},"devDependencies":{"@types/node":"^20.11.0","tsup":"^8.0.0","typescript":"^5.3.0","vitest":"^4.1.9"},"gitHead":"87916a34a4d5c3775228117002d5fce92d69705d","_id":"@darksol/remem-v2@0.2.0","_nodeVersion":"24.13.1","_npmVersion":"11.8.0","dist":{"integrity":"sha512-X/1W8qMrdcL9x9iEk5S28k4585ikV/UzSucZrjM0/L6lxAsJWlj4oR/7IICj7ULjtjNcQkrTbVezrp9aKnU+Vw==","shasum":"64f403abe23ee31447f66b1703a29661fca05742","tarball":"https://registry.npmjs.org/@darksol/remem-v2/-/remem-v2-0.2.0.tgz","fileCount":10,"unpackedSize":76435,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD++cxru0Oeb8GhTuzirwtbVlDmpsXcRwWC6q2iYbL6QAIhAPj8QwVWvt32rQALFii5rl18y8h7sd6t1kG9cyqcoS4R"}]},"_npmUser":{"name":"darksol","email":"chris00claw@gmail.com"},"directories":{},"maintainers":[{"name":"darksol","email":"chris00claw@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/remem-v2_0.2.0_1786421290459_0.8157680728133552"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-08T04:02:02.304Z","modified":"2026-08-11T04:08:10.747Z","0.1.0":"2026-08-08T04:02:02.728Z","0.2.0":"2026-08-11T04:08:10.613Z"},"bugs":{"url":"https://github.com/darks0l/remem-v2/issues"},"author":{"name":"DARKSOL"},"license":"MIT","homepage":"https://github.com/darks0l/remem-v2#readme","keywords":["ai","agent","agent-memory","context","extraction","graph","intake","memory","pipeline","recursive-memory","typescript"],"repository":{"type":"git","url":"git+https://github.com/darks0l/remem-v2.git"},"description":"ReMEM v2 core: scoped memory planning, recall, extraction, graph expansion, and bounded context assembly for agents","maintainers":[{"name":"darksol","email":"chris00claw@gmail.com"}],"readme":"# ReMEM v2\n\nBuilt by DARKSOL\n\n<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/darks0l/remem-v2/main/assets/darksol-banner.png\" alt=\"DARKSOL banner\" width=\"100%\"/>\n</p>\n\n<p align=\"center\">\n\n[![npm version](https://img.shields.io/npm/v/@darksol/remem-v2?colorA=111827&colorB=1d4ed8&style=flat-square)](https://www.npmjs.com/package/@darksol/remem-v2)\n[![License: MIT](https://img.shields.io/badge/license-MIT-ef4444?colorA=111827&style=flat-square)](https://opensource.org/licenses/MIT)\n[![Node](https://img.shields.io/badge/node-%3E%3D18-22c55e?colorA=111827&style=flat-square)](https://nodejs.org/)\n![Tests](https://img.shields.io/badge/tests-passing-22c55e?colorA=111827&style=flat-square)\n\n</p>\n\n> The stripped-down ReMEM core: scoped memory planning, recall, extraction, graph expansion, and bounded context assembly for agents.\n\nReMEM v2 is the clean rebuild lane.\n\nInstead of one giant memory class doing everything, this package focuses on the actual product center:\n\n- intake before storage\n- extraction before prompt bloat\n- graph-aware recursive recall\n- scoped execution for tenant/session-aware memory work\n- bounded context assembly\n- composable repositories and pipelines\n\n## Install\n\n```bash\nnpm install @darksol/remem-v2\n```\n\n## Quick Start\n\n```ts\nimport { randomUUID } from 'node:crypto';\nimport {\n  buildBoundedContextPacket,\n  computeSmartRecallV2,\n  createMemoryPipeline,\n  executeRecallPlan,\n  executeExtractionRequest,\n  expandGraphRecall,\n  planRecall,\n  type Extractor,\n  type IntakePolicy,\n  type MemoryRepository,\n  type SmartRecallCollectors,\n} from '@darksol/remem-v2';\n\nconst repository: MemoryRepository = {\n  async store(record) {\n    return {\n      id: randomUUID(),\n      ...record,\n      createdAt: Date.now(),\n      updatedAt: Date.now(),\n    };\n  },\n  async createLink(link) {\n    return { id: randomUUID(), ...link, createdAt: Date.now() };\n  },\n  async findRecent() {\n    return [];\n  },\n  async search() {\n    return [];\n  },\n  async getLinksFor() {\n    return [];\n  },\n};\n\nconst intakePolicy: IntakePolicy = {\n  async evaluate(candidate) {\n    return {\n      accepted: candidate.content.length > 24,\n      kind: 'fact',\n      score: 0.72,\n      threshold: 0.58,\n      reason: 'Sufficient signal for storage',\n      layerHint: 'semantic',\n    };\n  },\n};\n\nconst extractor: Extractor = {\n  async extract(request) {\n    return {\n      query: request.query,\n      summary: 'No extraction sources wired yet.',\n      items: [],\n      links: [],\n      usedChars: 0,\n      truncated: false,\n    };\n  },\n};\n\nconst pipeline = createMemoryPipeline({ repository, intakePolicy, extractor });\n\nawait pipeline.ingest({\n  content: 'We decided to rebuild ReMEM around intake and extraction.',\n  topics: ['roadmap', 'memory'],\n  source: 'operator',\n});\n\nconst collectors: SmartRecallCollectors = {\n  async query(query) {\n    return { query, results: [], totalAvailable: 0, tookMs: 0 };\n  },\n  async graph(query) {\n    return { query, results: [], totalAvailable: 0, tookMs: 0, linksTraversed: 0 };\n  },\n  procedural() {\n    return [];\n  },\n  async recent() {\n    return [];\n  },\n  proceduralToQueryResult(match) {\n    return match.entry;\n  },\n};\n\nconst recall = await computeSmartRecallV2('What matters right now?', {\n  profile: 'agent-safe',\n  limit: 8,\n}, collectors);\n\nconst plan = planRecall({\n  query: 'What matters right now?',\n  profile: 'agent-safe',\n  topics: ['memory', 'roadmap'],\n  scope: {\n    namespace: ['tenant', 'memory'],\n    tenantId: 'tenant-core',\n    sessionId: 'session-1',\n  },\n});\n\nconst packet = buildBoundedContextPacket(\n  [\n    {\n      key: 'summary',\n      title: 'Summary',\n      body: 'ReMEM v2 keeps intake, recall, and context assembly as explicit seams.',\n      required: true,\n      priority: 10,\n    },\n    {\n      key: 'results',\n      title: 'Recall Results',\n      body: recall.results.map((item) => `- ${item.content}`).join('\\n'),\n      priority: 7,\n      metadata: { laneCount: recall.results.length },\n    },\n  ],\n  {\n    query: 'What matters right now?',\n    maxChars: 320,\n    includeSectionMetadata: true,\n  }\n);\n\nconsole.log(packet.text);\nconsole.log(plan.lanePlans);\n\nconst graphExpansion = expandGraphRecall(recall.results, recall.results, [], {\n  hops: 1,\n  limit: 4,\n  minScore: 0.2,\n});\n\nconsole.log(graphExpansion.paths);\n\nconst executed = await executeRecallPlan(plan, collectors);\nconsole.log(executed.packet.text);\n\nconst extracted = await executeExtractionRequest({\n  query: 'Summarize active memory',\n  profile: 'agent-safe',\n  scope: {\n    namespace: ['tenant', 'memory'],\n    tenantId: 'tenant-core',\n    sessionId: 'session-1',\n  },\n  includeMetadata: true,\n}, collectors);\n\nconsole.log(extracted.extraction.summary);\n```\n\n## What This Package Is\n\nThis package is the v2 engine seam, not the whole legacy surface.\n\nGood fit:\n\n- building a custom agent memory engine\n- implementing durable intake/extraction flows\n- running tenant- or session-aware recall and extraction work\n- swapping repositories without rewriting orchestration\n- treating graph recall as a first-class memory primitive\n\nNot the goal:\n\n- shipping setup wizards\n- bundling HTTP servers\n- carrying every legacy ReMEM concern forever\n\n## Status\n\n`0.2.0` is the current release cut.\n\nIt already gives you:\n\n- memory contracts\n- ingestion pipelines\n- recall planning\n- smart recall fusion\n- recall plan execution\n- scoped execution contracts\n- extraction execution over the same planner/runtime spine\n- bounded context packet assembly\n- graph expansion helpers\n- packed artifact verification\n\nNext up:\n\n- direct reuse as the engine under `@darksol/remem`\n\nBuilt with teeth.\n","readmeFilename":"README.md"}