{"_id":"@robota-sdk/agent-session","_rev":"37-d425d613f8bb7ffda6f46e273310e249","name":"@robota-sdk/agent-session","dist-tags":{"latest":"3.0.0-beta.84"},"versions":{"3.0.0-beta.64":{"name":"@robota-sdk/agent-session","version":"3.0.0-beta.64","keywords":["ai","agent","llm","session-management","multi-session","chat-management","chat-switching","conversation-history","session-lifecycle","memory-optimization","configuration-management","runtime-configuration","typescript","robota","sdk","openai","anthropic","google-ai","ai-integration"],"author":{"name":"Robota SDK Team"},"license":"MIT","_id":"@robota-sdk/agent-session@3.0.0-beta.64","maintainers":[{"name":"jungyoun","email":"jungyoun@gmail.com"}],"homepage":"https://robota.io/","bugs":{"url":"https://github.com/woojubb/robota/issues"},"dist":{"shasum":"40aac71d7d5461f160dad03e07f6bc041a2c485b","tarball":"https://registry.npmjs.org/@robota-sdk/agent-session/-/agent-session-3.0.0-beta.64.tgz","fileCount":9,"integrity":"sha512-/AOA5rmSdjjunjS6UEeQU3Aq5KoPcwzxtXcBQTAd2KmbMAi8FH149d0id3AUHBofGqEvspLGmgLDqM08e4k9iQ==","signatures":[{"sig":"MEYCIQC/9ISGlvtxy4AIR8fPa2gzXC9r+itvIzGEw3aeew7gawIhALjV3iNIHypPyPx17SLIJfugiDRanm93BqYw/iu/p8tX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":209688},"main":"dist/node/index.js","type":"module","_from":"file:robota-sdk-agent-session-3.0.0-beta.64.tgz","types":"dist/node/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"node":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","source":"./src/index.ts","default":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run --passWithNoTests","build":"tsdown","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","build:js":"tsdown --no-dts","lint:fix":"eslint src --ext .ts,.tsx --fix","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","build:check":"pnpm run typecheck && pnpm run build","build:types":"tsdown --dts","test:coverage":"vitest run --coverage","scenario:record":"node ../../scripts/harness/record-owner-scenario.mjs --scope packages/agent-session --output examples/scenarios/offline-verify.record.json -- pnpm scenario:verify","scenario:verify":"pnpm --filter @robota-sdk/agent-core build && pnpm exec tsx examples/verify-offline.ts"},"_npmUser":{"name":"jungyoun","email":"jungyoun@gmail.com"},"_resolved":"/private/var/folders/78/9lnqy12x2bn8x5c17zmvrsnr0000gn/T/5e71fa0dc87caf848c0b8a939a5b0a38/robota-sdk-agent-session-3.0.0-beta.64.tgz","_integrity":"sha512-/AOA5rmSdjjunjS6UEeQU3Aq5KoPcwzxtXcBQTAd2KmbMAi8FH149d0id3AUHBofGqEvspLGmgLDqM08e4k9iQ==","repository":{"url":"git+https://github.com/woojubb/robota.git","type":"git","directory":"packages/agent-session"},"_npmVersion":"11.6.2","description":"Session and chat management for Robota SDK - multi-session support with independent workspaces","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@robota-sdk/agent-core":"3.0.0-beta.64"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rimraf":"^5.0.5","tsdown":"^0.22.0","vitest":"^1.6.1","typescript":"^5.3.3","@robota-sdk/agent-core":"3.0.0-beta.64"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/agent-session_3.0.0-beta.64_1778946598371_0.42617603211651134","host":"s3://npm-registry-packages-npm-production"}},"3.0.0-beta.65":{"name":"@robota-sdk/agent-session","version":"3.0.0-beta.65","keywords":["ai","agent","llm","session-management","multi-session","chat-management","chat-switching","conversation-history","session-lifecycle","memory-optimization","configuration-management","runtime-configuration","typescript","robota","sdk","openai","anthropic","google-ai","ai-integration"],"author":{"name":"Robota SDK Team"},"license":"MIT","_id":"@robota-sdk/agent-session@3.0.0-beta.65","maintainers":[{"name":"jungyoun","email":"jungyoun@gmail.com"}],"homepage":"https://robota.io/","bugs":{"url":"https://github.com/woojubb/robota/issues"},"dist":{"shasum":"002f8fdf15bd7589ca8df3fd3c7f83c031f202a5","tarball":"https://registry.npmjs.org/@robota-sdk/agent-session/-/agent-session-3.0.0-beta.65.tgz","fileCount":9,"integrity":"sha512-17Vi0/4QJEkqvABiYt0ad+tnnCwSNoBvLuB3XWEz/nAU3kE0BSYcGikkwd8BZjiHeQ/WgrIsoDfURmHP1heXxA==","signatures":[{"sig":"MEYCIQCRTfqL2xLvzZ9YS18cCo0yYKq/U6+NcpQZI6Ce9mavSwIhAJ++RyvdLkdJKsK3dJEVrW4vEeI230RMV0KnrCXyrJ7o","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":209765},"main":"dist/node/index.js","type":"module","_from":"file:robota-sdk-agent-session-3.0.0-beta.65.tgz","types":"dist/node/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"node":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","source":"./src/index.ts","default":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run --passWithNoTests","build":"tsdown","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","build:js":"tsdown --no-dts","lint:fix":"eslint src --ext .ts,.tsx --fix","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","build:check":"pnpm run typecheck && pnpm run build","build:types":"tsdown --dts","test:coverage":"vitest run --coverage","scenario:record":"node ../../scripts/harness/record-owner-scenario.mjs --scope packages/agent-session --output examples/scenarios/offline-verify.record.json -- pnpm scenario:verify","scenario:verify":"pnpm --filter @robota-sdk/agent-core build && pnpm exec tsx examples/verify-offline.ts"},"_npmUser":{"name":"jungyoun","email":"jungyoun@gmail.com"},"_resolved":"/private/var/folders/78/9lnqy12x2bn8x5c17zmvrsnr0000gn/T/51106501733b20be6e83eb85c4b5c3e0/robota-sdk-agent-session-3.0.0-beta.65.tgz","_integrity":"sha512-17Vi0/4QJEkqvABiYt0ad+tnnCwSNoBvLuB3XWEz/nAU3kE0BSYcGikkwd8BZjiHeQ/WgrIsoDfURmHP1heXxA==","repository":{"url":"git+https://github.com/woojubb/robota.git","type":"git","directory":"packages/agent-session"},"_npmVersion":"11.6.2","description":"Session and chat management for Robota SDK - multi-session support with independent workspaces","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@robota-sdk/agent-core":"3.0.0-beta.65"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rimraf":"^5.0.5","tsdown":"^0.22.0","vitest":"^1.6.1","typescript":"^5.3.3","@robota-sdk/agent-core":"3.0.0-beta.65"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/agent-session_3.0.0-beta.65_1778952442466_0.2702138518080077","host":"s3://npm-registry-packages-npm-production"}},"3.0.0-beta.66":{"name":"@robota-sdk/agent-session","version":"3.0.0-beta.66","keywords":["ai","agent","llm","session-management","multi-session","chat-management","chat-switching","conversation-history","session-lifecycle","memory-optimization","configuration-management","runtime-configuration","typescript","robota","sdk","openai","anthropic","google-ai","ai-integration"],"author":{"name":"Robota SDK Team"},"license":"MIT","_id":"@robota-sdk/agent-session@3.0.0-beta.66","maintainers":[{"name":"jungyoun","email":"jungyoun@gmail.com"}],"homepage":"https://robota.io/","bugs":{"url":"https://github.com/woojubb/robota/issues"},"dist":{"shasum":"5c3d6fd5800dd70512872ed59d2aea277c6b5b6d","tarball":"https://registry.npmjs.org/@robota-sdk/agent-session/-/agent-session-3.0.0-beta.66.tgz","fileCount":9,"integrity":"sha512-aR9SKtZ6KBwbRh3kpRFMSvejWy5H/mjTNyE0J5+0JUTgjWFRWxrP95EUWXWqvytyXfPEIZlNGTkw+2LltTTiiw==","signatures":[{"sig":"MEQCIEZ68pqP0ajK9PsyLVn2fb2vyjLMf3S2YF7DfPpF3pNUAiA7uWneOeG/acWvBt9N0hp5kwHRwvTuej1PPvhVcnWvcQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":210083},"main":"dist/node/index.js","type":"module","_from":"file:robota-sdk-agent-session-3.0.0-beta.66.tgz","types":"dist/node/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"node":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","source":"./src/index.ts","default":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run --passWithNoTests","build":"tsdown","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","build:js":"tsdown --no-dts","lint:fix":"eslint src --ext .ts,.tsx --fix","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","build:check":"pnpm run typecheck && pnpm run build","build:types":"tsdown --dts","test:coverage":"vitest run --coverage","scenario:record":"node ../../scripts/harness/record-owner-scenario.mjs --scope packages/agent-session --output examples/scenarios/offline-verify.record.json -- pnpm scenario:verify","scenario:verify":"pnpm --filter @robota-sdk/agent-core build && pnpm exec tsx examples/verify-offline.ts"},"_npmUser":{"name":"jungyoun","email":"jungyoun@gmail.com"},"_resolved":"/private/var/folders/78/9lnqy12x2bn8x5c17zmvrsnr0000gn/T/ac03de23b6d0d439504ad7574bbffd53/robota-sdk-agent-session-3.0.0-beta.66.tgz","_integrity":"sha512-aR9SKtZ6KBwbRh3kpRFMSvejWy5H/mjTNyE0J5+0JUTgjWFRWxrP95EUWXWqvytyXfPEIZlNGTkw+2LltTTiiw==","repository":{"url":"git+https://github.com/woojubb/robota.git","type":"git","directory":"packages/agent-session"},"_npmVersion":"11.6.2","description":"Session and chat management for Robota SDK - multi-session support with independent workspaces","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@robota-sdk/agent-core":"3.0.0-beta.66"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rimraf":"^5.0.5","tsdown":"^0.22.0","vitest":"^1.6.1","typescript":"^5.3.3","@robota-sdk/agent-core":"3.0.0-beta.66"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/agent-session_3.0.0-beta.66_1779018457744_0.0669113750963759","host":"s3://npm-registry-packages-npm-production"}},"3.0.0-beta.67":{"name":"@robota-sdk/agent-session","version":"3.0.0-beta.67","keywords":["ai","agent","llm","session-management","multi-session","chat-management","chat-switching","conversation-history","session-lifecycle","memory-optimization","configuration-management","runtime-configuration","typescript","robota","sdk","openai","anthropic","google-ai","ai-integration"],"author":{"name":"Robota SDK Team"},"license":"MIT","_id":"@robota-sdk/agent-session@3.0.0-beta.67","maintainers":[{"name":"jungyoun","email":"jungyoun@gmail.com"}],"homepage":"https://robota.io/","bugs":{"url":"https://github.com/woojubb/robota/issues"},"dist":{"shasum":"2f96f57d99f7c8da54b34167697a7d287f3ba2f0","tarball":"https://registry.npmjs.org/@robota-sdk/agent-session/-/agent-session-3.0.0-beta.67.tgz","fileCount":9,"integrity":"sha512-2nDiPXWAsn03j1F7CZoQANj5tu/QHoNNy/vUJRkfp7VZ/j3pPzAB2FK4jSc/V3DQQTpGegG078kxr0cup6XeZg==","signatures":[{"sig":"MEYCIQD3DCfEdcdyBSxZ6ZP9g72MdtrZGyrvHkXSZDRKrO3wwAIhAPsK2nic4RszHmZqOgXgB2hzxbcvh/iN31WWxPrgKQmI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":210160},"main":"dist/node/index.js","type":"module","_from":"file:robota-sdk-agent-session-3.0.0-beta.67.tgz","types":"dist/node/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"node":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","source":"./src/index.ts","default":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run --passWithNoTests","build":"tsdown","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","build:js":"tsdown --no-dts","lint:fix":"eslint src --ext .ts,.tsx --fix","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","build:check":"pnpm run typecheck && pnpm run build","build:types":"tsdown --dts","test:coverage":"vitest run --coverage","scenario:record":"node ../../scripts/harness/record-owner-scenario.mjs --scope packages/agent-session --output examples/scenarios/offline-verify.record.json -- pnpm scenario:verify","scenario:verify":"pnpm --filter @robota-sdk/agent-core build && pnpm exec tsx examples/verify-offline.ts"},"_npmUser":{"name":"jungyoun","email":"jungyoun@gmail.com"},"_resolved":"/private/var/folders/78/9lnqy12x2bn8x5c17zmvrsnr0000gn/T/877283e185773444caa2ca6d2f2982e6/robota-sdk-agent-session-3.0.0-beta.67.tgz","_integrity":"sha512-2nDiPXWAsn03j1F7CZoQANj5tu/QHoNNy/vUJRkfp7VZ/j3pPzAB2FK4jSc/V3DQQTpGegG078kxr0cup6XeZg==","repository":{"url":"git+https://github.com/woojubb/robota.git","type":"git","directory":"packages/agent-session"},"_npmVersion":"11.6.2","description":"Session and chat management for Robota SDK - multi-session support with independent workspaces","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@robota-sdk/agent-core":"3.0.0-beta.67"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rimraf":"^5.0.5","tsdown":"^0.22.0","vitest":"^1.6.1","typescript":"^5.3.3","@robota-sdk/agent-core":"3.0.0-beta.67"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/agent-session_3.0.0-beta.67_1779038609906_0.8410895856483476","host":"s3://npm-registry-packages-npm-production"}},"3.0.0-beta.68":{"name":"@robota-sdk/agent-session","version":"3.0.0-beta.68","keywords":["ai","agent","llm","session-management","multi-session","chat-management","chat-switching","conversation-history","session-lifecycle","memory-optimization","configuration-management","runtime-configuration","typescript","robota","sdk","openai","anthropic","google-ai","ai-integration"],"author":{"name":"Robota SDK Team"},"license":"MIT","_id":"@robota-sdk/agent-session@3.0.0-beta.68","maintainers":[{"name":"jungyoun","email":"jungyoun@gmail.com"}],"homepage":"https://robota.io/","bugs":{"url":"https://github.com/woojubb/robota/issues"},"dist":{"shasum":"c0e3ece52551b75d95dc52bb6cadcaa43fd362af","tarball":"https://registry.npmjs.org/@robota-sdk/agent-session/-/agent-session-3.0.0-beta.68.tgz","fileCount":9,"integrity":"sha512-xBDh3trMb8aO5xU9M0lFZMCBKeWPBak2s2KaXQEdj+6JV9kMYWs1STrHpsJEVHMbcC6FnONzv4iD9UMxmbSl/g==","signatures":[{"sig":"MEUCIQCJbczG6flmCC6Z4kfJvBVXCwgsSI8katHWdjZSXRMUGgIgDGRGTnXlNGRyHNY17DOByqnKvo1v/fah2F2ttKby6UM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":217529},"main":"dist/node/index.js","type":"module","_from":"file:robota-sdk-agent-session-3.0.0-beta.68.tgz","types":"dist/node/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"node":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","source":"./src/index.ts","default":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run --passWithNoTests","build":"tsdown","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","build:js":"tsdown --no-dts","lint:fix":"eslint src --ext .ts,.tsx --fix","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","build:check":"pnpm run typecheck && pnpm run build","build:types":"tsdown --dts","test:coverage":"vitest run --coverage","scenario:record":"node ../../scripts/harness/record-owner-scenario.mjs --scope packages/agent-session --output examples/scenarios/offline-verify.record.json -- pnpm scenario:verify","scenario:verify":"pnpm --filter @robota-sdk/agent-core build && pnpm exec tsx examples/verify-offline.ts"},"_npmUser":{"name":"jungyoun","email":"jungyoun@gmail.com"},"_resolved":"/private/var/folders/78/9lnqy12x2bn8x5c17zmvrsnr0000gn/T/482466e2bd0042dbbf556c1a57a1037f/robota-sdk-agent-session-3.0.0-beta.68.tgz","_integrity":"sha512-xBDh3trMb8aO5xU9M0lFZMCBKeWPBak2s2KaXQEdj+6JV9kMYWs1STrHpsJEVHMbcC6FnONzv4iD9UMxmbSl/g==","repository":{"url":"git+https://github.com/woojubb/robota.git","type":"git","directory":"packages/agent-session"},"_npmVersion":"11.6.2","description":"Session and chat management for Robota SDK - multi-session support with independent workspaces","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@robota-sdk/agent-core":"3.0.0-beta.68"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rimraf":"^5.0.5","tsdown":"^0.22.0","vitest":"^1.6.1","typescript":"^5.3.3","@robota-sdk/agent-core":"3.0.0-beta.68"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/agent-session_3.0.0-beta.68_1779721684888_0.848916773337449","host":"s3://npm-registry-packages-npm-production"}},"3.0.0-beta.69":{"name":"@robota-sdk/agent-session","version":"3.0.0-beta.69","keywords":["ai","agent","llm","session-management","multi-session","chat-management","chat-switching","conversation-history","session-lifecycle","memory-optimization","configuration-management","runtime-configuration","typescript","robota","sdk","openai","anthropic","google-ai","ai-integration"],"author":{"name":"Robota SDK Team"},"license":"MIT","_id":"@robota-sdk/agent-session@3.0.0-beta.69","maintainers":[{"name":"jungyoun","email":"jungyoun@gmail.com"}],"homepage":"https://robota.io/","bugs":{"url":"https://github.com/woojubb/robota/issues"},"dist":{"shasum":"4cb39631fb92731470fdee758059106f5207ec54","tarball":"https://registry.npmjs.org/@robota-sdk/agent-session/-/agent-session-3.0.0-beta.69.tgz","fileCount":9,"integrity":"sha512-A7vVi5SSRMLCHCOcDbEmiWxAY9X6ZF3W0lDfGI/ZcoJn0mbHmJUDbwR3i7u8g3UGRgfYy/dQ/uVWCsHVMKqTrg==","signatures":[{"sig":"MEYCIQC0opytPH1scwXwVXvFFf9X+Kw0AfVUiPQ0g+m0HPw7YgIhAIHMF39qtSAs4vaTo/AnZPV9NZhY0f6sdZ9bSxdRNDjh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":217606},"main":"dist/node/index.js","type":"module","_from":"file:robota-sdk-agent-session-3.0.0-beta.69.tgz","types":"dist/node/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"node":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","source":"./src/index.ts","default":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run --passWithNoTests","build":"tsdown","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","build:js":"tsdown --no-dts","lint:fix":"eslint src --ext .ts,.tsx --fix","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","build:check":"pnpm run typecheck && pnpm run build","build:types":"tsdown --dts","test:coverage":"vitest run --coverage","scenario:record":"node ../../scripts/harness/record-owner-scenario.mjs --scope packages/agent-session --output examples/scenarios/offline-verify.record.json -- pnpm scenario:verify","scenario:verify":"pnpm --filter @robota-sdk/agent-core build && pnpm exec tsx examples/verify-offline.ts"},"_npmUser":{"name":"jungyoun","email":"jungyoun@gmail.com"},"_resolved":"/private/var/folders/78/9lnqy12x2bn8x5c17zmvrsnr0000gn/T/9b3f2435eb6c01cc918cee264a09858e/robota-sdk-agent-session-3.0.0-beta.69.tgz","_integrity":"sha512-A7vVi5SSRMLCHCOcDbEmiWxAY9X6ZF3W0lDfGI/ZcoJn0mbHmJUDbwR3i7u8g3UGRgfYy/dQ/uVWCsHVMKqTrg==","repository":{"url":"git+https://github.com/woojubb/robota.git","type":"git","directory":"packages/agent-session"},"_npmVersion":"11.6.2","description":"Session and chat management for Robota SDK - multi-session support with independent workspaces","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@robota-sdk/agent-core":"3.0.0-beta.69"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rimraf":"^5.0.5","tsdown":"^0.22.0","vitest":"^1.6.1","typescript":"^5.3.3","@robota-sdk/agent-core":"3.0.0-beta.69"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/agent-session_3.0.0-beta.69_1779728061385_0.18342951351681114","host":"s3://npm-registry-packages-npm-production"}},"3.0.0-beta.70":{"name":"@robota-sdk/agent-session","version":"3.0.0-beta.70","keywords":["ai","agent","llm","session-management","multi-session","chat-management","chat-switching","conversation-history","session-lifecycle","memory-optimization","configuration-management","runtime-configuration","typescript","robota","sdk","openai","anthropic","google-ai","ai-integration"],"author":{"name":"Robota SDK Team"},"license":"MIT","_id":"@robota-sdk/agent-session@3.0.0-beta.70","maintainers":[{"name":"jungyoun","email":"jungyoun@gmail.com"}],"homepage":"https://robota.io/","bugs":{"url":"https://github.com/woojubb/robota/issues"},"dist":{"shasum":"d0a92a3b8f93b0f10501ab63af1d4d5aa2eaf2ce","tarball":"https://registry.npmjs.org/@robota-sdk/agent-session/-/agent-session-3.0.0-beta.70.tgz","fileCount":9,"integrity":"sha512-kirWpHtBy6hUq1CgEP+5Pz9F9NKf8ny320qSRPeO2pMy/mfS0AI/RYTy/nV1Dtr8Zi3lXw3FYXA2Mf3vUEi8dA==","signatures":[{"sig":"MEQCIAT4p0bPHL7WWkLLqq1jk5qYAU3nSjS5h1SIpyplcUmWAiBTt6L+B+nsQyQ6fdxWDT5Kq0IyxFjPQSPga1pl0b9woQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":217683},"main":"dist/node/index.js","type":"module","_from":"file:robota-sdk-agent-session-3.0.0-beta.70.tgz","types":"dist/node/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"node":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","source":"./src/index.ts","default":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run --passWithNoTests","build":"tsdown","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","build:js":"tsdown --no-dts","lint:fix":"eslint src --ext .ts,.tsx --fix","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","build:check":"pnpm run typecheck && pnpm run build","build:types":"tsdown --dts","test:coverage":"vitest run --coverage","scenario:record":"node ../../scripts/harness/record-owner-scenario.mjs --scope packages/agent-session --output examples/scenarios/offline-verify.record.json -- pnpm scenario:verify","scenario:verify":"pnpm --filter @robota-sdk/agent-core build && pnpm exec tsx examples/verify-offline.ts"},"_npmUser":{"name":"jungyoun","email":"jungyoun@gmail.com"},"_resolved":"/private/tmp/claude-501/a2c6170bc41eba316d7d1a876bae5673/robota-sdk-agent-session-3.0.0-beta.70.tgz","_integrity":"sha512-kirWpHtBy6hUq1CgEP+5Pz9F9NKf8ny320qSRPeO2pMy/mfS0AI/RYTy/nV1Dtr8Zi3lXw3FYXA2Mf3vUEi8dA==","repository":{"url":"git+https://github.com/woojubb/robota.git","type":"git","directory":"packages/agent-session"},"_npmVersion":"11.6.2","description":"Session and chat management for Robota SDK - multi-session support with independent workspaces","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@robota-sdk/agent-core":"3.0.0-beta.70"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rimraf":"^5.0.5","tsdown":"^0.22.0","vitest":"^1.6.1","typescript":"^5.3.3","@robota-sdk/agent-core":"3.0.0-beta.70"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/agent-session_3.0.0-beta.70_1780196150218_0.8228862552042386","host":"s3://npm-registry-packages-npm-production"}},"3.0.0-beta.71":{"name":"@robota-sdk/agent-session","version":"3.0.0-beta.71","keywords":["ai","agent","llm","session-management","multi-session","chat-management","chat-switching","conversation-history","session-lifecycle","memory-optimization","configuration-management","runtime-configuration","typescript","robota","sdk","openai","anthropic","google-ai","ai-integration"],"author":{"name":"Robota SDK Team"},"license":"MIT","_id":"@robota-sdk/agent-session@3.0.0-beta.71","maintainers":[{"name":"jungyoun","email":"jungyoun@gmail.com"}],"homepage":"https://robota.io/","bugs":{"url":"https://github.com/woojubb/robota/issues"},"dist":{"shasum":"3ba2125f52e8c79116f12237acdb11343f7c7190","tarball":"https://registry.npmjs.org/@robota-sdk/agent-session/-/agent-session-3.0.0-beta.71.tgz","fileCount":9,"integrity":"sha512-ohZOW/th8urrOTendUMzWpb7DAmaaNNjV/JPB7qSM1y8Zx4OJHmzudxlyo4aGStke39ZCeu4eUrkc61nB9fYcQ==","signatures":[{"sig":"MEYCIQCG5S0VNTUpb0vyuib9EqzeWDWiaQLIu0ai3hMj6lw3YAIhAN1uqf494mX7ojJAd59Z7OzO6uBu0PcDnPEodVwH6U6G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":219217},"main":"dist/node/index.js","type":"module","_from":"file:robota-sdk-agent-session-3.0.0-beta.71.tgz","types":"dist/node/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"node":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","source":"./src/index.ts","default":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run --passWithNoTests","build":"tsdown","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","build:js":"tsdown --no-dts","lint:fix":"eslint src --ext .ts,.tsx --fix","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","build:check":"pnpm run typecheck && pnpm run build","build:types":"tsdown --dts","test:coverage":"vitest run --coverage","scenario:record":"node ../../scripts/harness/record-owner-scenario.mjs --scope packages/agent-session --output examples/scenarios/offline-verify.record.json -- pnpm scenario:verify","scenario:verify":"pnpm --filter @robota-sdk/agent-core build && pnpm exec tsx examples/verify-offline.ts"},"_npmUser":{"name":"jungyoun","email":"jungyoun@gmail.com"},"_resolved":"/private/tmp/claude-501/19222e82208e8a003c27bc64384304c9/robota-sdk-agent-session-3.0.0-beta.71.tgz","_integrity":"sha512-ohZOW/th8urrOTendUMzWpb7DAmaaNNjV/JPB7qSM1y8Zx4OJHmzudxlyo4aGStke39ZCeu4eUrkc61nB9fYcQ==","repository":{"url":"git+https://github.com/woojubb/robota.git","type":"git","directory":"packages/agent-session"},"_npmVersion":"11.6.2","description":"Session and chat management for Robota SDK - multi-session support with independent workspaces","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@robota-sdk/agent-core":"3.0.0-beta.71"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rimraf":"^5.0.5","tsdown":"^0.22.0","vitest":"^1.6.1","typescript":"^5.3.3","@robota-sdk/agent-core":"3.0.0-beta.71"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/agent-session_3.0.0-beta.71_1780221976002_0.5539182276954586","host":"s3://npm-registry-packages-npm-production"}},"3.0.0-beta.72":{"name":"@robota-sdk/agent-session","version":"3.0.0-beta.72","keywords":["ai","agent","llm","session-management","multi-session","chat-management","chat-switching","conversation-history","session-lifecycle","memory-optimization","configuration-management","runtime-configuration","typescript","robota","sdk","openai","anthropic","google-ai","ai-integration"],"author":{"name":"Robota SDK Team"},"license":"MIT","_id":"@robota-sdk/agent-session@3.0.0-beta.72","maintainers":[{"name":"jungyoun","email":"jungyoun@gmail.com"}],"homepage":"https://robota.io/","bugs":{"url":"https://github.com/woojubb/robota/issues"},"dist":{"shasum":"24fefda5a5eb661d6fe447a4ac8abd576d3cad40","tarball":"https://registry.npmjs.org/@robota-sdk/agent-session/-/agent-session-3.0.0-beta.72.tgz","fileCount":9,"integrity":"sha512-bHPUGmHKECdC/2sWN+bIV43PnxTDaOeqJzQGwoWaOeGGhdwRUzjvLzvGmh1GXv/N1eV1+ERwBjV2bRVyp2tsVA==","signatures":[{"sig":"MEUCIAoESd3CTrBeYr+x+e6MVYTJNdnseqHdl+XK+1GKNSwjAiEAnpYyHwFkXYkBJaz/ykvci0Qeg65JhBdVuZbKz8h0PVo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":219294},"main":"dist/node/index.js","type":"module","_from":"file:robota-sdk-agent-session-3.0.0-beta.72.tgz","types":"dist/node/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"node":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","source":"./src/index.ts","default":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run --passWithNoTests","build":"tsdown","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","build:js":"tsdown --no-dts","lint:fix":"eslint src --ext .ts,.tsx --fix","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","build:check":"pnpm run typecheck && pnpm run build","build:types":"tsdown --dts","test:coverage":"vitest run --coverage","scenario:record":"node ../../scripts/harness/record-owner-scenario.mjs --scope packages/agent-session --output examples/scenarios/offline-verify.record.json -- pnpm scenario:verify","scenario:verify":"pnpm --filter @robota-sdk/agent-core build && pnpm exec tsx examples/verify-offline.ts"},"_npmUser":{"name":"jungyoun","email":"jungyoun@gmail.com"},"_resolved":"/private/tmp/claude-501/149346fcc4afbe36ce9f8310566c72e4/robota-sdk-agent-session-3.0.0-beta.72.tgz","_integrity":"sha512-bHPUGmHKECdC/2sWN+bIV43PnxTDaOeqJzQGwoWaOeGGhdwRUzjvLzvGmh1GXv/N1eV1+ERwBjV2bRVyp2tsVA==","repository":{"url":"git+https://github.com/woojubb/robota.git","type":"git","directory":"packages/agent-session"},"_npmVersion":"11.6.2","description":"Session and chat management for Robota SDK - multi-session support with independent workspaces","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@robota-sdk/agent-core":"3.0.0-beta.72"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rimraf":"^5.0.5","tsdown":"^0.22.0","vitest":"^1.6.1","typescript":"^5.3.3","@robota-sdk/agent-core":"3.0.0-beta.72"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/agent-session_3.0.0-beta.72_1780578641169_0.0031563600327570995","host":"s3://npm-registry-packages-npm-production"}},"3.0.0-beta.73":{"name":"@robota-sdk/agent-session","version":"3.0.0-beta.73","keywords":["ai","agent","llm","session-management","multi-session","chat-management","chat-switching","conversation-history","session-lifecycle","memory-optimization","configuration-management","runtime-configuration","typescript","robota","sdk","openai","anthropic","google-ai","ai-integration"],"author":{"name":"Robota SDK Team"},"license":"MIT","_id":"@robota-sdk/agent-session@3.0.0-beta.73","maintainers":[{"name":"jungyoun","email":"jungyoun@gmail.com"}],"homepage":"https://robota.io/","bugs":{"url":"https://github.com/woojubb/robota/issues"},"dist":{"shasum":"c2beddc995a556487d099bebea5e137ae210f8f0","tarball":"https://registry.npmjs.org/@robota-sdk/agent-session/-/agent-session-3.0.0-beta.73.tgz","fileCount":9,"integrity":"sha512-2BIfTGD8j02khWVSdbymYGYY1fy8WdaMV+5KOITzQmHCBoThTSyQoRmTfFkfNAHQR5gkjYQBHQsipHdzGDAcTQ==","signatures":[{"sig":"MEUCIQDgZL5g0NCDvFZO24ZZJgVaShTIYL7vNuvUegvpqH4JKAIgQJDuNVWjdXHvnWBic0ttY3SZs8JfvAMeE3bWSW1PIFY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":219371},"main":"dist/node/index.js","type":"module","_from":"file:robota-sdk-agent-session-3.0.0-beta.73.tgz","types":"dist/node/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"node":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","source":"./src/index.ts","default":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run --passWithNoTests","build":"tsdown","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","build:js":"tsdown --no-dts","lint:fix":"eslint src --ext .ts,.tsx --fix","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","build:check":"pnpm run typecheck && pnpm run build","build:types":"tsdown --dts","test:coverage":"vitest run --coverage","scenario:record":"node ../../scripts/harness/record-owner-scenario.mjs --scope packages/agent-session --output examples/scenarios/offline-verify.record.json -- pnpm scenario:verify","scenario:verify":"pnpm --filter @robota-sdk/agent-core build && pnpm exec tsx examples/verify-offline.ts"},"_npmUser":{"name":"jungyoun","email":"jungyoun@gmail.com"},"_resolved":"/private/tmp/claude-501/25d1065413bb3c0f5ca48380e92d4e78/robota-sdk-agent-session-3.0.0-beta.73.tgz","_integrity":"sha512-2BIfTGD8j02khWVSdbymYGYY1fy8WdaMV+5KOITzQmHCBoThTSyQoRmTfFkfNAHQR5gkjYQBHQsipHdzGDAcTQ==","repository":{"url":"git+https://github.com/woojubb/robota.git","type":"git","directory":"packages/agent-session"},"_npmVersion":"11.6.2","description":"Session and chat management for Robota SDK - multi-session support with independent workspaces","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@robota-sdk/agent-core":"3.0.0-beta.73"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rimraf":"^5.0.5","tsdown":"^0.22.0","vitest":"^1.6.1","typescript":"^5.3.3","@robota-sdk/agent-core":"3.0.0-beta.73"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/agent-session_3.0.0-beta.73_1780940462584_0.8209812735881938","host":"s3://npm-registry-packages-npm-production"}},"3.0.0-beta.74":{"name":"@robota-sdk/agent-session","version":"3.0.0-beta.74","keywords":["ai","agent","llm","session-management","multi-session","chat-management","chat-switching","conversation-history","session-lifecycle","memory-optimization","configuration-management","runtime-configuration","typescript","robota","sdk","openai","anthropic","google-ai","ai-integration"],"author":{"name":"Robota SDK Team"},"license":"MIT","_id":"@robota-sdk/agent-session@3.0.0-beta.74","maintainers":[{"name":"jungyoun","email":"jungyoun@gmail.com"}],"homepage":"https://robota.io/","bugs":{"url":"https://github.com/woojubb/robota/issues"},"dist":{"shasum":"3383a1dc8ec92c956a27b07e3ea46f1c7a3e7201","tarball":"https://registry.npmjs.org/@robota-sdk/agent-session/-/agent-session-3.0.0-beta.74.tgz","fileCount":9,"integrity":"sha512-+JTXDAVmTGW0eZ3hh0jSumZ7e3/pdYxRaMO3XaeFKc2tJl81LYYz86np7esEBL4GfA9Kt0wT0OZ1/XWzXDumhg==","signatures":[{"sig":"MEUCIQDIy8dBLrXc59qMuAAclal19jpUfiZ6wqWmV3z55AOaBQIgU6YIKEG81Bh63G011x/msci8nLKVN2AvCxbrRFbSSUg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":220531},"main":"dist/node/index.js","type":"module","_from":"file:robota-sdk-agent-session-3.0.0-beta.74.tgz","types":"dist/node/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"node":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","source":"./src/index.ts","default":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run --passWithNoTests","build":"tsdown","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","build:js":"tsdown --no-dts","lint:fix":"eslint src --ext .ts,.tsx --fix","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","build:check":"pnpm run typecheck && pnpm run build","build:types":"tsdown --dts","test:coverage":"vitest run --coverage","scenario:record":"node ../../scripts/harness/record-owner-scenario.mjs --scope packages/agent-session --output examples/scenarios/offline-verify.record.json -- pnpm scenario:verify","scenario:verify":"pnpm --filter @robota-sdk/agent-core build && pnpm exec tsx examples/verify-offline.ts"},"_npmUser":{"name":"jungyoun","email":"jungyoun@gmail.com"},"_resolved":"/private/var/folders/78/9lnqy12x2bn8x5c17zmvrsnr0000gn/T/5185260c5d5ef793de91d7ac61af9a5f/robota-sdk-agent-session-3.0.0-beta.74.tgz","_integrity":"sha512-+JTXDAVmTGW0eZ3hh0jSumZ7e3/pdYxRaMO3XaeFKc2tJl81LYYz86np7esEBL4GfA9Kt0wT0OZ1/XWzXDumhg==","repository":{"url":"git+https://github.com/woojubb/robota.git","type":"git","directory":"packages/agent-session"},"_npmVersion":"11.6.2","description":"Session and chat management for Robota SDK - multi-session support with independent workspaces","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@robota-sdk/agent-core":"3.0.0-beta.74"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.1","rimraf":"^5.0.10","tsdown":"^0.22.2","vitest":"^3.2.6","typescript":"^5.9.3","@robota-sdk/agent-core":"3.0.0-beta.74"},"_npmOperationalInternal":{"tmp":"tmp/agent-session_3.0.0-beta.74_1781370212094_0.7587467851682164","host":"s3://npm-registry-packages-npm-production"}},"3.0.0-beta.75":{"name":"@robota-sdk/agent-session","version":"3.0.0-beta.75","keywords":["ai","agent","llm","session-management","multi-session","chat-management","chat-switching","conversation-history","session-lifecycle","memory-optimization","configuration-management","runtime-configuration","typescript","robota","sdk","openai","anthropic","google-ai","ai-integration"],"author":{"name":"Robota SDK Team"},"license":"MIT","_id":"@robota-sdk/agent-session@3.0.0-beta.75","maintainers":[{"name":"jungyoun","email":"jungyoun@gmail.com"}],"homepage":"https://robota.io/","bugs":{"url":"https://github.com/woojubb/robota/issues"},"dist":{"shasum":"e49146ef0411d7e3529321864f94099fced6b83a","tarball":"https://registry.npmjs.org/@robota-sdk/agent-session/-/agent-session-3.0.0-beta.75.tgz","fileCount":9,"integrity":"sha512-+KnKtk9gjUcxNt1QVj/QJtetfgsBBVt4vf08f/nK/oWLtkPZSeoGnXMnVFQE+r2eS5sIya5ckyVGhaRN/xv7jg==","signatures":[{"sig":"MEUCIAmi72xH5wFHVRzqj3pkFycFVFj3cEIVPG5sVnriAPRNAiEA3TxniZdZImQNv6sgOPLyLQmHzS0vo4kw9fdhR3o7PV0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":229243},"main":"dist/node/index.js","type":"module","_from":"file:robota-sdk-agent-session-3.0.0-beta.75.tgz","types":"dist/node/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"node":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","source":"./src/index.ts","default":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run --passWithNoTests","build":"tsdown","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","build:js":"tsdown --no-dts","lint:fix":"eslint src --ext .ts,.tsx --fix","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","build:check":"pnpm run typecheck && pnpm run build","build:types":"tsdown --dts","test:coverage":"vitest run --coverage","scenario:record":"node ../../scripts/harness/record-owner-scenario.mjs --scope packages/agent-session --output examples/scenarios/offline-verify.record.json -- pnpm scenario:verify","scenario:verify":"pnpm --filter @robota-sdk/agent-core build && pnpm exec tsx examples/verify-offline.ts"},"_npmUser":{"name":"jungyoun","email":"jungyoun@gmail.com"},"_resolved":"/private/var/folders/78/9lnqy12x2bn8x5c17zmvrsnr0000gn/T/949fbc6aa2e48acd4a1730c91bc8b1e0/robota-sdk-agent-session-3.0.0-beta.75.tgz","_integrity":"sha512-+KnKtk9gjUcxNt1QVj/QJtetfgsBBVt4vf08f/nK/oWLtkPZSeoGnXMnVFQE+r2eS5sIya5ckyVGhaRN/xv7jg==","repository":{"url":"git+https://github.com/woojubb/robota.git","type":"git","directory":"packages/agent-session"},"_npmVersion":"11.6.2","description":"Session and chat management for Robota SDK - multi-session support with independent workspaces","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@robota-sdk/agent-core":"3.0.0-beta.75"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.1","rimraf":"^5.0.10","tsdown":"^0.22.2","vitest":"^3.2.6","typescript":"^5.9.3","@robota-sdk/agent-core":"3.0.0-beta.75"},"_npmOperationalInternal":{"tmp":"tmp/agent-session_3.0.0-beta.75_1781425707379_0.9637999324355473","host":"s3://npm-registry-packages-npm-production"}},"3.0.0-beta.76":{"name":"@robota-sdk/agent-session","version":"3.0.0-beta.76","keywords":["ai","agent","llm","session-management","multi-session","chat-management","chat-switching","conversation-history","session-lifecycle","memory-optimization","configuration-management","runtime-configuration","typescript","robota","sdk","openai","anthropic","google-ai","ai-integration"],"author":{"name":"Robota SDK Team"},"license":"MIT","_id":"@robota-sdk/agent-session@3.0.0-beta.76","maintainers":[{"name":"jungyoun","email":"jungyoun@gmail.com"}],"homepage":"https://robota.io/","bugs":{"url":"https://github.com/woojubb/robota/issues"},"dist":{"shasum":"b1c02bd87fe3cacd83924a955c02955b35e7c8a2","tarball":"https://registry.npmjs.org/@robota-sdk/agent-session/-/agent-session-3.0.0-beta.76.tgz","fileCount":9,"integrity":"sha512-Wb/MaAv88jMAvFUM0WyZvcCPc7Yi1M9V0J5VLal6L3ZdeZcuhyzjuHYemEmZ2eOxOQ/sBgERvkkhhAINAJFsxw==","signatures":[{"sig":"MEYCIQDCGfBZ4Y5FkvnmZD64UFHPIth/D8hADFFryonZ1XvegQIhAMXw9oDaqMAwzE2rUz5W0q63Sl1rdHd1iUEQ7YMeX7c1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":232931},"main":"dist/node/index.js","type":"module","_from":"file:robota-sdk-agent-session-3.0.0-beta.76.tgz","types":"dist/node/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"node":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","source":"./src/index.ts","default":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run --passWithNoTests","build":"tsdown","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","build:js":"tsdown --no-dts","lint:fix":"eslint src --ext .ts,.tsx --fix","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","build:check":"pnpm run typecheck && pnpm run build","build:types":"tsdown --dts","test:coverage":"vitest run --coverage","scenario:record":"node ../../scripts/harness/record-owner-scenario.mjs --scope packages/agent-session --output examples/scenarios/offline-verify.record.json -- pnpm scenario:verify","scenario:verify":"pnpm --filter @robota-sdk/agent-core build && pnpm exec tsx examples/verify-offline.ts"},"_npmUser":{"name":"jungyoun","email":"jungyoun@gmail.com"},"_resolved":"/private/var/folders/78/9lnqy12x2bn8x5c17zmvrsnr0000gn/T/f1f83df2bf25cc2b92df5d005b7513c3/robota-sdk-agent-session-3.0.0-beta.76.tgz","_integrity":"sha512-Wb/MaAv88jMAvFUM0WyZvcCPc7Yi1M9V0J5VLal6L3ZdeZcuhyzjuHYemEmZ2eOxOQ/sBgERvkkhhAINAJFsxw==","repository":{"url":"git+https://github.com/woojubb/robota.git","type":"git","directory":"packages/agent-session"},"_npmVersion":"11.6.2","description":"Session and chat management for Robota SDK - multi-session support with independent workspaces","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@robota-sdk/agent-core":"3.0.0-beta.76"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.1","rimraf":"^5.0.10","tsdown":"^0.22.2","vitest":"^3.2.6","typescript":"^5.9.3","@robota-sdk/agent-core":"3.0.0-beta.76"},"_npmOperationalInternal":{"tmp":"tmp/agent-session_3.0.0-beta.76_1781447266012_0.37856876921379357","host":"s3://npm-registry-packages-npm-production"}},"3.0.0-beta.77":{"name":"@robota-sdk/agent-session","version":"3.0.0-beta.77","keywords":["ai","agent","llm","session-management","multi-session","chat-management","chat-switching","conversation-history","session-lifecycle","memory-optimization","configuration-management","runtime-configuration","typescript","robota","sdk","openai","anthropic","google-ai","ai-integration"],"author":{"name":"Robota SDK Team"},"license":"AGPL-3.0-only OR LicenseRef-Commercial","_id":"@robota-sdk/agent-session@3.0.0-beta.77","maintainers":[{"name":"jungyoun","email":"jungyoun@gmail.com"}],"homepage":"https://robota.io/","bugs":{"url":"https://github.com/woojubb/robota/issues"},"dist":{"shasum":"c905588ec135ea1c17c60fe130dbb09bb756306f","tarball":"https://registry.npmjs.org/@robota-sdk/agent-session/-/agent-session-3.0.0-beta.77.tgz","fileCount":9,"integrity":"sha512-lLJBXok+gfjEvNSbY9Ig4pqJy6OofSXtA3cWBrKr1HubPMgaAN+kDHNORL3CILqGVcbU4ug7XqucKxWd4r2IUA==","signatures":[{"sig":"MEYCIQDwmfD01u0tqnn5h46v3GDhdwte/ea64pcqVFfP5gIsIQIhAM2b04lJWnejCLZK46/WFuiKUV3G0/i5kByr7SBiJ2u/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":282106},"main":"dist/node/index.js","type":"module","_from":"file:robota-sdk-agent-session-3.0.0-beta.77.tgz","types":"dist/node/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"node":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","source":"./src/index.ts","default":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run --passWithNoTests","build":"tsdown","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","build:js":"tsdown --no-dts","lint:fix":"eslint src --ext .ts,.tsx --fix","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","build:check":"pnpm run typecheck && pnpm run build","build:types":"tsdown --dts","test:coverage":"vitest run --coverage","scenario:record":"node ../../scripts/harness/record-owner-scenario.mjs --scope packages/agent-session --output examples/scenarios/offline-verify.record.json -- pnpm scenario:verify","scenario:verify":"pnpm --filter @robota-sdk/agent-core build && pnpm exec tsx examples/verify-offline.ts"},"_npmUser":{"name":"jungyoun","email":"jungyoun@gmail.com"},"_resolved":"/private/var/folders/78/9lnqy12x2bn8x5c17zmvrsnr0000gn/T/28fc88ecb4aefcbe8f83e4d5b639e828/robota-sdk-agent-session-3.0.0-beta.77.tgz","_integrity":"sha512-lLJBXok+gfjEvNSbY9Ig4pqJy6OofSXtA3cWBrKr1HubPMgaAN+kDHNORL3CILqGVcbU4ug7XqucKxWd4r2IUA==","repository":{"url":"git+https://github.com/woojubb/robota.git","type":"git","directory":"packages/agent-session"},"_npmVersion":"11.6.2","description":"Session and chat management for Robota SDK - multi-session support with independent workspaces","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@robota-sdk/agent-core":"3.0.0-beta.77","@robota-sdk/agent-interface-transport":"3.0.0-beta.77"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.1","rimraf":"^5.0.10","tsdown":"^0.22.2","vitest":"^3.2.6","typescript":"^5.9.3","@robota-sdk/agent-core":"3.0.0-beta.77"},"_npmOperationalInternal":{"tmp":"tmp/agent-session_3.0.0-beta.77_1783208240653_0.6725084102600298","host":"s3://npm-registry-packages-npm-production"}},"3.0.0-beta.78":{"name":"@robota-sdk/agent-session","version":"3.0.0-beta.78","keywords":["ai","agent","llm","session-management","multi-session","chat-management","chat-switching","conversation-history","session-lifecycle","memory-optimization","configuration-management","runtime-configuration","typescript","robota","sdk","openai","anthropic","google-ai","ai-integration"],"author":{"name":"Robota SDK Team"},"license":"AGPL-3.0-only OR LicenseRef-Commercial","_id":"@robota-sdk/agent-session@3.0.0-beta.78","maintainers":[{"name":"jungyoun","email":"jungyoun@gmail.com"}],"homepage":"https://robota.io/","bugs":{"url":"https://github.com/woojubb/robota/issues"},"dist":{"shasum":"73443c690c0580705e4a0fbeeba85674051eee9f","tarball":"https://registry.npmjs.org/@robota-sdk/agent-session/-/agent-session-3.0.0-beta.78.tgz","fileCount":9,"integrity":"sha512-ZZWgz1n9LfDqjjWyfKuGRYywiedWN5+u7VIh9SkEZ0Lwlo8SpAjwcC0j8vtjIHOKST94s+wUgmRqumWwXqZ24g==","signatures":[{"sig":"MEQCIFujQHrjoWyLn7VdIqisVor0V9rFsr9R30rWAGua1vrKAiAhEAqxI1xf/GCJ4adPtLZfobYjYDISiWmpeSshn6MWdQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":282274},"main":"dist/node/index.js","type":"module","_from":"file:robota-sdk-agent-session-3.0.0-beta.78.tgz","types":"dist/node/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"node":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","source":"./src/index.ts","default":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run --passWithNoTests","build":"tsdown","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","build:js":"tsdown --no-dts","lint:fix":"eslint src --ext .ts,.tsx --fix","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","build:check":"pnpm run typecheck && pnpm run build","build:types":"tsdown --dts","test:coverage":"vitest run --coverage","scenario:record":"node ../../scripts/harness/record-owner-scenario.mjs --scope packages/agent-session --output examples/scenarios/offline-verify.record.json -- pnpm scenario:verify","scenario:verify":"pnpm --filter @robota-sdk/agent-core build && pnpm exec tsx examples/verify-offline.ts"},"_npmUser":{"name":"jungyoun","email":"jungyoun@gmail.com"},"_resolved":"/tmp/claude-1000/6a60efb3f88a5b3787c8ab58e3b590c6/robota-sdk-agent-session-3.0.0-beta.78.tgz","_integrity":"sha512-ZZWgz1n9LfDqjjWyfKuGRYywiedWN5+u7VIh9SkEZ0Lwlo8SpAjwcC0j8vtjIHOKST94s+wUgmRqumWwXqZ24g==","repository":{"url":"git+https://github.com/woojubb/robota.git","type":"git","directory":"packages/agent-session"},"_npmVersion":"10.9.2","description":"Session and chat management for Robota SDK - multi-session support with independent workspaces","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@robota-sdk/agent-core":"3.0.0-beta.78","@robota-sdk/agent-interface-transport":"3.0.0-beta.78"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.1","rimraf":"^5.0.10","tsdown":"^0.22.2","vitest":"^3.2.6","typescript":"^5.9.3","@robota-sdk/agent-core":"3.0.0-beta.78"},"_npmOperationalInternal":{"tmp":"tmp/agent-session_3.0.0-beta.78_1783258832385_0.8617589949924369","host":"s3://npm-registry-packages-npm-production"}},"3.0.0-beta.79":{"name":"@robota-sdk/agent-session","version":"3.0.0-beta.79","keywords":["ai","agent","llm","session-management","multi-session","chat-management","chat-switching","conversation-history","session-lifecycle","memory-optimization","configuration-management","runtime-configuration","typescript","robota","sdk","openai","anthropic","google-ai","ai-integration"],"author":{"name":"Robota SDK Team"},"license":"AGPL-3.0-only OR LicenseRef-Commercial","_id":"@robota-sdk/agent-session@3.0.0-beta.79","maintainers":[{"name":"jungyoun","email":"jungyoun@gmail.com"}],"homepage":"https://robota.io/","bugs":{"url":"https://github.com/woojubb/robota/issues"},"dist":{"shasum":"4a1b103657f5a3e2694e81ab6f3f83d919f88b7b","tarball":"https://registry.npmjs.org/@robota-sdk/agent-session/-/agent-session-3.0.0-beta.79.tgz","fileCount":9,"integrity":"sha512-4/SUo02dy8SnCjxXCXcOaYfa/FP64NNtXqxSBeIi49UWe/+lTqHWE6oZvdLnkpvycegzooUzoP6hA20KOEMGFw==","signatures":[{"sig":"MEQCICYN52nC9gzX+pQ/yDHaESzUPoZZecMzWRY29PR/kFvaAiBCiV3QHdEN9BaFJrbsFslJHS+7tLtAvKDIRF8lwoOYpg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":282405},"main":"dist/node/index.js","type":"module","_from":"file:robota-sdk-agent-session-3.0.0-beta.79.tgz","types":"dist/node/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"node":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","source":"./src/index.ts","default":{"import":"./dist/node/index.js","require":"./dist/node/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run --passWithNoTests","build":"tsdown","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","build:js":"tsdown --no-dts","lint:fix":"eslint src --ext .ts,.tsx --fix","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","build:check":"pnpm run typecheck && pnpm run build","build:types":"tsdown --dts","test:coverage":"vitest run --coverage","scenario:record":"node ../../scripts/harness/record-owner-scenario.mjs --scope packages/agent-session --output examples/scenarios/offline-verify.record.json -- pnpm scenario:verify","scenario:verify":"pnpm --filter @robota-sdk/agent-core build && pnpm exec tsx examples/verify-offline.ts"},"_npmUser":{"name":"jungyoun","email":"jungyoun@gmail.com"},"_resolved":"/tmp/claude-1000/2448ef0cec1ec1bbbb97ea09807fb422/robota-sdk-agent-session-3.0.0-beta.79.tgz","_integrity":"sha512-4/SUo02dy8SnCjxXCXcOaYfa/FP64NNtXqxSBeIi49UWe/+lTqHWE6oZvdLnkpvycegzooUzoP6hA20KOEMGFw==","repository":{"url":"git+https://github.com/woojubb/robota.git","type":"git","directory":"packages/agent-session"},"_npmVersion":"10.9.2","description":"Session and chat management for Robota SDK - multi-session support with independent workspaces","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@robota-sdk/agent-core":"3.0.0-beta.79","@robota-sdk/agent-interface-transport":"3.0.0-beta.79"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.1","rimraf":"^5.0.10","tsdown":"^0.22.2","vitest":"^3.2.6","typescript":"^5.9.3","@robota-sdk/agent-core":"3.0.0-beta.79"},"_npmOperationalInternal":{"tmp":"tmp/agent-session_3.0.0-beta.79_1783325948296_0.4590025056138125","host":"s3://npm-registry-packages-npm-production"}},"3.0.0-beta.81":{"name":"@robota-sdk/agent-session","version":"3.0.0-beta.81","keywords":["ai","agent","llm","session-management","multi-session","chat-management","chat-switching","conversation-history","session-lifecycle","memory-optimization","configuration-management","runtime-configuration","typescript","robota","sdk","openai","anthropic","google-ai","ai-integration"],"author":{"name":"Robota SDK Team"},"license":"AGPL-3.0-only OR LicenseRef-Commercial","_id":"@robota-sdk/agent-session@3.0.0-beta.81","maintainers":[{"name":"jungyoun","email":"jungyoun@gmail.com"}],"homepage":"https://robota.io/","bugs":{"url":"https://github.com/woojubb/robota/issues"},"dist":{"shasum":"17446020113801f8c651b888bfce986f647381ee","tarball":"https://registry.npmjs.org/@robota-sdk/agent-session/-/agent-session-3.0.0-beta.81.tgz","fileCount":11,"integrity":"sha512-TKcNe7IpFm42NU0G2nDEiDxDcr/YQO/YTeCmbU6E8/4V7ZVaxY41lS/FdxATZzeSXJRz+ToKYDRl8RKvUHwbsQ==","signatures":[{"sig":"MEYCIQCpWRHJXD2okXBW2BETsicMjOq9ZpaFDJ4+4XxSsef1dQIhALZfrx0zlX84Y7WYyEN1njrB9v3sOBOWlgwdpbqtLV/3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCVfB1vDu8c9AN+1CQZjIZagTMFQgHb61cY7tFWZ//87wIgCJUNTpNHWkMy6+L/JxGm5Arm513LWc5S5u+vtSEEX/s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1000357},"main":"dist/node/index.js","type":"module","_from":"file:robota-sdk-agent-session-3.0.0-beta.81.tgz","types":"dist/node/index.d.ts","volta":{"extends":"../../package.json"},"engines":{"node":">=20.19.0"},"exports":{".":{"node":{"import":{"types":"./dist/node/index.d.ts","default":"./dist/node/index.js"},"require":{"types":"./dist/node/index.d.cts","default":"./dist/node/index.cjs"}},"source":"./src/index.ts","default":{"import":{"types":"./dist/node/index.d.ts","default":"./dist/node/index.js"},"require":{"types":"./dist/node/index.d.cts","default":"./dist/node/index.cjs"}}}},"scripts":{"dev":"tsdown --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run --passWithNoTests","build":"rimraf dist && tsdown","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","build:js":"pnpm run build","lint:fix":"eslint src --ext .ts,.tsx --fix","typecheck":"tsgo -p tsconfig.json --noEmit && tsgo -p tsconfig.examples.json --noEmit","test:watch":"vitest","build:check":"pnpm run typecheck && pnpm run build","build:types":"pnpm run build","test:coverage":"vitest run --coverage","scenario:verify":"pnpm run scenario:verify:external-payload-replay && pnpm exec tsx --conditions=source examples/verify-offline.ts && pnpm exec tsx --conditions=source examples/verify-session-record-field-preservation.ts && pnpm exec tsx --conditions=source examples/verify-compaction-contract.ts && pnpm exec tsx --conditions=source examples/verify-hook-outcome-contract.ts","scenario:verify:external-payload-replay":"pnpm exec tsx --conditions=source examples/verify-external-payload-replay.ts"},"_npmUser":{"name":"jungyoun","email":"jungyoun@gmail.com"},"_resolved":"/private/var/folders/78/9lnqy12x2bn8x5c17zmvrsnr0000gn/T/c99db8474b2e813f62769600666207fb/robota-sdk-agent-session-3.0.0-beta.81.tgz","_integrity":"sha512-TKcNe7IpFm42NU0G2nDEiDxDcr/YQO/YTeCmbU6E8/4V7ZVaxY41lS/FdxATZzeSXJRz+ToKYDRl8RKvUHwbsQ==","repository":{"url":"git+https://github.com/woojubb/robota.git","type":"git","directory":"packages/agent-session"},"_npmVersion":"10.9.2","description":"Session and chat management for Robota SDK - multi-session support with independent workspaces","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@robota-sdk/agent-core":"3.0.0-beta.81","@robota-sdk/agent-file-authority":"3.0.0-beta.81","@robota-sdk/agent-interface-session":"3.0.0-beta.81","@robota-sdk/agent-interface-execution":"3.0.0-beta.81"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.1","rimraf":"^5.0.10","tsdown":"^0.22.14","vitest":"^3.2.6","typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/agent-session_3.0.0-beta.81_1790393718148_0.24616441553450774","host":"s3://npm-registry-packages-npm-production"}},"3.0.0-beta.82":{"name":"@robota-sdk/agent-session","version":"3.0.0-beta.82","keywords":["ai","agent","llm","session-management","multi-session","chat-management","chat-switching","conversation-history","session-lifecycle","memory-optimization","configuration-management","runtime-configuration","typescript","robota","sdk","openai","anthropic","google-ai","ai-integration"],"author":{"name":"Robota SDK Team"},"license":"AGPL-3.0-only OR LicenseRef-Commercial","_id":"@robota-sdk/agent-session@3.0.0-beta.82","maintainers":[{"name":"jungyoun","email":"jungyoun@gmail.com"}],"homepage":"https://robota.io/","bugs":{"url":"https://github.com/woojubb/robota/issues"},"dist":{"shasum":"0d20b27373b78295f61a6d6e2eb73b61eb9f6a01","tarball":"https://registry.npmjs.org/@robota-sdk/agent-session/-/agent-session-3.0.0-beta.82.tgz","fileCount":11,"integrity":"sha512-KDfDnyfYnpVOd8j0O2jduYL84mDEJicqwZVlNzKTWblow54T5bjjWyVA/HvIjJ9IhVokMF8vrxuYOez52Bv8nw==","signatures":[{"sig":"MEQCIDi42k4bewxMACHbee86aCFowPNBC9uBhOBz0LwO4GlAAiBmWMwdtaWg5N8Ajk5fDUvVzHqqeLd4F6vuWkWQMW8Vsw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBDPMzJm7ABhxrwuFHqhaRr0A8SF3ynrO3uDuAfWAg5JAiAZcyLyFrypU0ykrr/fuDFmK3ib5jj8i+BWK8Dry4xEGg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@robota-sdk%2fagent-session@3.0.0-beta.82","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1002937},"main":"dist/node/index.js","type":"module","_from":"file:robota-sdk-agent-session-3.0.0-beta.82.tgz","types":"dist/node/index.d.ts","volta":{"extends":"../../package.json"},"engines":{"node":">=20.19.0"},"exports":{".":{"node":{"import":{"types":"./dist/node/index.d.ts","default":"./dist/node/index.js"},"require":{"types":"./dist/node/index.d.cts","default":"./dist/node/index.cjs"}},"source":"./src/index.ts","default":{"import":{"types":"./dist/node/index.d.ts","default":"./dist/node/index.js"},"require":{"types":"./dist/node/index.d.cts","default":"./dist/node/index.cjs"}}}},"scripts":{"dev":"tsdown --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run --passWithNoTests","build":"rimraf dist && tsdown","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","build:js":"pnpm run build","lint:fix":"eslint src --ext .ts,.tsx --fix","typecheck":"tsgo -p tsconfig.json --noEmit && tsgo -p tsconfig.examples.json --noEmit","test:watch":"vitest","build:check":"pnpm run typecheck && pnpm run build","build:types":"pnpm run build","test:coverage":"vitest run --coverage","scenario:verify":"pnpm run scenario:verify:external-payload-replay && pnpm exec tsx --conditions=source examples/verify-offline.ts && pnpm exec tsx --conditions=source examples/verify-session-record-field-preservation.ts && pnpm exec tsx --conditions=source examples/verify-compaction-contract.ts && pnpm exec tsx --conditions=source examples/verify-hook-outcome-contract.ts","scenario:verify:external-payload-replay":"pnpm exec tsx --conditions=source examples/verify-external-payload-replay.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a84dead-a1ea-4be6-b116-6d86b328e307"}},"_resolved":"/tmp/df5e44adbfd8a5303e558bf30279bd0a/robota-sdk-agent-session-3.0.0-beta.82.tgz","_integrity":"sha512-KDfDnyfYnpVOd8j0O2jduYL84mDEJicqwZVlNzKTWblow54T5bjjWyVA/HvIjJ9IhVokMF8vrxuYOez52Bv8nw==","repository":{"url":"git+https://github.com/woojubb/robota.git","type":"git","directory":"packages/agent-session"},"_npmVersion":"11.20.0","description":"Session and chat management for Robota SDK - multi-session support with independent workspaces","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@robota-sdk/agent-core":"3.0.0-beta.82","@robota-sdk/agent-file-authority":"3.0.0-beta.82","@robota-sdk/agent-interface-session":"3.0.0-beta.82","@robota-sdk/agent-interface-execution":"3.0.0-beta.82"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.1","rimraf":"^5.0.10","tsdown":"^0.22.14","vitest":"^3.2.6","typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/agent-session_3.0.0-beta.82_1790405694887_0.40861247731230566","host":"s3://npm-registry-packages-npm-production"}},"3.0.0-beta.83":{"name":"@robota-sdk/agent-session","version":"3.0.0-beta.83","keywords":["ai","agent","llm","session-management","multi-session","chat-management","chat-switching","conversation-history","session-lifecycle","memory-optimization","configuration-management","runtime-configuration","typescript","robota","sdk","openai","anthropic","google-ai","ai-integration"],"author":{"name":"Robota SDK Team"},"license":"AGPL-3.0-only OR LicenseRef-Commercial","_id":"@robota-sdk/agent-session@3.0.0-beta.83","maintainers":[{"name":"jungyoun","email":"jungyoun@gmail.com"}],"homepage":"https://robota.io/","bugs":{"url":"https://github.com/woojubb/robota/issues"},"dist":{"shasum":"d3e71d77cb364de7de07be865c11e028bdf912db","tarball":"https://registry.npmjs.org/@robota-sdk/agent-session/-/agent-session-3.0.0-beta.83.tgz","fileCount":11,"integrity":"sha512-oXKAXIhaUa5DgBt0o39egtwS4xERWRcQhJGzEAaVwfiu0wmqLp1Vtx9EycsujAxg2uWClfb2HGGnt4u8Rkz2KA==","signatures":[{"sig":"MEQCIG3CA5/UIEgINFuXOjlwog8CMU4AhoidON7007l5BLcsAiA/Wrm3d08Dd8TXnXmoo15S7dli3LdH5zinfT1bCY8k2g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBzYqp3J+dCBxDVkVZkXwgmg2hgfo9Zg6spCwK0miZdMAiA+WkUEgsZo2zQe6n2HEBj9Aty92QQRKTJ5+K6kQJmBdw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@robota-sdk%2fagent-session@3.0.0-beta.83","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1008108},"main":"dist/node/index.js","type":"module","_from":"file:robota-sdk-agent-session-3.0.0-beta.83.tgz","types":"dist/node/index.d.ts","volta":{"extends":"../../package.json"},"engines":{"node":">=22.12.0"},"exports":{".":{"node":{"import":{"types":"./dist/node/index.d.ts","default":"./dist/node/index.js"},"require":{"types":"./dist/node/index.d.cts","default":"./dist/node/index.cjs"}},"source":"./src/index.ts","default":{"import":{"types":"./dist/node/index.d.ts","default":"./dist/node/index.js"},"require":{"types":"./dist/node/index.d.cts","default":"./dist/node/index.cjs"}}},"./package.json":"./package.json"},"scripts":{"dev":"tsdown --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run --passWithNoTests","build":"rimraf dist && tsdown","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","build:js":"pnpm run build","lint:fix":"eslint src --ext .ts,.tsx --fix","typecheck":"tsgo -p tsconfig.json --noEmit && tsgo -p tsconfig.examples.json --noEmit","test:watch":"vitest","build:check":"pnpm run typecheck && pnpm run build","build:types":"pnpm run build","test:coverage":"vitest run --coverage","scenario:verify":"pnpm run scenario:verify:external-payload-replay && pnpm exec tsx --conditions=source examples/verify-offline.ts && pnpm exec tsx --conditions=source examples/verify-session-record-field-preservation.ts && pnpm exec tsx --conditions=source examples/verify-compaction-contract.ts && pnpm exec tsx --conditions=source examples/verify-hook-outcome-contract.ts","scenario:verify:external-payload-replay":"pnpm exec tsx --conditions=source examples/verify-external-payload-replay.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a84dead-a1ea-4be6-b116-6d86b328e307"}},"_resolved":"/tmp/b92b46a5a5d8fa93d83d8a45d8fa49e5/robota-sdk-agent-session-3.0.0-beta.83.tgz","_integrity":"sha512-oXKAXIhaUa5DgBt0o39egtwS4xERWRcQhJGzEAaVwfiu0wmqLp1Vtx9EycsujAxg2uWClfb2HGGnt4u8Rkz2KA==","repository":{"url":"git+https://github.com/woojubb/robota.git","type":"git","directory":"packages/agent-session"},"_npmVersion":"11.20.0","description":"Session and chat management for Robota SDK - multi-session support with independent workspaces","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@robota-sdk/agent-core":"3.0.0-beta.83","@robota-sdk/agent-file-authority":"3.0.0-beta.83","@robota-sdk/agent-interface-session":"3.0.0-beta.83","@robota-sdk/agent-interface-execution":"3.0.0-beta.83"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.1","rimraf":"^5.0.10","tsdown":"^0.22.14","vitest":"^3.2.6","typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/agent-session_3.0.0-beta.83_1790491541492_0.23226276345393848","host":"s3://npm-registry-packages-npm-production"}},"3.0.0-beta.84":{"_id":"@robota-sdk/agent-session@3.0.0-beta.84","bugs":{"url":"https://github.com/woojubb/robota/issues"},"dist":{"shasum":"e546ed66974be55a8644994eb6162bf75db0aa6b","tarball":"https://registry.npmjs.org/@robota-sdk/agent-session/-/agent-session-3.0.0-beta.84.tgz","fileCount":11,"integrity":"sha512-pYQekh4PEDidMrqZ2HwYiH40HXSkMg2iPNcAQVKXMwbxp7N9qfPADGVoVNjxFvfhypLj/K4N5Fz1KA7DrL9HCg==","signatures":[{"sig":"MEUCIHMx9ie5FhZexXtlUvjY+kqcIIGp2A8F8dq8GOF0CRInAiEA+favshDuOa7ElMZ8lzDm9Q3HHs5Xe8B7eHkZX7Gh3Wg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDdJIRdoXZEiUWcZMfLvPhX4Qs9wYkf4cgyzy3EJxBD9QIhAI0YStDyn2US9/CkYYZbmC5mFdToxLTesa7jo28mdFtD"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@robota-sdk%2fagent-session@3.0.0-beta.84","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1083929},"main":"dist/node/index.js","name":"@robota-sdk/agent-session","type":"module","_from":"file:robota-sdk-agent-session-3.0.0-beta.84.tgz","types":"dist/node/index.d.ts","volta":{"extends":"../../package.json"},"author":{"name":"Robota SDK Team"},"engines":{"node":">=22.12.0"},"exports":{".":{"node":{"import":{"types":"./dist/node/index.d.ts","default":"./dist/node/index.js"},"require":{"types":"./dist/node/index.d.cts","default":"./dist/node/index.cjs"}},"source":"./src/index.ts","default":{"import":{"types":"./dist/node/index.d.ts","default":"./dist/node/index.js"},"require":{"types":"./dist/node/index.d.cts","default":"./dist/node/index.cjs"}}},"./package.json":"./package.json"},"license":"AGPL-3.0-only OR LicenseRef-Commercial","scripts":{"dev":"tsdown --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run --passWithNoTests","build":"rimraf dist && tsdown","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","build:js":"pnpm run build","lint:fix":"eslint src --ext .ts,.tsx --fix","typecheck":"tsgo -p tsconfig.json --noEmit && tsgo -p tsconfig.examples.json --noEmit","test:watch":"vitest","build:check":"pnpm run typecheck && pnpm run build","build:types":"pnpm run build","test:coverage":"vitest run --coverage","scenario:verify":"pnpm run scenario:verify:external-payload-replay && pnpm exec tsx --conditions=source examples/verify-offline.ts && pnpm exec tsx --conditions=source examples/verify-session-record-field-preservation.ts && pnpm exec tsx --conditions=source examples/verify-compaction-contract.ts && pnpm exec tsx --conditions=source examples/verify-hook-outcome-contract.ts","scenario:verify:external-payload-replay":"pnpm exec tsx --conditions=source examples/verify-external-payload-replay.ts"},"version":"3.0.0-beta.84","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a84dead-a1ea-4be6-b116-6d86b328e307"}},"homepage":"https://docs.robota.io/en/packages/agent-session/","keywords":["ai","agent","llm","session-management","multi-session","chat-management","chat-switching","conversation-history","session-lifecycle","memory-optimization","configuration-management","runtime-configuration","typescript","robota","sdk","openai","anthropic","google-ai","ai-integration"],"_resolved":"/tmp/241b2eebfb6f19c195cbe3728369dcc0/robota-sdk-agent-session-3.0.0-beta.84.tgz","_integrity":"sha512-pYQekh4PEDidMrqZ2HwYiH40HXSkMg2iPNcAQVKXMwbxp7N9qfPADGVoVNjxFvfhypLj/K4N5Fz1KA7DrL9HCg==","repository":{"url":"git+https://github.com/woojubb/robota.git","type":"git","directory":"packages/agent-session"},"_npmVersion":"11.20.0","description":"Session for the Robota SDK: permission-gated tool execution, hooks, context tracking, compaction and persistence","directories":{},"maintainers":[{"name":"jungyoun","email":"jungyoun@gmail.com"}],"_nodeVersion":"22.14.0","dependencies":{"@robota-sdk/agent-core":"3.0.0-beta.84","@robota-sdk/agent-file-authority":"3.0.0-beta.84","@robota-sdk/agent-interface-session":"3.0.0-beta.84","@robota-sdk/agent-interface-execution":"3.0.0-beta.84"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.1","rimraf":"^5.0.10","tsdown":"^0.22.14","vitest":"^3.2.6","typescript":"^6.0.3"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agent-session_3.0.0-beta.84_1790570640362_0.029404009092201866"}}},"time":{"created":"2026-05-16T15:49:58.319Z","modified":"2026-09-28T04:44:00.862Z","3.0.0-beta.64":"2026-05-16T15:49:58.525Z","3.0.0-beta.65":"2026-05-16T17:27:22.646Z","3.0.0-beta.66":"2026-05-17T11:47:37.879Z","3.0.0-beta.67":"2026-05-17T17:23:30.068Z","3.0.0-beta.68":"2026-05-25T15:08:05.038Z","3.0.0-beta.69":"2026-05-25T16:54:21.552Z","3.0.0-beta.70":"2026-05-31T02:55:50.371Z","3.0.0-beta.71":"2026-05-31T10:06:16.141Z","3.0.0-beta.72":"2026-06-04T13:10:41.296Z","3.0.0-beta.73":"2026-06-08T17:41:02.736Z","3.0.0-beta.74":"2026-06-13T17:03:32.239Z","3.0.0-beta.75":"2026-06-14T08:28:27.530Z","3.0.0-beta.76":"2026-06-14T14:27:46.167Z","3.0.0-beta.77":"2026-07-04T23:37:20.823Z","3.0.0-beta.78":"2026-07-05T13:40:32.559Z","3.0.0-beta.79":"2026-07-06T08:19:08.465Z","3.0.0-beta.81":"2026-09-26T03:35:18.266Z","3.0.0-beta.82":"2026-09-26T06:54:54.980Z","3.0.0-beta.83":"2026-09-27T06:45:41.597Z","3.0.0-beta.84":"2026-09-28T04:44:00.495Z"},"bugs":{"url":"https://github.com/woojubb/robota/issues"},"author":{"name":"Robota SDK Team"},"license":"AGPL-3.0-only OR LicenseRef-Commercial","homepage":"https://docs.robota.io/en/packages/agent-session/","keywords":["ai","agent","llm","session-management","multi-session","chat-management","chat-switching","conversation-history","session-lifecycle","memory-optimization","configuration-management","runtime-configuration","typescript","robota","sdk","openai","anthropic","google-ai","ai-integration"],"repository":{"url":"git+https://github.com/woojubb/robota.git","type":"git","directory":"packages/agent-session"},"description":"Session for the Robota SDK: permission-gated tool execution, hooks, context tracking, compaction and persistence","maintainers":[{"name":"jungyoun","email":"jungyoun@gmail.com"}],"readme":"# @robota-sdk/agent-session\n\nSession lifecycle for the Robota SDK. A `Session` wraps a `Robota` agent from\n`@robota-sdk/agent-core` and adds permission-gated tool execution, lifecycle hooks, context-window\ntracking, conversation compaction, session logs and optional persistence.\n\nMost applications use `InteractiveSession` or `createQuery()` from `@robota-sdk/agent-framework`,\nwhich build a `Session` with tools, provider and system prompt already wired. Use this package\ndirectly when you assemble a session yourself.\n\n## Installation\n\n```bash\nnpm install @robota-sdk/agent-session @robota-sdk/agent-core\n```\n\nRequires Node.js 22.12 or later.\n\n## Quick Start\n\n```typescript\nimport { Session } from '@robota-sdk/agent-session';\nimport type { ITerminalOutput } from '@robota-sdk/agent-session';\nimport type { IAIProvider, IToolWithEventService } from '@robota-sdk/agent-core';\n\ndeclare const tools: IToolWithEventService[];\ndeclare const provider: IAIProvider;\ndeclare const terminal: ITerminalOutput;\n\nconst session = new Session({\n  tools,\n  provider,\n  systemMessage: 'You are a helpful assistant.',\n  terminal,\n  // Required. The session's root: hook inputs, the permission workspace and the stored record use it.\n  cwd: process.cwd(),\n  permissions: { allow: ['Read(*)'], deny: [] },\n  autoCompactThreshold: 0.75,\n});\n\nconst response = await session.run('Hello!');\n\n// Context tracking\nconst state = session.getContextState();\nconsole.log(`${state.usedPercentage.toFixed(1)}% context used`, response);\n\n// Manual compaction\nawait session.compact('Focus on the API changes');\n\nawait session.shutdown();\n```\n\n`ITerminalOutput` is a small terminal I/O interface (`write`, `writeLine`, `prompt`, `select`,\n`spinner`, …). The session writes notices to it and hands it to an injected `promptForApproval`\nfunction. A tool call that needs approval goes to `permissionHandler` or `promptForApproval`; with\nneither, it is denied.\n\n## Checkpointed approval\n\nUse `runRecoverable` when the host must save an approval request and answer it after reopening the\nsame Session. Supply an `IRecoverableExecutionJournal` from `@robota-sdk/agent-core`; the host owns\nexclusive access and durable, idempotent record storage. Ordinary `run` keeps live approval handling.\n\n```typescript\nimport type { IRecoverableExecutionJournal } from '@robota-sdk/agent-core';\n\ndeclare const journal: IRecoverableExecutionJournal;\ndeclare const approvedByHost: boolean;\ndeclare const hostResponseId: string; // Persist this ID and reuse it for redelivery.\n\nconst result = await session.runRecoverable('Perform the requested task', {\n  executionJournal: journal,\n});\nif (result.status === 'waiting') {\n  const request = result.requests.find((value) => value.kind === 'robota-session/approval');\n  if (request) {\n    // Authenticate the responder and show the exact request.data.arguments before answering.\n    const continued = await session.resumeRecoverable({\n      executionId: request.executionId,\n      journal,\n      toolResponses: [\n        {\n          requestId: request.requestId,\n          responseId: hostResponseId,\n          response: { approved: approvedByHost },\n        },\n      ],\n    });\n    // continued may wait again, including for another action with identical arguments.\n  }\n}\n```\n\n`resumeRecoverable` continues execution without adding another user message. A recreated Session\nmust use the same session ID, canonical workspace, provider and model. Current hooks, permissions,\ntask restrictions and peer restrictions are checked again; approval never grants session-wide consent.\nA response with a reused ID and different content is refused. Existing saved decisions also bind\nordinary `resume`.\n\nWhile an execution waits, `run` refuses new input. `getPendingExecution()` returns its\n`executionId` and `requests`, including after a cancellation that ended the turn once the wait was\nsaved. A journaled `run`, `runRecoverable` or resume that fails (a storage failure, an unreconciled\neffect) while its tool calls are open in history also leaves the execution pending, with only the\nwaits whose effect never started in `requests`; resume it once the journal is readable, or abandon\nit. A failure after its rounds settled ends it like an ordinary turn.\n`abandonPendingExecution(executionId)` gives it up without running anything: its open tool calls\nare closed as failed in this Session's history and this Session can no longer resume it, but the\njournal is left untouched. Discard that execution's journal records yourself; otherwise a Session\nwithout this history, such as a fresh one, can still resume the execution from them.\n\nWaiting is returned only after request writes are durable and tools already running beside the\nwaiting one finish; calls not yet started stay pending. Cancellation interrupts running tools but\nstill waits for them to settle. Storage failures propagate, and uncertain effects raise a\nreconciliation error rather than being replayed. Turn-level lifecycle hooks are omitted on\ncontinuation because their effects lack durable receipts; structured-output recovery is unsupported.\nThis API alone does not provide arbitrary-effect recovery or durable Roundtable execution.\n\n## Features\n\n| Feature                    | Description                                                                                                                                                                                                                                                          |\n| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **Permission enforcement** | Every tool call is decided by `evaluatePermission` from `agent-core` (deny, ask and allow rules plus the permission mode). Approvals go to `permissionHandler` or `promptForApproval`; with neither, the call is denied.                                             |\n| **`auto` mode**            | `AutoModeGate` sends calls the mode would ask about to a `permissionClassifier`; after repeated blocks it falls back to asking a person                                                                                                                              |\n| **Hooks**                  | Fires `PreToolUse`, `PostToolUse`, `PermissionDecision`, `SessionStart`, `SessionEnd`, `UserPromptSubmit`, `Stop`, `StopFailure`, `PreCompact`, `PostCompact`, `PreModelCall` and `PostModelCall`. See the [hook event catalog](../agent-core/docs/HOOK-CATALOG.md). |\n| **Context tracking**       | Token usage from the shared core estimator, with a configurable auto-compact threshold (default 83.5% of the context window)                                                                                                                                         |\n| **Compaction**             | A model-written summary replaces the history to free context space; an invalid summary throws `CompactionError` and leaves the history untouched                                                                                                                     |\n| **Persistence**            | Inject an `IInteractiveSessionStore`; each completed `run()` and `shutdown()` save the record. `NodeSessionStore` writes JSON files atomically (temp file + rename)                                                                                                  |\n| **Abort**                  | `session.abort()` stops the running turn; `run()` then rejects with an `AbortError`                                                                                                                                                                                  |\n| **One turn at a time**     | A concurrent `run()` is refused with `SessionBusyError`; `isRunning()` is true until the running turn has fully unwound                                                                                                                                              |\n| **Session logging**        | `FileSessionLogger` writes versioned JSONL through an injected sink; `NodeSessionLogSink` is the file-system sink                                                                                                                                                    |\n| **Replay events**          | Provider and tool execution events from core are written to the log so a session can be replayed and validated                                                                                                                                                       |\n\n## Key Methods\n\n| Method                                                    | Description                                                                     |\n| --------------------------------------------------------- | ------------------------------------------------------------------------------- |\n| `constructor(options)`                                    | `ISessionOptions`; pass `sessionId` for a deterministic ID                      |\n| `run(message)`                                            | Send a message and return the response                                          |\n| `runRecoverable(message, options)`                        | Run with a recovery journal; returns a completed response or saved waits        |\n| `resumeRecoverable(options)`                              | Answer saved waits and continue that execution without new input                |\n| `getPendingExecution()`                                   | The execution whose saved waits block new input, if any                         |\n| `abandonPendingExecution(executionId)`                    | Give up that execution without running it, so new input is accepted             |\n| `injectMessage(role, content)`                            | Add a message to the history without running the agent                          |\n| `compact(instructions?)`                                  | Summarize the conversation to free context space                                |\n| `getContextState()`                                       | `{ usedTokens, maxTokens, usedPercentage, remainingPercentage }`                |\n| `getAutoCompactThreshold()`                               | Auto-compact threshold fraction, or `false` when disabled                       |\n| `getPermissionMode()` / `setPermissionMode(mode)`         | Read or change the permission mode                                              |\n| `getModelEffort()`                                        | The model-effort selection for the next call (`auto` when unset)                |\n| `getHistory()` / `clearHistory()`                         | Read or clear the conversation history                                          |\n| `addTools(tools)`                                         | Register more tools on a live session                                           |\n| `getProvider()` / `swapProvider(provider, model)`         | Read or replace the provider the session uses                                   |\n| `abort()`                                                 | Signal the running turn to stop (it holds the session until it unwinds)         |\n| `isRunning()`                                             | True while a turn is in flight, including one that was aborted and is unwinding |\n| `getSessionId()`                                          | The stable session identifier                                                   |\n| `getMessageCount()`                                       | Number of completed `run()` calls                                               |\n| `getSessionAllowedTools()` / `clearSessionAllowedTools()` | Approvals remembered for this session                                           |\n| `getRecentPermissionDenials()`                            | Calls this session refused, most recent first, with the reason                  |\n| `shutdown()`                                              | Fire `SessionEnd`, save the record and release the agent                        |\n\n## Public API\n\n| Export                                                                                                       | Kind                | Description                                                                              |\n| ------------------------------------------------------------------------------------------------------------ | ------------------- | ---------------------------------------------------------------------------------------- |\n| `Session`                                                                                                    | Class               | Wraps `Robota` with permissions, hooks, compaction, logging and persistence              |\n| `ISessionOptions`, `ISessionRunOptions`, `ISessionShutdownOptions`                                           | Types               | Constructor, run and shutdown options                                                    |\n| `SessionBusyError`, `TurnClaim`                                                                              | Classes             | The refusal of a concurrent turn, and the identity of the running turn                   |\n| `PermissionEnforcer`                                                                                         | Class               | Tool permission checks, hook execution and output truncation                             |\n| `consentScopeFor`                                                                                            | Function            | The permission pattern an \"allow for this session/project\" answer grants                 |\n| `AutoModeGate`, `IPermissionClassifier`                                                                      | Class, type         | The `auto` permission mode and the classifier port it calls                              |\n| `ContextWindowTracker`, `AUTO_COMPACT_THRESHOLD`                                                             | Class, const        | Token usage tracking and the default auto-compact threshold                              |\n| `CompactionOrchestrator`, `CompactionError`, `DEFAULT_COMPACTION_PROMPT`                                     | Class, error, const | Conversation compaction                                                                  |\n| `TPermissionHandler`, `TPermissionResult`                                                                    | Types               | Approval callback and its answer (`true`, `false`, `'allow-session'`, `'allow-project'`) |\n| `ITerminalOutput`, `ISpinner`                                                                                | Types               | Terminal I/O used for approval prompts                                                   |\n| `NodeSessionStore`                                                                                           | Class               | File-system JSON store for session records                                               |\n| `IInteractiveSessionRecord`, `IInteractiveSessionStore`                                                      | Types               | The persisted session record and store port (from `@robota-sdk/agent-interface-session`) |\n| `decodeInteractiveSessionRecord`, `decodeVersionedInteractiveSessionRecord`                                  | Functions           | Validate a stored record before use                                                      |\n| `serializeSessionArtifact`, `deserializeSessionArtifact`                                                     | Functions           | Export a session record to a portable artifact and import it again                       |\n| `scrubSensitiveKeys`, `isSensitiveKey`                                                                       | Functions           | Redact secret-looking keys (used by the logger; optional for artifacts)                  |\n| `CheckpointTree`                                                                                             | Class               | In-memory branching tree of checkpoint IDs (fork and switch between branches)            |\n| `FileSessionLogger`, `SilentSessionLogger`, `ISessionLogger`                                                 | Class, type         | JSONL session logger and the logger port                                                 |\n| `NodeSessionLogSink`, `NodeSessionLogSource`, `ISessionLogSink`, `ISessionLogSource`                         | Classes, types      | File-system log writer and reader, and their ports                                       |\n| `loadSessionLogEntries`, `decodeSessionLogEntries`, `SessionLogDecodeError`                                  | Functions, error    | Read and validate a session log                                                          |\n| `replaySessionLogEntries`, `validateSessionReplayLogEntries`                                                 | Functions           | Rebuild history from a log and report gaps                                               |\n| `SESSION_LOG_EVENT`, `SESSION_LOG_SCHEMA_VERSION`                                                            | Consts              | The log event vocabulary and schema version                                              |\n| `resolveSessionLogExternalPayloads`, `NodeExternalPayloadSource`, `createSessionLogExternalPayloadReference` | Functions, class    | Large log fields stored as separate payload files                                        |\n| `NodeToolResultSpillStore`                                                                                   | Class               | Stores oversized tool results in files for the life of the session                       |\n| `NodePromptHistoryFile`                                                                                      | Class               | Append-only prompt history file that can be read newest-first                            |\n\n`IContextWindowState` (the `getContextState()` result) is exported by `@robota-sdk/agent-core`.\n\n## Session vs Robota\n\n- **`Robota`** (`agent-core`): the raw agent — conversation, tools and plugins. No permissions, no\n  hooks.\n- **`Session`** (this package): `Robota` plus permissions, hooks, compaction, logging and\n  persistence. `@robota-sdk/agent-framework` builds its sessions from it.\n\n## Persistence\n\n`IInteractiveSessionRecord` carries the full conversation and resumable state. `NodeSessionStore`\nsaves the record without inspecting its payload. It is a host adapter: passing it a directory does\nnot establish workspace trust. `@robota-sdk/agent-framework` instead adapts a trusted project's\nstate storage to the same store port.\n\nWhen a `Session` re-saves an existing record, it keeps the fields it does not own and refreshes only\nits live conversation, history, prompt, schema, path and timestamp fields. A resumed session must\nreuse the record ID for its new turns to update that record; a session without a store stays\ntransient.\n\n## Session logs and replay\n\n`FileSessionLogger` writes versioned JSONL through an injected `ISessionLogSink`. It redacts common\nsecret fields and stores large fields as content-addressed JSON payload files under\n`{sessionId}.payloads/`. Streaming text deltas go to the log as `text_delta` events; keep\nhigh-frequency output in logs and the session record focused on resumable state.\n\n`Session.run()` forwards core execution events into the log, including `provider_request`,\n`provider_native_raw_payload`, `provider_stream_raw_delta`, `provider_response_raw`,\n`provider_response_normalized`, `assistant_message_committed`, `tool_batch_started`,\n`tool_execution_request`, `tool_execution_result`, `tool_message_committed` and `history_mutation`.\n`SESSION_LOG_EVENT` is the complete vocabulary that writers and readers share.\n\nReading is source-driven: `loadSessionLogEntries(source)` takes an explicit `ISessionLogSource` and\nnever turns a filename into file-system access on its own. Use `NodeSessionLogSource` when the\napplication owns the path. Every declared event is validated before replay, nested messages\nincluded; unknown events, malformed fields and unsupported versions raise `SessionLogDecodeError`,\nand unversioned logs are not accepted. Payload files are read with an aggregate byte budget and\nchecked for path escape, symlink replacement, size and hash mismatch; a failure is reported rather\nthan skipped. `replaySessionLogEntries` rebuilds the chat history from `history_mutation` events, and\n`validateSessionReplayLogEntries` reports missing provider or tool events.\n\nManual and automatic compaction carry one trigger value (`manual` or `auto`) to `PreCompact`,\n`PostCompact`, the `context_compact` log entry and `onCompactEvent`.\n\n## Legacy session migration\n\nFrom `packages/agent-session` in the repository, `node scripts/migrate-session-history.mjs\n--sessions-dir <absolute-directory>` backfills history in legacy session files. It rewrites the files\nin that directory, so back them up first. `node examples/verify-session-history-migration.mjs`\nchecks the conversion on disposable files without touching your sessions.\n\n## Dependencies\n\n- `@robota-sdk/agent-core` — the `Robota` agent, permissions, hooks and core types\n- `@robota-sdk/agent-interface-session` — the session record and store contracts\n- `@robota-sdk/agent-interface-execution` — background task contracts stored in the session record\n- `@robota-sdk/agent-file-authority` — bounded, root-relative file reads for log payloads\n\n## Documentation\n\n- [docs/SPEC.md](./docs/SPEC.md) — package contract, invariants and design decisions\n- [Hook event catalog](../agent-core/docs/HOOK-CATALOG.md)\n\n## License\n\nRobota is dual-licensed under the [GNU AGPL-3.0](../../LICENSE) or a [commercial license](../../COMMERCIAL.md). See [LICENSING.md](../../LICENSING.md).\n","readmeFilename":"README.md"}