{"_id":"@modelprofile.com/flexharness","_rev":"59-28ee90789968dcc8736146882b073c1b","name":"@modelprofile.com/flexharness","dist-tags":{"latest":"10.5.0"},"versions":{"1.0.0":{"name":"@modelprofile.com/flexharness","version":"1.0.0","author":{"name":"Task Venture Capital GmbH"},"license":"MIT","_id":"@modelprofile.com/flexharness@1.0.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"9182f6c8ba1a50a9d6d20140b72e80bc916dbd70","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-1.0.0.tgz","fileCount":32,"integrity":"sha512-5i3VvpNgtOKC/nXlS/8Vb98bmBT5OXj0/cR1HPOP7rGIfvzypr0mgsIuA5DcF73wLDuM2Qo25SGrUGDtE4IlOg==","signatures":[{"sig":"MEUCIEFpQ/9Ablg60eRoJq1IRdFlcuSEWOBox8GqHB0/zz+7AiEAvtOIh8ZOvR04W96esdihcqnsPnOy+87daL9yxqJmD+w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":372449},"main":"dist_ts/index.js","type":"module","_from":"file:modelprofile.com-flexharness-1.0.0.tgz","engines":{"node":">=24"},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"_resolved":"/tmp/b7a46ba2f8b78bbdf0f1a547a4698e7e/modelprofile.com-flexharness-1.0.0.tgz","_integrity":"sha512-5i3VvpNgtOKC/nXlS/8Vb98bmBT5OXj0/cR1HPOP7rGIfvzypr0mgsIuA5DcF73wLDuM2Qo25SGrUGDtE4IlOg==","_npmVersion":"11.7.0","description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@push.rocks/smartagent":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.1.2","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2","@types/json-schema":"7.0.15"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_1.0.0_1785954996701_0.20049208169769162","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@modelprofile.com/flexharness","version":"1.0.1","author":{"name":"Task Venture Capital GmbH"},"license":"MIT","_id":"@modelprofile.com/flexharness@1.0.1","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"1257fda254c8501ff9fb74e7d5f8ab03165e5ebf","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-1.0.1.tgz","fileCount":32,"integrity":"sha512-dYXgyW5sFf4aXa4OzYZTEo9iqa66biaTaGZiL4/iALq6770QTeSTQwmdS3GFZ17k7PKRUpLcOBRUImR8TASxlA==","signatures":[{"sig":"MEUCIDOlL1MgOBHXscexmHe+a3Gjfwq+zwqSg+mDYvQI0WuvAiEA6/6YC2iQZ8qG4mPg+Hsmcyuh+22kce1CLSu6ELb7CIk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":372449},"main":"dist_ts/index.js","type":"module","_from":"file:modelprofile.com-flexharness-1.0.1.tgz","engines":{"node":">=24"},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"_resolved":"/tmp/d92be456099746de74401d458d9627f7/modelprofile.com-flexharness-1.0.1.tgz","_integrity":"sha512-dYXgyW5sFf4aXa4OzYZTEo9iqa66biaTaGZiL4/iALq6770QTeSTQwmdS3GFZ17k7PKRUpLcOBRUImR8TASxlA==","_npmVersion":"11.7.0","description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.1.2","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_1.0.1_1785955536472_0.8018519981369043","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@modelprofile.com/flexharness","version":"2.0.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@2.0.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"cffc6d92a4f3b4c884b1f05ee7403ce7835e1d77","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-2.0.0.tgz","fileCount":32,"integrity":"sha512-Aj1fSAuA/14on8U5EAr81TmIoOy8GBjU60NBSrQaIQjfoGT8geq9X0MbDC4xTRSkvH1ETizzhcxRRayrVmnbqA==","signatures":[{"sig":"MEYCIQCXbi7wMWQ3kMAU1t482MHYOdIoQtphaeb8Bu96ArTmjgIhAOt+NuUMzMWgkd6enzUdtFHrLvLi5MnmBlY2WFFlhjBp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":450832},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.1.2","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_2.0.0_1786104416846_0.3217266436813875","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@modelprofile.com/flexharness","version":"2.1.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@2.1.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"75fb9695160bce0c328a13e2d62e5b9501c4becf","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-2.1.0.tgz","fileCount":32,"integrity":"sha512-zDzpIBVsVrxoOswGxOW2Ecg+DGnsO5/KruzNnN1IGirt9ljcJcW+/iK5dlJbxOTsPPvsM6b5HOwGYjxBlJuAgA==","signatures":[{"sig":"MEYCIQCSktYhGI9IbTsw1UTlbvXZ07FbBb6Oe6kjYCnPawK8SwIhALHL08HZ+m17s36G6BRvcMUHLNX2b8s7nRajVvoGyaMu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":472523},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.2.0","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_2.1.0_1786182143149_0.41737566852271213","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@modelprofile.com/flexharness","version":"3.0.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@3.0.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"2fa3c2e871cd4a16d4e675365ae16839357b321a","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-3.0.0.tgz","fileCount":39,"integrity":"sha512-8knkYy4ERWBjGCuRSpRBTfajIieV/73J+J8tL9tbZ9KVgWld684FaRaxlkNZMmxLtMGK/WTmZsYAhhFLO/JhbA==","signatures":[{"sig":"MEYCIQCAeFEcDXuSwZIfiePP9lhL4zbrtSYuwc+u03u3DRBvlgIhAKXnvhG2OWifYVy1+sxqDcXpY9Vy/mPBKw2U2hMXpQVU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":926119},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^4.6.0"},"_hasShrinkwrap":false,"devDependencies":{"ai":"6.0.237","@types/node":"26.2.0","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_3.0.0_1786272111119_0.9040700391214451","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@modelprofile.com/flexharness","version":"3.0.1","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@3.0.1","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"ca8498675c2e77c8e3b6f0e8660151289ab58273","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-3.0.1.tgz","fileCount":39,"integrity":"sha512-0TaquoiVgTsYA6oIwxn8wrRKdNInljDcsV14qPco/Qk0alDkkTYVdVgm3ocwcHnu/EpL8PIQsoCngNf4u2WnAw==","signatures":[{"sig":"MEQCIDYgtrghId4+KS+NI9IYIbqKP+22dcn4dLJPjRQGlqMBAiB8YQJn51C6ESfJgtSQC9ZhKWC9BZyP5+S+uAd3Fatwkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":932975},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^4.6.0"},"_hasShrinkwrap":false,"devDependencies":{"ai":"6.0.237","@types/node":"26.2.0","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_3.0.1_1786278055561_0.07996403245554773","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"@modelprofile.com/flexharness","version":"3.1.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@3.1.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"26615967b69334c51fb9637dbdbf085d5ef57d74","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-3.1.0.tgz","fileCount":39,"integrity":"sha512-4AeVzRsxqvkJMIrvWAXd+frJ6NK34rsfZ1O+d5oSXQZj8NCgi+l8Q54VoRDAP3tJ3HZ36uGxVDJAwtTv0O9EhQ==","signatures":[{"sig":"MEUCIFszHnVC+w3tThEY7BgonTziI0O59lTwVfKeUfxe5Q7TAiEA0TMTULrtZAQHr6Hg5D+x4EbheCmwChW4O3UPJQfETHI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":935650},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^4.6.0"},"_hasShrinkwrap":false,"devDependencies":{"ai":"6.0.237","@types/node":"26.2.0","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_3.1.0_1786411193462_0.6339684498237803","host":"s3://npm-registry-packages-npm-production"}},"3.2.0":{"name":"@modelprofile.com/flexharness","version":"3.2.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@3.2.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"f079d78919d67329caf09c4363544ad8259c8a0e","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-3.2.0.tgz","fileCount":39,"integrity":"sha512-D7Oy39C/JR9+CZ9+6jgyTzANoUsHMsFD493UBygb+JD4Z/YXWozNbjXjmjJD9dtH+SBqWa5vgPR2JTcrYFDqYg==","signatures":[{"sig":"MEYCIQDV2M/FIh7uEkJ58iQpOVYvmqBLiaiRaaOE0zHkkZzZrQIhAPijX0RTjAQfP4BX+tOE49Krns94/k3WF40gZvoHMqao","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1000389},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^4.6.0"},"_hasShrinkwrap":false,"devDependencies":{"ai":"6.0.237","@types/node":"26.2.0","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_3.2.0_1786472191667_0.5070266613481635","host":"s3://npm-registry-packages-npm-production"}},"3.3.0":{"name":"@modelprofile.com/flexharness","version":"3.3.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@3.3.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"400c4130211a95ac1828c3c5261ac4cbccefeec8","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-3.3.0.tgz","fileCount":39,"integrity":"sha512-ZeeyoBk8W7Fj7jsyx5MK4Etu7ut48N4X2IZyXU5OFInlpJyfm8nUXhbey1kgCUbPsYkQd9cQHreVBHIgbbsnkw==","signatures":[{"sig":"MEQCIHVW5yHjiYCpO5uy23tIAAjyhBoHnAX2+o/BnrfSllWNAiBckFWy45M1j4BaIfAzj+VQf3PZ3nBoxpAN3uFgBQQn7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1001470},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^4.6.0"},"_hasShrinkwrap":false,"devDependencies":{"ai":"6.0.237","@types/node":"26.2.0","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_3.3.0_1786492930038_0.8724834449422789","host":"s3://npm-registry-packages-npm-production"}},"3.4.0":{"name":"@modelprofile.com/flexharness","version":"3.4.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@3.4.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"c0eac51b12668395f7300afe8389397792baee3c","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-3.4.0.tgz","fileCount":39,"integrity":"sha512-mB44k8qv7KShMrArHcZhcoO5PUX4rFs38uaqPoaHfToPknnR9+wcweXi5EQHq/TKSCOh9aR0OsLeXnMbOpG0Zg==","signatures":[{"sig":"MEUCIQD15K/f0hIchMQVQ7SExdCumcoKM6OClkp3HHltBWQ4GQIgJemfQe603bCnxPmcOjqT5675Y9I3VIBYM4EuLh3TQq4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1045382},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^4.6.0"},"_hasShrinkwrap":false,"devDependencies":{"ai":"6.0.237","@types/node":"26.2.0","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_3.4.0_1786586085346_0.5599571919148043","host":"s3://npm-registry-packages-npm-production"}},"3.5.0":{"name":"@modelprofile.com/flexharness","version":"3.5.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@3.5.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"2892fc58c4296382d57fc5f951ffbe8bc40e9ae2","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-3.5.0.tgz","fileCount":39,"integrity":"sha512-IoJrM+MjUATRJn1sKCTw0hyLiEVWEFy8ysIoIVY/3TXKTa4NkBCdD16Mr3HE5g7U8DTFrmahxFL0+LO9jkXtsA==","signatures":[{"sig":"MEQCIBPj1wOCs+cFJsfuI+C2+Xen/U/vh9090aygxOpqDZzOAiAF8aViScMod74h05GWPhb2d+EGFax9PCcNQkeb3lj4ww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1192290},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^4.6.0"},"_hasShrinkwrap":false,"devDependencies":{"ai":"6.0.237","@types/node":"26.2.0","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_3.5.0_1786591428256_0.8689291742863219","host":"s3://npm-registry-packages-npm-production"}},"3.6.0":{"name":"@modelprofile.com/flexharness","version":"3.6.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@3.6.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"da9b1c87160552fe984b263d60689dc5d342104e","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-3.6.0.tgz","fileCount":39,"integrity":"sha512-zGKurMjQ/1TIuhX4mfEP+lq7OUSc+BhMkNDj9g3O8yZ4/0+GeeA+1xx84Otr8Mv3TEmVZXWqQD50O/HkbCF8Mg==","signatures":[{"sig":"MEUCIE/fXl3zNGNIdBSmrOmoFx/p2TxFUTNCRLXW4+rh8berAiEAj1HzNBQMfzLH5Vx1eaX8DNdkPxC6wnOXAVMK+8asOQ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1224128},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^4.6.0"},"_hasShrinkwrap":false,"devDependencies":{"ai":"6.0.237","@types/node":"26.2.0","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_3.6.0_1786615023587_0.23647484579635902","host":"s3://npm-registry-packages-npm-production"}},"3.7.0":{"name":"@modelprofile.com/flexharness","version":"3.7.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@3.7.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"ce0f8f470763b901166ea20d3edb741816a5192e","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-3.7.0.tgz","fileCount":42,"integrity":"sha512-qKJF3uFqQ7DlsvcEZBE1XupRhNBvYitHICQH59hDpZoCw6wBnlVONRuIWoSjBb1bl13coxEJhmXUnpJu3Mq88w==","signatures":[{"sig":"MEUCIQCjonst87JUZLJ1IqEX+AGcqGBrA2Vv889t8xyJDxXmMQIgWNUd1/y8aI1eT1IvrcR9TaBRnFlmh+MOt/P73lXBz0c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1618966},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^4.6.0"},"_hasShrinkwrap":false,"devDependencies":{"ai":"6.0.237","@types/node":"26.2.0","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_3.7.0_1786662361235_0.6692997126548395","host":"s3://npm-registry-packages-npm-production"}},"3.8.0":{"name":"@modelprofile.com/flexharness","version":"3.8.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@3.8.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"6baa6f19ad184417e7e1f3e2df50868511afc2fa","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-3.8.0.tgz","fileCount":42,"integrity":"sha512-7USvpI1IucsvUxSVzHmXvOotodgQsnp7Us2wd5Eh0fkOMl9ST7cPjMw28QQirDfYyumEUsGNyYMQV5UCOLoFYw==","signatures":[{"sig":"MEUCIQCmk2Zr6sOWlOZptc5rcIc+SwO/66qVokeaDmEgzHkORAIgBdIGRghnMf+dcCl/lZxysNNb1NlOetLnVnSzNJ/q0n8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1744906},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^4.6.0"},"_hasShrinkwrap":false,"devDependencies":{"ai":"6.0.237","@types/node":"26.2.0","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_3.8.0_1786701822978_0.20194576108394346","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@modelprofile.com/flexharness","version":"4.0.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@4.0.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"4b816627e4e33639c7c551a7193e0f4d6603613d","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-4.0.0.tgz","fileCount":45,"integrity":"sha512-UuTOTUSgJEXB9Fcs94qmhYgTDhvuBRFYl2A+Mtecc9tDYceSR3mKa4RTL4zyVg+07hkHRMds6TxaXcUse4p0CQ==","signatures":[{"sig":"MEUCIFlL9aknjAWszaFlvTZ6n5+agjM0xHAl3VTWfNwHpImNAiEA9dKB9CO5dzeHvbIrxROUggN8Ya8af/6Qk7u5jj8uV3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1947458},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^4.6.0"},"_hasShrinkwrap":false,"devDependencies":{"ai":"6.0.237","@types/node":"26.2.0","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_4.0.0_1786726544597_0.22252694636151493","host":"s3://npm-registry-packages-npm-production"}},"4.0.1":{"name":"@modelprofile.com/flexharness","version":"4.0.1","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@4.0.1","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"be97a0f9b587da38d7205b4b47dd6eef9a56d85e","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-4.0.1.tgz","fileCount":45,"integrity":"sha512-fpLsj5cBxyVUl8UnDD+yWZIqR7DeoetQmlJDdryhPDEnHzeNEMJtWG+9LEnsPAbrkIF2ho16NX2wFK9Q2Ky4GA==","signatures":[{"sig":"MEYCIQDxAf+YdVDa3rntOFwRDY7Qk/4mVnWsakbexNfgwweR2QIhAIpOcKm+vdiwf3S7aCd8D5uIc1ahevdAYMO4Ln+UlRrE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1947890},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^4.6.0"},"_hasShrinkwrap":false,"devDependencies":{"ai":"6.0.237","@types/node":"26.2.0","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_4.0.1_1786732371931_0.2035103844766335","host":"s3://npm-registry-packages-npm-production"}},"4.0.2":{"name":"@modelprofile.com/flexharness","version":"4.0.2","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@4.0.2","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"e8054eae1a6ab723af30da7c962b94fd5693d8ef","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-4.0.2.tgz","fileCount":45,"integrity":"sha512-0AvcEMhuagTuellarY8kG3bSh+kOJdh9GSMfLO01Es1xrZpffFkSTahmqI04wydDpbgK2NPgN3i+fKBO6Nwnkg==","signatures":[{"sig":"MEUCIGG5kDpoAOoXe7YoyLQRbE0dtLKXgYhLPd+celkIlx5IAiEArA9WQmsi1MpjL93ZMm5XlCrKVzzYpUHo6rr3Fr9gv7s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1949165},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^4.6.0"},"_hasShrinkwrap":false,"devDependencies":{"ai":"6.0.237","@types/node":"26.2.0","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_4.0.2_1786734231426_0.0081703671706852","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"name":"@modelprofile.com/flexharness","version":"4.1.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@4.1.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"0a81b814536b6d220a08f0f16e2fd8157957afa7","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-4.1.0.tgz","fileCount":45,"integrity":"sha512-OzRyMyc1n4cb77D1mJcuqlSZiH3wY5IM0nA94v51vJt5OVWMiinHvCPccB1eGMN1K5KIltVsA5xltkZHG/z5Hg==","signatures":[{"sig":"MEUCIHiOj+XKbA1kUJQCru2rota0ei5nq1HhW8qKhmCWOEP8AiEAkNmauV0L1FN11SK62kYSCHlwiQbUOomDUWUDpxHX3VQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1955426},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ai":"6.0.237","@types/node":"26.2.0","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_4.1.0_1786784421858_0.23228950842066642","host":"s3://npm-registry-packages-npm-production"}},"4.1.1":{"name":"@modelprofile.com/flexharness","version":"4.1.1","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@4.1.1","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"5dec2cb318a8af1ac2cf2d45bfb91d8de2f09aab","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-4.1.1.tgz","fileCount":60,"integrity":"sha512-cTyEmen2O3rzcCuhQpNEqIQpHeAhfN8bH3J6Q8nScFL1wZoGMqkJkzcKdbX8msqJFEziw2j6kmtVy8vCqkCpYg==","signatures":[{"sig":"MEYCIQDNv0O+ygDrzCGv6TuDo0CmWgMcJ6//dkPYSyblS0Q5wgIhAPDTT+7EmlihiqsL1TsYeMaZPvZl+W+XYwwX2qxZXgxK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1972055},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ai":"6.0.237","@types/node":"26.2.0","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_4.1.1_1786881178834_0.509201373401875","host":"s3://npm-registry-packages-npm-production"}},"4.1.2":{"name":"@modelprofile.com/flexharness","version":"4.1.2","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@4.1.2","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"84011a7a01eb59a589c680524197c719f7192f72","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-4.1.2.tgz","fileCount":60,"integrity":"sha512-BoSLeFyikqoQ9CoMYKpnTkojGHYScvjs+2AaAujbBXr4AQG2m+f5Gl16VfZq3Hd+j/k7UK0YPt/RYJnbwuohzw==","signatures":[{"sig":"MEQCIHcR54g+L4fu5lpMBy/RiewgIyGZdVBJyhQYxvV6zrAAAiBXOXbc0KFfBCS0UKmvwE4jJhwyMov4WxQfjlA6U+h8uw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1972545},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ai":"6.0.237","@types/node":"26.2.0","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_4.1.2_1787338938678_0.18853077217029202","host":"s3://npm-registry-packages-npm-production"}},"5.0.0":{"name":"@modelprofile.com/flexharness","version":"5.0.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@5.0.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"81f50414da369e25fe2aa85a6cb9337d527b3d08","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-5.0.0.tgz","fileCount":60,"integrity":"sha512-nF51IB87j/C6D0n+891ZPswyXldv5L84aG0D9J21jHZGz8YpfahQ8AczwpbbdmM4DA+SG6skeYyaPxKM+Fuw5w==","signatures":[{"sig":"MEUCIQD2pniNwHCbiwkM9WURTWcPrPBJKQ7exFyGynNfCbZQhwIgOBO9SA1Gbwp59+UzNy2srkjeGoP0kzSpwh1amIDoOfI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1984376},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ai":"6.0.237","@types/node":"26.2.0","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_5.0.0_1787354013992_0.3696306819221544","host":"s3://npm-registry-packages-npm-production"}},"5.1.0":{"name":"@modelprofile.com/flexharness","version":"5.1.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@5.1.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"5b34a0a2ca9d51bef2435606fc734107fd8fa3b6","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-5.1.0.tgz","fileCount":60,"integrity":"sha512-QxIjmIHDirKJvHmnPFXMHNKtcr06E90NX/Ec5kgCOt62F3IXoFLjmbrOP8vaEvJcmTTzqatgUOGwBFeEHOZwqA==","signatures":[{"sig":"MEQCIEBZ06mjMwMD72+vvJAaBO7Fuqxrg/4sM67rF0rt8U+BAiAc/2shzuV5RxA0tt30bV0SHn82nZuUHuZuPfNWYqHOfQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1989417},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ai":"6.0.237","@types/node":"26.2.0","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_5.1.0_1787754667110_0.39608331869707913","host":"s3://npm-registry-packages-npm-production"}},"5.2.0":{"name":"@modelprofile.com/flexharness","version":"5.2.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@5.2.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"fbbc2344cc8304741a64bd0c1e8e46e088998a77","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-5.2.0.tgz","fileCount":60,"integrity":"sha512-/dimvVA7ATbiI/yTTnpeJXgsGKNjUmFaiGfLHRU5VMTERHaLrcNmWuugOZuXsWpq/s82mrDSSr6n33ATobDUkw==","signatures":[{"sig":"MEUCIEX86p2OdQxLfHfPKdoIpFJ1gF4vaV0Eiw1OY6u/I9t0AiEAtUbag35qOcSLlnY3DpdeNWjUxpGIwtCcxgmFEJo7b0E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2025972},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ai":"6.0.237","@types/node":"26.2.0","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_5.2.0_1787765411688_0.5170677749222949","host":"s3://npm-registry-packages-npm-production"}},"5.3.0":{"name":"@modelprofile.com/flexharness","version":"5.3.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@5.3.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"6d14c037e1d3fc7098d1cfd96ebfa6b5a3fb2e31","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-5.3.0.tgz","fileCount":60,"integrity":"sha512-8xWvkDUqivIOSJuVUcIJiP68Qz3NB/otvk/j+eILZeDNqa/q+rcaFl+SMXA/UHEhDSB1QPMofuRAa3bCsSDH2Q==","signatures":[{"sig":"MEYCIQDvuhEC0QUcLtbuxNWAbq/L2qhuyfz9JjfFnzNWO6nMKQIhAPU3Uny4Qkpr53w4CQpM2Yytvj7e3pgOaLdQm7j+6Z7w","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2083157},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ai":"6.0.237","@types/node":"26.2.0","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_5.3.0_1788094138280_0.9924360428012471","host":"s3://npm-registry-packages-npm-production"}},"5.3.1":{"name":"@modelprofile.com/flexharness","version":"5.3.1","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@5.3.1","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"f32804be389000a454f0482bdade21252bb79c64","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-5.3.1.tgz","fileCount":60,"integrity":"sha512-FmwKxmmkAuJiuqCRnSM8u24Gyu1+E8AJtVMk6RzxEOeJSIq/ZJABTfs9N8hsic6/PF4tO0qE9IoE4G04+3E9Jg==","signatures":[{"sig":"MEQCIHmuFikeh2pUT+jxZTECDewYFUL7xl2nVU+tjw9nHf05AiAE+aiD959Ir2Y95MwWECCJgEV8bxE1EmdjPLSg+JWH0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2108582},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ai":"6.0.237","@types/node":"26.2.0","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_5.3.1_1788108582067_0.7830062902663921","host":"s3://npm-registry-packages-npm-production"}},"5.3.2":{"name":"@modelprofile.com/flexharness","version":"5.3.2","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@5.3.2","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"e4ddc3647462eb03c0f5cf720a9baac487018c0d","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-5.3.2.tgz","fileCount":60,"integrity":"sha512-pV4uf2e0YBLhPOq+7Yi3kt70O9aK0MGiJ9oTxKQcwNP3BOmH8iteKEQ5KNjaMqPjh22khoF0+QcUsZ8+00cbjw==","signatures":[{"sig":"MEUCIQDzfQnrPsARkK77EGJVSKbzE5zGpXGbU4KUTfQcSykecgIgNgyZeQ8zHk2pQIkmz4HDqzQMzyc7MkDrn50P4v+DAwE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2108956},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ai":"6.0.237","@types/node":"26.2.0","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_5.3.2_1788200632058_0.9980390961157906","host":"s3://npm-registry-packages-npm-production"}},"5.3.3":{"name":"@modelprofile.com/flexharness","version":"5.3.3","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@5.3.3","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"66de211ba2c4043f7ec1d3021efcedec5b7825d2","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-5.3.3.tgz","fileCount":60,"integrity":"sha512-fVa5DFcziMhZLkGZhZKJ9R+O2hefr3yL5kWC8qV3u9MpKBXjOPdMAgr79+S70S0cbzhTQdWKKPgAua9mlYn3aA==","signatures":[{"sig":"MEUCIQDJIQgI2YJHQolO+vVZHfGgRGTOplxYBNSpii1itzfqCAIgbLC9lTj4eiB7eke2vqENEkTlrtiU1BM6siPa4XqRMVw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2115646},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ai":"6.0.237","@types/node":"26.2.0","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_5.3.3_1788290516653_0.8064543444558256","host":"s3://npm-registry-packages-npm-production"}},"5.4.0":{"name":"@modelprofile.com/flexharness","version":"5.4.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@5.4.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"885d035eda2f87ef06f2eba230963895f1135d45","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-5.4.0.tgz","fileCount":60,"integrity":"sha512-DYH2+iXuKS5k9XXjvnMRUmpiTdKwHIfv0gp5H9Aw8UYjo1NmGmpuna8YFKOq5FxltP+wtdSFg2geLlbB3YiNzQ==","signatures":[{"sig":"MEYCIQCOqQFFYVapXWiN/Xl5NaRm0tPh6e/ca/fOXHVq7cbR4AIhAKFCrmkVJx9SDEYXkEUYzgCYhKQpEnC7YI3nnwOME1SR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2119041},"main":"dist_ts/index.js","type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"private":false,"scripts":{"test":"pnpm run build && tstest test/ --verbose --logfile","build":"tsbuild tsfolders","check:test":"tsbuild check 'test/**/*'"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Provider-neutral model-session runtime with durable history, permissions, typed events, and pluggable local or remote tool execution.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@types/json-schema":"7.0.15","@push.rocks/smartagent":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ai":"7.0.79","@types/node":"26.4.1","@git.zone/tsrun":"2.0.6","@git.zone/tstest":"4.0.0","@git.zone/tsbuild":"4.4.2"},"_npmOperationalInternal":{"tmp":"tmp/flexharness_5.4.0_1788349438880_0.4937806536951186","host":"s3://npm-registry-packages-npm-production"}},"6.0.0":{"name":"@modelprofile.com/flexharness","version":"6.0.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@6.0.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"c6d18b3d0bcf87862b0f33863603a696145ba89d","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-6.0.0.tgz","fileCount":58,"integrity":"sha512-VMXxmyvW6VoqySLRDne8c9uIPNC0kJZDOcNLmX0mDca47Y927vXNQwPy2CC09mHZBXRzGBYzls7NL6mZ/8Nohg==","signatures":[{"sig":"MEUCIBIOhl2OgkidX4AEV08X9maEZ09e51hPuB0zf5GlG9X4AiEAj2ceMDdcn15jbFiPLclPJcpSmD73G8QwhGzfzO8Z+vA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2178033},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed multi-scope agent harness with permissions, public projections and persistence coordination.","directories":{},"sideEffects":false,"dependencies":{"@modelprofile.com/flexharness-agent":"6.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/flexharness_6.0.0_1788893374584_0.4795891203891327","host":"s3://npm-registry-packages-npm-production"}},"6.1.0":{"name":"@modelprofile.com/flexharness","version":"6.1.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@6.1.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"728bb0a86d770a403dd3b0297f361efffdbc8b4e","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-6.1.0.tgz","fileCount":58,"integrity":"sha512-e2ge1ZEhQ53rdGkGBFPZr/oyjeZwkJfeJLp1uxW39+09xCRDK4rRkBl+DjBBMW1wKeNAmVQNnQeMjX1RSGXLoQ==","signatures":[{"sig":"MEMCH3HtTr/zfU3tqoroQ/dM0XwK2uHdAxEh5E0eOaPl4NQCIFaF6VcLclJ7BOpOT4s8mz9krYlYBMgrTF2ew/43j9T/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2178033},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed multi-scope agent harness with permissions, public projections and persistence coordination.","directories":{},"sideEffects":false,"dependencies":{"@modelprofile.com/flexharness-agent":"6.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/flexharness_6.1.0_1788897923272_0.49830922761483487","host":"s3://npm-registry-packages-npm-production"}},"7.0.0":{"name":"@modelprofile.com/flexharness","version":"7.0.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@7.0.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"9a4e602efeedf94a7aab5567197e030f604cf72b","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-7.0.0.tgz","fileCount":222,"integrity":"sha512-Zix4u6vv9eJQKY25Nv+ruY7jF5SgPGgJDHSZ7uZPJPWQFmI/1T+LDSon+WXAYuuGMKRRBTO8zkneTUJyJvtWRw==","signatures":[{"sig":"MEUCIEZIpkxauBSUuGHC+FFHDvLcjoKxg1Y42LtUpNAsrg6qAiEA/uVtbDWOqMeHlTW8VFcvD2EbTcWNzcgWJxWrj5qt8Ok=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2751998},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.79","zod":"^4.4.1","@push.rocks/smartrequest":"^5.0.1","@modelprofile.com/flexharness-agent":"7.0.0","@modelprofile.com/flexharness-models":"7.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@push.rocks/smartpdf":"^5.0.1","@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_7.0.0_1788906538695_0.7420332160576231","host":"s3://npm-registry-packages-npm-production"}},"7.0.1":{"name":"@modelprofile.com/flexharness","version":"7.0.1","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@7.0.1","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"1ecb7191eb176f85d7478ee380c3b178ac27449f","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-7.0.1.tgz","fileCount":222,"integrity":"sha512-CpnL67BA5cucO06Rls3ATR1XrqsKBYxwnoMZlz6hSCZueMUxM9L8ROA1c1hszlr/w51iqFWWG14PNnd3XHg/gw==","signatures":[{"sig":"MEUCIFUspHE6A+GMX4drUGMDbm910kLLm5lm0/1uwf6HwfTQAiEAqq0vpeXeQcAm/pfBL6E404Q6s82yUT2XjkGUc4ysQFk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2751998},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.79","zod":"^4.4.1","@push.rocks/smartrequest":"^5.0.1","@modelprofile.com/flexharness-agent":"7.0.1","@modelprofile.com/flexharness-models":"7.0.1"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@push.rocks/smartpdf":"^5.0.1","@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_7.0.1_1788946215072_0.612556413113376","host":"s3://npm-registry-packages-npm-production"}},"8.0.0":{"name":"@modelprofile.com/flexharness","version":"8.0.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@8.0.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"a9e7189fcd7abaf837541710cd985648adb5df37","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-8.0.0.tgz","fileCount":222,"integrity":"sha512-FqaVZbkTWk36LUhnYVEAknaaCVtqY+2E9doGKFrngfXDXqJPAoz0xhdxb8u/Yw4UkP2lA5sDnPmz+shlvNFJZQ==","signatures":[{"sig":"MEQCIBr92qBB+XUWByVeulxkwVG1TotMKnXGPAs+gUWVC4YLAiAoEw1i2yEyFhA40hnV6esJRsgqp7lYug9EP5/jp8RNgg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCFBItre+iE/aYOdmKQaKmne4+vEAFKE27+qDiAcoZIQgIge1vwBB+H6F4y8s+/uc5WpfJPbVzgi4NXhlaAnXZ1B24=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2751998},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.79","zod":"^4.4.1","@push.rocks/smartrequest":"^5.0.1","@modelprofile.com/flexharness-agent":"8.0.0","@modelprofile.com/flexharness-models":"8.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@push.rocks/smartpdf":"^5.0.1","@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_8.0.0_1789847538705_0.6720355105753573","host":"s3://npm-registry-packages-npm-production"}},"8.1.0":{"name":"@modelprofile.com/flexharness","version":"8.1.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@8.1.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"6efa6e987b81e41016b6848135219210e4217e74","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-8.1.0.tgz","fileCount":222,"integrity":"sha512-EcIx+xbNSOCB4pV8g9GL6jShNihNadN1wEtjqP94WOBmWZC6Xhq/XgQUKxTYmQQTeL9y7mF1qJuDRUisfMWN6w==","signatures":[{"sig":"MEUCIBD2qndhnSt0LzpTF4sHQObjMcSNLT42nQCLIBuDm8W1AiEAsinr49ilXJleOQB3leKyg/tKwuDCseEu8T+vghyypLQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAD+F32YOztQ4p0BG8Eo2XHAppM/6+2muXuU+vL/Y/WNAiEAxGMkRwbAu7G/kDQ016b4fJmBOHTug20D6bRYiEBzdQU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2751998},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.79","zod":"^4.4.1","@push.rocks/smartrequest":"^5.0.1","@modelprofile.com/flexharness-agent":"8.1.0","@modelprofile.com/flexharness-models":"8.1.0"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@push.rocks/smartpdf":"^5.0.1","@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_8.1.0_1789891513590_0.9591163973999117","host":"s3://npm-registry-packages-npm-production"}},"8.2.0":{"name":"@modelprofile.com/flexharness","version":"8.2.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@8.2.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"66472257525b9ffedfac9a2519ba104195d0b09d","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-8.2.0.tgz","fileCount":222,"integrity":"sha512-N2cI1773TdvoMPEvdyU1R0UvqjVLn2XVxn6+FJFcF3CYNVz16AfOWjmYn/7cuX3/tEe/+tC1ouA2dfH9o50Yfg==","signatures":[{"sig":"MEYCIQD5ujzULxoYSGpWAnnaeABHYoDrImCJL96zMTlXgHOl6QIhAKERQJugJf9H8nTIcmQKE56zu/o2KurjvdAhiDfXMcrJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDqKlR5C7+BaJgl31b2WKzKTfpkYrYEUOENdsMYqba9cAIhAN4oecRqQs7BAE2O/vvVyKDo2FERq6eKmGiBlLfEkHSh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2767650},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.79","zod":"^4.4.1","@push.rocks/smartrequest":"^5.0.1","@modelprofile.com/flexharness-agent":"8.2.0","@modelprofile.com/flexharness-models":"8.2.0"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@push.rocks/smartpdf":"^5.0.1","@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_8.2.0_1790191479589_0.782004795714206","host":"s3://npm-registry-packages-npm-production"}},"8.3.0":{"name":"@modelprofile.com/flexharness","version":"8.3.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@8.3.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"f450d8c61dd7c21c8a6f6af276a186952545aa59","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-8.3.0.tgz","fileCount":222,"integrity":"sha512-FnF7ewWYndh6/+T3w47BfNvjr0tt8qzpLnsVEtMMml3mGQBz96KDGtlAtPBSXi32Cf552oEgQqPNgEFz4MbIlg==","signatures":[{"sig":"MEUCIDnk5V18tkllE7be+w+wUSg27JrAlJx3p4PWrHrMouVRAiEApBfQH4qyu8un/4NQ3XkrdaNo5lTAbn3WASlUukkBEgg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDaZZVemF9g0HsYPyPlkrESFDfIHj6ShhSJa5CTzKACUgIhAO1DFLQXHq7AXu/aZu9Bk8cz2NPdcVSAEa/pCHwMjDYn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2778150},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.79","zod":"^4.4.1","@push.rocks/smartrequest":"^5.0.1","@modelprofile.com/flexharness-agent":"8.3.0","@modelprofile.com/flexharness-models":"8.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@push.rocks/smartpdf":"^5.0.1","@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_8.3.0_1790252064970_0.45872527396351126","host":"s3://npm-registry-packages-npm-production"}},"8.4.0":{"name":"@modelprofile.com/flexharness","version":"8.4.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@8.4.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"7b218b5bab99716278c4b415a4abcfb526a94c55","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-8.4.0.tgz","fileCount":222,"integrity":"sha512-RqoEJW7LPL9vd5n/JJgrvMSVNpVToXl2tHLbnK/8/C+aPIe0DIAz8DzYuVXF2vd4i1MFJ4IUax7Qx1vDumGCjQ==","signatures":[{"sig":"MEQCIHDwflJ1mn0OUoV/AWgY6dY2IsIcJ2ovMUYXIHFEIygqAiAq0vm7l2opV0vlb5c4x+v5nvdaFcjS3wzd5TeGyaprSw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDwoPJ5nF4OOUYhj4EpqB63KslRGvkysGY+m2aF3x3L1wIgP3T4y+Uc6rTu7YAX3qwQABJOtO8RDCkDK37+6x/byn8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2795570},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.79","zod":"^4.4.1","@push.rocks/smartrequest":"^5.0.1","@modelprofile.com/flexharness-agent":"8.4.0","@modelprofile.com/flexharness-models":"8.4.0"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@push.rocks/smartpdf":"^5.0.1","@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_8.4.0_1790291270465_0.6818431638312448","host":"s3://npm-registry-packages-npm-production"}},"8.5.0":{"name":"@modelprofile.com/flexharness","version":"8.5.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@8.5.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"42c4b2c74cbd72b557a5362d4919c43167803830","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-8.5.0.tgz","fileCount":222,"integrity":"sha512-XdGHks5UwrwJzuxAWp1MMPr/sflBwuGHYrBNNJ78YIVoWOLUcOzekmPEwuSHQy0qFzRMix9kvrfElS0VmJF+bQ==","signatures":[{"sig":"MEQCIHZrc8SH56ocsEfjf5+CvAazl0ASlNdbQXD1q5CrLchnAiBmw0yf7Ee7N3FNxC5TT+hClyfBqBc75Sq9mvh6q99nwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHnLkNbp6Y+7qYsQKFde/DthdXLWH+PzJj/m60dnO+nUAiBbZKlhwrcYhkHT1xi1Q+TmH7a3uARycNxTVvVBMDIhvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2803197},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.79","zod":"^4.4.1","@push.rocks/smartrequest":"^5.0.1","@modelprofile.com/flexharness-agent":"8.5.0","@modelprofile.com/flexharness-models":"8.5.0"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@push.rocks/smartpdf":"^5.0.1","@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_8.5.0_1790302185886_0.09481290313881119","host":"s3://npm-registry-packages-npm-production"}},"9.0.0":{"name":"@modelprofile.com/flexharness","version":"9.0.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@9.0.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"15b56bd3981a94f905d616b2ce42989ef6ec9af9","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-9.0.0.tgz","fileCount":222,"integrity":"sha512-moikcv0ofROV++pH+/l/ohhuyLrsRKdoGLA2d/SbntWwbT/JCszvkZ+UH6s3AuHy0q7ekSdbCce5XMqUVQmZ3w==","signatures":[{"sig":"MEUCIQDhloVebiWCLVv9xkfena7x9hHk3ydKxb0wIHSjlVh12wIgLP3v1JvddkChLalkCK9Nhbfr5ZYV+7JJh/yOfvptLjY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC7iDrooSzq3vGc7CcZp5dy8ce6thot0QuJWh3Ufsj49QIgPIPdiuDV7ACDoJft0XyoG2FYtLyQe6Sf0rJT+1mF9lc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2809146},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.79","zod":"^4.4.1","@push.rocks/smartrequest":"^5.0.1","@modelprofile.com/flexharness-agent":"9.0.0","@modelprofile.com/flexharness-models":"9.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@push.rocks/smartpdf":"^6.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_9.0.0_1790306097684_0.5834951369050867","host":"s3://npm-registry-packages-npm-production"}},"9.1.0":{"name":"@modelprofile.com/flexharness","version":"9.1.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@9.1.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"40705256d9542f4c652927460f3970e8aced9744","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-9.1.0.tgz","fileCount":222,"integrity":"sha512-XMONlK89lVTwrZ7T7oCMn305tmdCtkiqHjLPdnN9xROOGUaYB60E06W1/Xp+9NpD08ja2Z0Uz+PY71Z07lrJLA==","signatures":[{"sig":"MEYCIQDt8HcwTWWYgMO9S8IQnYKp/02h6UXM1+Mqd7ubhtS5wgIhAOoFhNd8V6mpUdGJsQ8pcCv83hZuwj2iOYIdSdX031qJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGqXRlnjiPv1Omztvb/AadwzAPdSKffd/CMmlKD/YhM/AiByz4qoHtrc9EdeuuWyoAVEwsvmim9+yWYHb+LLXKzPTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2809146},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.79","zod":"^4.4.1","@push.rocks/smartrequest":"^5.0.1","@modelprofile.com/flexharness-agent":"9.1.0","@modelprofile.com/flexharness-models":"9.1.0"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@push.rocks/smartpdf":"^6.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_9.1.0_1790408639059_0.6624365145019222","host":"s3://npm-registry-packages-npm-production"}},"9.2.0":{"name":"@modelprofile.com/flexharness","version":"9.2.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@9.2.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"16766c7d6ab139f983da15b5a97b28ba7de74dd2","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-9.2.0.tgz","fileCount":222,"integrity":"sha512-RkStEhPfOegRXqfgXlMo1nBLFgu4BxRvyjDVaK1+VSbXt9sGSU1etxLY4sPHj6qUxEUQnznQhlN1UwzE6lIf/g==","signatures":[{"sig":"MEUCIEe+fageF4tqQoZcCJLLv4yBzhxXGLWQPnwknJQl2An3AiEAglvZMaW8gMYR9T/hruYnlEw46zxHJZ8c5uYdWXLYcAI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIENW7LJv8IO+zyfwrdkc6Pz17ugmD9M5maCHO0lXyDHIAiEA/oq+ETpD3cQod/Dj2JZae65xn1Oy3c0nn19BBETugm8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2809146},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.79","zod":"^4.4.1","@push.rocks/smartrequest":"^5.0.1","@modelprofile.com/flexharness-agent":"9.2.0","@modelprofile.com/flexharness-models":"9.2.0"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@push.rocks/smartpdf":"^6.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_9.2.0_1790418725112_0.0468213217622957","host":"s3://npm-registry-packages-npm-production"}},"9.3.0":{"name":"@modelprofile.com/flexharness","version":"9.3.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@9.3.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"b9ebca36ee1e45f9a9d725891ac1fde9079b8c0f","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-9.3.0.tgz","fileCount":225,"integrity":"sha512-V/KjteELf7UvDLzhityB+6B+uBh9wvxLbQv9JhP3v/+++kBsMUMNjhyrtJdnt8Jpi2Fm9RmSHexVP/h75xLO+A==","signatures":[{"sig":"MEUCIQCzfmqbVduorhYsHJY2YbfUucbVNXtRM6yTJu8mVnh/lgIgHt2NYNibqFnwPbPHUAkKf8Ej4e4ykL4NQ/2taQcRs/8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCCCNVIB0y0suzid1m9h/Db45M1+8FzgniRvK5PO5MebAIgBTSPuxpGBMXMZdDjq5zvvo+8F+kR6RzWXIKYXAxSqOY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2815105},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.107","zod":"^4.4.1","@push.rocks/smartrequest":"^5.0.1","@modelprofile.com/flexharness-agent":"9.3.0","@modelprofile.com/flexharness-models":"9.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@push.rocks/smartpdf":"^6.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_9.3.0_1790425392736_0.6441204774500497","host":"s3://npm-registry-packages-npm-production"}},"9.3.1":{"name":"@modelprofile.com/flexharness","version":"9.3.1","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@9.3.1","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"cd7905878b99b1701863a599ea521e33974966ac","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-9.3.1.tgz","fileCount":225,"integrity":"sha512-Xrl1ZZkuAkYn38pI0OOXRFgNiCWn/sZh9tGYBgHbc2a0a+mWqEW6Jxt7yasP+PYT/qYwZ9RzMYHAgAPQlpP6/g==","signatures":[{"sig":"MEQCID45b2FGWPY1Dg2zzrVdzSJ8cyt699CbW73ZAqJMPnOzAiAeZGZOzYulWs/dPecNEfsUPzkRNVQWN8MvAZzw7grMPw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCqrCcl9bkkb9RK4LHaqe2n/eHd0uGyhuFhHLYtHCwTxAIgGxe04YiXZBpM35mRYmdaTtxBFQK2jAXOVHfo4H/9ybc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2815105},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.107","zod":"^4.4.1","@push.rocks/smartrequest":"^5.0.1","@modelprofile.com/flexharness-agent":"9.3.1","@modelprofile.com/flexharness-models":"9.3.1"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@push.rocks/smartpdf":"^6.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_9.3.1_1790430953392_0.3133611297311292","host":"s3://npm-registry-packages-npm-production"}},"9.4.0":{"name":"@modelprofile.com/flexharness","version":"9.4.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@9.4.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"9cfe7609168f06b12e13452fcee258c19bc1ccca","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-9.4.0.tgz","fileCount":225,"integrity":"sha512-t3DpK1KdIqeR26a9O8K7nYE6wIHbNOuy+sz2WzlMEQ+gYYr5kS6ilzSDNxWXPg/Cgnm5QrDBnwd5lGVQEfPr0A==","signatures":[{"sig":"MEUCIQDl9/JbKt5JWStofj5GKOqLbuMYGuvPEkJmBy1003ixLAIgNZfAz0c6ASD8lVjqVFNvrBmx3auNqyhiAH3YPOd4XSM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHNtqx9OIAp6ay9E/Kk62gqWoEfvyYI/98ej9zH6zfzzAiEAl9WH2znkuyFPxqJ0GecBAZ+LE7IvDiq3p4XF4MvCYfk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2828603},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.107","zod":"^4.4.1","@push.rocks/smartrequest":"^5.0.1","@modelprofile.com/flexharness-agent":"9.4.0","@modelprofile.com/flexharness-models":"9.4.0"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@push.rocks/smartpdf":"^6.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_9.4.0_1790447006996_0.9871633744804311","host":"s3://npm-registry-packages-npm-production"}},"9.5.0":{"name":"@modelprofile.com/flexharness","version":"9.5.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@9.5.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"3d9d0deb1d67a637f23e638026caa46b3c8c2985","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-9.5.0.tgz","fileCount":228,"integrity":"sha512-MJnY9erx2E/CV6qLyntoVQ3vc32PCLmQoIV8UztL72Fqlu6egl0ct+O874wsaS4JTZ/97E5HMbch/a+uDcy9mw==","signatures":[{"sig":"MEQCIGHr0IJLgnNU7tyeETwZ+tBgw47Sj4Pmxx4N/k6hM+pLAiADD8VcjgYTS769MHPa84GY3sCmNnq0qlrfJTHgHvvoTA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIANCC4Vm8JcQiRHtFw++5sTjkqgn8usWOhAziWA4ZRWmAiEAxw614NwTdt1RQx159waL60ixpiQlKyDt+IvWAZ4f1ZM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2960066},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.107","zod":"^4.4.1","@push.rocks/smartrequest":"^5.0.1","@modelprofile.com/flexharness-agent":"9.5.0","@modelprofile.com/flexharness-models":"9.5.0"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@push.rocks/smartpdf":"^6.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_9.5.0_1790502856898_0.4206813956325359","host":"s3://npm-registry-packages-npm-production"}},"9.6.0":{"name":"@modelprofile.com/flexharness","version":"9.6.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@9.6.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"0a39d8960e438c8502c16577dcfa1c9db991ff0c","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-9.6.0.tgz","fileCount":228,"integrity":"sha512-QVNB0GbrW+GD74kFTZi2nCIPVpmw0XNjq9DIRhiwZHW+HXKN7MU69UzHcvwg3PWHe30unp0H1+YMGECNHnJKug==","signatures":[{"sig":"MEUCIQDD1Q6t7pgKDmqBL06qwkdLy4uNvkU7bE8pNug/s0gedAIgFbvZE4PJ0xsVS7O+YIoHAnzhKowA/e1SkoaNG/i5X7Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGkzg0sY75hSXFSr04uKeyGhf8VHwgyaklPslSpnE6urAiBAC/EVxLJ2cGt2n8DYHGfo7wt1QFG24/L5XQ9JVhWOyw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2965187},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.107","zod":"^4.4.1","@push.rocks/smartrequest":"^5.0.1","@modelprofile.com/flexharness-agent":"9.6.0","@modelprofile.com/flexharness-models":"9.6.0"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@push.rocks/smartpdf":"^6.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_9.6.0_1790522031669_0.4076234701151722","host":"s3://npm-registry-packages-npm-production"}},"9.6.1":{"name":"@modelprofile.com/flexharness","version":"9.6.1","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@9.6.1","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"b8f77d527085d25969aa64cdaad3a9079570bb9d","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-9.6.1.tgz","fileCount":228,"integrity":"sha512-7xrMbSDhMPsMX958/cL7ePI4xmSrUEa+Awb3bHaqmVlzYn8tOxikGRNTkSqhp4cKBJBPdpR++Fy3xLMY8AXQ0Q==","signatures":[{"sig":"MEYCIQCIybLMAGfs9tt32Qp3e/kcgUCP6KVxyMwf56vipAMDhwIhAKI7pUMEGWHCPnxeb/atr44imr2OqmxdH/YSkPAkL10X","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHClwmKbTkHkG0B6CiSyIZxrB76pSdteuvDwHvR6SayqAiEAlrQtizXgTQcVM5RNekZ9+LYt6AHKlxAhL7JSSFoQRHU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2965187},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.107","zod":"^4.4.1","@push.rocks/smartrequest":"^5.0.1","@modelprofile.com/flexharness-agent":"9.6.1","@modelprofile.com/flexharness-models":"9.6.1"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@push.rocks/smartpdf":"^6.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_9.6.1_1790534798899_0.4617783275820151","host":"s3://npm-registry-packages-npm-production"}},"9.7.0":{"name":"@modelprofile.com/flexharness","version":"9.7.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@9.7.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"edff54d987e132ef0d8943da4cdb16d7b4660533","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-9.7.0.tgz","fileCount":228,"integrity":"sha512-uf44+befE34QsaMe+VBqPS2UeUr3vYf7i71qf3UG9xNXtuu2UEUSrZ9HKV+G4AapdyrU+NKNL0JOLnjrhtQfAQ==","signatures":[{"sig":"MEUCIQCavSC77SJ3X81aVVoqUPaUOuGE+iNN5oXcgMDKRDmwEwIgM1o/0r/BWwI4o2qT5MX9X9XTQ3TBB8NKAlfImXMXnXg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIH7lsC89yhYzcE4o7ubAAYOuvhxhjqc5P9lyxWBQ6xMbAiEAjAni+TEO9hLD66YpBt3UOQw1/6wJhSzkygT9im8btg0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3004965},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.107","zod":"^4.4.1","@push.rocks/smartrequest":"^5.0.1","@modelprofile.com/flexharness-agent":"9.7.0","@modelprofile.com/flexharness-models":"9.7.0"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@push.rocks/smartpdf":"^6.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_9.7.0_1790561283031_0.2846702526869087","host":"s3://npm-registry-packages-npm-production"}},"9.8.0":{"name":"@modelprofile.com/flexharness","version":"9.8.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@9.8.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"6293bfd76e83a1fb9a24775981b05f05651afd20","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-9.8.0.tgz","fileCount":228,"integrity":"sha512-HpxocRTQC1OykM5zx/ie59LB3H2a95/Kes5Ci8/1TwXdNVDcu+7xg/f6cZNUhu8TSv1PFVDXBX+C/9M8JDtyxg==","signatures":[{"sig":"MEUCIAUEHSnOPysIj22s0K0JPAYETfzcZHy2mnjtr/L4FmDNAiEA8hYBtJcn2glGDq6hW+qcZvZnro+o72gP8peoyet44dk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDnWKK60bt6DQWrQut5pTyTp5Ttn9w4LDVFcscLDPrHhwIgTxdjrPws1wfYBMm0nRG+7K/xzCJSOrfrka0DtgmqDtQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3029260},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.107","zod":"^4.4.1","@push.rocks/smartrequest":"^5.0.1","@modelprofile.com/flexharness-agent":"9.8.0","@modelprofile.com/flexharness-models":"9.8.0"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@push.rocks/smartpdf":"^6.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_9.8.0_1790567849780_0.545420026810949","host":"s3://npm-registry-packages-npm-production"}},"9.9.0":{"name":"@modelprofile.com/flexharness","version":"9.9.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@9.9.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"23a175eab1fd34f5b36dd373e1306a4ac8fa86da","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-9.9.0.tgz","fileCount":228,"integrity":"sha512-4AycxC2ETE4YE7UIHBWPPdnwQata6srjoadrlbGkxgBrdi/M/KYhJaPl7wYd8+YTIpS0hpKlRFEP5a1rsFQhJQ==","signatures":[{"sig":"MEUCIE9107Rw+zx83Pohy2mXsuez+anQ7PDKmlenESZMTcXMAiEAxbWriSQYqizEcLZQhGMcuhy20JY61rTBqh+cZaNCrJA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCnBUqmgm+yjnl2S2DYIg0tFsllexPpZbburuIYrZVDvAIhAM/Uknw0V9os1gh+wANj0WV3OoOczFtkRUAXTFvfP3jc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3071099},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.107","zod":"^4.4.1","@push.rocks/smartrequest":"^5.0.1","@modelprofile.com/flexharness-agent":"9.9.0","@modelprofile.com/flexharness-models":"9.9.0"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","sharp":"^0.35.3","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@push.rocks/smartpdf":"^6.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"sharp":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_9.9.0_1790618181494_0.5552700481552377","host":"s3://npm-registry-packages-npm-production"}},"9.9.1":{"name":"@modelprofile.com/flexharness","version":"9.9.1","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@9.9.1","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"b93591a084533fad168fc31f52eb2caf97c64afc","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-9.9.1.tgz","fileCount":228,"integrity":"sha512-1AqA1L017vcP3wJ5D8pMjEU409LFhFO7YlZaQ+laqRfBmtS4MlBcN6tVDwnSJFsi/h+2fXez0UrkaN7Bi9+0Fw==","signatures":[{"sig":"MEUCIGSaLGxvn4eqRXE5IIbobrJEtBlm4Je2T5AnBOAMPfGLAiEArFfuIXvyVOxQ8B+ta3jUWwrgjEIhT6yF+odyvByH+70=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIA22TxxtjcYxvhVtzQdeJ3yHHBDvQ2xdSjbredN2uRMfAiEAy/6TzpY8Itcme7/YPyIPAV16X+lbSLyQWYtJneFIWus=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3071099},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.107","zod":"^4.4.1","@push.rocks/smartrequest":"^5.0.1","@modelprofile.com/flexharness-agent":"9.9.1","@modelprofile.com/flexharness-models":"9.9.1"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","sharp":"^0.35.3","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@push.rocks/smartpdf":"^6.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"sharp":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_9.9.1_1790712253120_0.05964807187023058","host":"s3://npm-registry-packages-npm-production"}},"9.10.0":{"name":"@modelprofile.com/flexharness","version":"9.10.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@9.10.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"af93b7fbf43d8410a55f2dbb73b952cdec9c9465","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-9.10.0.tgz","fileCount":228,"integrity":"sha512-dKg5BBADfrCeAfegBx3kRTzFhPy4YmbG0hpD0+xeg/1LFNGVSaMntODvf9aWpn5fYOlNuAqMshu27r/EcnPkkA==","signatures":[{"sig":"MEUCIQCO616cABl/WgnrewUgx7hcwKg8DteaupCbkrKZ7eY1aQIgGrnXeYN1WcKLmGHgwmOdWnQj5fu6tcAD7pWYM+bw/PQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCFv7+M7i3hQRFKvACLiRaNB64pSxPl+UUgHlf6GKkUdQIgE2IZMt51+GFj/Rr7DlNDgTcUEwbm1eEP2nvHDLkos8Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3130430},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.107","zod":"^4.4.1","@push.rocks/smartrequest":"^5.0.1","@modelprofile.com/flexharness-agent":"9.10.0","@modelprofile.com/flexharness-models":"9.10.0"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","sharp":"^0.35.3","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@push.rocks/smartpdf":"^6.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"sharp":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_9.10.0_1790732224047_0.6495393718678242","host":"s3://npm-registry-packages-npm-production"}},"10.0.0":{"name":"@modelprofile.com/flexharness","version":"10.0.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@10.0.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"40a601885c1ba6829b9549643616f6f93458da49","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-10.0.0.tgz","fileCount":228,"integrity":"sha512-SYot/g5UVTynGsecxicz4ia51YI0v/z9dLhE3IlFzdC+MbNco/5+SCOka0dcJ8pQSY3DOAvRGIN57fY4boTL4Q==","signatures":[{"sig":"MEUCIClVezt9BxpXr2fFVHntvlvt7JR8Zq3yHLLYLd05M0k0AiEA3JI0ohqV1DRrSGXF405tUUSpK+zBCFovQxhAYnfQkGY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCnkeWdRWOX426pW6Y0Ld4R6h/N8Qr0s43/biZF+q3EywIhAI6EeOpxhycr9CTLH35LncYNBo12B3nzRIUN6GqrOVfC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3153491},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.111","zod":"^4.6.5","@push.rocks/smartrequest":"^5.5.1","@modelprofile.com/flexharness-agent":"10.0.0","@modelprofile.com/flexharness-models":"10.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","sharp":"^0.35.3","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@push.rocks/smartpdf":"^6.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"sharp":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_10.0.0_1790783277626_0.4707784329518725","host":"s3://npm-registry-packages-npm-production"}},"10.1.0":{"name":"@modelprofile.com/flexharness","version":"10.1.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@10.1.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"b6b6e915ea224f3e7f01ee8d0d1a8269aec79073","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-10.1.0.tgz","fileCount":260,"integrity":"sha512-U0Cp92USrhY5ST5159dmcNRS5+d5eGYbEE3aImzOHaKfXfJoc03HKSDIx0AyU/RLImVr92tRG1E57m2g+idBnA==","signatures":[{"sig":"MEQCICEXWuqZ+y9UG2wHR2unvrNgh6letW1Yb7Z/ZQA1Gp6oAiAzzasgRW/zhevXMRpaVW/aHg0/zL+dR6XD+7CjEYKZ8w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIA+FIsoKtOxka5Z5bRihVC6nJkL6S06CnDrnUJJDo7sTAiAgfweVfjdcg20HYDbSxnoTlkmj6hvaDaxVgi/o6y0V/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3385207},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"},"./chat/harness":{"types":"./dist_ts_chat_harness/index.d.ts","import":"./dist_ts_chat_harness/index.js"},"./stores/nosqldb":{"types":"./dist_ts_stores_nosqldb/index.d.ts","import":"./dist_ts_stores_nosqldb/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.111","zod":"^4.6.5","@push.rocks/smartrequest":"^5.5.1","@modelprofile.com/flexharness-agent":"10.1.0","@modelprofile.com/flexharness-models":"10.1.0"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","sharp":"^0.35.3","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@lossless.org/client":"^1.17.0","@push.rocks/smartpdf":"^6.0.0","@modelcontextprotocol/sdk":"^1.29.0","@design.estate/dees-catalog":"^17.0.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"sharp":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@lossless.org/client":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true},"@design.estate/dees-catalog":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_10.1.0_1790792688441_0.5537244174115004","host":"s3://npm-registry-packages-npm-production"}},"10.2.0":{"name":"@modelprofile.com/flexharness","version":"10.2.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@10.2.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"3f68eaa592f5de79a0d72684292429b7bd844149","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-10.2.0.tgz","fileCount":260,"integrity":"sha512-uSIdRVS5iBj7sErC8aOVhPrKigIa+0c4PqUhxOygUGwjip5+EZEHmTPTnWytKQlx3ojihwHBG5+xlBm+8mx6cg==","signatures":[{"sig":"MEUCIAcvqiyRnE0dwjnR/KgNio0YffkEUIPbr46ndjHDGMdoAiEA/TrmahuwyRzl7g+zMRL14Ak2levBAsRP+i72mc44NgI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDcbfTglGVWCrnyXgRjyJQ6+UdngmC0iB6lMWRcK2SDjgIhAP0HKNWu9w9evdVPuPhKLvoJCZ69O+eT/EzTSUTRP7Ca","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3410608},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"},"./chat/harness":{"types":"./dist_ts_chat_harness/index.d.ts","import":"./dist_ts_chat_harness/index.js"},"./stores/nosqldb":{"types":"./dist_ts_stores_nosqldb/index.d.ts","import":"./dist_ts_stores_nosqldb/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.111","zod":"^4.6.5","@push.rocks/smartrequest":"^5.5.1","@modelprofile.com/flexharness-agent":"10.2.0","@modelprofile.com/flexharness-models":"10.2.0"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","sharp":"^0.35.3","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@lossless.org/client":"^1.17.0","@push.rocks/smartpdf":"^6.0.0","@modelcontextprotocol/sdk":"^1.29.0","@design.estate/dees-catalog":"^17.0.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"sharp":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@lossless.org/client":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true},"@design.estate/dees-catalog":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_10.2.0_1790795948918_0.08597817380334871","host":"s3://npm-registry-packages-npm-production"}},"10.2.1":{"name":"@modelprofile.com/flexharness","version":"10.2.1","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@10.2.1","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"9cedba006e69811714f7f2d6baeb74b79524d0cd","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-10.2.1.tgz","fileCount":260,"integrity":"sha512-ovrTCpmT7zPeLosmoSvvg+sr5ny5IU/yDMuL9/p01/IAfijjpxfwiRW5npQ4V0fRmI/31MdLPrWxJG62HIcapw==","signatures":[{"sig":"MEUCIECGQtrdTOxI5exKo3Q58cLSAKP5UyaMAUDcoMOUH2u8AiEAqNt7kY05Eg35UnCYaoD2TyoZg0Tci9qW+AKjlztUYAc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCSTp42oAqiwkmwJQ4z5bInW9FF5kveSC+7Qq1otkXk4AIhAPzFNHYtVDPvLiw6oNkA9U5A00TFA+HwclGTcu68SZFy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3412100},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"},"./chat/harness":{"types":"./dist_ts_chat_harness/index.d.ts","import":"./dist_ts_chat_harness/index.js"},"./stores/nosqldb":{"types":"./dist_ts_stores_nosqldb/index.d.ts","import":"./dist_ts_stores_nosqldb/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.111","zod":"^4.6.5","@push.rocks/smartrequest":"^5.5.1","@modelprofile.com/flexharness-agent":"10.2.1","@modelprofile.com/flexharness-models":"10.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","sharp":"^0.35.3","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@lossless.org/client":"^1.17.0","@push.rocks/smartpdf":"^6.0.0","@modelcontextprotocol/sdk":"^1.29.0","@design.estate/dees-catalog":"^17.0.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"sharp":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@lossless.org/client":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true},"@design.estate/dees-catalog":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_10.2.1_1790799452752_0.38474137834886246","host":"s3://npm-registry-packages-npm-production"}},"10.3.0":{"name":"@modelprofile.com/flexharness","version":"10.3.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@10.3.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"7d212fce6955a60e2e6645b421ee3ddf989e791c","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-10.3.0.tgz","fileCount":260,"integrity":"sha512-tN/hh3nDKBYysL020lSytiUQCyeygD5Wi3AvkDP9wqVcjT9Diwm24xJeOGiYz6E4DoTL0A21gHtUV87iuBiatQ==","signatures":[{"sig":"MEUCID1j6agUtq2uWPMkOiisi6ndHqiS8Vhl9zvD7QwjiFcsAiEAiG1f8WT9osbBk/XFjem9NncwUnurkYg5mMJSQ5VVUjc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC7uiQpTFddf36KSzgu/0pw+IGnhgbRvAihOL5wgd5TwgIgVGCGbpRbS/LQvt9/m4BVsCVmrBESaPDgkGX1rj9Kbnc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3412625},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"},"./chat/harness":{"types":"./dist_ts_chat_harness/index.d.ts","import":"./dist_ts_chat_harness/index.js"},"./stores/nosqldb":{"types":"./dist_ts_stores_nosqldb/index.d.ts","import":"./dist_ts_stores_nosqldb/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.111","zod":"^4.6.5","@push.rocks/smartrequest":"^5.5.1","@modelprofile.com/flexharness-agent":"10.3.0","@modelprofile.com/flexharness-models":"10.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","sharp":"^0.35.3","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@lossless.org/client":"^1.17.0","@push.rocks/smartpdf":"^6.0.0","@modelcontextprotocol/sdk":"^1.29.0","@design.estate/dees-catalog":"^17.0.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"sharp":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@lossless.org/client":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true},"@design.estate/dees-catalog":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_10.3.0_1790846320934_0.6000472669696777","host":"s3://npm-registry-packages-npm-production"}},"10.4.0":{"name":"@modelprofile.com/flexharness","version":"10.4.0","author":"Task Venture Capital GmbH","license":"MIT","_id":"@modelprofile.com/flexharness@10.4.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"96c99b0e66615f5996546438935d90ff9b399553","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-10.4.0.tgz","fileCount":276,"integrity":"sha512-m5/beoNEUsLnY18vBmz0p0eQ7zUUovXGVgvQKBf4g3ncsz/gRbXBkr++fH07tb2TJi7Lc4ELnt9CLxvogHXA6g==","signatures":[{"sig":"MEYCIQCYp62j/VOx9A/qyqk3jy0d5oZ1LYyEqB1VFUELshYG4gIhAOvC1jcRCZzhO5bAvGujqicf9n7HcQtLle8fL5sUVpuz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFvGQlqVfUfGO2yTxDROETwR3F2k1baLyxxGLI0/RaGNAiEAsz2XcTN5cGH+vJ6477eMCGdD1s6/dzDIsgd5EIXOiFU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3448455},"main":"./dist_ts/index.js","type":"module","types":"./dist_ts/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./browser":{"types":"./dist_ts_browser/index.d.ts","import":"./dist_ts_browser/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"},"./chat/harness":{"types":"./dist_ts_chat_harness/index.d.ts","import":"./dist_ts_chat_harness/index.js"},"./stores/nosqldb":{"types":"./dist_ts_stores_nosqldb/index.d.ts","import":"./dist_ts_stores_nosqldb/index.js"}},"_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.111","zod":"^4.6.5","@push.rocks/smartrequest":"^5.5.1","@modelprofile.com/flexharness-agent":"10.4.0","@modelprofile.com/flexharness-models":"10.4.0"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","sharp":"^0.35.3","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@lossless.org/client":"^1.17.0","@push.rocks/smartpdf":"^6.0.0","@push.rocks/smartbrowser":"^5.0.0","@modelcontextprotocol/sdk":"^1.29.0","@design.estate/dees-catalog":"^17.0.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"sharp":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@lossless.org/client":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@push.rocks/smartbrowser":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true},"@design.estate/dees-catalog":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/flexharness_10.4.0_1790877433883_0.7335197140746585","host":"s3://npm-registry-packages-npm-production"}},"10.5.0":{"_id":"@modelprofile.com/flexharness@10.5.0","dist":{"shasum":"382321f7e8a91252b7fe4b9a000fe6329ad2458e","tarball":"https://registry.npmjs.org/@modelprofile.com/flexharness/-/flexharness-10.5.0.tgz","fileCount":276,"integrity":"sha512-yELYUO+lNFUkAMDXMy5dkXZ5tU+63UZrnnHhZeil5B8S4w94Rm/ShDpHGtWrwrH0we9SPhBa26d14BoxHW15UA==","signatures":[{"sig":"MEYCIQCvzDRocrlHon39Dz0K+gw18D3EhBdRGftPe5U0CFkg4AIhAPKu1gb4nAksx3xhfJOabknniXjob9P3ncFLTs8NWMRT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIA+uFolFmDwKOqJ/G3JtJk3VNVMgfr2XJrg3ttrSo8IjAiAk7h8RCJcz+oaobomiUkJ8GHbrWTJ+w38Jc/j5XhNEMw=="}],"unpackedSize":3448455},"main":"./dist_ts/index.js","name":"@modelprofile.com/flexharness","type":"module","types":"./dist_ts/index.d.ts","author":"Task Venture Capital GmbH","engines":{"node":">=24"},"exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js"},"./kvm":{"types":"./dist_ts_kvm/index.d.ts","import":"./dist_ts_kvm/index.js"},"./mcp":{"types":"./dist_ts_mcp/index.d.ts","import":"./dist_ts_mcp/index.js"},"./ocr":{"types":"./dist_ts_ocr/index.d.ts","import":"./dist_ts_ocr/index.js"},"./chat":{"types":"./dist_ts_chat/index.d.ts","import":"./dist_ts_chat/index.js"},"./media":{"types":"./dist_ts_media/index.d.ts","import":"./dist_ts_media/index.js"},"./tools":{"types":"./dist_ts_tools/index.d.ts","import":"./dist_ts_tools/index.js"},"./browser":{"types":"./dist_ts_browser/index.d.ts","import":"./dist_ts_browser/index.js"},"./chat/cli":{"types":"./dist_ts_chat_cli/index.d.ts","import":"./dist_ts_chat_cli/index.js"},"./chat/web":{"types":"./dist_ts_chat_web/index.d.ts","import":"./dist_ts_chat_web/index.js"},"./documents":{"types":"./dist_ts_document/index.d.ts","import":"./dist_ts_document/index.js"},"./migration":{"types":"./dist_ts_migration/index.d.ts","import":"./dist_ts_migration/index.js"},"./compaction":{"types":"./dist_ts_compaction/index.d.ts","import":"./dist_ts_compaction/index.js"},"./tools/node":{"types":"./dist_ts_tools_node/index.d.ts","import":"./dist_ts_tools_node/index.js"},"./chat/harness":{"types":"./dist_ts_chat_harness/index.d.ts","import":"./dist_ts_chat_harness/index.js"},"./stores/nosqldb":{"types":"./dist_ts_stores_nosqldb/index.d.ts","import":"./dist_ts_stores_nosqldb/index.js"}},"license":"MIT","version":"10.5.0","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","directories":{},"maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"sideEffects":["./dist_ts_chat_web/**/*.js"],"dependencies":{"ai":"^7.0.111","zod":"^4.6.5","@push.rocks/smartrequest":"^5.5.1","@modelprofile.com/flexharness-agent":"10.5.0","@modelprofile.com/flexharness-models":"10.5.0"},"_hasShrinkwrap":false,"peerDependencies":{"ink":"^6.8.0","lit":"^3.2.0","react":"^19.2.5","sharp":"^0.35.3","puppeteer":"^24.42.0","@types/react":"^19.0.0","ink-text-input":"^6.0.0","@lossless.org/client":"^1.17.0","@push.rocks/smartpdf":"^6.0.0","@push.rocks/smartbrowser":"^5.0.0","@modelcontextprotocol/sdk":"^1.29.0","@design.estate/dees-catalog":"^17.0.0"},"peerDependenciesMeta":{"ink":{"optional":true},"lit":{"optional":true},"react":{"optional":true},"sharp":{"optional":true},"puppeteer":{"optional":true},"@types/react":{"optional":true},"ink-text-input":{"optional":true},"@lossless.org/client":{"optional":true},"@push.rocks/smartpdf":{"optional":true},"@push.rocks/smartbrowser":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true},"@design.estate/dees-catalog":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/flexharness_10.5.0_1790968526830_0.47664188727965473"}}},"time":{"created":"2026-08-05T18:36:36.486Z","modified":"2026-10-02T19:15:27.180Z","1.0.0":"2026-08-05T18:36:36.922Z","1.0.1":"2026-08-05T18:45:36.615Z","2.0.0":"2026-08-07T12:06:56.999Z","2.1.0":"2026-08-08T09:42:23.282Z","3.0.0":"2026-08-09T10:41:51.284Z","3.0.1":"2026-08-09T12:20:55.765Z","3.1.0":"2026-08-11T01:19:53.625Z","3.2.0":"2026-08-11T18:16:31.808Z","3.3.0":"2026-08-12T00:02:10.259Z","3.4.0":"2026-08-13T01:54:45.533Z","3.5.0":"2026-08-13T03:23:48.503Z","3.6.0":"2026-08-13T09:57:03.778Z","3.7.0":"2026-08-13T23:06:01.417Z","3.8.0":"2026-08-14T10:03:43.206Z","4.0.0":"2026-08-14T16:55:44.797Z","4.0.1":"2026-08-14T18:32:52.099Z","4.0.2":"2026-08-14T19:03:51.589Z","4.1.0":"2026-08-15T09:00:22.015Z","4.1.1":"2026-08-16T11:52:58.982Z","4.1.2":"2026-08-21T19:02:18.821Z","5.0.0":"2026-08-21T23:13:34.145Z","5.1.0":"2026-08-26T14:31:07.282Z","5.2.0":"2026-08-26T17:30:11.838Z","5.3.0":"2026-08-30T12:48:58.452Z","5.3.1":"2026-08-30T16:49:42.293Z","5.3.2":"2026-08-31T18:23:52.193Z","5.3.3":"2026-09-01T19:21:56.872Z","5.4.0":"2026-09-02T11:43:59.031Z","6.0.0":"2026-09-08T18:49:34.725Z","6.1.0":"2026-09-08T20:05:23.443Z","7.0.0":"2026-09-08T22:28:58.878Z","7.0.1":"2026-09-09T09:30:15.277Z","8.0.0":"2026-09-19T19:52:18.813Z","8.1.0":"2026-09-20T08:05:13.819Z","8.2.0":"2026-09-23T19:24:39.681Z","8.3.0":"2026-09-24T12:14:25.120Z","8.4.0":"2026-09-24T23:07:50.612Z","8.5.0":"2026-09-25T02:09:45.980Z","9.0.0":"2026-09-25T03:14:57.821Z","9.1.0":"2026-09-26T07:43:59.256Z","9.2.0":"2026-09-26T10:32:05.261Z","9.3.0":"2026-09-26T12:23:12.828Z","9.3.1":"2026-09-26T13:55:53.512Z","9.4.0":"2026-09-26T18:23:27.112Z","9.5.0":"2026-09-27T09:54:17.011Z","9.6.0":"2026-09-27T15:13:51.765Z","9.6.1":"2026-09-27T18:46:39.018Z","9.7.0":"2026-09-28T02:08:03.209Z","9.8.0":"2026-09-28T03:57:29.884Z","9.9.0":"2026-09-28T17:56:21.684Z","9.9.1":"2026-09-29T20:04:13.232Z","9.10.0":"2026-09-30T01:37:04.141Z","10.0.0":"2026-09-30T15:47:57.735Z","10.1.0":"2026-09-30T18:24:48.578Z","10.2.0":"2026-09-30T19:19:09.077Z","10.2.1":"2026-09-30T20:17:32.852Z","10.3.0":"2026-10-01T09:18:41.039Z","10.4.0":"2026-10-01T17:57:14.056Z","10.5.0":"2026-10-02T19:15:26.938Z"},"author":"Task Venture Capital GmbH","license":"MIT","description":"Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"readme":"FlexHarness is a modular toolbox for model inference, agents, managed sessions, chat, OCR, KVM control and provider capabilities. It brings SmartAI, SmartAgent, SmartChat, SmartKVM and SmartOCR's AI helpers into one repository through four focused packages published with tspublish.\n\n## Issue Reporting and Security\n\nFor reporting bugs, issues, or security vulnerabilities, please visit [community.foss.global/](https://community.foss.global/). This is the central community hub for all issue reporting. Developers who sign and comply with our contribution agreement and go through identification can also get a [code.foss.global/](https://code.foss.global/) account to submit Pull Requests directly.\n\n## Install and choose an entrypoint\n\nThe toolbox publishes **four packages** under `@modelprofile.com`, with one shared\nrelease version. Integrations use subpath imports instead of additional package\nnames.\n\n| Package | Use it for |\n| --- | --- |\n| `flexharness` | Managed sessions, permissions, tools, chat, OCR, documents and KVM |\n| `flexharness-agent` | Standalone `runAgent` and `AgentSession`; portable `/runner` |\n| `flexharness-models` | Model contracts, `ModelRegistry`, AI SDK helpers and caching |\n| `flexharness-providers` | All eight model providers, authentication, accounts, media and research |\n\nFor a managed agent with model providers:\n\n```sh\npnpm add @modelprofile.com/flexharness @modelprofile.com/flexharness-providers\n```\n\nFor inference without an agent:\n\n```sh\npnpm add @modelprofile.com/flexharness-models @modelprofile.com/flexharness-providers\n```\n\n```typescript\nimport { ModelRegistry, generateText } from '@modelprofile.com/flexharness-models';\nimport { createOpenAiModelProvider } from '@modelprofile.com/flexharness-providers/openai';\n\nconst models = new ModelRegistry().register(createOpenAiModelProvider());\nconst setup = models.getModelSetup({\n  provider: 'openai', model: 'gpt-5.5', apiKey: process.env.OPENAI_API_KEY,\n});\nconst result = await generateText({ ...setup, prompt: 'Hello' });\n```\n\nFor a standalone agent, install `@modelprofile.com/flexharness-agent` and pass the\nsame setup to `runAgent({ ...setup, prompt: 'Hello' })`. Node.js 24 or newer is\nrequired for Node entrypoints. Each application owns its model registry; imports\ndo not register providers globally.\n\n## Harness subpaths\n\nAll entries below belong to `@modelprofile.com/flexharness`. The root export stays\nfocused on managed sessions. Importing it does not load UI, PDF, browser automation\nor provider SDKs.\n\n| Import suffix | Capability | Additional install |\n| --- | --- | --- |\n| `/tools` | Host-supplied execution contexts, HTTP and JSON tools | None |\n| `/tools/node` | Local filesystem and process tools, file-backed job adapters | None |\n| `/browser` | Run-scoped SmartBrowser framed-client adapter for Flex tool providers | `@push.rocks/smartbrowser` |\n| `/compaction` | Model-driven conversation compaction | None |\n| `/media` | Vision recipes using an injected model | None |\n| `/ocr` | `ImageOcr`, OCR contracts and Mistral transport | None |\n| `/chat` | Portable streaming `ChatSession`, history and usage | None |\n| `/chat/cli` | Ink/React terminal chat | `ink ink-text-input react`; TypeScript: `@types/react` |\n| `/chat/web` | Lit `flexchat-window`, `flexchat-message`, `flexchat-input` | `lit` |\n| `/chat/harness` | `FlexHarnessTranscript` and intents for the `@design.estate/dees-catalog` harness components, browser-safe | `@design.estate/dees-catalog` (types only) |\n| `/kvm` | Browser control, terminal framing and OCR observation | `puppeteer` |\n| `/documents` | PDF and image documents, `extractTextFromPdf` | `@push.rocks/smartpdf`; for image documents `sharp` |\n| `/mcp` | MCP clients and AI SDK tool conversion | `@modelcontextprotocol/sdk` |\n| `/migration` | Existing versioned harness migrations | None |\n| `/stores/nosqldb` | `NoSqlFlexHarnessStores`: cross-process CAS stores on `@lossless.org/client/nosqldb` | `@lossless.org/client` |\n\nThe integrations in the last column use optional peer dependencies. Install them\nonly for the entrypoints your project imports, for example:\n\n```sh\npnpm add @modelprofile.com/flexharness lit\n```\n\nFor a managed SmartBrowser resource, install its optional browser peer:\n\n```sh\npnpm add @modelprofile.com/flexharness @push.rocks/smartbrowser\n```\n\n```typescript\nimport { ChatSession } from '@modelprofile.com/flexharness/chat';\nimport '@modelprofile.com/flexharness/chat/web';\n```\n\nChat uses the portable `flexharness-agent/runner`. A browser application can provide\na model backed by its own server transport, or supply `run` in\n`IChatSessionOptions`. The web element accepts an `IChatSession` and maintains its\nown subscription. Full Node `AgentSession` remains at the agent package root.\n\n## Provider subpaths\n\nInstall `@modelprofile.com/flexharness-providers` once. Its root exports all provider\nfactories; use a provider subpath to import just that implementation.\n\n| Import suffix | Capability |\n| --- | --- |\n| `/anthropic`, `/openai`, `/google`, `/groq`, `/mistral`, `/xai`, `/perplexity`, `/ollama` | Model adapters and their request types |\n| `/auth` | ChatGPT browser/device authentication, refresh and model connections |\n| `/accounts` | Account lifecycle, model catalogs, rate limits and credential envelopes |\n| `/auth/files` | Explicit interoperability with external credential files |\n| `/media` | OpenAI audio and image generation |\n| `/research` | Anthropic research utilities |\n\nProvider SDKs are installed together. Authentication, file access and vendor media\nare separate entrypoints and are not imported by the provider factory root. For\nChatGPT authentication, pass\n`connection: createOpenAiChatGptModelConnection(credentials)` from `/auth` to the\nOpenAI model options. API-key inference needs no authentication setup.\n\n## Migration\n\nReplace the withdrawn 6.x component imports with the subpaths above. Provider\nimports change from individual provider packages to\n`@modelprofile.com/flexharness-providers/<provider>`. Keep direct agent and models\nimports and upgrade them to the same release version. The removed package names\nare not republished.\n\n| Previous API | Replacement |\n| --- | --- |\n| SmartAI models, caching and AI SDK contracts | `flexharness-models` and explicit `ModelRegistry` registrations |\n| SmartAI provider factories | `flexharness-providers/<provider>` |\n| SmartAI authentication, account adapters and external credential files | `flexharness-providers/auth`, `/accounts`, `/auth/files` |\n| SmartAI vision, document and OCR helpers | `flexharness/media`, `/documents`, `/ocr` |\n| SmartAI audio, image and research helpers | `flexharness-providers/media`, `/research` |\n| SmartAgent runtime, events and persistence contracts | `flexharness-agent` |\n| SmartAgent tools, local tools, compaction and MCP | `flexharness/tools`, `/tools/node`, `/compaction`, `/mcp` |\n| SmartChat sessions, CLI and web components | `flexharness/chat`, `/chat/cli`, `/chat/web` |\n| SmartKVM | `flexharness/kvm`: `BrowserKvm`, `KvmTerminal`, `createKvmTools` |\n| SmartOCR image AI helper | `ImageOcr.recognizeImageBytes` from `flexharness/ocr` |\n| SmartOCR PDF AI helper | `extractTextFromPdf` from `flexharness/documents` |\n\nFor image OCR, rename `smartAiOcrEngine` to `engine` and `mistralOcrOptions` to\n`mistralOptions`; pass the API key explicitly. Native searchable-PDF processing\nthrough `SmartOcr.processPdfBuffer` remains in SmartOCR.\n\nExisting `ISmartAi*` and `TSmartAi*` contracts, durable event/job schemas, harness\nprojections, credential envelopes and external credential paths remain unchanged.\nThe OpenAI account `SmartAiProviderRegistry` is separate from inference's\n`ModelRegistry`. The package consolidation requires no data migration.\n\n## Developing and releasing\n\nFour named `tspublish.json` descriptors own the published packages. Other folder\ndescriptors specify compilation order only. Each package explicitly declares its\nowned folders, exports and required or optional peer dependencies. Source and\ncompiled declaration mappings support development without workspace links.\n\nRun `pnpm build`, `pnpm test` and `pnpm run check:test`. Tests install packed\nartifacts in disposable directories to check minimal dependency graphs, every\npublic subpath and browser imports. Live provider and browser authentication tests\nremain opt-in in `test_integration/`.\n\nThe configured GitZone release prepares four packages, records their exact\nartifacts, and publishes models before its dependents to npmjs and Verdaccio.\nThird-party OpenAI Codex notices accompany the providers package.\n\n## Core Setup\n\n```typescript\nimport {\n  FlexHarness,\n  JsonFileFlexHarnessStores,\n  type IFlexResolvedModel,\n  type TFlexAgentToolSet,\n} from '@modelprofile.com/flexharness';\n\ninterface IProjectScope {\n  projectRoot: string;\n}\n\nconst stores = new JsonFileFlexHarnessStores({\n  directory: '/var/lib/my-app/model-sessions',\n});\n\nconst harness = new FlexHarness<IProjectScope>({\n  scopeResolver: {\n    async resolveScope(scopeId) {\n      const project = await projectRegistry.get(scopeId);\n      return {\n        // Aliases that resolve to this same key share sessions and save ordering.\n        storageKey: project.accountAndProjectKey,\n        scope: { projectRoot: project.root },\n      };\n    },\n  },\n  modelResolver: {\n    async resolveModel({ scope, modelHint, signal }): Promise<IFlexResolvedModel> {\n      const configured = await modelRegistry.resolve({ scope, modelHint, signal });\n      return {\n        model: configured.model,\n        identity: {\n          provider: configured.providerId,\n          model: configured.modelId,\n          displayName: configured.label,\n        },\n        providerOptions: configured.providerOptions,\n      };\n    },\n  },\n  toolProvider: {\n    async provideTools(context) {\n      const tools: TFlexAgentToolSet = await createProjectTools({\n        root: context.scope.projectRoot,\n        signal: context.signal,\n        requestPermission: context.requestPermission,\n      });\n      return {\n        tools,\n        close: async () => closeProjectTools(tools),\n      };\n    },\n  },\n  stores,\n  builtInTools: {\n    renameSession: true,\n    projectManagement: {\n      // task, goal, and scratchpad default to true when this block exists.\n    },\n  },\n  toolOutputLimits: {\n    maxDepth: 12,\n    maxBytes: 256 * 1024,\n  },\n  callbackLimits: {\n    maxEvents: 10_000,\n    maxOutputBytes: 1024 * 1024,\n    maxParts: 2_000,\n  },\n  promptQueueLimits: {\n    maxOutstandingPromptsPerSession: 16,\n    maxOutstandingBytesPerSession: 64 * 1024 * 1024,\n    maxPendingAdmissions: 64,\n    maxPendingAdmissionBytes: 128 * 1024 * 1024,\n    maxTerminalEntriesPerSession: 64,\n  },\n  reversionLimits: {\n    maxCompletedTurns: 100,\n    maxSegments: 300,\n    maxExcludedRunIds: 1000,\n    maxPendingReversionReleases: 1000,\n  },\n  sessionImportLimits: {\n    maxOpenImports: 2,\n    maxMessagesPerSession: 2048,\n    maxSessionBytes: 64 * 1024 * 1024,\n    maxPageBytes: 1024 * 1024,\n    stagedImportIdleTimeoutMs: 5 * 60 * 1000,\n  },\n  subagents: [\n    {\n      name: 'researcher',\n      description: 'Research a focused question and return one final answer.',\n      modelHint: 'reasoning-model',\n      system: 'Investigate the assigned question. Return a concise evidence-based answer.',\n      maxSteps: 8,\n    },\n  ],\n  maxSubagentDepth: 1,\n  maxSubagentCallsPerRun: 32,\n  externalErrorProjector: (_error, context) => ({\n    name: 'ModelOperationError',\n    message: `The ${context.source} operation failed.`,\n    code: 'MODEL_OPERATION_FAILED',\n  }),\n});\n```\n\n`modelRegistry`, `projectRegistry`, `createProjectTools`, and `closeProjectTools` in this example are application-owned integrations. FlexHarness passes the same run `AbortSignal` to the model resolver and tool provider. Every model-resolver, application tool-provider, and resource tool-provider context also carries the required canonical `sessionGenerationId` and `sessionGenerationSequence`, allowing host operations to authorize the exact session generation rather than a reusable session ID alone.\n\n## Resource Tool Providers\n\n`resourceToolProviderResolver` composes zero or more resource-owned providers with the existing application `toolProvider`. The resolver runs fresh for every prompt and returns the current resource attachment descriptors:\n\n```typescript\nresourceToolProviderResolver: {\n  async resolveResourceToolProviders({\n    scope,\n    sessionId,\n    sessionGenerationId,\n    sessionGenerationSequence,\n    runId,\n    signal,\n  }) {\n    const attachments = await resourceRegistry.listAttached({\n      scope,\n      sessionId,\n      sessionGenerationId,\n      sessionGenerationSequence,\n      runId,\n      signal,\n    });\n    return attachments.map((attachment) => ({\n      resourceId: attachment.resourceId,\n      attachmentRevision: attachment.attachmentRevision,\n      provider: createResourceToolProvider(attachment),\n    }));\n  },\n},\n```\n\nEach descriptor uses the existing `IFlexToolProvider<TScope>` contract. Its provider receives the normal run context and must return a fresh run-scoped handle. The resource resolver context carries the same required canonical session generation as the tool-provider contexts. The original `toolProvider` remains optional and its tool names remain unchanged. Resource tool names are deterministic and bounded:\n\n1. `resourceIdentity` is the lowercase hexadecimal SHA-256 of `JSON.stringify([resourceId, attachmentRevision])`.\n2. The namespace is `resource_` plus the first 16 digest characters.\n3. The exposed name is `<namespace>__<stem>__<toolDigest>`. `stem` replaces characters outside `[A-Za-z0-9_-]` with `_`, keeps the first 16 characters, and falls back to `tool`; `toolDigest` is the first 12 lowercase hexadecimal characters of SHA-256 over the original tool name.\n\nThe resolver accepts at most 128 descriptors per run. `resourceId` must be non-empty and at most 512 UTF-8 bytes, `attachmentRevision` must be a non-negative safe integer, and each original resource tool name must be non-empty and at most 512 UTF-8 bytes. FlexHarness rejects duplicate `resourceId` values even across revisions, duplicate derived namespaces, and duplicate final exposed tool names before model execution. Descriptor identity and namespace validation completes before any application or resource provider is acquired.\n\nResource permission requests are scoped with the complete 64-character `resourceIdentity`, not the shortened tool namespace. FlexHarness rewrites `kind` to `resource.<resourceIdentity>.<providerKind>` and an optional `rememberKey` to `resource:<resourceIdentity>:<providerRememberKey>`. Harness-owned metadata contains `resourceId`, `attachmentRevision`, `resourceIdentity`, and `toolNamespace`; provider metadata is nested under `providerMetadata`, so it cannot override attachment identity.\n\nFlexHarness owns every acquired handle. Normal close and partial-failure cleanup run in reverse acquisition order, attempt every handle, aggregate multiple failures, and retain failed cleanup for retirement or disposal retry. Cancellation uses the same path. If model resolution fails while a resource provider is still settling, a late returned handle remains tracked and disposal waits for its closure. Application and resource providers may not define a harness built-in name while that built-in is enabled for the current run. Disabled names are not reserved.\n\n## Project Management Tools\n\nHarness-owned project tools are opt-in and session-local:\n\n```typescript\nbuiltInTools: {\n  renameSession: true,\n  projectManagement: {\n    task: true,\n    goal: true,\n    scratchpad: true,\n  },\n},\n```\n\n`renameSession` enables `rename_session`. The `projectManagement` block enables the public project-management APIs and contains the model-tool flags; `task`, `goal`, and `scratchpad` each default to enabled unless explicitly set to `false`. Without that block, the public project-management APIs reject with `FlexHarnessValidationError`, while the required `stores.projectManagement` domain still participates in session cleanup. With no `builtInTools` configuration, none of these four tools is present. Constructor options are copied and frozen.\n\nProject-management records use `FLEX_PROJECT_MANAGEMENT_SCHEMA_VERSION`, currently `1`, and form a strict live-or-tombstone union:\n\n```typescript\ninterface IFlexProjectManagementSnapshot {\n  schemaVersion: 1;\n  revision: number;\n  sessionGenerationId: string;\n  sessionGenerationSequence: number;\n  goal?: string;\n  scratchpad: string;\n  tasks: Array<{\n    id: string;\n    content: string;\n    status: 'pending' | 'in_progress' | 'completed' | 'cancelled';\n    priority: 'high' | 'medium' | 'low';\n    createdAt: string;\n    updatedAt: string;\n  }>;\n}\n\ninterface IFlexProjectManagementTombstone {\n  schemaVersion: 1;\n  revision: number;\n  sessionGenerationId: string;\n  sessionGenerationSequence: number;\n  deletedAt: string;\n}\n\ntype TFlexProjectManagementRecord =\n  | IFlexProjectManagementSnapshot\n  | IFlexProjectManagementTombstone;\n```\n\nThe tools use strict action-discriminated inputs:\n\n- `task`: `list`, `create`, `update`, `delete`, or `clear`. Create defaults to `pending` and `medium`.\n- `goal`: `get`, `set`, or `clear`.\n- `scratchpad`: `get`, `set`, `append`, or `clear`. Append concatenates the supplied content exactly.\n- `rename_session`: sets the active session title and returns the authoritative session.\n\nEvery project action returns the authoritative revision and state; task mutations also return the affected task, and clear returns the removed tasks. Reads never save. A set, clear, append, update, idempotent create, or empty task clear that makes no state change returns the current revision without writing. Mutations load once, apply once, validate the complete next snapshot, and issue one compare-and-swap save at `revision + 1`. FlexHarness never retries or merges an external conflict.\n\nTool task creation accepts an optional `id`. When omitted, FlexHarness requires the stable AgentSession `toolCallId` and derives `task_` plus the SHA-256 of `JSON.stringify(['flexharness-project-task-v1', storageKey, sessionId, runId, toolCallId])`. Repeating an explicit or deterministic ID with identical content, status, and priority is idempotent; different creation data conflicts. Application callers must supply an explicit `id` to `createProjectTask()` because no tool-call identity exists at that boundary.\n\nThe same engine is available to applications:\n\n```typescript\nawait harness.getProjectState(scopeId, sessionId);\nawait harness.listProjectTasks(scopeId, sessionId);\nawait harness.createProjectTask(scopeId, sessionId, { id, content, status, priority });\nawait harness.updateProjectTask(scopeId, sessionId, { id, content, status, priority });\nawait harness.deleteProjectTask(scopeId, sessionId, id);\nawait harness.clearProjectTasks(scopeId, sessionId);\nawait harness.getProjectGoal(scopeId, sessionId);\nawait harness.setProjectGoal(scopeId, sessionId, goal);\nawait harness.clearProjectGoal(scopeId, sessionId);\nawait harness.getProjectScratchpad(scopeId, sessionId);\nawait harness.setProjectScratchpad(scopeId, sessionId, content);\nawait harness.appendProjectScratchpad(scopeId, sessionId, content);\nawait harness.clearProjectScratchpad(scopeId, sessionId);\n```\n\nPublic writes use `{ actor: 'application' }`. Tool writes use `{ actor: 'agent', runId, toolCallId, agent? }`, allowing custom stores to preserve attribution. Project side effects commit independently of the later model outcome and are intentionally outside transcript undo/redo.\n\n`FLEX_PROJECT_MANAGEMENT_LIMITS` exports the hard UTF-8 and aggregate limits: goal 8 KiB, scratchpad 128 KiB, task content 8 KiB, task ID 512 bytes, title 2048 bytes, 512 tasks, and a 1 MiB serialized snapshot. The aggregate bound leaves room for worst-case JSON escaping of a controller-valid scratchpad. Loaded snapshots reject extra fields, duplicate IDs, invalid status/priority/timestamps, non-JSON data, wrong schema/revision, and every exceeded bound before use.\n\n`IFlexProjectManagementStore` is exact per `(storageKey, sessionId)`: `load`, CAS `save`, CAS `tombstoneSession`, and `purgeNamespace` must not collapse multiple sessions or storage namespaces. `load()` returns `TFlexProjectManagementRecord | undefined` and receives an optional `IFlexProjectManagementSessionContext` as its third argument; `tombstoneSession()` receives the same optional context as its fifth argument. FlexHarness always supplies both, while existing two-argument loads, four-argument tombstones, and shorter store implementations remain compatible.\n\n`IFlexProjectManagementSessionContext` contains `sessionGenerationId`, `sessionGenerationSequence`, and optional `subagent`. The atomic `IFlexSubagentProvenance` block contains `parentSessionId`, `parentSessionGenerationId`, `parentSessionGenerationSequence`, `originParentRunId`, `originParentToolCallId`, `agent`, and actual session `depth`. Both the context and its separately cloned nested block are frozen.\n\nSame-generation live saves use normal revision CAS, and a same-generation tombstone permanently rejects later live saves. A higher `sessionGenerationSequence` with a different `sessionGenerationId` may replace only an older tombstone using expected revision `0`; it cannot replace a live record. This resets the PM revision for a recreated core session while stale saves and tombstones from older generations remain fenced. Deleting a recreated session that made no PM writes still replaces the prior-generation tombstone with a revision-1 tombstone for the new generation.\n\nEvery newly created core session exposes and persists a `sessionGenerationId` plus its monotonic `sessionGenerationSequence`. FlexHarness generates a strong random ID when `sessionGenerationId` is omitted. Applications may supply the ID to `createSession()` when they need to persist creation authority before dispatch; a supplied ID must be nonblank, contain no control characters, and fit within `FLEX_SESSION_GENERATION_ID_MAX_BYTES` (128 UTF-8 bytes). FlexHarness still assigns the sequence atomically. A legacy scope session without those fields is assigned a deterministic bounded ID derived from its immutable `storageKey`, `sessionId`, and `createdAt`; FlexHarness persists the repaired scope snapshot before accepting work. Grouped core deletion tombstones retain both fields after live metadata is removed.\n\nNormal Flex session cleanup always waits in-flight local project operations, then loads and CAS-tombstones `stores.projectManagement`, regardless of whether PM tools are enabled in that harness. Child cleanup persists one complete `IFlexSubagentProvenance` block on its core tombstone before live metadata is removed. One cleanup invocation reuses the identical doubly frozen context object across bounded CAS retries; restart or a later cleanup invocation reconstructs a new frozen context from the persisted provenance. If a concurrent same-generation save wins first, cleanup reloads and retries; unresolved conflict or store failure retains the core Flex session cleanup tombstone for a later retry. The durable PM tombstone is not physically removed during normal session cleanup.\n\n`purgeNamespace(storageKey)` is the explicit destructive reclamation operation and physically removes every live record and tombstone in that exact PM namespace. Applications may call it only after serializing every scope alias, preventing new admission, awaiting `retireScope()` on every harness owner, and deleting or purging the application-owned core scope namespace. `retireScope()` itself remains non-destructive and never calls `purgeNamespace()`. Purging PM first, purging only one alias, or racing a stale harness can remove the fence that makes session-generation reuse safe.\n\n`InMemoryFlexProjectManagementStore` is the standalone in-memory implementation. `InMemoryFlexHarnessStores` and `JsonFileFlexHarnessStores` include `projectManagement` as a required bundle member. `assertFlexProjectManagementSnapshot()` validates live records, `assertFlexProjectManagementTombstone()` validates tombstones, and `assertFlexProjectManagementRecord()` validates the union. `createEmptyFlexProjectManagementSnapshot(sessionGenerationId, sessionGenerationSequence)` returns a revision-0 live state for the supplied current generation.\n\n## Subagents\n\n`subagents` enables the harness-owned `delegate` and `delegate_result` tools when at least one definition exists and the session depth is below `maxSubagentDepth`. A tool provider cannot replace either enabled built-in. Delegation is asynchronous by default: `delegate` returns `{ taskId, status: 'running', runId }` after durable child admission, so the parent can continue independent work. `delegate_result({ taskId, waitMs? })` reads live status and, once settled, bounded final text and model identity; its optional wait is limited to 240 seconds and observes parent cancellation. Set `foreground: true` to await the final answer in `delegate` itself. Children remain owned by the parent turn: Stop cancels its exact child runs, and the parent joins them before releasing authority and finalizing. A child result arriving while inference is still active enters the parent's next model context as untrusted task data.\n\nThe model calls it with this exact input shape:\n\nWhen upgrading from 9.x, callers that require the previous synchronous delegate result must pass `foreground: true`. Tool providers must also leave the newly reserved `delegate_result` name available when subagents are enabled.\n\n```typescript\ninterface IDelegateInput {\n  description: string;\n  prompt: string;\n  subagentType: string;\n  taskId?: string;\n  foreground?: boolean;\n}\n```\n\nBefore creating or resuming a child, FlexHarness requests permission on the parent run with `kind: 'subagent.start'`, the parent `toolCallId`, and separately bounded harness-owned agent/task metadata. Its metadata includes `childSessionId`, the exact ID reserved for this call: FlexHarness derives it deterministically when `taskId` is omitted and copies the supplied candidate when `taskId` is present. A resume also retains that candidate as `taskId`. This block is not truncated by `toolOutputLimits`. The reserved ID binds permission handling before child creation but does not prove that the child exists or is owned: applications must treat the later delegated admission context as authoritative. The controller answers through the normal permission APIs. This request has no `rememberKey`, so `always` is invalid; controllers use `once` or `reject`.\n\nEach new invocation creates a durable child `IFlexSession` with immutable `parentSessionId`, origin `parentRunId`, origin `parentToolCallId`, `agent`, and `depth`. New public roots persist `depth: 0`; legacy schema-1 roots may omit it. These fields are harness-owned; public `createSession()` remains limited to `sessionId`, `sessionGenerationId`, and `title`. Child sessions reject direct `prompt()`, `startPrompt()`, `enqueuePrompt()`, and `schedulePrompt()` calls and run only through the `delegate` tool. The model and tool resolver contexts receive optional immutable `parentSessionId` and `agent` values so integrations can apply agent-specific model and tool policy. Child prompts use the definition's `modelHint`, `system`, and `maxSteps`.\n\nThe parent tool part receives `childSessionId` as soon as the child is acquired, so a host can offer an authorized live transcript. A foreground call also adds the resolved child model to its part and returns bounded JSON:\n\n```typescript\n{\n  taskId: 'subagent_...',\n  status: 'completed',\n  text: 'The child final answer, limited to 64 KiB.',\n  model: { provider: '...', model: '...', displayName: '...', variant: '...' },\n}\n```\n\nOmitting `taskId` creates a deterministic child for the parent session, run, and tool call. The model-visible tool description and `taskId` schema state this creation rule directly. Repeating that same invocation does not create another child. If the deterministic child already has messages, FlexHarness reports an uncertain prior execution and never silently reruns it. This preserves AgentSession's durable parent tool intent as crash authority; controllers use `listUncertainToolExecutions()` and `reconcileToolExecution()` for uncertain parent calls.\n\nSupplying `taskId` deliberately resumes an idle, live child from a later run of the same immutable parent session and the same configured agent. The caller must use the exact ID returned by an earlier completed delegate call; an unknown ID fails with safe corrective guidance and never creates a child under the supplied label. Resume starts a new child prompt while retaining the child's original parent run and tool-call origin. A child owned by another parent or agent, a deleted child, an active child, a same-run resume, or a second acquisition of the same child within one later parent run is rejected. Parent cancellation propagates only to the exact child run started by that delegate call.\n\n`delegatedRunAdmissionProvider` optionally adds an application-owned admission lease around each internally delegated child run. The public contracts are `IFlexDelegatedRunAdmissionProvider<TScope>`, `IFlexDelegatedRunAdmissionContext<TScope>`, and `IFlexDelegatedRunAdmissionLease`. The provider is never called for root prompts or direct public prompt APIs. It receives a frozen context containing the resolved `scopeId`, exact captured `scope`, and `storageKey`; the exact child `sessionId`, session generation, queue, and run; the exact current parent session generation, queue, run, and delegate `toolCallId`; immutable `originParentRunId` and `originParentToolCallId`; the child agent and depth; and the child run `AbortSignal`. For `taskId` resume, the current parent queue/run/tool-call fields identify this delegate invocation, while the origin fields remain fixed to the invocation that created the durable child.\n\n```typescript\ndelegatedRunAdmissionProvider: {\n  async acquireDelegatedRunAdmission(context) {\n    const admission = await controller.acquireDelegatedRun({\n      child: {\n        sessionId: context.sessionId,\n        sessionGenerationId: context.sessionGenerationId,\n        sessionGenerationSequence: context.sessionGenerationSequence,\n        queueId: context.queueId,\n        runId: context.runId,\n      },\n      parent: {\n        sessionId: context.parentSessionId,\n        sessionGenerationId: context.parentSessionGenerationId,\n        sessionGenerationSequence: context.parentSessionGenerationSequence,\n        queueId: context.parentQueueId,\n        runId: context.parentRunId,\n        toolCallId: context.parentToolCallId,\n        originRunId: context.originParentRunId,\n        originToolCallId: context.originParentToolCallId,\n      },\n      signal: context.signal,\n    });\n    return {\n      close: () => admission.close(),\n    };\n  },\n},\n```\n\nAcquisition completes before generation-side branch reversion, context compaction, model resolution, application or resource tool-provider callbacks, and model execution. Child session store and runtime initialization may already have occurred before acquisition. Providers must honor the supplied `AbortSignal`; an abort can settle the active child and parent without waiting for an acquisition that ignores cancellation, while FlexHarness retains ownership and closes any lease returned later.\n\nFor a normally acquired lease, FlexHarness gives `close()` an awaited attempt after AgentSession generation and before canonical accepted, rejected, or interrupted finalization and the terminal `prompt.finished` event. If an abort detaches an acquisition that ignores its signal, the run may settle before acquisition returns; FlexHarness retains that owner and closes any late lease. `close()` must be idempotent and safe to retry after rejection. A close failure prevents successful child acceptance and remains owned by the exact child session generation for retry by later exact-session deletion, scope retirement, or disposal. Retirement and disposal truthfully wait for late acquisition and lease cleanup.\n\nLimits are validated and frozen at construction: at most 32 unique definitions; names are non-empty and at most 128 UTF-8 bytes; descriptions 2048 bytes; optional model hints 512 bytes; optional system prompts 64 KiB; and optional `maxSteps` a positive safe integer. `maxSubagentDepth` defaults to 1 and must be a positive safe integer at most 8. `maxSubagentCallsPerRun` defaults to 32 and must be a positive safe integer at most 128. A call slot is consumed synchronously at the start of every schema-valid delegate execution, before semantic bounds, subagent type/depth validation, permission, or child work. Inputs rejected by the tool schema never start delegate execution and do not consume a slot. After successful semantic validation, the child ID candidate is reserved for the rest of the parent run, including after permission rejection or later failure. Permission rejection creates no child session. Omitting `taskId` reserves a deterministic new child ID; supplying `taskId` reserves that unverified candidate and attempts resume after permission only if it identifies a resumable child. Delegate descriptions are non-empty and at most 256 UTF-8 bytes, prompts non-empty and at most 64 KiB, subagent types at most 128 bytes, and task IDs at most 512 bytes.\n\nScope snapshots remain schema 1 and legacy child tombstones without `subagent` provenance continue to load. New child tombstones write the atomic provenance block and reject partial, parent-generation-mismatched, depth-mismatched, or duplicate-origin records. FlexHarness versions before this provenance addition reject that new optional key under their strict reader, so downgrading or mixing old readers with newly written scope snapshots is unsupported.\n\n## Sessions And Prompts\n\n```typescript\nconst session = await harness.createSession('project:billing', {\n  title: 'Invoice import',\n});\n\nconst result = await harness.prompt(\n  'project:billing',\n  session.sessionId,\n  [\n    { type: 'text', text: 'Extract the invoice totals.' },\n    {\n      type: 'file',\n      data: invoicePdfBase64,\n      mediaType: 'application/pdf',\n      name: 'invoice.pdf',\n    },\n  ],\n  { modelHint: 'document-model', maxSteps: 12 },\n);\n\nconsole.log(result.assistantMessage.parts);\nconsole.log(result.usage);\n```\n\n`TFlexPrompt` is deliberately JSON-safe. It accepts a string or an ordered array of:\n\n- `{ type: 'text', text }`\n- `{ type: 'image', data, mediaType?, name? }`\n- `{ type: 'file', data, mediaType, name? }`\n\nAttachment `data` is a string containing base64, a data URL, or a remote URL. Public input never requires `Buffer` or `URL` objects. Remote URL strings are converted only at the private AgentSession invocation boundary.\n\nAttachment payloads are never copied into public audit messages or events. Public attachment parts contain metadata only:\n\n```typescript\n{\n  type: 'attachment',\n  partId: '...',\n  attachmentType: 'file',\n  source: 'inline-base64', // or data-url / remote-url\n  sizeBytes: 48231,        // omitted when it cannot be determined\n  mediaType: 'application/pdf',\n  name: 'invoice.pdf',\n}\n```\n\nThe original string remains only in canonical private Agent events, so a later model turn can receive the attachment again. A turn that succeeded stays in future context, and so does a turn stopped through `abort()` or `cancelPrompt()` once its model produced output: its prompt, the steers it took in and what the model produced before the stop, with every tool call that has no recorded result closed by an error result saying its effect is unknown. A turn stopped before any model output leaves no trace, so its prompt can be sent again without appearing twice; its `run.finished` event and finished queue entry carry `keptInContext: false`. Failed, resolver-failed, cleanup-failed, and persistence-failed turns, and turns a process restart interrupted, do not add anything to future context.\n\nThe main session methods are:\n\n```typescript\nawait harness.listSessions(scopeId);\nawait harness.createSession(scopeId, { sessionId, sessionGenerationId, title });\nawait harness.getSession(scopeId, sessionId);\nawait harness.getMessages(scopeId, sessionId);\nawait harness.listMessagePage(scopeId, sessionId, { limit: 50, before: cursor });\nawait harness.getMessage(scopeId, sessionId, messageId);\nawait harness.listSlashCommands(scopeId, sessionId);\nconst command = await harness.executeSlashCommand(scopeId, sessionId, '/init focus on tests');\nif (command.type === 'prompt-admission') {\n  console.log(command.admission.queueId, command.admission.runId);\n  await command.admission.completion;\n}\nawait harness.updateSession(scopeId, sessionId, { title: 'Renamed', archived: true });\nawait harness.updateSession(scopeId, sessionId, { title: null, archived: false });\nawait harness.getProjectState(scopeId, sessionId);\nawait harness.createProjectTask(scopeId, sessionId, { id: 'tests', content: 'Add tests' });\nawait harness.setProjectGoal(scopeId, sessionId, 'Ship the next release');\nawait harness.appendProjectScratchpad(scopeId, sessionId, 'One durable note.');\nawait harness.deleteSession(scopeId, sessionId);\nawait harness.deleteSessionGenerationCohort(scopeId, {\n  root: { sessionId, sessionGenerationId, sessionGenerationSequence },\n  authorizedCohort,\n});\nawait harness.prompt(scopeId, sessionId, prompt, options);\nconst queued = await harness.enqueuePrompt(scopeId, sessionId, prompt, options);\nconsole.log(queued.queueId);\nawait queued.completion;\nconst admission = await harness.startPrompt(scopeId, sessionId, prompt, options);\nconsole.log(admission.queueId);\nconsole.log(admission.runId);\nawait admission.completion;\nconst scheduled = await harness.schedulePrompt(\n  scopeId,\n  sessionId,\n  'refresh-index',\n  prompt,\n  { debounceMs: 250 },\n);\nawait harness.cancelScheduledPrompt(scopeId, sessionId, scheduled.scheduleKey);\nawait harness.getPromptQueueEntry(scopeId, sessionId, queued.queueId);\nawait harness.listPromptQueueEntries(scopeId, sessionId);\nawait harness.cancelPrompt(scopeId, sessionId, queued.queueId);\nawait harness.steerPrompt(scopeId, sessionId, admission.queueId, { steerId, prompt });\nawait harness.abort(scopeId, sessionId);\nawait harness.listPendingPermissions(scopeId, sessionId);\nawait harness.respondToPermission(scopeId, sessionId, permissionId, 'once');\nawait harness.pushRuntimeEvent(scopeId, sessionId, { type: 'workspace.changed', path: 'src/' });\nawait harness.listUncertainToolExecutions(scopeId, sessionId);\nawait harness.reconcileToolExecution(scopeId, sessionId, intentId, {\n  resolution: 'executed',\n  output: { committed: true },\n});\nconst reversion = await harness.getSessionReversionInfo(scopeId, sessionId);\nconsole.log(reversion.undoAvailable, reversion.redoAvailable, reversion.groups);\nconst undone = await harness.undoSession(scopeId, sessionId);\nconsole.log(undone.revertedRunId);\nconst redone = await harness.redoSession(scopeId, sessionId);\nconsole.log(redone.restoredRunId);\nawait harness.compactSession(scopeId, sessionId, { modelHint: 'summary-model' });\nawait harness.archiveSessionEvents(scopeId, sessionId, compactionEventId);\nawait harness.listBackgroundExecutions(scopeId, sessionId);\nawait harness.getBackgroundExecution(scopeId, sessionId, executionId);\nawait harness.abortBackgroundExecution(scopeId, sessionId, executionId);\nawait harness.retireScope(scopeId);\nawait harness.dispose();\n```\n\nOnly one run may be active in a session. Additional prompts enter a bounded FIFO owned by FlexHarness, while different sessions can run concurrently. `enqueuePrompt()` resolves with `{ queueId, completion }` after the immutable prompt and options have been accepted into that runtime queue and `prompt.queued` has been emitted. `startPrompt()` keeps its durable-admission behavior: it waits for its FIFO turn and resolves with `{ queueId, runId, completion }` only after the canonical generation claim, run ID, and initial public audit messages have been durably reserved and the corresponding start events have been emitted. `prompt()` preserves the simpler behavior by awaiting completion internally.\n\nQueue entries expose `queued`, `starting`, `scheduled`, `running`, `completed`, `failed`, and `cancelled` status through `getPromptQueueEntry()` and `listPromptQueueEntries()`. The list is ordered by process-local `queueSequence`. `getPromptQueueEntry()` throws `FlexHarnessNotFoundError` for an unknown or evicted ID. `cancelPrompt()` cancels one exact queue ID: a waiting entry leaves the FIFO and releases capacity immediately but remains queryable as `cancelled` until terminal retention evicts it; a promoted entry uses the canonical run cancellation path. Cancelling a terminal entry returns `false`, while an unknown ID throws. `abort()` remains scoped to the currently active run.\n\nThe displayed queue limits are the defaults. Outstanding count and byte limits apply per session and include every non-terminal queued or active prompt until it settles. Pending-admission limits apply to the complete harness while scope aliases are unresolved. Terminal retention applies per session. Exceeding an admission limit throws `FlexHarnessQueueFullError`.\n\nQueue payloads, status records, and `prompt.*` queue events are process-local. The existing stores do not have a private generic queue domain: projections are deliberately redacted, Agent events are canonical conversation transactions, and jobs are AgentSession background executions. FlexHarness therefore never writes a never-started prompt into those unrelated domains. A process restart drops never-started entries; a prompt that reached durable run admission continues to use the existing canonical recovery policy and is repaired to a safe terminal state instead of being replayed.\n\n`schedulePrompt()` waits for its FIFO turn, performs the same durable admission, exposes session status `scheduled`, and starts model preparation after its bounded `debounceMs` delay. Schedule keys remain unique across waiting and active prompts. `cancelScheduledPrompt()` returns `true` only while the matching schedule key can still be cancelled. Cancelling while it is still waiting rejects the `schedulePrompt()` call itself; cancelling after durable admission rejects the returned completion and marks its reserved audit messages cancelled.\n\nThe reservation save is the admission point. A save failure produces no start events or active audit. If disposal begins while that save is in flight and the save commits, admission still resolves and its completion settles as cancelled; disposal waits for terminal finalization.\n\n`listMessagePage()` returns the newest contiguous page in chronological order. `limit` must be an integer from 1 through 50 and defaults to 50. `nextCursor` is opaque, limited to 4096 UTF-8 bytes, bound to the resolved storage namespace and session, and remains stable when newer messages are appended. Mismatched and stale cursors fail validation. Each page carries `startIndex`, the zero-based index of its first message in the session's visible history (for an empty page, the index the page ends at), so a consumer can order and page by absolute position. Appending messages leaves every index unchanged; a branch after an undo reuses the positions of the history it replaces, so a consumer re-reads its pages after `session.history.changed`. `getMessage()` performs an exact lookup. Transfer identifiers are limited to 512 bytes, text and reasoning parts to 96 KiB, complete messages to 480 KiB, and complete page envelopes to 512 KiB. A page may therefore contain fewer messages than requested. Oversized text is truncated and an otherwise oversized parts collection is replaced with an explicit elision marker; metadata that still cannot fit fails validation. Canonical private Agent events are unchanged.\n\n`updateSession()` supports title replacement, explicit title clearing with `null`, and archive state through `archived`. Title-only updates remain available while prompts are queued or running, while permission is pending, and after archival. Requests containing `archived` are rejected while the session has any outstanding prompt or pending permission; a mixed title-and-archive request is rejected atomically without changing the title. Archived sessions expose `archivedAt`. Deleting a session cascades through its complete descendant subtree. One durable root-keyed tombstone group hides every newly affected live session, and the delete also joins any already-separate descendant cleanup groups without rewriting their roots. FlexHarness then cancels queued and active subtree work, emits terminal queue events, waits for admitted initialization, and purges runtime queue status while cleaning runtime and persisted domains child-first. The requested root tombstone is removed last after every domain confirms cleanup; project-management cleanup confirmation is a retained durable project tombstone rather than physical removal. An imported session can hold no project-management state, so its deletion writes no project tombstone. A successful live `deleteSession()` call emits `session.deleted` for each session it newly tombstoned; retries of an existing tombstone and automatic load, retirement, or disposal cleanup emit no deletion events. Direct deletion of a descendant cascades only through that descendant's subtree. Cleanup authority follows the resolved storage namespace, so scope aliases share the same groups. A partial failure retains durable ownership for retry by a later `deleteSession()`, namespace load, `retireScope()`, or `dispose()` call.\n\n`deleteSessionGenerationCohort()` is the generation-fenced destructive form for controllers. Its `root` and every `authorizedCohort` entry use the exact `{ sessionId, sessionGenerationId, sessionGenerationSequence }` shape. The cohort contains unique entries in strictly ascending `sessionId` order and is limited by `FLEX_SESSION_GENERATION_COHORT_MAX_ENTRIES` (2048). FlexHarness atomically validates the matching root, its complete live subtree, and every retained descendant tombstone group before reserving deletion. A missing or different root generation returns `{ matched: false }` without touching a newer generation; a missing or mismatched cascade entry throws before new tombstoning or cleanup. Extra valid entries do not expand the cascade. A matched partial cleanup remains retryable with the same authority and resolves to `{ matched: true }` when cleanup completes. The existing `deleteSession()` method remains available for callers that intentionally own the complete reusable-ID namespace.\n\n`abort()` returns `true` only while cancellation is still accepted. Terminal persistence is the run's commit point; once it starts, `abort()` returns `false` and the already-fixed terminal outcome completes while the session remains busy.\n\n### Steering a Running Turn\n\n`steerPrompt()` hands a message to the running run of a prompt instead of queueing it behind that run:\n\n```typescript\nconst admission = await harness.startPrompt(scopeId, sessionId, 'Plan the release.');\nawait harness.steerPrompt(scopeId, sessionId, admission.queueId, {\n  steerId: 'steer-1',\n  prompt: 'Keep the database migration out of it.',\n});\nconst result = await admission.completion;\nconsole.log(result.unappliedSteerIds); // [] once the run took the steer in\n```\n\nThe run takes a steer in at its next step boundary: after the tool results of its current model step are recorded and before its next model call. A running tool call or a pending permission is never interrupted; the steer waits for the boundary that follows it. A steer taken in is a user message of the run (`steerId` set) that the model sees in its next call and every later turn. If the run had already answered, the assistant message that answered is completed and the run answers on in a new assistant message after the steer; a steer taken in before the run answered anything is placed before its still empty assistant message. `IFlexPromptResult.userMessage` stays the prompt and `assistantMessage` is the run's last assistant message. Undo and redo treat the run's messages as one turn.\n\n`steerPrompt()` resolves with `{ steerId, queueId, runId }` once the run accepted the steer and `prompt.steer.accepted` was emitted; `prompt.steer.applied` carries the `messageId` of the user message the steer became. Every accepted steer ends in exactly one of two ways: it is in the model context of later turns, or it is listed in `unappliedSteerIds`, in arrival order, on `IFlexPromptResult` and `run.finished`, and on the finished queue entry when that list is not empty. A steer is listed when the run did not take it in before it ended, because its last model step was already running or because it was stopped or failed, and also when the run itself does not stay in context. `keptInContext` on `run.finished` and on the finished queue entry says whether it does: it is `false` for a failed run and for a run stopped before any model output, and such a run lists every steer it accepted, including the ones it took in and reported with `prompt.steer.applied`. Send its prompt and its unapplied steers again to have them answered. The run stops taking steers atomically when its generation ends or `abort()`/`cancelPrompt()` stops it. A steer for a prompt without a running run, or whose run is ending, is refused with `FlexHarnessSteerRejectedError` reason `not-running`; the caller sends it as the next turn instead. Reusing a `steerId` within a run is refused with reason `duplicate`, an unknown `queueId` throws `FlexHarnessNotFoundError`, and subagent sessions are not steerable. A run holds at most `maxOutstandingPromptsPerSession` pending steers, and their bytes count against the session's outstanding prompt byte limit until the run takes them in or ends, so `startPrompt()` and `enqueuePrompt()` are refused with `FlexHarnessQueueFullError` while pending steers fill it. They are process-local like queue entries: a process restart ends the run and drops its pending steers, while steers it took in are durable parts of the turn.\n\n## Slash Commands\n\n`parseSlashCommand()` is the public strict pure parser. It accepts at most 768 KiB, returns `not-command` for input not starting with `/`, `malformed` for invalid slash syntax, and `parsed` with the exact input, lowercase command name, separator-stripped raw argument text, and OpenCode-compatible quoted tokenization. Command names match `[a-z][a-z0-9_-]{0,63}`. The public `isValidSlashCommandName(name)` and `isReservedSlashCommandName(name)` helpers let applications validate registration names against the same rules. Single and double quotes group tokens and are stripped; escapes are not interpreted.\n\nApplications register immutable custom commands at construction:\n\n```typescript\nconst harness = new FlexHarness({\n  // scopeResolver, modelResolver, and other options...\n  slashCommands: [\n    {\n      name: 'review-area',\n      description: 'Review one area of the workspace.',\n      template: 'Review $1 with these additional constraints: $ARGUMENTS',\n    },\n    {\n      name: 'refresh-index',\n      description: 'Refresh the application-owned workspace index.',\n      async handler({\n        scopeId,\n        scope,\n        storageKey,\n        sessionId,\n        sessionGenerationId,\n        sessionGenerationSequence,\n        rawArguments,\n        arguments,\n        signal,\n      }) {\n        return indexer.refresh({\n          scopeId,\n          scope,\n          storageKey,\n          sessionId,\n          sessionGenerationId,\n          sessionGenerationSequence,\n          rawArguments,\n          arguments,\n          signal,\n        });\n      },\n    },\n  ],\n});\n```\n\n`compact`, `init`, `undo`, and `redo` are reserved. `listSlashCommands()` verifies the scope and session and returns immutable data-only descriptors with `kind`, placeholder `hints`, current immediate availability, and `workspaceReversion`. `compact`, `undo`, `redo`, and custom handlers require an otherwise idle command session. Prompt templates and `init` use the normal bounded FIFO and may wait behind an active prompt. Their descriptors report availability from the same queue-admission conditions used by execution: lifecycle, slash ownership, pending reversion, root-session eligibility, outstanding count, and estimated prompt bytes. A dynamic capacity race may still produce `FlexHarnessQueueFullError` during admission. Only one slash-command execution may own a session at a time.\n\nAt most 128 custom commands may be registered. Every registration must be a plain object with exactly one of `template` or `handler`; names must match `[a-z][a-z0-9_-]{0,63}`, be unique, and not use a reserved name. Optional descriptions must be non-empty and at most 2048 UTF-8 bytes. Templates must be non-empty and at most 768 KiB, and the expanded prompt must also fit 768 KiB. Registrations are copied and frozen during construction.\n\n`/undo` and `/redo`, plus `undoSession()` and `redoSession()`, move a durable history cursor. The direct methods return `{ revertedRunId }` and `{ restoredRunId }`; the slash forms return `{ type: 'operation', name: 'undo' | 'redo' }`. Each committed cursor move emits one `session.history.changed` event with `direction`, `runId`, and the selected session identity. A committed branch emits the same event with `direction: 'branch'` and no `runId`, so controllers should refresh the complete selected session. Capture finalization, cleanup, and metadata-only changes do not emit this event.\n\nA completed root-session turn defines an operation-group boundary. Failed and cancelled turns after it belong to that group; leading failed or cancelled turns belong to the first completed group. No completed boundary means there is nothing to undo. Undo applies selected segments in reverse order and redo applies them in forward order. Without `turnReversionProvider`, only transcript and future model context move. Hidden messages disappear from `getMessages()`, message pages, exact message lookup, and future model context. Starting a new prompt, template, handler, or compaction from an undone position commits a branch: hidden messages and segments are removed durably and cannot be redone. Successful event archival also commits hidden redo history; a missing compaction or failed archive leaves it intact. Automatic budget compaction archives covered events after generation finalization and advances the same undo horizon; set `contextCompactionBytes: false` to disable that automatic policy.\n\nTwo horizons bound undo. Retention pruning removes the oldest complete visible units when `reversionLimits` is exceeded. Explicit event archival marks covered turns context-unavailable and prunes complete prefixes that can no longer be rebuilt; FlexHarness never crosses that archive horizon. Manual compaction without archival retains the original events and remains undoable. Schema-1 projection history and sessions migrated from `2.x` have no reversion segments, so historical turns are not retroactively undoable; newly written turns are tracked normally.\n\nSession metadata archival through `updateSession(..., { archived: true })` only sets `archivedAt`. It does not archive Agent events, retire captures, or remove undo history.\n\n`executeSlashCommand()` is the authoritative parser and lookup boundary. Its result distinguishes `not-command`, `malformed`, `unknown`, completed `operation`, bounded `handler-result`, and `prompt-admission`. A prompt admission contains the normal `{ queueId, runId, completion }`; await `admission.completion` for the model result. Unknown commands are never admitted as literal prompts. Known unavailable commands and invalid arguments throw typed FlexHarness errors. Options accept `modelHint`, `system`, `maxSteps`, and `signal`; commands do not accept attachments. `/compact` takes `modelHint` and `signal` only and refuses `system` and `maxSteps` with `FlexHarnessValidationError`. Aborting a template or `init` execution cancels its exact queued or started prompt without affecting another queue entry.\n\nTemplates replace every `$ARGUMENTS` with untouched raw argument text. `$1` through the highest referenced positional placeholder use tokenized arguments, with the highest position receiving all remaining tokens joined by spaces. Missing positions become empty. A template with no placeholders appends non-empty raw arguments after a blank line. `/init` uses the OpenCode 1.18.15 `AGENTS.md` initialization prompt with provider-neutral active-workspace wording.\n\nHandler context is frozen and contains only the resolved scope identity, session identity, required canonical `sessionGenerationId` and `sessionGenerationSequence`, raw and tokenized arguments, and an `AbortSignal`. Handler results are converted with the configured `toolOutputLimits`; `void` becomes JSON `null`. Handler failures use `externalErrorProjector` with source `slashCommand`. Same-session command overlap is rejected, including reentry from a handler. Scope retirement and disposal abort and await active handlers; prompt-admission commands transfer immediately to the normal prompt lifecycle.\n\n### Workspace Reversion Provider\n\n`reversionPolicy` defaults to `transcript-optional`, preserving the V1 behavior described above. Set it to `workspace-required` when transcript and workspace traversal must move together. This policy requires an `IFlexTurnReversionProviderV2` at construction.\n\nApplications using the original protocol can continue to provide all six unchanged `IFlexTurnReversionProvider` operations:\n\n```typescript\nimport type { IFlexTurnReversionProvider } from '@modelprofile.com/flexharness';\n\nconst turnReversionProvider: IFlexTurnReversionProvider<IProjectScope> = {\n  prepare: (context) => workspaceSnapshots.prepare(context),\n  inspectCapture: (context) => workspaceSnapshots.inspectCapture(context),\n  finalize: (context) => workspaceSnapshots.finalize(context),\n  inspectApply: (context) => workspaceSnapshots.inspectApply(context),\n  apply: (context) => workspaceSnapshots.apply(context),\n  release: (context) => workspaceSnapshots.release(context),\n};\n```\n\nProtocol 2 adds the `protocolVersion` discriminant and a tagged finalized outcome. The prepare, apply, apply-inspection, and release contexts remain the V1 shapes:\n\n```typescript\nimport type {\n  IFlexTurnReversionProviderV2,\n} from '@modelprofile.com/flexharness';\n\nconst turnReversionProvider: IFlexTurnReversionProviderV2<IProjectScope> = {\n  protocolVersion: 2,\n  prepare: (context) => workspaceHistory.prepare(context),\n  inspectCapture: (context) => workspaceHistory.inspectCapture(context),\n  async finalize(context) {\n    const capture = await workspaceHistory.finalize(context);\n    if (capture.changedPaths.length === 0) {\n      return {\n        disposition: 'no-change',\n        reference: capture.cleanupReference,\n      };\n    }\n    if (!capture.revertible) {\n      return {\n        disposition: 'nonrevertible',\n        reference: capture.cleanupReference,\n        reasonCode: 'git.unmerged',\n        affectedWorkspaces: [{ id: capture.workspaceId, label: capture.workspaceLabel }],\n      };\n    }\n    return {\n      disposition: 'revertible',\n      reference: capture.reference,\n      affectedWorkspaces: [{ id: capture.workspaceId, label: capture.workspaceLabel }],\n    };\n  },\n  inspectApply: (context) => workspaceHistory.inspectApply(context),\n  apply: (context) => workspaceHistory.apply(context),\n  release: (context) => workspaceHistory.release(context),\n};\n\nconst harness = new FlexHarness<IProjectScope>({\n  // scopeResolver, modelResolver, stores, and other options...\n  turnReversionProvider,\n  reversionPolicy: 'workspace-required',\n});\n```\n\nV1 `finalize()` returns a JSON reference, and a finalized V1 `inspectCapture()` result is `{ status: 'finalized', reference }`. V2 `finalize()` returns `revertible`, `no-change`, or `nonrevertible`, and a finalized V2 inspection is `{ status: 'finalized', outcome }` with the same complete tagged outcome. Every V2 outcome carries a normalized cleanup reference. A revertible outcome also carries `affectedWorkspaces`. A no-change outcome omits that list or supplies an empty list. A nonrevertible outcome carries a stable `reasonCode` and may carry affected workspaces.\n\nAffected workspace descriptors contain only stable, non-whitespace `id` and display `label` strings. A result accepts at most 64 unique descriptors; IDs are limited to 512 UTF-8 bytes, labels to 2048 bytes, and reason codes to 128 bytes matching `[A-Za-z0-9][A-Za-z0-9._-]*`. References use the configured JSON normalization depth and byte limit with an absolute 256 KiB cap.\n\nControllers query safe history metadata with one method:\n\n```typescript\nconst info = await harness.getSessionReversionInfo(scopeId, sessionId);\nfor (const group of info.groups) {\n  console.log(\n    group.runId,\n    group.kind,\n    group.visibility,\n    group.affectedWorkspaces,\n    group.affectedWorkspacesTruncated,\n  );\n}\n```\n\nThe immutable result exposes `undoAvailable`, `redoAvailable`, and groups classified as `candidate`, `barrier`, or `no-change`. Group metadata contains at most 64 unique affected workspaces; `affectedWorkspacesTruncated` is `true` when additional unique descriptors were omitted. It never includes capture IDs or provider references.\n\n`workspaceSnapshots` is application-owned. Every context contains `scopeId`, `scope`, `storageKey`, `sessionId`, the required canonical `sessionGenerationId` and `sessionGenerationSequence`, `runId`, deterministic `captureId`, and an `AbortSignal`. Apply contexts additionally contain the normalized `reference`, per-segment `operationId`, and `direction`; release contexts contain the reference. Deleted-session recovery retains the same generation from the durable tombstone, so providers can reject callbacks from an older same-ID generation.\n\nThe protocol is durable and inspectable:\n\n1. FlexHarness persists a `preparing` capture intent before calling `prepare()`, before model or tool execution. The provider must establish exclusive capture ownership for that `storageKey` and retain it until `release()` succeeds.\n2. `inspectCapture()` returns `missing`, `prepared`, `finalized`, or `unknown`. A finalized V1 result includes `reference`; a finalized V2 result includes the complete tagged `outcome`. `missing` is safe only while the durable state is still `preparing`; a missing prepared or finalizing capture, an `unknown` result, or an inspection failure fences the namespace.\n3. `finalize()` closes the capture and returns its JSON-safe V1 reference or complete V2 outcome. FlexHarness may call it during normal finalization or recovery after `inspectCapture()` reports `prepared`. Failed and cancelled root turns are captured too. A root capture spans its admitted subagent effects, including asynchronous children joined before finalization, although child transcript records remain separate. A failed parent cancels its outstanding children before joining them.\n4. Before undo or redo, FlexHarness persists an apply write-ahead record. `inspectApply()` must report the exact durable outcome for the supplied `operationId`: `not-applied` means no effect occurred, `applied` means the complete effect occurred, and `unknown` means the provider cannot prove either result. FlexHarness calls `apply()` only for `not-applied`; after an apply error it inspects again, and an `unknown` result or inspection failure fences the namespace. Progress is persisted after each segment, and the transcript cursor moves only after the complete unit succeeds. Known zero-progress failures leave the cursor unchanged and can be retried; partial progress retains the write-ahead record and resumes after restart. Caller cancellation is honored until the first workspace segment makes progress; recovery then continues with fresh bounded maintenance signals until the unit and cursor commit. Each `operationId` is unique to one apply of one segment: a later undo or redo gets a new ID even when it moves the same turn between the same cursors, such as undoing a turn again after a redo. Retries of that apply, in-process or after a restart, reuse its persisted ID, so providers must treat `operationId` idempotently and may record applied IDs to answer `inspectApply()`.\n5. `release()` relinquishes the capture after no-change or nonrevertible V2 finalization, branch commitment, retention or archive pruning, session deletion, or other durable removal. It must be idempotent: an unacknowledged release remains persisted and is retried before FlexHarness discards the reference.\n\nUnder `workspace-required`, a group is a barrier when any segment is pending, nonrevertible, or legacy transcript-only history. It is a candidate when at least one segment is revertible and none is a barrier; otherwise it is no-change. Only candidates can be traversed. No-change groups after a candidate travel with that candidate until the next candidate or barrier. Leading no-change groups remain visible. A retained barrier blocks older groups, while later candidates remain undoable. A mixed revertible/nonrevertible group is a barrier.\n\nInspection, recovery, finalization, and release use fresh maintenance signals bounded by the top-level `reversionMaintenanceTimeoutMs` option. It must be a positive safe integer no greater than 30 minutes. When omitted, FlexHarness uses `agentSessionPolicy.generationLeaseCleanupTimeoutMs` as a compatibility fallback, then defaults to 30 seconds when neither option is supplied. The agent-session setting continues to govern ","readmeFilename":""}