{"_id":"@aatosolavi/librarian","_rev":"19-89201c8d5ce48e3ab4e5f672780d28c0","name":"@aatosolavi/librarian","dist-tags":{"latest":"0.2.18"},"versions":{"0.1.1":{"name":"@aatosolavi/librarian","version":"0.1.1","license":"UNLICENSED","_id":"@aatosolavi/librarian@0.1.1","maintainers":[{"name":"aatosolavi","email":"aatos@akvilander.com"}],"bin":{"librarian-tui":"librarian-tui.js","librarian-sync":"librarian-sync.js"},"dist":{"shasum":"18fb57936975610c899eac04549895677a1ecccf","tarball":"https://registry.npmjs.org/@aatosolavi/librarian/-/librarian-0.1.1.tgz","fileCount":4,"integrity":"sha512-L6KWtpM0mnE1uX6xHiy29R7R96FsqhvAETfBkpUSYyRt2qLPa3eMvYgnB3iiMozTloyakFUZknUC1Yjkp0CSVA==","signatures":[{"sig":"MEUCIQD4pH5ZzLw8KlyxwCb6qhXsM8071pH8hjY6ytMliMwiAQIgES853Mc9Xx2z8PUgfVWZzXhORrPqY4PwB2Ujfj1KMmQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46191},"type":"module","engines":{"npm":">=11 <13","node":"24.x"},"scripts":{"test":"node --test librarian-tui.test.mjs librarian-sync.test.mjs"},"_npmUser":{"name":"aatosolavi","email":"aatos@akvilander.com"},"_npmVersion":"11.16.0","description":"Thin command-line clients for the Librarian service","directories":{},"_nodeVersion":"24.18.0","dependencies":{"eve":"0.27.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/librarian_0.1.1_1784807591320_0.8895508362328295","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@aatosolavi/librarian","version":"0.1.3","license":"UNLICENSED","_id":"@aatosolavi/librarian@0.1.3","maintainers":[{"name":"aatosolavi","email":"aatos@akvilander.com"}],"bin":{"librarian-tui":"librarian-tui.js","librarian-sync":"librarian-sync.js"},"dist":{"shasum":"a80eed211d677a6eb7362a2df1673d9c1ceaf892","tarball":"https://registry.npmjs.org/@aatosolavi/librarian/-/librarian-0.1.3.tgz","fileCount":4,"integrity":"sha512-QJw6iJ5fAkxu/BnaeV7qdGEdkhWOGIzbGQy9HljN8tGK/sKdenQFYeP4HxfOfQb6okQA2KIWGxpOxOYsVgH04Q==","signatures":[{"sig":"MEQCIH2Tejz5/7UcXT/Y9LR6K2xwdGEZBDPN4NpIDk8ljIwDAiA/H0epobffaAoYr0WSOlnUwzOysw3kpiwoA1KhPT+Q5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47534},"type":"module","engines":{"npm":">=11 <13","node":"24.x"},"scripts":{"test":"node --test librarian-tui.test.mjs librarian-sync.test.mjs"},"_npmUser":{"name":"aatosolavi","email":"aatos@akvilander.com"},"_npmVersion":"11.16.0","description":"Thin command-line clients for the Librarian service","directories":{},"_nodeVersion":"24.18.0","dependencies":{"eve":"0.27.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/librarian_0.1.3_1784808041002_0.27444180647155725","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@aatosolavi/librarian","version":"0.1.4","license":"UNLICENSED","_id":"@aatosolavi/librarian@0.1.4","maintainers":[{"name":"aatosolavi","email":"aatos@akvilander.com"}],"homepage":"https://librarian.portrait.md","bugs":{"url":"https://github.com/aatosolavi/librarian/issues"},"bin":{"librarian":"librarian.js","librarian-tui":"librarian-tui.js","librarian-sync":"librarian-sync.js"},"dist":{"shasum":"bb573487e06fd936c6def9eebcdda63b6b2e5a2a","tarball":"https://registry.npmjs.org/@aatosolavi/librarian/-/librarian-0.1.4.tgz","fileCount":10,"integrity":"sha512-XvdCdBQ0pjUcPb7lw1BM5oU8KQRexSVieIJxLyJwkWskCJPpKH9I25FvM/ImJa+CjA3VFjQoonMc+7xMjSLtmQ==","signatures":[{"sig":"MEUCIGI3rpW0A/arrooMmHE0bYGy5yfAaw2WZu+0bIE+cQOzAiEAnLdcQrS7mNL9n0MIkBPMEuitYwLu72/8wMyt3lxwFaA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":159694},"type":"module","engines":{"npm":">=11 <13","node":"24.x"},"gitHead":"28e5c916ea9c2378641ac9c105ea7497418b4d21","scripts":{"test":"node --test librarian.test.mjs librarian-tui.test.mjs librarian-sync.test.mjs librarian-commit-sync.test.mjs librarian-diff3.test.mjs librarian-porcelain.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a7b1a3a0-0771-481f-b579-ea9896e62ba5"}},"repository":{"url":"git+https://github.com/aatosolavi/librarian.git","type":"git"},"_npmVersion":"12.0.1","description":"Thin command-line clients for the Librarian service","directories":{},"_nodeVersion":"24.18.0","dependencies":{"eve":"0.27.1","agentfs-sdk":"0.6.4","@vercel/blob":"2.6.1"},"publishConfig":{"access":"public","provenance":false},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/librarian_0.1.4_1784967776469_0.13811506976688936","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@aatosolavi/librarian","version":"0.1.5","license":"UNLICENSED","_id":"@aatosolavi/librarian@0.1.5","maintainers":[{"name":"aatosolavi","email":"aatos@akvilander.com"}],"homepage":"https://librarian.portrait.md","bugs":{"url":"https://github.com/aatosolavi/librarian/issues"},"bin":{"librarian":"librarian.js","librarian-tui":"librarian-tui.js","librarian-sync":"librarian-sync.js"},"dist":{"shasum":"b1ec03d72cce39727e7ecdd1e6eefe369c0dbd56","tarball":"https://registry.npmjs.org/@aatosolavi/librarian/-/librarian-0.1.5.tgz","fileCount":11,"integrity":"sha512-KwoWmaXrpnWhX1VIK7Bd60fifagymGH7NapftTEqPbBtaH8V5UODxH/2dFZyUBxU7RFStyZiqI/Jfj/UvUz/hw==","signatures":[{"sig":"MEQCIBs+OUw+fndUXaYGyazpH9IuT3HX5remlkp3D0dzmAjLAiAjOlft9hzkfsw/3pDW6bycq0VVtYClFlPBxec5HucCuw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":158997},"type":"module","engines":{"npm":">=11 <13","node":"24.x"},"gitHead":"3098442da3eff241952c55d996a43e2b149645f2","scripts":{"test":"node --test librarian.test.mjs librarian-tui.test.mjs librarian-sync.test.mjs librarian-commit-sync.test.mjs librarian-diff3.test.mjs librarian-porcelain.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a7b1a3a0-0771-481f-b579-ea9896e62ba5"}},"repository":{"url":"git+https://github.com/aatosolavi/librarian.git","type":"git"},"_npmVersion":"12.0.1","description":"Thin command-line clients for the Librarian service","directories":{},"_nodeVersion":"24.18.0","dependencies":{"eve":"0.27.6","agentfs-sdk":"0.6.4","@vercel/blob":"2.6.1"},"publishConfig":{"access":"public","provenance":false},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/librarian_0.1.5_1784993321874_0.7592466093494639","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@aatosolavi/librarian","version":"0.1.6","license":"UNLICENSED","_id":"@aatosolavi/librarian@0.1.6","maintainers":[{"name":"aatosolavi","email":"aatos@akvilander.com"}],"homepage":"https://librarian.portrait.md","bugs":{"url":"https://github.com/aatosolavi/librarian/issues"},"bin":{"librarian":"librarian.js","librarian-tui":"librarian-tui.js","librarian-sync":"librarian-sync.js"},"dist":{"shasum":"bc1b38d970d05d1da72077bea05bb647c396fc9f","tarball":"https://registry.npmjs.org/@aatosolavi/librarian/-/librarian-0.1.6.tgz","fileCount":11,"integrity":"sha512-eOI8fkQvYinVvSnWUKJEPGgKFu7zM//CvdwnRQRn06mt0ukSKKGt4dtIHcPuRtNvs462Ce73xFFq36zAP3eX+g==","signatures":[{"sig":"MEYCIQDRnXQS2pAbnrTIW+xv+slOgwvX/sKqa5bg0LBJ4qkLMgIhAP1RdWFvYN0FSgEFt/HK/QP64K6TrmYqAIFqmfG3ZmzV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":164426},"type":"module","engines":{"npm":">=11 <13","node":"24.x"},"gitHead":"3b55ddc30cdc24e66672973632c7da3c8b5ac58f","scripts":{"test":"node --test librarian.test.mjs librarian-tui.test.mjs librarian-sync.test.mjs librarian-commit-sync.test.mjs librarian-diff3.test.mjs librarian-porcelain.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a7b1a3a0-0771-481f-b579-ea9896e62ba5"}},"repository":{"url":"git+https://github.com/aatosolavi/librarian.git","type":"git"},"_npmVersion":"12.0.1","description":"Thin command-line clients for the Librarian service","directories":{},"_nodeVersion":"24.18.0","dependencies":{"eve":"0.27.6","agentfs-sdk":"0.6.4","@vercel/blob":"2.6.1"},"publishConfig":{"access":"public","provenance":false},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/librarian_0.1.6_1784999819152_0.14190242259409813","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@aatosolavi/librarian","version":"0.1.7","license":"UNLICENSED","_id":"@aatosolavi/librarian@0.1.7","maintainers":[{"name":"aatosolavi","email":"aatos@akvilander.com"}],"homepage":"https://librarian.portrait.md","bugs":{"url":"https://github.com/aatosolavi/librarian/issues"},"bin":{"librarian":"librarian.js","librarian-tui":"librarian-tui.js","librarian-sync":"librarian-sync.js"},"dist":{"shasum":"782c46a6447db19d7053278cec4f821534f36c19","tarball":"https://registry.npmjs.org/@aatosolavi/librarian/-/librarian-0.1.7.tgz","fileCount":11,"integrity":"sha512-faBbvS77bgepzIvycqLvs3cv+TNzUKNMuynTNo3uOG8cuByMK/czW9yvF3v9WU6U1ehQCbvcCuZ/1I4jNvUo/g==","signatures":[{"sig":"MEQCIG1rbAKlEIAy3HqcuGbiaa8GIaNP+OsgcG2oyO8fXP5KAiA9sBn3ISsLGJPbjfoNA5xt6/vVHcSlOyHz+Ot3C+WKxQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":164514},"type":"module","engines":{"npm":">=11 <13","node":">=24"},"gitHead":"50bafd890644bbee2f93d7e95e979b51f6385ca3","scripts":{"test":"node --test librarian.test.mjs librarian-tui.test.mjs librarian-sync.test.mjs librarian-commit-sync.test.mjs librarian-diff3.test.mjs librarian-porcelain.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a7b1a3a0-0771-481f-b579-ea9896e62ba5"}},"repository":{"url":"git+https://github.com/aatosolavi/librarian.git","type":"git"},"_npmVersion":"12.0.1","description":"Thin command-line clients for the Librarian service","directories":{},"_nodeVersion":"24.18.0","dependencies":{"eve":"0.27.6","agentfs-sdk":"0.6.4","@vercel/blob":"2.6.1"},"publishConfig":{"access":"public","provenance":false},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/librarian_0.1.7_1785053920591_0.6342753488900978","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@aatosolavi/librarian","version":"0.1.8","license":"UNLICENSED","_id":"@aatosolavi/librarian@0.1.8","maintainers":[{"name":"aatosolavi","email":"aatos@akvilander.com"}],"homepage":"https://librarian.portrait.md","bugs":{"url":"https://github.com/aatosolavi/librarian/issues"},"bin":{"librarian":"librarian.js","librarian-tui":"librarian-tui.js","librarian-sync":"librarian-sync.js"},"dist":{"shasum":"a791193155ba4f5c7f6e3299db858e8e3ae187e2","tarball":"https://registry.npmjs.org/@aatosolavi/librarian/-/librarian-0.1.8.tgz","fileCount":11,"integrity":"sha512-jXm5dbAPP3jPBoqPsbg5+Q4D9gNrRAREsBcYsIviU4ULJx5Pw6maa8Ql/EZlfJozovtiMsqHPfzp6g9DbNgtXA==","signatures":[{"sig":"MEUCIDp+Q42il4jcr32EDOy3VZKTjaVVNh6qGvoR2x4AW/B7AiEA4DEPuBHlwCr7dTubERDalo9QeAwC1kk184SsPrz/Kc4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":164831},"type":"module","engines":{"npm":">=11 <13","node":">=24"},"gitHead":"129653a8da34cc8159e13576d78e8ea4c4ab9938","scripts":{"test":"node --test librarian.test.mjs librarian-tui.test.mjs librarian-sync.test.mjs librarian-commit-sync.test.mjs librarian-diff3.test.mjs librarian-porcelain.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a7b1a3a0-0771-481f-b579-ea9896e62ba5"}},"repository":{"url":"git+https://github.com/aatosolavi/librarian.git","type":"git"},"_npmVersion":"12.0.1","description":"Thin command-line clients for the Librarian service","directories":{},"_nodeVersion":"24.18.0","dependencies":{"eve":"0.27.6","agentfs-sdk":"0.6.4","@vercel/blob":"2.6.1"},"publishConfig":{"access":"public","provenance":false},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/librarian_0.1.8_1785070249130_0.14632359631344127","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aatosolavi/librarian","version":"0.2.0","license":"UNLICENSED","_id":"@aatosolavi/librarian@0.2.0","maintainers":[{"name":"aatosolavi","email":"aatos@akvilander.com"}],"homepage":"https://librarian.portrait.md","bugs":{"url":"https://github.com/aatosolavi/librarian/issues"},"bin":{"librarian":"librarian.js","librarian-tui":"librarian-tui.js"},"dist":{"shasum":"c6116080cc7acd90aa588b8a4a79e54060cd6812","tarball":"https://registry.npmjs.org/@aatosolavi/librarian/-/librarian-0.2.0.tgz","fileCount":9,"integrity":"sha512-hlwb0fRpBcE9bwEMmo187r58D/mItjUWN5iK7YeypVrkiqT/KcVSN7Qrxp1mJB0Xv7v38/Ui50qh3vq35gAuUg==","signatures":[{"sig":"MEUCIQDOyxVuCLRR2jZEoxCdUGPmFZCyA6fBh9uOqd73UVGQ5AIgHbbi6qXsXuByiun6E4XJrqGQ6EdNRQVF4SNGearABe8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130307},"type":"module","engines":{"npm":">=11 <13","node":">=24"},"gitHead":"97970c9df588a013a2f923104744ae9876f718d6","scripts":{"test":"node --test librarian.test.mjs librarian-tui.test.mjs librarian-sync.test.mjs librarian-diff3.test.mjs librarian-porcelain.test.mjs","pretest":"node ../../scripts/ensure-package-dist.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a7b1a3a0-0771-481f-b579-ea9896e62ba5"}},"repository":{"url":"git+https://github.com/aatosolavi/librarian.git","type":"git"},"_npmVersion":"12.0.1","description":"Thin command-line clients for the Librarian service","directories":{},"_nodeVersion":"24.18.0","dependencies":{"eve":"0.27.12","@vercel/blob":"2.6.1"},"publishConfig":{"access":"public","provenance":false},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/librarian_0.2.0_1785317531122_0.5999874655199586","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@aatosolavi/librarian","version":"0.2.1","license":"UNLICENSED","_id":"@aatosolavi/librarian@0.2.1","maintainers":[{"name":"aatosolavi","email":"aatos@akvilander.com"}],"homepage":"https://librarian.portrait.md","bugs":{"url":"https://github.com/aatosolavi/librarian/issues"},"bin":{"librarian":"librarian.js","librarian-tui":"librarian-tui.js"},"dist":{"shasum":"2387e6a5e12179b39126891410edda179d0da41f","tarball":"https://registry.npmjs.org/@aatosolavi/librarian/-/librarian-0.2.1.tgz","fileCount":9,"integrity":"sha512-FPl+sk1McpGzX9U4Iv/fCCWikovVvsbJRGKHkXbo49pAry63cKB6WZJeiOminDHcppWCgRr8hV/l+gwe8P381w==","signatures":[{"sig":"MEUCIQDWLxzOc9KxRUdX3BXGKUXPOvGDrbfSCipv5Z6M0AX9iQIgPG1T4/7PiVb9oZ9B37HR4/tVSBAAKUwYJ8GQ1M8Rz3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143654},"type":"module","engines":{"npm":">=11 <13","node":">=24"},"gitHead":"87420dafca56f29adc6661ffa276c251b331623a","scripts":{"test":"node --test librarian.test.mjs librarian-tui.test.mjs librarian-sync.test.mjs librarian-diff3.test.mjs librarian-porcelain.test.mjs","pretest":"node ../../scripts/ensure-package-dist.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a7b1a3a0-0771-481f-b579-ea9896e62ba5"}},"repository":{"url":"git+https://github.com/aatosolavi/librarian.git","type":"git"},"_npmVersion":"12.0.1","description":"Thin command-line clients for the Librarian service","directories":{},"_nodeVersion":"24.18.0","dependencies":{"eve":"0.27.12","@vercel/blob":"2.6.1"},"publishConfig":{"access":"public","provenance":false},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/librarian_0.2.1_1785342731258_0.7554472443489177","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@aatosolavi/librarian","version":"0.2.2","license":"UNLICENSED","_id":"@aatosolavi/librarian@0.2.2","maintainers":[{"name":"aatosolavi","email":"aatos@akvilander.com"}],"homepage":"https://librarian.portrait.md","bugs":{"url":"https://github.com/aatosolavi/librarian/issues"},"bin":{"librarian":"librarian.js","librarian-tui":"librarian-tui.js"},"dist":{"shasum":"d6be1d1b341b3344186b0bf85a234c39489fde0e","tarball":"https://registry.npmjs.org/@aatosolavi/librarian/-/librarian-0.2.2.tgz","fileCount":9,"integrity":"sha512-afcO59k/iAQNwvlRYPT0bFeDbigPkxxwmWpb/tfXjjDQeEyGy+GB+XTWhLJ3XK1MLxAETpiW8FV7tiO/67jpCQ==","signatures":[{"sig":"MEUCIG4VHSh65VMdgX+D0XnYsquZdi3R1JHXrgT0lA3BlTmgAiEA4+TzUmm92Wqqeyewnad23jhznL8yQApoBU0uzXkrMUg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145496},"type":"module","engines":{"npm":">=11 <13","node":">=24"},"gitHead":"4b46dfd18ca19790b34f83db48c5b6f9e2cad83c","scripts":{"test":"node --test librarian.test.mjs librarian-tui.test.mjs librarian-sync.test.mjs librarian-diff3.test.mjs librarian-porcelain.test.mjs","pretest":"node ../../scripts/ensure-package-dist.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a7b1a3a0-0771-481f-b579-ea9896e62ba5"}},"repository":{"url":"git+https://github.com/aatosolavi/librarian.git","type":"git"},"_npmVersion":"12.0.1","description":"Thin command-line clients for the Librarian service","directories":{},"_nodeVersion":"24.18.0","dependencies":{"eve":"0.27.12","@vercel/blob":"2.6.1"},"publishConfig":{"access":"public","provenance":false},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/librarian_0.2.2_1785346532661_0.8437163885976464","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@aatosolavi/librarian","version":"0.2.4","license":"UNLICENSED","_id":"@aatosolavi/librarian@0.2.4","maintainers":[{"name":"aatosolavi","email":"aatos@akvilander.com"}],"homepage":"https://librarian.portrait.md","bugs":{"url":"https://github.com/aatosolavi/librarian/issues"},"bin":{"librarian":"librarian.js","librarian-tui":"librarian-tui.js"},"dist":{"shasum":"87731f02927db6eb4ffb81893113610fa0f2c9b3","tarball":"https://registry.npmjs.org/@aatosolavi/librarian/-/librarian-0.2.4.tgz","fileCount":9,"integrity":"sha512-ntPLJ+cd/ozvrweV1iyTbAbrhph3+FHNCnuvVF+rjLs1DiZ1Fh9+EIUj1yqo+krPUlTQI0ChU5tnXO5YcVmw9w==","signatures":[{"sig":"MEQCIBEicBf3JlftF8eQ4Q9hdLWUqAij4B/5O6gVFCJ0lzxZAiB1XSaLuo86ISXocBefz9ynUL0Y7sxXQ8viOYzULMgZ+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":148108},"type":"module","engines":{"npm":">=11 <13","node":">=24"},"gitHead":"0a9983729c1947fd5b55ec6c6449aaeed5d72bfe","scripts":{"test":"node --test librarian.test.mjs librarian-tui.test.mjs librarian-sync.test.mjs librarian-diff3.test.mjs librarian-porcelain.test.mjs","pretest":"node ../../scripts/ensure-package-dist.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a7b1a3a0-0771-481f-b579-ea9896e62ba5"}},"repository":{"url":"git+https://github.com/aatosolavi/librarian.git","type":"git"},"_npmVersion":"12.0.2","description":"Thin command-line clients for the Librarian service","directories":{},"_nodeVersion":"24.18.0","dependencies":{"eve":"0.29.3","@vercel/blob":"2.6.1"},"publishConfig":{"access":"public","provenance":false},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/librarian_0.2.4_1785512749563_0.14160446412927685","host":"s3://npm-registry-packages-npm-production"}},"0.2.10":{"name":"@aatosolavi/librarian","version":"0.2.10","license":"UNLICENSED","_id":"@aatosolavi/librarian@0.2.10","maintainers":[{"name":"aatosolavi","email":"aatos@akvilander.com"}],"homepage":"https://librarian.portrait.md","bugs":{"url":"https://github.com/aatosolavi/librarian/issues"},"bin":{"librarian":"librarian.js","librarian-tui":"librarian-tui.js"},"dist":{"shasum":"035c5900343174dba7820da999c79103182e83e6","tarball":"https://registry.npmjs.org/@aatosolavi/librarian/-/librarian-0.2.10.tgz","fileCount":9,"integrity":"sha512-/VwBW22JZO4TXygdv+kqFNw3cSyViCR4ghfc/0BAxW7rNnFS6MYQx1kOisLt4LZtwLoyyBpILG+ZGLQcgPiGKg==","signatures":[{"sig":"MEUCIQCZFeWIbH9qM55LOm2P/vTTgMtYAHlQH8Zp15aaaB+3eQIgIKlkO2lssYg8/JJ7Rbm1iZa9OAEOpKEIC5rj2iF/Luw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":155401},"type":"module","engines":{"npm":">=11 <13","node":">=24"},"gitHead":"a1d42dea809e36b70c49075cc9ef8b81bf94dc40","scripts":{"test":"node --test librarian.test.mjs librarian-tui.test.mjs librarian-sync.test.mjs librarian-diff3.test.mjs librarian-porcelain.test.mjs","pretest":"node ../../scripts/ensure-package-dist.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a7b1a3a0-0771-481f-b579-ea9896e62ba5"}},"repository":{"url":"git+https://github.com/aatosolavi/librarian.git","type":"git"},"_npmVersion":"12.0.2","description":"Thin command-line clients for the Librarian service","directories":{},"_nodeVersion":"24.18.0","dependencies":{"eve":"0.30.6","@vercel/blob":"2.6.1"},"publishConfig":{"access":"public","provenance":false},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/librarian_0.2.10_1785915637351_0.0367706309314868","host":"s3://npm-registry-packages-npm-production"}},"0.2.11":{"name":"@aatosolavi/librarian","version":"0.2.11","license":"UNLICENSED","_id":"@aatosolavi/librarian@0.2.11","maintainers":[{"name":"aatosolavi","email":"aatos@akvilander.com"}],"homepage":"https://librarian.portrait.md","bugs":{"url":"https://github.com/aatosolavi/librarian/issues"},"bin":{"librarian":"librarian.js","librarian-tui":"librarian-tui.js"},"dist":{"shasum":"9d6bfcd2d375f79b5c6ef3b8a103cd692f225914","tarball":"https://registry.npmjs.org/@aatosolavi/librarian/-/librarian-0.2.11.tgz","fileCount":9,"integrity":"sha512-PruUjTTS9DX36NHugCALwrCvyVqnhAFKPUDaLv7igv+iAT8CxlzxIZJxUfqq49j9w7BcxDEtsnQGOhdj1aNkOw==","signatures":[{"sig":"MEQCIBUekO9jhSu93LUpYD0621Ht14zQY9bWPbhwcR+mh/w/AiBtjtWLS7GWpXPH9zo7OkeJFaaObpuNeNX2RDIOHnSlYQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":155401},"type":"module","engines":{"npm":">=11 <13","node":">=24"},"gitHead":"7326486941b2c40e6a4a87dafb705b0121dd02e5","scripts":{"test":"node --test librarian.test.mjs librarian-tui.test.mjs librarian-sync.test.mjs librarian-diff3.test.mjs librarian-porcelain.test.mjs","pretest":"node ../../scripts/ensure-package-dist.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a7b1a3a0-0771-481f-b579-ea9896e62ba5"}},"repository":{"url":"git+https://github.com/aatosolavi/librarian.git","type":"git"},"_npmVersion":"12.0.2","description":"Thin command-line clients for the Librarian service","directories":{},"_nodeVersion":"24.18.0","dependencies":{"eve":"0.30.7","@vercel/blob":"2.6.1"},"publishConfig":{"access":"public","provenance":false},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/librarian_0.2.11_1785951989959_0.18627413555116723","host":"s3://npm-registry-packages-npm-production"}},"0.2.14":{"name":"@aatosolavi/librarian","version":"0.2.14","license":"UNLICENSED","_id":"@aatosolavi/librarian@0.2.14","maintainers":[{"name":"aatosolavi","email":"aatos@akvilander.com"}],"homepage":"https://librarian.portrait.md","bugs":{"url":"https://github.com/aatosolavi/librarian/issues"},"bin":{"librarian":"librarian.js","librarian-tui":"librarian-tui.js"},"dist":{"shasum":"54d34cc6cf47140f6cfdeddeec5da1d60333ddd9","tarball":"https://registry.npmjs.org/@aatosolavi/librarian/-/librarian-0.2.14.tgz","fileCount":9,"integrity":"sha512-nBLIvYK1gRNQQdF8gC8xn45g/L2nHP7mvCf87P0ocW0lLqsrM9T7l/P0M0EaW5cmdv0M1Mna+2VIA7eTOl7jhQ==","signatures":[{"sig":"MEYCIQD4a3n8SEabNTsvMu71e9j6SAnXIsR3gv3oIV4ST+v13AIhAJaaNieXxzNX5A9tydJz3nkbO0dcDzdZlJYERWkttXCC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":155237},"type":"module","engines":{"npm":">=11 <13","node":">=24"},"gitHead":"b2b0d9e968b50613e8eb049a5ebdd425c5003afd","scripts":{"test":"node --test librarian.test.mjs librarian-tui.test.mjs librarian-sync.test.mjs librarian-diff3.test.mjs librarian-porcelain.test.mjs","pretest":"node ../../scripts/ensure-package-dist.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a7b1a3a0-0771-481f-b579-ea9896e62ba5"}},"repository":{"url":"git+https://github.com/aatosolavi/librarian.git","type":"git"},"_npmVersion":"12.0.2","description":"Thin command-line clients for the Librarian service","directories":{},"_nodeVersion":"24.18.0","dependencies":{"eve":"0.31.0","@vercel/blob":"2.6.1"},"publishConfig":{"access":"public","provenance":false},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/librarian_0.2.14_1786091698713_0.5674910896625234","host":"s3://npm-registry-packages-npm-production"}},"0.2.18":{"name":"@aatosolavi/librarian","version":"0.2.18","description":"Thin command-line clients for the Librarian service","type":"module","license":"UNLICENSED","homepage":"https://librarian.portrait.md","repository":{"type":"git","url":"git+https://github.com/aatosolavi/librarian.git"},"bin":{"librarian":"librarian.js","librarian-tui":"librarian-tui.js"},"scripts":{"pretest":"node ../../scripts/ensure-package-dist.mjs","test":"node --test librarian.test.mjs librarian-tui.test.mjs librarian-sync.test.mjs librarian-diff3.test.mjs librarian-porcelain.test.mjs"},"engines":{"node":">=24","npm":">=11 <13"},"dependencies":{"@vercel/blob":"2.8.0","eve":"0.32.0"},"publishConfig":{"access":"public","provenance":false},"gitHead":"193a0b0bb84f9e90028efc418f8fef81f429e573","_id":"@aatosolavi/librarian@0.2.18","bugs":{"url":"https://github.com/aatosolavi/librarian/issues"},"_nodeVersion":"24.18.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-VmFOxFDPRsYWj1yFxDfjT4uCmDWXwFYuWtTdxPKGLA8wTFWbcnTK9MqR1alGM+1wR3YGNcaTXpkScRl4BldXWQ==","shasum":"370f36b4c378490524e20c30c2c88227bf3b65a3","tarball":"https://registry.npmjs.org/@aatosolavi/librarian/-/librarian-0.2.18.tgz","fileCount":9,"unpackedSize":158637,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBr7iicPL1KipigppUdKiPTK8xTXSdouZgfb12n0PUwzAiBEAC6Aq0l97tgIfTgy2ba7CvWzercyWAZfq2UrcJAuZg=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a7b1a3a0-0771-481f-b579-ea9896e62ba5"}},"directories":{},"maintainers":[{"name":"aatosolavi","email":"aatos@akvilander.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/librarian_0.2.18_1786447325086_0.38279725631755124"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-23T11:53:10.958Z","modified":"2026-08-11T11:22:05.434Z","0.1.0":"2026-07-23T11:49:10.657Z","0.1.1":"2026-07-23T11:53:11.464Z","0.1.2":"2026-07-23T11:56:59.443Z","0.1.3":"2026-07-23T12:00:41.155Z","0.1.4":"2026-07-25T08:22:56.639Z","0.1.5":"2026-07-25T15:28:42.047Z","0.1.6":"2026-07-25T17:16:59.270Z","0.1.7":"2026-07-26T08:18:40.750Z","0.1.8":"2026-07-26T12:50:49.270Z","0.2.0":"2026-07-29T09:32:11.265Z","0.2.1":"2026-07-29T16:32:11.418Z","0.2.2":"2026-07-29T17:35:32.816Z","0.2.4":"2026-07-31T15:45:49.706Z","0.2.10":"2026-08-05T07:40:37.513Z","0.2.11":"2026-08-05T17:46:30.122Z","0.2.14":"2026-08-07T08:34:58.868Z","0.2.18":"2026-08-11T11:22:05.231Z"},"bugs":{"url":"https://github.com/aatosolavi/librarian/issues"},"license":"UNLICENSED","homepage":"https://librarian.portrait.md","repository":{"type":"git","url":"git+https://github.com/aatosolavi/librarian.git"},"description":"Thin command-line clients for the Librarian service","maintainers":[{"name":"aatosolavi","email":"aatos@akvilander.com"}],"readme":"# Librarian client\n\nThin command-line clients for the Librarian service.\n\n```bash\ncurl -fsSL https://librarian.portrait.md/install | bash\nlibrarian\n\n# later: reinstall the pin published by /install (preserves ~/.librarian)\nlibrarian update\n```\n\n`librarian` prompts for email OTP only when its saved 24-hour session is\nmissing or expired and starts the cloud TUI. `librarian --library` uses the\nsame session to sync the authenticated principal library into `~/Librarian`.\nExit one mode before starting the other: both can write the same library, so\nrunning them concurrently is intentionally rejected. When an existing local\nmount is present, a successful cloud TUI exit performs one bounded sync before\nreturning to the shell.\n`--fresh` is library-only; `--logs` is chat-only, and invalid combinations fail\ninstead of being ignored. `--once` performs one pull/push/verify cycle and exits.\n\n## Library sync (product protocol = commit_log)\n\n**Product sync** is the commit-log protocol: plain-folder sync against Neon\ncommits + content-addressed Blob (`librarian-sync`). commit_log is the\n**sole** library backend after the AgentFS cutoff (P3). The classic AgentFS /\nTurso NFS engine (`librarian-sync`) is retired: the API lease/pull/push routes\nwere deleted, so any non-commit_log principal now fails loud.\n\n`librarian --library` probes `GET /v1/principals/:id/library/commits/head`:\n\n| Probe result             | Engine                        | Behavior                                                                                            |\n| ------------------------ | ----------------------------- | --------------------------------------------------------------------------------------------------- |\n| HTTP 200                 | **commit** (`librarian-sync`) | **Product path** — head / changes / blobs / upload-token / CAS commit                               |\n| HTTP 409 `wrong_backend` | —                             | **Fails loud** — stop normal turns and restore the principal into commit_log from a verified backup |\n\n`--engine` only accepts `commit`; `--engine agentfs` fails loud.\n\nThe commit-log engine stores sync state at `<mount>/.librarian/state.json`,\npolls head on the same 60s cadence as the classic daemon heartbeat, watches\nthe folder with a 2.5s debounce, uploads blobs under the 3.5 MiB / 4 MiB caps,\nand on commit conflicts conflict-copies local losers under\n`.librarian-conflict/<timestamp>/` before retrying once. Files larger than\n3.5 MiB use direct-to-Blob upload. No mount or macOS prerequisite.\n\n### Porcelain (commit-log)\n\n```bash\nlibrarian status [--mount ~/Librarian]\nlibrarian log [path]\nlibrarian restore path/to/file.md@12\n```\n\n`status` reports synced / pending / conflict counts, last sync time, and last\ntree-hash verify result (exit 1 when pending, conflicts, or verify failed).\n`log` and `restore` use the saved TUI JWT against the commit-log history API.\n\n### `.librarianignore`\n\nOptional gitignore-subset at `<mount>/.librarianignore`. Blank lines and `#`\ncomments are ignored. Patterns support literal paths, `*` (one path segment),\nand a trailing `/` for directory prefixes. Ignored paths are invisible to sync\nboth directions (local walks, watcher, and remote apply).\n\nThe bootstrap installs cloud chat and requires Node.js >=24 and npm 11–12;\nit does not gate installation on macOS, NFS tools, or AgentFS. The classic\nAgentFS/Turso writable-library engine (`librarian-sync`) was retired at the\nAgentFS cutoff (P3) — its API lease/pull/push routes were deleted, so it fails\nloud. Sync talks only to the Librarian API, which owns remote storage\ncredentials. AgentFS and Turso credentials are never requested from the user.\n\n### Dependencies (and Socket capability alerts)\n\n| Dependency     | Role                                             |\n| -------------- | ------------------------------------------------ |\n| `eve`          | Cloud/local TUI (`eve` CLI binary)               |\n| `@vercel/blob` | Direct-to-Blob upload for large commit-log files |\n\nSocket.dev will flag network, filesystem, env, and URL access on this package\nand its tree. That is expected for a sync CLI — see\n[socket-client-alerts](../../docs/ops/socket-client-alerts.md). Do not remove\nthose capabilities to silence badges.\n\nAdvanced/debug entry points remain available:\n\n```bash\nlibrarian-tui --login\nlibrarian-tui\nlibrarian --library\nlibrarian --library --engine commit\n```\n\nUpdates and ordinary restarts preserve all recovery state under\n`~/.librarian`: `tui-session.json`, `device-id`, `sync-state.json`,\n`sync-cache/`, `sync-conflict/`, and `sync-pending-ack.json`. `--fresh`\nquarantines the previous mount contents and commit-sync state under\n`<mount>/.librarian/fresh-backups/`, then clones the current cloud generation\ninto a clean visible tree. Identity and conflict evidence are not erased.\n\n### Updating the client\n\n```bash\nlibrarian update\n# equivalent bootstrap:\ncurl -fsSL https://librarian.portrait.md/install | bash\n```\n\nNormal launches check the server-owned package pin before starting. When it\ndiffers from the installed version, the client updates and re-execs itself.\n`LIBRARIAN_DISABLE_AUTO_UPDATE=1` is the explicit development escape hatch.\n\n`librarian update` fetches the package@version pin from\n`https://librarian.portrait.md/install` (or `--api <runtime>/install`) and runs\n`npm install --global --ignore-scripts <pin>`. Same Node 24 / npm 11–12 gates\nas the bootstrap. If a local mount exists, the newly installed client then runs\none bounded sync. Overrides: `LIBRARIAN_INSTALL_REF` /\n`LIBRARIAN_CLIENT_PACKAGE`.\n\nThe sync protocol fences commits with both the numeric head and the library\ngeneration. A reset/reseed can reuse commit numbers, but a stale checkout cannot\ncommit across that boundary; it fails with an explicit `--fresh` recovery path.\n\nWritable-library failures are deliberate and preserve local recovery state:\n\n- auth failures require a fresh `librarian --login`;\n- local/remote conflicts create conflict copies before one bounded retry;\n- Blob upload, commit CAS, tree verification, and pending-ACK failures stop\n  sync without deleting the local folder or recovery records;\n- `wrong_backend` is a restore-from-verified-backup incident. The retired\n  Turso importer must not be restored or suggested as a user recovery command.\n\n### Cloud TUI conversations\n\nThe cloud product TUI keeps one in-process `conversationId` across turns so\nEve resumes the same chat address. The server creates the first conversation\nwhen none is sent.\n\n| Command | Effect |\n| ------- | ------ |\n| `/new`   | Clear the local `conversationId`. The next message mints a new Neon conversation. Does **not** call Eve `reset`. |\n| `/clear` | Eve `from(conversationId).clear()` — forget model messages; keep tools, skills, sandbox, and address. |\n| `/reset` | Eve `from(conversationId).reset()` — retire the current Eve session; same Neon conversation address. |\n| `/stop`  | Eve `from(conversationId).cancel({ turnId })` when a turn id was observed. |\n| `/quit`  | Exit the TUI |\n\nIn the TUI, `/loglevel all` displays captured server/agent `stdout` and\n`stderr` plus sandbox lifecycle lines. Sandbox lines exist only when a sandbox\noperation runs. It does not display tool or workflow records. Eve's separate\nprivate diagnostic log may contain tool failures, workflow errors, and\nframework records and is read with `eve logs`. Remote\n`librarian.runtime.stage` records are queried separately in Vercel Logs.\nLibrarian observability does not log dynamic instruction contents.\n\nThe package contains client launchers only. The Librarian agent, prompts,\nstorage implementation, and service code are not distributed with it. Service\naccess still requires an allowlisted email and a valid Librarian session.\n","readmeFilename":"README.md"}