{"_id":"@chat-suggestion/adapter-pi","_rev":"4-ced2002327353971284560d634104e02","name":"@chat-suggestion/adapter-pi","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"@chat-suggestion/adapter-pi","version":"0.1.0","keywords":["pi-package","pi-extension","inline-completion"],"author":"","license":"ISC","_id":"@chat-suggestion/adapter-pi@0.1.0","maintainers":[{"name":"miracle3010","email":"nguyentacuong90@gmail.com"}],"pi":{"extensions":["./dist/production-extension.js"]},"dist":{"shasum":"49e16dcb9eec1aa5e5cbcacd9dbee4f9a2fd73cd","tarball":"https://registry.npmjs.org/@chat-suggestion/adapter-pi/-/adapter-pi-0.1.0.tgz","fileCount":26,"integrity":"sha512-0CwZ1M3/kyJ/o7D3N9GI0FNErCDnydLCxA+J1Cy8sXVeO9wx3PmkWYn6qC8ODIl1QVQrexvPvzp1LasMd80Fag==","signatures":[{"sig":"MEUCIGSB3ocJ7cpQBIprrvqMyqCuifdtcgLXX3fyt/RHEWARAiEAq57uonMYax0yHejj9nCgURedz/Xn+9BtFW6N7y/USlI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61291},"main":"index.js","type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"de57fb2d393d6c52adb38e36f65581442411e5fc","scripts":{"test":"vitest run --config vitest.config.ts","build":"tsc -p tsconfig.build.json","typecheck":"tsc -p tsconfig.json --noEmit","test:package":"node scripts/verify-package.mjs"},"_npmUser":{"name":"miracle3010","email":"nguyentacuong90@gmail.com"},"_npmVersion":"11.16.0","description":"This package provides the public-API-only Pi editor adapter for chat suggestions. It was verified against `@earendil-works/pi-coding-agent` 0.80.6 and its bundled `@earendil-works/pi-tui` package.","directories":{"test":"test"},"_nodeVersion":"24.16.0","dependencies":{"@chat-suggestion/protocol":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/adapter-pi_0.1.0_1783841067443_0.5494803308786758","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@chat-suggestion/adapter-pi","version":"0.1.1","keywords":["pi-package","pi-extension","inline-completion","ghost-text"],"author":{"name":"Cuong Nguyen"},"license":"MIT","_id":"@chat-suggestion/adapter-pi@0.1.1","maintainers":[{"name":"miracle3010","email":"nguyentacuong90@gmail.com"}],"homepage":"https://github.com/nguyen-ta-cuong/chat-suggestion#readme","bugs":{"url":"https://github.com/nguyen-ta-cuong/chat-suggestion/issues"},"pi":{"extensions":["./src/production-extension.ts"]},"dist":{"shasum":"4fd1251fde330c5d4b1b5222ed9ab195917d679e","tarball":"https://registry.npmjs.org/@chat-suggestion/adapter-pi/-/adapter-pi-0.1.1.tgz","fileCount":39,"integrity":"sha512-bKr0YUKr/jfHtfjX/Xd55mgSm8WO+zeJCYrDQCD8REDvOtcCRjWxFfojloNcDtHHpmBhu0u4HT1P+y4lVd8dNA==","signatures":[{"sig":"MEQCIFTNZOSNc/It0Gy3ueaHV1f6FE5xIbrOd+K+XY0jIxhjAiBtHm48D2KUSMkamVsY+R3D4WM4IK8lb38S3qKW2iLlEA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111640},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"67861c36379640c99e42b9bd412317ee94862bac","scripts":{"lint":"eslint .","test":"vitest run --config vitest.config.ts","build":"tsc -p tsconfig.build.json","check":"npm run format:check && npm run lint && npm run typecheck && npm test && npm run test:package && npm run docs:check","format":"prettier --write .","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit","docs:check":"node --test docs/test/documentation.test.mjs","format:check":"prettier --check .","test:package":"npm run build && node scripts/verify-package.mjs"},"_npmUser":{"name":"miracle3010","email":"nguyentacuong90@gmail.com"},"repository":{"url":"git+https://github.com/nguyen-ta-cuong/chat-suggestion.git","type":"git"},"_npmVersion":"11.16.0","description":"Safe inline prompt suggestions for the Pi coding agent","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.31.0","vitest":"^3.2.4","prettier":"^3.6.2","@eslint/js":"^9.31.0","typescript":"^5.8.3","@types/node":"^24.0.14","typescript-eslint":"^8.38.0","@earendil-works/pi-ai":"0.80.6","@earendil-works/pi-tui":"0.80.6","@earendil-works/pi-coding-agent":"0.80.6"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/adapter-pi_0.1.1_1783915469116_0.9275351290490186","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@chat-suggestion/adapter-pi","version":"0.1.2","keywords":["pi-package","pi-extension","inline-completion","ghost-text"],"author":{"name":"Cuong Nguyen"},"license":"MIT","_id":"@chat-suggestion/adapter-pi@0.1.2","maintainers":[{"name":"miracle3010","email":"nguyentacuong90@gmail.com"}],"homepage":"https://github.com/nguyen-ta-cuong/chat-suggestion#readme","bugs":{"url":"https://github.com/nguyen-ta-cuong/chat-suggestion/issues"},"pi":{"extensions":["./src/production-extension.ts"]},"dist":{"shasum":"ccf5657a1dcb9a0d4f6e46ace6ca26ff842f0687","tarball":"https://registry.npmjs.org/@chat-suggestion/adapter-pi/-/adapter-pi-0.1.2.tgz","fileCount":39,"integrity":"sha512-qouJ0ejXyZIb566dnBA3HKkvs8K8nYaw9K1lgKXgDyGidoPmgZZo2NPncwRQkRocZxE14mig1jlhZlwl1P8SXg==","signatures":[{"sig":"MEQCIFtB9cxuJAaA5jb79KDA9EotILyXfjqkMx8PuTFikLgOAiA0TUCiHy/qsPBTCx/Ig1E2IX82py9RubiSvnoc5D8i1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115196},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"9be3689bce62f645779b08fdff1cba2089f5cc15","scripts":{"lint":"eslint .","test":"vitest run --config vitest.config.ts","build":"tsc -p tsconfig.build.json","check":"npm run format:check && npm run lint && npm run typecheck && npm test && npm run test:package && npm run docs:check","format":"prettier --write .","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit","docs:check":"node --test docs/test/documentation.test.mjs","format:check":"prettier --check .","test:package":"npm run build && node scripts/verify-package.mjs"},"_npmUser":{"name":"miracle3010","email":"nguyentacuong90@gmail.com"},"repository":{"url":"git+https://github.com/nguyen-ta-cuong/chat-suggestion.git","type":"git"},"_npmVersion":"11.16.0","description":"Safe inline prompt suggestions for the Pi coding agent","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.31.0","vitest":"^3.2.4","prettier":"^3.6.2","@eslint/js":"^9.31.0","typescript":"^5.8.3","@types/node":"^24.0.14","typescript-eslint":"^8.38.0","@earendil-works/pi-ai":"0.80.6","@earendil-works/pi-tui":"0.80.6","@earendil-works/pi-coding-agent":"0.80.6"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/adapter-pi_0.1.2_1783955917507_0.9952218079637718","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@chat-suggestion/adapter-pi","version":"0.1.3","description":"Safe inline prompt suggestions for the Pi coding agent","type":"module","publishConfig":{"access":"public"},"license":"MIT","author":{"name":"Cuong Nguyen"},"repository":{"type":"git","url":"git+https://github.com/nguyen-ta-cuong/chat-suggestion.git"},"bugs":{"url":"https://github.com/nguyen-ta-cuong/chat-suggestion/issues"},"homepage":"https://github.com/nguyen-ta-cuong/chat-suggestion#readme","keywords":["pi-package","pi-extension","inline-completion","ghost-text"],"engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"pi":{"extensions":["./src/production-extension.ts"]},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*","@earendil-works/pi-tui":"*"},"scripts":{"build":"tsc -p tsconfig.build.json","check":"npm run format:check && npm run lint && npm run typecheck && npm test && npm run test:package && npm run docs:check","docs:check":"node --test docs/test/documentation.test.mjs","format":"prettier --write .","format:check":"prettier --check .","lint":"eslint .","prepack":"npm run build","test":"vitest run --config vitest.config.ts","test:package":"npm run build && node scripts/verify-package.mjs","typecheck":"tsc -p tsconfig.json --noEmit"},"devDependencies":{"@earendil-works/pi-ai":"0.80.6","@earendil-works/pi-coding-agent":"0.80.6","@earendil-works/pi-tui":"0.80.6","@eslint/js":"^9.31.0","@types/node":"^24.0.14","eslint":"^9.31.0","prettier":"^3.6.2","typescript":"^5.8.3","typescript-eslint":"^8.38.0","vitest":"^3.2.4"},"gitHead":"02f16531821e6256c298a5016b2994790737c134","_id":"@chat-suggestion/adapter-pi@0.1.3","_nodeVersion":"24.16.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-gAq6UAy8QGmYXRnCfropXRw6xrjMQ3hTUtBvZ/TFPawKL8DA1LDYc/LxRdNC+UZOMAr8ZG6+LP/SSEbuq7wBbA==","shasum":"4209935a37b727cb70ed4889c02ce9183461f812","tarball":"https://registry.npmjs.org/@chat-suggestion/adapter-pi/-/adapter-pi-0.1.3.tgz","fileCount":39,"unpackedSize":120718,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAL3Mtf6MS17F3EXK7oPrz2JWFYKqDPM/mq28Rlc/qX0AiA3V6/OwHdCXXv/OJa818Snc/BePa25kApTQIQHV4l5fw=="}]},"_npmUser":{"name":"miracle3010","email":"nguyentacuong90@gmail.com"},"directories":{},"maintainers":[{"name":"miracle3010","email":"nguyentacuong90@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/adapter-pi_0.1.3_1784028764182_0.9381366594280047"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-12T07:24:27.302Z","modified":"2026-07-14T11:32:44.434Z","0.1.0":"2026-07-12T07:24:27.585Z","0.1.1":"2026-07-13T04:04:29.274Z","0.1.2":"2026-07-13T15:18:37.659Z","0.1.3":"2026-07-14T11:32:44.309Z"},"bugs":{"url":"https://github.com/nguyen-ta-cuong/chat-suggestion/issues"},"author":{"name":"Cuong Nguyen"},"license":"MIT","homepage":"https://github.com/nguyen-ta-cuong/chat-suggestion#readme","keywords":["pi-package","pi-extension","inline-completion","ghost-text"],"repository":{"type":"git","url":"git+https://github.com/nguyen-ta-cuong/chat-suggestion.git"},"description":"Safe inline prompt suggestions for the Pi coding agent","maintainers":[{"name":"miracle3010","email":"nguyentacuong90@gmail.com"}],"readme":"# Chat Suggestion for Pi\n\nChat Suggestion is a Pi extension that shows a short inline continuation while\nyou write a prompt. The continuation is dimmed decoration: it does not become\npart of the prompt until you press Tab, and it is never submitted or executed\nautomatically.\n\nThis project supports [Pi](https://pi.dev/) only.\n\n## Features\n\n- Native end-of-line ghost text in Pi's terminal editor.\n- Streaming suggestions from the model already selected in Pi.\n- Active conversation context for more relevant prompt continuations.\n- Tab accepts the current suggestion once; Escape dismisses it.\n- Matching typed text keeps the remaining suffix; mismatching edits, cursor\n  movement, paste, session changes, and stale responses invalidate it.\n- Resize, focus loss, and native autocomplete temporarily hide a current ghost\n  instead of destroying it; Tab accepts only while a ghost is visibly rendered.\n- Model output is bounded and stripped of terminal control sequences.\n- No independent repository scanning, prompt logging, or telemetry.\n- Suggestions fail closed when Pi cannot provide a safe editor surface.\n\n## Install\n\nReview the source before installing because Pi extensions run with your user\npermissions. Review the package in the\n[Pi package gallery](https://pi.dev/packages/@chat-suggestion/adapter-pi?name=chat-suggestion),\nthen install it from npm through Pi:\n\n```sh\npi install npm:@chat-suggestion/adapter-pi\n```\n\nStart a new Pi session and type at the end of a prompt. After a short pause, a\ndim continuation may appear. The extension uses Pi's selected model and\ncredentials, so suggestion requests may use provider quota. After an update,\nrun `/reload` or restart Pi so the running process loads the installed version.\n\nInside Pi:\n\n```text\n/chat-suggest\n/chat-suggest off\n/chat-suggest on\n```\n\nThe status command reports the loaded package version, native editor capability,\nand last privacy-safe clear reason. Turning the extension off immediately clears\npending and visible suggestions.\n\nTo remove the package:\n\n```sh\npi remove npm:@chat-suggestion/adapter-pi\n```\n\nSee the [user guide](docs/user-guide.md) for local installation, an offline\nrendering check, privacy details, behavior, and troubleshooting.\n\n## Development\n\nRequirements are Node.js 20 or newer, npm, and Pi 0.80.6 or newer.\n\n```sh\ngit clone https://github.com/nguyen-ta-cuong/chat-suggestion.git\ncd chat-suggestion\nnpm install\nnpm run check\n```\n\nRead [CONTRIBUTING.md](CONTRIBUTING.md) before proposing a change. The\n[architecture guide](docs/architecture.md) explains the safety boundaries and\nrequest lifecycle. The [TUI stability review](docs/flicker-performance-review.md)\ndocuments the ghost-text root cause, implemented optimizations, follow-up priorities,\nand the Ralph iteration method used for the fix.\n\n## Project status\n\nThe extension intentionally supports one visual line at the logical end of the\nprompt. It yields to Pi's native autocomplete and does not replace another\nextension's custom editor. These constraints keep acceptance atomic and protect\nnormal Pi keybindings.\n\n## License\n\n[MIT](LICENSE)\n","readmeFilename":"README.md"}