{"_id":"@bernierllc/planning-session-core","_rev":"6-d026f67d3037e249ccb84bb5e277b29c","name":"@bernierllc/planning-session-core","dist-tags":{"latest":"1.3.0"},"versions":{"1.0.0":{"name":"@bernierllc/planning-session-core","version":"1.0.0","keywords":["planning","session","state-management","version-control","crash-recovery","state-machine","versioning","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/planning-session-core@1.0.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"c9a667d75dee030c80cfc8976b36c7158fd22a95","tarball":"https://registry.npmjs.org/@bernierllc/planning-session-core/-/planning-session-core-1.0.0.tgz","fileCount":46,"integrity":"sha512-WYChtrOa173ftHDTSuvik8jL7+EqX1ATL2Ju8IDkirPjagCcOgN1uvGVLasKlHKHCxlWPKDVbrARPHdKHU/1aQ==","signatures":[{"sig":"MEYCIQDCxREQLwbAmgFMdQVZFRTd0P7VLLY82tWPddn3w5D8YAIhAML0cPHqmle3zscdzIHSVPVYq26yBg1pQ7LHFn7sssXw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103119},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a6ea1e5b27d01dcc5ae707ecbf304507ab0fc8e2","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"bernierllc":{"integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.4.2","description":"Crash-resistant planning session state management with automatic version tracking for BernierLLC ecosystem","directories":{},"_nodeVersion":"24.4.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/planning-session-core_1.0.0_1761601240511_0.9580773178919906","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@bernierllc/planning-session-core","version":"1.0.2","keywords":["planning","session","state-management","version-control","crash-recovery","state-machine","versioning","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/planning-session-core@1.0.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"c6a365b05c1351cef30df6a966fdd65e34249e05","tarball":"https://registry.npmjs.org/@bernierllc/planning-session-core/-/planning-session-core-1.0.2.tgz","fileCount":46,"integrity":"sha512-cCzSSN5A5lVdsY7KwPMOelHclZdx64eYRfxtHAscPJosQTZSPfPSr/pw5lrhbeK7+l5LSgg2pJ8+dCfLDV2BAA==","signatures":[{"sig":"MEUCIQDD3rPP5TptFLy5x1FBHkZLeLV9pP66Lb1RfUMWhd3tpAIgYYYUKfNWTXhZtpic8dafM/n+jTlZIq0IQ+uJh8qCQQc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103260},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest --passWithNoTests","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:31bbc651-4c0a-48cb-8ec3-0694128ba13b"}},"bernierllc":{"integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Crash-resistant planning session state management with automatic version tracking for BernierLLC ecosystem","directories":{},"_nodeVersion":"20.19.6","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/planning-session-core_1.0.2_1767642320200_0.7158298940974888","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@bernierllc/planning-session-core","version":"1.0.3","keywords":["planning","session","state-management","version-control","crash-recovery","state-machine","versioning","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/planning-session-core@1.0.3","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"e08083a517f613797335880a9f634741619830b2","tarball":"https://registry.npmjs.org/@bernierllc/planning-session-core/-/planning-session-core-1.0.3.tgz","fileCount":46,"integrity":"sha512-EAHUNZ07uQB8C6ex/0kvxTvYgDnsTySo0pV5DMqcEgJEXlAdogcB41O0xf8PVU8VmUWqTkfdG4prGVGtAh+h6g==","signatures":[{"sig":"MEYCIQD4gAVjpqYdtMe8YgYS+HLOEde3yopN+fV0GPUVwWPRkwIhAN09v+kQo2ISHdCJ7243Pg28Lifb/+WpjRnqeJKUFigf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103202},"main":"dist/index.js","_from":"file:bernierllc-planning-session-core-1.0.3.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest --passWithNoTests","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:31bbc651-4c0a-48cb-8ec3-0694128ba13b"}},"_resolved":"/tmp/064dcf8a28ff5e7cebe99cd3fe7b4a3d/bernierllc-planning-session-core-1.0.3.tgz","_integrity":"sha512-EAHUNZ07uQB8C6ex/0kvxTvYgDnsTySo0pV5DMqcEgJEXlAdogcB41O0xf8PVU8VmUWqTkfdG4prGVGtAh+h6g==","bernierllc":{"integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.11.0","description":"Crash-resistant planning session state management with automatic version tracking for BernierLLC ecosystem","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/planning-session-core_1.0.3_1773078048529_0.26611529987169225","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@bernierllc/planning-session-core","version":"1.0.4","keywords":["planning","session","state-management","version-control","crash-recovery","state-machine","versioning","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/planning-session-core@1.0.4","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"125b0e38b654756512b9dc40dc0813fb0c88ab3c","tarball":"https://registry.npmjs.org/@bernierllc/planning-session-core/-/planning-session-core-1.0.4.tgz","fileCount":46,"integrity":"sha512-etY5YkDKarjUhy2BkDqiWy6fVpCWupkKzjveEDGyZsxh9n1RAunbHGzPR5dKassusiLnKS6QTo78mbYyJlSUjA==","signatures":[{"sig":"MEUCIBoclG/+jP1+RJe5a1TZ0DgLj2Oa4uJFTlZQ9LopPZThAiEA7vzWTIR66MOEzomYH/O1m7aIeoSeA6Cjonj5skhnmzc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103202},"main":"dist/index.js","_from":"file:bernierllc-planning-session-core-1.0.4.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest --passWithNoTests","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:31bbc651-4c0a-48cb-8ec3-0694128ba13b"}},"_resolved":"/tmp/ad18fab979e1042125f9e658dc98a0a9/bernierllc-planning-session-core-1.0.4.tgz","_integrity":"sha512-etY5YkDKarjUhy2BkDqiWy6fVpCWupkKzjveEDGyZsxh9n1RAunbHGzPR5dKassusiLnKS6QTo78mbYyJlSUjA==","bernierllc":{"integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.11.0","description":"Crash-resistant planning session state management with automatic version tracking for BernierLLC ecosystem","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/planning-session-core_1.0.4_1773081230242_0.01593346465557599","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bernierllc/planning-session-core","version":"1.2.0","keywords":["planning","session","state-management","version-control","crash-recovery","state-machine","versioning","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/planning-session-core@1.2.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"57ba5a6f1d38e736cf2a0753d0b5751e875d22f6","tarball":"https://registry.npmjs.org/@bernierllc/planning-session-core/-/planning-session-core-1.2.0.tgz","fileCount":50,"integrity":"sha512-Ya6afDZ1DgUVys4jZj7VMqvc4guJZvuHTFSqt83Ekj2PyQlu3YMfLuXhPFhUfHQKHsHlwWfXp8vVLvTCaYw0tQ==","signatures":[{"sig":"MEUCICoBmvDiBEQDiJwGIta3vJn7eYCKYDftlzUkpCJxmTUAAiEAjCDaeI1dhE04j2pH8x0XpS/mCHKJ7xpXRYgqMYj4p7I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106066},"main":"dist/index.js","_from":"file:bernierllc-planning-session-core-1.2.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest --passWithNoTests","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:31bbc651-4c0a-48cb-8ec3-0694128ba13b"}},"_resolved":"/home/runner/work/tools/tools/packages/core/planning-session-core/bernierllc-planning-session-core-1.2.0.tgz","_integrity":"sha512-Ya6afDZ1DgUVys4jZj7VMqvc4guJZvuHTFSqt83Ekj2PyQlu3YMfLuXhPFhUfHQKHsHlwWfXp8vVLvTCaYw0tQ==","bernierllc":{"integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.14.1","description":"Crash-resistant planning session state management with automatic version tracking for BernierLLC ecosystem","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/planning-session-core_1.2.0_1779241332822_0.8056031310984373","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@bernierllc/planning-session-core","version":"1.3.0","description":"Crash-resistant planning session state management with automatic version tracking for BernierLLC ecosystem","main":"dist/index.js","types":"dist/index.d.ts","keywords":["planning","session","state-management","version-control","crash-recovery","state-machine","versioning","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bernier-llc/tools.git"},"devDependencies":{"@types/jest":"^29.5.14","@types/node":"^20.0.0","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","eslint":"^8.0.0","jest":"^29.5.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.0.0"},"engines":{"node":">=18.0.0"},"bernierllc":{"integration":{"neverhub":"optional"}},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"scripts":{"build":"tsc","dev":"tsc --watch","test":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage","test:run":"jest --passWithNoTests","lint":"eslint src/**/*.ts","clean":"rimraf dist"},"_id":"@bernierllc/planning-session-core@1.3.0","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"homepage":"https://github.com/bernier-llc/tools#readme","_integrity":"sha512-Q6Ig3+hwJA+Qhrqdn/1qHjqbXdEnnSHXSi1dyXw7lHxVP6PVXXZbUrDDN4EGlF8vucHIWlWbTMISLiaW4eY4gQ==","_resolved":"/home/runner/work/tools/tools/packages/core/planning-session-core/bernierllc-planning-session-core-1.3.0.tgz","_from":"file:bernierllc-planning-session-core-1.3.0.tgz","_nodeVersion":"20.20.2","_npmVersion":"11.14.1","dist":{"integrity":"sha512-Q6Ig3+hwJA+Qhrqdn/1qHjqbXdEnnSHXSi1dyXw7lHxVP6PVXXZbUrDDN4EGlF8vucHIWlWbTMISLiaW4eY4gQ==","shasum":"e72edea2f96524054dde74f253d569d15bc9ef90","tarball":"https://registry.npmjs.org/@bernierllc/planning-session-core/-/planning-session-core-1.3.0.tgz","fileCount":50,"unpackedSize":106066,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCw7E/Hh+LjCKYl4DsQvCVKC3R2gqpYnxWuWujB4pMDDwIhAMB0trJkaXnkJICb1K+5Boh2BcbhRG8oNuqE01fx8hUu"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:31bbc651-4c0a-48cb-8ec3-0694128ba13b"}},"directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/planning-session-core_1.3.0_1779250083279_0.8992690678202142"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-27T21:40:40.294Z","modified":"2026-05-20T04:08:03.559Z","1.0.0":"2025-10-27T21:40:40.717Z","1.0.2":"2026-01-05T19:45:20.332Z","1.0.3":"2026-03-09T17:40:48.671Z","1.0.4":"2026-03-09T18:33:50.380Z","1.2.0":"2026-05-20T01:42:12.962Z","1.3.0":"2026-05-20T04:08:03.416Z"},"bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"author":{"name":"Bernier LLC"},"license":"MIT","homepage":"https://github.com/bernier-llc/tools#readme","keywords":["planning","session","state-management","version-control","crash-recovery","state-machine","versioning","bernierllc"],"repository":{"type":"git","url":"git+https://github.com/bernier-llc/tools.git"},"description":"Crash-resistant planning session state management with automatic version tracking for BernierLLC ecosystem","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/planning-session-core\n\nCrash-resistant planning session state management with automatic version tracking for BernierLLC ecosystem.\n\n## Installation\n\n```bash\nnpm install @bernierllc/planning-session-core\n```\n\n## Features\n\n- **Crash-resistant session management** - Automatic version tracking with recovery utilities\n- **State machine validation** - Type-safe status transitions (active → paused → converted → archived)\n- **Automatic versioning** - Content changes create new versions automatically\n- **Repository context tracking** - Link sessions to git repositories and local paths\n- **Conversion tracking** - Track conversion from planning sessions to projects and work items\n- **Query and filtering** - Flexible session discovery by status, repository, project, and dates\n- **Statistics** - Real-time session analytics and metrics\n\n## Quick Start\n\n```typescript\nimport { PlanningSessionManager } from '@bernierllc/planning-session-core';\nimport { InMemorySessionStorage, InMemoryVersionStorage } from './storage';\n\n// Create manager with storage implementations\nconst manager = new PlanningSessionManager(\n  sessionStorage,\n  versionStorage,\n  {\n    auto_version: true, // Auto-create versions on content changes\n    logger: console // Optional logger for debugging\n  }\n);\n\n// Create a new planning session\nconst result = await manager.create({\n  title: 'Authentication System Planning',\n  description: 'Design OAuth2 implementation',\n  repository_path: '/projects/auth-service',\n  initial_content: '# Auth System\\n\\n## Requirements\\n...'\n});\n\nif (result.success) {\n  console.log('Created session:', result.data.id);\n}\n```\n\n## Core Concepts\n\n### Planning Sessions\n\nA planning session represents a planning/design document with version history:\n\n- **Identity**: Unique ID, title, description\n- **Repository Context**: Git URL, local path, working directory\n- **Status**: Active, paused, converted, or archived\n- **Content**: Current markdown content with version number\n- **Conversion Tracking**: Links to projects and work items created from session\n- **Metadata**: Extensible custom metadata storage\n\n### Status Management (State Machine)\n\n```\nactive ──┬──> paused ──> active (can resume)\n         ├──> converted ──> archived (one-way)\n         └──> archived (terminal state)\n```\n\n- **active**: Currently being worked on\n- **paused**: Temporarily stopped (can resume)\n- **converted**: Converted to project/work items (read-only)\n- **archived**: Permanently archived (no transitions)\n\n### Automatic Versioning\n\nEvery content change creates a new version:\n- Version 1: Initial content\n- Version 2: After first update\n- Version 3: After second update\n\nVersions include:\n- Full content snapshot\n- Change summary (optional)\n- Changed fields tracking\n- Creation timestamp and author\n\n## API Reference\n\n### Creating Sessions\n\n```typescript\nconst result = await manager.create({\n  title: 'E-commerce Platform Planning',\n  description: 'Design shopping cart and checkout flow',\n  repository_path: '/projects/ecommerce',\n  repository_url: 'https://github.com/company/ecommerce',\n  initial_content: '# Shopping Cart\\n\\n## Requirements',\n  created_by: 'agent:planning-assistant',\n  metadata: { priority: 'high' }\n});\n```\n\n### Updating Sessions\n\n```typescript\n// Update creates new version automatically\nconst updateResult = await manager.update(sessionId, {\n  content: updatedMarkdownContent,\n  change_summary: 'Added payment processing requirements',\n  updated_by: 'agent:planning-assistant'\n});\n\n// Check current version\nconsole.log('New version:', updateResult.data.current_version);\n```\n\n### Status Management\n\n```typescript\n// Pause session\nawait manager.pause(sessionId, 'Waiting for stakeholder feedback');\n\n// Resume session\nawait manager.resume(sessionId);\n\n// Convert session to work items\nawait manager.markConverted(sessionId, {\n  project_id: 'project-123',\n  work_item_ids: ['wi-1', 'wi-2', 'wi-3'],\n  converted_by: 'agent:work-item-creator'\n});\n\n// Archive session\nawait manager.archive(sessionId);\n```\n\n### Version History\n\n```typescript\n// Get all versions\nconst versions = await manager.getVersions(sessionId);\nfor (const version of versions.data) {\n  console.log(`v${version.version_number}: ${version.change_summary}`);\n}\n\n// Compare versions\nconst diff = await manager.compareVersions(sessionId, 1, 3);\nconsole.log(`Lines added: ${diff.data.lines_added}`);\nconsole.log(`Lines removed: ${diff.data.lines_removed}`);\n\n// Restore to previous version\nawait manager.restoreVersion(sessionId, 2, 'user:john');\n```\n\n### Querying Sessions\n\n```typescript\n// Get active sessions\nconst active = await manager.findActive();\n\n// Find sessions by repository\nconst repoSessions = await manager.findByRepository('/projects/auth-service');\n\n// Query with filters\nconst filtered = await manager.list({\n  status: ['active', 'paused'],\n  created_after: new Date('2025-01-01'),\n  has_content: true,\n  repository_path: '/projects/app'\n});\n```\n\n### Crash Recovery\n\n```typescript\nimport { SessionRecovery } from '@bernierllc/planning-session-core';\n\n// Find stale sessions (inactive for 24+ hours)\nconst stale = await SessionRecovery.findStale(storage);\n\nconsole.log(`Found ${stale.stale_sessions.length} stale sessions`);\n\nfor (const session of stale.stale_sessions) {\n  const action = stale.recommendations[session.id];\n  console.log(`Session ${session.id}: recommend ${action}`);\n\n  if (action === 'pause') {\n    await manager.pause(session.id, 'Auto-paused: inactive for 24+ hours');\n  } else if (action === 'archive') {\n    await manager.archive(session.id);\n  }\n}\n\n// Restore from history\nconst restored = await SessionRecovery.restoreFromHistory(sessionId, manager);\n```\n\n### Statistics\n\n```typescript\nconst stats = await manager.getStatistics();\n\nconsole.log(`Total sessions: ${stats.data.total_sessions}`);\nconsole.log(`Active: ${stats.data.active_sessions}`);\nconsole.log(`Paused: ${stats.data.paused_sessions}`);\nconsole.log(`Converted: ${stats.data.converted_sessions}`);\nconsole.log(`Average versions per session: ${stats.data.average_versions_per_session}`);\n```\n\n## Storage Implementation\n\nThis package provides storage interfaces that you must implement:\n\n```typescript\nimport { PrismaClient } from '@prisma/client';\nimport { PlanningSessionStorage, PlanningSession, SessionFilters } from '@bernierllc/planning-session-core';\n\nclass PrismaSessionStorage implements PlanningSessionStorage {\n  constructor(private prisma: PrismaClient) {}\n\n  async save(session: PlanningSession): Promise<void> {\n    await this.prisma.planningSession.upsert({\n      where: { id: session.id },\n      create: session,\n      update: session\n    });\n  }\n\n  async get(id: string): Promise<PlanningSession | null> {\n    return await this.prisma.planningSession.findUnique({\n      where: { id }\n    });\n  }\n\n  async query(filters: SessionFilters): Promise<PlanningSession[]> {\n    return await this.prisma.planningSession.findMany({\n      where: {\n        status: Array.isArray(filters.status)\n          ? { in: filters.status }\n          : filters.status,\n        // ... other filters\n      }\n    });\n  }\n\n  async delete(id: string): Promise<void> {\n    await this.prisma.planningSession.delete({ where: { id } });\n  }\n}\n```\n\nSee the design spec at `plans/packages/core/planning-session-core.md` for complete storage implementation examples.\n\n## Integration Status\n\n- **Logger**: Integrated (optional) - Pass logger in options for operation logging\n- **Docs-Suite**: Ready - Complete TypeDoc API documentation\n- **NeverHub**: Optional - Publish session events, subscribe to work item completion\n\n## License\n\nCopyright (c) 2025 Bernier LLC. All rights reserved.\n\n## See Also\n\n- [@bernierllc/work-item-core](../work-item-core) - Work item management (receives converted sessions)\n- [@bernierllc/version-store](../version-store) - Future unified version management\n- [@bernierllc/validators-core](../validators-core) - Input validation utilities\n","readmeFilename":"README.md"}