{"_id":"@apeira/session","_rev":"3-0d72b62df16d07412bfa097356551280","name":"@apeira/session","dist-tags":{"latest":"0.0.8"},"versions":{"0.0.6":{"name":"@apeira/session","version":"0.0.6","keywords":["agent","ai","session"],"author":"Moeru AI","license":"MIT","_id":"@apeira/session@0.0.6","maintainers":[{"name":"kwaa","email":"kwa@kwaa.dev"}],"homepage":"https://github.com/moeru-ai/apeira","bugs":"https://github.com/moeru-ai/apeira/issues","dist":{"shasum":"7be47243f50c6765be5e3438f1822f808d6c3e31","tarball":"https://registry.npmjs.org/@apeira/session/-/session-0.0.6.tgz","fileCount":5,"integrity":"sha512-lfvN7L7J+ueL5maYzuD7AiE06ZMTAKXPCFgNqugfyTGlxMN+2vKg4pr4v4kJHlGcWhRhFfoxB/ZR/um060Qdhg==","signatures":[{"sig":"MEUCIGnMAJWylcqXrX1xMx11CHRVKBgjggPvMkkyYwRmpttiAiEA1UEur7S+xydskZl+LEnAySP02mo2joQoG7+vdsOlx9s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21527},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pkgroll"},"_npmUser":{"name":"kwaa","email":"kwa@kwaa.dev"},"repository":{"url":"git+https://github.com/moeru-ai/apeira.git","type":"git","directory":"packages/session"},"description":"Tree-shaped durable sessions for Apeira agents.","directories":{},"sideEffects":false,"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"devDependencies":{"@apeira/core":"0.0.6"},"peerDependencies":{"@apeira/core":"0.0.6"},"_npmOperationalInternal":{"tmp":"tmp/session_0.0.6_1781868805967_0.7833338149273916","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@apeira/session","version":"0.0.7","keywords":["agent","ai","session"],"author":"Moeru AI","license":"MIT","_id":"@apeira/session@0.0.7","maintainers":[{"name":"kwaa","email":"kwa@kwaa.dev"}],"homepage":"https://github.com/moeru-ai/apeira","bugs":"https://github.com/moeru-ai/apeira/issues","dist":{"shasum":"25311d1c3bfe1a9bf345ddfb2195e7baf0b36dda","tarball":"https://registry.npmjs.org/@apeira/session/-/session-0.0.7.tgz","fileCount":5,"integrity":"sha512-q81yEJDfXut0JotrRbwIQauYR+W9k52Ul/mECOfU49RZc9wUmbJ2Gcv5aj8D6iXxBdpNsfcszElVsA3Pu9NNMA==","signatures":[{"sig":"MEYCIQCvC9wMOasm81ouC6h2HnuaUxUq03ahIYGVG2s6cD439QIhANtn0uT6PDzafg3NnozrZrI0pGZXT3s2mL9qBcrbSJH4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apeira%2fsession@0.0.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":21527},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pkgroll"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d3045ab1-1c2c-4ac2-8a98-2c096a761afd"}},"repository":{"url":"git+https://github.com/moeru-ai/apeira.git","type":"git","directory":"packages/session"},"description":"Tree-shaped durable sessions for Apeira agents.","directories":{},"sideEffects":false,"_nodeVersion":"26.5.0","_hasShrinkwrap":false,"devDependencies":{"@apeira/core":"0.0.7"},"peerDependencies":{"@apeira/core":"0.0.7"},"_npmOperationalInternal":{"tmp":"tmp/session_0.0.7_1784024924905_0.2473461323373245","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@apeira/session","type":"module","version":"0.0.8","description":"Tree-shaped durable sessions for Apeira agents.","author":"Moeru AI","license":"MIT","homepage":"https://github.com/moeru-ai/apeira","repository":{"type":"git","url":"git+https://github.com/moeru-ai/apeira.git","directory":"packages/session"},"bugs":"https://github.com/moeru-ai/apeira/issues","keywords":["agent","ai","session"],"sideEffects":false,"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"peerDependencies":{"@apeira/core":"0.0.8"},"devDependencies":{"@apeira/core":"0.0.8"},"scripts":{"build":"pkgroll","test":"vitest run"},"main":"./dist/index.js","types":"./dist/index.d.ts","_nodeVersion":"26.7.0","_id":"@apeira/session@0.0.8","dist":{"integrity":"sha512-Ftp8PlpbPGGb1S+Y67LsZ6bguzg77iDSS6UZ8almoJ5Ds+PVmSeIzMzf1i2TqG0+3IKoZ542gXyL579dX2SGHg==","shasum":"b6490c6ed57af3ec5a8fa1062ac7b65c5a9e2fbc","tarball":"https://registry.npmjs.org/@apeira/session/-/session-0.0.8.tgz","fileCount":5,"unpackedSize":21527,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apeira%2fsession@0.0.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBv000WljUFO0fL75PK40RwIWVWZHZfvFDofKtE8dNs8AiEArC6GHq+/E8IEbYsBv4OmxHOtvzy9B8oZLUiO1aaVTCw="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d3045ab1-1c2c-4ac2-8a98-2c096a761afd"}},"directories":{},"maintainers":[{"name":"kwaa","email":"kwa@kwaa.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/session_0.0.8_1786204902659_0.18634461249407264"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-19T11:33:25.696Z","modified":"2026-08-08T16:01:43.151Z","0.0.6":"2026-06-19T11:33:26.159Z","0.0.7":"2026-07-14T10:28:45.037Z","0.0.8":"2026-08-08T16:01:42.804Z"},"bugs":"https://github.com/moeru-ai/apeira/issues","author":"Moeru AI","license":"MIT","homepage":"https://github.com/moeru-ai/apeira","keywords":["agent","ai","session"],"repository":{"type":"git","url":"git+https://github.com/moeru-ai/apeira.git","directory":"packages/session"},"description":"Tree-shaped durable sessions for Apeira agents.","maintainers":[{"name":"kwaa","email":"kwa@kwaa.dev"}],"readme":"# @apeira/session\n\nTree-shaped durable session history for Apeira agents.\n\n## Usage\n\n```ts\nimport { createAgent, mem } from '@apeira/core'\nimport { createSession } from '@apeira/session'\n\nconst session = createSession({\n  defaultRef: 'main',\n  sessionStorage: mem(),\n})\n\nconst agent = createAgent({\n  // ...\n  storage: session.storage,\n})\n```\n\n`session.sessionStorage` contains the complete append-only log.\n`session.storage` is the active branch view used by core.\n\n## Agent state synchronization\n\nRegister `session.plugin` with an agent to keep `agent.state` in sync with the\nactive branch whenever `checkout()`, `fork()` (with checkout), or `rebase()`\nchanges the current head:\n\n```ts\nconst agent = createAgent({\n  // ...\n  plugins: [session.plugin],\n  storage: session.storage,\n})\n```\n\nThe plugin also broadcasts branch changes on the agent channel as\n`session.checkout`, `session.fork`, and `session.rebase` events with\n`save: false`, so other subscribers can react without persisting extra entries.\n\n```ts\nagent.subscribe('session.checkout', ({ ref, state, targetId }) => {\n  // ...\n})\n```\n\n## Branches\n\n```ts\nawait session.fork('experiment')\nawait session.checkout('main')\nawait session.rebase('experiment', 'main')\n\nconst input = await session.buildInput('experiment')\nconst state = await session.buildState('experiment')\n```\n\nStrings resolve as refs first, then entry ids. `checkout()` without a target\ncreates a detached empty context.\n\n## Custom semantic entries\n\nEvery entry except lifecycle events and session control entries is a semantic\nbranch node. Plugin-defined entries receive `parentId`, advance the active\nbranch, and are preserved by path, rebase, and clone operations without\nsession-specific configuration.\n\nFor example, `@apeira/plugin-compact` works directly with session storage:\n\n```ts\nconst agent = createAgent({\n  // ...\n  plugins: [compact({ compactAgent: { runner: summaryRunner } })],\n  storage: session.storage,\n})\n```\n\nSession stores the compact entry as an ordinary semantic node. The plugin owns\nhow that entry is projected into model context.\n","readmeFilename":""}