{"_id":"penecho","_rev":"43-7f77eacadfda8a8c04007f80575f570b","name":"penecho","dist-tags":{"next":"1.3.0","latest":"1.4.2"},"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","keywords":["canvas","handwriting","ai","whiteboard","math","visualization","productivity","agent"],"author":{"name":"PenEcho contributors"},"license":"AGPL-3.0-only","_id":"penecho@1.2.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":"f34075466cbf5958a4bc7ba91973a8b0363868f5","tarball":"https://registry.npmjs.org/penecho/-/penecho-1.2.0.tgz","fileCount":131,"integrity":"sha512-df7Wk5tqilwtwvBWd4I1BIVcggm12slsatojcFD/gmAeiQCgaKfBhX7lDQKpZzFC0plqjXshIoBJTZbYVQ5vLQ==","signatures":[{"sig":"MEYCIQCyKWXPTO202QQZNBuVVVUgi2twEswGO+qDY5jWr58cvAIhAN1VHDKEW3VubowehFj1/VC+FvtDg+xRg7GvSH5MkiJw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10886877},"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,"devDependencies":{"png2icons":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/penecho_1.2.0_1788519331489_0.27065635917849695","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"penecho","version":"1.3.0","keywords":["canvas","handwriting","ai","whiteboard","math","visualization","productivity","agent"],"author":{"name":"PenEcho contributors"},"license":"AGPL-3.0-only","_id":"penecho@1.3.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":"b00bccb8da952b59cff3820e5a05b271385472ff","tarball":"https://registry.npmjs.org/penecho/-/penecho-1.3.0.tgz","fileCount":196,"integrity":"sha512-twHcLXy9AA5HHhyei3EWX3QpWmH1ahRupl/wgxBsjqINrfVlaW1VdU2lmvN7CwCqRAw6ilTxu4XNyPZXFjDIMA==","signatures":[{"sig":"MEUCIH5vuTJWbdfZIPJPzVXEdUe4xn9TdGdVJE7VMNclC3bGAiEAmQyqEO/qF9n/8QCtnQ5GtuGJiHgwaNzwWKBs/dr3YZE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12771262},"main":"desktop/main.js","config":{"forge":"./forge.config.js","desktopVersion":"1.3.0"},"engines":{"node":">=22.19.0"},"gitHead":"342e95334e105a8fa498131f2e80b03779dea3a6","scripts":{"dev":"node server.js","test":"node --test","check":"npm run check:harness-backports && 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/canvas-preload.js && node --check desktop/cli-installer.js && node --check desktop/update-manager.js && node --check desktop/settings-contract.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:harness-backports":"node scripts/build-harness-backports.cjs","check:harness-backports":"node scripts/build-harness-backports.cjs --check","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.4","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.3.0_1789318267321_0.9926971834241012","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"penecho","version":"1.3.1","keywords":["canvas","handwriting","ai","whiteboard","math","visualization","productivity","agent"],"author":{"name":"PenEcho contributors"},"license":"AGPL-3.0-only","_id":"penecho@1.3.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":"f8cc8dfdbe1aa0a842d14a92aa268b3e75296019","tarball":"https://registry.npmjs.org/penecho/-/penecho-1.3.1.tgz","fileCount":196,"integrity":"sha512-okvzaM5VbOO3soX7F9EtgVPHaliA7fWhGF8VlNxn+tkZjGStMpKhgZcY+zBqCPEg+a5NLjKm6UVZwOmZmLdRig==","signatures":[{"sig":"MEYCIQCs7tfYkYHW0KTYl66P/CqhdNQgVM+1F7ISS1/I/uhCGwIhANfC1+VbXRo2wn+SuLDeFU4Urbg/R2O+g8I9+66MPTtO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12771237},"main":"desktop/main.js","config":{"forge":"./forge.config.js","desktopVersion":"1.3.1"},"engines":{"node":">=22.19.0"},"gitHead":"a24f36192e75d4455c893f2029991d1b1d7a8917","scripts":{"dev":"node server.js","test":"node --test","check":"npm run check:harness-backports && 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/canvas-preload.js && node --check desktop/cli-installer.js && node --check desktop/update-manager.js && node --check desktop/settings-contract.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:harness-backports":"node scripts/build-harness-backports.cjs","check:harness-backports":"node scripts/build-harness-backports.cjs --check","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.4","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,"devDependencies":{"png2icons":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/penecho_1.3.1_1789321976432_0.0729612465317322","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"penecho","version":"1.3.2","keywords":["canvas","handwriting","ai","whiteboard","math","visualization","productivity","agent"],"author":{"name":"PenEcho contributors"},"license":"AGPL-3.0-only","_id":"penecho@1.3.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":"fb40f70cc6f08077a835577bb3c75355f8c8d64c","tarball":"https://registry.npmjs.org/penecho/-/penecho-1.3.2.tgz","fileCount":200,"integrity":"sha512-0tnPKhRlFFDhBg2WK5WWbZHWBd2tNEfH7zKDDMdt7m93eN6dwPVdotKCHzbD9YnV//jZjn7NVCbw75PL6+x/kg==","signatures":[{"sig":"MEUCIQC+dMQm4O9SbOfNtDDuepyq50CyZXL0emOXOPVD9SLRsgIgMKACifTKSmk12Z6O60L+B/f7cI5ddSQxj3eod0KSopM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12862488},"main":"desktop/main.js","config":{"forge":"./forge.config.js","desktopVersion":"1.3.2"},"engines":{"node":">=22.19.0"},"gitHead":"006c739a4cca7a79a2a8f249dbbcbc13f1e28851","scripts":{"dev":"node server.js","test":"node --test","check":"npm run check:harness-backports && 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/canvas-preload.js && node --check desktop/cli-installer.js && node --check desktop/update-manager.js && node --check desktop/settings-contract.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:harness-backports":"node scripts/build-harness-backports.cjs","check:harness-backports":"node scripts/build-harness-backports.cjs --check","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.4","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,"devDependencies":{"png2icons":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/penecho_1.3.2_1789487524787_0.940662784126107","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"penecho","version":"1.3.3","keywords":["canvas","handwriting","ai","whiteboard","math","visualization","productivity","agent"],"author":{"name":"PenEcho contributors"},"license":"AGPL-3.0-only","_id":"penecho@1.3.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":"911036166e6e5b12936c81a0db40811791d66b87","tarball":"https://registry.npmjs.org/penecho/-/penecho-1.3.3.tgz","fileCount":242,"integrity":"sha512-RqNVy3Ce68EyLsNZ4RjkWm2Kkkd2addV8WeAjBdpCLJFanQ5b99vP+x1XffxGkTGdY+mRBxxS3vvAsZdJfBelw==","signatures":[{"sig":"MEQCICZ6bxova4ErzVHowvfnda4q2mGY057mPnrmD12iTc46AiBUXivy9FKfpZg9UXseI3vxX0WdUWTIdCqlYbPpP0bDPw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIQDYB03mELvDJNbLmZy60o1YMVyfdMkd6tlVIzcuW7rpiAIfMbylmTUewQv9RmFTmCefc/4C3i0cJf06Hq8EoOKLrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14937904},"main":"desktop/main.js","config":{"forge":"./forge.config.js","desktopVersion":"1.3.3"},"engines":{"node":">=22.19.0"},"gitHead":"49cee2667edb08a9bb9a4e49c219ffa864344f1c","scripts":{"dev":"node server.js","test":"node --test","check":"npm run check:workflow && npm run check:sequence && npm run check:architecture && npm run check:harness-backports && 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/canvas-preload.js && node --check desktop/cli-installer.js && node --check desktop/update-manager.js && node --check desktop/settings-contract.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 && npm run build:architecture && npm run build:sequence && npm run build:workflow","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","build:sequence":"node scripts/build-sequence.js","build:workflow":"node scripts/build-workflow.js","check:sequence":"node scripts/build-sequence.js --check","check:workflow":"node scripts/build-workflow.js --check","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","build:architecture":"node scripts/build-architecture.js","check:architecture":"node scripts/build-architecture.js --check","desktop:make:windows":"npm run icons && node tools/electron/run-forge.js make --platform=win32","build:harness-backports":"node scripts/build-harness-backports.cjs","check:harness-backports":"node scripts/build-harness-backports.cjs --check","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.4","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,"devDependencies":{"elkjs":"0.12.0","esbuild":"0.25.12","png2icons":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/penecho_1.3.3_1789845871909_0.06384423562719976","host":"s3://npm-registry-packages-npm-production"}},"1.3.4":{"name":"penecho","version":"1.3.4","keywords":["canvas","handwriting","ai","whiteboard","math","visualization","productivity","agent"],"author":{"name":"PenEcho contributors"},"license":"AGPL-3.0-only","_id":"penecho@1.3.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":"8cec5110769888f87bdf595955506c1870aa84eb","tarball":"https://registry.npmjs.org/penecho/-/penecho-1.3.4.tgz","fileCount":265,"integrity":"sha512-YUtQ3CAd2l/uJVhuhDOpV/8NfHpTLq3ilBPxu4JrGl3acwny8ODoADCJ6nj6X8EhH0Fxj+qjUXTdogMdw73axQ==","signatures":[{"sig":"MEUCIQCIslf0p/9hyfa3JlzPDrJNHk6/w/+8ua3mRFr6J6G9mAIgCjFW7m37WyrocEfUJnGRMdzHm8s2mIaAzgk+CDTDyxM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFGJ1kAcYiPCEj0Osy8ZcICM0R+DzjIiXcDVjoChY4OFAiBIig0I2tFKl+2kP+ymnpAaB4YV5q+cpNhBB1Ajwr/vFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16134256},"main":"desktop/main.js","config":{"forge":"./forge.config.js","desktopVersion":"1.3.4"},"engines":{"node":">=22.19.0"},"gitHead":"41dc61ae5846f86fa2931abf0388688f4433aadb","scripts":{"dev":"node server.js","test":"node --test","check":"npm run check:workflow && npm run check:sequence && npm run check:architecture && npm run check:harness-backports && npm run check:playground && 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/canvas-preload.js && node --check desktop/cli-installer.js && node --check desktop/update-manager.js && node --check desktop/settings-contract.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 && npm run build:architecture && npm run build:sequence && npm run build:workflow","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":"npm run build:playground && 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","build:sequence":"node scripts/build-sequence.js","build:workflow":"node scripts/build-workflow.js","check:sequence":"node scripts/build-sequence.js --check","check:workflow":"node scripts/build-workflow.js --check","desktop:collect":"node scripts/collect-artifacts.js","desktop:package":"npm run icons && node tools/electron/run-forge.js package","build:playground":"node scripts/build-playground.cjs","check:playground":"node scripts/build-playground.cjs --check","desktop:make:mac":"npm run icons && node tools/electron/run-forge.js make --platform=darwin","build:architecture":"node scripts/build-architecture.js","check:architecture":"node scripts/build-architecture.js --check","desktop:make:windows":"npm run icons && node tools/electron/run-forge.js make --platform=win32","build:harness-backports":"node scripts/build-harness-backports.cjs","check:harness-backports":"node scripts/build-harness-backports.cjs --check","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.4","three":"0.184.0","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,"devDependencies":{"elkjs":"0.12.0","esbuild":"0.25.12","png2icons":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/penecho_1.3.4_1790362406285_0.03724897855722009","host":"s3://npm-registry-packages-npm-production"}},"1.3.5":{"name":"penecho","version":"1.3.5","keywords":["canvas","handwriting","ai","whiteboard","math","visualization","productivity","agent"],"author":{"name":"PenEcho contributors"},"license":"AGPL-3.0-only","_id":"penecho@1.3.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":"22b998488c061acb9525e039650ae2460e53a72a","tarball":"https://registry.npmjs.org/penecho/-/penecho-1.3.5.tgz","fileCount":265,"integrity":"sha512-S3ZwQq/KGAluXEqxbU//ddN060WuUNJC7pvurxKLRFeyr4t+wSOGzB7zak9V1r6jorob1fA4mCO4QdbxYVf/fQ==","signatures":[{"sig":"MEUCICAISJh7Udj5FhW7ALYcx0cy9oKw2t+dsNEbALWjMMGNAiEA3FBhtWRR8t7oXNysQK4hNyzHwmZvBC4EB39HRF1hbzQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBs3jNqxGQVwkAq72EjKYcDOXuvdRHjDzM7I0G4BG24JAiEAsD5cLUvAKl2E9dYWvVE4KVD1F+gdP9+fqFGoSkiKra0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16138913},"main":"desktop/main.js","config":{"forge":"./forge.config.js","desktopVersion":"1.3.5"},"engines":{"node":">=22.19.0"},"gitHead":"6daad6517d25a1be3bab7bf312cae50615189549","scripts":{"dev":"node server.js","test":"node --test","check":"npm run check:workflow && npm run check:sequence && npm run check:architecture && npm run check:harness-backports && npm run check:playground && 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/canvas-preload.js && node --check desktop/cli-installer.js && node --check desktop/update-manager.js && node --check desktop/settings-contract.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 && npm run build:architecture && npm run build:sequence && npm run build:workflow","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":"npm run build:playground && 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","build:sequence":"node scripts/build-sequence.js","build:workflow":"node scripts/build-workflow.js","check:sequence":"node scripts/build-sequence.js --check","check:workflow":"node scripts/build-workflow.js --check","desktop:collect":"node scripts/collect-artifacts.js","desktop:package":"npm run icons && node tools/electron/run-forge.js package","build:playground":"node scripts/build-playground.cjs","check:playground":"node scripts/build-playground.cjs --check","desktop:make:mac":"npm run icons && node tools/electron/run-forge.js make --platform=darwin","build:architecture":"node scripts/build-architecture.js","check:architecture":"node scripts/build-architecture.js --check","desktop:make:windows":"npm run icons && node tools/electron/run-forge.js make --platform=win32","build:harness-backports":"node scripts/build-harness-backports.cjs","check:harness-backports":"node scripts/build-harness-backports.cjs --check","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.4","three":"0.184.0","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,"devDependencies":{"elkjs":"0.12.0","esbuild":"0.25.12","png2icons":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/penecho_1.3.5_1790391042557_0.5061504734256039","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"penecho","version":"1.4.0","keywords":["canvas","handwriting","ai","whiteboard","math","visualization","productivity","agent"],"author":{"name":"PenEcho contributors"},"license":"AGPL-3.0-only","_id":"penecho@1.4.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":"7ed6b9bc4b0bfed161ea148406417cb2d1c786b9","tarball":"https://registry.npmjs.org/penecho/-/penecho-1.4.0.tgz","fileCount":427,"integrity":"sha512-cUPqfu7im6KUsY5aG9H/uEKHx7/PGqkrjRdP0b/+o9hrk+F6FKsdEcc0lAJc71W5FEhTgBWk/soX9Lp9+E6k7g==","signatures":[{"sig":"MEUCIHwCA8FHolwEcVDZuu6wvCA2NLPA213/z1WZGDVtDa5kAiEA2jIifjDHiMftcbTthRNXYPlanzXCuEhX59trgxtL3N4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD7tUdgMPjvRTBv+DjoxUO+eNAsyK9mCesmipQlAFPwcAIgUbiIoYCNfb8q6A0r/T1sNAoaZcwGm8rydDipccuffu8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44415164},"main":"desktop/main.js","config":{"forge":"./forge.config.js","desktopVersion":"1.4.0"},"engines":{"node":">=22.19.0"},"gitHead":"c48988b315aa015e6fc5daf37e4f79a7afd3bafc","scripts":{"dev":"node server.js","test":"node --test","check":"npm run check:workflow && npm run check:sequence && npm run check:architecture && npm run check:harness-backports && npm run check:playground && npm run check:ink-lab && 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/canvas-preload.js && node --check desktop/cli-installer.js && node --check desktop/update-manager.js && node --check desktop/settings-contract.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/smart-suggest.js && node --check public/pen-intel.js && node --check public/note-card.js && node --check public/scene-spec.js && node --check public/scene-runtime.js && node --check src/server/jevision.js && node --check scripts/jevision-probe.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 && npm run build:architecture && npm run build:sequence && npm run build:workflow","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-canvas-command-prompt.cjs && npm run build:playground && npm run build:ink-lab && node scripts/build-client.js","check:client":"node scripts/build-canvas-command-prompt.cjs --check && 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","build:ink-lab":"node scripts/build-ink-lab.cjs","check:ink-lab":"node scripts/build-ink-lab.cjs --check","build:sequence":"node scripts/build-sequence.js","build:workflow":"node scripts/build-workflow.js","check:sequence":"node scripts/build-sequence.js --check","check:workflow":"node scripts/build-workflow.js --check","jevision:probe":"node scripts/jevision-probe.js","desktop:collect":"node scripts/collect-artifacts.js","desktop:package":"npm run icons && node tools/electron/run-forge.js package","preview:ink-lab":"node scripts/ink-lab-preview.cjs","build:playground":"node scripts/build-playground.cjs","check:playground":"node scripts/build-playground.cjs --check","desktop:make:mac":"npm run icons && node tools/electron/run-forge.js make --platform=darwin","build:architecture":"node scripts/build-architecture.js","check:architecture":"node scripts/build-architecture.js --check","desktop:make:windows":"npm run icons && node tools/electron/run-forge.js make --platform=win32","build:harness-backports":"node scripts/build-harness-backports.cjs","check:harness-backports":"node scripts/build-harness-backports.cjs --check","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"},"overrides":{"pptxgenjs":{"image-size":"2.0.4"}},"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.4","three":"0.184.0","mammoth":"1.12.1","nerdamer":"1.1.13","manim-web":"0.3.24","pdf-parse":"2.4.5","pptxgenjs":"4.0.0","@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,"devDependencies":{"elkjs":"0.12.0","esbuild":"0.25.12","png2icons":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/penecho_1.4.0_1791312760878_0.2739662361882784","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"penecho","version":"1.4.1","keywords":["canvas","handwriting","ai","whiteboard","math","visualization","productivity","agent"],"author":{"name":"PenEcho contributors"},"license":"AGPL-3.0-only","_id":"penecho@1.4.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":"1b0f9e1ba84987aa2ec4f6c4e06986b0a0023955","tarball":"https://registry.npmjs.org/penecho/-/penecho-1.4.1.tgz","fileCount":434,"integrity":"sha512-fXZ6sbWbzPtg15VG3bRNhjjiGOYbka+LofX1qCpWetQTEDriSB030bk8tkYOxDN0Xuc1l3AJGKdWvXNOgyfHSA==","signatures":[{"sig":"MEUCIQDL7dIc2CIjhwjp9Y1PM5yohNzdZ8tPqiLgs4OKKPmiyQIgTjfi6Hf5bqi4CHnXcipayuQE293aeYqcvpf144Odrmk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGcB++D/Fq/GVMLmDS05azANCj3ipbydcLw8SrKctGZeAiASvY3HKGEGrUH3qUHUPEjlDCdZOF9mnbuVUBQvSAUhNQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44873374},"main":"desktop/main.js","config":{"forge":"./forge.config.js","desktopVersion":"1.4.1"},"engines":{"node":">=22.19.0"},"gitHead":"4838df4cbc30f227f5b3b8c694e2b2e5b8ef069d","scripts":{"dev":"node server.js","test":"node --test test/*.test.js test/*.test.mjs","check":"npm run check:workflow && npm run check:sequence && npm run check:architecture && npm run check:harness-backports && npm run check:playground && npm run check:ink-lab && 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/canvas-preload.js && node --check desktop/cli-installer.js && node --check desktop/update-manager.js && node --check desktop/settings-contract.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/example-ink.js && node --check public/example-scenarios.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/smart-suggest.js && node --check public/pen-intel.js && node --check public/note-card.js && node --check public/scene-spec.js && node --check public/scene-runtime.js && node --check src/server/jevision.js && node --check scripts/jevision-probe.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/*.test.js test/*.test.mjs","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 && npm run build:architecture && npm run build:sequence && npm run build:workflow","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-canvas-command-prompt.cjs && npm run build:playground && npm run build:ink-lab && node scripts/build-client.js","check:client":"node scripts/build-canvas-command-prompt.cjs --check && 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","build:ink-lab":"node scripts/build-ink-lab.cjs","check:ink-lab":"node scripts/build-ink-lab.cjs --check","build:sequence":"node scripts/build-sequence.js","build:workflow":"node scripts/build-workflow.js","check:sequence":"node scripts/build-sequence.js --check","check:workflow":"node scripts/build-workflow.js --check","jevision:probe":"node scripts/jevision-probe.js","desktop:collect":"node scripts/collect-artifacts.js","desktop:package":"npm run icons && node tools/electron/run-forge.js package","preview:ink-lab":"node scripts/ink-lab-preview.cjs","build:playground":"node scripts/build-playground.cjs","check:playground":"node scripts/build-playground.cjs --check","desktop:make:mac":"npm run icons && node tools/electron/run-forge.js make --platform=darwin","build:architecture":"node scripts/build-architecture.js","check:architecture":"node scripts/build-architecture.js --check","desktop:make:windows":"npm run icons && node tools/electron/run-forge.js make --platform=win32","build:harness-backports":"node scripts/build-harness-backports.cjs","check:harness-backports":"node scripts/build-harness-backports.cjs --check","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"},"overrides":{"pptxgenjs":{"image-size":"2.0.4"}},"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.4","three":"0.184.0","mammoth":"1.12.1","nerdamer":"1.1.13","manim-web":"0.3.24","pdf-parse":"2.4.5","pptxgenjs":"4.0.0","@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,"devDependencies":{"elkjs":"0.12.0","esbuild":"0.25.12","png2icons":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/penecho_1.4.1_1791782259365_0.5461318611931323","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"_id":"penecho@1.4.2","bin":{"penecho":"cli.js"},"bugs":{"url":"https://github.com/penecho/penecho/issues"},"dist":{"shasum":"4a037c8a90ce3ddd050ed5afe7f9649516901850","tarball":"https://registry.npmjs.org/penecho/-/penecho-1.4.2.tgz","fileCount":434,"integrity":"sha512-j++u8flLimbtaEA8yqnldPLvqKgsB1NxFhP1McKH2snZOkE7zHUap4IZALh1fI+xF0yXcuJU+h1cUJ4I+meKNQ==","signatures":[{"sig":"MEUCIQCZAn+Jk4X7wztARSlueAso1fZ0B1MY7bD9KGVB6TWtCQIgKEX8h1ax9Gp4jd6hmIH6AgLR3zJcdNLuGqjLO/K/whg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIF9EEmPqyNk2iTahpJl6SVxgV3b61RaDXhzaSdBk/rQ5AiBCbPjYvJzG44LCMlIUOjW8Fbx0SXvdzhjmJCDjPQscGw=="}],"unpackedSize":44877834},"main":"desktop/main.js","name":"penecho","author":{"name":"PenEcho contributors"},"config":{"forge":"./forge.config.js","desktopVersion":"1.4.2"},"engines":{"node":">=22.19.0"},"gitHead":"b5850bd63f7c88f608c0fb7ef4c0430da4d6591b","license":"AGPL-3.0-only","scripts":{"dev":"node server.js","test":"node --test test/*.test.js test/*.test.mjs","check":"npm run check:workflow && npm run check:sequence && npm run check:architecture && npm run check:harness-backports && npm run check:playground && npm run check:ink-lab && 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/canvas-preload.js && node --check desktop/cli-installer.js && node --check desktop/update-manager.js && node --check desktop/settings-contract.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/example-ink.js && node --check public/example-scenarios.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/smart-suggest.js && node --check public/pen-intel.js && node --check public/note-card.js && node --check public/scene-spec.js && node --check public/scene-runtime.js && node --check src/server/jevision.js && node --check scripts/jevision-probe.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/*.test.js test/*.test.mjs","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 && npm run build:architecture && npm run build:sequence && npm run build:workflow","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-canvas-command-prompt.cjs && npm run build:playground && npm run build:ink-lab && node scripts/build-client.js","check:client":"node scripts/build-canvas-command-prompt.cjs --check && 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","build:ink-lab":"node scripts/build-ink-lab.cjs","check:ink-lab":"node scripts/build-ink-lab.cjs --check","build:sequence":"node scripts/build-sequence.js","build:workflow":"node scripts/build-workflow.js","check:sequence":"node scripts/build-sequence.js --check","check:workflow":"node scripts/build-workflow.js --check","jevision:probe":"node scripts/jevision-probe.js","desktop:collect":"node scripts/collect-artifacts.js","desktop:package":"npm run icons && node tools/electron/run-forge.js package","preview:ink-lab":"node scripts/ink-lab-preview.cjs","build:playground":"node scripts/build-playground.cjs","check:playground":"node scripts/build-playground.cjs --check","desktop:make:mac":"npm run icons && node tools/electron/run-forge.js make --platform=darwin","build:architecture":"node scripts/build-architecture.js","check:architecture":"node scripts/build-architecture.js --check","desktop:make:windows":"npm run icons && node tools/electron/run-forge.js make --platform=win32","build:harness-backports":"node scripts/build-harness-backports.cjs","check:harness-backports":"node scripts/build-harness-backports.cjs --check","build:visual-explainer-vendor":"node scripts/build-visual-explainer-vendor.js","check:visual-explainer-vendor":"node scripts/build-visual-explainer-vendor.js --check"},"version":"1.4.2","_npmUser":{"name":"erickong","email":"kongyang217@gmail.com"},"homepage":"https://github.com/penecho/penecho#readme","keywords":["canvas","handwriting","ai","whiteboard","math","visualization","productivity","agent"],"overrides":{"pptxgenjs":{"image-size":"2.0.4"}},"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":{},"maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"productName":"PenEcho","_nodeVersion":"26.8.1","dependencies":{"ws":"^8.21.3","diff":"9.0.0","jszip":"3.10.1","sharp":"0.35.4","three":"0.184.0","mammoth":"1.12.1","nerdamer":"1.1.13","manim-web":"0.3.24","pdf-parse":"2.4.5","pptxgenjs":"4.0.0","@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,"devDependencies":{"elkjs":"0.12.0","esbuild":"0.25.12","png2icons":"2.0.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/penecho_1.4.2_1791807483141_0.7636731695035146"}}},"time":{"created":"2026-07-15T15:05:46.488Z","modified":"2026-10-12T12:18:03.694Z","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","1.3.0":"2026-09-13T16:51:07.559Z","1.3.1":"2026-09-13T17:52:56.640Z","1.3.2":"2026-09-15T15:52:05.052Z","1.3.3":"2026-09-19T19:24:32.152Z","1.3.4":"2026-09-25T18:53:26.513Z","1.3.5":"2026-09-26T02:50:42.762Z","1.4.0":"2026-10-06T18:52:41.149Z","1.4.1":"2026-10-12T05:17:39.624Z","1.4.2":"2026-10-12T12:18:03.463Z"},"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":{"url":"git+https://github.com/penecho/penecho.git","type":"git"},"description":"Turn research, files, and canvas context into editable visual work with AI","maintainers":[{"name":"erickong","email":"kongyang217@gmail.com"}],"readme":"<p align=\"center\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"public/penecho-readme-header-dark.webp\">\n    <img src=\"public/penecho-readme-header.webp\" alt=\"PenEcho\" width=\"320\">\n  </picture>\n</p>\n\n<h1 align=\"center\">AI that shows, not just tells.</h1>\n\n<p align=\"center\">Bring a question, a sketch, or your notes. PenEcho's built-in AI — or Codex, Claude Code and any MCP client — shows you the answer as diagrams, documents and working widgets, right beside your work.</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/penecho/penecho/releases/latest\"><img src=\"https://img.shields.io/badge/release-v1.4.2-087f83\" alt=\"Release v1.4.2\"></a>\n  <a href=\"https://www.npmjs.com/package/penecho\"><img src=\"https://img.shields.io/badge/npm-penecho-cb3837\" alt=\"npm penecho\"></a>\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/license-AGPL--3.0-blue\" alt=\"AGPL-3.0-only\"></a>\n  <a href=\"https://discord.gg/3jrPJ3mXdX\"><img src=\"https://img.shields.io/badge/discord-join-5865f2\" alt=\"Join Discord\"></a>\n  <a href=\"docs/mcp-setup.md\"><img src=\"https://img.shields.io/badge/MCP-ready-6f42c1\" alt=\"MCP ready\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/penecho/penecho/releases/latest\"><img src=\"https://img.shields.io/badge/DOWNLOAD_FOR_MACOS-24292f?style=for-the-badge&amp;logo=apple&amp;logoColor=white\" alt=\"Download for macOS\"></a>\n  <a href=\"https://github.com/penecho/penecho/releases/latest\"><img src=\"https://img.shields.io/badge/DOWNLOAD_FOR_WINDOWS-0969da?style=for-the-badge&amp;logo=windows&amp;logoColor=white\" alt=\"Download for Windows\"></a>\n  <a href=\"https://penecho.ai\"><img src=\"https://img.shields.io/badge/OPEN_PENECHO.AI-087f83?style=for-the-badge&amp;logo=googlechrome&amp;logoColor=white\" alt=\"Open penecho.ai\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"#new-in-1-4\">What's new in 1.4</a> ·\n  <a href=\"#quick-start\">Quick start</a> ·\n  <a href=\"#connect-your-ai-agent-mcp\">Connect your AI (MCP)</a> ·\n  <a href=\"docs/\">Docs</a> ·\n  <a href=\"https://discord.gg/3jrPJ3mXdX\">Discord</a>\n</p>\n\n<p align=\"center\">\n  <sub><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</a> ·\n  <a href=\"docs/readme/README.fr.md\">Français</a> ·\n  <a href=\"docs/readme/README.de.md\">Deutsch</a></sub>\n</p>\n\n<p align=\"center\">\n  <img src=\"https://github.com/penecho/penecho/releases/download/v0.1.0/penecho_full_demo.webp\" alt=\"From a hand sketch to a diagram and working widget on one PenEcho canvas\" width=\"100%\">\n</p>\n<p align=\"center\"><em>From a hand sketch to an interactive result in one canvas.</em></p>\n\n<a name=\"new-in-1-4\"></a>\n\n## New in 1.4: it knows what you need\n\n<p align=\"center\">\n  <a href=\"https://penecho.ai/#knows-you\"><img src=\"https://github.com/penecho/penecho/releases/download/v0.1.0/penecho_knowsyou.webp\" alt=\"Watch the PenEcho 1.4 tour (2:30)\" width=\"100%\"></a>\n</p>\n<p align=\"center\"><a href=\"https://penecho.ai/#knows-you\"><strong>▶ Watch with sound and chapters</strong></a> · <a href=\"https://github.com/penecho/penecho/releases/download/v0.1.0/penecho_knowsyou.mp4\">Download MP4</a><br><sub>Smart Assist · PenEchoLLM · Notes &amp; Cards · live graphs · simulations · 3D</sub></p>\n\n<table width=\"100%\">\n  <tr>\n    <td width=\"50%\" valign=\"top\">\n      <a href=\"https://penecho.ai/?t=16#knows-you\"><img src=\"docs/assets/release-1.4/penechollm-suggest.webp\" alt=\"PenEchoLLM suggests Solve for a handwritten integral; one tap and the answer lands in place\" width=\"100%\"></a><br>\n      <strong>PenEchoLLM suggests the next step</strong><br>\n      Pause after writing and PenEchoLLM ranks what you need next: Solve, Typeset, Plot graph, Make diagram, Organize as Note and more. One tap and the answer lands where you wrote, with the next step already suggested. It learns from the suggestions you choose, on your device. Free to try every day, no API key needed.\n    </td>\n    <td width=\"50%\" valign=\"top\">\n      <a href=\"https://penecho.ai/?t=43#knows-you\"><img src=\"docs/assets/release-1.4/notes-cards.webp\" alt=\"Handwritten notes circled on the canvas become a knowledge card, then appear in the searchable Library\" width=\"100%\"></a><br>\n      <strong>Notes &amp; Cards keep what matters</strong><br>\n      Circle a formula, sketch or answer and keep it as a knowledge card or work note, with your original handwriting. Cards are categorized automatically and collected in the Library, where you can search, bookmark, review and bring them into any canvas.\n    </td>\n  </tr>\n</table>\n\n## What you can do\n\n<table width=\"100%\">\n  <tr>\n    <td width=\"33%\" valign=\"top\">\n      <img src=\"https://github.com/penecho/penecho/releases/download/v0.1.0/penecho_plugins_sub_x10.webp\" alt=\"PenEcho responding to notes and sketches on a canvas\" width=\"100%\"><br>\n      <strong>Sketch, then ask</strong><br>\n      Handwriting, equations, text and images on an endless canvas. PenEchoLLM suggests the next step when you pause.\n    </td>\n    <td width=\"33%\" valign=\"top\">\n      <a href=\"docs/assets/professional-diagrams/kubernetes.webp\"><img src=\"docs/assets/professional-diagrams/previews/kubernetes.webp\" alt=\"Kubernetes architecture diagram\" width=\"100%\"></a><br>\n      <strong>Professional diagrams</strong><br>\n      Architecture, sequence and workflow diagrams with automatic layout. Export SVG or PNG.\n    </td>\n    <td width=\"33%\" valign=\"top\">\n      <img src=\"https://github.com/penecho/penecho/releases/download/v0.1.0/play_patris.webp\" alt=\"Interactive widget running on a PenEcho canvas\" width=\"100%\"><br>\n      <strong>Working widgets</strong><br>\n      Calculators, quizzes and prototypes that run on the canvas and can be favourited or shared.\n    </td>\n  </tr>\n</table>\n\n## Quick start\n\n| | Get started |\n| --- | --- |\n| **Desktop app** | macOS and Windows from [GitHub Releases](https://github.com/penecho/penecho/releases/latest). Includes everything, updates itself. |\n| **npm** | Node.js 22.19+. Run `npm i -g penecho` then `penecho` and open `localhost:3888`. |\n| **Browser** | Sign in at [penecho.ai](https://penecho.ai) for hosted models and Cloud canvases. Nothing to install. |\n\n```bash\nnpm install -g penecho\npenecho             # opens http://localhost:3888\n```\n\n> [!TIP]\n> On first start, choose a six-digit access code (or open access on a trusted network). Add a model in **Settings → AI & connections**: your own API key, a signed-in Codex / Claude Code / Kimi CLI, or PenEcho models.\n\n<details>\n<summary>Run from source</summary>\n\n```bash\ngit clone https://github.com/penecho/penecho.git\ncd penecho\nnpm install\nnpm start\n```\n\n</details>\n\n## Connect your AI agent (MCP)\n\nKeep talking in the agent you already use. PenEcho gives the work a place to live — your agent draws on the canvas, you mark it up, and it reads your feedback on the next turn.\n\n1. In PenEcho, open **Settings → MCP service** and turn on the current canvas.\n2. Use **Auto configure** for a supported client, or copy the generated setup prompt into your client (Codex, Claude Code, Kimi, Cursor...). For a global npm installation, clients that accept `mcpServers` JSON can also use the compatibility entry below:\n\n   ```json\n   {\n     \"mcpServers\": {\n       \"penecho\": { \"command\": \"penecho\", \"args\": [\"mcp\"] }\n     }\n   }\n   ```\n\n3. Ask: *“Show the architecture we discussed on my PenEcho canvas.”*\n\n### Cloud Canvas beside your chat: one paste, no install\n\nPaste this into Claude Code, Codex, Cursor or another MCP agent:\n\n```text\nSet up PenEcho Canvas for me:\n1. Download https://penecho.ai/downloads/penecho-cloud-plugin.zip, unzip it, and follow its INSTALL.md for the app you are running in.\n2. Add the PenEcho MCP server https://penecho.ai/mcp. If it needs authorization, open the authorization page once; I'll choose \"Continue as guest\".\n3. Confirm the PenEcho tools respond, then tell me it's ready.\nFrom now on, when I ask you to draw, diagram or show something on a canvas, use PenEcho and open the canvas beside our chat.\n```\n\nThen just ask:\n\n- *“Draw this project's architecture on the canvas.”*\n- *“Turn our login flow into a sequence diagram on the canvas.”*\n- *“Make an interactive binary-search demo on the canvas.”*\n- *“Read my handwritten notes on the canvas and revise the diagram.”*\n\nThe canvas opens beside your chat: in Codex's right panel, the Claude desktop browser pane, or your default browser. No account is needed; choose **Continue as guest** if asked. Sign in only when you want to save to Cloud. MCP uses no PenEcho credits. Claude Chat and Cowork install through the app's own plugin upload or connector settings ([`.plugin` file](integrations/penecho-cloud/penecho-cloud.plugin)). See [installation details](integrations/penecho-cloud/INSTALL.md).\n\n<p align=\"center\">\n  <a href=\"docs/assets/mcp-spatial-example.webp\"><img src=\"docs/assets/mcp-spatial-example.webp\" alt=\"An architecture discussion from Claude Code with handwritten annotations on a PenEcho canvas\" width=\"760\"></a>\n</p>\n<p align=\"center\"><em>An architecture discussion from Claude Code, annotated by hand on the canvas.</em></p>\n\n> [!NOTE]\n> Agents only see canvases you turn on. Local MCP stays on your computer; Cloud MCP uses separate OAuth authorization and supports guest browser drafts. [MCP guide →](docs/mcp-setup.md)\n\n## Diagram gallery\n\n<table width=\"100%\">\n  <tr>\n    <td width=\"33%\" valign=\"top\"><a href=\"docs/assets/professional-diagrams/kubernetes.webp\"><img src=\"docs/assets/professional-diagrams/previews/kubernetes.webp\" alt=\"Kubernetes cluster diagram\" width=\"100%\"></a><br><strong>Kubernetes cluster</strong></td>\n    <td width=\"33%\" valign=\"top\"><a href=\"docs/assets/professional-diagrams/migration.webp\"><img src=\"docs/assets/professional-diagrams/previews/migration.webp\" alt=\"Monolith to microservices diagram\" width=\"100%\"></a><br><strong>Monolith → microservices</strong></td>\n    <td width=\"33%\" valign=\"top\"><a href=\"docs/assets/professional-diagrams/notifications.webp\"><img src=\"docs/assets/professional-diagrams/previews/notifications.webp\" alt=\"Event-driven notifications diagram\" width=\"100%\"></a><br><strong>Event-driven notifications</strong></td>\n  </tr>\n  <tr>\n    <td valign=\"top\"><a href=\"docs/assets/professional-diagrams/mcp-request.webp\"><img src=\"docs/assets/professional-diagrams/previews/mcp-request.webp\" alt=\"How MCP reaches the canvas diagram\" width=\"100%\"></a><br><strong>How MCP reaches the canvas</strong></td>\n    <td valign=\"top\"><a href=\"docs/assets/professional-diagrams/release.webp\"><img src=\"docs/assets/professional-diagrams/previews/release.webp\" alt=\"Release parallel tasks diagram\" width=\"100%\"></a><br><strong>Release: parallel tasks</strong></td>\n    <td valign=\"top\"><a href=\"docs/assets/professional-diagrams/rollout.webp\"><img src=\"docs/assets/professional-diagrams/previews/rollout.webp\" alt=\"Multi-region rollout diagram\" width=\"100%\"></a><br><strong>Multi-region rollout</strong></td>\n  </tr>\n</table>\n\n<p align=\"center\"><sub>Click any diagram for the full-size version.</sub></p>\n\n## How it works\n\n<p align=\"center\"><img src=\"public/penecho-architecture.webp\" alt=\"A browser connects to PenEcho Cloud or your local PC. An AI agent can connect through optional Cloud MCP or Local MCP.\" width=\"100%\"></p>\n\n- **On your computer** — the desktop app or CLI serves the canvas and uses your own model API or agent CLI.\n- **In the cloud** — penecho.ai adds hosted models, synced projects and favorites, and can reach your linked computer.\n- **Your agent** — connects through Local or Cloud MCP. Both are optional.\n\nDetails: [architecture notes](docs/architecture.md).\n\n## Choose your AI\n\n| Connection | Cost | Best for |\n| --- | --- | --- |\n| **PenEcho models** — sign in, pick a model | Account credits | Getting started, no keys |\n| **Your model API** — OpenAI- or Anthropic-compatible | Your provider | Full control of model and cost |\n| **Your CLI** — Codex, Claude Code or Kimi, signed in | Your plan | Reusing a subscription you have |\n\nWhich model and effort to pick: [recommended models](#recommended-models) (updated with each release).\n\n<a name=\"recommended-models\"></a>\n<details>\n<summary>Recommended models</summary>\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 | Notes | 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 | Everyday canvas work |\n| Claude Opus 4.8 / 5.0 (`claude-opus-4-8` / `claude-opus-5-0`) | `high` | Higher reasoning quality, longer and more variable waits | Complex handwriting, mathematics, diagrams, or layout |\n| Fable 5 (`claude-fable-5` or `fable`) | `medium` | Often around half the response time of `gpt-5.6-sol` at `xhigh` | Fast, high-quality general use |\n| [Kimi K3](https://platform.kimi.ai?aff=penecho) (`kimi-k3`) | `medium` | Very good quality; `medium` keeps the balance practical | Recommended Kimi default |\n| `gpt-5.6-terra` | `low` to `high` | Surprisingly strong and responsive | Flexible quality and latency targets |\n| `gpt-5.6-luna` | `xhigh` | Very good canvas results with strong speed | Quality-first, still responsive |\n| `gpt-5.6-sol` | `high` | Good enough for most requests, more responsive than `xhigh` | Default when responsiveness matters |\n| `gpt-5.6-sol` | `xhigh` | Very good but slower and more variable | Difficult canvas tasks |\n| `deepseek-v4-flash-vision-exp` | `medium` | Good | Vision-capable work through the DeepSeek API |\n| `glm-5.3-flash` | `medium` | Good | Fast work through the GLM Anthropic-compatible API |\n\n</details>\n\n## What's new in 1.4.0\n\n- **Smart Assist with PenEchoLLM:** context-aware actions for handwriting, text and images, ranked by PenEchoLLM, with quick answers, visual creation and follow-up questions.\n- **Lasso AI:** circle any part of the canvas to solve, visualize, animate or organize just the selected content.\n- **Notes & Cards:** turn canvas content into reusable notes and knowledge cards; browse, search and bring them into other canvases.\n- **Widget refinement:** refine results through written feedback and contextual actions, with clearer controls and better content fitting.\n- **Canvas polish:** improved pen gestures, stroke deletion, navigation and collaboration with Agent and MCP.\n\n[Watch the 1.4 tour →](https://penecho.ai/#knows-you) · [Full changelog →](CHANGELOG.md#140)\n\n## Community\n\n| [Discord](https://discord.gg/3jrPJ3mXdX) | [Discussions](https://github.com/penecho/penecho/discussions) | [Issues](https://github.com/penecho/penecho/issues) | [Contributing](CONTRIBUTING.md) |\n| --- | --- | --- | --- |\n| Chat with the team | Ideas and questions | Report a bug | Run `npm run check` first |\n\nLicensed under [AGPL-3.0-only](LICENSE); [commercial licence](COMMERCIAL-LICENSE.md) available. [Trademark policy](TRADEMARKS.md) · [Contributor agreement](CONTRIBUTOR-LICENSE-AGREEMENT.md).\n\nDiagram renderers adapt SVG and geometry helpers from [Archify](https://github.com/tt-a1i/archify) by tt-a1i (MIT). See [NOTICE](NOTICE).\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 src=\"docs/assets/kimi-open-source-friends-light.svg\" alt=\"Kimi Open Source Friends\" width=\"326\" height=\"56\">\n    </picture>\n  </a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.star-history.com/?repos=penecho%2Fpenecho&amp;type=date&amp;legend=top-left\">\n    <picture>\n      <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/chart?repos=penecho/penecho&amp;type=date&amp;theme=dark&amp;legend=top-left\">\n      <img src=\"https://api.star-history.com/chart?repos=penecho/penecho&amp;type=date&amp;legend=top-left\" alt=\"PenEcho GitHub star history chart\" width=\"800\">\n    </picture>\n  </a>\n</p>\n","readmeFilename":"README.md"}