{"_id":"@atenotech/interly","_rev":"6-fe0f5016e1925f0538384ffb04f3dd1b","name":"@atenotech/interly","dist-tags":{"latest":"0.1.5"},"versions":{"0.1.0":{"name":"@atenotech/interly","version":"0.1.0","_id":"@atenotech/interly@0.1.0","maintainers":[{"name":"ateno","email":"info@ateno.co"}],"homepage":"https://github.com/AtenoTech/Interly#readme","bugs":{"url":"https://github.com/AtenoTech/Interly/issues"},"bin":{"interly":"bin/interly"},"dist":{"shasum":"a0ad0bddeac435bef2097035d0dc056f47b831da","tarball":"https://registry.npmjs.org/@atenotech/interly/-/interly-0.1.0.tgz","fileCount":23,"integrity":"sha512-VIdoAXXfWBNSYzAEvJjLfcam1/9sQauXprdlJJJNiLSGoAyBeZpxwI3RA972emnDggztdtKEoICccRhN62rGPw==","signatures":[{"sig":"MEYCIQDW48u7WaJ6ANQnu1+EfCzUKcCg7MdaMHniTJ4Edg3GvwIhALHYZoYp3Xro4tt9HP50mU54w12p6oXd58bYh1AV6r91","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86837},"type":"module","engines":{"node":">=18"},"gitHead":"7812dac7505cc755803c0e47b19e747647bd2eee","private":false,"scripts":{"dev":"vite dev","lint":"eslint .","build":"vite build","format":"prettier --write .","interly":"node ./bin/interly","preview":"vite preview","build:dev":"vite build --mode development","interly:api":"node ./bin/interly api","interly:run":"node ./bin/interly run","hosting:serve":"npx firebase-tools emulators:start --only hosting","hosting:deploy":"npm run build && npx firebase-tools deploy --only hosting","publish:npm:dry-run":"npm publish --dry-run"},"_npmUser":{"name":"ateno","email":"info@ateno.co"},"repository":{"url":"git+https://github.com/AtenoTech/Interly.git","type":"git"},"_npmVersion":"11.12.1","description":"Developer-tool discovery pipeline and CLI for Interly.","directories":{},"sideEffects":false,"_nodeVersion":"26.0.0","dependencies":{"zod":"^3.24.2","clsx":"^2.1.1","cmdk":"^1.1.1","vaul":"^1.1.2","react":"^19.2.0","shadcn":"^4.10.0","sonner":"^2.0.7","date-fns":"^4.4.0","firebase":"^12.14.0","radix-ui":"^1.4.3","recharts":"3.8.0","input-otp":"^1.4.2","react-dom":"^19.2.0","nodemailer":"^8.0.10","next-themes":"^0.4.6","tailwindcss":"^4.2.1","lucide-react":"^1.17.0","firebase-admin":"^13.10.0","tailwind-merge":"^3.6.0","tw-animate-css":"^1.4.0","react-hook-form":"^7.71.2","react-day-picker":"^10.0.1","@tailwindcss/vite":"^4.2.1","@hookform/resolvers":"^5.2.2","vite-tsconfig-paths":"^6.0.2","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-tabs":"^1.1.13","embla-carousel-react":"^8.6.0","@radix-ui/react-label":"^2.1.8","@tanstack/react-query":"^5.83.0","@tanstack/react-start":"^1.167.50","@radix-ui/react-avatar":"^1.1.11","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-select":"^2.2.6","@radix-ui/react-slider":"^1.3.6","@radix-ui/react-switch":"^1.2.6","@radix-ui/react-toggle":"^1.1.10","@tanstack/react-router":"^1.168.25","react-resizable-panels":"^4.11.2","@radix-ui/react-menubar":"^1.1.16","@radix-ui/react-popover":"^1.1.15","@radix-ui/react-tooltip":"^1.2.8","@tanstack/router-plugin":"^1.167.28","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-progress":"^1.1.8","class-variance-authority":"^0.7.1","@radix-ui/react-accordion":"^1.2.12","@radix-ui/react-separator":"^1.1.8","@fontsource-variable/inter":"^5.2.8","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-collapsible":"^1.1.12","@radix-ui/react-radio-group":"^1.3.8","@radix-ui/react-scroll-area":"^1.2.10","@radix-ui/react-alert-dialog":"^1.1.15","@radix-ui/react-aspect-ratio":"^1.1.8","@radix-ui/react-context-menu":"^2.2.16","@radix-ui/react-toggle-group":"^1.1.11","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-navigation-menu":"^1.2.14"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","nitro":"3.0.260429-beta","eslint":"^9.32.0","globals":"^15.15.0","prettier":"^3.7.3","@eslint/js":"^9.32.0","typescript":"^5.8.3","@types/node":"^22.16.5","@types/react":"^19.2.0","@types/react-dom":"^19.2.0","typescript-eslint":"^8.56.1","@vitejs/plugin-react":"^5.0.4","eslint-config-prettier":"^10.1.1","eslint-plugin-prettier":"^5.2.6","eslint-plugin-react-hooks":"^5.2.0","eslint-plugin-react-refresh":"^0.4.20","@lovable.dev/vite-tanstack-config":"^2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/interly_0.1.0_1780843764716_0.6613083439628282","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@atenotech/interly","version":"0.1.1","_id":"@atenotech/interly@0.1.1","maintainers":[{"name":"ateno","email":"info@ateno.co"}],"homepage":"https://github.com/AtenoTech/Interly#readme","bugs":{"url":"https://github.com/AtenoTech/Interly/issues"},"bin":{"interly":"bin/interly"},"dist":{"shasum":"007b7da6f7b20c7fc50cba23d538ec88e0eb9060","tarball":"https://registry.npmjs.org/@atenotech/interly/-/interly-0.1.1.tgz","fileCount":24,"integrity":"sha512-Ow+Jr7IbHDztAgZhLgQxX3xt+AQshuMBxptOzFSbB7NVjvokAxhPcIV3PSx2aGvCqY830GBv07Qry7dLYtiXaQ==","signatures":[{"sig":"MEQCIDSLWwq7yaTNij16SajHucxQk7YFKxtQp0Zg63JxVuRZAiByweU2MaRrCO+AUi8KiSy3Y6+mhdgCR7g7NgHkRBGLZw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106711},"type":"module","engines":{"node":">=18"},"gitHead":"54cf6318800373fc95abcf7b024617811e024e7f","private":false,"scripts":{"dev":"vite dev","lint":"eslint .","build":"vite build","format":"prettier --write .","interly":"node ./bin/interly","preview":"vite preview","build:dev":"vite build --mode development","interly:api":"node ./bin/interly api","interly:run":"node ./bin/interly run","publish:pypi":".venv/bin/python -m twine upload py-dist/interly-${npm_package_version}*","hosting:serve":"npx firebase-tools emulators:start --only hosting","hosting:deploy":"npm run build && npx firebase-tools deploy --only hosting","publish:pypi:build":".venv/bin/python -m build --outdir py-dist","publish:pypi:check":".venv/bin/python -m twine check py-dist/interly-${npm_package_version}*","publish:npm:dry-run":"npm publish --dry-run"},"_npmUser":{"name":"ateno","email":"info@ateno.co"},"repository":{"url":"git+https://github.com/AtenoTech/Interly.git","type":"git"},"_npmVersion":"11.12.1","description":"Developer-tool discovery pipeline and CLI for Interly.","directories":{},"sideEffects":false,"_nodeVersion":"26.0.0","dependencies":{"zod":"^3.24.2","clsx":"^2.1.1","cmdk":"^1.1.1","vaul":"^1.1.2","react":"^19.2.0","shadcn":"^4.10.0","sonner":"^2.0.7","date-fns":"^4.4.0","firebase":"^12.14.0","radix-ui":"^1.4.3","recharts":"3.8.0","input-otp":"^1.4.2","react-dom":"^19.2.0","nodemailer":"^8.0.10","next-themes":"^0.4.6","tailwindcss":"^4.2.1","lucide-react":"^1.17.0","firebase-admin":"^13.10.0","tailwind-merge":"^3.6.0","tw-animate-css":"^1.4.0","react-hook-form":"^7.71.2","react-day-picker":"^10.0.1","@tailwindcss/vite":"^4.2.1","@hookform/resolvers":"^5.2.2","vite-tsconfig-paths":"^6.0.2","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-tabs":"^1.1.13","embla-carousel-react":"^8.6.0","@radix-ui/react-label":"^2.1.8","@tanstack/react-query":"^5.83.0","@tanstack/react-start":"^1.167.50","@radix-ui/react-avatar":"^1.1.11","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-select":"^2.2.6","@radix-ui/react-slider":"^1.3.6","@radix-ui/react-switch":"^1.2.6","@radix-ui/react-toggle":"^1.1.10","@tanstack/react-router":"^1.168.25","react-resizable-panels":"^4.11.2","@radix-ui/react-menubar":"^1.1.16","@radix-ui/react-popover":"^1.1.15","@radix-ui/react-tooltip":"^1.2.8","@tanstack/router-plugin":"^1.167.28","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-progress":"^1.1.8","class-variance-authority":"^0.7.1","@radix-ui/react-accordion":"^1.2.12","@radix-ui/react-separator":"^1.1.8","@fontsource-variable/inter":"^5.2.8","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-collapsible":"^1.1.12","@radix-ui/react-radio-group":"^1.3.8","@radix-ui/react-scroll-area":"^1.2.10","@radix-ui/react-alert-dialog":"^1.1.15","@radix-ui/react-aspect-ratio":"^1.1.8","@radix-ui/react-context-menu":"^2.2.16","@radix-ui/react-toggle-group":"^1.1.11","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-navigation-menu":"^1.2.14"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","nitro":"3.0.260429-beta","eslint":"^9.32.0","globals":"^15.15.0","prettier":"^3.7.3","@eslint/js":"^9.32.0","typescript":"^5.8.3","@types/node":"^22.16.5","@types/react":"^19.2.0","@types/react-dom":"^19.2.0","typescript-eslint":"^8.56.1","@vitejs/plugin-react":"^5.0.4","eslint-config-prettier":"^10.1.1","eslint-plugin-prettier":"^5.2.6","eslint-plugin-react-hooks":"^5.2.0","eslint-plugin-react-refresh":"^0.4.20","@lovable.dev/vite-tanstack-config":"^2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/interly_0.1.1_1780845800414_0.8322606470118534","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@atenotech/interly","version":"0.1.2","_id":"@atenotech/interly@0.1.2","maintainers":[{"name":"ateno","email":"info@ateno.co"}],"homepage":"https://github.com/AtenoTech/Interly#readme","bugs":{"url":"https://github.com/AtenoTech/Interly/issues"},"bin":{"interly":"bin/interly"},"dist":{"shasum":"a29f0e21841f7a5fdf5922a4b5c5dee3a60938d3","tarball":"https://registry.npmjs.org/@atenotech/interly/-/interly-0.1.2.tgz","fileCount":24,"integrity":"sha512-s2mcMCBQeMR6Qwjdc3uM5S7A3FHMzHqRrw7xHikexBPodgkkbttDr5qo1C5ciBS/AZ/B8VhxsVMp59EVyBrCJw==","signatures":[{"sig":"MEUCIQDrLgS9PfPOUfLY3bU6yYCSC7Ow3E8w3fbkfGjGTxeY5AIgOBARcWwXT068CsXgAPwz3uKwARAMRtA/TKatzBQmIZA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":110958},"type":"module","engines":{"node":">=18"},"gitHead":"54cf6318800373fc95abcf7b024617811e024e7f","private":false,"scripts":{"dev":"vite dev","lint":"eslint .","build":"vite build","format":"prettier --write .","interly":"node ./bin/interly","preview":"vite preview","build:dev":"vite build --mode development","interly:api":"node ./bin/interly api","interly:run":"node ./bin/interly run","publish:pypi":".venv/bin/python -m twine upload py-dist/interly-${npm_package_version}*","hosting:serve":"npx firebase-tools emulators:start --only hosting","hosting:deploy":"npm run build && npx firebase-tools deploy --only hosting","publish:pypi:build":".venv/bin/python -m build --outdir py-dist","publish:pypi:check":".venv/bin/python -m twine check py-dist/interly-${npm_package_version}*","publish:npm:dry-run":"npm publish --dry-run"},"_npmUser":{"name":"ateno","email":"info@ateno.co"},"repository":{"url":"git+https://github.com/AtenoTech/Interly.git","type":"git"},"_npmVersion":"11.12.1","description":"Developer-tool discovery pipeline and CLI for Interly.","directories":{},"sideEffects":false,"_nodeVersion":"26.0.0","dependencies":{"zod":"^3.24.2","clsx":"^2.1.1","cmdk":"^1.1.1","vaul":"^1.1.2","react":"^19.2.0","shadcn":"^4.10.0","sonner":"^2.0.7","date-fns":"^4.4.0","firebase":"^12.14.0","radix-ui":"^1.4.3","recharts":"3.8.0","input-otp":"^1.4.2","react-dom":"^19.2.0","nodemailer":"^8.0.10","next-themes":"^0.4.6","tailwindcss":"^4.2.1","lucide-react":"^1.17.0","firebase-admin":"^13.10.0","tailwind-merge":"^3.6.0","tw-animate-css":"^1.4.0","react-hook-form":"^7.71.2","react-day-picker":"^10.0.1","@tailwindcss/vite":"^4.2.1","@hookform/resolvers":"^5.2.2","vite-tsconfig-paths":"^6.0.2","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-tabs":"^1.1.13","embla-carousel-react":"^8.6.0","@radix-ui/react-label":"^2.1.8","@tanstack/react-query":"^5.83.0","@tanstack/react-start":"^1.167.50","@radix-ui/react-avatar":"^1.1.11","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-select":"^2.2.6","@radix-ui/react-slider":"^1.3.6","@radix-ui/react-switch":"^1.2.6","@radix-ui/react-toggle":"^1.1.10","@tanstack/react-router":"^1.168.25","react-resizable-panels":"^4.11.2","@radix-ui/react-menubar":"^1.1.16","@radix-ui/react-popover":"^1.1.15","@radix-ui/react-tooltip":"^1.2.8","@tanstack/router-plugin":"^1.167.28","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-progress":"^1.1.8","class-variance-authority":"^0.7.1","@radix-ui/react-accordion":"^1.2.12","@radix-ui/react-separator":"^1.1.8","@fontsource-variable/inter":"^5.2.8","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-collapsible":"^1.1.12","@radix-ui/react-radio-group":"^1.3.8","@radix-ui/react-scroll-area":"^1.2.10","@radix-ui/react-alert-dialog":"^1.1.15","@radix-ui/react-aspect-ratio":"^1.1.8","@radix-ui/react-context-menu":"^2.2.16","@radix-ui/react-toggle-group":"^1.1.11","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-navigation-menu":"^1.2.14"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","nitro":"3.0.260429-beta","eslint":"^9.32.0","globals":"^15.15.0","prettier":"^3.7.3","@eslint/js":"^9.32.0","typescript":"^5.8.3","@types/node":"^22.16.5","@types/react":"^19.2.0","@types/react-dom":"^19.2.0","typescript-eslint":"^8.56.1","@vitejs/plugin-react":"^5.0.4","eslint-config-prettier":"^10.1.1","eslint-plugin-prettier":"^5.2.6","eslint-plugin-react-hooks":"^5.2.0","eslint-plugin-react-refresh":"^0.4.20","@lovable.dev/vite-tanstack-config":"^2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/interly_0.1.2_1780846113140_0.2207454547596135","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@atenotech/interly","version":"0.1.3","_id":"@atenotech/interly@0.1.3","maintainers":[{"name":"ateno","email":"info@ateno.co"}],"homepage":"https://github.com/AtenoTech/Interly#readme","bugs":{"url":"https://github.com/AtenoTech/Interly/issues"},"bin":{"interly":"bin/interly"},"dist":{"shasum":"833cd2dc640cf5dd37a7fc3bf5e5a126ae03d22c","tarball":"https://registry.npmjs.org/@atenotech/interly/-/interly-0.1.3.tgz","fileCount":24,"integrity":"sha512-sgJwhGfCmJftJaLeaQMVA7OFfiz5vnZXlFapxiOrxgz5wM7S90ImBogWkVVLNxSzpcZLhYkWRfqi8WO4IiRlcA==","signatures":[{"sig":"MEQCIDY9PBKeszNqbblFEAC89Xbcxpzz1wBtYVW42/WOvVSaAiBu8QOUIe1ylDW/96xQaPTa7J1/tt6/Y9f8WNAtX/Z3Cg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113522},"type":"module","engines":{"node":">=18"},"gitHead":"54cf6318800373fc95abcf7b024617811e024e7f","private":false,"scripts":{"dev":"vite dev","lint":"eslint .","build":"vite build","format":"prettier --write .","interly":"node ./bin/interly","preview":"vite preview","build:dev":"vite build --mode development","interly:api":"node ./bin/interly api","interly:run":"node ./bin/interly run","publish:pypi":".venv/bin/python -m twine upload py-dist/interly-${npm_package_version}*","hosting:serve":"npx firebase-tools emulators:start --only hosting","hosting:deploy":"npm run build && npx firebase-tools deploy --only hosting","publish:pypi:build":".venv/bin/python -m build --outdir py-dist","publish:pypi:check":".venv/bin/python -m twine check py-dist/interly-${npm_package_version}*","publish:npm:dry-run":"npm publish --dry-run"},"_npmUser":{"name":"ateno","email":"info@ateno.co"},"repository":{"url":"git+https://github.com/AtenoTech/Interly.git","type":"git"},"_npmVersion":"11.12.1","description":"Developer-tool discovery pipeline and CLI for Interly.","directories":{},"sideEffects":false,"_nodeVersion":"26.0.0","dependencies":{"zod":"^3.24.2","clsx":"^2.1.1","cmdk":"^1.1.1","vaul":"^1.1.2","react":"^19.2.0","shadcn":"^4.10.0","sonner":"^2.0.7","date-fns":"^4.4.0","firebase":"^12.14.0","radix-ui":"^1.4.3","recharts":"3.8.0","input-otp":"^1.4.2","react-dom":"^19.2.0","nodemailer":"^8.0.10","next-themes":"^0.4.6","tailwindcss":"^4.2.1","lucide-react":"^1.17.0","firebase-admin":"^13.10.0","tailwind-merge":"^3.6.0","tw-animate-css":"^1.4.0","react-hook-form":"^7.71.2","react-day-picker":"^10.0.1","@tailwindcss/vite":"^4.2.1","@hookform/resolvers":"^5.2.2","vite-tsconfig-paths":"^6.0.2","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-tabs":"^1.1.13","embla-carousel-react":"^8.6.0","@radix-ui/react-label":"^2.1.8","@tanstack/react-query":"^5.83.0","@tanstack/react-start":"^1.167.50","@radix-ui/react-avatar":"^1.1.11","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-select":"^2.2.6","@radix-ui/react-slider":"^1.3.6","@radix-ui/react-switch":"^1.2.6","@radix-ui/react-toggle":"^1.1.10","@tanstack/react-router":"^1.168.25","react-resizable-panels":"^4.11.2","@radix-ui/react-menubar":"^1.1.16","@radix-ui/react-popover":"^1.1.15","@radix-ui/react-tooltip":"^1.2.8","@tanstack/router-plugin":"^1.167.28","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-progress":"^1.1.8","class-variance-authority":"^0.7.1","@radix-ui/react-accordion":"^1.2.12","@radix-ui/react-separator":"^1.1.8","@fontsource-variable/inter":"^5.2.8","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-collapsible":"^1.1.12","@radix-ui/react-radio-group":"^1.3.8","@radix-ui/react-scroll-area":"^1.2.10","@radix-ui/react-alert-dialog":"^1.1.15","@radix-ui/react-aspect-ratio":"^1.1.8","@radix-ui/react-context-menu":"^2.2.16","@radix-ui/react-toggle-group":"^1.1.11","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-navigation-menu":"^1.2.14"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","nitro":"3.0.260429-beta","eslint":"^9.32.0","globals":"^15.15.0","prettier":"^3.7.3","@eslint/js":"^9.32.0","typescript":"^5.8.3","@types/node":"^22.16.5","@types/react":"^19.2.0","@types/react-dom":"^19.2.0","typescript-eslint":"^8.56.1","@vitejs/plugin-react":"^5.0.4","eslint-config-prettier":"^10.1.1","eslint-plugin-prettier":"^5.2.6","eslint-plugin-react-hooks":"^5.2.0","eslint-plugin-react-refresh":"^0.4.20","@lovable.dev/vite-tanstack-config":"^2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/interly_0.1.3_1780846605746_0.37224637675318073","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@atenotech/interly","version":"0.1.4","_id":"@atenotech/interly@0.1.4","maintainers":[{"name":"ateno","email":"info@ateno.co"}],"homepage":"https://github.com/AtenoTech/Interly#readme","bugs":{"url":"https://github.com/AtenoTech/Interly/issues"},"bin":{"interly":"bin/interly"},"dist":{"shasum":"6db2933b988487aed43778c6c904e995a93e8112","tarball":"https://registry.npmjs.org/@atenotech/interly/-/interly-0.1.4.tgz","fileCount":24,"integrity":"sha512-PVYeI3zIrtstO9LpVpDjXXS9KnPtx76XkZgg8SYIz2i160VRx2Ks8IUzdmca8BKAPJnttHstdWbuZuFjx+eong==","signatures":[{"sig":"MEUCIQDCBDxPXL2mhztFDxoO2MBKoPTfuCZ+sYPiZ8tLyq30EAIgKg5W/2/BOZ1a98nXp0g/DF+MVr9YarGf0hD5KOcq1Mc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113963},"type":"module","engines":{"node":">=18"},"gitHead":"54cf6318800373fc95abcf7b024617811e024e7f","private":false,"scripts":{"dev":"vite dev","lint":"eslint .","build":"vite build","format":"prettier --write .","interly":"node ./bin/interly","preview":"vite preview","build:dev":"vite build --mode development","interly:api":"node ./bin/interly api","interly:run":"node ./bin/interly run","publish:pypi":".venv/bin/python -m twine upload py-dist/interly-${npm_package_version}*","hosting:serve":"npx firebase-tools emulators:start --only hosting","hosting:deploy":"npm run build && npx firebase-tools deploy --only hosting","publish:pypi:build":".venv/bin/python -m build --outdir py-dist","publish:pypi:check":".venv/bin/python -m twine check py-dist/interly-${npm_package_version}*","publish:npm:dry-run":"npm publish --dry-run"},"_npmUser":{"name":"ateno","email":"info@ateno.co"},"repository":{"url":"git+https://github.com/AtenoTech/Interly.git","type":"git"},"_npmVersion":"11.12.1","description":"Developer-tool discovery pipeline and CLI for Interly.","directories":{},"sideEffects":false,"_nodeVersion":"26.0.0","dependencies":{"zod":"^3.24.2","clsx":"^2.1.1","cmdk":"^1.1.1","vaul":"^1.1.2","react":"^19.2.0","shadcn":"^4.10.0","sonner":"^2.0.7","date-fns":"^4.4.0","firebase":"^12.14.0","radix-ui":"^1.4.3","recharts":"3.8.0","input-otp":"^1.4.2","react-dom":"^19.2.0","nodemailer":"^8.0.10","next-themes":"^0.4.6","tailwindcss":"^4.2.1","lucide-react":"^1.17.0","firebase-admin":"^13.10.0","tailwind-merge":"^3.6.0","tw-animate-css":"^1.4.0","react-hook-form":"^7.71.2","react-day-picker":"^10.0.1","@tailwindcss/vite":"^4.2.1","@hookform/resolvers":"^5.2.2","vite-tsconfig-paths":"^6.0.2","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-tabs":"^1.1.13","embla-carousel-react":"^8.6.0","@radix-ui/react-label":"^2.1.8","@tanstack/react-query":"^5.83.0","@tanstack/react-start":"^1.167.50","@radix-ui/react-avatar":"^1.1.11","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-select":"^2.2.6","@radix-ui/react-slider":"^1.3.6","@radix-ui/react-switch":"^1.2.6","@radix-ui/react-toggle":"^1.1.10","@tanstack/react-router":"^1.168.25","react-resizable-panels":"^4.11.2","@radix-ui/react-menubar":"^1.1.16","@radix-ui/react-popover":"^1.1.15","@radix-ui/react-tooltip":"^1.2.8","@tanstack/router-plugin":"^1.167.28","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-progress":"^1.1.8","class-variance-authority":"^0.7.1","@radix-ui/react-accordion":"^1.2.12","@radix-ui/react-separator":"^1.1.8","@fontsource-variable/inter":"^5.2.8","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-collapsible":"^1.1.12","@radix-ui/react-radio-group":"^1.3.8","@radix-ui/react-scroll-area":"^1.2.10","@radix-ui/react-alert-dialog":"^1.1.15","@radix-ui/react-aspect-ratio":"^1.1.8","@radix-ui/react-context-menu":"^2.2.16","@radix-ui/react-toggle-group":"^1.1.11","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-navigation-menu":"^1.2.14"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","nitro":"3.0.260429-beta","eslint":"^9.32.0","globals":"^15.15.0","prettier":"^3.7.3","@eslint/js":"^9.32.0","typescript":"^5.8.3","@types/node":"^22.16.5","@types/react":"^19.2.0","@types/react-dom":"^19.2.0","typescript-eslint":"^8.56.1","@vitejs/plugin-react":"^5.0.4","eslint-config-prettier":"^10.1.1","eslint-plugin-prettier":"^5.2.6","eslint-plugin-react-hooks":"^5.2.0","eslint-plugin-react-refresh":"^0.4.20","@lovable.dev/vite-tanstack-config":"^2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/interly_0.1.4_1780847118831_0.06508899874066021","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@atenotech/interly","version":"0.1.5","private":false,"description":"Developer-tool discovery pipeline and CLI for Interly.","bin":{"interly":"bin/interly"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/AtenoTech/Interly.git"},"bugs":{"url":"https://github.com/AtenoTech/Interly/issues"},"homepage":"https://github.com/AtenoTech/Interly#readme","engines":{"node":">=18"},"sideEffects":false,"type":"module","scripts":{"dev":"vite dev","build":"vite build","build:dev":"vite build --mode development","preview":"vite preview","lint":"eslint .","format":"prettier --write .","interly":"node ./bin/interly","interly:run":"node ./bin/interly run","interly:api":"node ./bin/interly api","publish:npm:dry-run":"npm publish --dry-run","publish:pypi:build":".venv/bin/python -m build --outdir py-dist","publish:pypi:check":".venv/bin/python -m twine check py-dist/interly-${npm_package_version}*","publish:pypi":".venv/bin/python -m twine upload py-dist/interly-${npm_package_version}*","hosting:deploy":"npm run build && npx firebase-tools deploy --only hosting","hosting:serve":"npx firebase-tools emulators:start --only hosting"},"dependencies":{"@fontsource-variable/inter":"^5.2.8","@hookform/resolvers":"^5.2.2","@radix-ui/react-accordion":"^1.2.12","@radix-ui/react-alert-dialog":"^1.1.15","@radix-ui/react-aspect-ratio":"^1.1.8","@radix-ui/react-avatar":"^1.1.11","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-collapsible":"^1.1.12","@radix-ui/react-context-menu":"^2.2.16","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-label":"^2.1.8","@radix-ui/react-menubar":"^1.1.16","@radix-ui/react-navigation-menu":"^1.2.14","@radix-ui/react-popover":"^1.1.15","@radix-ui/react-progress":"^1.1.8","@radix-ui/react-radio-group":"^1.3.8","@radix-ui/react-scroll-area":"^1.2.10","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.8","@radix-ui/react-slider":"^1.3.6","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-switch":"^1.2.6","@radix-ui/react-tabs":"^1.1.13","@radix-ui/react-toggle":"^1.1.10","@radix-ui/react-toggle-group":"^1.1.11","@radix-ui/react-tooltip":"^1.2.8","@tailwindcss/vite":"^4.2.1","@tanstack/react-query":"^5.83.0","@tanstack/react-router":"^1.168.25","@tanstack/react-start":"^1.167.50","@tanstack/router-plugin":"^1.167.28","class-variance-authority":"^0.7.1","clsx":"^2.1.1","cmdk":"^1.1.1","date-fns":"^4.4.0","embla-carousel-react":"^8.6.0","firebase":"^12.14.0","firebase-admin":"^13.10.0","input-otp":"^1.4.2","lucide-react":"^1.17.0","next-themes":"^0.4.6","nodemailer":"^8.0.10","radix-ui":"^1.4.3","react":"^19.2.0","react-day-picker":"^10.0.1","react-dom":"^19.2.0","react-hook-form":"^7.71.2","react-resizable-panels":"^4.11.2","recharts":"3.8.0","shadcn":"^4.10.0","sonner":"^2.0.7","tailwind-merge":"^3.6.0","tailwindcss":"^4.2.1","tw-animate-css":"^1.4.0","vaul":"^1.1.2","vite-tsconfig-paths":"^6.0.2","zod":"^3.24.2"},"devDependencies":{"@eslint/js":"^9.32.0","@lovable.dev/vite-tanstack-config":"^2.1.1","@types/node":"^22.16.5","@types/react":"^19.2.0","@types/react-dom":"^19.2.0","@vitejs/plugin-react":"^5.0.4","eslint":"^9.32.0","eslint-config-prettier":"^10.1.1","eslint-plugin-prettier":"^5.2.6","eslint-plugin-react-hooks":"^5.2.0","eslint-plugin-react-refresh":"^0.4.20","globals":"^15.15.0","nitro":"3.0.260429-beta","prettier":"^3.7.3","typescript":"^5.8.3","typescript-eslint":"^8.56.1","vite":"^7.3.1"},"gitHead":"54cf6318800373fc95abcf7b024617811e024e7f","_id":"@atenotech/interly@0.1.5","_nodeVersion":"26.0.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-9MN5CPFsoJihTEx90FPxKl+mM2Xkw8b+o5eG26DPQYWCOj96PyqbAjfdq3K+Gb7FVPbCXiNHNCDtZwoSjEI82A==","shasum":"5d39e903e41b50106b1ffc7364524c48ebe41ed7","tarball":"https://registry.npmjs.org/@atenotech/interly/-/interly-0.1.5.tgz","fileCount":24,"unpackedSize":118287,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEaMNgZrBHu84Y9rSo/VbXu1CjIEu46knm6ye8TUNZXSAiEAlKtlUM/bkBxxqobTAJhSXiN2h9IyT+sU1VVffuXkgfI="}]},"_npmUser":{"name":"ateno","email":"info@ateno.co"},"directories":{},"maintainers":[{"name":"ateno","email":"info@ateno.co"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/interly_0.1.5_1780848105230_0.9883972046405716"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-07T14:49:24.503Z","modified":"2026-06-07T16:01:45.502Z","0.1.0":"2026-06-07T14:49:24.848Z","0.1.1":"2026-06-07T15:23:20.556Z","0.1.2":"2026-06-07T15:28:33.289Z","0.1.3":"2026-06-07T15:36:45.900Z","0.1.4":"2026-06-07T15:45:18.963Z","0.1.5":"2026-06-07T16:01:45.359Z"},"bugs":{"url":"https://github.com/AtenoTech/Interly/issues"},"homepage":"https://github.com/AtenoTech/Interly#readme","repository":{"type":"git","url":"git+https://github.com/AtenoTech/Interly.git"},"description":"Developer-tool discovery pipeline and CLI for Interly.","maintainers":[{"name":"ateno","email":"info@ateno.co"}],"readme":"# Interly MVP\n\nInterly is a developer-tool discovery pipeline layered into the existing TanStack Start app. The current UI keeps using the existing Interly shell and routes, while a small Python sidecar handles collection, deduplication, Grok classification, scoring, SQLite persistence, digest email, and the `/api/interly/*` backend.\n\n## Multi-user Integrations (Firebase)\n\nInterly now supports user-owned destination integrations for:\n\n- Email\n- Slack OAuth and Slack webhooks (advanced/manual)\n- Discord OAuth bot integration and Discord webhooks (advanced/manual)\n- Telegram chat delivery via deep-link bot connect\n\nThe integrations system is implemented in app server routes and uses Firebase as the source of truth:\n\n- Protected APIs verify `Authorization: Bearer <Firebase ID token>` with Firebase Admin.\n- Per-user data is stored under `users/{uid}/integrations/{integrationId}` and `users/{uid}/digestDeliveries/{deliveryId}`.\n- Delivery logs are written to `users/{uid}/integrations/{integrationId}/deliveryLogs/{logId}`.\n- Integration secrets are encrypted server-side with `ENCRYPTION_KEY` and stored under `users/{uid}/integrationSecrets/{integrationId}`.\n- Telegram pairing uses `telegramConnectionCodes/{code}` and a webhook endpoint.\n\nNew UI:\n\n- Integrations page: `/app/integrations`\n\nBackend endpoints:\n\n- `GET /api/interly/integrations`\n- `POST /api/interly/integrations`\n- `PATCH /api/interly/integrations/:integrationId`\n- `DELETE /api/interly/integrations/:integrationId`\n- `POST /api/interly/integrations/:integrationId/test`\n- `GET /api/interly/integrations/:integrationId/logs`\n- `POST /api/interly/send-digest`\n- `GET /api/interly/slack/connect`\n- `GET /api/interly/slack/callback`\n- `POST /api/interly/slack/select-channel`\n- `GET /api/interly/discord/connect`\n- `GET /api/interly/discord/callback`\n- `GET /api/interly/discord/guilds-or-channels`\n- `POST /api/interly/discord/select-channel`\n- `POST /api/interly/telegram/create-deep-link`\n- `GET /api/interly/telegram/connection-status`\n- `POST /api/interly/telegram/create-connection-code`\n- `POST /api/interly/telegram/confirm-connection-code`\n- `POST /api/telegram/webhook`\n- `POST /api/gumroad/webhook`\n- `POST /api/gumroad/reconcile`\n- `POST /api/interly/ateno-search`\n- `POST /api/interly/ateno-search-email`\n\n## Required environment variables\n\nCreate a local `.env` file or export these before running the Python sidecar:\n\n```bash\nGROK_API_KEY=\nATENO_SEARCH_GROK_MODEL=grok-4.3\nGITHUB_TOKEN=\nGMAIL_USER=\nGMAIL_APP_PASSWORD=\nRECIPIENT_EMAIL=\nDAYS_LOOKBACK=3\nMIN_GITHUB_STARS=10\nMAX_EMAIL_ITEMS=10\nINTERLY_API_BASE_URL=http://127.0.0.1:8001\n\n# Firebase Admin (server)\nFIREBASE_ADMIN_PROJECT_ID=\nFIREBASE_ADMIN_CLIENT_EMAIL=\nFIREBASE_ADMIN_PRIVATE_KEY=\n# Alternative for local development\n# GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/firebase-service-account.json\n\n# Destination delivery\nENCRYPTION_KEY=\nSMTP_USER=\nSMTP_PASSWORD=\nEMAIL_FROM=\nTELEGRAM_BOT_TOKEN=\nTELEGRAM_BOT_USERNAME=InterlyBot\nTELEGRAM_WEBHOOK_SECRET=\n\n# Gumroad payments\nGUMROAD_CHECKOUT_URL=https://checkout.interly.ateno.co\nGUMROAD_WEBHOOK_SECRET=\n\n# Slack OAuth\nSLACK_CLIENT_ID=\nSLACK_CLIENT_SECRET=\nSLACK_REDIRECT_URI=\nSLACK_SIGNING_SECRET=\n\n# Discord OAuth/bot\nDISCORD_CLIENT_ID=\nDISCORD_CLIENT_SECRET=\nDISCORD_BOT_TOKEN=\nDISCORD_REDIRECT_URI=\n```\n\nNotes:\n\n- `GROK_API_KEY` powers Grok classification and summarization. If it is missing, the pipeline falls back conservatively and marks items as excluded.\n- `ATENO_SEARCH_GROK_MODEL` powers the Ateno Search endpoint. It defaults to `grok-4.3` because this endpoint uses Grok web search.\n- `GITHUB_TOKEN` avoids low anonymous GitHub rate limits.\n- `INTERLY_API_BASE_URL` is read by the TanStack app on the server side and defaults to `http://127.0.0.1:8001`.\n- `ENCRYPTION_KEY` is mandatory when creating webhook or Telegram integrations. Use a long random secret.\n- `FIREBASE_ADMIN_*` credentials are used for ID token verification and Firestore writes.\n- For local development, you can alternatively set `GOOGLE_APPLICATION_CREDENTIALS` to the absolute path of a Firebase service-account JSON key.\n- In GCP runtimes with ADC, explicit Firebase Admin credentials can be omitted.\n- Telegram webhook should be configured with `x-telegram-bot-api-secret-token` matching `TELEGRAM_WEBHOOK_SECRET`.\n- Gumroad payment setup and deployment notes are in [`docs/payments.md`](docs/payments.md).\n\n## Local setup\n\nInstall the frontend as usual, then create the Python virtualenv once:\n\n```bash\n/opt/homebrew/bin/python3 -m venv .venv\n.venv/bin/python -m pip install -r requirements.txt\n```\n\nStart the Python API in one terminal:\n\n```bash\nnpm run interly:api\n```\n\nStart the app in another terminal:\n\n```bash\nnpm run dev\n```\n\n## CLI\n\nInterly includes a local CLI that uses the project Python sidecar. After setup, run it through npm:\n\n```bash\nnpm run interly\nnpm run interly -- --help\n```\n\nCommon commands:\n\n```bash\nnpm run interly -- init-db\nnpm run interly -- run\nnpm run interly -- run --send-email\nnpm run interly -- digest\nnpm run interly -- digest my code\nnpm run interly -- competitor analysis\nnpm run interly -- ask \"what should I improve in this repo?\"\nnpm run interly -- summary\nnpm run interly -- tools --min-score 7 --limit 5\nnpm run interly -- sources\nnpm run interly -- api --host 127.0.0.1 --port 8001\n```\n\nPublished users can run the same assistant-style commands directly:\n\n```bash\ninterly\ninterly digest my code\ninterly competitor analysis\ninterly ask \"what should I improve in this repo?\"\n```\n\nInside the interactive terminal interface, type `/` to show live slash-command suggestions.\n\nThe npm scripts use the same CLI:\n\n```bash\nnpm run interly:run\nnpm run interly:api\n```\n\n## Publishing the CLI\n\n### npm\n\nThe npm package is configured as `@atenotech/interly`, matching the Ateno npm organization scope.\n\nCheck the package contents before publishing:\n\n```bash\nnpm run publish:npm:dry-run\n```\n\nPublish from an npm account that belongs to the `atenotech` organization:\n\n```bash\nnpm login\nnpm publish\n```\n\nAfter publish, users can run:\n\n```bash\nnpx @atenotech/interly --help\nnpm install -g @atenotech/interly\ninterly --help\n```\n\n### PyPI\n\nThe Python package is configured as `interly` with the console command `interly`.\n\nBuild and publish from a PyPI account that owns the project, or from the approved Ateno organization once billing/approval is active:\n\n```bash\n.venv/bin/python -m pip install build twine\n.venv/bin/python -m build --outdir py-dist\n.venv/bin/python -m twine check py-dist/interly-0.1.5*\n.venv/bin/python -m twine upload py-dist/interly-0.1.5*\n```\n\nThis repo also has a frontend `dist/` directory, so keep Python release artifacts in `py-dist/`.\n\nAfter publish, users can run:\n\n```bash\npipx install interly\ninterly --help\n```\n\nTrigger the same flows from HTTP:\n\n```bash\ncurl -X POST http://127.0.0.1:8001/api/interly/run\ncurl -X POST http://127.0.0.1:8001/api/interly/send-email\n```\n\n## Dashboard location\n\n- Daily radar dashboard: `/app/radar`\n- Digest preview and send controls: `/app/digest`\n- Source health and sync status: `/app/sources`\n\nThe Radar page now reads live Interly summary and tool data from the Python backend and adds filters for category, source, minimum score, emailed state, open-source only, and AI-only.\n\n## Current backend layout\n\n- `interly_py/cli.py`: CLI entrypoint for `interly`, including assistant-style prompts plus run, digest, summary, tools, sources, and API commands\n- `interly_py/assistant_cli.py`: terminal assistant commands for code digests, competitor analysis, and repository-aware prompts\n- `main.py`: compatibility entrypoint for `python main.py`\n- `interly_py/api.py`: FastAPI app exposing `/api/interly/summary`, `/api/interly/tools`, `/api/interly/sources`, `/api/interly/run`, `/api/interly/send-email`, and Ateno Search endpoints\n- `interly_py/ateno_search.py`: Ateno Search style Grok web-search endpoint for finding tools from user query, interests, and allowed sites\n- `interly_py/collectors/*`: GitHub Search, Hacker News Algolia, and RSS collectors\n- `interly_py/grok_client.py`: Grok client and strict-JSON classification handling\n- `interly_py/scoring.py`: scoring and rejection logic\n- `interly_py/repository.py`: SQLite reads/writes for `tools`, `sources`, and `emails_sent`\n- `data/interly.db`: local SQLite database\n\n## Deployment options later\n\nThis repo currently deploys the frontend through Firebase Hosting, which does not run Python. The practical production options are:\n\n1. Cloud Run service for the Python API plus a Cloud Run Job or Cloud Scheduler trigger for the daily run.\n2. GitHub Actions on a schedule to run `main.py`, with the frontend pointing at the deployed Python API.\n3. A VM or container with cron running `main.py` daily and `uvicorn interly_py.api:app` as the always-on API.\n\nFor all three options, keep the current TanStack app as the frontend and inject `INTERLY_API_BASE_URL` into the frontend server runtime.\n","readmeFilename":"README.md"}