{"_id":"penecho","_rev":"33-c3877c9964d1dd9b866a9bd4f5dbd26f","name":"penecho","dist-tags":{"latest":"1.2.0","next":"1.1.10"},"versions":{"0.2.0":{"name":"penecho","version":"0.2.0","keywords":["canvas","handwriting","ai","whiteboard","math"],"license":"AGPL-3.0-only","_id":"penecho@0.2.0","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"homepage":"https://github.com/erickong/penecho#readme","bugs":{"url":"https://github.com/erickong/penecho/issues"},"bin":{"penecho":"cli.js"},"dist":{"shasum":"76fe8a29df863e96f5b13d97ba476fdccbd31df0","tarball":"https://registry.npmjs.org/penecho/-/penecho-0.2.0.tgz","fileCount":23,"integrity":"sha512-qjHakXcZUvfGdrg5rvom1j2w2w7vfzW8LuwbmVOBWZXgk5DqfWy+kXxaOqkCCclLGS9/vgX45L2o8W3DYcJa+Q==","signatures":[{"sig":"MEUCIQCdT2/NAE6q0G/GekMsrdheHJ6+eEfq3TmBr71lLf3U6wIgGuAoncInZCb0878AK6nZOddN4jBosBavynYAzh3wxPk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":587269},"engines":{"node":">=18.17.0"},"gitHead":"990db43c95c6f8693a55c90b16f0610fd19c4000","scripts":{"test":"node --test","check":"node --check cli.js && node --check server.js && node --check codex-cli.js && node --check public/draw.js && node --check public/selection.js && node --check public/app.js && node --test","start":"node server.js"},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"repository":{"url":"git+https://github.com/erickong/penecho.git","type":"git"},"_npmVersion":"10.9.2","description":"Think with AI on a shared canvas for handwriting, equations, and diagrams","directories":{},"_nodeVersion":"22.15.1","dependencies":{"sharp":"^0.34.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/penecho_0.2.0_1784127946664_0.7963449389790274","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"penecho","version":"0.3.0","keywords":["canvas","handwriting","ai","whiteboard","math"],"license":"AGPL-3.0-only","_id":"penecho@0.3.0","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"homepage":"https://github.com/erickong/penecho#readme","bugs":{"url":"https://github.com/erickong/penecho/issues"},"bin":{"penecho":"cli.js"},"dist":{"shasum":"c2c596a238c7d6da6ca04507696f4db64ed19bbc","tarball":"https://registry.npmjs.org/penecho/-/penecho-0.3.0.tgz","fileCount":26,"integrity":"sha512-EAoSzFIqY/HDL5MlBHy7zXp+DbPTyND10ejIWLPcvPdkwHcKTzm9ojAZsfNiG3ZEhpryFbyzxC0vsujCRuVIRA==","signatures":[{"sig":"MEQCIANcKdWJZowgKhpgV3I1+lF1Wcu6Z042LnLtHw1EfIhuAiBa0jfkA5ubLZCGC4FL5Q7BHMfwvevh1z4qdmSroyNvgw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":609536},"engines":{"node":">=18.17.0"},"gitHead":"ae20b28db508ffaf5e4217c654929164074c9b53","scripts":{"test":"node --test","check":"node --check cli.js && node --check server.js && node --check codex-cli.js && node --check claude-cli.js && node --check public/draw.js && node --check public/selection.js && node --check public/app.js && node --test","start":"node server.js"},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"repository":{"url":"git+https://github.com/erickong/penecho.git","type":"git"},"_npmVersion":"10.9.2","description":"Think with AI on a shared canvas for handwriting, equations, and diagrams","directories":{},"_nodeVersion":"22.15.1","dependencies":{"sharp":"^0.34.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/penecho_0.3.0_1784275128285_0.3737547703795072","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"penecho","version":"0.4.0","keywords":["canvas","handwriting","ai","whiteboard","math"],"license":"AGPL-3.0-only","_id":"penecho@0.4.0","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"homepage":"https://github.com/erickong/penecho#readme","bugs":{"url":"https://github.com/erickong/penecho/issues"},"bin":{"penecho":"cli.js"},"dist":{"shasum":"964106bb0dfcbc1fe01ef274fbbeb46c4d9ccf6a","tarball":"https://registry.npmjs.org/penecho/-/penecho-0.4.0.tgz","fileCount":24,"integrity":"sha512-K0Qjpw//bnMoEaZ0xoBuf+6j4X3zE9v1svG3CBdRaanMzVuPQWs4tee30AzkHa7+iKk+ooSR01H2dvhDnzYhVA==","signatures":[{"sig":"MEYCIQCL6mMhx6wJTAtxlEfH4JVpXqEHclQx9uuZD9UG5UFvugIhAMyMYf2jxtzHWFjMwcQ2Tf7d3yfGG7smcLON2Z+9jkJC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":644066},"engines":{"node":">=18.17.0"},"gitHead":"0e783071df5ca9858e265deee4a863a1f67f195d","scripts":{"test":"node --test","check":"node --check cli.js && node --check server.js && node --check api-config.js && node --check configure-ui.js && node --check codex-cli.js && node --check claude-cli.js && node --check public/draw.js && node --check public/selection.js && node --check public/app.js && node --test","start":"node server.js"},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"repository":{"url":"git+https://github.com/erickong/penecho.git","type":"git"},"_npmVersion":"10.9.2","description":"Think with AI on a shared canvas for handwriting, equations, and diagrams","directories":{},"_nodeVersion":"22.15.1","dependencies":{"sharp":"^0.34.5","@inquirer/prompts":"7.10.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/penecho_0.4.0_1784325918013_0.3661293866906059","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"penecho","version":"0.4.1","keywords":["canvas","handwriting","ai","whiteboard","math"],"license":"AGPL-3.0-only","_id":"penecho@0.4.1","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"homepage":"https://github.com/erickong/penecho#readme","bugs":{"url":"https://github.com/erickong/penecho/issues"},"bin":{"penecho":"cli.js"},"dist":{"shasum":"93085752381e26e0fb66211c5c77b2ebcdeecd50","tarball":"https://registry.npmjs.org/penecho/-/penecho-0.4.1.tgz","fileCount":24,"integrity":"sha512-IjzlFc7jjBYQRKZgsxJOs+ntbilG04eFxyT/HWK5ifmp/1fDpcNDYIMOX8h9qC7TCuww9br8+F3fqVTqiOa2Gg==","signatures":[{"sig":"MEYCIQD723dDsA0VjwOH+HA8FEeZOh4PGiApTyyxDebMWMUqWAIhANZU3IbY9XjR7SrpBjCBFIaue4Xmcw7YxfLJmUjvmCJj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":650675},"engines":{"node":">=18.17.0"},"gitHead":"060e683d82b77c0a59a58471ace2a7527ea536dc","scripts":{"test":"node --test","check":"node --check cli.js && node --check server.js && node --check api-config.js && node --check configure-ui.js && node --check codex-cli.js && node --check claude-cli.js && node --check public/draw.js && node --check public/selection.js && node --check public/app.js && node --test","start":"node server.js"},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"repository":{"url":"git+https://github.com/erickong/penecho.git","type":"git"},"_npmVersion":"10.9.2","description":"Think with AI on a shared canvas for handwriting, equations, and diagrams","directories":{},"_nodeVersion":"22.15.1","dependencies":{"sharp":"^0.34.5","@inquirer/prompts":"7.10.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/penecho_0.4.1_1784351848785_0.10379799356651565","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"penecho","version":"0.4.2","keywords":["canvas","handwriting","ai","whiteboard","math"],"license":"AGPL-3.0-only","_id":"penecho@0.4.2","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"homepage":"https://github.com/erickong/penecho#readme","bugs":{"url":"https://github.com/erickong/penecho/issues"},"bin":{"penecho":"cli.js"},"dist":{"shasum":"a6f9c58fd84c59841608b48c5e779553ebdf3a08","tarball":"https://registry.npmjs.org/penecho/-/penecho-0.4.2.tgz","fileCount":24,"integrity":"sha512-aBuBkXg+0JLImXca2MCWJCHl2trwbdMMeXAUr94RG5pxtK6WdN9tSC0pYouN3dz9lmSkPYNeISVBeq/lmv0K5w==","signatures":[{"sig":"MEUCIQC1Om7GqBYKByQJmpt/0e49TZfLj3Wj53UMvK2KMOte6AIgOimPuL2djPAfVF73pKkMz++k6xhnfedFPPKWwhKjrcQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":669700},"engines":{"node":">=18.17.0"},"gitHead":"8369eec77708b24915c94c5f0517e5b8865c003e","scripts":{"test":"node --test","check":"node --check cli.js && node --check server.js && node --check api-config.js && node --check configure-ui.js && node --check codex-cli.js && node --check claude-cli.js && node --check public/draw.js && node --check public/selection.js && node --check public/app.js && node --test","start":"node server.js"},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"repository":{"url":"git+https://github.com/erickong/penecho.git","type":"git"},"_npmVersion":"10.9.2","description":"Think with AI on a shared canvas for handwriting, equations, and diagrams","directories":{},"_nodeVersion":"22.15.1","dependencies":{"sharp":"^0.34.5","@inquirer/prompts":"7.10.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/penecho_0.4.2_1784367854696_0.17043281779930353","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"penecho","version":"0.5.0","keywords":["canvas","handwriting","ai","whiteboard","math"],"license":"AGPL-3.0-only","_id":"penecho@0.5.0","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"homepage":"https://github.com/erickong/penecho#readme","bugs":{"url":"https://github.com/erickong/penecho/issues"},"bin":{"penecho":"cli.js"},"dist":{"shasum":"b2528cb18da4a441b1cf37b32c488062b67b7f48","tarball":"https://registry.npmjs.org/penecho/-/penecho-0.5.0.tgz","fileCount":25,"integrity":"sha512-gPKbYhOe55T3NyLPa/cUG16/3Pqg4/3dWEVmnyd28df2kuJC5Hzyp5Wwwo/hkfUY+P84TdnYbCsDkR2HtoT6zg==","signatures":[{"sig":"MEQCIAZBEB8JpNvvknB/7yk0Y45z1fzW6aiif8/3/LLVd4TzAiAyJjHVcT9xNoTvOZ/qWR/0Z8k2WcKoST+3vgrVClYJsA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":732042},"engines":{"node":">=18.17.0"},"gitHead":"dbb8a2b47d36a3bd05d7af48a28635201f6c5f14","scripts":{"test":"node --test","check":"node --check cli.js && node --check server.js && node --check api-config.js && node --check configure-ui.js && node --check codex-cli.js && node --check claude-cli.js && node --check public/draw.js && node --check public/selection.js && node --check public/mixed-text.js && node --check public/app.js && node --test","start":"node server.js"},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"repository":{"url":"git+https://github.com/erickong/penecho.git","type":"git"},"_npmVersion":"10.9.2","description":"Think with AI on a shared canvas for handwriting, equations, and diagrams","directories":{},"_nodeVersion":"22.15.1","dependencies":{"sharp":"^0.34.5","@inquirer/prompts":"7.10.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/penecho_0.5.0_1784451485506_0.4805138961592168","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"penecho","version":"0.5.1","keywords":["canvas","handwriting","ai","whiteboard","math"],"license":"AGPL-3.0-only","_id":"penecho@0.5.1","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"homepage":"https://github.com/erickong/penecho#readme","bugs":{"url":"https://github.com/erickong/penecho/issues"},"bin":{"penecho":"cli.js"},"dist":{"shasum":"02476401304850875c24d129d86077b6666432e9","tarball":"https://registry.npmjs.org/penecho/-/penecho-0.5.1.tgz","fileCount":28,"integrity":"sha512-r+ULvbeN5463gl8P3QP6Yalams0ft22UWa7QDcnbYeL7mCUkjl2NJbQd3xB4L5LnMXqkUm1NC2wfauImvo5ExA==","signatures":[{"sig":"MEUCICgaTNZvRfMuLhP40dDQd78RbQwIDV5m/IfnpxtE3y8KAiEAmBA1k7+1RtmFGBkAOzgffw9XQz90TjmrOXwEyAavlWw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":836341},"engines":{"node":">=18.17.0"},"gitHead":"258381bf7e6e6830a9f148e48f9f990add7da9f0","scripts":{"dev":"node server.js","test":"node --test","check":"node --check cli.js && node --check server.js && node --check typeset.js && node --check update.js && node --check api-config.js && node --check configure-ui.js && node --check codex-cli.js && node --check claude-cli.js && node --check public/draw.js && node --check public/selection.js && node --check public/tour.js && node --check public/mixed-text.js && node --check public/app.js && node --test","start":"node cli.js"},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"repository":{"url":"git+https://github.com/erickong/penecho.git","type":"git"},"_npmVersion":"10.9.2","description":"Think with AI on a shared canvas for handwriting, equations, and diagrams","directories":{},"_nodeVersion":"22.15.1","dependencies":{"sharp":"^0.34.5","@inquirer/prompts":"7.10.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/penecho_0.5.1_1784549439177_0.8106098684713072","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"penecho","version":"0.6.0","keywords":["canvas","handwriting","ai","whiteboard","math"],"license":"AGPL-3.0-only","_id":"penecho@0.6.0","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"homepage":"https://github.com/penecho/penecho#readme","bugs":{"url":"https://github.com/penecho/penecho/issues"},"bin":{"penecho":"cli.js"},"dist":{"shasum":"70d8678400414abb31ae6c3da56e6beb8ee537d5","tarball":"https://registry.npmjs.org/penecho/-/penecho-0.6.0.tgz","fileCount":29,"integrity":"sha512-70HUmTHsW4ClQkh2PYvKgxDLcKmGxvjBU+2Dvxp7zgRNFE2u7DyPO9RsTxJev8Et3BXjsdKJuaylw0r8xK8U5Q==","signatures":[{"sig":"MEYCIQClpE10oVnQ/KDH13T33GOV3FOFS3QiZZCW9fr35saX2gIhAKewLF8jc4WEkPJ0DG4esIFxzkWNTLfPdh4pFF/pRtNx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":921142},"engines":{"node":">=18.17.0"},"gitHead":"4f0badd63e96ece1c00d0f850f7571aa1fae9501","scripts":{"dev":"node server.js","test":"node --test","check":"node --check cli.js && node --check server.js && node --check typeset.js && node --check update.js && node --check api-config.js && node --check configure-ui.js && node --check codex-cli.js && node --check claude-cli.js && node --check public/draw.js && node --check public/selection.js && node --check public/tour.js && node --check public/mixed-text.js && node --check public/animation.js && node --check public/app.js && node --test","start":"node cli.js"},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"repository":{"url":"git+https://github.com/penecho/penecho.git","type":"git"},"_npmVersion":"10.8.2","description":"Think with AI on a shared canvas for handwriting, equations, and diagrams","directories":{},"_nodeVersion":"20.17.0","dependencies":{"sharp":"^0.34.5","@inquirer/prompts":"7.10.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/penecho_0.6.0_1784645262347_0.9329318956505048","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"penecho","version":"0.7.0","keywords":["canvas","handwriting","ai","whiteboard","math"],"license":"AGPL-3.0-only","_id":"penecho@0.7.0","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"homepage":"https://github.com/penecho/penecho#readme","bugs":{"url":"https://github.com/penecho/penecho/issues"},"bin":{"penecho":"cli.js"},"dist":{"shasum":"d9d40645e8bc1e111d57df6654082d578ee6c594","tarball":"https://registry.npmjs.org/penecho/-/penecho-0.7.0.tgz","fileCount":43,"integrity":"sha512-kb411+wlnTD+mJUlLFnlaprwn6gyCFVNhNY86pd+mkxPFzp0FSO6BHhcsA3TD5jPx6Bv8kpR5hcoTqpgZP8Lag==","signatures":[{"sig":"MEQCIG2VP8N94cjFu0u0PAsvUFGL/UQku0cr4tpFn2yxHPkGAiACiSpvd+8mLcEpE8IhKeXGX0BU5DeHz36c9l2f8MtRIA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1294530},"engines":{"node":">=18.17.0"},"gitHead":"067222311e09a1fa3dc26581efb8dbea8fd2d491","scripts":{"dev":"node server.js","test":"node --test","check":"node --check cli.js && node --check server.js && node --check typeset.js && node --check update.js && node --check api-config.js && node --check configure-ui.js && node --check codex-cli.js && node --check claude-cli.js && node --check public/draw.js && node --check public/selection.js && node --check public/tour.js && node --check public/mixed-text.js && node --check public/animation.js && node --check public/plugins.js && node --check public/widget-host.js && node --check public/vendor/penecho-dom-renderer.js && node --check public/app.js && node --test","start":"node cli.js"},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"repository":{"url":"git+https://github.com/penecho/penecho.git","type":"git"},"_npmVersion":"10.8.2","description":"Think with AI on a shared canvas for handwriting, equations, and diagrams","directories":{},"_nodeVersion":"20.17.0","dependencies":{"sharp":"^0.34.5","@inquirer/prompts":"7.10.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/penecho_0.7.0_1784748996764_0.6682065543603222","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"penecho","version":"0.7.1","keywords":["canvas","handwriting","ai","whiteboard","math"],"license":"AGPL-3.0-only","_id":"penecho@0.7.1","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"homepage":"https://github.com/penecho/penecho#readme","bugs":{"url":"https://github.com/penecho/penecho/issues"},"bin":{"penecho":"cli.js"},"dist":{"shasum":"86399988d1cefbf1d7c4a17fc50756aefd66800c","tarball":"https://registry.npmjs.org/penecho/-/penecho-0.7.1.tgz","fileCount":51,"integrity":"sha512-iy+wK5Ipu9yoAQU5eogRf/T8paJHVcG2fLtS6oOJ78mMGzQoLgFNHdpy7Lu3LK74pV0i+e9+5UBhDSqDBB796A==","signatures":[{"sig":"MEUCIQDGLaEbiWjSvOtopaxjGar6Ymeyuw9cBnDABW9jx7C42wIgGAbcQY/DpBP6jQmrNv9FVCMDSJT1FBoyH5uaO8/C2HI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1397794},"engines":{"node":">=18.17.0"},"gitHead":"f18883d26407e9a6b5ed176741051fde781a2e82","scripts":{"dev":"node server.js","test":"node --test","check":"node --check cli.js && node --check server.js && node --check typeset.js && node --check update.js && node --check api-config.js && node --check configure-ui.js && node --check codex-cli.js && node --check claude-cli.js && node --check public/draw.js && node --check public/selection.js && node --check public/tour.js && node --check public/mixed-text.js && node --check public/animation.js && node --check public/plugins.js && node --check public/widget-host.js && node --check public/vendor/penecho-dom-renderer.js && node --check public/app.js && node --test","start":"node cli.js"},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"repository":{"url":"git+https://github.com/penecho/penecho.git","type":"git"},"_npmVersion":"10.9.2","description":"Think with AI on a shared canvas for handwriting, equations, and diagrams","directories":{},"_nodeVersion":"22.15.1","dependencies":{"sharp":"^0.34.5","@inquirer/prompts":"7.10.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/penecho_0.7.1_1785003887857_0.14545491402448496","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"penecho","version":"0.7.2","keywords":["canvas","handwriting","ai","whiteboard","math"],"license":"AGPL-3.0-only","_id":"penecho@0.7.2","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"homepage":"https://github.com/penecho/penecho#readme","bugs":{"url":"https://github.com/penecho/penecho/issues"},"bin":{"penecho":"cli.js"},"dist":{"shasum":"ef85e628dc10694825998371b1b88fe02c3cfd82","tarball":"https://registry.npmjs.org/penecho/-/penecho-0.7.2.tgz","fileCount":68,"integrity":"sha512-hIMcBX/Hc9HUZtg+DGBrPsRANBSCJcPbcYNA8iZccSHI5klr57uxlACm2fjCp7vKK+sdIjLZpsV6HVeuc0DiLA==","signatures":[{"sig":"MEYCIQCAmdtZuAEcXRuXUxSIt0Db7hbKfSTWaBn6nhtuNCw9WwIhAPrAKmkxdSL2dKqgKCvyWtem9J7UtZngvSw3HgxFwRzX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1939561},"main":"desktop/main.js","engines":{"node":">=20.3.0"},"gitHead":"5a01eb245bd74f694e6ab2dbb8452661b871bf8f","scripts":{"dev":"node server.js","test":"node --test","check":"npm run check:client && node --check cli.js && node --check server.js && node --check scripts/build-client.js && node --check src/cli/main.js && node --check src/cli/configure-ui.js && node --check src/cli/update.js && node --check src/server/main.js && node --check src/server/api-config.js && node --check src/server/typeset.js && node --check src/providers/kimi-cli.js && node --check src/providers/kimi-acp.js && node --check src/providers/codex-cli.js && node --check src/providers/claude-cli.js && node --check tools/electron/run-forge.js && node --check tools/mobile/build-mobile.js && node --check desktop/main.js && node --check desktop/preload.js && node --check desktop/canvas-preload.js && node --check desktop/cli-installer.js && node --check desktop/update-manager.js && node --check desktop/secret-store.js && node --check desktop/settings-contract.js && node --check desktop/settings/settings.js && node --check public/access.js && node --check public/draw.js && node --check public/selection.js && node --check public/tour.js && node --check public/mixed-text.js && node --check public/animation.js && node --check public/plugins.js && node --check public/widget-host.js && node --check public/vendor/penecho-dom-renderer.js && node --check public/app.js && node --test","icons":"node scripts/generate-icons.js","start":"node cli.js","desktop":"node tools/electron/run-forge.js start","prepack":"npm run build:client","mobile:apk":"node tools/mobile/build-mobile.js android","mobile:ipa":"node tools/mobile/build-mobile.js ios","predesktop":"npm run icons","mobile:deps":"npm ci --prefix tools/mobile","build:client":"node scripts/build-client.js","check:client":"node scripts/build-client.js --check","desktop:deps":"npm ci --prefix tools/electron","desktop:make":"npm run icons && node tools/electron/run-forge.js make","desktop:collect":"node scripts/collect-artifacts.js","desktop:package":"npm run icons && node tools/electron/run-forge.js package","desktop:make:mac":"npm run icons && node tools/electron/run-forge.js make --platform=darwin","desktop:make:windows":"npm run icons && node tools/electron/run-forge.js make --platform=win32"},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"repository":{"url":"git+https://github.com/penecho/penecho.git","type":"git"},"_npmVersion":"10.8.2","description":"Think with AI on a shared canvas for handwriting, equations, and diagrams","directories":{},"productName":"PenEcho","_nodeVersion":"20.17.0","dependencies":{"sharp":"^0.34.5","@inquirer/prompts":"7.10.1"},"_hasShrinkwrap":false,"devDependencies":{"png2icons":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/penecho_0.7.2_1785145933997_0.5864518964139849","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"penecho","version":"0.8.0","keywords":["canvas","handwriting","ai","whiteboard","math"],"license":"AGPL-3.0-only","_id":"penecho@0.8.0","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"homepage":"https://github.com/penecho/penecho#readme","bugs":{"url":"https://github.com/penecho/penecho/issues"},"bin":{"penecho":"cli.js"},"dist":{"shasum":"8f860e43a40f4a496ff62021e315bca53050964e","tarball":"https://registry.npmjs.org/penecho/-/penecho-0.8.0.tgz","fileCount":63,"integrity":"sha512-sS11SN8AgSBPngtvl4yYYKeoMXTM2SsavRkjbGRbt0B/oaAyMXnVG5l8gvm/Qg5iAg299TihFrVpgN8tEg8fUQ==","signatures":[{"sig":"MEUCIHMR/ZE82+arm831IM3+cnvc67ZwQNZaCbz44yUlTVuAAiEA3cFbUsm91SejKjFJG1z5MJPrTRZ3phPRz1yx/rh4+Rs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2173544},"main":"desktop/main.js","engines":{"node":">=20.3.0"},"gitHead":"22515c303cca9145aaba10541c47457276f111b0","scripts":{"dev":"node server.js","test":"node --test","check":"npm run check:client && node --check cli.js && node --check server.js && node --check scripts/build-client.js && node --check src/cli/main.js && node --check src/cli/configure-ui.js && node --check src/cli/update.js && node --check src/server/main.js && node --check src/server/api-config.js && node --check src/server/typeset.js && node --check src/providers/kimi-cli.js && node --check src/providers/kimi-acp.js && node --check src/providers/codex-cli.js && node --check src/providers/claude-cli.js && node --check tools/electron/run-forge.js && node --check tools/mobile/build-mobile.js && node --check desktop/main.js && node --check desktop/preload.js && node --check desktop/canvas-preload.js && node --check desktop/cli-installer.js && node --check desktop/update-manager.js && node --check desktop/secret-store.js && node --check desktop/settings-contract.js && node --check desktop/settings/settings.js && node --check public/access.js && node --check public/draw.js && node --check public/selection.js && node --check public/tour.js && node --check public/mixed-text.js && node --check public/animation.js && node --check public/plugins.js && node --check public/summon.js && node --check public/widget-host.js && node --check public/vendor/penecho-dom-renderer.js && node --check public/app.js && node --test","icons":"node scripts/generate-icons.js","start":"node cli.js","desktop":"node tools/electron/run-forge.js start","prepack":"npm run build:client","mobile:apk":"node tools/mobile/build-mobile.js android","mobile:ipa":"node tools/mobile/build-mobile.js ios","predesktop":"npm run icons","mobile:deps":"npm ci --prefix tools/mobile","build:client":"node scripts/build-client.js","check:client":"node scripts/build-client.js --check","desktop:deps":"npm ci --prefix tools/electron","desktop:make":"npm run icons && node tools/electron/run-forge.js make","desktop:collect":"node scripts/collect-artifacts.js","desktop:package":"npm run icons && node tools/electron/run-forge.js package","desktop:make:mac":"npm run icons && node tools/electron/run-forge.js make --platform=darwin","desktop:make:windows":"npm run icons && node tools/electron/run-forge.js make --platform=win32"},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"repository":{"url":"git+https://github.com/penecho/penecho.git","type":"git"},"_npmVersion":"10.8.2","description":"Think with AI on a shared canvas for handwriting, equations, and diagrams","directories":{},"productName":"PenEcho","_nodeVersion":"20.17.0","dependencies":{"sharp":"^0.34.5","@inquirer/prompts":"7.10.1"},"_hasShrinkwrap":false,"devDependencies":{"png2icons":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/penecho_0.8.0_1785395298108_0.23632215251493704","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"penecho","version":"0.8.1","keywords":["canvas","handwriting","ai","whiteboard","math"],"license":"AGPL-3.0-only","_id":"penecho@0.8.1","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"homepage":"https://github.com/penecho/penecho#readme","bugs":{"url":"https://github.com/penecho/penecho/issues"},"bin":{"penecho":"cli.js"},"dist":{"shasum":"f6bae5653f024ac5145d153094800cd87a5899a5","tarball":"https://registry.npmjs.org/penecho/-/penecho-0.8.1.tgz","fileCount":63,"integrity":"sha512-KT2NaR6SDUUQPkmynMoLLHUfQNyyUms8kRC2UjDOTQp2pavs3JAJUsgv9J/6cSmWH6Ds97tmVHsEgJ8m4+0h0A==","signatures":[{"sig":"MEQCIAgUWrVP1kldiOXVtwE/OTft2jCFnyTp9hBGJ+LxRYcYAiBWzcnCo4Yb+7vJ5NgZXbL2TEVptKV1nYOwgfJwoefR+w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2202288},"main":"desktop/main.js","engines":{"node":">=20.3.0"},"gitHead":"af5c8c54996a332078ea72972c0c9fc900eb52e7","scripts":{"dev":"node server.js","test":"node --test","check":"npm run check:client && node --check cli.js && node --check server.js && node --check scripts/build-client.js && node --check src/cli/main.js && node --check src/cli/configure-ui.js && node --check src/cli/update.js && node --check src/server/main.js && node --check src/server/api-config.js && node --check src/server/typeset.js && node --check src/providers/kimi-cli.js && node --check src/providers/kimi-acp.js && node --check src/providers/codex-cli.js && node --check src/providers/claude-cli.js && node --check tools/electron/run-forge.js && node --check tools/mobile/build-mobile.js && node --check desktop/main.js && node --check desktop/preload.js && node --check desktop/canvas-preload.js && node --check desktop/cli-installer.js && node --check desktop/update-manager.js && node --check desktop/secret-store.js && node --check desktop/settings-contract.js && node --check desktop/settings/settings.js && node --check public/access.js && node --check public/draw.js && node --check public/selection.js && node --check public/tour.js && node --check public/mixed-text.js && node --check public/animation.js && node --check public/plugins.js && node --check public/summon.js && node --check public/widget-host.js && node --check public/vendor/penecho-dom-renderer.js && node --check public/app.js && node --test","icons":"node scripts/generate-icons.js","start":"node cli.js","desktop":"node tools/electron/run-forge.js start","prepack":"npm run build:client","mobile:apk":"node tools/mobile/build-mobile.js android","mobile:ipa":"node tools/mobile/build-mobile.js ios","predesktop":"npm run icons","mobile:deps":"npm ci --prefix tools/mobile","build:client":"node scripts/build-client.js","check:client":"node scripts/build-client.js --check","desktop:deps":"npm ci --prefix tools/electron","desktop:make":"npm run icons && node tools/electron/run-forge.js make","desktop:collect":"node scripts/collect-artifacts.js","desktop:package":"npm run icons && node tools/electron/run-forge.js package","desktop:make:mac":"npm run icons && node tools/electron/run-forge.js make --platform=darwin","desktop:make:windows":"npm run icons && node tools/electron/run-forge.js make --platform=win32"},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"repository":{"url":"git+https://github.com/penecho/penecho.git","type":"git"},"_npmVersion":"10.8.2","description":"Think with AI on a shared canvas for handwriting, equations, and diagrams","directories":{},"productName":"PenEcho","_nodeVersion":"20.17.0","dependencies":{"sharp":"^0.34.5","@inquirer/prompts":"7.10.1"},"_hasShrinkwrap":false,"devDependencies":{"png2icons":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/penecho_0.8.1_1785573597514_0.19857550270136404","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"penecho","version":"0.9.0","keywords":["canvas","handwriting","ai","whiteboard","math"],"license":"AGPL-3.0-only","_id":"penecho@0.9.0","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"homepage":"https://github.com/penecho/penecho#readme","bugs":{"url":"https://github.com/penecho/penecho/issues"},"bin":{"penecho":"cli.js"},"dist":{"shasum":"b22214263241fbb0ca0cb66c4537634753e3ef0a","tarball":"https://registry.npmjs.org/penecho/-/penecho-0.9.0.tgz","fileCount":67,"integrity":"sha512-2Ghc3DSRB5sDV44DEzqEgF33Tul/cCDpmDJwO+eRf8ZMTE3q4brlUDr5vcB2+QFnuIF367Vq8htLViQV8jD4nA==","signatures":[{"sig":"MEYCIQD8ofmSXNmLVVCq0YGs50n+NEG/NNHWPAVts9RbPsXUMAIhAO16z9BQJQAVCmJSj7xt3BdbPSP9vcgyPlxYcXszFgL6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2696211},"main":"desktop/main.js","engines":{"node":">=20.3.0"},"gitHead":"545e996aa4bd87754c74ef9eedf071ee0a3f7055","scripts":{"dev":"node server.js","test":"node --test","check":"npm run check:client && node --check cli.js && node --check server.js && node --check scripts/build-client.js && node --check src/cli/main.js && node --check src/cli/configure-ui.js && node --check src/cli/update.js && node --check src/server/main.js && node --check src/server/activity-timeout.js && node --check src/server/api-config.js && node --check src/server/api-stream.js && node --check src/server/widget-patch.js && node --check src/server/typeset.js && node --check src/providers/reasoning-effort.js && node --check src/providers/kimi-cli.js && node --check src/providers/kimi-acp.js && node --check src/providers/codex-cli.js && node --check src/providers/claude-cli.js && node --check tools/electron/run-forge.js && node --check tools/mobile/build-mobile.js && node --check desktop/main.js && node --check desktop/preload.js && node --check desktop/canvas-preload.js && node --check desktop/cli-installer.js && node --check desktop/update-manager.js && node --check desktop/secret-store.js && node --check desktop/settings-contract.js && node --check desktop/settings/settings.js && node --check public/access.js && node --check public/draw.js && node --check public/selection.js && node --check public/tour.js && node --check public/mixed-text.js && node --check public/animation.js && node --check public/plugins.js && node --check public/summon.js && node --check public/widget-host.js && node --check public/vendor/penecho-dom-renderer.js && node --check public/app.js && node --test","icons":"node scripts/generate-icons.js","start":"node cli.js","desktop":"node tools/electron/run-forge.js start","prepack":"npm run build:client","mobile:apk":"node tools/mobile/build-mobile.js android","mobile:ipa":"node tools/mobile/build-mobile.js ios","predesktop":"npm run icons","mobile:deps":"npm ci --prefix tools/mobile","build:client":"node scripts/build-client.js","check:client":"node scripts/build-client.js --check","desktop:deps":"npm ci --prefix tools/electron","desktop:make":"npm run icons && node tools/electron/run-forge.js make","desktop:collect":"node scripts/collect-artifacts.js","desktop:package":"npm run icons && node tools/electron/run-forge.js package","desktop:make:mac":"npm run icons && node tools/electron/run-forge.js make --platform=darwin","desktop:make:windows":"npm run icons && node tools/electron/run-forge.js make --platform=win32"},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"repository":{"url":"git+https://github.com/penecho/penecho.git","type":"git"},"_npmVersion":"10.8.2","description":"Think with AI on a shared canvas for handwriting, equations, and diagrams","directories":{},"productName":"PenEcho","_nodeVersion":"20.17.0","dependencies":{"diff":"9.0.0","sharp":"^0.34.5","@inquirer/prompts":"7.10.1","eventsource-parser":"3.1.0"},"_hasShrinkwrap":false,"devDependencies":{"png2icons":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/penecho_0.9.0_1786220890783_0.31826227697864273","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"penecho","version":"1.0.0","keywords":["canvas","handwriting","ai","whiteboard","math"],"license":"AGPL-3.0-only","_id":"penecho@1.0.0","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"homepage":"https://github.com/penecho/penecho#readme","bugs":{"url":"https://github.com/penecho/penecho/issues"},"bin":{"penecho":"cli.js"},"dist":{"shasum":"a7f1e85148cf2598e2cee7f5ef44483f6ac42813","tarball":"https://registry.npmjs.org/penecho/-/penecho-1.0.0.tgz","fileCount":71,"integrity":"sha512-PCxmo0mQfk1/q9wG1JSX2Mn/2y3ugHAiImsTMq8Y9RqWZK68JyqK1rH/hZUXtf70YrEkCG1GKg/mxeym1vYN2g==","signatures":[{"sig":"MEUCIQCT5AM+zJL/lYGZOYEmG3+Wf0sIX3Fej/uM3ak23qHtCwIgMDqQ9sIOXE8CQ4irCPdphqOgfRmLzRnyzsYqR9IMpTk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3056834},"main":"desktop/main.js","engines":{"node":">=20.3.0"},"gitHead":"d0962bb81b6b17d8f8bb22d316f3f6ae2d6e06b4","scripts":{"dev":"node server.js","test":"node --test","check":"npm run check:client && node --check cli.js && node --check server.js && node --check scripts/build-client.js && node --check src/cli/main.js && node --check src/cli/configure-ui.js && node --check src/cli/update.js && node --check src/server/main.js && node --check src/server/cloud-connector.js && node --check src/server/activity-timeout.js && node --check src/server/api-config.js && node --check src/server/api-stream.js && node --check src/server/widget-patch.js && node --check src/server/typeset.js && node --check src/providers/reasoning-effort.js && node --check src/providers/kimi-cli.js && node --check src/providers/kimi-acp.js && node --check src/providers/codex-cli.js && node --check src/providers/claude-cli.js && node --check tools/electron/run-forge.js && node --check tools/mobile/build-mobile.js && node --check desktop/main.js && node --check desktop/preload.js && node --check desktop/canvas-preload.js && node --check desktop/cli-installer.js && node --check desktop/update-manager.js && node --check desktop/secret-store.js && node --check desktop/settings-contract.js && node --check desktop/settings/settings.js && node --check public/access.js && node --check public/cloud-connect.js && node --check public/draw.js && node --check public/selection.js && node --check public/tour.js && node --check public/mixed-text.js && node --check public/animation.js && node --check public/plugins.js && node --check public/summon.js && node --check public/widget-host.js && node --check public/vendor/penecho-dom-renderer.js && node --check public/app.js && node --test","icons":"node scripts/generate-icons.js","start":"node cli.js","desktop":"node tools/electron/run-forge.js start","prepack":"npm run build:client","mobile:apk":"node tools/mobile/build-mobile.js android","mobile:ipa":"node tools/mobile/build-mobile.js ios","predesktop":"npm run icons","mobile:deps":"npm ci --prefix tools/mobile","build:client":"node scripts/build-client.js","check:client":"node scripts/build-client.js --check","desktop:deps":"npm ci --prefix tools/electron","desktop:make":"npm run icons && node tools/electron/run-forge.js make","desktop:collect":"node scripts/collect-artifacts.js","desktop:package":"npm run icons && node tools/electron/run-forge.js package","desktop:make:mac":"npm run icons && node tools/electron/run-forge.js make --platform=darwin","desktop:make:windows":"npm run icons && node tools/electron/run-forge.js make --platform=win32"},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"repository":{"url":"git+https://github.com/penecho/penecho.git","type":"git"},"_npmVersion":"10.8.2","description":"Think with AI on a shared canvas for handwriting, equations, and diagrams","directories":{},"productName":"PenEcho","_nodeVersion":"20.17.0","dependencies":{"ws":"^8.21.3","diff":"9.0.0","sharp":"^0.34.5","@inquirer/prompts":"7.10.1","eventsource-parser":"3.1.0"},"_hasShrinkwrap":false,"devDependencies":{"png2icons":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/penecho_1.0.0_1787246075377_0.20595625465327339","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"penecho","version":"1.0.1","keywords":["canvas","handwriting","ai","whiteboard","math"],"license":"AGPL-3.0-only","_id":"penecho@1.0.1","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"homepage":"https://github.com/penecho/penecho#readme","bugs":{"url":"https://github.com/penecho/penecho/issues"},"bin":{"penecho":"cli.js"},"dist":{"shasum":"8ae9cc276ca63159df20c8efca49dbfc1b8efe19","tarball":"https://registry.npmjs.org/penecho/-/penecho-1.0.1.tgz","fileCount":71,"integrity":"sha512-hW82cLwzFqaI+CL/jLWkQLEZf3WloeIZyWE4bKLe7C3MG2XB7+PVR1qW948wpGaUf4qx0OC9Emt+BhDfwSDZIw==","signatures":[{"sig":"MEUCIDNMP0IYEjV9sQEghIoHwAPqKTPCcjZ4IbL1ziP6kGxhAiEAk3GI6eKIj8BlZPfSmbAKALAtpIbUVLKRBuXv72h1wsk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3058758},"main":"desktop/main.js","engines":{"node":">=20.3.0"},"gitHead":"def3ac857779e5781397bde168f709825682d31b","scripts":{"dev":"node server.js","test":"node --test","check":"npm run check:client && node --check cli.js && node --check server.js && node --check scripts/build-client.js && node --check src/cli/main.js && node --check src/cli/configure-ui.js && node --check src/cli/update.js && node --check src/server/main.js && node --check src/server/cloud-connector.js && node --check src/server/activity-timeout.js && node --check src/server/api-config.js && node --check src/server/api-stream.js && node --check src/server/widget-patch.js && node --check src/server/typeset.js && node --check src/providers/reasoning-effort.js && node --check src/providers/kimi-cli.js && node --check src/providers/kimi-acp.js && node --check src/providers/codex-cli.js && node --check src/providers/claude-cli.js && node --check tools/electron/run-forge.js && node --check tools/mobile/build-mobile.js && node --check desktop/main.js && node --check desktop/preload.js && node --check desktop/canvas-preload.js && node --check desktop/cli-installer.js && node --check desktop/update-manager.js && node --check desktop/secret-store.js && node --check desktop/settings-contract.js && node --check desktop/settings/settings.js && node --check public/access.js && node --check public/cloud-connect.js && node --check public/draw.js && node --check public/selection.js && node --check public/tour.js && node --check public/mixed-text.js && node --check public/animation.js && node --check public/plugins.js && node --check public/summon.js && node --check public/widget-host.js && node --check public/vendor/penecho-dom-renderer.js && node --check public/app.js && node --test","icons":"node scripts/generate-icons.js","start":"node cli.js","desktop":"node tools/electron/run-forge.js start","prepack":"npm run build:client","mobile:apk":"node tools/mobile/build-mobile.js android","mobile:ipa":"node tools/mobile/build-mobile.js ios","predesktop":"npm run icons","mobile:deps":"npm ci --prefix tools/mobile","build:client":"node scripts/build-client.js","check:client":"node scripts/build-client.js --check","desktop:deps":"npm ci --prefix tools/electron","desktop:make":"npm run icons && node tools/electron/run-forge.js make","desktop:collect":"node scripts/collect-artifacts.js","desktop:package":"npm run icons && node tools/electron/run-forge.js package","desktop:make:mac":"npm run icons && node tools/electron/run-forge.js make --platform=darwin","desktop:make:windows":"npm run icons && node tools/electron/run-forge.js make --platform=win32"},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"repository":{"url":"git+https://github.com/penecho/penecho.git","type":"git"},"_npmVersion":"10.8.2","description":"Think with AI on a shared canvas for handwriting, equations, and diagrams","directories":{},"productName":"PenEcho","_nodeVersion":"20.17.0","dependencies":{"ws":"^8.21.3","diff":"9.0.0","sharp":"^0.34.5","@inquirer/prompts":"7.10.1","eventsource-parser":"3.1.0"},"_hasShrinkwrap":false,"devDependencies":{"png2icons":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/penecho_1.0.1_1787300518846_0.14802495854294562","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"penecho","version":"1.1.1","keywords":["canvas","handwriting","ai","whiteboard","math","visualization","productivity","agent"],"author":{"name":"PenEcho contributors"},"license":"AGPL-3.0-only","_id":"penecho@1.1.1","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"homepage":"https://github.com/penecho/penecho#readme","bugs":{"url":"https://github.com/penecho/penecho/issues"},"bin":{"penecho":"cli.js"},"dist":{"shasum":"3d2a498439632db9729bd102ef9577149c3a6360","tarball":"https://registry.npmjs.org/penecho/-/penecho-1.1.1.tgz","fileCount":125,"integrity":"sha512-wn+uMcb4WXMPKswY4SsZjiLIW9GXv/p803PJFSs+YPE5agoaP06VYCftv4OKPTUWLj5cb56hOaG71ICRnO4e5w==","signatures":[{"sig":"MEYCIQCJhOjjqYB0IQx+XeGzASKQ4bmH/HknkpOLHM783ZMO4AIhAIEilEBl3x+HdVTvNrkwYV+6tMwdK/KEpu1ym70Q6s1X","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9922107},"main":"desktop/main.js","config":{"desktopVersion":"1.1.1"},"engines":{"node":">=22.19.0"},"gitHead":"11900e87281625aca99411fdea4522d1237b3c36","scripts":{"dev":"node server.js","test":"node --test","check":"npm run check:client && npm run check:visual-explainer-vendor && node --check cli.js && node --check server.js && node --check scripts/build-client.js && node --check scripts/build-visual-explainer-vendor.js && node --check src/cli/main.js && node --check src/cli/node-version.js && node --check src/cli/configure-ui.js && node --check src/cli/update.js && node --check src/server/main.js && node --check src/server/public-fetch.js && node --check src/server/cloud-connector.js && node --check src/server/activity-timeout.js && node --check src/server/api-config.js && node --check src/server/api-stream.js && node --check src/server/widget-patch.js && node --check src/server/typeset.js && node --check src/server/canvas-agent/http.js && node --check src/server/canvas-agent/request-trace.js && node --check src/server/canvas-agent/protocol.mjs && node --check src/server/canvas-agent/decision-admission.mjs && node --check src/server/canvas-agent/cli-adapter.mjs && node --check src/server/canvas-agent/codex-native-host.mjs && node --check src/server/canvas-agent/runtime.mjs && node --check src/providers/reasoning-effort.js && node --check src/providers/kimi-cli.js && node --check src/providers/kimi-acp.js && node --check src/providers/codex-cli.js && node --check src/providers/claude-cli.js && node --check tools/electron/run-forge.js && node --check tools/mobile/build-mobile.js && node --check desktop/main.js && node --check desktop/preload.js && node --check desktop/canvas-preload.js && node --check desktop/cli-installer.js && node --check desktop/update-manager.js && node --check desktop/settings-contract.js && node --check desktop/settings/settings.js && node --check public/access.js && node --check public/cloud-connect.js && node --check public/draw.js && node --check public/selection.js && node --check public/tour.js && node --check public/mixed-text.js && node --check public/animation.js && node --check public/plugins.js && node --check public/summon.js && node --check public/widget-host.js && node --check public/visual-explainer-runtime.js && node --check public/vendor/penecho-dom-renderer.js && node --check public/app.js && node --test","icons":"node scripts/generate-icons.js","start":"node cli.js","desktop":"node tools/electron/run-forge.js start","prepack":"npm run build:client && npm run build:visual-explainer-vendor","mobile:apk":"node tools/mobile/build-mobile.js android","mobile:ipa":"node tools/mobile/build-mobile.js ios","predesktop":"npm run icons","preinstall":"node src/cli/node-version.js","mobile:deps":"npm ci --prefix tools/mobile","build:client":"node scripts/build-client.js","check:client":"node scripts/build-client.js --check","desktop:deps":"npm ci --prefix tools/electron","desktop:make":"npm run icons && node tools/electron/run-forge.js make","desktop:collect":"node scripts/collect-artifacts.js","desktop:package":"npm run icons && node tools/electron/run-forge.js package","desktop:make:mac":"npm run icons && node tools/electron/run-forge.js make --platform=darwin","desktop:make:windows":"npm run icons && node tools/electron/run-forge.js make --platform=win32","build:visual-explainer-vendor":"node scripts/build-visual-explainer-vendor.js","check:visual-explainer-vendor":"node scripts/build-visual-explainer-vendor.js --check"},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"repository":{"url":"git+https://github.com/penecho/penecho.git","type":"git"},"_npmVersion":"10.8.2","description":"Turn research, files, and canvas context into editable visual work with AI","directories":{},"productName":"PenEcho","_nodeVersion":"20.17.0","dependencies":{"ws":"^8.21.3","diff":"9.0.0","jszip":"3.10.1","sharp":"0.35.3","mammoth":"1.12.1","manim-web":"0.3.24","pdf-parse":"2.4.5","@xmldom/xmldom":"0.8.15","@fast-csv/parse":"4.3.6","@vscode/ripgrep":"1.18.0","read-excel-file":"9.3.10","@antv/infographic":"^0.2.20","@inquirer/prompts":"7.10.1","eventsource-parser":"3.1.0","@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-fs":"0.1.1-rc.2","@deepseek-ai/dsh-llm":"0.1.1-rc.2","@deepseek-ai/dsh-agent":"0.1.1-rc.2","@deepseek-ai/dsh-brand":"0.1.1-rc.2","@deepseek-ai/dsh-scope":"0.1.1-rc.2","@deepseek-ai/dsh-tools":"0.1.1-rc.2","@deepseek-ai/dsh-sandbox":"0.1.1-rc.2","@deepseek-ai/dsh-session":"0.1.1-rc.2","@deepseek-ai/dsh-timeout":"0.1.1-rc.2","@deepseek-ai/dsh-tool-fs":"0.1.1-rc.2","@deepseek-ai/dsh-commands":"0.1.1-rc.2","@deepseek-ai/dsh-fs-local":"0.1.1-rc.2","@deepseek-ai/dsh-settings":"0.1.1-rc.2","@deepseek-ai/dsh-llm-pi-ai":"0.1.1-rc.2","@deepseek-ai/dsh-llm-retry":"0.1.1-rc.2","@deepseek-ai/dsh-agent-loop":"0.1.1-rc.2","@deepseek-ai/dsh-attachment":"0.1.1-rc.2","@deepseek-ai/dsh-compaction":"0.1.1-rc.2","@deepseek-ai/dsh-home-paths":"0.1.1-rc.2","@deepseek-ai/dsh-invariants":"0.1.1-rc.2","@deepseek-ai/dsh-credentials":"0.1.1-rc.2","@deepseek-ai/dsh-token-meter":"0.1.1-rc.2","@deepseek-ai/dsh-code-runtime":"0.1.1-rc.2","@deepseek-ai/dsh-authorization":"0.1.1-rc.2","@deepseek-ai/dsh-system-prompt":"0.1.1-rc.2","@deepseek-ai/dsh-user-approval":"0.1.1-rc.2","@deepseek-ai/dsh-sandbox-policy":"0.1.1-rc.2","@deepseek-ai/cordis-plugin-timer":"1.1.3","@deepseek-ai/dsh-typert-protocol":"0.1.1-rc.2","@deepseek-ai/dsh-attachment-local":"0.1.1-rc.2","@deepseek-ai/dsh-compaction-basic":"0.1.1-rc.2","@deepseek-ai/dsh-launch-environment":"0.1.1-rc.2","@deepseek-ai/dsh-session-projection":"0.1.1-rc.2","@deepseek-ai/dsh-session-persistence":"0.1.1-rc.2","@deepseek-ai/dsh-fs-observation-policy":"0.1.1-rc.2","@deepseek-ai/dsh-tool-call-timeout-policy":"0.1.1-rc.2","@deepseek-ai/dsh-compaction-tool-result-pruner":"0.1.1-rc.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"png2icons":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/penecho_1.1.1_1787847858224_0.20622577688803911","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"penecho","version":"1.1.2","keywords":["canvas","handwriting","ai","whiteboard","math","visualization","productivity","agent"],"author":{"name":"PenEcho contributors"},"license":"AGPL-3.0-only","_id":"penecho@1.1.2","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"homepage":"https://github.com/penecho/penecho#readme","bugs":{"url":"https://github.com/penecho/penecho/issues"},"bin":{"penecho":"cli.js"},"dist":{"shasum":"bfde5f0519db5bf91c558821ace9b600c6ab646c","tarball":"https://registry.npmjs.org/penecho/-/penecho-1.1.2.tgz","fileCount":125,"integrity":"sha512-z6iZDQX+V7EFRwWa0kTzar+nyhH9662JnlU+Tuzg1EBRJJHf00A1UkHSBfvlIqZGH7vCkzBY1HYp2de7gEXt9A==","signatures":[{"sig":"MEYCIQDV9tDlI97/0DPN8AQUXzav7KbbYWgABAkoxtk8/ZQ/4QIhAJajERgvqYeafnXzDlgF/c8jb35aZ50mmJmH0lHRH4bk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9925712},"main":"desktop/main.js","config":{"desktopVersion":"1.1.2"},"engines":{"node":">=22.19.0"},"gitHead":"11900e87281625aca99411fdea4522d1237b3c36","scripts":{"dev":"node server.js","test":"node --test","check":"npm run check:client && npm run check:visual-explainer-vendor && node --check cli.js && node --check server.js && node --check scripts/build-client.js && node --check scripts/build-visual-explainer-vendor.js && node --check src/cli/main.js && node --check src/cli/node-version.js && node --check src/cli/configure-ui.js && node --check src/cli/update.js && node --check src/server/main.js && node --check src/server/public-fetch.js && node --check src/server/cloud-connector.js && node --check src/server/activity-timeout.js && node --check src/server/api-config.js && node --check src/server/api-stream.js && node --check src/server/widget-patch.js && node --check src/server/typeset.js && node --check src/server/canvas-agent/http.js && node --check src/server/canvas-agent/request-trace.js && node --check src/server/canvas-agent/protocol.mjs && node --check src/server/canvas-agent/decision-admission.mjs && node --check src/server/canvas-agent/cli-adapter.mjs && node --check src/server/canvas-agent/codex-native-host.mjs && node --check src/server/canvas-agent/runtime.mjs && node --check src/providers/reasoning-effort.js && node --check src/providers/kimi-cli.js && node --check src/providers/kimi-acp.js && node --check src/providers/codex-cli.js && node --check src/providers/claude-cli.js && node --check tools/electron/run-forge.js && node --check tools/mobile/build-mobile.js && node --check desktop/main.js && node --check desktop/preload.js && node --check desktop/canvas-preload.js && node --check desktop/cli-installer.js && node --check desktop/update-manager.js && node --check desktop/settings-contract.js && node --check desktop/settings/settings.js && node --check public/access.js && node --check public/cloud-connect.js && node --check public/draw.js && node --check public/selection.js && node --check public/tour.js && node --check public/mixed-text.js && node --check public/animation.js && node --check public/plugins.js && node --check public/summon.js && node --check public/widget-host.js && node --check public/visual-explainer-runtime.js && node --check public/vendor/penecho-dom-renderer.js && node --check public/app.js && node --test","icons":"node scripts/generate-icons.js","start":"node cli.js","desktop":"node tools/electron/run-forge.js start","prepack":"npm run build:client && npm run build:visual-explainer-vendor","mobile:apk":"node tools/mobile/build-mobile.js android","mobile:ipa":"node tools/mobile/build-mobile.js ios","predesktop":"npm run icons","preinstall":"node src/cli/node-version.js","mobile:deps":"npm ci --prefix tools/mobile","build:client":"node scripts/build-client.js","check:client":"node scripts/build-client.js --check","desktop:deps":"npm ci --prefix tools/electron","desktop:make":"npm run icons && node tools/electron/run-forge.js make","desktop:collect":"node scripts/collect-artifacts.js","desktop:package":"npm run icons && node tools/electron/run-forge.js package","desktop:make:mac":"npm run icons && node tools/electron/run-forge.js make --platform=darwin","desktop:make:windows":"npm run icons && node tools/electron/run-forge.js make --platform=win32","build:visual-explainer-vendor":"node scripts/build-visual-explainer-vendor.js","check:visual-explainer-vendor":"node scripts/build-visual-explainer-vendor.js --check"},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"repository":{"url":"git+https://github.com/penecho/penecho.git","type":"git"},"_npmVersion":"10.8.2","description":"Turn research, files, and canvas context into editable visual work with AI","directories":{},"productName":"PenEcho","_nodeVersion":"20.17.0","dependencies":{"ws":"^8.21.3","diff":"9.0.0","jszip":"3.10.1","sharp":"0.35.3","mammoth":"1.12.1","manim-web":"0.3.24","pdf-parse":"2.4.5","@xmldom/xmldom":"0.8.15","@fast-csv/parse":"4.3.6","@vscode/ripgrep":"1.18.0","read-excel-file":"9.3.10","@antv/infographic":"^0.2.20","@inquirer/prompts":"7.10.1","eventsource-parser":"3.1.0","@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-fs":"0.1.1-rc.2","@deepseek-ai/dsh-llm":"0.1.1-rc.2","@deepseek-ai/dsh-agent":"0.1.1-rc.2","@deepseek-ai/dsh-brand":"0.1.1-rc.2","@deepseek-ai/dsh-scope":"0.1.1-rc.2","@deepseek-ai/dsh-tools":"0.1.1-rc.2","@deepseek-ai/dsh-sandbox":"0.1.1-rc.2","@deepseek-ai/dsh-session":"0.1.1-rc.2","@deepseek-ai/dsh-timeout":"0.1.1-rc.2","@deepseek-ai/dsh-tool-fs":"0.1.1-rc.2","@deepseek-ai/dsh-commands":"0.1.1-rc.2","@deepseek-ai/dsh-fs-local":"0.1.1-rc.2","@deepseek-ai/dsh-settings":"0.1.1-rc.2","@deepseek-ai/dsh-llm-pi-ai":"0.1.1-rc.2","@deepseek-ai/dsh-llm-retry":"0.1.1-rc.2","@deepseek-ai/dsh-agent-loop":"0.1.1-rc.2","@deepseek-ai/dsh-attachment":"0.1.1-rc.2","@deepseek-ai/dsh-compaction":"0.1.1-rc.2","@deepseek-ai/dsh-home-paths":"0.1.1-rc.2","@deepseek-ai/dsh-invariants":"0.1.1-rc.2","@deepseek-ai/dsh-credentials":"0.1.1-rc.2","@deepseek-ai/dsh-token-meter":"0.1.1-rc.2","@deepseek-ai/dsh-code-runtime":"0.1.1-rc.2","@deepseek-ai/dsh-authorization":"0.1.1-rc.2","@deepseek-ai/dsh-system-prompt":"0.1.1-rc.2","@deepseek-ai/dsh-user-approval":"0.1.1-rc.2","@deepseek-ai/dsh-sandbox-policy":"0.1.1-rc.2","@deepseek-ai/cordis-plugin-timer":"1.1.3","@deepseek-ai/dsh-typert-protocol":"0.1.1-rc.2","@deepseek-ai/dsh-attachment-local":"0.1.1-rc.2","@deepseek-ai/dsh-compaction-basic":"0.1.1-rc.2","@deepseek-ai/dsh-launch-environment":"0.1.1-rc.2","@deepseek-ai/dsh-session-projection":"0.1.1-rc.2","@deepseek-ai/dsh-session-persistence":"0.1.1-rc.2","@deepseek-ai/dsh-fs-observation-policy":"0.1.1-rc.2","@deepseek-ai/dsh-tool-call-timeout-policy":"0.1.1-rc.2","@deepseek-ai/dsh-compaction-tool-result-pruner":"0.1.1-rc.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"png2icons":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/penecho_1.1.2_1787849308741_0.28984343232183307","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"penecho","version":"1.1.3","keywords":["canvas","handwriting","ai","whiteboard","math","visualization","productivity","agent"],"author":{"name":"PenEcho contributors"},"license":"AGPL-3.0-only","_id":"penecho@1.1.3","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"homepage":"https://github.com/penecho/penecho#readme","bugs":{"url":"https://github.com/penecho/penecho/issues"},"bin":{"penecho":"cli.js"},"dist":{"shasum":"3caf2c7222b099dea26d83718612d7d2f5a641c6","tarball":"https://registry.npmjs.org/penecho/-/penecho-1.1.3.tgz","fileCount":125,"integrity":"sha512-hmq/+S5H9PVCOf0klWHxbjWio/IJB5DJKsAGd86bbXxSzWMmWvCssxRuydP05YpDk4vVFkNsCDpObK7wcNPggA==","signatures":[{"sig":"MEQCIFqSbDmamL5vl4TLOkU3DVcAA4l2m+pg4FS6LY2OTULxAiBjZf2d2G0mwJbnCQfAd2eazYFYN4Ne88yuM9VVDzqxbw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9926397},"main":"desktop/main.js","config":{"desktopVersion":"1.1.3"},"engines":{"node":">=22.19.0"},"gitHead":"11900e87281625aca99411fdea4522d1237b3c36","scripts":{"dev":"node server.js","test":"node --test","check":"npm run check:client && npm run check:visual-explainer-vendor && node --check cli.js && node --check server.js && node --check scripts/build-client.js && node --check scripts/build-visual-explainer-vendor.js && node --check src/cli/main.js && node --check src/cli/node-version.js && node --check src/cli/configure-ui.js && node --check src/cli/update.js && node --check src/server/main.js && node --check src/server/public-fetch.js && node --check src/server/cloud-connector.js && node --check src/server/activity-timeout.js && node --check src/server/api-config.js && node --check src/server/api-stream.js && node --check src/server/widget-patch.js && node --check src/server/typeset.js && node --check src/server/canvas-agent/http.js && node --check src/server/canvas-agent/request-trace.js && node --check src/server/canvas-agent/protocol.mjs && node --check src/server/canvas-agent/decision-admission.mjs && node --check src/server/canvas-agent/cli-adapter.mjs && node --check src/server/canvas-agent/codex-native-host.mjs && node --check src/server/canvas-agent/runtime.mjs && node --check src/providers/reasoning-effort.js && node --check src/providers/kimi-cli.js && node --check src/providers/kimi-acp.js && node --check src/providers/codex-cli.js && node --check src/providers/claude-cli.js && node --check tools/electron/run-forge.js && node --check tools/mobile/build-mobile.js && node --check desktop/main.js && node --check desktop/preload.js && node --check desktop/canvas-preload.js && node --check desktop/cli-installer.js && node --check desktop/update-manager.js && node --check desktop/settings-contract.js && node --check desktop/settings/settings.js && node --check public/access.js && node --check public/cloud-connect.js && node --check public/draw.js && node --check public/selection.js && node --check public/tour.js && node --check public/mixed-text.js && node --check public/animation.js && node --check public/plugins.js && node --check public/summon.js && node --check public/widget-host.js && node --check public/visual-explainer-runtime.js && node --check public/vendor/penecho-dom-renderer.js && node --check public/app.js && node --test","icons":"node scripts/generate-icons.js","start":"node cli.js","desktop":"node tools/electron/run-forge.js start","prepack":"npm run build:client && npm run build:visual-explainer-vendor","mobile:apk":"node tools/mobile/build-mobile.js android","mobile:ipa":"node tools/mobile/build-mobile.js ios","predesktop":"npm run icons","preinstall":"node src/cli/node-version.js","mobile:deps":"npm ci --prefix tools/mobile","build:client":"node scripts/build-client.js","check:client":"node scripts/build-client.js --check","desktop:deps":"npm ci --prefix tools/electron","desktop:make":"npm run icons && node tools/electron/run-forge.js make","desktop:collect":"node scripts/collect-artifacts.js","desktop:package":"npm run icons && node tools/electron/run-forge.js package","desktop:make:mac":"npm run icons && node tools/electron/run-forge.js make --platform=darwin","desktop:make:windows":"npm run icons && node tools/electron/run-forge.js make --platform=win32","build:visual-explainer-vendor":"node scripts/build-visual-explainer-vendor.js","check:visual-explainer-vendor":"node scripts/build-visual-explainer-vendor.js --check"},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"repository":{"url":"git+https://github.com/penecho/penecho.git","type":"git"},"_npmVersion":"10.8.2","description":"Turn research, files, and canvas context into editable visual work with AI","directories":{},"productName":"PenEcho","_nodeVersion":"20.17.0","dependencies":{"ws":"^8.21.3","diff":"9.0.0","jszip":"3.10.1","sharp":"0.35.3","mammoth":"1.12.1","manim-web":"0.3.24","pdf-parse":"2.4.5","@xmldom/xmldom":"0.8.15","@fast-csv/parse":"4.3.6","@vscode/ripgrep":"1.18.0","read-excel-file":"9.3.10","@antv/infographic":"^0.2.20","@inquirer/prompts":"7.10.1","eventsource-parser":"3.1.0","@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-fs":"0.1.1-rc.2","@deepseek-ai/dsh-llm":"0.1.1-rc.2","@deepseek-ai/dsh-agent":"0.1.1-rc.2","@deepseek-ai/dsh-brand":"0.1.1-rc.2","@deepseek-ai/dsh-scope":"0.1.1-rc.2","@deepseek-ai/dsh-tools":"0.1.1-rc.2","@deepseek-ai/dsh-sandbox":"0.1.1-rc.2","@deepseek-ai/dsh-session":"0.1.1-rc.2","@deepseek-ai/dsh-timeout":"0.1.1-rc.2","@deepseek-ai/dsh-tool-fs":"0.1.1-rc.2","@deepseek-ai/dsh-commands":"0.1.1-rc.2","@deepseek-ai/dsh-fs-local":"0.1.1-rc.2","@deepseek-ai/dsh-settings":"0.1.1-rc.2","@deepseek-ai/dsh-llm-pi-ai":"0.1.1-rc.2","@deepseek-ai/dsh-llm-retry":"0.1.1-rc.2","@deepseek-ai/dsh-agent-loop":"0.1.1-rc.2","@deepseek-ai/dsh-attachment":"0.1.1-rc.2","@deepseek-ai/dsh-compaction":"0.1.1-rc.2","@deepseek-ai/dsh-home-paths":"0.1.1-rc.2","@deepseek-ai/dsh-invariants":"0.1.1-rc.2","@deepseek-ai/dsh-credentials":"0.1.1-rc.2","@deepseek-ai/dsh-token-meter":"0.1.1-rc.2","@deepseek-ai/dsh-code-runtime":"0.1.1-rc.2","@deepseek-ai/dsh-authorization":"0.1.1-rc.2","@deepseek-ai/dsh-system-prompt":"0.1.1-rc.2","@deepseek-ai/dsh-user-approval":"0.1.1-rc.2","@deepseek-ai/dsh-sandbox-policy":"0.1.1-rc.2","@deepseek-ai/cordis-plugin-timer":"1.1.3","@deepseek-ai/dsh-typert-protocol":"0.1.1-rc.2","@deepseek-ai/dsh-attachment-local":"0.1.1-rc.2","@deepseek-ai/dsh-compaction-basic":"0.1.1-rc.2","@deepseek-ai/dsh-launch-environment":"0.1.1-rc.2","@deepseek-ai/dsh-session-projection":"0.1.1-rc.2","@deepseek-ai/dsh-session-persistence":"0.1.1-rc.2","@deepseek-ai/dsh-fs-observation-policy":"0.1.1-rc.2","@deepseek-ai/dsh-tool-call-timeout-policy":"0.1.1-rc.2","@deepseek-ai/dsh-compaction-tool-result-pruner":"0.1.1-rc.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"png2icons":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/penecho_1.1.3_1787850397949_0.9029494160182099","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"penecho","version":"1.1.4","keywords":["canvas","handwriting","ai","whiteboard","math","visualization","productivity","agent"],"author":{"name":"PenEcho contributors"},"license":"AGPL-3.0-only","_id":"penecho@1.1.4","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"homepage":"https://github.com/penecho/penecho#readme","bugs":{"url":"https://github.com/penecho/penecho/issues"},"bin":{"penecho":"cli.js"},"dist":{"shasum":"73d832ec505e24c573e74eff084ae505d37c70f6","tarball":"https://registry.npmjs.org/penecho/-/penecho-1.1.4.tgz","fileCount":125,"integrity":"sha512-nDF+ODMqcvZO3maF2eXsCFSP3b3uhvlKP3H7Uxro56fGD8dq+ZmBTZMQgiyD7bepKNWUomRbcGnW1EkBbcbsDA==","signatures":[{"sig":"MEQCIAbg2FBP7pE0p3CJtR5UbRwPLUTdpgN+eXLoPKT4VfJ1AiByr0+VtlMPJgQ7ILws2jdjfjar0WhhTsuj2+kO5DXpjg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9927620},"main":"desktop/main.js","config":{"desktopVersion":"1.1.4"},"engines":{"node":">=22.19.0"},"gitHead":"11900e87281625aca99411fdea4522d1237b3c36","scripts":{"dev":"node server.js","test":"node --test","check":"npm run check:client && npm run check:visual-explainer-vendor && node --check cli.js && node --check server.js && node --check scripts/build-client.js && node --check scripts/build-visual-explainer-vendor.js && node --check src/cli/main.js && node --check src/cli/node-version.js && node --check src/cli/configure-ui.js && node --check src/cli/update.js && node --check src/server/main.js && node --check src/server/public-fetch.js && node --check src/server/cloud-connector.js && node --check src/server/activity-timeout.js && node --check src/server/api-config.js && node --check src/server/api-stream.js && node --check src/server/widget-patch.js && node --check src/server/typeset.js && node --check src/server/canvas-agent/http.js && node --check src/server/canvas-agent/request-trace.js && node --check src/server/canvas-agent/protocol.mjs && node --check src/server/canvas-agent/decision-admission.mjs && node --check src/server/canvas-agent/cli-adapter.mjs && node --check src/server/canvas-agent/codex-native-host.mjs && node --check src/server/canvas-agent/runtime.mjs && node --check src/providers/reasoning-effort.js && node --check src/providers/kimi-cli.js && node --check src/providers/kimi-acp.js && node --check src/providers/codex-cli.js && node --check src/providers/claude-cli.js && node --check tools/electron/run-forge.js && node --check tools/mobile/build-mobile.js && node --check desktop/main.js && node --check desktop/preload.js && node --check desktop/canvas-preload.js && node --check desktop/cli-installer.js && node --check desktop/update-manager.js && node --check desktop/settings-contract.js && node --check desktop/settings/settings.js && node --check public/access.js && node --check public/cloud-connect.js && node --check public/draw.js && node --check public/selection.js && node --check public/tour.js && node --check public/mixed-text.js && node --check public/animation.js && node --check public/plugins.js && node --check public/summon.js && node --check public/widget-host.js && node --check public/visual-explainer-runtime.js && node --check public/vendor/penecho-dom-renderer.js && node --check public/app.js && node --test","icons":"node scripts/generate-icons.js","start":"node cli.js","desktop":"node tools/electron/run-forge.js start","prepack":"npm run build:client && npm run build:visual-explainer-vendor","mobile:apk":"node tools/mobile/build-mobile.js android","mobile:ipa":"node tools/mobile/build-mobile.js ios","predesktop":"npm run icons","preinstall":"node src/cli/node-version.js","mobile:deps":"npm ci --prefix tools/mobile","build:client":"node scripts/build-client.js","check:client":"node scripts/build-client.js --check","desktop:deps":"npm ci --prefix tools/electron","desktop:make":"npm run icons && node tools/electron/run-forge.js make","desktop:collect":"node scripts/collect-artifacts.js","desktop:package":"npm run icons && node tools/electron/run-forge.js package","desktop:make:mac":"npm run icons && node tools/electron/run-forge.js make --platform=darwin","desktop:make:windows":"npm run icons && node tools/electron/run-forge.js make --platform=win32","build:visual-explainer-vendor":"node scripts/build-visual-explainer-vendor.js","check:visual-explainer-vendor":"node scripts/build-visual-explainer-vendor.js --check"},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"repository":{"url":"git+https://github.com/penecho/penecho.git","type":"git"},"_npmVersion":"10.9.8","description":"Turn research, files, and canvas context into editable visual work with AI","directories":{},"productName":"PenEcho","_nodeVersion":"22.23.2","dependencies":{"ws":"^8.21.3","diff":"9.0.0","jszip":"3.10.1","sharp":"0.35.3","mammoth":"1.12.1","manim-web":"0.3.24","pdf-parse":"2.4.5","@xmldom/xmldom":"0.8.15","@fast-csv/parse":"4.3.6","@vscode/ripgrep":"1.18.0","read-excel-file":"9.3.10","@antv/infographic":"^0.2.20","@inquirer/prompts":"7.10.1","eventsource-parser":"3.1.0","@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-fs":"0.1.1-rc.2","@deepseek-ai/dsh-llm":"0.1.1-rc.2","@deepseek-ai/dsh-agent":"0.1.1-rc.2","@deepseek-ai/dsh-brand":"0.1.1-rc.2","@deepseek-ai/dsh-scope":"0.1.1-rc.2","@deepseek-ai/dsh-tools":"0.1.1-rc.2","@deepseek-ai/dsh-sandbox":"0.1.1-rc.2","@deepseek-ai/dsh-session":"0.1.1-rc.2","@deepseek-ai/dsh-timeout":"0.1.1-rc.2","@deepseek-ai/dsh-tool-fs":"0.1.1-rc.2","@deepseek-ai/dsh-commands":"0.1.1-rc.2","@deepseek-ai/dsh-fs-local":"0.1.1-rc.2","@deepseek-ai/dsh-settings":"0.1.1-rc.2","@deepseek-ai/dsh-llm-pi-ai":"0.1.1-rc.2","@deepseek-ai/dsh-llm-retry":"0.1.1-rc.2","@deepseek-ai/dsh-agent-loop":"0.1.1-rc.2","@deepseek-ai/dsh-attachment":"0.1.1-rc.2","@deepseek-ai/dsh-compaction":"0.1.1-rc.2","@deepseek-ai/dsh-home-paths":"0.1.1-rc.2","@deepseek-ai/dsh-invariants":"0.1.1-rc.2","@deepseek-ai/dsh-credentials":"0.1.1-rc.2","@deepseek-ai/dsh-token-meter":"0.1.1-rc.2","@deepseek-ai/dsh-code-runtime":"0.1.1-rc.2","@deepseek-ai/dsh-authorization":"0.1.1-rc.2","@deepseek-ai/dsh-system-prompt":"0.1.1-rc.2","@deepseek-ai/dsh-user-approval":"0.1.1-rc.2","@deepseek-ai/dsh-sandbox-policy":"0.1.1-rc.2","@deepseek-ai/cordis-plugin-timer":"1.1.3","@deepseek-ai/dsh-typert-protocol":"0.1.1-rc.2","@deepseek-ai/dsh-attachment-local":"0.1.1-rc.2","@deepseek-ai/dsh-compaction-basic":"0.1.1-rc.2","@deepseek-ai/dsh-launch-environment":"0.1.1-rc.2","@deepseek-ai/dsh-session-projection":"0.1.1-rc.2","@deepseek-ai/dsh-session-persistence":"0.1.1-rc.2","@deepseek-ai/dsh-fs-observation-policy":"0.1.1-rc.2","@deepseek-ai/dsh-tool-call-timeout-policy":"0.1.1-rc.2","@deepseek-ai/dsh-compaction-tool-result-pruner":"0.1.1-rc.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"png2icons":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/penecho_1.1.4_1787854325481_0.07260658698333633","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"penecho","version":"1.1.5","keywords":["canvas","handwriting","ai","whiteboard","math","visualization","productivity","agent"],"author":{"name":"PenEcho contributors"},"license":"AGPL-3.0-only","_id":"penecho@1.1.5","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"homepage":"https://github.com/penecho/penecho#readme","bugs":{"url":"https://github.com/penecho/penecho/issues"},"bin":{"penecho":"cli.js"},"dist":{"shasum":"f9cd60cca8f1f31ffb8ad2febc70659ff6535bcb","tarball":"https://registry.npmjs.org/penecho/-/penecho-1.1.5.tgz","fileCount":126,"integrity":"sha512-AaNVEImvaSMCbDJUz42+nuWX8r61YmdkbxZq0VODN2DCThvHOELdtZ8k/C1EOu/XBbDl8UBwZ8qxOugBtHd35g==","signatures":[{"sig":"MEYCIQDDGVvti22fLJ7V9R/xhxT9jNdiIod9f2WH7LT5yvpk3AIhAIfZl3GTlmhC1pKYAs/4vLJfYpq31yUxyxY83Yj8I4qN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9957486},"main":"desktop/main.js","config":{"desktopVersion":"1.1.5"},"engines":{"node":">=22.19.0"},"gitHead":"e88cef4a053e97a8fe4fb1934ca9478eb0475acf","scripts":{"dev":"node server.js","test":"node --test","check":"npm run check:client && npm run check:visual-explainer-vendor && node --check cli.js && node --check server.js && node --check scripts/build-client.js && node --check scripts/build-visual-explainer-vendor.js && node --check src/cli/main.js && node --check src/cli/node-version.js && node --check src/cli/configure-ui.js && node --check src/cli/update.js && node --check src/server/main.js && node --check src/server/public-fetch.js && node --check src/server/cloud-connector.js && node --check src/server/activity-timeout.js && node --check src/server/api-config.js && node --check src/server/api-stream.js && node --check src/server/widget-patch.js && node --check src/server/typeset.js && node --check src/server/canvas-agent/http.js && node --check src/server/canvas-agent/request-trace.js && node --check src/server/canvas-agent/protocol.mjs && node --check src/server/canvas-agent/decision-admission.mjs && node --check src/server/canvas-agent/cli-adapter.mjs && node --check src/server/canvas-agent/codex-native-host.mjs && node --check src/server/canvas-agent/runtime.mjs && node --check src/providers/reasoning-effort.js && node --check src/providers/kimi-cli.js && node --check src/providers/kimi-acp.js && node --check src/providers/codex-cli.js && node --check src/providers/claude-cli.js && node --check tools/electron/run-forge.js && node --check tools/mobile/build-mobile.js && node --check desktop/main.js && node --check desktop/preload.js && node --check desktop/canvas-preload.js && node --check desktop/cli-installer.js && node --check desktop/update-manager.js && node --check desktop/settings-contract.js && node --check desktop/settings/settings.js && node --check public/access.js && node --check public/cloud-connect.js && node --check public/draw.js && node --check public/selection.js && node --check public/tour.js && node --check public/mixed-text.js && node --check public/animation.js && node --check public/plugins.js && node --check public/summon.js && node --check public/widget-host.js && node --check public/visual-explainer-runtime.js && node --check public/vendor/penecho-dom-renderer.js && node --check public/app.js && node --test","icons":"node scripts/generate-icons.js","start":"node cli.js","desktop":"node tools/electron/run-forge.js start","prepack":"npm run build:client && npm run build:visual-explainer-vendor","mobile:apk":"node tools/mobile/build-mobile.js android","mobile:ipa":"node tools/mobile/build-mobile.js ios","predesktop":"npm run icons","preinstall":"node src/cli/node-version.js","mobile:deps":"npm ci --prefix tools/mobile","build:client":"node scripts/build-client.js","check:client":"node scripts/build-client.js --check","desktop:deps":"npm ci --prefix tools/electron","desktop:make":"npm run icons && node tools/electron/run-forge.js make","desktop:collect":"node scripts/collect-artifacts.js","desktop:package":"npm run icons && node tools/electron/run-forge.js package","desktop:make:mac":"npm run icons && node tools/electron/run-forge.js make --platform=darwin","desktop:make:windows":"npm run icons && node tools/electron/run-forge.js make --platform=win32","build:visual-explainer-vendor":"node scripts/build-visual-explainer-vendor.js","check:visual-explainer-vendor":"node scripts/build-visual-explainer-vendor.js --check"},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"repository":{"url":"git+https://github.com/penecho/penecho.git","type":"git"},"_npmVersion":"10.8.2","description":"Turn research, files, and canvas context into editable visual work with AI","directories":{},"productName":"PenEcho","_nodeVersion":"20.17.0","dependencies":{"ws":"^8.21.3","diff":"9.0.0","jszip":"3.10.1","sharp":"0.35.3","mammoth":"1.12.1","manim-web":"0.3.24","pdf-parse":"2.4.5","@xmldom/xmldom":"0.8.15","@fast-csv/parse":"4.3.6","@vscode/ripgrep":"1.18.0","read-excel-file":"9.3.10","@antv/infographic":"^0.2.20","@inquirer/prompts":"7.10.1","eventsource-parser":"3.1.0","@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-fs":"0.1.1-rc.2","@deepseek-ai/dsh-llm":"0.1.1-rc.2","@deepseek-ai/dsh-agent":"0.1.1-rc.2","@deepseek-ai/dsh-brand":"0.1.1-rc.2","@deepseek-ai/dsh-scope":"0.1.1-rc.2","@deepseek-ai/dsh-tools":"0.1.1-rc.2","@deepseek-ai/dsh-sandbox":"0.1.1-rc.2","@deepseek-ai/dsh-session":"0.1.1-rc.2","@deepseek-ai/dsh-timeout":"0.1.1-rc.2","@deepseek-ai/dsh-tool-fs":"0.1.1-rc.2","@deepseek-ai/dsh-commands":"0.1.1-rc.2","@deepseek-ai/dsh-fs-local":"0.1.1-rc.2","@deepseek-ai/dsh-settings":"0.1.1-rc.2","@deepseek-ai/dsh-llm-pi-ai":"0.1.1-rc.2","@deepseek-ai/dsh-llm-retry":"0.1.1-rc.2","@deepseek-ai/dsh-agent-loop":"0.1.1-rc.2","@deepseek-ai/dsh-attachment":"0.1.1-rc.2","@deepseek-ai/dsh-compaction":"0.1.1-rc.2","@deepseek-ai/dsh-home-paths":"0.1.1-rc.2","@deepseek-ai/dsh-invariants":"0.1.1-rc.2","@deepseek-ai/dsh-credentials":"0.1.1-rc.2","@deepseek-ai/dsh-token-meter":"0.1.1-rc.2","@deepseek-ai/dsh-code-runtime":"0.1.1-rc.2","@deepseek-ai/dsh-authorization":"0.1.1-rc.2","@deepseek-ai/dsh-system-prompt":"0.1.1-rc.2","@deepseek-ai/dsh-user-approval":"0.1.1-rc.2","@deepseek-ai/dsh-sandbox-policy":"0.1.1-rc.2","@deepseek-ai/cordis-plugin-timer":"1.1.3","@deepseek-ai/dsh-typert-protocol":"0.1.1-rc.2","@deepseek-ai/dsh-attachment-local":"0.1.1-rc.2","@deepseek-ai/dsh-compaction-basic":"0.1.1-rc.2","@deepseek-ai/dsh-launch-environment":"0.1.1-rc.2","@deepseek-ai/dsh-session-projection":"0.1.1-rc.2","@deepseek-ai/dsh-session-persistence":"0.1.1-rc.2","@deepseek-ai/dsh-fs-observation-policy":"0.1.1-rc.2","@deepseek-ai/dsh-tool-call-timeout-policy":"0.1.1-rc.2","@deepseek-ai/dsh-compaction-tool-result-pruner":"0.1.1-rc.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"png2icons":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/penecho_1.1.5_1787918600113_0.6374330047267509","host":"s3://npm-registry-packages-npm-production"}},"1.1.6":{"name":"penecho","version":"1.1.6","keywords":["canvas","handwriting","ai","whiteboard","math","visualization","productivity","agent"],"author":{"name":"PenEcho contributors"},"license":"AGPL-3.0-only","_id":"penecho@1.1.6","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"homepage":"https://github.com/penecho/penecho#readme","bugs":{"url":"https://github.com/penecho/penecho/issues"},"bin":{"penecho":"cli.js"},"dist":{"shasum":"6bb4badb16b4dc248ca184e5a449525ad5e00d73","tarball":"https://registry.npmjs.org/penecho/-/penecho-1.1.6.tgz","fileCount":126,"integrity":"sha512-WzJ3M8QD0E+UrHVOpffoWn98DhFXIzyavanQ0rZ9E1DY4zi1MDZQ45iqLy/NUhbncN0tq5GqVLwSFlfxiQLl+A==","signatures":[{"sig":"MEQCIENcNX48rEasv7mYi2xQPuMFfn4VZwR5Za/9pmMaIrmZAiBtNnpHVX9tXNjUa7jTGhOtbU/aqNBpXtv05WCZPRv9FA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9959754},"main":"desktop/main.js","config":{"desktopVersion":"1.1.6"},"engines":{"node":">=22.19.0"},"gitHead":"4f31cbbf3844eae6febd9a8ef7feef03b69eb6f1","scripts":{"dev":"node server.js","test":"node --test","check":"npm run check:client && npm run check:visual-explainer-vendor && node --check cli.js && node --check server.js && node --check scripts/build-client.js && node --check scripts/build-visual-explainer-vendor.js && node --check src/cli/main.js && node --check src/cli/node-version.js && node --check src/cli/configure-ui.js && node --check src/cli/update.js && node --check src/server/main.js && node --check src/server/public-fetch.js && node --check src/server/cloud-connector.js && node --check src/server/activity-timeout.js && node --check src/server/api-config.js && node --check src/server/api-stream.js && node --check src/server/widget-patch.js && node --check src/server/typeset.js && node --check src/server/canvas-agent/http.js && node --check src/server/canvas-agent/request-trace.js && node --check src/server/canvas-agent/protocol.mjs && node --check src/server/canvas-agent/decision-admission.mjs && node --check src/server/canvas-agent/cli-adapter.mjs && node --check src/server/canvas-agent/codex-native-host.mjs && node --check src/server/canvas-agent/runtime.mjs && node --check src/providers/reasoning-effort.js && node --check src/providers/kimi-cli.js && node --check src/providers/kimi-acp.js && node --check src/providers/codex-cli.js && node --check src/providers/claude-cli.js && node --check tools/electron/run-forge.js && node --check tools/mobile/build-mobile.js && node --check desktop/main.js && node --check desktop/preload.js && node --check desktop/canvas-preload.js && node --check desktop/cli-installer.js && node --check desktop/update-manager.js && node --check desktop/settings-contract.js && node --check desktop/settings/settings.js && node --check public/access.js && node --check public/cloud-connect.js && node --check public/draw.js && node --check public/selection.js && node --check public/tour.js && node --check public/mixed-text.js && node --check public/animation.js && node --check public/plugins.js && node --check public/summon.js && node --check public/widget-host.js && node --check public/visual-explainer-runtime.js && node --check public/vendor/penecho-dom-renderer.js && node --check public/app.js && node --test","icons":"node scripts/generate-icons.js","start":"node cli.js","desktop":"node tools/electron/run-forge.js start","prepack":"npm run build:client && npm run build:visual-explainer-vendor","mobile:apk":"node tools/mobile/build-mobile.js android","mobile:ipa":"node tools/mobile/build-mobile.js ios","predesktop":"npm run icons","preinstall":"node src/cli/node-version.js","mobile:deps":"npm ci --prefix tools/mobile","build:client":"node scripts/build-client.js","check:client":"node scripts/build-client.js --check","desktop:deps":"npm ci --prefix tools/electron","desktop:make":"npm run icons && node tools/electron/run-forge.js make","desktop:collect":"node scripts/collect-artifacts.js","desktop:package":"npm run icons && node tools/electron/run-forge.js package","desktop:make:mac":"npm run icons && node tools/electron/run-forge.js make --platform=darwin","desktop:make:windows":"npm run icons && node tools/electron/run-forge.js make --platform=win32","build:visual-explainer-vendor":"node scripts/build-visual-explainer-vendor.js","check:visual-explainer-vendor":"node scripts/build-visual-explainer-vendor.js --check"},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"repository":{"url":"git+https://github.com/penecho/penecho.git","type":"git"},"_npmVersion":"10.8.2","description":"Turn research, files, and canvas context into editable visual work with AI","directories":{},"productName":"PenEcho","_nodeVersion":"20.17.0","dependencies":{"ws":"^8.21.3","diff":"9.0.0","jszip":"3.10.1","sharp":"0.35.3","mammoth":"1.12.1","manim-web":"0.3.24","pdf-parse":"2.4.5","@xmldom/xmldom":"0.8.15","@fast-csv/parse":"4.3.6","@vscode/ripgrep":"1.18.0","read-excel-file":"9.3.10","@antv/infographic":"^0.2.20","@inquirer/prompts":"7.10.1","eventsource-parser":"3.1.0","@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-fs":"0.1.1-rc.2","@deepseek-ai/dsh-llm":"0.1.1-rc.2","@deepseek-ai/dsh-agent":"0.1.1-rc.2","@deepseek-ai/dsh-brand":"0.1.1-rc.2","@deepseek-ai/dsh-scope":"0.1.1-rc.2","@deepseek-ai/dsh-tools":"0.1.1-rc.2","@deepseek-ai/dsh-sandbox":"0.1.1-rc.2","@deepseek-ai/dsh-session":"0.1.1-rc.2","@deepseek-ai/dsh-timeout":"0.1.1-rc.2","@deepseek-ai/dsh-tool-fs":"0.1.1-rc.2","@deepseek-ai/dsh-commands":"0.1.1-rc.2","@deepseek-ai/dsh-fs-local":"0.1.1-rc.2","@deepseek-ai/dsh-settings":"0.1.1-rc.2","@deepseek-ai/dsh-llm-pi-ai":"0.1.1-rc.2","@deepseek-ai/dsh-llm-retry":"0.1.1-rc.2","@deepseek-ai/dsh-agent-loop":"0.1.1-rc.2","@deepseek-ai/dsh-attachment":"0.1.1-rc.2","@deepseek-ai/dsh-compaction":"0.1.1-rc.2","@deepseek-ai/dsh-home-paths":"0.1.1-rc.2","@deepseek-ai/dsh-invariants":"0.1.1-rc.2","@deepseek-ai/dsh-credentials":"0.1.1-rc.2","@deepseek-ai/dsh-token-meter":"0.1.1-rc.2","@deepseek-ai/dsh-code-runtime":"0.1.1-rc.2","@deepseek-ai/dsh-authorization":"0.1.1-rc.2","@deepseek-ai/dsh-system-prompt":"0.1.1-rc.2","@deepseek-ai/dsh-user-approval":"0.1.1-rc.2","@deepseek-ai/dsh-sandbox-policy":"0.1.1-rc.2","@deepseek-ai/cordis-plugin-timer":"1.1.3","@deepseek-ai/dsh-typert-protocol":"0.1.1-rc.2","@deepseek-ai/dsh-attachment-local":"0.1.1-rc.2","@deepseek-ai/dsh-compaction-basic":"0.1.1-rc.2","@deepseek-ai/dsh-launch-environment":"0.1.1-rc.2","@deepseek-ai/dsh-session-projection":"0.1.1-rc.2","@deepseek-ai/dsh-session-persistence":"0.1.1-rc.2","@deepseek-ai/dsh-fs-observation-policy":"0.1.1-rc.2","@deepseek-ai/dsh-tool-call-timeout-policy":"0.1.1-rc.2","@deepseek-ai/dsh-compaction-tool-result-pruner":"0.1.1-rc.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"png2icons":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/penecho_1.1.6_1787923317019_0.9303643044254071","host":"s3://npm-registry-packages-npm-production"}},"1.1.7":{"name":"penecho","version":"1.1.7","keywords":["canvas","handwriting","ai","whiteboard","math","visualization","productivity","agent"],"author":{"name":"PenEcho contributors"},"license":"AGPL-3.0-only","_id":"penecho@1.1.7","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"homepage":"https://github.com/penecho/penecho#readme","bugs":{"url":"https://github.com/penecho/penecho/issues"},"bin":{"penecho":"cli.js"},"dist":{"shasum":"ee7035f2491e55b6cc17ccf9c915e263da958ad6","tarball":"https://registry.npmjs.org/penecho/-/penecho-1.1.7.tgz","fileCount":126,"integrity":"sha512-Z+UHtCT5h4TOL8mO2Un46p8+OYqIz4mAlXNJpbONu80e9HDL8HVH6d7IOABbMtu3kTQX9tt/RhnRvFPTs9m8aw==","signatures":[{"sig":"MEUCIQD+xtBc+Hh6QQVJluVz+IWkt1G6ww6b2/HHl1iJWZpw5QIgJ3rdZtVLUxR8CqNinVg7F7GVq61tKE1pwnbx1wwLNxc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9961077},"main":"desktop/main.js","config":{"desktopVersion":"1.1.7"},"engines":{"node":">=22.19.0"},"gitHead":"4f31cbbf3844eae6febd9a8ef7feef03b69eb6f1","scripts":{"dev":"node server.js","test":"node --test","check":"npm run check:client && npm run check:visual-explainer-vendor && node --check cli.js && node --check server.js && node --check scripts/build-client.js && node --check scripts/build-visual-explainer-vendor.js && node --check src/cli/main.js && node --check src/cli/node-version.js && node --check src/cli/configure-ui.js && node --check src/cli/update.js && node --check src/server/main.js && node --check src/server/public-fetch.js && node --check src/server/cloud-connector.js && node --check src/server/activity-timeout.js && node --check src/server/api-config.js && node --check src/server/api-stream.js && node --check src/server/widget-patch.js && node --check src/server/typeset.js && node --check src/server/canvas-agent/http.js && node --check src/server/canvas-agent/request-trace.js && node --check src/server/canvas-agent/protocol.mjs && node --check src/server/canvas-agent/decision-admission.mjs && node --check src/server/canvas-agent/cli-adapter.mjs && node --check src/server/canvas-agent/codex-native-host.mjs && node --check src/server/canvas-agent/runtime.mjs && node --check src/providers/reasoning-effort.js && node --check src/providers/kimi-cli.js && node --check src/providers/kimi-acp.js && node --check src/providers/codex-cli.js && node --check src/providers/claude-cli.js && node --check tools/electron/run-forge.js && node --check tools/mobile/build-mobile.js && node --check desktop/main.js && node --check desktop/preload.js && node --check desktop/canvas-preload.js && node --check desktop/cli-installer.js && node --check desktop/update-manager.js && node --check desktop/settings-contract.js && node --check desktop/settings/settings.js && node --check public/access.js && node --check public/cloud-connect.js && node --check public/draw.js && node --check public/selection.js && node --check public/tour.js && node --check public/mixed-text.js && node --check public/animation.js && node --check public/plugins.js && node --check public/summon.js && node --check public/widget-host.js && node --check public/visual-explainer-runtime.js && node --check public/vendor/penecho-dom-renderer.js && node --check public/app.js && node --test","icons":"node scripts/generate-icons.js","start":"node cli.js","desktop":"node tools/electron/run-forge.js start","prepack":"npm run build:client && npm run build:visual-explainer-vendor","mobile:apk":"node tools/mobile/build-mobile.js android","mobile:ipa":"node tools/mobile/build-mobile.js ios","predesktop":"npm run icons","preinstall":"node src/cli/node-version.js","mobile:deps":"npm ci --prefix tools/mobile","build:client":"node scripts/build-client.js","check:client":"node scripts/build-client.js --check","desktop:deps":"npm ci --prefix tools/electron","desktop:make":"npm run icons && node tools/electron/run-forge.js make","desktop:collect":"node scripts/collect-artifacts.js","desktop:package":"npm run icons && node tools/electron/run-forge.js package","desktop:make:mac":"npm run icons && node tools/electron/run-forge.js make --platform=darwin","desktop:make:windows":"npm run icons && node tools/electron/run-forge.js make --platform=win32","build:visual-explainer-vendor":"node scripts/build-visual-explainer-vendor.js","check:visual-explainer-vendor":"node scripts/build-visual-explainer-vendor.js --check"},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"repository":{"url":"git+https://github.com/penecho/penecho.git","type":"git"},"_npmVersion":"10.8.2","description":"Turn research, files, and canvas context into editable visual work with AI","directories":{},"productName":"PenEcho","_nodeVersion":"20.17.0","dependencies":{"ws":"^8.21.3","diff":"9.0.0","jszip":"3.10.1","sharp":"0.35.3","mammoth":"1.12.1","manim-web":"0.3.24","pdf-parse":"2.4.5","@xmldom/xmldom":"0.8.15","@fast-csv/parse":"4.3.6","@vscode/ripgrep":"1.18.0","read-excel-file":"9.3.10","@antv/infographic":"^0.2.20","@inquirer/prompts":"7.10.1","eventsource-parser":"3.1.0","@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-fs":"0.1.1-rc.2","@deepseek-ai/dsh-llm":"0.1.1-rc.2","@deepseek-ai/dsh-agent":"0.1.1-rc.2","@deepseek-ai/dsh-brand":"0.1.1-rc.2","@deepseek-ai/dsh-scope":"0.1.1-rc.2","@deepseek-ai/dsh-tools":"0.1.1-rc.2","@deepseek-ai/dsh-sandbox":"0.1.1-rc.2","@deepseek-ai/dsh-session":"0.1.1-rc.2","@deepseek-ai/dsh-timeout":"0.1.1-rc.2","@deepseek-ai/dsh-tool-fs":"0.1.1-rc.2","@deepseek-ai/dsh-commands":"0.1.1-rc.2","@deepseek-ai/dsh-fs-local":"0.1.1-rc.2","@deepseek-ai/dsh-settings":"0.1.1-rc.2","@deepseek-ai/dsh-llm-pi-ai":"0.1.1-rc.2","@deepseek-ai/dsh-llm-retry":"0.1.1-rc.2","@deepseek-ai/dsh-agent-loop":"0.1.1-rc.2","@deepseek-ai/dsh-attachment":"0.1.1-rc.2","@deepseek-ai/dsh-compaction":"0.1.1-rc.2","@deepseek-ai/dsh-home-paths":"0.1.1-rc.2","@deepseek-ai/dsh-invariants":"0.1.1-rc.2","@deepseek-ai/dsh-credentials":"0.1.1-rc.2","@deepseek-ai/dsh-token-meter":"0.1.1-rc.2","@deepseek-ai/dsh-code-runtime":"0.1.1-rc.2","@deepseek-ai/dsh-authorization":"0.1.1-rc.2","@deepseek-ai/dsh-system-prompt":"0.1.1-rc.2","@deepseek-ai/dsh-user-approval":"0.1.1-rc.2","@deepseek-ai/dsh-sandbox-policy":"0.1.1-rc.2","@deepseek-ai/cordis-plugin-timer":"1.1.3","@deepseek-ai/dsh-typert-protocol":"0.1.1-rc.2","@deepseek-ai/dsh-attachment-local":"0.1.1-rc.2","@deepseek-ai/dsh-compaction-basic":"0.1.1-rc.2","@deepseek-ai/dsh-launch-environment":"0.1.1-rc.2","@deepseek-ai/dsh-session-projection":"0.1.1-rc.2","@deepseek-ai/dsh-session-persistence":"0.1.1-rc.2","@deepseek-ai/dsh-fs-observation-policy":"0.1.1-rc.2","@deepseek-ai/dsh-tool-call-timeout-policy":"0.1.1-rc.2","@deepseek-ai/dsh-compaction-tool-result-pruner":"0.1.1-rc.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"png2icons":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/penecho_1.1.7_1787940934339_0.43881919792696467","host":"s3://npm-registry-packages-npm-production"}},"1.1.10":{"name":"penecho","version":"1.1.10","keywords":["canvas","handwriting","ai","whiteboard","math","visualization","productivity","agent"],"author":{"name":"PenEcho contributors"},"license":"AGPL-3.0-only","_id":"penecho@1.1.10","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"homepage":"https://github.com/penecho/penecho#readme","bugs":{"url":"https://github.com/penecho/penecho/issues"},"bin":{"penecho":"cli.js"},"dist":{"shasum":"206664905ecc87247529209bd556e4f68f154dc8","tarball":"https://registry.npmjs.org/penecho/-/penecho-1.1.10.tgz","fileCount":131,"integrity":"sha512-oe7FD/RHp+YybWRsCnVPNu4E8l2j9uuPLU+/HLiDd6N+uYb97SSnDZcNgUiXW6hQ1eE+OMeaJYYAkNubACyl9g==","signatures":[{"sig":"MEQCID6VuR18QinZfHZpYNDnzxL3fyc2Ah0+8cenkqqztrkGAiAf1+DtVa1hW6O+VWTq88zt/8sRzEI7GqbDjzDMNuXOsA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10886878},"main":"desktop/main.js","config":{"desktopVersion":"1.2.0"},"engines":{"node":">=22.19.0"},"gitHead":"f7283b67bf2c0745b4e2a8320e9db38fc27694d8","scripts":{"dev":"node server.js","test":"node --test","check":"npm run check:client && npm run check:visual-explainer-vendor && node --check cli.js && node --check server.js && node --check scripts/build-client.js && node --check scripts/build-visual-explainer-vendor.js && node --check src/cli/main.js && node --check src/cli/node-version.js && node --check src/cli/configure-ui.js && node --check src/cli/update.js && node --check src/server/main.js && node --check src/server/model-evaluation.js && node --check src/server/public-fetch.js && node --check src/server/cloud-connector.js && node --check src/server/activity-timeout.js && node --check src/server/api-config.js && node --check src/server/api-stream.js && node --check src/server/widget-patch.js && node --check src/server/typeset.js && node --check src/server/canvas-agent/http.js && node --check src/server/canvas-agent/request-trace.js && node --check src/server/canvas-agent/protocol.mjs && node --check src/server/canvas-agent/decision-admission.mjs && node --check src/server/canvas-agent/cli-adapter.mjs && node --check src/server/canvas-agent/codex-native-host.mjs && node --check src/server/canvas-agent/runtime.mjs && node --check src/providers/reasoning-effort.js && node --check src/providers/kimi-cli.js && node --check src/providers/kimi-acp.js && node --check src/providers/codex-cli.js && node --check src/providers/claude-cli.js && node --check tools/electron/run-forge.js && node --check tools/mobile/build-mobile.js && node --check desktop/main.js && node --check desktop/preload.js && node --check desktop/canvas-preload.js && node --check desktop/cli-installer.js && node --check desktop/update-manager.js && node --check desktop/settings-contract.js && node --check desktop/settings/settings.js && node --check public/access.js && node --check public/cloud-connect.js && node --check public/draw.js && node --check public/selection.js && node --check public/tour.js && node --check public/mixed-text.js && node --check public/animation.js && node --check public/plugins.js && node --check public/summon.js && node --check public/page-scale.js && node --check public/widget-host.js && node --check public/visual-explainer-runtime.js && node --check public/vendor/penecho-dom-renderer.js && node --check public/app.js && node --test","icons":"node scripts/generate-icons.js","start":"node cli.js","desktop":"node tools/electron/run-forge.js start","prepack":"npm run build:client && npm run build:visual-explainer-vendor","mobile:apk":"node tools/mobile/build-mobile.js android","mobile:ipa":"node tools/mobile/build-mobile.js ios","predesktop":"npm run icons","preinstall":"node src/cli/node-version.js","mobile:deps":"npm ci --prefix tools/mobile","build:client":"node scripts/build-client.js","check:client":"node scripts/build-client.js --check","desktop:deps":"npm ci --prefix tools/electron","desktop:make":"npm run icons && node tools/electron/run-forge.js make","desktop:collect":"node scripts/collect-artifacts.js","desktop:package":"npm run icons && node tools/electron/run-forge.js package","desktop:make:mac":"npm run icons && node tools/electron/run-forge.js make --platform=darwin","desktop:make:windows":"npm run icons && node tools/electron/run-forge.js make --platform=win32","build:visual-explainer-vendor":"node scripts/build-visual-explainer-vendor.js","check:visual-explainer-vendor":"node scripts/build-visual-explainer-vendor.js --check"},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"repository":{"url":"git+https://github.com/penecho/penecho.git","type":"git"},"_npmVersion":"11.19.0","description":"Turn research, files, and canvas context into editable visual work with AI","directories":{},"productName":"PenEcho","_nodeVersion":"26.8.1","dependencies":{"ws":"^8.21.3","diff":"9.0.0","jszip":"3.10.1","sharp":"0.35.3","mammoth":"1.12.1","manim-web":"0.3.24","pdf-parse":"2.4.5","@xmldom/xmldom":"0.8.15","@fast-csv/parse":"4.3.6","@vscode/ripgrep":"1.18.0","read-excel-file":"9.3.10","@antv/infographic":"^0.2.20","@inquirer/prompts":"7.10.1","eventsource-parser":"3.1.0","@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-fs":"0.1.1-rc.2","@deepseek-ai/dsh-llm":"0.1.1-rc.2","@deepseek-ai/dsh-agent":"0.1.1-rc.2","@deepseek-ai/dsh-brand":"0.1.1-rc.2","@deepseek-ai/dsh-scope":"0.1.1-rc.2","@deepseek-ai/dsh-tools":"0.1.1-rc.2","@deepseek-ai/dsh-sandbox":"0.1.1-rc.2","@deepseek-ai/dsh-session":"0.1.1-rc.2","@deepseek-ai/dsh-timeout":"0.1.1-rc.2","@deepseek-ai/dsh-tool-fs":"0.1.1-rc.2","@deepseek-ai/dsh-commands":"0.1.1-rc.2","@deepseek-ai/dsh-fs-local":"0.1.1-rc.2","@deepseek-ai/dsh-settings":"0.1.1-rc.2","@deepseek-ai/dsh-llm-pi-ai":"0.1.1-rc.2","@deepseek-ai/dsh-llm-retry":"0.1.1-rc.2","@deepseek-ai/dsh-agent-loop":"0.1.1-rc.2","@deepseek-ai/dsh-attachment":"0.1.1-rc.2","@deepseek-ai/dsh-compaction":"0.1.1-rc.2","@deepseek-ai/dsh-home-paths":"0.1.1-rc.2","@deepseek-ai/dsh-invariants":"0.1.1-rc.2","@deepseek-ai/dsh-credentials":"0.1.1-rc.2","@deepseek-ai/dsh-token-meter":"0.1.1-rc.2","@deepseek-ai/dsh-code-runtime":"0.1.1-rc.2","@deepseek-ai/dsh-authorization":"0.1.1-rc.2","@deepseek-ai/dsh-system-prompt":"0.1.1-rc.2","@deepseek-ai/dsh-user-approval":"0.1.1-rc.2","@deepseek-ai/dsh-sandbox-policy":"0.1.1-rc.2","@deepseek-ai/cordis-plugin-timer":"1.1.3","@deepseek-ai/dsh-typert-protocol":"0.1.1-rc.2","@deepseek-ai/dsh-attachment-local":"0.1.1-rc.2","@deepseek-ai/dsh-compaction-basic":"0.1.1-rc.2","@deepseek-ai/dsh-launch-environment":"0.1.1-rc.2","@deepseek-ai/dsh-session-projection":"0.1.1-rc.2","@deepseek-ai/dsh-session-persistence":"0.1.1-rc.2","@deepseek-ai/dsh-fs-observation-policy":"0.1.1-rc.2","@deepseek-ai/dsh-tool-call-timeout-policy":"0.1.1-rc.2","@deepseek-ai/dsh-compaction-tool-result-pruner":"0.1.1-rc.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"png2icons":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/penecho_1.1.10_1788511198031_0.3484454753778028","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"penecho","version":"1.2.0","config":{"desktopVersion":"1.2.0"},"description":"Turn research, files, and canvas context into editable visual work with AI","author":{"name":"PenEcho contributors"},"productName":"PenEcho","main":"desktop/main.js","license":"AGPL-3.0-only","keywords":["canvas","handwriting","ai","whiteboard","math","visualization","productivity","agent"],"bin":{"penecho":"cli.js"},"repository":{"type":"git","url":"git+https://github.com/penecho/penecho.git"},"homepage":"https://github.com/penecho/penecho#readme","bugs":{"url":"https://github.com/penecho/penecho/issues"},"scripts":{"start":"node cli.js","dev":"node server.js","build:client":"node scripts/build-client.js","build:visual-explainer-vendor":"node scripts/build-visual-explainer-vendor.js","check:client":"node scripts/build-client.js --check","check:visual-explainer-vendor":"node scripts/build-visual-explainer-vendor.js --check","preinstall":"node src/cli/node-version.js","prepack":"npm run build:client && npm run build:visual-explainer-vendor","check":"npm run check:client && npm run check:visual-explainer-vendor && node --check cli.js && node --check server.js && node --check scripts/build-client.js && node --check scripts/build-visual-explainer-vendor.js && node --check src/cli/main.js && node --check src/cli/node-version.js && node --check src/cli/configure-ui.js && node --check src/cli/update.js && node --check src/server/main.js && node --check src/server/model-evaluation.js && node --check src/server/public-fetch.js && node --check src/server/cloud-connector.js && node --check src/server/activity-timeout.js && node --check src/server/api-config.js && node --check src/server/api-stream.js && node --check src/server/widget-patch.js && node --check src/server/typeset.js && node --check src/server/canvas-agent/http.js && node --check src/server/canvas-agent/request-trace.js && node --check src/server/canvas-agent/protocol.mjs && node --check src/server/canvas-agent/decision-admission.mjs && node --check src/server/canvas-agent/cli-adapter.mjs && node --check src/server/canvas-agent/codex-native-host.mjs && node --check src/server/canvas-agent/runtime.mjs && node --check src/providers/reasoning-effort.js && node --check src/providers/kimi-cli.js && node --check src/providers/kimi-acp.js && node --check src/providers/codex-cli.js && node --check src/providers/claude-cli.js && node --check tools/electron/run-forge.js && node --check tools/mobile/build-mobile.js && node --check desktop/main.js && node --check desktop/preload.js && node --check desktop/canvas-preload.js && node --check desktop/cli-installer.js && node --check desktop/update-manager.js && node --check desktop/settings-contract.js && node --check desktop/settings/settings.js && node --check public/access.js && node --check public/cloud-connect.js && node --check public/draw.js && node --check public/selection.js && node --check public/tour.js && node --check public/mixed-text.js && node --check public/animation.js && node --check public/plugins.js && node --check public/summon.js && node --check public/page-scale.js && node --check public/widget-host.js && node --check public/visual-explainer-runtime.js && node --check public/vendor/penecho-dom-renderer.js && node --check public/app.js && node --test","test":"node --test","icons":"node scripts/generate-icons.js","desktop":"node tools/electron/run-forge.js start","predesktop":"npm run icons","desktop:deps":"npm ci --prefix tools/electron","mobile:deps":"npm ci --prefix tools/mobile","mobile:apk":"node tools/mobile/build-mobile.js android","mobile:ipa":"node tools/mobile/build-mobile.js ios","desktop:package":"npm run icons && node tools/electron/run-forge.js package","desktop:make":"npm run icons && node tools/electron/run-forge.js make","desktop:make:mac":"npm run icons && node tools/electron/run-forge.js make --platform=darwin","desktop:make:windows":"npm run icons && node tools/electron/run-forge.js make --platform=win32","desktop:collect":"node scripts/collect-artifacts.js"},"engines":{"node":">=22.19.0"},"dependencies":{"@antv/infographic":"^0.2.20","@deepseek-ai/cordis":"4.0.1","@deepseek-ai/cordis-plugin-timer":"1.1.3","@deepseek-ai/dsh-agent":"0.1.1-rc.2","@deepseek-ai/dsh-agent-loop":"0.1.1-rc.2","@deepseek-ai/dsh-attachment":"0.1.1-rc.2","@deepseek-ai/dsh-attachment-local":"0.1.1-rc.2","@deepseek-ai/dsh-authorization":"0.1.1-rc.2","@deepseek-ai/dsh-brand":"0.1.1-rc.2","@deepseek-ai/dsh-code-runtime":"0.1.1-rc.2","@deepseek-ai/dsh-commands":"0.1.1-rc.2","@deepseek-ai/dsh-compaction":"0.1.1-rc.2","@deepseek-ai/dsh-compaction-basic":"0.1.1-rc.2","@deepseek-ai/dsh-compaction-tool-result-pruner":"0.1.1-rc.2","@deepseek-ai/dsh-credentials":"0.1.1-rc.2","@deepseek-ai/dsh-fs":"0.1.1-rc.2","@deepseek-ai/dsh-fs-local":"0.1.1-rc.2","@deepseek-ai/dsh-fs-observation-policy":"0.1.1-rc.2","@deepseek-ai/dsh-home-paths":"0.1.1-rc.2","@deepseek-ai/dsh-invariants":"0.1.1-rc.2","@deepseek-ai/dsh-launch-environment":"0.1.1-rc.2","@deepseek-ai/dsh-llm":"0.1.1-rc.2","@deepseek-ai/dsh-llm-pi-ai":"0.1.1-rc.2","@deepseek-ai/dsh-llm-retry":"0.1.1-rc.2","@deepseek-ai/dsh-sandbox":"0.1.1-rc.2","@deepseek-ai/dsh-sandbox-policy":"0.1.1-rc.2","@deepseek-ai/dsh-scope":"0.1.1-rc.2","@deepseek-ai/dsh-session":"0.1.1-rc.2","@deepseek-ai/dsh-session-persistence":"0.1.1-rc.2","@deepseek-ai/dsh-session-projection":"0.1.1-rc.2","@deepseek-ai/dsh-settings":"0.1.1-rc.2","@deepseek-ai/dsh-system-prompt":"0.1.1-rc.2","@deepseek-ai/dsh-timeout":"0.1.1-rc.2","@deepseek-ai/dsh-token-meter":"0.1.1-rc.2","@deepseek-ai/dsh-tool-call-timeout-policy":"0.1.1-rc.2","@deepseek-ai/dsh-tool-fs":"0.1.1-rc.2","@deepseek-ai/dsh-tools":"0.1.1-rc.2","@deepseek-ai/dsh-typert-protocol":"0.1.1-rc.2","@deepseek-ai/dsh-user-approval":"0.1.1-rc.2","@fast-csv/parse":"4.3.6","@inquirer/prompts":"7.10.1","@vscode/ripgrep":"1.18.0","@xmldom/xmldom":"0.8.15","diff":"9.0.0","eventsource-parser":"3.1.0","jszip":"3.10.1","mammoth":"1.12.1","manim-web":"0.3.24","pdf-parse":"2.4.5","read-excel-file":"9.3.10","sharp":"0.35.3","ws":"^8.21.3"},"devDependencies":{"png2icons":"2.0.1"},"gitHead":"f7283b67bf2c0745b4e2a8320e9db38fc27694d8","_id":"penecho@1.2.0","_nodeVersion":"26.8.1","_npmVersion":"11.19.0","dist":{"integrity":"sha512-df7Wk5tqilwtwvBWd4I1BIVcggm12slsatojcFD/gmAeiQCgaKfBhX7lDQKpZzFC0plqjXshIoBJTZbYVQ5vLQ==","shasum":"f34075466cbf5958a4bc7ba91973a8b0363868f5","tarball":"https://registry.npmjs.org/penecho/-/penecho-1.2.0.tgz","fileCount":131,"unpackedSize":10886877,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCyKWXPTO202QQZNBuVVVUgi2twEswGO+qDY5jWr58cvAIhAN1VHDKEW3VubowehFj1/VC+FvtDg+xRg7GvSH5MkiJw"}]},"_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"directories":{},"maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/penecho_1.2.0_1788519331489_0.27065635917849695"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-15T15:05:46.488Z","modified":"2026-09-04T10:55:31.929Z","0.2.0":"2026-07-15T15:05:46.849Z","0.3.0":"2026-07-17T07:58:48.454Z","0.4.0":"2026-07-17T22:05:18.172Z","0.4.1":"2026-07-18T05:17:29.048Z","0.4.2":"2026-07-18T09:44:14.857Z","0.5.0":"2026-07-19T08:58:05.647Z","0.5.1":"2026-07-20T12:10:39.410Z","0.6.0":"2026-07-21T14:47:42.566Z","0.7.0":"2026-07-22T19:36:36.939Z","0.7.1":"2026-07-25T18:24:48.038Z","0.7.2":"2026-07-27T09:52:14.178Z","0.8.0":"2026-07-30T07:08:18.268Z","0.8.1":"2026-08-01T08:39:57.719Z","0.9.0":"2026-08-08T20:28:10.978Z","1.0.0":"2026-08-20T17:14:35.603Z","1.0.1":"2026-08-21T08:21:59.032Z","1.1.0":"2026-08-27T10:40:00.191Z","1.1.1":"2026-08-27T16:24:18.472Z","1.1.2":"2026-08-27T16:48:29.037Z","1.1.3":"2026-08-27T17:06:38.177Z","1.1.4":"2026-08-27T18:12:05.784Z","1.1.5":"2026-08-28T12:03:20.345Z","1.1.6":"2026-08-28T13:21:57.249Z","1.1.7":"2026-08-28T18:15:34.578Z","1.1.10":"2026-09-04T08:39:58.254Z","1.2.0":"2026-09-04T10:55:31.759Z"},"bugs":{"url":"https://github.com/penecho/penecho/issues"},"author":{"name":"PenEcho contributors"},"license":"AGPL-3.0-only","homepage":"https://github.com/penecho/penecho#readme","keywords":["canvas","handwriting","ai","whiteboard","math","visualization","productivity","agent"],"repository":{"type":"git","url":"git+https://github.com/penecho/penecho.git"},"description":"Turn research, files, and canvas context into editable visual work with AI","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"readme":"<h1 align=\"center\">\n  <img src=\"public/penecho-readme-header.png\" alt=\"PenEcho\" width=\"760\">\n</h1>\n\n<p align=\"center\">\n  <strong>English</strong> |\n  <a href=\"docs/readme/README.zh-CN.md\">简体中文</a> |\n  <a href=\"docs/readme/README.ja.md\">日本語</a> |\n  <a href=\"docs/readme/README.ko.md\">한국어</a> |\n  <a href=\"docs/readme/README.ru.md\">Русский</a> |\n  <a href=\"docs/readme/README.es.md\">Español</a> |\n  <a href=\"docs/readme/README.pt-BR.md\">Português (Brasil)</a> |\n  <a href=\"docs/readme/README.fr.md\">Français</a> |\n  <a href=\"docs/readme/README.de.md\">Deutsch</a>\n</p>\n\n<p align=\"center\"><strong>Think with AI beyond the chat box.</strong></p>\n\n<p align=\"center\">PenEcho is a shared canvas where handwriting, equations, diagrams, and spatial context become part of the conversation.</p>\n\n<h2 align=\"center\">\n  <a href=\"https://penecho.ai\">Official Website · penecho.ai</a>\n</h2>\n\n<h3 align=\"center\"><a href=\"https://penecho.ai\">Publish ideas · Collaborate through shared canvases · Share your work</a></h3>\n\n<p align=\"center\">\n  <a href=\"https://discord.gg/3jrPJ3mXdX\">\n    <img src=\"https://img.shields.io/badge/Discord-Join%20the%20community-5865F2?style=for-the-badge&amp;logo=discord&amp;logoColor=white\" alt=\"Join the PenEcho Discord\">\n  </a>\n  <a href=\"https://github.com/penecho/penecho/stargazers\">\n    <img src=\"https://img.shields.io/github/stars/penecho/penecho?style=for-the-badge&amp;logo=github&amp;logoColor=white&amp;color=f5b301\" alt=\"Star PenEcho on GitHub\">\n  </a>\n  <a href=\"LICENSE\">\n    <img src=\"https://img.shields.io/badge/License-AGPL%20v3-blue?style=for-the-badge\" alt=\"License: AGPL v3\">\n  </a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://penecho.ai\">Website</a> &bull;\n  <a href=\"#-features\">Features</a> &bull;\n  <a href=\"#-quick-start\">Quick Start</a> &bull;\n  <a href=\"#penecho-cloud\">Cloud</a> &bull;\n  <a href=\"#recommended-model-configurations\">Models</a> &bull;\n  <a href=\"#-faq\">FAQ</a> &bull;\n  <a href=\"docs/architecture.md\">Architecture</a> &bull;\n  <a href=\"https://discord.gg/3jrPJ3mXdX\">Discord</a>\n</p>\n\n<p align=\"center\">\n  <img src=\"https://github.com/penecho/penecho/releases/download/v0.1.0/penecho_plugins.webp\" alt=\"PenEcho professional diagrams demo\" width=\"49%\">\n  <img src=\"https://github.com/penecho/penecho/releases/download/v0.1.0/penecho_full_demo.webp\" alt=\"PenEcho full demo\" width=\"49%\">\n</p>\n\n<p align=\"center\">\n  <img src=\"https://github.com/penecho/penecho/releases/download/v0.1.0/penecho_plugins_sub_x10.webp\" alt=\"PenEcho plugins demo\" width=\"49%\">\n  <img src=\"https://github.com/penecho/penecho/releases/download/v0.1.0/play_patris.webp\" alt=\"PenEcho interactive canvas demo\" width=\"49%\">\n</p>\n\n## Kimi Open Source Friends\n\n<p align=\"center\">\n  <a href=\"https://www.kimi.com/code?aff=penecho\">\n    <picture>\n      <source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/assets/kimi-open-source-friends-dark.svg\">\n      <img alt=\"Kimi Open Source Friends\" src=\"docs/assets/kimi-open-source-friends-light.svg\">\n    </picture>\n  </a>\n</p>\n\nPenEcho is an official member of **Kimi Open Source Friends**, [Moonshot AI](https://www.kimi.com/)'s program supporting outstanding open source projects. The Kimi team backs PenEcho's development with API credits, and Kimi K3 is one of the [recommended models](#recommended-model-configurations) for demanding canvas work — accurate on handwriting, strong on diagrams, and fast in practice.\n\nUsing these links directly supports the project:\n\n- **[Kimi Code](https://www.kimi.com/code?aff=penecho)** — Kimi's coding subscription, available worldwide\n- **[Kimi Open Platform · China](https://platform.kimi.com?aff=penecho)** — API access for mainland China\n- **[Kimi Open Platform · Global](https://platform.kimi.ai?aff=penecho)** — API access for the rest of the world\n\n## ✨ Features\n\n- **PenEcho Agent: from source material to finished visual work.** Bring in read-only folders and files—including PDF, Word, PowerPoint, Excel, images, and code—combine them with web research and the current canvas, then keep the same agent working through analysis, planning, creation, and revision.\n- **Visual Explorer for productivity.** Turn dense information into one responsive, editable visual workspace with a clear overview, connected detail, and supporting evidence. It shortens the path from research to a shareable result, reducing copy-paste, tool switching, manual diagramming, and repeated handoffs between chat, documents, and design tools.\n- **Think in space, not in chat.** Write a question, equation, diagram, or half-formed idea anywhere on a `20,000 x 20,000` canvas. PenEcho reads your marks and their spatial relationships, then answers beside them.\n- **Answers on the canvas.** Get hints, explanations, formulas, plots, and diagrams where you are working. Move, resize, and copy each AI draft, then accept or discard it before it becomes part of your ink.\n- **Natural input.** Draw with a stylus or mouse; lasso confirmed ink to move, resize, recolor, or delete it, or send just that selection to Typeset. Editing your own ink never triggers an AI request.\n- **Editable AI widgets.** Sandboxed interactive HTML, professional diagrams, animations, and live-data plugins — refinable in place with incremental unified-diff edits instead of full regeneration.\n- **Multiple AI connections.** Save up to ten API or CLI connections with one-click switching, including editable Kimi and MiniMax presets, and pick a different active connection per client.\n- **Projects and sharing.** Organize server canvases into projects, open them from other authorized devices, and export confirmed ink as a cropped PNG.\n- **PenEcho Cloud.** Sign in at [penecho.ai](https://penecho.ai) to continue private projects on other devices, sync favorites, reach this host remotely through a linked device, and share public Crafts through Echoes — API credentials never leave the device.\n- **Four themes** to match the problem you are exploring: Arcane, Sci-fi, Research, or Studio.\n\n## 🚀 Quick start\n\n**Desktop app** — [download from GitHub Releases](https://github.com/penecho/penecho/releases/latest).\n\n**npm** — needs [Node.js 22.19+](https://nodejs.org/) and one of: an API key, an authenticated [Kimi Code CLI](https://github.com/MoonshotAI/kimi-code), an authenticated [Codex CLI](https://developers.openai.com/codex/cli), or an authenticated [Claude Code CLI](https://code.claude.com/docs/en/overview).\n\n```bash\nnpm install -g penecho\npenecho configure   # pick your LLM source: API, Kimi, Codex, or Claude CLI\npenecho             # then open http://localhost:3888\n```\n\n**From source**\n\n```bash\ngit clone https://github.com/penecho/penecho.git\ncd penecho\nnpm install\nnpm start\n```\n\nOn first start, the initial browser session must set a shared six-digit security code or explicitly acknowledge leaving the process open to the local network. Configuration is saved to `~/.penecho/config.env`; API keys never reach browser code. CLI modes require an authenticated CLI on your `PATH` — see the [configuration reference](docs/configuration.md) for CLI setup, effort mapping, and every setting.\n\n<a id=\"penecho-cloud\"></a>\n## ☁️ PenEcho Cloud\n\n[PenEcho Cloud](https://penecho.ai) is the companion website and account introduced in 1.0.0. It connects your devices and your work — and it is entirely optional: PenEcho keeps working fully offline with your own API or CLI setup.\n\nOn the website you can:\n\n- Sign in with your browser and manage your Cloud account, storage, and credits\n- Open **Echoes** and browse public Canvases and Widgets shared by the community\n- View any public Craft in a read-only web viewer and share its link with anyone\n- Manage project revisions, Trash, and recovery\n- Generate pairing keys under **Cloud → Devices** to link your PenEcho hosts\n\nIn the app, signing in adds:\n\n- **Cloud projects.** Save private, versioned Canvases into projects and continue them on any signed-in device. Every successful save creates an immutable revision, and a Canvas updated on another device is never silently overwritten — you are asked to load the latest version or save a copy.\n- **Linked device.** Pair this host with a one-time key from Cloud → Devices, and your signed-in browsers and apps can reach it from anywhere through Cloud relay. Remote access to your canvas host without exposing it to the internet; API credentials still live only on that device. Pause, resume, or remove the link at any time.\n- **Echoes: co-creation and knowledge sharing.** Browse public Canvases and Widgets across twelve categories, favorite them into a personal library that syncs through Cloud, and add community Widgets straight into your own Canvas. Publish a Canvas of your own with a share category so others can learn from it, build on it, and Echo it — with Craft lineage preserved between versions.\n\n## 🔔 What's new in 1.2.0\n\n- **A simpler frosted Studio.** The toolbar, Navigator, Agent, settings, dialogs, and compact controls now share a restrained translucent material with fine hairlines. The workspace feels lighter and more coherent while keeping the Canvas clearly visible.\n- **Faster Canvas interaction.** A low-latency live ink layer and coordinated frame work make drawing, erasing, panning, and zooming feel more immediate, while Widgets remain live and text returns sharper after movement.\n- **Customizable keyboard shortcuts.** A dedicated Settings page lets you review, change, clear, and reset shortcuts for focusing the Agent, saving, undo and redo, opening the Canvas Library, fullscreen, and Settings.\n- **Clearer hierarchy, less interface noise.** Primary tools stay within reach, secondary controls recede until needed, and Cloud status, history, favorites, and Agent surfaces follow the same visual and interaction language.\n- **A responsive workbench.** Controls remain compact across wide and narrow screens, the Agent adapts between a right sidebar and bottom panel, and important actions remain visible when the toolbar wraps. Interface scale and Studio palette choices make the workspace comfortable in more environments.\n- **Smaller improvements together.** Agent suggestions and attachments, Widget and object controls, linked-device viewing, request feedback, long-running tasks, and desktop reliability have been refined; the pen also adds a finer 3 px option.\n\n1.1.7 stabilized the PenEcho Agent runtime and managed Codex CLI integration. 1.0.0 introduced [PenEcho Cloud](https://penecho.ai), private versioned projects, linked-device remote access, Echoes, public Crafts, and synced favorites. 0.9.0 added multiple AI connections with one-click switching, project-based shared canvases, guided in-place Refine, unified-diff incremental edits, SSE streaming, and request progress with cancellation. See [Releases](https://github.com/penecho/penecho/releases) for the full history.\n\n## 📖 How it works\n\n<p align=\"center\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/assets/how-it-works-dark.svg\">\n    <img alt=\"How PenEcho works: canvas ink becomes a visual atlas, the server routes it to the configured executor, and a structured editable draft returns to the canvas\" src=\"docs/assets/how-it-works-light.svg\">\n  </picture>\n</p>\n\nThe browser sends only the relevant canvas crop and geometry. The server validates the request, routes it to your selected executor, and returns a movable draft that stays separate from confirmed ink until you accept it. PenEcho allocates `512 x 512` tiles only where ink exists, so the huge logical canvas never becomes a huge bitmap. Implementation details are in the [architecture notes](docs/architecture.md).\n\n## Recommended model configurations\n\nThese recommendations balance answer quality against the latency of PenEcho's real canvas workload, based on current hands-on testing; actual response time varies with the provider, canvas complexity, and reasoning behavior.\n\n| Model | Effort | Quality and speed | Recommended use |\n| --- | --- | --- | --- |\n| Claude Opus 4.8 / 5.0 (`claude-opus-4-8` / `claude-opus-5-0`) | `medium` | Strong quality with a better latency balance | Recommended Opus default for everyday canvas work |\n| Claude Opus 4.8 / 5.0 (`claude-opus-4-8` / `claude-opus-5-0`) | `high` | Higher reasoning quality, with longer and more variable waits | Complex handwriting, mathematics, diagrams, or layout decisions where quality matters more than speed |\n| Fable 5 (`claude-fable-5` or `fable`) | `medium` | Very good results; in current tests, often around half the response time of `gpt-5.6-sol` at `xhigh` | A fast, high-quality general-purpose choice |\n| [Kimi K3](https://platform.kimi.ai?aff=penecho) (`kimi-k3`) | `medium` | Very good quality in the current comparison; `medium` keeps the quality/speed balance practical | Recommended Kimi Open Platform default for demanding canvas work |\n| `gpt-5.6-terra` | `low` to `high` | Surprisingly strong and responsive; current PenEcho canvas tests produced better results than `gpt-5.6-sol` with fast response times | Recommended OpenAI option across a flexible range of quality and latency targets |\n| `gpt-5.6-luna` | `xhigh` | Very good canvas results with strong response speed | A responsive quality-first option when `xhigh` reasoning is appropriate |\n| `gpt-5.6-sol` | `high` | Good enough for most requests and more responsive than `xhigh` | Recommended Sol default when responsiveness matters |\n| `gpt-5.6-sol` | `xhigh` | Very good results, but slower and more variable | Quality-first Sol configuration for difficult canvas tasks |\n| `deepseek-v4-flash-vision-exp` | `medium` | Good | Vision-capable canvas work through the DeepSeek API (`https://api.deepseek.com`) |\n| `glm-5.3-flash` | `medium` | Good | Fast canvas work through the GLM Anthropic-compatible API (`https://open.bigmodel.cn/api/anthropic`) |\n\nTypical output usage per request, including hidden reasoning tokens, is roughly `1,000` tokens at `low`, `3,000` at `medium`, and `5,000–8,000` at `xhigh`/`max`. At a typical low-effort volume (`10,000` input / `1,000` output tokens), current standard GPT-5.6 API rates work out to about $0.003–$0.08 per request across Luna, Terra, and Sol; higher effort levels cost more because reasoning tokens are billed as output. Check current [OpenAI API pricing](https://developers.openai.com/api/docs/pricing) before budgeting. CLI modes use the plan you are already signed in with rather than API billing. Google models are untested — if you try Gemini, please share the configuration and results in an issue.\n\n## ⚙️ Configuration\n\n`penecho configure` opens an interactive center covering everything: LLM source, model, effort, no-activity timeout, per-request Agent round limit, response-token limit, image format, request recording, and the listening interface and port. The settings people touch most, also writable in `~/.penecho/config.env`:\n\n| Setting | Purpose |\n| --- | --- |\n| `AI_PROVIDER` | Executor: `api`, `kimi-cli`, `codex-cli`, or `claude-cli` |\n| `AI_API_URL` / `AI_API_KEY` / `AI_API_MODEL` | API endpoint, credential, and model (API mode only) |\n| `AI_EFFORT` | Saved reasoning level; the canvas toolbar `Reasoning` menu can override it per request without rewriting the connection |\n| `AI_TIMEOUT_SECONDS` | PenEcho Agent inactivity deadline; genuine model or tool progress restarts the timer |\n| `PENECHO_CANVAS_AGENT_TURN_LIMIT` | Agent rounds allowed per request, minimum 50 with no maximum; default 100, with results and conversation preserved at the limit |\n| `HOST` / `PORT` | Listening interface and port, default `0.0.0.0:3888` |\n| `AUTO_AI_DELAY_SECONDS` | Delay before automatic recognition, adjustable from 0 to 10 seconds on the canvas |\n\nUse a different config file for one launch with `--config ./team.env`, or override the model, effort, and port for one process with flags such as `penecho --claude --model opus --effort max`. The full reference — CLI prerequisites, effort mapping, timeouts, tracing, and every setting — lives in [docs/configuration.md](docs/configuration.md).\n\n## 🔒 Security\n\n- Each start requires a shared six-digit code (stored only as a salted in-memory hash, rate-limited) or an explicit acknowledgement. It is a trusted-LAN guard, not Internet-grade authentication.\n- CLI modes start local CLI processes on valid requests: keep them on the local machine or a trusted, directly connected LAN, and never expose them to the public internet or an untrusted reverse proxy.\n- For public exposure, place PenEcho behind HTTPS, stronger authentication, rate limiting, and request-size controls.\n- Credentials stay in the Node.js process and the config file and are never sent to browser code. Do not publish config files, logs, screenshots, or request traces containing private content.\n\n## ❓ FAQ\n\n**Do I need an API key?**\nNo. An authenticated [Kimi Code CLI](https://github.com/MoonshotAI/kimi-code), [Codex CLI](https://developers.openai.com/codex/cli), or [Claude Code CLI](https://code.claude.com/docs/en/overview) works too — PenEcho uses the selected CLI locally and never needs an API key for that source.\n\n**Which model should I start with?**\n[Kimi K3](https://platform.kimi.ai?aff=penecho), Claude Opus 4.8 / 5.0, the `gpt-5.6` family, `deepseek-v4-flash-vision-exp`, and `glm-5.3-flash` are tested starting points — see [recommended models](#recommended-model-configurations).\n\n**Is PenEcho free?**\nThe app is free and open source under AGPL v3. Model usage is billed by your provider or included in the Codex/Claude plan you sign in with. A typical low-effort request costs a few cents.\n\n**Do I need a Cloud account?**\nNo. PenEcho works fully locally with your own API or CLI. Signing in to [penecho.ai](https://penecho.ai) optionally adds private cross-device projects, synced favorites, remote access to this host through a linked device, and public sharing through Echoes.\n\n**Where does my data live?**\nCanvases and settings stay on your device or your own PenEcho server. Keys and settings live in `~/.penecho/config.env`, and request recording is disabled by default.\n\n**Can I use it from a tablet on my LAN?**\nYes. Startup prints the machine's LAN URLs; open one on the other device and enter the same six-digit code. If it cannot connect, allow the configured TCP port in the host firewall.\n\n## 🤝 Contributing\n\nPenEcho is young and built in the open, and the problems that matter most — handwriting recognition, on-canvas visual tools, wider model support, and natural pen interaction — are still open. You do not need to write code to help: test a model and report the executor, model ID, effort, latency, and a sample result; share a canvas that worked or fell apart; or report rough edges, however small.\n\nRun `npm run check` before opening a pull request. Start with [CONTRIBUTING.md](CONTRIBUTING.md), and find us on [Discord](https://discord.gg/3jrPJ3mXdX), [GitHub Discussions](https://github.com/penecho/penecho/discussions), and [GitHub Issues](https://github.com/penecho/penecho/issues).\n\n## 📄 License\n\nPenEcho is open source under [GNU AGPL v3.0 only](LICENSE); commercial use is allowed under the AGPL. If you modify PenEcho and serve it over a network, you must offer users the corresponding source code. An alternative [commercial license](COMMERCIAL-LICENSE.md) is available for products that cannot meet AGPL requirements. The PenEcho name and logo are governed by the [trademark policy](TRADEMARKS.md), and contributors keep ownership of their work under the [contributor agreement](CONTRIBUTOR-LICENSE-AGREEMENT.md).\n","readmeFilename":"README.md"}