{"_id":"@alma-harness/conversation","_rev":"8-b2af610ccd0d6657b00b1aed5acf01a4","name":"@alma-harness/conversation","dist-tags":{"latest":"0.10.2"},"versions":{"0.6.0":{"name":"@alma-harness/conversation","version":"0.6.0","license":"Apache-2.0","_id":"@alma-harness/conversation@0.6.0","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"3ec763b111f9b60a241809c5b209e3bd08542e99","tarball":"https://registry.npmjs.org/@alma-harness/conversation/-/conversation-0.6.0.tgz","fileCount":6,"integrity":"sha512-/JHbNx9T9HiCHf8eNo7SkFBXgmKIeW7Uo3QdX26vhSa4xNCbmqnTi3zTRrIbvAkRU/3r8l95gkjhqzRxqYqbRw==","signatures":[{"sig":"MEYCIQCMw5BxmdCnyB7FLzNDu83BCcYpn9bY06MMAkNmEUhmcQIhAJZ/BZExi03FQpHNc9Z8FHJefJKcA2dxgoo8Fu4eMMlN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68312},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-conversation-0.6.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/7b777bce744b59769b61e1708cdb40a7/alma-harness-conversation-0.6.0.tgz","_integrity":"sha512-/JHbNx9T9HiCHf8eNo7SkFBXgmKIeW7Uo3QdX26vhSa4xNCbmqnTi3zTRrIbvAkRU/3r8l95gkjhqzRxqYqbRw==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/conversation"},"_npmVersion":"11.18.0","description":"Governed buffered conversations for Alma.","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.16.3","vitest":"^3.2.4","@types/pg":"^8.15.4","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/core":"^0.6.0","@alma-harness/loop":"^0.6.0","@alma-harness/memory":"^0.6.0","@alma-harness/postgres":"^0.6.0","@alma-harness/execution":"^0.6.0","@alma-harness/single-call":"^0.6.0","@alma-harness/postgres-execution":"^0.6.0"},"peerDependencies":{"@alma-harness/core":"^0.6.0","@alma-harness/loop":"^0.6.0","@alma-harness/execution":"^0.6.0","@alma-harness/single-call":"^0.6.0"},"_npmOperationalInternal":{"tmp":"tmp/conversation_0.6.0_1788902326256_0.9201018734619038","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@alma-harness/conversation","version":"0.6.1","license":"Apache-2.0","_id":"@alma-harness/conversation@0.6.1","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"d62e71ac29a4de52978224aefc3fa36dcb7cf337","tarball":"https://registry.npmjs.org/@alma-harness/conversation/-/conversation-0.6.1.tgz","fileCount":6,"integrity":"sha512-DmbbicmQNR4LV6RVipZi3KwMllXC76smLJG7tSE++RinzGG7DMpvrLKxFcqUwWsuGM0k6V0ioR3h8tr25gshKg==","signatures":[{"sig":"MEUCIDzPfkYcIrnuOUpxtp4SFA921N3UbtqixTJdyXiqm4aOAiEAynGnIDMSMzq+RdipYVWgZ9PbPKTxKmT3i7zuPWbORDU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68312},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-conversation-0.6.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/bb4f6591ff5538d639e73aedc7ea6714/alma-harness-conversation-0.6.1.tgz","_integrity":"sha512-DmbbicmQNR4LV6RVipZi3KwMllXC76smLJG7tSE++RinzGG7DMpvrLKxFcqUwWsuGM0k6V0ioR3h8tr25gshKg==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/conversation"},"_npmVersion":"11.18.0","description":"Governed buffered conversations for Alma.","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.16.3","vitest":"^3.2.4","@types/pg":"^8.15.4","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/core":"^0.6.1","@alma-harness/loop":"^0.6.1","@alma-harness/memory":"^0.6.1","@alma-harness/postgres":"^0.6.1","@alma-harness/execution":"^0.6.1","@alma-harness/single-call":"^0.6.1","@alma-harness/postgres-execution":"^0.6.1"},"peerDependencies":{"@alma-harness/core":"^0.6.1","@alma-harness/loop":"^0.6.1","@alma-harness/execution":"^0.6.1","@alma-harness/single-call":"^0.6.1"},"_npmOperationalInternal":{"tmp":"tmp/conversation_0.6.1_1788905830979_0.7928147092780207","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@alma-harness/conversation","version":"0.7.0","license":"Apache-2.0","_id":"@alma-harness/conversation@0.7.0","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"c9e14844d75154771dbc7314a56c6fa42c3fe1c1","tarball":"https://registry.npmjs.org/@alma-harness/conversation/-/conversation-0.7.0.tgz","fileCount":6,"integrity":"sha512-pspD/uzjTPGj//Qew9TalP6EyPFhBgRYLsBftjDEAIFDulT+gQri9PxabfKt7K9x01n//MJPZDEGy/E6WsCtSw==","signatures":[{"sig":"MEYCIQCfvCfkS8b0Wra06Yq811XLbNxg6kSncoYWesIbmislvAIhALES0jyhvkyKa/YfZccBg/tt+R/liME8X/IbQQsSxECn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137148},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-conversation-0.7.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/3ae822309c501e0649e638583f3f6081/alma-harness-conversation-0.7.0.tgz","_integrity":"sha512-pspD/uzjTPGj//Qew9TalP6EyPFhBgRYLsBftjDEAIFDulT+gQri9PxabfKt7K9x01n//MJPZDEGy/E6WsCtSw==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/conversation"},"_npmVersion":"11.18.0","description":"Governed buffered and settled-step streaming conversations for Alma.","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.16.3","vitest":"^3.2.4","@types/pg":"^8.15.4","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/core":"^0.7.0","@alma-harness/loop":"^0.7.0","@alma-harness/memory":"^0.7.0","@alma-harness/postgres":"^0.7.0","@alma-harness/execution":"^0.7.0","@alma-harness/single-call":"^0.7.0","@alma-harness/postgres-execution":"^0.7.0"},"peerDependencies":{"@alma-harness/core":"^0.7.0","@alma-harness/loop":"^0.7.0","@alma-harness/execution":"^0.7.0","@alma-harness/single-call":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/conversation_0.7.0_1789137033120_0.0368957649621795","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@alma-harness/conversation","version":"0.8.0","license":"Apache-2.0","_id":"@alma-harness/conversation@0.8.0","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"a58fa35196984ae20bbd1d7f2df7770c35f4e320","tarball":"https://registry.npmjs.org/@alma-harness/conversation/-/conversation-0.8.0.tgz","fileCount":6,"integrity":"sha512-fyOVNXCqBnmvfx4oJdG1BCAF8i4D9FH1NnJIGBePY0OpF9EJylB/oLGhctpOHqT/L5Br5JUSWchCgl4Pk8SrWA==","signatures":[{"sig":"MEUCIFWEHGhyRqBjaaMWxR35u6JPxXtTOFN4Jq4jMbLyO4c1AiEAhXIJX6o64JCjJ6OCT6jzvN8laZQxaJ21c5QLsvlgt58=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137148},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-conversation-0.8.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/75db618f1747da724aca6ff4f2f1909f/alma-harness-conversation-0.8.0.tgz","_integrity":"sha512-fyOVNXCqBnmvfx4oJdG1BCAF8i4D9FH1NnJIGBePY0OpF9EJylB/oLGhctpOHqT/L5Br5JUSWchCgl4Pk8SrWA==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/conversation"},"_npmVersion":"11.18.0","description":"Governed buffered and settled-step streaming conversations for Alma.","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.16.3","vitest":"^3.2.4","@types/pg":"^8.15.4","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/core":"^0.8.0","@alma-harness/loop":"^0.8.0","@alma-harness/memory":"^0.8.0","@alma-harness/postgres":"^0.8.0","@alma-harness/execution":"^0.8.0","@alma-harness/single-call":"^0.8.0","@alma-harness/postgres-execution":"^0.8.0"},"peerDependencies":{"@alma-harness/core":"^0.8.0","@alma-harness/loop":"^0.8.0","@alma-harness/execution":"^0.8.0","@alma-harness/single-call":"^0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/conversation_0.8.0_1789155222800_0.3000927031051004","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@alma-harness/conversation","version":"0.9.0","license":"Apache-2.0","_id":"@alma-harness/conversation@0.9.0","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"7296378ad2c56daf0fe56dd8088aa2ba379649d0","tarball":"https://registry.npmjs.org/@alma-harness/conversation/-/conversation-0.9.0.tgz","fileCount":6,"integrity":"sha512-SW/F/aCPZaOnJfT9KD+/y1wjaWhvNX/L9Cb4tMCLKyEyd2tJ8FbzTx97GUbV4z2tw0vdfnuiVJSGvHls+BRUtw==","signatures":[{"sig":"MEYCIQDPRroWOMjTUFTMp4OkgutssAJA+im7Hubw0JTgiTJ1xgIhAOKBNYDEhoVnwWgAXjVnDi6+ONmigCsy+CJTrRtOqNTf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD17Amo1dPwmLhlydZcFMmwS1NFnsiO0jB2MM8tXbMcOgIgbiZoz1jloUYeqtpPiSDx4jlGV6IjUhx+LrwF5qXupWA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137148},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-conversation-0.9.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/5311e2ac99d94a7011e6d673e553ea3a/alma-harness-conversation-0.9.0.tgz","_integrity":"sha512-SW/F/aCPZaOnJfT9KD+/y1wjaWhvNX/L9Cb4tMCLKyEyd2tJ8FbzTx97GUbV4z2tw0vdfnuiVJSGvHls+BRUtw==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/conversation"},"_npmVersion":"11.18.0","description":"Governed buffered and settled-step streaming conversations for Alma.","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.16.3","vitest":"^3.2.4","@types/pg":"^8.15.4","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/core":"^0.9.0","@alma-harness/loop":"^0.9.0","@alma-harness/memory":"^0.9.0","@alma-harness/postgres":"^0.9.0","@alma-harness/execution":"^0.9.0","@alma-harness/single-call":"^0.9.0","@alma-harness/postgres-execution":"^0.9.0"},"peerDependencies":{"@alma-harness/core":"^0.9.0","@alma-harness/loop":"^0.9.0","@alma-harness/execution":"^0.9.0","@alma-harness/single-call":"^0.9.0"},"_npmOperationalInternal":{"tmp":"tmp/conversation_0.9.0_1789655874057_0.019517696892664915","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@alma-harness/conversation","version":"0.10.0","license":"Apache-2.0","_id":"@alma-harness/conversation@0.10.0","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"24dd5e4281c6974f9c9c3f0940f06110a875ed9f","tarball":"https://registry.npmjs.org/@alma-harness/conversation/-/conversation-0.10.0.tgz","fileCount":6,"integrity":"sha512-+lZ9QfDLfm/xFILoSq9xYH0RTWZnBJXfktKuxdJjmCbrBXRyMYi8Girii5ye1zomproHj2/udp6O5vos7SxwQQ==","signatures":[{"sig":"MEQCIGOZ0N31npeMf2PkIEgQKd+iUulNC09HR5j5RwyncVdgAiB+vrmJVojZ8HN+XjOFU6Wk07l0tbXX3WdrJKZDTee/Sg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDuGlM+zjt5oGMsu/+9OP/schxJnOHoZXyqu+fMerqZLQIgM1DCyFvjCV9mCXy9z88hXriQuY9TItbTXJ/sYd8bkM4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137967},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-conversation-0.10.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/a9b3f69bd761180f3c441927fac3ba36/alma-harness-conversation-0.10.0.tgz","_integrity":"sha512-+lZ9QfDLfm/xFILoSq9xYH0RTWZnBJXfktKuxdJjmCbrBXRyMYi8Girii5ye1zomproHj2/udp6O5vos7SxwQQ==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/conversation"},"_npmVersion":"11.18.0","description":"Governed buffered and settled-step streaming conversations for Alma.","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.16.3","vitest":"^3.2.4","@types/pg":"^8.15.4","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/core":"^0.10.0","@alma-harness/loop":"^0.10.0","@alma-harness/memory":"^0.10.0","@alma-harness/postgres":"^0.10.0","@alma-harness/execution":"^0.10.0","@alma-harness/single-call":"^0.10.0","@alma-harness/postgres-execution":"^0.10.0"},"peerDependencies":{"@alma-harness/core":"^0.10.0","@alma-harness/loop":"^0.10.0","@alma-harness/execution":"^0.10.0","@alma-harness/single-call":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/conversation_0.10.0_1789675255842_0.2804340312028868","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"@alma-harness/conversation","version":"0.10.1","license":"Apache-2.0","_id":"@alma-harness/conversation@0.10.1","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"7174128073bba1e36667cea5bbfe18b982922a69","tarball":"https://registry.npmjs.org/@alma-harness/conversation/-/conversation-0.10.1.tgz","fileCount":6,"integrity":"sha512-cBpLTjjoXdMfmHHcmyprxIsFLOHuamVqNN+zB3tXe0dM/jxgvmmurRuTZLKlzZXF52ZrGlX0PsLduuhfy4B2yw==","signatures":[{"sig":"MEQCICVa94pgUuIa8iDhP+S3sy36tZtAsF5chf9d2JqclH8dAiA/8xoBObx/uDsOw2vWKyKG638Fw/1kqKPQbnLTTrD/DA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC7R+7WtA7+gC43LMOpwyggQDA6DyMBvBBd7B1pp0+KUAIgUaP4H7MkHOd5XiLdmNzPELKlikuRe2Tbe06yWf7sImE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137967},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-conversation-0.10.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/6abca559f6ff4e6d2806f9ad3d07240a/alma-harness-conversation-0.10.1.tgz","_integrity":"sha512-cBpLTjjoXdMfmHHcmyprxIsFLOHuamVqNN+zB3tXe0dM/jxgvmmurRuTZLKlzZXF52ZrGlX0PsLduuhfy4B2yw==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/conversation"},"_npmVersion":"11.18.0","description":"Governed buffered and settled-step streaming conversations for Alma.","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.16.3","vitest":"^3.2.4","@types/pg":"^8.15.4","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/core":"^0.10.1","@alma-harness/loop":"^0.10.1","@alma-harness/memory":"^0.10.1","@alma-harness/postgres":"^0.10.1","@alma-harness/execution":"^0.10.1","@alma-harness/single-call":"^0.10.1","@alma-harness/postgres-execution":"^0.10.1"},"peerDependencies":{"@alma-harness/core":"^0.10.1","@alma-harness/loop":"^0.10.1","@alma-harness/execution":"^0.10.1","@alma-harness/single-call":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/conversation_0.10.1_1789680447020_0.7857867932731943","host":"s3://npm-registry-packages-npm-production"}},"0.10.2":{"_id":"@alma-harness/conversation@0.10.2","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"4bafaed5f9949ebf6e0460abc807ecbf37db76dd","tarball":"https://registry.npmjs.org/@alma-harness/conversation/-/conversation-0.10.2.tgz","fileCount":6,"integrity":"sha512-9UwaWWukyQ0+qdvCqIYskYbwpx4pPlafh3hqDpse6ohxKGRj/w62Y2f+acazWic3aw0UTb+arf1vBLKDhwtZJQ==","signatures":[{"sig":"MEQCICu2H5E9BjeU1Q4SoPq78Z1sOhAQahLyXkeDZK9aA0U8AiAL/eCDlTeZuCuKlAgqrG09Rcyx2Pc/VIM5e6INgld6Qw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCID/5m3PdFE9YxNUnfzV4xwCVkFsKKPShCzdYfrt2hAhkAiAQfBnZ0MxAkW+3uMPY1O/JIfzEDejF1VYfa5hILUHVPQ=="}],"unpackedSize":137967},"main":"./dist/index.js","name":"@alma-harness/conversation","type":"module","_from":"file:alma-harness-conversation-0.10.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"license":"Apache-2.0","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"version":"0.10.2","_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/da3dc3b59052e2dea3657a0ba03defdf/alma-harness-conversation-0.10.2.tgz","_integrity":"sha512-9UwaWWukyQ0+qdvCqIYskYbwpx4pPlafh3hqDpse6ohxKGRj/w62Y2f+acazWic3aw0UTb+arf1vBLKDhwtZJQ==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/conversation"},"_npmVersion":"11.18.0","description":"Governed buffered and settled-step streaming conversations for Alma.","directories":{},"maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.16.3","vitest":"^3.2.4","@types/pg":"^8.15.4","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/core":"^0.10.2","@alma-harness/loop":"^0.10.2","@alma-harness/memory":"^0.10.2","@alma-harness/postgres":"^0.10.2","@alma-harness/execution":"^0.10.2","@alma-harness/single-call":"^0.10.2","@alma-harness/postgres-execution":"^0.10.2"},"peerDependencies":{"@alma-harness/core":"^0.10.2","@alma-harness/loop":"^0.10.2","@alma-harness/execution":"^0.10.2","@alma-harness/single-call":"^0.10.2"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/conversation_0.10.2_1789687650535_0.8258194747067065"}}},"time":{"created":"2026-09-08T21:18:45.920Z","modified":"2026-09-17T23:27:30.793Z","0.6.0":"2026-09-08T21:18:46.401Z","0.6.1":"2026-09-08T22:17:11.140Z","0.7.0":"2026-09-11T14:30:33.252Z","0.8.0":"2026-09-11T19:33:42.942Z","0.9.0":"2026-09-17T14:37:54.140Z","0.10.0":"2026-09-17T20:00:55.918Z","0.10.1":"2026-09-17T21:27:27.124Z","0.10.2":"2026-09-17T23:27:30.626Z"},"bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"license":"Apache-2.0","homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/conversation"},"description":"Governed buffered and settled-step streaming conversations for Alma.","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"readme":"# @alma-harness/conversation\n\nGoverned buffered and settled-step streaming conversations. Use matching core, execution, loop\nand single-call packages. `createConversationRunner(config)` composes durable\nsession admission, operation roots, governed model steps and final result storage.\nIt is the sole conversation entrypoint; the standalone agent and its legacy\nlease/claim, streaming and financial writers have been removed (spec: retire-legacy-conversation-engine).\n\nSupply `step: GovernedStepConfig`, `admissions`, `rootResults`, `sessions`, ordinary\nagent prompt/policy/tools/profiles/hooks/media/recall options, `caps`, `prices`,\n`policyVersion`, `priceVersion`, `configRevision`, `resultContractVersion`,\n`resultRetentionMs`, `runTimeoutMs`, `maxCalls`, `maxInputChars` and `consumers`.\n`runTimeoutMs` is at most five minutes. Clients must be single-dispatch. Ordinary\nconfiguration is copied; store/client/policy/schema implementations and revision\nmappings are trusted host capabilities. Tools use `ConversationTool` and receive\n`ConversationToolCtx`, including `models.direct({tier,sensitivity,prompt})` for a\nsingle tool-free child call, and the narrowing `models.delegate` gateway.\n\n`runTurn({scope,sessionId,idempotencyKey,input,intent,trigger?,toolProfile?,signal?})`\naccepts an inline user Msg and a required stable delivery key. It snapshots bounded\nplain JSON before I/O and derives scoped root identity and input/config bindings.\nRetries return original outcomes without renewing deadlines or dispatching again;\nchanged content/options/config conflicts. Use immutable media references, not inline\nwire content. Host configuration revisions must cover all behavior, and referenced\nmedia bytes must remain bound to the original request. Undefined optional object\nfields are omitted; arrays remain ordered. Non-JSON/accessor/cyclic/oversized input\nis rejected before admission. The canonical payload ceiling includes 4 KiB metadata\noverhead in addition to maxInputChars; traversal is bounded at 64 levels/100k nodes.\n\n`conversationRootKey(scope,sessionId,idempotencyKey)` lets a host call read without\nloading content. `createConversationDescriptor(config,input,deadlineAt)` is a pure\nhelper for explicit hosts interoperating with simple requests. `runTurn` also accepts\nexisting explicit input. Its reserved conversation-v1 identities use the same narrow\nclock-race rule: differing proposed deadlines reuse the first descriptor only if all\nother bindings match. This is a trusted-host convention, not proof of hashed content.\nArbitrary explicit roots keep exact binding semantics. Generic or lost claim ACKs\nnever grant ownership. Input signal is execution cancellation, not a socket signal.\n\nThe legacy `run` method is removed (spec: canonical-conversation-api-cutover).\nUse `runTurn` for both simple and explicit input. It always returns a Promise;\ninvalid input rejects that promise and can be handled with `.catch()`. Input\nnormalization and snapshot happen immediately during the call, before any await.\nConstructor and `streamTurn` validation remain synchronous.\n`@alma-harness/runtime/memory` and `/postgres` provide storage composition.\n\nCanonical APIs first observe the scoped admission and compare original bindings.\nMatching retries never resolve policy again. For unseen work, `policy.resolve`\nmust be synchronous, pure and bounded: it receives only a copied RoutingIntent,\nincluding task. A throw or absent selected client returns\n`{status:\"not_admitted\",reason:\"routing_unavailable\"}` before any claim, context,\nhook, provider validation or financial write. A final admission read takes\nprecedence if a matching competitor became visible; conflicts still reject.\nLookup failure or cancellation never claims a routing refusal.\n\nThis refusal is not durable and describes this invocation, not global absence.\n`read` returns null for an unadmitted key and may observe a later competing claim.\nFix the configuration with a new configRevision before retrying; do not retry a\nconfiguration refusal automatically. No receipt or session release is fabricated.\nSuccessful validation snapshots the complete main choice for all main steps;\nsummary/direct/delegate routing remains independent. Post-admission uncertainty\nstill retains occupancy, including pre-existing failed admissions.\n\n## Settled-step streaming\n\n`streamTurn(input)` accepts the same input as `runTurn` and starts the same engine\neagerly. It returns one async iterator and an independent `result` promise:\n\n```ts\nconst stream = runner.streamTurn(input);\ntry {\n  for await (const event of stream) {\n    if (event.type === \"text\") showProgress(event.step, event.text);\n    if (event.type === \"result\") showStatus(event.view.status);\n  }\n} catch (error) {\n  if (!(error instanceof ConversationStreamResyncError)) throw error;\n  // Resynchronize using runner.read(scope, originalRootKey).\n} finally {\n  const view = await stream.result; // Worker completion is independent of the reader.\n}\n```\n\nImport `ConversationStreamResyncError` from this package. Text spans arrive in\nmain-step block order only after settlement and fresh authorization; there are no\nprovider-token deltas. A preamble may be visible before a later tool failure, cap\nstop or uncertain root. Progress is not final completion and concatenated progress\nis not generally the final reply. Final-message channels should use `runTurn`.\n\nProgress tool/provider events contain metadata only; reasoning and child output\nare withheld. Usage events are original main-call receipts; child costs can make\nthe final total larger than their sum. The terminal `result` event preserves the\nexisting host-facing ConversationView, including authorized tool/provider blocks\nin its reply. Chat renderers select text blocks rather than serializing the envelope.\nFresh root authorization precedes final delivery and preserves owner/replay flags.\n\nBreak, return, throw and socket closure detach only the reader. Keep the worker\nalive and await `result` separately; never wire socket close to input.signal.\nOnly that execution signal/deadline cancels execution. Detach is not durable\nbackground scheduling, and uncertain execution still requires reconciliation.\n\nEach stream permits one iterator and one pending next. Queues hold references,\nnot output, with limits of 128 references and 256 KiB metadata. Overflow, erased/\nexpired/denied step output or a failed authorization read detach with typed reasons\n`overflow`, `unavailable`, or `read_failed`. Reconnect through `read`; there is no\ndurable intermediate replay. A late first iterator after result settlement receives\nonly a freshly authorized final view, unless already overflowed. That view may be\nunavailable after erasure even if the earlier result promise completed. Detached\niterators cannot reattach, and pending store reads cannot deliver late events.\n\n`runTurn({root,intent,loadInput,trigger?,toolProfile?,signal?})` requires the root's\nclosed request descriptor. Its configuration/output versions and retention must\nmatch construction, caps must match, maxCalls may narrow, and the declared root\nsensitivity must equal the intent. The host assigns inputRevision to the complete\nimmutable request, including profile/trigger/intent. Changed metadata conflicts\nbefore content access; never accept browser/model identities as authority.\nThe root ID is the turn ID; only the runner allocates child slots, IDs and parents.\n\nAdmission, root claim and pending final-result reservation precede loadInput,\nhooks, recall, history and media. Busy/replayed requests run nothing. Successful\nsteps expose usable output only behind governed receipts. Main, direct, delegate\nand cold-start summary calls share the root; inclusive totals are not new charges.\nExplicit warn caps preserve results. Numeric/explicit block caps retain their\nstopping behavior, including zero-cost preflight refusal. The legacy SpendStore.add\nand AuditLog.cost writers are never called by this runner.\n\n## Final results and deployment\n\n`rootResults` MUST be physically separate from `step.results`. For PostgreSQL,\ncreate a dedicated schema and pool whose search_path resolves only that schema,\nthen use migrateExecutionResultStore/PostgresExecutionResultStore there. Configure\nthe same scoped roles and grant schema USAGE. Object inequality is checked but\ncannot prove database isolation: two adapters pointing to the same table are an\ninvalid host composition. Final IDs are scoped root keys in this namespace; no\nbillable call or ordinal is fabricated. Do not use untrusted search_path entries.\n\nDeploy all execution/accounting/admission migrations before the matching readers.\nRegister both result namespaces and sessions in host erasure/retention workflows;\ncreateMemoryErasure's single results handle alone cannot cover both. Erasure or\nexpiry of completed output returns unavailable and never regenerates content.\nProvider live smokes, publication and product delivery are separate evidence.\n\n## Completion and reconciliation\n\nThe result is a status view: completed with a TurnResult, busy with a root key,\nin_progress, reconciliation_required, unavailable, or a non-durable not_admitted\nrouting refusal. `read(scope,key)` rechecks\nadmission, closed root, financial completion and authorized final content. It does\nnot dispatch, repair effects or load conversation context. Replays retain original\nusage/cost and mark `replayed: true`; do not add them to new spend. Root warnings\nare historical deduplicated evidence; notification delivery is a host concern.\n\nNormal completion awaits handlers/children, append and turn:end, closes the root,\npersists and rechecks the final envelope, then finishes admission. A lost finish\nACK is accepted only after reading back matching owner release, never operator\nresolution. Other uncertain writes, failures, cancellation and timeouts retain\noccupancy for explicit operator reconciliation. Available content alone is not\nproof of session/effect completion. No runner path calls resolve or retries append.\nIf the public timeout races with an already-started finish after all work is\nquiescent, that finish may commit later; a subsequent read can verify completion.\nThis exception never authorizes a finish after an earlier uncertain operation.\n\nHandlers MUST await all external work. The harness tracks started model children,\npoisons swallowed child failures, and revokes gateways after each handler settles;\nit cannot discover arbitrary detached work hidden inside trusted host code. An\nordinary handler rejection is uncertain even if labelled read-only. Hanging or\nfailed context/hook work cannot authorize further effects. Timed-out dependencies\nmay finish late; settlement evidence can drain in the background, but the turn\nnever resumes automatically. Operators must reconcile effects/writes and establish\nquiescence before resolution. Use the step runner's recovery APIs for accounting;\nthat does not complete a conversation.\n\nGoverned output preserves cross-category block order and omits reasoning from the\nreply. Refusal/truncation obey the governed-step output contract. There is no\ntoken streaming or automatic reactive context-window retry. Cold-start rotation\nis supported; uncertain provider failures require reconciliation. Batch/routines,\nhistory import and channel delivery remain separate adoption work.\n\nThe full PostgreSQL-backed gate exercises deterministic conversation composition,\nseparate result namespaces, durable replay/erasure and lost append acknowledgements.\nNo Prumo tour scene is added here: its source budget is nearly full, and the new\ncapability's executable acceptance path is packages/conversation/test. A tour\nintegration needs a separate budget-preserving scene slice.\n\n\nTools can use `ctx.models.tryDelegate` to handle structural delegation refusals.\nReturning that exact invocation-local object emits an error tool result while the\nparent continues. A refusal is not evidence that the handler had no effects;\nthrowing handlers, failed siblings, outstanding children and persistence failures\nstill require reconciliation. The existing `delegate` method retains its throwing\ncontract. S5 demonstrates explicit forwarding and settled parent/child accounting.\n\n### Safe context rotation\n\nCold rotation is unchanged. Reactive rotation requires a retained, authorized\nAnthropic pre-generation rejection plus its original zero call/root receipts.\nOne summary and one replacement main call use new child identities under the\nsame root/caps/deadline. Generic errors, ordinary zero usage, contradictory\ncontent, erased/expired proof, lost acknowledgements and cancellation cannot\npermit continuation. Earlier tools are never replayed. The OpenAI/OpenRouter\nparity exception remains for consolidated maintainer acceptance before cutover\n(spec: safe-context-rejection-rotation).\n\nWhen an attested refusal finishes without another rotation (no policy, no removable\nhead, or a second refusal), the view is `completed`, `result.terminalReason` is\n`completed`, `result.stopReason` is `context_window_exceeded`, and\n`result.reply.blocks` is empty. **Hosts must inspect stopReason**, not just the\ncompleted status: show a context-limit outcome instead of delivering a blank answer\nas success. This replaces the legacy typed, retryable window error. The same admitted\nkey replays the original outcome; it does not retry the provider. A new attempt\nrequires a deliberate host decision and an appropriate context change. Generic\nprovider errors without attestation still require reconciliation.\n\nThe four product-visible differences (main-only progress usage, unpersisted input\nafter a start-hook failure, withheld truncated tool closures, and completed context\nrefusal) are enumerated for explicit owner acceptance in the\n[review packet](../../docs/unification-review.md#product-contract-acceptance).\n\nPrivate feature tests exercise volatile context, reasoning persistence and\nparent/delegate request-control isolation through this canonical API. Scripted\nusage remains explicit; missing evidence is never converted into a free call.\n\nDeferred and provider-tool integration tests use the same canonical fixture,\nincluding grant isolation, settled search receipts, pause continuation and\nuncertainty when a search cannot be priced.\n\nMedia/wire tests also cover explicit lazy inline input, reference-only simple\ninput, history replay and truncation suppression with retained receipts.\n\nFinancial feature tests pin requested versus served tier pricing, root warning\nattribution, sibling blocks and rejection of the removed per-turn override surface.\n\nOutput/text feature tests preserve tool ceilings and redaction, measured recall,\nUnicode repair for tools, invalid provider-text refusal and owning reply identity.\n\nRecall feature tests distinguish normal content gating from source uncertainty,\npre-admission cancellation and delegate sensitivity, with bounded timeout evidence.\n\nHook-boundary tests preserve request narrowing and shape-only trails, including\nretained uncertainty after sink failure or mutation of frozen hook input.\n\nRecall uses the loop's single deadline with lifecycle-guarded source access.\nCancellation clears the timer even if the source never settles; late source\nresults cannot append, dispatch or release uncertain session ownership.\n\nBasic engine feature tests cover schema/scope, profiles, nested grants and actual\nroot/call correlation. Structural delegation refusals are explicit; execution\nfailures retain uncertainty and suppress subsequent host lifecycle effects.\n\nConstruction rejects missing or noncallable spend readers. Persistent-cap tests\nuse original governed receipts and counters, including tenant isolation and\nretained uncertainty when reads or settlement fail.\n\nLifecycle tests pin listener cleanup, frozen registration and awaited audit failures.\nA pre-aborted request is never admitted; a poisoned start hook leaves buffered input\nunpersisted. The final append is one user/assistant batch. Failure views withhold\nprivate errors and partial replies while original known receipts remain readable.\n\nFinal integration parity covers complete replay snapshots, daily budget-stop replay,\nno TTL takeover, main-only steps and duration before end hooks, cold summary history,\nand documented settled-stream consumption. The [test ledger](../../docs/legacy-conversation-test-ledger.md)\nmaps all remaining legacy cases and their explicitly superseded contracts.\n\nMalformed cap configuration rejects with TypeError from the canonical financial\nnormalizer, replacing legacy AgentConfigError. Invalid path scope rejects with\nInvalidScopeError before admission. Neither error authorizes execution.\n\nTool selection remains host-owned at the model-request boundary. The governed\nstep projection retains `toolChoice` in execution controls, while `step:pre`\ncannot inject or change it, on parent or delegated steps. No global conversation\nselection setting is added: one-call structured extraction uses the existing\n`createGovernedStepRunner` from `@alma-harness/single-call` without session append,\nrecall or automatic memory extraction.\nThe text-only `ctx.models.direct` gateway rejects a supplied toolChoice rather\nthan discarding it; invalid child work retains the normal uncertain lifecycle.\n","readmeFilename":"README.md"}