{"_id":"@dongzijie1/nova","_rev":"11-76a32c58a7cd4ffb6f385180468ec863","name":"@dongzijie1/nova","dist-tags":{"latest":"1.5.0"},"versions":{"0.84.0":{"name":"@dongzijie1/nova","version":"0.84.0","keywords":["coding-agent","ai","llm","cli","tui","agent"],"author":{"name":"Mario Zechner"},"license":"MIT","_id":"@dongzijie1/nova@0.84.0","maintainers":[{"name":"dongzijie1","email":"ddong1180@gmail.com"}],"homepage":"https://github.com/earendil-works/pi#readme","bugs":{"url":"https://github.com/earendil-works/pi/issues"},"bin":{"nova":"dist/cli.js"},"dist":{"shasum":"1f09dbec8069590b9358e0b464622abf165c7209","tarball":"https://registry.npmjs.org/@dongzijie1/nova/-/nova-0.84.0.tgz","fileCount":884,"integrity":"sha512-ofInM69FQqLTow7jjbeBp36WFhekzNgWidK2SCJlvEvcVH7nz6UXYU1gBji5A0rH7Xbv+hKhMld6+TDNgO+0Og==","signatures":[{"sig":"MEYCIQDuEoACvDbhgqxswBX7/MD9AVCewMfdtXPv389Yr5GZFwIhALtC+2FKMd73iAOEGP7w3wozU6UyN2tPpNf5XIwUhWqv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13052528},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./rpc-entry":{"import":"./dist/rpc-entry.js"}},"gitHead":"b5457cd5885442990da1bad7aec87f5e8a89eaa1","scripts":{"test":"vitest --run","build":"tsgo -p tsconfig.build.json && shx chmod +x dist/cli.js dist/rpc-entry.js && npm run copy-assets","clean":"shx rm -rf dist","shrinkwrap":"node ../../scripts/generate-coding-agent-shrinkwrap.mjs","copy-assets":"shx mkdir -p dist/modes/interactive/theme && shx cp src/modes/interactive/theme/*.json dist/modes/interactive/theme/ && shx mkdir -p dist/modes/interactive/assets && shx cp src/modes/interactive/assets/*.png dist/modes/interactive/assets/ && shx mkdir -p dist/core/export-html/vendor && shx cp src/core/export-html/template.html src/core/export-html/template.css src/core/export-html/template.js dist/core/export-html/ && shx cp src/core/export-html/vendor/*.js dist/core/export-html/vendor/","build:binary":"npm --prefix ../tui run build && npm --prefix ../ai run build && npm --prefix ../agent run build && npm run build && bun build --compile ./dist/bun/cli.js ./src/utils/image-resize-worker.ts --outfile dist/pi && npm run copy-binary-assets","prepublishOnly":"npm run clean && npm run build && npm run shrinkwrap","copy-binary-assets":"shx cp package.json dist/ && shx cp README.md dist/ && shx cp CHANGELOG.md dist/ && shx mkdir -p dist/theme && shx cp src/modes/interactive/theme/*.json dist/theme/ && shx mkdir -p dist/assets && shx cp src/modes/interactive/assets/*.png dist/assets/ && shx mkdir -p dist/export-html/vendor && shx cp src/core/export-html/template.html dist/export-html/ && shx cp src/core/export-html/vendor/*.js dist/export-html/vendor/ && shx cp -r docs dist/ && shx cp -r examples dist/ && shx cp ../../node_modules/@silvia-odwyer/photon-node/photon_rs_bg.wasm dist/"},"_npmUser":{"name":"dongzijie1","email":"ddong1180@gmail.com"},"piConfig":{"name":"nova","configDir":".pi"},"overrides":{"gaxios":{"rimraf":"6.1.2"},"rimraf":"6.1.2","protobufjs":"7.6.5"},"repository":{"url":"git+https://github.com/earendil-works/pi.git","type":"git","directory":"packages/coding-agent"},"_npmVersion":"11.12.1","description":"Nova - AI coding agent with read, bash, edit, write tools and session management","directories":{},"_nodeVersion":"26.0.0","dependencies":{"diff":"8.0.4","glob":"13.0.6","jiti":"2.7.0","yaml":"2.9.0","chalk":"5.6.2","ignore":"7.0.5","semver":"7.8.0","undici":"8.5.0","typebox":"1.1.38","minimatch":"10.2.5","cross-spawn":"7.0.6","highlight.js":"10.7.3","hosted-git-info":"9.0.3","proper-lockfile":"4.1.2","@dongzijie1/pi-ai":"^0.83.0","@dongzijie1/pi-tui":"^0.83.0","@dongzijie1/pi-agent-core":"^0.83.0","@silvia-odwyer/photon-node":"0.3.4"},"_hasShrinkwrap":true,"devDependencies":{"shx":"0.4.0","vitest":"4.1.9","@types/ms":"2.1.0","typescript":"5.9.3","@types/diff":"7.0.2","@types/node":"24.12.4","@types/semver":"7.7.1","@types/cross-spawn":"6.0.6","@types/hosted-git-info":"3.0.5","@types/proper-lockfile":"4.1.4"},"optionalDependencies":{"@mariozechner/clipboard":"0.3.9"},"_npmOperationalInternal":{"tmp":"tmp/nova_0.84.0_1785141574695_0.044563768086204325","host":"s3://npm-registry-packages-npm-production"}},"0.85.0":{"name":"@dongzijie1/nova","version":"0.85.0","keywords":["nova","ai","llm","cli","tui","agent"],"author":{"name":"Mario Zechner"},"license":"MIT","_id":"@dongzijie1/nova@0.85.0","maintainers":[{"name":"dongzijie1","email":"ddong1180@gmail.com"}],"homepage":"https://github.com/earendil-works/pi#readme","bugs":{"url":"https://github.com/earendil-works/pi/issues"},"bin":{"nova":"dist/cli.js"},"dist":{"shasum":"2629c88def4898f745353bfa7a3f30e66df053e9","tarball":"https://registry.npmjs.org/@dongzijie1/nova/-/nova-0.85.0.tgz","fileCount":884,"integrity":"sha512-bhFv4fmxvCFRRAUsLwhsm9REU/i9bMpqUccQGOUxGQBW1P0KC38u3AEnpeQsQLlrdvQDykCtAPlyMSH+mj9Vcg==","signatures":[{"sig":"MEUCIQD/j8YmIrndZqn1tGGUfV0xifLhV8lNKpWfojQ+ToXQwAIgRfheOrJPR5QDhC5yX7Tta0h7t+BhupCQQ/okWGgtaGg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13050799},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./rpc-entry":{"import":"./dist/rpc-entry.js"}},"gitHead":"acdcb722f9b3854a4d7185bf5dee6ad0bbdf02fc","scripts":{"test":"vitest --run","build":"tsgo -p tsconfig.build.json && shx chmod +x dist/cli.js dist/rpc-entry.js && npm run copy-assets","clean":"shx rm -rf dist","shrinkwrap":"node ../../scripts/generate-nova-shrinkwrap.mjs","copy-assets":"shx mkdir -p dist/modes/interactive/theme && shx cp src/modes/interactive/theme/*.json dist/modes/interactive/theme/ && shx mkdir -p dist/modes/interactive/assets && shx cp src/modes/interactive/assets/*.png dist/modes/interactive/assets/ && shx mkdir -p dist/core/export-html/vendor && shx cp src/core/export-html/template.html src/core/export-html/template.css src/core/export-html/template.js dist/core/export-html/ && shx cp src/core/export-html/vendor/*.js dist/core/export-html/vendor/","build:binary":"npm --prefix ../tui run build && npm --prefix ../ai run build && npm --prefix ../agent run build && npm run build && bun build --compile ./dist/bun/cli.js ./src/utils/image-resize-worker.ts --outfile dist/pi && npm run copy-binary-assets","prepublishOnly":"npm run clean && npm run build && npm run shrinkwrap","copy-binary-assets":"shx cp package.json dist/ && shx cp README.md dist/ && shx cp CHANGELOG.md dist/ && shx mkdir -p dist/theme && shx cp src/modes/interactive/theme/*.json dist/theme/ && shx mkdir -p dist/assets && shx cp src/modes/interactive/assets/*.png dist/assets/ && shx mkdir -p dist/export-html/vendor && shx cp src/core/export-html/template.html dist/export-html/ && shx cp src/core/export-html/vendor/*.js dist/export-html/vendor/ && shx cp -r docs dist/ && shx cp -r examples dist/ && shx cp ../../node_modules/@silvia-odwyer/photon-node/photon_rs_bg.wasm dist/"},"_npmUser":{"name":"dongzijie1","email":"ddong1180@gmail.com"},"overrides":{"gaxios":{"rimraf":"6.1.2"},"rimraf":"6.1.2","protobufjs":"7.6.5"},"novaConfig":{"name":"nova","configDir":".nova"},"repository":{"url":"git+https://github.com/earendil-works/pi.git","type":"git","directory":"packages/nova"},"_npmVersion":"11.12.1","description":"Nova - AI coding agent with read, bash, edit, write tools and session management","directories":{},"_nodeVersion":"26.0.0","dependencies":{"diff":"8.0.4","glob":"13.0.6","jiti":"2.7.0","yaml":"2.9.0","chalk":"5.6.2","ignore":"7.0.5","semver":"7.8.0","undici":"8.5.0","typebox":"1.1.38","minimatch":"10.2.5","cross-spawn":"7.0.6","highlight.js":"10.7.3","hosted-git-info":"9.0.3","proper-lockfile":"4.1.2","@dongzijie1/pi-ai":"^0.85.0","@dongzijie1/pi-tui":"^0.85.0","@dongzijie1/pi-agent-core":"^0.85.0","@silvia-odwyer/photon-node":"0.3.4"},"_hasShrinkwrap":true,"devDependencies":{"shx":"0.4.0","vitest":"4.1.9","@types/ms":"2.1.0","typescript":"5.9.3","@types/diff":"7.0.2","@types/node":"24.12.4","@types/semver":"7.7.1","@types/cross-spawn":"6.0.6","@types/hosted-git-info":"3.0.5","@types/proper-lockfile":"4.1.4"},"optionalDependencies":{"@mariozechner/clipboard":"0.3.9"},"_npmOperationalInternal":{"tmp":"tmp/nova_0.85.0_1785312238726_0.29715795358276464","host":"s3://npm-registry-packages-npm-production"}},"0.86.0":{"name":"@dongzijie1/nova","version":"0.86.0","keywords":["nova","ai","llm","cli","tui","agent"],"author":{"name":"Mario Zechner"},"license":"MIT","_id":"@dongzijie1/nova@0.86.0","maintainers":[{"name":"dongzijie1","email":"ddong1180@gmail.com"}],"homepage":"https://github.com/earendil-works/pi#readme","bugs":{"url":"https://github.com/earendil-works/pi/issues"},"bin":{"nova":"dist/cli.js"},"dist":{"shasum":"711117c04a288503878a5038207092ea4c96bc0f","tarball":"https://registry.npmjs.org/@dongzijie1/nova/-/nova-0.86.0.tgz","fileCount":889,"integrity":"sha512-QOrxA8QFtptUoi1Z1e7QU2eCs4UH+EtGVSXOGqIdm9Ozn8d3N8QvsQMa15M3BV9iNWMLMXZF/WTHJIEUtHUL7g==","signatures":[{"sig":"MEQCIC+R3MIIbkOHWojkVfK7Fp0UTRJ4mI55JI/fxqDz0vWsAiAJ1DOs4dRNKlyNZ+KCMaoCoBrqAfBONhpGypWd8BuKEw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89252011},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./rpc-entry":{"import":"./dist/rpc-entry.js"}},"gitHead":"34da954b55c816f2e423407ffe66a0782103e328","scripts":{"test":"vitest --run","build":"tsgo -p tsconfig.build.json && shx chmod +x dist/cli.js dist/rpc-entry.js && npm run copy-assets","clean":"shx rm -rf dist","shrinkwrap":"node ../../scripts/generate-nova-shrinkwrap.mjs","copy-assets":"shx mkdir -p dist/modes/interactive/theme && shx cp src/modes/interactive/theme/*.json dist/modes/interactive/theme/ && shx mkdir -p dist/modes/interactive/assets && shx cp src/modes/interactive/assets/*.png dist/modes/interactive/assets/ && shx mkdir -p dist/core/export-html/vendor && shx cp src/core/export-html/template.html src/core/export-html/template.css src/core/export-html/template.js dist/core/export-html/ && shx cp src/core/export-html/vendor/*.js dist/core/export-html/vendor/","build:binary":"npm --prefix ../tui run build && npm --prefix ../ai run build && npm --prefix ../agent run build && npm run build && bun build --compile ./dist/bun/cli.js ./src/utils/image-resize-worker.ts --outfile dist/pi && npm run copy-binary-assets","prepublishOnly":"npm run clean && npm run build && npm run shrinkwrap","copy-binary-assets":"shx cp package.json dist/ && shx cp README.md dist/ && shx cp CHANGELOG.md dist/ && shx mkdir -p dist/theme && shx cp src/modes/interactive/theme/*.json dist/theme/ && shx mkdir -p dist/assets && shx cp src/modes/interactive/assets/*.png dist/assets/ && shx mkdir -p dist/export-html/vendor && shx cp src/core/export-html/template.html dist/export-html/ && shx cp src/core/export-html/vendor/*.js dist/export-html/vendor/ && shx cp -r docs dist/ && shx cp -r examples dist/ && shx cp ../../node_modules/@silvia-odwyer/photon-node/photon_rs_bg.wasm dist/"},"_npmUser":{"name":"dongzijie1","email":"ddong1180@gmail.com"},"overrides":{"gaxios":{"rimraf":"6.1.2"},"rimraf":"6.1.2","protobufjs":"7.6.5"},"novaConfig":{"name":"nova","configDir":".nova"},"repository":{"url":"git+https://github.com/earendil-works/pi.git","type":"git","directory":"packages/nova"},"_npmVersion":"11.12.1","description":"Nova - AI coding agent with read, bash, edit, write tools and session management","directories":{},"_nodeVersion":"26.0.0","dependencies":{"diff":"8.0.4","glob":"13.0.6","jiti":"2.7.0","yaml":"2.9.0","chalk":"5.6.2","ignore":"7.0.5","semver":"7.8.0","undici":"8.5.0","typebox":"1.1.38","minimatch":"10.2.5","cross-spawn":"7.0.6","highlight.js":"10.7.3","hosted-git-info":"9.0.3","proper-lockfile":"4.1.2","@dongzijie1/pi-ai":"0.86.0","@dongzijie1/pi-tui":"0.86.0","@dongzijie1/pi-agent-core":"0.86.0","@silvia-odwyer/photon-node":"0.3.4"},"_hasShrinkwrap":true,"devDependencies":{"shx":"0.4.0","vitest":"4.1.9","@types/ms":"2.1.0","typescript":"5.9.3","@types/diff":"7.0.2","@types/node":"24.12.4","@types/semver":"7.7.1","@types/cross-spawn":"6.0.6","@types/hosted-git-info":"3.0.5","@types/proper-lockfile":"4.1.4"},"optionalDependencies":{"@mariozechner/clipboard":"0.3.9"},"_npmOperationalInternal":{"tmp":"tmp/nova_0.86.0_1785601024327_0.1854626368121357","host":"s3://npm-registry-packages-npm-production"}},"0.86.1":{"name":"@dongzijie1/nova","version":"0.86.1","keywords":["nova","ai","llm","cli","tui","agent"],"author":{"name":"Mario Zechner"},"license":"MIT","_id":"@dongzijie1/nova@0.86.1","maintainers":[{"name":"dongzijie1","email":"ddong1180@gmail.com"}],"homepage":"https://github.com/earendil-works/pi#readme","bugs":{"url":"https://github.com/earendil-works/pi/issues"},"bin":{"nova":"dist/cli.js"},"dist":{"shasum":"f45633b1394576bc1180cc86846d36bfa64d62ce","tarball":"https://registry.npmjs.org/@dongzijie1/nova/-/nova-0.86.1.tgz","fileCount":889,"integrity":"sha512-IbTkDgT9i0vH3GvQtJnqB9+rKXE/TcnzIw1eovqEngw5o0nSXyDudcQ1R3mWFnpwR41vSgFKMzBWbsB7JflJHQ==","signatures":[{"sig":"MEUCIEKv9nuCEWgpVFVNTRZ1419i1I9Hv/8Kt7MF0pMzqyz4AiEA6DOLyzRTk6hTajvTUj3RZ09DbDPhmIAGg6CO2JpYdxY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89252343},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./rpc-entry":{"import":"./dist/rpc-entry.js"}},"gitHead":"7ff24402e1aa1b93b24e3539b106476ac59f1ff8","scripts":{"test":"vitest --run","build":"tsgo -p tsconfig.build.json && shx chmod +x dist/cli.js dist/rpc-entry.js && npm run copy-assets","clean":"shx rm -rf dist","shrinkwrap":"node ../../scripts/generate-nova-shrinkwrap.mjs","copy-assets":"shx mkdir -p dist/modes/interactive/theme && shx cp src/modes/interactive/theme/*.json dist/modes/interactive/theme/ && shx mkdir -p dist/modes/interactive/assets && shx cp src/modes/interactive/assets/*.png dist/modes/interactive/assets/ && shx mkdir -p dist/core/export-html/vendor && shx cp src/core/export-html/template.html src/core/export-html/template.css src/core/export-html/template.js dist/core/export-html/ && shx cp src/core/export-html/vendor/*.js dist/core/export-html/vendor/","build:binary":"npm --prefix ../tui run build && npm --prefix ../ai run build && npm --prefix ../agent run build && npm run build && bun build --compile ./dist/bun/cli.js ./src/utils/image-resize-worker.ts --outfile dist/pi && npm run copy-binary-assets","prepublishOnly":"npm run clean && npm run build && npm run shrinkwrap","copy-binary-assets":"shx cp package.json dist/ && shx cp README.md dist/ && shx cp CHANGELOG.md dist/ && shx mkdir -p dist/theme && shx cp src/modes/interactive/theme/*.json dist/theme/ && shx mkdir -p dist/assets && shx cp src/modes/interactive/assets/*.png dist/assets/ && shx mkdir -p dist/export-html/vendor && shx cp src/core/export-html/template.html dist/export-html/ && shx cp src/core/export-html/vendor/*.js dist/export-html/vendor/ && shx cp -r docs dist/ && shx cp -r examples dist/ && shx cp ../../node_modules/@silvia-odwyer/photon-node/photon_rs_bg.wasm dist/"},"_npmUser":{"name":"dongzijie1","email":"ddong1180@gmail.com"},"overrides":{"gaxios":{"rimraf":"6.1.2"},"rimraf":"6.1.2","protobufjs":"7.6.5"},"novaConfig":{"name":"nova","configDir":".nova"},"repository":{"url":"git+https://github.com/earendil-works/pi.git","type":"git","directory":"packages/nova"},"_npmVersion":"11.12.1","description":"Nova - AI coding agent with read, bash, edit, write tools and session management","directories":{},"_nodeVersion":"26.0.0","dependencies":{"diff":"8.0.4","glob":"13.0.6","jiti":"2.7.0","yaml":"2.9.0","chalk":"5.6.2","ignore":"7.0.5","semver":"7.8.0","undici":"8.5.0","typebox":"1.1.38","minimatch":"10.2.5","cross-spawn":"7.0.6","highlight.js":"10.7.3","hosted-git-info":"9.0.3","proper-lockfile":"4.1.2","@dongzijie1/pi-ai":"0.86.1","@dongzijie1/pi-tui":"0.86.1","@dongzijie1/pi-agent-core":"0.86.1","@silvia-odwyer/photon-node":"0.3.4"},"_hasShrinkwrap":true,"devDependencies":{"shx":"0.4.0","vitest":"4.1.9","@types/ms":"2.1.0","typescript":"5.9.3","@types/diff":"7.0.2","@types/node":"24.12.4","@types/semver":"7.7.1","@types/cross-spawn":"6.0.6","@types/hosted-git-info":"3.0.5","@types/proper-lockfile":"4.1.4"},"optionalDependencies":{"@mariozechner/clipboard":"0.3.9"},"_npmOperationalInternal":{"tmp":"tmp/nova_0.86.1_1785652423318_0.6193643157077906","host":"s3://npm-registry-packages-npm-production"}},"0.86.2":{"name":"@dongzijie1/nova","version":"0.86.2","keywords":["nova","ai","llm","cli","tui","agent"],"author":{"name":"Mario Zechner"},"license":"MIT","_id":"@dongzijie1/nova@0.86.2","maintainers":[{"name":"dongzijie1","email":"ddong1180@gmail.com"}],"homepage":"https://github.com/earendil-works/pi#readme","bugs":{"url":"https://github.com/earendil-works/pi/issues"},"bin":{"nova":"dist/cli.js"},"dist":{"shasum":"f657f131173dccfc147aa7b4befc6b60461e9284","tarball":"https://registry.npmjs.org/@dongzijie1/nova/-/nova-0.86.2.tgz","fileCount":889,"integrity":"sha512-rXx+yGp+Raku8VtOlzyrERrPCI/6SVqyo+RlT868H3F3Qc/3EL6Nwzsa3M0GnixvesBI/Mix2D2MvATw/ojlCw==","signatures":[{"sig":"MEYCIQCta+93eWBAHfHzXUi7S+LwF8YwNunEgrZlfsqJ+WymcgIhALcJ7nxGuAvvL2l5MTuPxsOiNwjEA8aNlECU4wgXGZmk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89258550},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./rpc-entry":{"import":"./dist/rpc-entry.js"}},"gitHead":"35856aa2aec2f221d95bc44d603f9a0cd693ae9e","scripts":{"test":"vitest --run","build":"tsgo -p tsconfig.build.json && shx chmod +x dist/cli.js dist/rpc-entry.js && npm run copy-assets","clean":"shx rm -rf dist","shrinkwrap":"node ../../scripts/generate-nova-shrinkwrap.mjs","copy-assets":"shx mkdir -p dist/modes/interactive/theme && shx cp src/modes/interactive/theme/*.json dist/modes/interactive/theme/ && shx mkdir -p dist/modes/interactive/assets && shx cp src/modes/interactive/assets/*.png dist/modes/interactive/assets/ && shx mkdir -p dist/core/export-html/vendor && shx cp src/core/export-html/template.html src/core/export-html/template.css src/core/export-html/template.js dist/core/export-html/ && shx cp src/core/export-html/vendor/*.js dist/core/export-html/vendor/","build:binary":"npm --prefix ../tui run build && npm --prefix ../ai run build && npm --prefix ../agent run build && npm run build && bun build --compile ./dist/bun/cli.js ./src/utils/image-resize-worker.ts --outfile dist/pi && npm run copy-binary-assets","prepublishOnly":"npm run clean && npm run build && npm run shrinkwrap","copy-binary-assets":"shx cp package.json dist/ && shx cp README.md dist/ && shx cp CHANGELOG.md dist/ && shx mkdir -p dist/theme && shx cp src/modes/interactive/theme/*.json dist/theme/ && shx mkdir -p dist/assets && shx cp src/modes/interactive/assets/*.png dist/assets/ && shx mkdir -p dist/export-html/vendor && shx cp src/core/export-html/template.html dist/export-html/ && shx cp src/core/export-html/vendor/*.js dist/export-html/vendor/ && shx cp -r docs dist/ && shx cp -r examples dist/ && shx cp ../../node_modules/@silvia-odwyer/photon-node/photon_rs_bg.wasm dist/"},"_npmUser":{"name":"dongzijie1","email":"ddong1180@gmail.com"},"overrides":{"gaxios":{"rimraf":"6.1.2"},"rimraf":"6.1.2","protobufjs":"7.6.5"},"novaConfig":{"name":"nova","configDir":".nova"},"repository":{"url":"git+https://github.com/earendil-works/pi.git","type":"git","directory":"packages/nova"},"_npmVersion":"11.12.1","description":"Nova - AI coding agent with read, bash, edit, write tools and session management","directories":{},"_nodeVersion":"26.0.0","dependencies":{"diff":"8.0.4","glob":"13.0.6","jiti":"2.7.0","yaml":"2.9.0","chalk":"5.6.2","ignore":"7.0.5","semver":"7.8.0","undici":"8.5.0","typebox":"1.1.38","minimatch":"10.2.5","cross-spawn":"7.0.6","highlight.js":"10.7.3","hosted-git-info":"9.0.3","proper-lockfile":"4.1.2","@dongzijie1/pi-ai":"0.86.2","@dongzijie1/pi-tui":"0.86.2","@dongzijie1/pi-agent-core":"0.86.2","@silvia-odwyer/photon-node":"0.3.4"},"_hasShrinkwrap":true,"devDependencies":{"shx":"0.4.0","vitest":"4.1.9","@types/ms":"2.1.0","typescript":"5.9.3","@types/diff":"7.0.2","@types/node":"24.12.4","@types/semver":"7.7.1","@types/cross-spawn":"6.0.6","@types/hosted-git-info":"3.0.5","@types/proper-lockfile":"4.1.4"},"optionalDependencies":{"@mariozechner/clipboard":"0.3.9"},"_npmOperationalInternal":{"tmp":"tmp/nova_0.86.2_1785661948698_0.5218674527822453","host":"s3://npm-registry-packages-npm-production"}},"0.86.3":{"name":"@dongzijie1/nova","version":"0.86.3","keywords":["nova","ai","llm","cli","tui","agent"],"author":{"name":"Mario Zechner"},"license":"MIT","_id":"@dongzijie1/nova@0.86.3","maintainers":[{"name":"dongzijie1","email":"ddong1180@gmail.com"}],"homepage":"https://github.com/earendil-works/pi#readme","bugs":{"url":"https://github.com/earendil-works/pi/issues"},"bin":{"nova":"dist/cli.js"},"dist":{"shasum":"10c5b550f7732591b2c4b0841c60370c2f107083","tarball":"https://registry.npmjs.org/@dongzijie1/nova/-/nova-0.86.3.tgz","fileCount":889,"integrity":"sha512-lKfwjR1hPo0ur3FDf6sEkcAppOxvWJG7bEpz3SXR6Du8IobGO1yq0oRBDhZ1gGQMY5F9n/1Puw+HZrq+EKiJdw==","signatures":[{"sig":"MEQCIFy2ew1/wqYASUosl8cGD/AP2RBQu830ILzv8QQDCeksAiBKJkntJSx/Tegx7ZFzGdjUeUqa5vg04QWkLvvZ+gQTtA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89259920},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./rpc-entry":{"import":"./dist/rpc-entry.js"}},"gitHead":"434738a9f8b3b7fb2a02c1b0a7bd2cfa2b5670d9","scripts":{"test":"vitest --run","build":"tsgo -p tsconfig.build.json && shx chmod +x dist/cli.js dist/rpc-entry.js && npm run copy-assets","clean":"shx rm -rf dist","shrinkwrap":"node ../../scripts/generate-nova-shrinkwrap.mjs","copy-assets":"shx mkdir -p dist/modes/interactive/theme && shx cp src/modes/interactive/theme/*.json dist/modes/interactive/theme/ && shx mkdir -p dist/modes/interactive/assets && shx cp src/modes/interactive/assets/*.png dist/modes/interactive/assets/ && shx mkdir -p dist/core/export-html/vendor && shx cp src/core/export-html/template.html src/core/export-html/template.css src/core/export-html/template.js dist/core/export-html/ && shx cp src/core/export-html/vendor/*.js dist/core/export-html/vendor/","build:binary":"npm --prefix ../tui run build && npm --prefix ../ai run build && npm --prefix ../agent run build && npm run build && bun build --compile ./dist/bun/cli.js ./src/utils/image-resize-worker.ts --outfile dist/pi && npm run copy-binary-assets","prepublishOnly":"npm run clean && npm run build && npm run shrinkwrap","copy-binary-assets":"shx cp package.json dist/ && shx cp README.md dist/ && shx cp CHANGELOG.md dist/ && shx mkdir -p dist/theme && shx cp src/modes/interactive/theme/*.json dist/theme/ && shx mkdir -p dist/assets && shx cp src/modes/interactive/assets/*.png dist/assets/ && shx mkdir -p dist/export-html/vendor && shx cp src/core/export-html/template.html dist/export-html/ && shx cp src/core/export-html/vendor/*.js dist/export-html/vendor/ && shx cp -r docs dist/ && shx cp -r examples dist/ && shx cp ../../node_modules/@silvia-odwyer/photon-node/photon_rs_bg.wasm dist/"},"_npmUser":{"name":"dongzijie1","email":"ddong1180@gmail.com"},"overrides":{"gaxios":{"rimraf":"6.1.2"},"rimraf":"6.1.2","protobufjs":"7.6.5"},"novaConfig":{"name":"nova","configDir":".nova"},"repository":{"url":"git+https://github.com/earendil-works/pi.git","type":"git","directory":"packages/nova"},"_npmVersion":"11.12.1","description":"Nova - AI coding agent with read, bash, edit, write tools and session management","directories":{},"_nodeVersion":"26.0.0","dependencies":{"diff":"8.0.4","glob":"13.0.6","jiti":"2.7.0","yaml":"2.9.0","chalk":"5.6.2","ignore":"7.0.5","semver":"7.8.0","undici":"8.5.0","typebox":"1.1.38","minimatch":"10.2.5","cross-spawn":"7.0.6","highlight.js":"10.7.3","hosted-git-info":"9.0.3","proper-lockfile":"4.1.2","@dongzijie1/pi-ai":"0.86.3","@dongzijie1/pi-tui":"0.86.3","@dongzijie1/pi-agent-core":"0.86.3","@silvia-odwyer/photon-node":"0.3.4"},"_hasShrinkwrap":true,"devDependencies":{"shx":"0.4.0","vitest":"4.1.9","@types/ms":"2.1.0","typescript":"5.9.3","@types/diff":"7.0.2","@types/node":"24.12.4","@types/semver":"7.7.1","@types/cross-spawn":"6.0.6","@types/hosted-git-info":"3.0.5","@types/proper-lockfile":"4.1.4"},"optionalDependencies":{"@mariozechner/clipboard":"0.3.9"},"_npmOperationalInternal":{"tmp":"tmp/nova_0.86.3_1785663291854_0.8612509798186592","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@dongzijie1/nova","version":"1.1.0","keywords":["nova","ai","llm","cli","tui","agent"],"author":{"name":"Mario Zechner"},"license":"MIT","_id":"@dongzijie1/nova@1.1.0","maintainers":[{"name":"dongzijie1","email":"ddong1180@gmail.com"}],"homepage":"https://github.com/earendil-works/pi#readme","bugs":{"url":"https://github.com/earendil-works/pi/issues"},"bin":{"nova":"dist/cli.js"},"dist":{"shasum":"9e18ce14fad8dc0af40a787fa0f8146d0d0fce40","tarball":"https://registry.npmjs.org/@dongzijie1/nova/-/nova-1.1.0.tgz","fileCount":889,"integrity":"sha512-gCVZO9F9BVKlvWJZfAsZ1rCe7d569qaPbxX37TcLUCMDn17fu88VGoLIw6pdeRWkJWccPE/FcocB5skcrDhnSQ==","signatures":[{"sig":"MEUCIDRUZhyouraQo3qAulBc4dyFWeot7qyxqsUf8YoRlRk+AiEA7wj45iOwUDejP5+xMDBU2+qruToGYmMJrZe0QoBpAaw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89270283},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./rpc-entry":{"import":"./dist/rpc-entry.js"}},"gitHead":"ef92a8d7880ad733f7729ebb4ad1218fe7b9b8b3","scripts":{"test":"vitest --run","build":"tsgo -p tsconfig.build.json && shx chmod +x dist/cli.js dist/rpc-entry.js && npm run copy-assets","clean":"shx rm -rf dist","shrinkwrap":"node ../../scripts/generate-nova-shrinkwrap.mjs","copy-assets":"shx mkdir -p dist/modes/interactive/theme && shx cp src/modes/interactive/theme/*.json dist/modes/interactive/theme/ && shx mkdir -p dist/modes/interactive/assets && shx cp src/modes/interactive/assets/*.png dist/modes/interactive/assets/ && shx mkdir -p dist/core/export-html/vendor && shx cp src/core/export-html/template.html src/core/export-html/template.css src/core/export-html/template.js dist/core/export-html/ && shx cp src/core/export-html/vendor/*.js dist/core/export-html/vendor/","build:binary":"npm --prefix ../tui run build && npm --prefix ../ai run build && npm --prefix ../agent run build && npm run build && bun build --compile ./dist/bun/cli.js ./src/utils/image-resize-worker.ts --outfile dist/pi && npm run copy-binary-assets","prepublishOnly":"npm run clean && npm run build && npm run shrinkwrap","copy-binary-assets":"shx cp package.json dist/ && shx cp README.md dist/ && shx cp CHANGELOG.md dist/ && shx mkdir -p dist/theme && shx cp src/modes/interactive/theme/*.json dist/theme/ && shx mkdir -p dist/assets && shx cp src/modes/interactive/assets/*.png dist/assets/ && shx mkdir -p dist/export-html/vendor && shx cp src/core/export-html/template.html dist/export-html/ && shx cp src/core/export-html/vendor/*.js dist/export-html/vendor/ && shx cp -r docs dist/ && shx cp -r examples dist/ && shx cp ../../node_modules/@silvia-odwyer/photon-node/photon_rs_bg.wasm dist/"},"_npmUser":{"name":"dongzijie1","email":"ddong1180@gmail.com"},"overrides":{"gaxios":{"rimraf":"6.1.2"},"rimraf":"6.1.2","protobufjs":"7.6.5"},"novaConfig":{"name":"nova","configDir":".nova"},"repository":{"url":"git+https://github.com/earendil-works/pi.git","type":"git","directory":"packages/nova"},"_npmVersion":"11.12.1","description":"Nova - AI coding agent with read, bash, edit, write tools and session management","directories":{},"_nodeVersion":"26.0.0","dependencies":{"diff":"8.0.4","glob":"13.0.6","jiti":"2.7.0","yaml":"2.9.0","chalk":"5.6.2","ignore":"7.0.5","semver":"7.8.0","undici":"8.5.0","typebox":"1.1.38","minimatch":"10.2.5","cross-spawn":"7.0.6","highlight.js":"10.7.3","hosted-git-info":"9.0.3","proper-lockfile":"4.1.2","@dongzijie1/pi-ai":"0.86.3","@dongzijie1/pi-tui":"0.86.3","@dongzijie1/pi-agent-core":"0.86.3","@silvia-odwyer/photon-node":"0.3.4"},"_hasShrinkwrap":true,"devDependencies":{"shx":"0.4.0","vitest":"4.1.9","@types/ms":"2.1.0","typescript":"5.9.3","@types/diff":"7.0.2","@types/node":"24.12.4","@types/semver":"7.7.1","@types/cross-spawn":"6.0.6","@types/hosted-git-info":"3.0.5","@types/proper-lockfile":"4.1.4"},"optionalDependencies":{"@mariozechner/clipboard":"0.3.9"},"_npmOperationalInternal":{"tmp":"tmp/nova_1.1.0_1785833434746_0.20433817496802376","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@dongzijie1/nova","version":"1.2.0","keywords":["nova","ai","llm","cli","tui","agent"],"author":{"name":"Mario Zechner"},"license":"MIT","_id":"@dongzijie1/nova@1.2.0","maintainers":[{"name":"dongzijie1","email":"ddong1180@gmail.com"}],"homepage":"https://github.com/earendil-works/pi#readme","bugs":{"url":"https://github.com/earendil-works/pi/issues"},"bin":{"nova":"dist/cli.js"},"dist":{"shasum":"8c85951e2defd8765d8241cc568f2cc56367c6e0","tarball":"https://registry.npmjs.org/@dongzijie1/nova/-/nova-1.2.0.tgz","fileCount":892,"integrity":"sha512-/ubLHsXvKv0qAMCpa35bi8kv5iJ5ZgbDoUG3q6mJT0tJkAAx807Fs84SC/bSfcfEQUHDOg2JIxEqAThSLig6KQ==","signatures":[{"sig":"MEUCIHbJ3eY/NmA50xnKW90U/eVDEv2HigB5jmWPSxyJqrryAiEA5wBmr2puJcAJ9U2qZezhrhHuiPJZ3QSeN10eKM6jH38=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13152504},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./rpc-entry":{"import":"./dist/rpc-entry.js"}},"scripts":{"test":"vitest --run","build":"tsgo -p tsconfig.build.json && shx chmod +x dist/cli.js dist/rpc-entry.js && npm run copy-assets","clean":"shx rm -rf dist","shrinkwrap":"node ../../scripts/generate-nova-shrinkwrap.mjs","copy-assets":"shx mkdir -p dist/modes/interactive/theme && shx cp src/modes/interactive/theme/*.json dist/modes/interactive/theme/ && shx mkdir -p dist/modes/interactive/assets && shx cp src/modes/interactive/assets/*.png dist/modes/interactive/assets/ && shx mkdir -p dist/core/export-html/vendor && shx cp src/core/export-html/template.html src/core/export-html/template.css src/core/export-html/template.js dist/core/export-html/ && shx cp src/core/export-html/vendor/*.js dist/core/export-html/vendor/","build:binary":"npm --prefix ../tui run build && npm --prefix ../ai run build && npm --prefix ../agent run build && npm run build && bun build --compile ./dist/bun/cli.js ./src/utils/image-resize-worker.ts --outfile dist/pi && npm run copy-binary-assets","prepublishOnly":"npm run clean && npm run build && npm run shrinkwrap","copy-binary-assets":"shx cp package.json dist/ && shx cp README.md dist/ && shx cp CHANGELOG.md dist/ && shx mkdir -p dist/theme && shx cp src/modes/interactive/theme/*.json dist/theme/ && shx mkdir -p dist/assets && shx cp src/modes/interactive/assets/*.png dist/assets/ && shx mkdir -p dist/export-html/vendor && shx cp src/core/export-html/template.html dist/export-html/ && shx cp src/core/export-html/vendor/*.js dist/export-html/vendor/ && shx cp -r docs dist/ && shx cp -r examples dist/ && shx cp ../../node_modules/@silvia-odwyer/photon-node/photon_rs_bg.wasm dist/"},"_npmUser":{"name":"dongzijie1","email":"ddong1180@gmail.com"},"overrides":{"gaxios":{"rimraf":"6.1.2"},"rimraf":"6.1.2","protobufjs":"7.6.5"},"novaConfig":{"name":"nova","configDir":".nova"},"repository":{"url":"git+https://github.com/earendil-works/pi.git","type":"git","directory":"packages/nova"},"_npmVersion":"11.12.1","description":"Nova - AI coding agent with read, bash, edit, write tools and session management","directories":{},"_nodeVersion":"26.0.0","dependencies":{"diff":"8.0.4","glob":"13.0.6","jiti":"2.7.0","yaml":"2.9.0","chalk":"5.6.2","ignore":"7.0.5","semver":"7.8.0","undici":"8.5.0","typebox":"1.1.38","minimatch":"10.2.5","cross-spawn":"7.0.6","highlight.js":"10.7.3","hosted-git-info":"9.0.3","proper-lockfile":"4.1.2","@dongzijie1/pi-ai":"^1.2.0","@dongzijie1/pi-tui":"^1.2.0","@dongzijie1/pi-agent-core":"^1.2.0","@silvia-odwyer/photon-node":"0.3.4"},"_hasShrinkwrap":true,"devDependencies":{"shx":"0.4.0","vitest":"4.1.9","@types/ms":"2.1.0","typescript":"5.9.3","@types/diff":"7.0.2","@types/node":"24.12.4","@types/semver":"7.7.1","@types/cross-spawn":"6.0.6","@types/hosted-git-info":"3.0.5","@types/proper-lockfile":"4.1.4"},"optionalDependencies":{"@mariozechner/clipboard":"0.3.9"},"_npmOperationalInternal":{"tmp":"tmp/nova_1.2.0_1786850477806_0.496305729293683","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@dongzijie1/nova","version":"1.3.0","keywords":["nova","ai","llm","cli","tui","agent"],"author":{"name":"Mario Zechner"},"license":"MIT","_id":"@dongzijie1/nova@1.3.0","maintainers":[{"name":"dongzijie1","email":"ddong1180@gmail.com"}],"homepage":"https://github.com/earendil-works/pi#readme","bugs":{"url":"https://github.com/earendil-works/pi/issues"},"bin":{"nova":"dist/cli.js"},"dist":{"shasum":"a75c2a526e95dd995dd30e0a8fcf9aae77917837","tarball":"https://registry.npmjs.org/@dongzijie1/nova/-/nova-1.3.0.tgz","fileCount":900,"integrity":"sha512-93HbMdsdQJ/u7hlOtmDvSdP8bm+To3zpJHPsIBCtCjeckVErW22y6zhYpwGFZGjC2m9pCuwRhZm177LnvrIFjg==","signatures":[{"sig":"MEYCIQCgB/SnFO9AKxbnOr+XFVfGngNkKm3AgosZCqvuYhzc7QIhAJPQSwNUFOw7hU6TbHDmmJJyotp8sejNUIUakovogIDL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13250890},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./rpc-entry":{"import":"./dist/rpc-entry.js"}},"scripts":{"test":"vitest --run","build":"tsgo -p tsconfig.build.json && shx chmod +x dist/cli.js dist/rpc-entry.js && npm run copy-assets","clean":"shx rm -rf dist","shrinkwrap":"node ../../scripts/generate-nova-shrinkwrap.mjs","copy-assets":"shx mkdir -p dist/modes/interactive/theme && shx cp src/modes/interactive/theme/*.json dist/modes/interactive/theme/ && shx mkdir -p dist/modes/interactive/assets && shx cp src/modes/interactive/assets/*.png dist/modes/interactive/assets/ && shx mkdir -p dist/core/export-html/vendor && shx cp src/core/export-html/template.html src/core/export-html/template.css src/core/export-html/template.js dist/core/export-html/ && shx cp src/core/export-html/vendor/*.js dist/core/export-html/vendor/","build:binary":"npm --prefix ../tui run build && npm --prefix ../ai run build && npm --prefix ../agent run build && npm run build && bun build --compile ./dist/bun/cli.js ./src/utils/image-resize-worker.ts --outfile dist/pi && npm run copy-binary-assets","prepublishOnly":"npm run clean && npm run build && npm run shrinkwrap","copy-binary-assets":"shx cp package.json dist/ && shx cp README.md dist/ && shx cp CHANGELOG.md dist/ && shx mkdir -p dist/theme && shx cp src/modes/interactive/theme/*.json dist/theme/ && shx mkdir -p dist/assets && shx cp src/modes/interactive/assets/*.png dist/assets/ && shx mkdir -p dist/export-html/vendor && shx cp src/core/export-html/template.html dist/export-html/ && shx cp src/core/export-html/vendor/*.js dist/export-html/vendor/ && shx cp -r docs dist/ && shx cp -r examples dist/ && shx cp ../../node_modules/@silvia-odwyer/photon-node/photon_rs_bg.wasm dist/"},"_npmUser":{"name":"dongzijie1","email":"ddong1180@gmail.com"},"overrides":{"gaxios":{"rimraf":"6.1.2"},"rimraf":"6.1.2","protobufjs":"7.6.5"},"novaConfig":{"name":"nova","configDir":".nova"},"repository":{"url":"git+https://github.com/earendil-works/pi.git","type":"git","directory":"packages/nova"},"_npmVersion":"11.6.1","description":"Nova - AI coding agent with read, bash, edit, write tools and session management","directories":{},"_nodeVersion":"24.10.0","dependencies":{"diff":"8.0.4","glob":"13.0.6","jiti":"2.7.0","yaml":"2.9.0","chalk":"5.6.2","ignore":"7.0.5","semver":"7.8.0","undici":"8.5.0","typebox":"1.1.38","minimatch":"10.2.5","cross-spawn":"7.0.6","highlight.js":"10.7.3","hosted-git-info":"9.0.3","proper-lockfile":"4.1.2","@dongzijie1/pi-ai":"^1.3.0","@dongzijie1/pi-tui":"^1.3.0","@dongzijie1/pi-agent-core":"^1.3.0","@silvia-odwyer/photon-node":"0.3.4"},"_hasShrinkwrap":true,"devDependencies":{"shx":"0.4.0","vitest":"4.1.9","@types/ms":"2.1.0","typescript":"5.9.3","@types/diff":"7.0.2","@types/node":"24.12.4","@types/semver":"7.7.1","@types/cross-spawn":"6.0.6","@types/hosted-git-info":"3.0.5","@types/proper-lockfile":"4.1.4"},"optionalDependencies":{"@mariozechner/clipboard":"0.3.9"},"_npmOperationalInternal":{"tmp":"tmp/nova_1.3.0_1787491353287_0.9925220158792278","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@dongzijie1/nova","version":"1.4.0","keywords":["nova","ai","llm","cli","tui","agent"],"author":{"name":"Mario Zechner"},"license":"MIT","_id":"@dongzijie1/nova@1.4.0","maintainers":[{"name":"dongzijie1","email":"ddong1180@gmail.com"}],"homepage":"https://github.com/earendil-works/pi#readme","bugs":{"url":"https://github.com/earendil-works/pi/issues"},"bin":{"nova":"dist/cli.js"},"dist":{"shasum":"320bd50f73e4ef492b00d2f1e51c7cb63c5b9f02","tarball":"https://registry.npmjs.org/@dongzijie1/nova/-/nova-1.4.0.tgz","fileCount":904,"integrity":"sha512-bxrbwFwAVs7fEfiSuLgD/vn2tOhvgKZQxGP2QiuVuMEEpcVupi+0llCap/02TM3n95mRqf3jpZFnxWIlBUpRFg==","signatures":[{"sig":"MEUCIQColwl6+P/iWdlfTI0NBs3DadeOP1uEYC4z8kWrCADnIwIgBx74LJKr0PA7PKzQRZg+oJj5HNVZA3w5KEkbK9qJw8c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13380283},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./rpc-entry":{"import":"./dist/rpc-entry.js"}},"gitHead":"cc5301f99e104a6d375cb9c18d3a717687495b15","scripts":{"test":"vitest --run","build":"tsgo -p tsconfig.build.json && shx chmod +x dist/cli.js dist/rpc-entry.js && npm run copy-assets","clean":"shx rm -rf dist","shrinkwrap":"node ../../scripts/generate-nova-shrinkwrap.mjs","copy-assets":"shx mkdir -p dist/modes/interactive/theme && shx cp src/modes/interactive/theme/*.json dist/modes/interactive/theme/ && shx mkdir -p dist/modes/interactive/assets && shx cp src/modes/interactive/assets/*.png dist/modes/interactive/assets/ && shx mkdir -p dist/core/export-html/vendor && shx cp src/core/export-html/template.html src/core/export-html/template.css src/core/export-html/template.js dist/core/export-html/ && shx cp src/core/export-html/vendor/*.js dist/core/export-html/vendor/","build:binary":"npm --prefix ../tui run build && npm --prefix ../ai run build && npm --prefix ../agent run build && npm run build && bun build --compile ./dist/bun/cli.js ./src/utils/image-resize-worker.ts --outfile dist/pi && npm run copy-binary-assets","prepublishOnly":"npm run clean && npm run build && npm run shrinkwrap","copy-binary-assets":"shx cp package.json dist/ && shx cp README.md dist/ && shx cp CHANGELOG.md dist/ && shx mkdir -p dist/theme && shx cp src/modes/interactive/theme/*.json dist/theme/ && shx mkdir -p dist/assets && shx cp src/modes/interactive/assets/*.png dist/assets/ && shx mkdir -p dist/export-html/vendor && shx cp src/core/export-html/template.html dist/export-html/ && shx cp src/core/export-html/vendor/*.js dist/export-html/vendor/ && shx cp -r docs dist/ && shx cp -r examples dist/ && shx cp ../../node_modules/@silvia-odwyer/photon-node/photon_rs_bg.wasm dist/"},"_npmUser":{"name":"dongzijie1","email":"ddong1180@gmail.com"},"overrides":{"gaxios":{"rimraf":"6.1.2"},"rimraf":"6.1.2","protobufjs":"7.6.5"},"novaConfig":{"name":"nova","configDir":".nova"},"repository":{"url":"git+https://github.com/earendil-works/pi.git","type":"git","directory":"packages/nova"},"_npmVersion":"11.6.1","description":"Nova - AI coding agent with read, bash, edit, write tools and session management","directories":{},"_nodeVersion":"24.10.0","dependencies":{"diff":"8.0.4","glob":"13.0.6","jiti":"2.7.0","yaml":"2.9.0","chalk":"5.6.2","ignore":"7.0.5","semver":"7.8.0","undici":"8.5.0","typebox":"1.1.38","minimatch":"10.2.5","cross-spawn":"7.0.6","highlight.js":"10.7.3","hosted-git-info":"9.0.3","proper-lockfile":"4.1.2","@dongzijie1/pi-ai":"^1.4.0","@dongzijie1/pi-tui":"^1.4.0","@dongzijie1/pi-agent-core":"^1.4.0","@silvia-odwyer/photon-node":"0.3.4"},"_hasShrinkwrap":true,"devDependencies":{"shx":"0.4.0","vitest":"4.1.9","@types/ms":"2.1.0","typescript":"5.9.3","@types/diff":"7.0.2","@types/node":"24.12.4","@types/semver":"7.7.1","@types/cross-spawn":"6.0.6","@types/hosted-git-info":"3.0.5","@types/proper-lockfile":"4.1.4"},"optionalDependencies":{"@mariozechner/clipboard":"0.3.9"},"_npmOperationalInternal":{"tmp":"tmp/nova_1.4.0_1788833229126_0.957160418752734","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@dongzijie1/nova","version":"1.5.0","description":"Nova - AI coding agent with read, bash, edit, write tools and session management","type":"module","novaConfig":{"name":"nova","configDir":".nova"},"bin":{"nova":"dist/cli.js"},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./rpc-entry":{"import":"./dist/rpc-entry.js"}},"scripts":{"clean":"shx rm -rf dist","build":"tsgo -p tsconfig.build.json && shx chmod +x dist/cli.js dist/rpc-entry.js && npm run copy-assets","build:binary":"npm --prefix ../tui run build && npm --prefix ../ai run build && npm --prefix ../agent run build && npm run build && bun build --compile ./dist/bun/cli.js ./src/utils/image-resize-worker.ts --outfile dist/nova && npm run copy-binary-assets","copy-assets":"shx mkdir -p dist/modes/interactive/theme && shx cp src/modes/interactive/theme/*.json dist/modes/interactive/theme/ && shx mkdir -p dist/core/export-html/vendor && shx cp src/core/export-html/template.html src/core/export-html/template.css src/core/export-html/template.js dist/core/export-html/ && shx cp src/core/export-html/vendor/*.js dist/core/export-html/vendor/","copy-binary-assets":"shx cp package.json dist/ && shx cp README.md dist/ && shx cp CHANGELOG.md dist/ && shx mkdir -p dist/theme && shx cp src/modes/interactive/theme/*.json dist/theme/ && shx mkdir -p dist/export-html/vendor && shx cp src/core/export-html/template.html dist/export-html/ && shx cp src/core/export-html/vendor/*.js dist/export-html/vendor/ && shx cp -r docs dist/ && shx cp -r examples dist/ && shx cp ../../node_modules/@silvia-odwyer/photon-node/photon_rs_bg.wasm dist/","test":"vitest --run","shrinkwrap":"node ../../scripts/generate-nova-shrinkwrap.mjs","prepublishOnly":"npm run clean && npm run build && npm run shrinkwrap"},"dependencies":{"@dongzijie1/pi-agent-core":"^1.5.0","@dongzijie1/pi-ai":"^1.5.0","@dongzijie1/pi-tui":"^1.5.0","@silvia-odwyer/photon-node":"0.3.4","chalk":"5.6.2","cross-spawn":"7.0.6","diff":"8.0.4","glob":"13.0.6","highlight.js":"10.7.3","hosted-git-info":"9.0.3","ignore":"7.0.5","jiti":"2.7.0","minimatch":"10.2.5","proper-lockfile":"4.1.2","semver":"7.8.0","typebox":"1.1.38","undici":"8.5.0","yaml":"2.9.0"},"overrides":{"protobufjs":"7.6.5","rimraf":"6.1.2","gaxios":{"rimraf":"6.1.2"}},"optionalDependencies":{"@mariozechner/clipboard":"0.3.9"},"devDependencies":{"@types/cross-spawn":"6.0.6","@types/diff":"7.0.2","@types/hosted-git-info":"3.0.5","@types/ms":"2.1.0","@types/node":"24.12.4","@types/proper-lockfile":"4.1.4","@types/semver":"7.7.1","shx":"0.4.0","typescript":"5.9.3","vitest":"4.1.9"},"keywords":["nova","ai","llm","cli","tui","agent"],"author":{"name":"Mario Zechner"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/earendil-works/pi.git","directory":"packages/nova"},"engines":{"node":">=22.19.0"},"gitHead":"0e98284faa2d087798f9e2f8f38122ec3c49d0a9","_id":"@dongzijie1/nova@1.5.0","bugs":{"url":"https://github.com/earendil-works/pi/issues"},"homepage":"https://github.com/earendil-works/pi#readme","_nodeVersion":"24.20.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-xvgdCzUxicW1NnRN+ShmxQkaj/p+BWr+EzPn/jsGNaLjRzWJHQn1zjVPCW+2AjTofSCRar/zY0BI3rjnIXqrBg==","shasum":"f0b9b4fb35bc48835265927b6b78ae8f11e282fd","tarball":"https://registry.npmjs.org/@dongzijie1/nova/-/nova-1.5.0.tgz","fileCount":932,"unpackedSize":13557005,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCwfLB1d+uZr9L7+rcwP0RxShCXihmR3xzHzoqrW+IhrwIgBFMrRznp3n2cYfpcBNOF0ajZtBbun62jErlfP6GhMCo="}]},"_npmUser":{"name":"dongzijie1","email":"ddong1180@gmail.com"},"directories":{},"maintainers":[{"name":"dongzijie1","email":"ddong1180@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nova_1.5.0_1789374799763_0.7823177427233838"},"_hasShrinkwrap":true}},"time":{"created":"2026-07-27T08:39:34.555Z","modified":"2026-09-14T08:33:20.221Z","0.84.0":"2026-07-27T08:39:34.957Z","0.85.0":"2026-07-29T08:03:59.028Z","0.86.0":"2026-08-01T16:17:04.842Z","0.86.1":"2026-08-02T06:33:43.836Z","0.86.2":"2026-08-02T09:12:29.233Z","0.86.3":"2026-08-02T09:34:52.372Z","1.1.0":"2026-08-04T08:50:35.240Z","1.2.0":"2026-08-16T03:21:18.033Z","1.3.0":"2026-08-23T13:22:33.546Z","1.4.0":"2026-09-08T02:07:09.349Z","1.5.0":"2026-09-14T08:33:20.041Z"},"bugs":{"url":"https://github.com/earendil-works/pi/issues"},"author":{"name":"Mario Zechner"},"license":"MIT","homepage":"https://github.com/earendil-works/pi#readme","keywords":["nova","ai","llm","cli","tui","agent"],"repository":{"type":"git","url":"git+https://github.com/earendil-works/pi.git","directory":"packages/nova"},"description":"Nova - AI coding agent with read, bash, edit, write tools and session management","maintainers":[{"name":"dongzijie1","email":"ddong1180@gmail.com"}],"readme":"<p align=\"center\">\n  <a href=\"https://github.com/DongZiJie1/nova-agent\">\n    <img alt=\"nova logo\" src=\"assets/nova.png\" width=\"128\">\n  </a>\n</p>\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@dongzijie1/nova\"><img alt=\"npm\" src=\"https://img.shields.io/npm/v/@dongzijie1/nova?style=flat-square\" /></a>\n</p>\n\n> New issues and PRs from new contributors are auto-closed by default. Maintainers review auto-closed issues daily. See [CONTRIBUTING.md](../../CONTRIBUTING.md).\n\n---\n\nNova is an AI-powered coding agent that adapts to your workflows. Extend it with TypeScript [Extensions](#extensions), [Skills](#skills), [Prompt Templates](#prompt-templates), and [Themes](#themes). Put your extensions, skills, prompt templates, and themes in [Nova Packages](#nova-packages) and share them with others via npm or git.\n\nNova ships with powerful defaults and supports multi-model providers (OpenAI, Anthropic, Google, DeepSeek, etc.). It runs in four modes: interactive, print or JSON, RPC for process integration, and an SDK for embedding in your own apps.\n\n## Table of Contents\n\n- [Quick Start](#quick-start)\n- [Providers & Models](#providers--models)\n- [Interactive Mode](#interactive-mode)\n  - [Editor](#editor)\n  - [Commands](#commands)\n  - [Keyboard Shortcuts](#keyboard-shortcuts)\n  - [Message Queue](#message-queue)\n- [Sessions](#sessions)\n  - [Branching](#branching)\n  - [Compaction](#compaction)\n- [Settings](#settings)\n- [Context Files](#context-files)\n- [Customization](#customization)\n  - [Prompt Templates](#prompt-templates)\n  - [Skills](#skills)\n  - [Extensions](#extensions)\n  - [Themes](#themes)\n  - [Nova Packages](#nova-packages)\n- [Programmatic Usage](#programmatic-usage)\n- [Philosophy](#philosophy)\n- [CLI Reference](#cli-reference)\n\n---\n\n## Quick Start\n\n```bash\nnpm install -g --ignore-scripts @dongzijie1/nova\n```\n\n`--ignore-scripts` disables dependency lifecycle scripts during install. Nova does not require install scripts for normal npm installs.\n\nStandalone binary: download `nova-<platform>.tar.gz` (or `.zip` on Windows) from\n[GitHub Releases](https://github.com/DongZiJie1/nova-agent/releases), unpack it, and run the `nova`\nexecutable inside.\n\nAuthenticate with an API key:\n\n```bash\nexport ANTHROPIC_API_KEY=sk-ant-...\nnova\n```\n\nOr use your existing subscription:\n\n```bash\nnova\n/login  # Then select provider\n```\n\nThen just talk to Nova. By default, Nova gives the model four tools: `read`, `write`, `edit`, and `bash`. The model uses these to fulfill your requests. Add capabilities via [skills](#skills), [prompt templates](#prompt-templates), [extensions](#extensions), or [Nova Packages](#nova-packages).\n\n**Platform notes:** [Windows](docs/windows.md) | [Termux (Android)](docs/termux.md) | [tmux](docs/tmux.md) | [Terminal setup](docs/terminal-setup.md) | [Shell aliases](docs/shell-aliases.md)\n\n---\n\n## Providers & Models\n\nFor each built-in provider, nova maintains a list of tool-capable models. Configured provider catalogs refresh automatically; run `nova update --models` to force an immediate refresh. Authenticate via subscription (`/login`) or API key, then select any model from that provider via `/model` (or Ctrl+L).\n\n**Subscriptions:**\n- Anthropic Claude Pro/Max\n- OpenAI ChatGPT Plus/Pro (Codex)\n- GitHub Copilot\n\n**API keys:**\n- Anthropic\n- Ant Ling\n- OpenAI\n- Azure OpenAI\n- DeepSeek\n- NVIDIA NIM\n- Google Gemini\n- Google Vertex\n- Amazon Bedrock\n- Mistral\n- Groq\n- Cerebras\n- Cloudflare AI Gateway\n- Cloudflare Workers AI\n- xAI\n- OpenRouter\n- Vercel AI Gateway\n- ZAI Coding Plan (Global)\n- ZAI Coding Plan (China)\n- OpenCode Zen\n- OpenCode Go\n- Hugging Face\n- Fireworks\n- Together AI\n- Kimi For Coding\n- MiniMax\n- Xiaomi MiMo\n- Xiaomi MiMo Token Plan (China)\n- Xiaomi MiMo Token Plan (Amsterdam)\n- Xiaomi MiMo Token Plan (Singapore)\n\nNova also supports the llama.cpp router server. Configure it with `/login llama.cpp`, manage downloads and loaded models with `/llama`, then select a loaded model with `/model`. See [docs/llama-cpp.md](docs/llama-cpp.md) for setup and usage.\n\nSee [docs/providers.md](docs/providers.md) for other provider setup instructions.\n\n**Custom providers & models:** Add providers via `~/.nova/agent/models.json` if they speak a supported API (OpenAI, Anthropic, Google). For custom APIs or OAuth, use extensions. See [docs/models.md](docs/models.md) and [docs/custom-provider.md](docs/custom-provider.md).\n\n---\n\n## Interactive Mode\n\n<p align=\"center\"><img src=\"docs/images/interactive-mode.png\" alt=\"Interactive Mode\" width=\"600\"></p>\n\nThe interface from top to bottom:\n\n- **Startup header** - Shows shortcuts (`/hotkeys` for all), loaded AGENTS.md files, prompt templates, skills, and extensions\n- **Messages** - Your messages, assistant responses, tool calls and results, notifications, errors, and extension UI\n- **Editor** - Where you type; border color indicates thinking level\n- **Footer** - Working directory, session name, total token/cache usage (`↑` input, `↓` output, `R` cache read, `W` cache write, `CH` latest cache hit rate), cost, context usage, current model. Totals include assistant responses, usage reported by tools, and summary generation.\n\nThe editor can be temporarily replaced by other UI, like built-in `/settings` or custom UI from extensions (e.g., a Q&A tool that lets the user answer model questions in a structured format). [Extensions](#extensions) can also replace the editor, add widgets above/below it, a status line, custom footer, or overlays.\n\n### Editor\n\n| Feature | How |\n|---------|-----|\n| File reference | Type `@` to fuzzy-search project files |\n| Path completion | Tab to complete paths |\n| Multi-line | Shift+Enter (or Ctrl+Enter on Windows Terminal) |\n| External editor | Ctrl+G opens `externalEditor`, `$VISUAL`, `$EDITOR`, Notepad on Windows, or `nano` elsewhere |\n| Clipboard | Ctrl+V to paste an image or text (Alt+V on Windows), or drag images onto terminal |\n| Bash commands | `!command` runs and sends output to LLM, `!!command` runs without sending |\n\nStandard editing keybindings for delete word, undo, etc. See [docs/keybindings.md](docs/keybindings.md).\n\n### Commands\n\nType `/` in the editor to trigger commands. [Extensions](#extensions) can register custom commands, [skills](#skills) are available as `/skill:name`, and [prompt templates](#prompt-templates) expand via `/templatename`.\n\n| Command | Description |\n|---------|-------------|\n| `/login`, `/logout` | Manage provider credentials |\n| [`/llama`](docs/llama-cpp.md) | Download, load, and unload llama.cpp router models |\n| `/model` | Switch models |\n| `/scoped-models` | Enable/disable models for Ctrl+P cycling |\n| `/settings` | Thinking level, theme, message delivery, transport |\n| `/resume` | Pick from previous sessions |\n| `/new` | Start a new session |\n| `/name <name>` | Set session display name |\n| `/session` | Show session info (file, ID, messages, tokens, cost) |\n| `/tree` | Jump to any point in the session and continue from there |\n| `/trust` | Save project trust decision for future sessions (restart required) |\n| `/fork` | Create a new session from a previous user message |\n| `/clone` | Duplicate the current active branch into a new session |\n| `/compact [prompt]` | Manually compact context, optional custom instructions |\n| `/copy` | Copy last assistant message to clipboard |\n| `/export [file]` | Export session to HTML or JSONL file |\n| `/import <file>` | Import and resume a session from a JSONL file |\n| `/share` | Upload as private GitHub gist with shareable HTML link |\n| `/reload` | Reload keybindings, extensions, skills, prompts, themes, and context files |\n| `/hotkeys` | Show all keyboard shortcuts |\n| `/changelog` | Display version history |\n| `/quit` | Quit Nova |\n\n### Keyboard Shortcuts\n\nSee `/hotkeys` for the full list. Customize via `~/.nova/agent/keybindings.json`. See [docs/keybindings.md](docs/keybindings.md).\n\n**Commonly used:**\n\n| Key | Action |\n|-----|--------|\n| Ctrl+C | Clear editor |\n| Ctrl+C twice | Quit |\n| Escape | Cancel/abort |\n| Escape twice | Open `/tree` |\n| Ctrl+L | Open model selector |\n| Ctrl+P / Shift+Ctrl+P | Cycle scoped models forward/backward |\n| Shift+Tab | Cycle thinking level |\n| Ctrl+O | Collapse/expand tool output |\n| Ctrl+T | Collapse/expand thinking blocks |\n| Ctrl+X | Copy the last assistant message |\n\n### Message Queue\n\nSubmit messages while the agent is working:\n\n- **Enter** queues a *steering* message, delivered after the current assistant turn finishes executing its tool calls\n- **Alt+Enter** queues a *follow-up* message, delivered only after the agent finishes all work\n- **Escape** aborts and restores queued messages to editor\n- **Alt+Up** retrieves queued messages back to editor\n\nOn Windows Terminal, `Alt+Enter` is fullscreen by default. Remap it in [docs/terminal-setup.md](docs/terminal-setup.md) so Nova can receive the follow-up shortcut.\n\nConfigure delivery in [settings](docs/settings.md): `steeringMode` and `followUpMode` can be `\"one-at-a-time\"` (default, waits for response) or `\"all\"` (delivers all queued at once). `transport` selects provider transport preference (`\"sse\"`, `\"websocket\"`, or `\"auto\"`) for providers that support multiple transports.\n\n---\n\n## Sessions\n\nSessions are stored as JSONL files with a tree structure. Each entry has an `id` and `parentId`, enabling in-place branching without creating new files. See [docs/session-format.md](docs/session-format.md) for file format.\n\n### Management\n\nSessions auto-save to `~/.nova/agent/sessions/` organized by working directory.\n\n```bash\nnova -c                  # Continue most recent session\nnova -r                  # Browse and select from past sessions\nnova --no-session        # Ephemeral mode (don't save)\nnova --name \"my task\"    # Set session display name at startup\nnova --session <path|id> # Use specific session file or ID\nnova --fork <path|id>    # Fork specific session file or ID into a new session\n```\n\nUse `/session` in interactive mode to see the current session ID before reusing it with `--session <id>` or `--fork <id>`.\n\n### Branching\n\n**`/tree`** - Navigate the session tree in-place. Select any previous point, continue from there, and switch between branches. All history preserved in a single file.\n\n<p align=\"center\"><img src=\"docs/images/tree-view.png\" alt=\"Tree View\" width=\"600\"></p>\n\n- Search by typing, fold/unfold and jump between branches with Ctrl+←/Ctrl+→ or Alt+←/Alt+→, page with ←/→\n- Filter modes (Ctrl+O): default → no-tools → user-only → labeled-only → all\n- Press Ctrl+X to copy the selected message\n- Press Shift+L to label entries as bookmarks and Shift+T to toggle label timestamps\n\n**`/fork`** - Create a new session file from a previous user message on the active branch. Opens a selector, copies the active path up to that point, and places the selected prompt in the editor for modification.\n\n**`/clone`** - Duplicate the current active branch into a new session file at the current position. The new session keeps the full active-path history and opens with an empty editor.\n\n**`--fork <path|id>`** - Fork an existing session file or partial session UUID directly from the CLI. This copies the full source session into a new session file in the current project.\n\n### Compaction\n\nLong sessions can exhaust context windows. Compaction summarizes older messages while keeping recent ones.\n\n**Manual:** `/compact` or `/compact <custom instructions>`\n\n**Automatic:** Enabled by default. Triggers on context overflow (recovers and retries) or when approaching the limit (proactive). Configure via `/settings` or `settings.json`.\n\nCompaction is lossy. The full history remains in the JSONL file; use `/tree` to revisit. Customize compaction behavior via [extensions](#extensions). See [docs/compaction.md](docs/compaction.md) for internals.\n\n---\n\n## Settings\n\nUse `/settings` to modify common options, or edit JSON files directly:\n\n| Location | Scope |\n|----------|-------|\n| `~/.nova/agent/settings.json` | Global (all projects) |\n| `.nova/settings.json` | Project (overrides global) |\n\nSee [docs/settings.md](docs/settings.md) for all options.\n\n### Project Trust\n\nOn interactive startup, Nova asks before trusting a project folder that contains project-local settings, resources, or project `.agents/skills` and has no saved decision for the folder or a parent folder in `~/.nova/agent/trust.json`. Trusting a project allows Nova to load `.nova/settings.json` and `.nova` resources, install missing project packages, and execute project extensions.\n\nBefore the trust decision, Nova loads only context files, user/global extensions, and CLI `-e` extensions so they can handle the `project_trust` event. Project-local extensions, project package-managed extensions, and project settings are loaded only after the project is trusted. This split also applies when switching to a session from a different cwd whose trust has not been resolved in the current process.\n\nNon-interactive modes (`-p`, `--mode json`, and `--mode rpc`) do not show a trust prompt. Without an applicable saved trust decision, they use `defaultProjectTrust` from global settings: `ask` (default) and `never` ignore those project resources, while `always` trusts them. Pass `--approve`/`-a` or `--no-approve`/`-na` to override project trust for one run.\n\nIf no extension or saved decision applies, `defaultProjectTrust` controls the fallback behavior. Set it to `\"ask\"`, `\"always\"`, or `\"never\"` in `~/.nova/agent/settings.json`, or change it with `/settings`.\n\n`nova config` and package commands use the same project trust flow, except `nova update` never prompts. Pass `--approve` to trust project-local settings for one command or `--no-approve` to ignore them.\n\nUse `/trust` in interactive mode to save a project trust decision for future sessions, including trust for the immediate parent folder. It writes `~/.nova/agent/trust.json` only; the current session is not reloaded, so restart Nova for changes to take effect.\n\n### Telemetry and update checks\n\nNova has two separate startup features:\n\n- **Update check:** queries the npm registry for the latest published Nova version. Disable it with `NOVA_SKIP_VERSION_CHECK=1`. Disabling update checks only turns off this check.\n- **Install/update telemetry:** off by default. When `NOVA_TELEMETRY_URL` points at a collector you control, Nova sends one anonymous version ping after first install or a changelog-detected update. The `enableInstallTelemetry` setting (also controlled by `NOVA_TELEMETRY`) gates this ping and the optional provider attribution headers for OpenRouter, Cloudflare, and direct NVIDIA NIM requests. Opt out by setting `enableInstallTelemetry` to `false` in `settings.json`, or by setting `NOVA_TELEMETRY=0`.\n\nUse `--offline` or `NOVA_OFFLINE=1` to disable all startup network operations described here, including update checks, package update checks, and install/update telemetry.\n\nThe legacy `PI_`-prefixed names (`PI_OFFLINE`, `PI_SKIP_VERSION_CHECK`, `PI_TELEMETRY`, and the rest of the table below) are still read when the `NOVA_` variable is unset.\n\n---\n\n## Context Files\n\nNova loads `AGENTS.md` (or `CLAUDE.md`) at startup from:\n- `~/.nova/agent/AGENTS.md` (global)\n- Parent directories (walking up from cwd)\n- Current directory\n\nUse for project instructions (`AGENTS.md`/`CLAUDE.md`), conventions, common commands. All matching files are concatenated.\n\nDisable context file loading with `--no-context-files` (or `-nc`).\n\n### System Prompt\n\nReplace the default system prompt with `.nova/SYSTEM.md` (project) or `~/.nova/agent/SYSTEM.md` (global). Append without replacing via `APPEND_SYSTEM.md`.\n\n---\n\n## Customization\n\n### Prompt Templates\n\nReusable prompts as Markdown files. Type `/name` to expand.\n\n```markdown\n<!-- ~/.nova/agent/prompts/review.md -->\nReview this code for bugs, security issues, and performance problems.\nFocus on: {{focus}}\n```\n\nPlace in `~/.nova/agent/prompts/`, `.nova/prompts/`, or a [Nova Package](#nova-packages) to share with others. See [docs/prompt-templates.md](docs/prompt-templates.md).\n\n### Skills\n\nOn-demand capability packages following the [Agent Skills standard](https://agentskills.io). Invoke via `/skill:name` or let the agent load them automatically.\n\n```markdown\n<!-- ~/.nova/agent/skills/my-skill/SKILL.md -->\n# My Skill\nUse this skill when the user asks about X.\n\n## Steps\n1. Do this\n2. Then that\n```\n\nPlace in `~/.nova/agent/skills/`, `~/.agents/skills/`, `.nova/skills/`, or `.agents/skills/` (from `cwd` up through parent directories) or a [Nova Package](#nova-packages) to share with others. See [docs/skills.md](docs/skills.md).\n\n### Extensions\n\n<p align=\"center\"><img src=\"docs/images/doom-extension.png\" alt=\"Doom Extension\" width=\"600\"></p>\n\nTypeScript modules that extend Nova with custom tools, commands, keyboard shortcuts, event handlers, and UI components.\n\n```typescript\nexport default function (nova: ExtensionAPI) {\n  nova.registerTool({ name: \"deploy\", ... });\n  nova.registerCommand(\"stats\", { ... });\n  nova.on(\"tool_call\", async (event, ctx) => { ... });\n}\n```\n\nThe default export can also be `async`. Nova waits for async extension factories before startup continues, which is useful for one-time initialization such as fetching remote model lists before calling `nova.registerProvider()`.\n\n**What's possible:**\n- Custom tools (or replace built-in tools entirely)\n- Sub-agents and plan mode\n- Custom compaction and summarization\n- Permission gates and path protection\n- Custom editors and UI components\n- Status lines, headers, footers\n- Git checkpointing and auto-commit\n- SSH and sandbox execution\n- MCP server integration\n- Make Nova look like Claude Code\n- Games while waiting (yes, Doom runs)\n- ...anything you can dream up\n\nPlace in `~/.nova/agent/extensions/`, `.nova/extensions/`, or a [Nova Package](#nova-packages) to share with others. See [docs/extensions.md](docs/extensions.md) and [examples/extensions/](examples/extensions/).\n\n### Themes\n\nBuilt-in: `dark`, `light`. Themes hot-reload: modify the active theme file and Nova immediately applies changes.\n\nPlace in `~/.nova/agent/themes/`, `.nova/themes/`, or a [Nova Package](#nova-packages) to share with others. See [docs/themes.md](docs/themes.md).\n\n### Nova Packages\n\nBundle and share extensions, skills, prompts, and themes via npm or git. Find packages on [npmjs.com](https://www.npmjs.com/search?q=keywords%3Anova-package).\n\n> **Security:** Nova packages run with full system access. Extensions execute arbitrary code, and skills can instruct the model to perform any action including running executables. Review source code before installing third-party packages.\n\n```bash\nnova install npm:@foo/nova-tools\nnova install npm:@foo/nova-tools@1.2.3      # pinned version\nnova install git:github.com/user/repo\nnova install git:github.com/user/repo@v1  # tag or commit\nnova install git:git@github.com:user/repo\nnova install git:git@github.com:user/repo@v1  # tag or commit\nnova install https://github.com/user/repo\nnova install https://github.com/user/repo@v1      # tag or commit\nnova install ssh://git@github.com/user/repo\nnova install ssh://git@github.com/user/repo@v1    # tag or commit\nnova remove npm:@foo/nova-tools\nnova uninstall npm:@foo/nova-tools          # alias for remove\nnova list\nnova update                               # update nova only\nnova update --all                         # update nova and packages\nnova update --extensions                  # update packages only\nnova update --models                      # refresh model catalogs only\nnova update --self                        # update nova only\nnova update --self --force                # reinstall nova even if current\nnova update npm:@foo/nova-tools             # update one package\nnova config                               # enable/disable extensions, skills, prompts, themes\n```\n\nPackages install to `~/.nova/agent/git/` (git) or `~/.nova/agent/npm/` (npm). Use `-l` for project-local installs (`.nova/git/`, `.nova/npm/`). Git `@ref` values are pinned tags or commits; pinned packages are skipped by `nova update --extensions` and `nova update --all`, so use `nova install git:host/user/repo@new-ref` to move an existing package to a new ref. Git packages install dependencies with `npm install --omit=dev` by default, so runtime deps must be listed under `dependencies`; when `npmCommand` is configured, git packages use plain `install` for compatibility with wrappers. If you use a Node version manager and want package installs to reuse a stable npm context, set `npmCommand` in `settings.json`, for example `[\"mise\", \"exec\", \"node@20\", \"--\", \"npm\"]`.\n\nCreate a package by adding a `nova` key to `package.json`:\n\n```json\n{\n  \"name\": \"my-nova-package\",\n  \"keywords\": [\"nova-package\"],\n  \"nova\": {\n    \"extensions\": [\"./extensions\"],\n    \"skills\": [\"./skills\"],\n    \"prompts\": [\"./prompts\"],\n    \"themes\": [\"./themes\"]\n  }\n}\n```\n\nWithout a `nova` manifest, Nova auto-discovers from conventional directories (`extensions/`, `skills/`, `prompts/`, `themes/`). The pre-rebrand `pi` key is still read when `nova` is absent.\n\nSee [docs/packages.md](docs/packages.md).\n\n---\n\n## Programmatic Usage\n\n### SDK\n\n```typescript\nimport { createAgentSession, ModelRuntime, SessionManager } from \"@dongzijie1/nova\";\n\nconst modelRuntime = await ModelRuntime.create();\nconst { session } = await createAgentSession({\n  sessionManager: SessionManager.inMemory(),\n  modelRuntime,\n});\n\nawait session.prompt(\"What files are in the current directory?\");\n```\n\nFor advanced multi-session runtime replacement, use `createAgentSessionRuntime()` and `AgentSessionRuntime`.\n\nSee [docs/sdk.md](docs/sdk.md) and [examples/sdk/](examples/sdk/).\n\n### RPC Mode\n\nFor non-Node.js integrations, use RPC mode over stdin/stdout:\n\n```bash\nnova --mode rpc\n```\n\nRPC mode uses strict LF-delimited JSONL framing. Clients must split records on `\\n` only. Do not use generic line readers like Node `readline`, which also split on Unicode separators inside JSON payloads.\n\nSee [docs/rpc.md](docs/rpc.md) for the protocol.\n\n---\n\n## Philosophy\n\nNova is aggressively extensible so it doesn't have to dictate your workflow. Features that other tools bake in can be built with [extensions](#extensions), [skills](#skills), or installed from third-party [Nova Packages](#nova-packages). This keeps the core minimal while letting you shape Nova to fit how you work.\n\n**No MCP.** Build CLI tools with READMEs (see [Skills](#skills)), or build an extension that adds MCP support. [Why?](https://mariozechner.at/posts/2025-11-02-what-if-you-dont-need-mcp/)\n\n**No sub-agents.** There's many ways to do this. Spawn nova instances via tmux, or build your own with [extensions](#extensions), or install a package that does it your way.\n\n**No permission popups.** Run in a container, or build your own confirmation flow with [extensions](#extensions) inline with your environment and security requirements.\n\n**No plan mode.** Write plans to files, or build it with [extensions](#extensions), or install a package.\n\n**No built-in to-dos.** They confuse models. Use a TODO.md file, or build your own with [extensions](#extensions).\n\n**No background bash.** Use tmux. Full observability, direct interaction.\n\nRead the [blog post](https://mariozechner.at/posts/2025-11-30-pi-coding-agent/) for the full rationale.\n\n---\n\n## CLI Reference\n\n```bash\nnova [options] [@files...] [messages...]\n```\n\n### Package Commands\n\n```bash\nnova install <source> [-l]     # Install package, -l for project-local\nnova remove <source> [-l]      # Remove package\nnova uninstall <source> [-l]   # Alias for remove\nnova update [source|self|nova]   # Update nova only, or one package source\nnova update --all              # Update nova and packages\nnova update --extensions       # Update packages only\nnova update --models           # Refresh model catalogs only\nnova update --self             # Update nova only\nnova update --self --force     # Reinstall nova even if current\nnova update --extension <src>  # Update one package\nnova list                      # List installed packages\nnova config                    # Enable/disable package resources\n```\n\n`nova config` and project package commands accept `--approve`/`--no-approve` to trust or ignore project-local settings for one command. `nova update` never prompts for project trust.\n\n### Modes\n\n| Flag | Description |\n|------|-------------|\n| (default) | Interactive mode |\n| `-p`, `--print` | Print response and exit |\n| `--mode json` | Output all events as JSON lines (see [docs/json.md](docs/json.md)) |\n| `--mode rpc` | RPC mode for process integration (see [docs/rpc.md](docs/rpc.md)) |\n| `--export <in> [out]` | Export session to HTML |\n\nIn print mode, Nova also reads piped stdin and merges it into the initial prompt:\n\n```bash\ncat README.md | nova -p \"Summarize this text\"\n```\n\n### Model Options\n\n| Option | Description |\n|--------|-------------|\n| `--provider <name>` | Provider (anthropic, openai, google, etc.) |\n| `--model <pattern>` | Model pattern or ID (supports `provider/id` and optional `:<thinking>`) |\n| `--api-key <key>` | API key (overrides env vars) |\n| `--thinking <level>` | `off`, `minimal`, `low`, `medium`, `high`, `xhigh`, `max` |\n| `--models <patterns>` | Comma-separated patterns for Ctrl+P cycling |\n| `--list-models [search]` | List available models |\n\n### Session Options\n\n| Option | Description |\n|--------|-------------|\n| `-c`, `--continue` | Continue most recent session |\n| `-r`, `--resume` | Browse and select session |\n| `--session <path\\|id>` | Use specific session file or partial UUID |\n| `--fork <path\\|id>` | Fork specific session file or partial UUID into a new session |\n| `--session-dir <dir>` | Custom session storage directory |\n| `--no-session` | Ephemeral mode (don't save) |\n| `--name <name>`, `-n <name>` | Set session display name at startup |\n\n### Tool Options\n\n| Option | Description |\n|--------|-------------|\n| `--tools <list>`, `-t <list>` | Allowlist specific tool names across built-in, extension, and custom tools |\n| `--exclude-tools <list>`, `-xt <list>` | Disable specific tool names across built-in, extension, and custom tools |\n| `--no-builtin-tools`, `-nbt` | Disable built-in tools by default but keep extension/custom tools enabled |\n| `--no-tools`, `-nt` | Disable all tools by default |\n\nAvailable built-in tools: `read`, `bash`, `edit`, `write`, `grep`, `find`, `ls`\n\n### Resource Options\n\n| Option | Description |\n|--------|-------------|\n| `-e`, `--extension <source>` | Load extension from path, npm, or git (repeatable) |\n| `--no-extensions` | Disable extension discovery |\n| `--skill <path>` | Load skill (repeatable) |\n| `--no-skills` | Disable skill discovery |\n| `--prompt-template <path>` | Load prompt template (repeatable) |\n| `--no-prompt-templates` | Disable prompt template discovery |\n| `--theme <path>` | Load theme (repeatable) |\n| `--no-themes` | Disable theme discovery |\n| `--no-context-files`, `-nc` | Disable AGENTS.md and CLAUDE.md context file discovery |\n\nCombine `--no-*` with explicit flags to load exactly what you need, ignoring settings.json (e.g., `--no-extensions -e ./my-ext.ts`).\n\n### Other Options\n\n| Option | Description |\n|--------|-------------|\n| `--system-prompt <text>` | Replace default prompt (context files and skills still appended) |\n| `--append-system-prompt <text>` | Append to system prompt |\n| `--verbose` | Force verbose startup |\n| `-a`, `--approve` | Trust project-local files for this run |\n| `-na`, `--no-approve` | Ignore project-local files for this run |\n| `-h`, `--help` | Show help |\n| `-v`, `--version` | Show version |\n\n### File Arguments\n\nPrefix files with `@` to include in the message:\n\n```bash\nnova @prompt.md \"Answer this\"\nnova -p @screenshot.png \"What's in this image?\"\nnova @code.ts @test.ts \"Review these files\"\n```\n\n### Examples\n\n```bash\n# Interactive with initial prompt\nnova \"List all .ts files in src/\"\n\n# Non-interactive\nnova -p \"Summarize this codebase\"\n\n# Non-interactive with piped stdin\ncat README.md | nova -p \"Summarize this text\"\n\n# Named one-shot session\nnova --name \"release audit\" -p \"Audit this repository\"\n\n# Different model\nnova --provider openai --model gpt-4o \"Help me refactor\"\n\n# Model with provider prefix (no --provider needed)\nnova --model openai/gpt-4o \"Help me refactor\"\n\n# Model with thinking level shorthand\nnova --model sonnet:high \"Solve this complex problem\"\n\n# Limit model cycling\nnova --models \"claude-*,gpt-4o\"\n\n# Read-only mode\nnova --tools read,grep,find,ls -p \"Review the code\"\n\n# Disable one extension or built-in tool while keeping the rest available\nnova --exclude-tools ask_question\n\n# High thinking level\nnova --thinking high \"Solve this complex problem\"\n```\n\n### Environment Variables\n\n| Variable | Description |\n|----------|-------------|\n| `NOVA_CODING_AGENT` | Set to `true` by the CLI and RPC entry points so child processes can detect that they run inside Nova |\n| `NOVA_CODING_AGENT_DIR` | Override config directory (default: `~/.nova/agent`) |\n| `NOVA_CODING_AGENT_SESSION_DIR` | Override session storage directory (overridden by `--session-dir`) |\n| `NOVA_PACKAGE_DIR` | Override package directory (useful for Nix/Guix where store paths tokenize poorly) |\n| `NOVA_OFFLINE` | Disable startup network operations, including update checks, package update checks, and install/update telemetry |\n| `NOVA_SKIP_VERSION_CHECK` | Skip the Nova version update check at startup. This prevents the latest-release request |\n| `NOVA_TELEMETRY` | Override install/update telemetry and provider attribution headers. Use `1`/`true`/`yes` to enable or `0`/`false`/`no` to disable. This does not disable update checks |\n| `NOVA_TELEMETRY_URL` | Collector endpoint for the install/update version ping. Unset means no ping is ever sent |\n| `NOVA_CACHE_RETENTION` | Set to `long` for extended prompt cache (Anthropic: 1h, OpenAI: 24h) |\n| `VISUAL`, `EDITOR` | Fallback external editor for Ctrl+G when `externalEditor` is unset; defaults to Notepad on Windows and `nano` elsewhere |\n\nCommands run by the LLM-callable bash tool also receive current session metadata:\n\n| Variable | Description |\n|----------|-------------|\n| `NOVA_SESSION_ID` | Current session ID |\n| `NOVA_SESSION_FILE` | Absolute session JSONL path; unset for ephemeral sessions |\n| `NOVA_PROVIDER` | Currently selected model provider |\n| `NOVA_MODEL` | Currently selected model ID |\n| `NOVA_REASONING_LEVEL` | Current effective reasoning level |\n\nThese values are resolved when each command starts. See [Environment Variables](docs/environment-variables.md#bash-tool-session-environment) for semantics, examples, and custom-tool opt-out.\n\n---\n\n## Contributing & Development\n\nSee [CONTRIBUTING.md](../../CONTRIBUTING.md) for guidelines and [docs/development.md](docs/development.md) for setup, forking, and debugging.\n\n## License\n\nMIT\n\n## See Also\n\n- [@dongzijie1/pi-ai](https://www.npmjs.com/package/@dongzijie1/pi-ai): Core LLM toolkit\n- [@dongzijie1/pi-agent-core](https://www.npmjs.com/package/@dongzijie1/pi-agent-core): Agent framework\n- [@dongzijie1/pi-tui](https://www.npmjs.com/package/@dongzijie1/pi-tui): Terminal UI components\n\n<p align=\"center\">\n  Nova is forked from <a href=\"https://github.com/earendil-works/pi\">Pi Agent</a> by Earendil Works.\n  The <code>/share</code> command links to the public session viewer hosted at\n  <a href=\"https://pi.dev\">pi.dev</a>, a domain graciously donated by exe.dev.\n</p>\n","readmeFilename":"README.md"}