{"_id":"@elgap/ai-curator","_rev":"11-6b9af8cc4311e1c636d22c8e2be38406","name":"@elgap/ai-curator","dist-tags":{"latest":"0.4.6-beta"},"versions":{"0.3.0-beta":{"name":"@elgap/ai-curator","version":"0.3.0-beta","keywords":["curator","dataset-curation","llm","fine-tuning","dataset","ai","machine-learning","training-data"],"author":{"name":"Ivan Pavkovic"},"license":"MIT","_id":"@elgap/ai-curator@0.3.0-beta","maintainers":[{"name":"pavko","email":"pavko@elgap.rs"}],"homepage":"https://github.com/elgap/ai-curator#readme","bugs":{"url":"https://github.com/elgap/ai-curator/issues"},"bin":{"curator":"bin/cli.js"},"dist":{"shasum":"47c60dee32b6b0472931f06200053fe051ab1b40","tarball":"https://registry.npmjs.org/@elgap/ai-curator/-/ai-curator-0.3.0-beta.tgz","fileCount":607,"integrity":"sha512-RNcEBJLuL1+AYR9ldVeuLxIOyNVKaVOdT7JWrB1tdoVuVt8SS63zTai8ssstyvk8g1umRYEChzfcrYTTYBra3g==","signatures":[{"sig":"MEUCIQCnNSTnpMh1TeIU9JhnYgqg0VbCczuBJjzr/j+yVYfLsAIgAdW6GcsaIfaCn2OIXDvOoVoyIQXF65Btx8j+x5ViisA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7175605},"main":"./bin/cli.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"8dc26815885795ec8338434241b08310929c2501","private":false,"scripts":{"dev":"nuxt dev","lint":"eslint . --fix","test":"vitest","build":"nuxt build","clean":"rm -rf .output node_modules/.cache","format":"prettier --write .","prepare":"husky","preview":"nuxt preview","db:reset":"node bin/cli.js reset --force","generate":"nuxt generate","db:studio":"drizzle-kit studio","typecheck":"vue-tsc --noEmit","db:migrate":"drizzle-kit migrate","db:generate":"drizzle-kit generate:sqlite","postinstall":"nuxt prepare","test:coverage":"vitest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"pavko","email":"pavko@elgap.rs"},"overrides":{"glob":"^13.0.6","serialize-javascript":"^7.0.3"},"repository":{"url":"git+https://github.com/elgap/ai-curator.git","type":"git"},"_npmVersion":"10.8.2","description":"AI Curator - Privacy-first dataset curation for LLM fine-tuning","directories":{},"lint-staged":{"*.{js,ts,vue}":["eslint --fix","prettier --write"],"*.{json,css,md}":["prettier --write"]},"_nodeVersion":"20.20.1","dependencies":{"vue":"^3.5.30","zod":"^4.3.6","pinia":"^3.0.4","adm-zip":"^0.5.16","@nuxt/ui":"^4.5.1","chart.js":"^4.4.9","vue-router":"^4.5.0","@pinia/nuxt":"^0.11.3","drizzle-orm":"^0.45.1","kaggle-node":"^1.1.2","vue-chartjs":"^5.3.2","better-sqlite3":"^12.6.2","lucide-vue-next":"^0.577.0","@huggingface/hub":"^2.11.0","@types/better-sqlite3":"^7.6.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"nuxt":"^4.3.1","husky":"^9.1.7","eslint":"^9.21.0","vitest":"^3.0.7","vue-tsc":"^2.2.8","prettier":"^3.5.3","happy-dom":"^17.4.0","typescript":"^5.9.3","drizzle-kit":"^0.31.9","lint-staged":"^15.4.3","@nuxt/eslint":"^1.2.0","@eslint/compat":"^2.0.3","@nuxt/devtools":"^3.2.3","@vue/test-utils":"^2.4.6","eslint-plugin-vue":"^9.32.0","vue-eslint-parser":"^9.4.3","@typescript-eslint/parser":"^8.26.0","@typescript-eslint/eslint-plugin":"^8.26.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-curator_0.3.0-beta_1775218358929_0.7473603946458276","host":"s3://npm-registry-packages-npm-production"}},"0.3.1-beta":{"name":"@elgap/ai-curator","version":"0.3.1-beta","keywords":["curator","dataset-curation","llm","fine-tuning","dataset","ai","machine-learning","training-data"],"author":{"name":"Ivan Pavkovic"},"license":"MIT","_id":"@elgap/ai-curator@0.3.1-beta","maintainers":[{"name":"pavko","email":"pavko@elgap.rs"}],"homepage":"https://github.com/elgap/ai-curator#readme","bugs":{"url":"https://github.com/elgap/ai-curator/issues"},"bin":{"curator":"dist/curator.mjs"},"dist":{"shasum":"679b69d84843bf8559791bce642db0f68e8b91ca","tarball":"https://registry.npmjs.org/@elgap/ai-curator/-/ai-curator-0.3.1-beta.tgz","fileCount":617,"integrity":"sha512-9wrTmeuOAzo13UK0GU94wKDasUAyUsXIo2KMp/X+SW7fXsV+Rhoh+/FjJOWV0NLgQW8VEQhBBM6U/I1Ip2U2Ew==","signatures":[{"sig":"MEYCIQCNgpz41gYEmPg/VwS/NW+DmHpuGbLFTZ+8JngSrdp2wQIhAO+fUlZ8PTSpOp5A2b/IA7K2bOjddon6Wl98y7qhabet","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11294097},"main":"./dist/curator.mjs","type":"module","engines":{"node":">=18.0.0"},"gitHead":"fd106d7b0bff0d0a4a333998a5388b3ecc5945a6","private":false,"scripts":{"dev":"nuxt dev","lint":"eslint . --fix","test":"vitest","build":"nuxt build","clean":"rm -rf .output node_modules/.cache","format":"prettier --write .","prepare":"husky","preview":"nuxt preview","db:reset":"node dist/curator.mjs reset --force","generate":"nuxt generate","db:studio":"drizzle-kit studio","typecheck":"vue-tsc --noEmit","bundle:cli":"node scripts/bundle-cli.cjs","db:migrate":"drizzle-kit migrate","db:generate":"drizzle-kit generate:sqlite","postinstall":"nuxt prepare || true","test:coverage":"vitest --coverage","prepublishOnly":"npm run build && node scripts/bundle-cli.cjs"},"_npmUser":{"name":"pavko","email":"pavko@elgap.rs"},"overrides":{"defu":"^6.1.5","glob":"^13.0.6","srvx":"^0.11.13","yaml":"^2.8.3","lodash":"^4.17.21","devalue":"^5.6.4","picomatch":"^4.0.4","node-forge":"^1.4.0","brace-expansion":"^5.0.5","serialize-javascript":"^7.0.5"},"repository":{"url":"git+https://github.com/elgap/ai-curator.git","type":"git"},"_npmVersion":"10.8.2","description":"AI Curator - Privacy-first dataset curation for LLM fine-tuning","directories":{},"lint-staged":{"*.{js,ts,vue}":["eslint --fix","prettier --write"],"*.{json,css,md}":["prettier --write"]},"_nodeVersion":"20.20.2","dependencies":{"vue":"^3.5.30","zod":"^4.3.6","pinia":"^3.0.4","adm-zip":"^0.5.17","@nuxt/ui":"^4.6.1","chart.js":"^4.4.9","vue-router":"^4.5.0","@pinia/nuxt":"^0.11.3","drizzle-orm":"^0.45.2","kaggle-node":"^1.1.2","vue-chartjs":"^5.3.2","better-sqlite3":"^12.8.0","lucide-vue-next":"^0.577.0","@huggingface/hub":"^2.11.0","@types/better-sqlite3":"^7.6.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","nuxt":"^4.3.1","husky":"^9.1.7","eslint":"^9.21.0","vitest":"^3.0.7","esbuild":"^0.28.0","vue-tsc":"^2.2.8","prettier":"^3.5.3","happy-dom":"^20.8.9","typescript":"^5.9.3","drizzle-kit":"^0.31.10","lint-staged":"^15.4.3","@nuxt/eslint":"^1.2.0","@eslint/compat":"^2.0.4","@nuxt/devtools":"^3.2.3","@vue/test-utils":"^2.4.6","eslint-plugin-vue":"^9.32.0","vue-eslint-parser":"^9.4.3","@typescript-eslint/parser":"^8.58.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-curator_0.3.1-beta_1775508865102_0.9517421763984999","host":"s3://npm-registry-packages-npm-production"}},"0.3.2-beta":{"name":"@elgap/ai-curator","version":"0.3.2-beta","keywords":["curator","dataset-curation","llm","fine-tuning","dataset","ai","machine-learning","training-data"],"author":{"name":"Ivan Pavkovic"},"license":"MIT","_id":"@elgap/ai-curator@0.3.2-beta","maintainers":[{"name":"pavko","email":"pavko@elgap.rs"}],"homepage":"https://github.com/elgap/ai-curator#readme","bugs":{"url":"https://github.com/elgap/ai-curator/issues"},"bin":{"curator":"dist/curator.mjs"},"dist":{"shasum":"42db1cec09fbb170a929603363ea9ea695e3a1e0","tarball":"https://registry.npmjs.org/@elgap/ai-curator/-/ai-curator-0.3.2-beta.tgz","fileCount":618,"integrity":"sha512-na3wzle1/ijcxdena+8tsrfeAvO895dhCMsRmELHaLYY6DgdvnYexa3k41hNpZzAl1M0xsFtxWPe2armpxQfmg==","signatures":[{"sig":"MEQCIEqWlYGyjkWLaTsfflB3DuyGsk/S8lO1wLx2X/9OdoaiAiBbO9ng+dDSW4mj7tVft0ktZNuXGkz7SWB6rX6P7M2n1A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11299102},"main":"./dist/curator.mjs","type":"module","engines":{"node":">=18.0.0"},"gitHead":"7a20e3de87ea0c5d1443653afd45be1271a71171","private":false,"scripts":{"dev":"nuxt dev","lint":"eslint . --fix","test":"vitest","build":"nuxt build","clean":"rm -rf .output node_modules/.cache","format":"prettier --write .","prepare":"husky","preview":"nuxt preview","db:reset":"node dist/curator.mjs reset --force","generate":"nuxt generate","db:studio":"drizzle-kit studio","typecheck":"vue-tsc --noEmit","bundle:cli":"node scripts/bundle-cli.cjs","db:migrate":"drizzle-kit migrate","db:generate":"drizzle-kit generate:sqlite","postinstall":"node scripts/postinstall.js || nuxt prepare || true","test:coverage":"vitest --coverage","prepublishOnly":"npm run build && node scripts/bundle-cli.cjs"},"_npmUser":{"name":"pavko","email":"pavko@elgap.rs"},"overrides":{"defu":"^6.1.5","glob":"^13.0.6","srvx":"^0.11.13","yaml":"^2.8.3","lodash":"^4.17.21","devalue":"^5.6.4","picomatch":"^4.0.4","node-forge":"^1.4.0","brace-expansion":"^5.0.5","serialize-javascript":"^7.0.5"},"repository":{"url":"git+https://github.com/elgap/ai-curator.git","type":"git"},"_npmVersion":"10.8.2","description":"AI Curator - Privacy-first dataset curation for LLM fine-tuning","directories":{},"lint-staged":{"*.{js,ts,vue}":["eslint --fix","prettier --write"],"*.{json,css,md}":["prettier --write"]},"_nodeVersion":"20.20.2","dependencies":{"vue":"^3.5.30","zod":"^4.3.6","pinia":"^3.0.4","adm-zip":"^0.5.17","@nuxt/ui":"^4.6.1","chart.js":"^4.4.9","vue-router":"^4.5.0","@pinia/nuxt":"^0.11.3","drizzle-orm":"^0.45.2","kaggle-node":"^1.1.2","vue-chartjs":"^5.3.2","better-sqlite3":"^12.8.0","lucide-vue-next":"^0.577.0","@huggingface/hub":"^2.11.0","@types/better-sqlite3":"^7.6.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","nuxt":"^4.3.1","husky":"^9.1.7","eslint":"^9.21.0","vitest":"^3.0.7","esbuild":"^0.28.0","vue-tsc":"^2.2.8","prettier":"^3.5.3","happy-dom":"^20.8.9","typescript":"^5.9.3","drizzle-kit":"^0.31.10","lint-staged":"^15.4.3","@nuxt/eslint":"^1.2.0","@eslint/compat":"^2.0.4","@nuxt/devtools":"^3.2.3","@vue/test-utils":"^2.4.6","eslint-plugin-vue":"^9.32.0","vue-eslint-parser":"^9.4.3","@typescript-eslint/parser":"^8.58.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-curator_0.3.2-beta_1775538438964_0.3753573718329499","host":"s3://npm-registry-packages-npm-production"}},"0.3.3-beta":{"name":"@elgap/ai-curator","version":"0.3.3-beta","keywords":["curator","dataset-curation","llm","fine-tuning","dataset","ai","machine-learning","training-data"],"author":{"name":"Ivan Pavkovic"},"license":"MIT","_id":"@elgap/ai-curator@0.3.3-beta","maintainers":[{"name":"pavko","email":"pavko@elgap.rs"}],"homepage":"https://github.com/elgap/ai-curator#readme","bugs":{"url":"https://github.com/elgap/ai-curator/issues"},"bin":{"curator":"dist/curator.mjs"},"dist":{"shasum":"ddfa4f34b2fe306642b58d31a66e7149f4832681","tarball":"https://registry.npmjs.org/@elgap/ai-curator/-/ai-curator-0.3.3-beta.tgz","fileCount":618,"integrity":"sha512-zzOgp+zr7UVF0FxWCIEuL4fkCQqQlahYPVkG+kRzZlcyRyA5WaBx+83xSvsaWVh9H2V9oIAK/f/0Nfr2K6ksxg==","signatures":[{"sig":"MEUCIQDij8ooU4ZqKLXKygo6/dtUPlK6ay0lVg0bkXfDpEenzgIgV/WRLYwCVJOb35mP57iBu25F2hawp7+a0Zt3hD23cJU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11299943},"main":"./dist/curator.mjs","type":"module","engines":{"node":">=18.0.0"},"gitHead":"d4deca64005358de9762f6138c97e65a1296b522","private":false,"scripts":{"dev":"nuxt dev","lint":"eslint . --fix","test":"vitest","build":"nuxt build","clean":"rm -rf .output node_modules/.cache","format":"prettier --write .","prepare":"husky","preview":"nuxt preview","db:reset":"node dist/curator.mjs reset --force","generate":"nuxt generate","db:studio":"drizzle-kit studio","typecheck":"vue-tsc --noEmit","bundle:cli":"node scripts/bundle-cli.cjs","db:migrate":"drizzle-kit migrate","db:generate":"drizzle-kit generate:sqlite","postinstall":"node scripts/postinstall.js || nuxt prepare || true","test:coverage":"vitest --coverage","prepublishOnly":"npm run build && node scripts/bundle-cli.cjs"},"_npmUser":{"name":"pavko","email":"pavko@elgap.rs"},"overrides":{"defu":"^6.1.5","glob":"^13.0.6","srvx":"^0.11.13","yaml":"^2.8.3","lodash":"^4.17.21","devalue":"^5.6.4","picomatch":"^4.0.4","node-forge":"^1.4.0","brace-expansion":"^5.0.5","serialize-javascript":"^7.0.5"},"repository":{"url":"git+https://github.com/elgap/ai-curator.git","type":"git"},"_npmVersion":"10.8.2","description":"AI Curator - Privacy-first dataset curation for LLM fine-tuning","directories":{},"lint-staged":{"*.{js,ts,vue}":["eslint --fix","prettier --write"],"*.{json,css,md}":["prettier --write"]},"_nodeVersion":"20.20.2","dependencies":{"vue":"^3.5.30","zod":"^4.3.6","pinia":"^3.0.4","adm-zip":"^0.5.17","@nuxt/ui":"^4.6.1","chart.js":"^4.4.9","vue-router":"^4.5.0","@pinia/nuxt":"^0.11.3","drizzle-orm":"^0.45.2","kaggle-node":"^1.1.2","vue-chartjs":"^5.3.2","better-sqlite3":"^12.8.0","lucide-vue-next":"^0.577.0","@huggingface/hub":"^2.11.0","prebuild-install":"^7.1.3","@types/better-sqlite3":"^7.6.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","nuxt":"^4.3.1","husky":"^9.1.7","eslint":"^9.21.0","vitest":"^3.0.7","esbuild":"^0.28.0","vue-tsc":"^2.2.8","prettier":"^3.5.3","happy-dom":"^20.8.9","typescript":"^5.9.3","drizzle-kit":"^0.31.10","lint-staged":"^15.4.3","@nuxt/eslint":"^1.2.0","@eslint/compat":"^2.0.4","@nuxt/devtools":"^3.2.3","@vue/test-utils":"^2.4.6","eslint-plugin-vue":"^9.32.0","vue-eslint-parser":"^9.4.3","@typescript-eslint/parser":"^8.58.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-curator_0.3.3-beta_1775599436340_0.6773853790882929","host":"s3://npm-registry-packages-npm-production"}},"0.4.0-beta":{"name":"@elgap/ai-curator","version":"0.4.0-beta","keywords":["curator","dataset-curation","llm","fine-tuning","dataset","ai","machine-learning","training-data"],"author":{"name":"ElGap"},"license":"MIT","_id":"@elgap/ai-curator@0.4.0-beta","maintainers":[{"name":"pavko","email":"pavko@elgap.rs"}],"homepage":"https://github.com/elgap/ai-curator#readme","bugs":{"url":"https://github.com/elgap/ai-curator/issues"},"os":["darwin","linux","win32"],"bin":{"curator":"bin/curator.js"},"cpu":["x64","arm64"],"dist":{"shasum":"399f77895ad051a390967a3db26ebc4ef956ff8b","tarball":"https://registry.npmjs.org/@elgap/ai-curator/-/ai-curator-0.4.0-beta.tgz","fileCount":9,"integrity":"sha512-8/TK3n9U7ns51nbarQeSxkVLpshU2R8QvNd15MTN12cKb3y79tRmTG5HqKvJFqkUPok8iFoGMQxnybPm/wqqqA==","signatures":[{"sig":"MEYCIQD+q127X7LC/zjjo0iUnbL349HdLyN3LqFU+rBeT3plzAIhAIJ9bWfzzh0K3TeNszk5NuQmCa8dSy4k8WKVAj5fhwbQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":227557},"main":"./bin/curator.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"b9dc6ecc43b66c108c2fa4d7476d287ece8ab6cd","private":false,"scripts":{"dev":"nuxt dev","lint":"eslint . --fix","test":"vitest","build":"nuxt build","clean":"rm -rf .output node_modules/.cache","format":"prettier --write .","prepare":"husky","preview":"nuxt preview","db:reset":"node dist/curator.mjs reset --force","generate":"nuxt generate","db:studio":"drizzle-kit studio","typecheck":"vue-tsc --noEmit","bundle:cli":"node scripts/bundle-cli.cjs","db:migrate":"drizzle-kit migrate","db:generate":"drizzle-kit generate:sqlite","test:coverage":"vitest --coverage","prepublishOnly":"npm run test && npm run lint"},"_npmUser":{"name":"pavko","email":"pavko@elgap.rs"},"overrides":{"defu":"^6.1.5","glob":"^13.0.6","srvx":"^0.11.13","yaml":"^2.8.3","lodash":"^4.17.21","devalue":"^5.6.4","picomatch":"^4.0.4","node-forge":"^1.4.0","brace-expansion":"^5.0.5","serialize-javascript":"^7.0.5"},"repository":{"url":"git+https://github.com/elgap/ai-curator.git","type":"git"},"_npmVersion":"10.8.2","description":"AI Curator - Privacy-first dataset curation for LLM fine-tuning","directories":{},"lint-staged":{"*.{js,ts,vue}":["eslint --fix","prettier --write"],"*.{json,css,md}":["prettier --write"]},"_nodeVersion":"20.20.2","dependencies":{"vue":"^3.5.30","zod":"^4.3.6","pinia":"^3.0.4","adm-zip":"^0.5.17","@nuxt/ui":"^4.6.1","chart.js":"^4.4.9","vue-router":"^4.5.0","@pinia/nuxt":"^0.11.3","drizzle-orm":"^0.45.2","kaggle-node":"^1.1.2","vue-chartjs":"^5.3.2","lucide-vue-next":"^0.577.0","@huggingface/hub":"^2.11.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","nuxt":"^4.3.1","husky":"^9.1.7","eslint":"^9.21.0","vitest":"^3.0.7","esbuild":"^0.28.0","vue-tsc":"^2.2.8","prettier":"^3.5.3","happy-dom":"^20.8.9","@types/bun":"^1.2.15","typescript":"^5.9.3","drizzle-kit":"^0.31.10","lint-staged":"^15.4.3","@nuxt/eslint":"^1.2.0","@eslint/compat":"^2.0.4","@nuxt/devtools":"^3.2.3","better-sqlite3":"^12.8.0","@vue/test-utils":"^2.4.6","eslint-plugin-vue":"^9.32.0","vue-eslint-parser":"^9.4.3","@types/better-sqlite3":"^7.6.13","@typescript-eslint/parser":"^8.58.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-curator_0.4.0-beta_1775665510424_0.3366575308835238","host":"s3://npm-registry-packages-npm-production"}},"0.4.1-beta":{"name":"@elgap/ai-curator","version":"0.4.1-beta","keywords":["curator","dataset-curation","llm","fine-tuning","dataset","ai","machine-learning","training-data"],"author":{"name":"ElGap"},"license":"MIT","_id":"@elgap/ai-curator@0.4.1-beta","maintainers":[{"name":"pavko","email":"pavko@elgap.rs"}],"homepage":"https://github.com/elgap/ai-curator#readme","bugs":{"url":"https://github.com/elgap/ai-curator/issues"},"os":["darwin","linux","win32"],"bin":{"curator":"bin/curator.js"},"cpu":["x64","arm64"],"dist":{"shasum":"fc355181b7765e68978f0a9c186433db2c06f3b6","tarball":"https://registry.npmjs.org/@elgap/ai-curator/-/ai-curator-0.4.1-beta.tgz","fileCount":9,"integrity":"sha512-6cbPD/NCcbDZ30xfKieaL+XoyARqvcJtF3cSOYQ3x5MgpZWTevGamO285BJS80widLFWOiWAAI1yZPCZ3gGcdw==","signatures":[{"sig":"MEYCIQDi6JnqwhiTAfUal7ZW+d+JKRyO447/fW4Qql50wYp4iAIhAMc3D99uoGRidrR8ZV6q50vZ1f/nTTaiFlISjqMmGD1C","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":227557},"main":"./bin/curator.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"2ccbcf8f73972b87133361b249cc0d6ed1284ce5","private":false,"scripts":{"dev":"nuxt dev","lint":"eslint . --fix","test":"vitest","build":"nuxt build","clean":"rm -rf .output node_modules/.cache","format":"prettier --write .","prepare":"husky","preview":"nuxt preview","db:reset":"node dist/curator.mjs reset --force","generate":"nuxt generate","db:studio":"drizzle-kit studio","typecheck":"vue-tsc --noEmit","bundle:cli":"node scripts/bundle-cli.cjs","db:migrate":"drizzle-kit migrate","db:generate":"drizzle-kit generate:sqlite","test:coverage":"vitest --coverage","prepublishOnly":"npm run test && npm run lint"},"_npmUser":{"name":"pavko","email":"pavko@elgap.rs"},"overrides":{"defu":"^6.1.5","glob":"^13.0.6","srvx":"^0.11.13","yaml":"^2.8.3","lodash":"^4.17.21","devalue":"^5.6.4","picomatch":"^4.0.4","node-forge":"^1.4.0","brace-expansion":"^5.0.5","serialize-javascript":"^7.0.5"},"repository":{"url":"git+https://github.com/elgap/ai-curator.git","type":"git"},"_npmVersion":"10.8.2","description":"AI Curator - Privacy-first dataset curation for LLM fine-tuning","directories":{},"lint-staged":{"*.{js,ts,vue}":["eslint --fix","prettier --write"],"*.{json,css,md}":["prettier --write"]},"_nodeVersion":"20.20.2","dependencies":{"vue":"^3.5.30","zod":"^4.3.6","pinia":"^3.0.4","adm-zip":"^0.5.17","@nuxt/ui":"^4.6.1","chart.js":"^4.4.9","vue-router":"^4.5.0","@pinia/nuxt":"^0.11.3","drizzle-orm":"^0.45.2","kaggle-node":"^1.1.2","vue-chartjs":"^5.3.2","lucide-vue-next":"^0.577.0","@huggingface/hub":"^2.11.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","nuxt":"^4.3.1","husky":"^9.1.7","eslint":"^9.21.0","vitest":"^3.0.7","esbuild":"^0.28.0","vue-tsc":"^2.2.8","prettier":"^3.5.3","happy-dom":"^20.8.9","@types/bun":"^1.2.15","typescript":"^5.9.3","drizzle-kit":"^0.31.10","lint-staged":"^15.4.3","@nuxt/eslint":"^1.2.0","@eslint/compat":"^2.0.4","@nuxt/devtools":"^3.2.3","better-sqlite3":"^12.8.0","@vue/test-utils":"^2.4.6","eslint-plugin-vue":"^9.32.0","vue-eslint-parser":"^9.4.3","@types/better-sqlite3":"^7.6.13","@typescript-eslint/parser":"^8.58.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-curator_0.4.1-beta_1775668168461_0.02392591078574524","host":"s3://npm-registry-packages-npm-production"}},"0.4.2-beta":{"name":"@elgap/ai-curator","version":"0.4.2-beta","keywords":["curator","dataset-curation","llm","fine-tuning","dataset","ai","machine-learning","training-data"],"author":{"name":"ElGap"},"license":"MIT","_id":"@elgap/ai-curator@0.4.2-beta","maintainers":[{"name":"pavko","email":"pavko@elgap.rs"}],"homepage":"https://github.com/elgap/ai-curator#readme","bugs":{"url":"https://github.com/elgap/ai-curator/issues"},"os":["darwin","linux","win32"],"bin":{"curator":"bin/curator.js"},"cpu":["x64","arm64"],"dist":{"shasum":"66ebb9b2f21376da77c7fab9384e15d773b5bc53","tarball":"https://registry.npmjs.org/@elgap/ai-curator/-/ai-curator-0.4.2-beta.tgz","fileCount":9,"integrity":"sha512-JO3jazSIV2P6WKkZFmp3/4QK04yOkdWVbuQWwZg/jtOC0ESR4O3S2GlgpVeIzS0s8c4F0edSppWRgmfDkLOE/Q==","signatures":[{"sig":"MEYCIQD9XVEkeYgLoR1peir8LrRlYBiInf0SOZPk/94mo/7egAIhAPdLLR/mXq6BL7I7ULLyUPEwAija7h1c0+YtMMVq3d7T","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":227557},"main":"./bin/curator.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"b1b6f66387326b1d1f597f8f0eff5139046ef86d","private":false,"scripts":{"dev":"nuxt dev","lint":"eslint . --fix","test":"vitest","build":"nuxt build","clean":"rm -rf .output node_modules/.cache","format":"prettier --write .","prepare":"husky","preview":"nuxt preview","db:reset":"node dist/curator.mjs reset --force","generate":"nuxt generate","db:studio":"drizzle-kit studio","typecheck":"vue-tsc --noEmit","bundle:cli":"node scripts/bundle-cli.cjs","db:migrate":"drizzle-kit migrate","db:generate":"drizzle-kit generate:sqlite","test:coverage":"vitest --coverage","prepublishOnly":"npm run test && npm run lint"},"_npmUser":{"name":"pavko","email":"pavko@elgap.rs"},"overrides":{"defu":"^6.1.5","glob":"^13.0.6","srvx":"^0.11.13","yaml":"^2.8.3","lodash":"^4.17.21","devalue":"^5.6.4","picomatch":"^4.0.4","node-forge":"^1.4.0","brace-expansion":"^5.0.5","serialize-javascript":"^7.0.5"},"repository":{"url":"git+https://github.com/elgap/ai-curator.git","type":"git"},"_npmVersion":"10.8.2","description":"AI Curator - Privacy-first dataset curation for LLM fine-tuning","directories":{},"lint-staged":{"*.{js,ts,vue}":["eslint --fix","prettier --write"],"*.{json,css,md}":["prettier --write"]},"_nodeVersion":"20.20.2","dependencies":{"vue":"^3.5.30","zod":"^4.3.6","pinia":"^3.0.4","adm-zip":"^0.5.17","@nuxt/ui":"^4.6.1","chart.js":"^4.4.9","vue-router":"^4.5.0","@pinia/nuxt":"^0.11.3","drizzle-orm":"^0.45.2","kaggle-node":"^1.1.2","vue-chartjs":"^5.3.2","lucide-vue-next":"^0.577.0","@huggingface/hub":"^2.11.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","nuxt":"^4.3.1","husky":"^9.1.7","eslint":"^9.21.0","vitest":"^3.0.7","esbuild":"^0.28.0","vue-tsc":"^2.2.8","prettier":"^3.5.3","happy-dom":"^20.8.9","@types/bun":"^1.2.15","typescript":"^5.9.3","drizzle-kit":"^0.31.10","lint-staged":"^15.4.3","@nuxt/eslint":"^1.2.0","@eslint/compat":"^2.0.4","@nuxt/devtools":"^3.2.3","better-sqlite3":"^12.8.0","@vue/test-utils":"^2.4.6","eslint-plugin-vue":"^9.32.0","vue-eslint-parser":"^9.4.3","@types/better-sqlite3":"^7.6.13","@typescript-eslint/parser":"^8.58.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-curator_0.4.2-beta_1775669138650_0.5325382504930625","host":"s3://npm-registry-packages-npm-production"}},"0.4.3-beta":{"name":"@elgap/ai-curator","version":"0.4.3-beta","keywords":["curator","dataset-curation","llm","fine-tuning","dataset","ai","machine-learning","training-data"],"author":{"name":"ElGap"},"license":"MIT","_id":"@elgap/ai-curator@0.4.3-beta","maintainers":[{"name":"pavko","email":"pavko@elgap.rs"}],"homepage":"https://github.com/elgap/ai-curator#readme","bugs":{"url":"https://github.com/elgap/ai-curator/issues"},"os":["darwin","linux","win32"],"bin":{"curator":"bin/curator.js"},"cpu":["x64","arm64"],"dist":{"shasum":"6278c66797af0d030e2cf6ca4df6028df2613343","tarball":"https://registry.npmjs.org/@elgap/ai-curator/-/ai-curator-0.4.3-beta.tgz","fileCount":9,"integrity":"sha512-AkOwAMjYVln8+r1aAnIPEM/zS/5YLapdJ7/1tYEN85tndFLcjeEFytEl1RKkIUZv1+4gdVJYatAB6YeFu4F2kw==","signatures":[{"sig":"MEUCIQCbX85JtQPZBtZCx0OPO+Vin97N68wAF8uNTKE8Ju57rgIga7aNYbnMR+IJ4Wh+mCbKkHMZS4xwNIqYmMTHS/vEsMk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":219762},"main":"./bin/curator.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"133bcbf2f4544d2cc41abe15960d8dc8f53e33e0","private":false,"scripts":{"dev":"nuxt dev","lint":"eslint . --fix","test":"vitest","build":"nuxt build","clean":"rm -rf .output node_modules/.cache","format":"prettier --write .","prepare":"husky","preview":"nuxt preview","db:reset":"node dist/curator.mjs reset --force","generate":"nuxt generate","db:studio":"drizzle-kit studio","typecheck":"vue-tsc --noEmit","bundle:cli":"node scripts/bundle-cli.cjs","db:migrate":"drizzle-kit migrate","db:generate":"drizzle-kit generate:sqlite","test:coverage":"vitest --coverage","prepublishOnly":"npm run test && npm run lint"},"_npmUser":{"name":"pavko","email":"pavko@elgap.rs"},"overrides":{"defu":"^6.1.5","glob":"^13.0.6","srvx":"^0.11.13","yaml":"^2.8.3","lodash":"^4.17.21","devalue":"^5.6.4","picomatch":"^4.0.4","node-forge":"^1.4.0","brace-expansion":"^5.0.5","serialize-javascript":"^7.0.5"},"repository":{"url":"git+https://github.com/elgap/ai-curator.git","type":"git"},"_npmVersion":"10.8.2","description":"AI Curator - Privacy-first dataset curation for LLM fine-tuning","directories":{},"lint-staged":{"*.{js,ts,vue}":["eslint --fix","prettier --write"],"*.{json,css,md}":["prettier --write"]},"_nodeVersion":"20.20.2","dependencies":{"vue":"^3.5.30","zod":"^4.3.6","pinia":"^3.0.4","adm-zip":"^0.5.17","@nuxt/ui":"^4.6.1","chart.js":"^4.4.9","vue-router":"^4.5.0","@pinia/nuxt":"^0.11.3","drizzle-orm":"^0.45.2","kaggle-node":"^1.1.2","vue-chartjs":"^5.3.2","lucide-vue-next":"^0.577.0","@huggingface/hub":"^2.11.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","nuxt":"^4.3.1","husky":"^9.1.7","eslint":"^9.21.0","vitest":"^3.0.7","esbuild":"^0.28.0","vue-tsc":"^2.2.8","prettier":"^3.5.3","happy-dom":"^20.8.9","@types/bun":"^1.2.15","typescript":"^5.9.3","drizzle-kit":"^0.31.10","lint-staged":"^15.4.3","@nuxt/eslint":"^1.2.0","@eslint/compat":"^2.0.4","@nuxt/devtools":"^3.2.3","better-sqlite3":"^12.8.0","@vue/test-utils":"^2.4.6","eslint-plugin-vue":"^9.32.0","vue-eslint-parser":"^9.4.3","@types/better-sqlite3":"^7.6.13","@typescript-eslint/parser":"^8.58.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-curator_0.4.3-beta_1775726864589_0.1665605619595243","host":"s3://npm-registry-packages-npm-production"}},"0.4.4-beta":{"name":"@elgap/ai-curator","version":"0.4.4-beta","keywords":["curator","dataset-curation","llm","fine-tuning","dataset","ai","machine-learning","training-data"],"author":{"name":"ElGap"},"license":"MIT","_id":"@elgap/ai-curator@0.4.4-beta","maintainers":[{"name":"pavko","email":"pavko@elgap.rs"}],"homepage":"https://github.com/elgap/ai-curator#readme","bugs":{"url":"https://github.com/elgap/ai-curator/issues"},"os":["darwin","linux","win32"],"bin":{"curator":"bin/curator.js"},"cpu":["x64","arm64"],"dist":{"shasum":"8dbc981b4ecfc71667b8d28378369f24f2f76170","tarball":"https://registry.npmjs.org/@elgap/ai-curator/-/ai-curator-0.4.4-beta.tgz","fileCount":9,"integrity":"sha512-4mRQuo6HkIy3JKTCqC/+NUGFR1j7Ixym92BOLgx5CuVge1ZrIpRSEwKrsPm0w3SUjAoZXAN88jlL/MMiW8S9CA==","signatures":[{"sig":"MEUCIGV4pjmJWvCo47w/px5q3G32tgAEn0zXD9lsrxWZfJu4AiEAp9Mb+f8aTKfB7xnz9alSdGW9GPNxhzIfEJUv72G5dRc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":219758},"main":"./bin/curator.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"311f0b9e97bfcf170ca4ac30fd5fd8485164e7d0","private":false,"scripts":{"dev":"nuxt dev","lint":"eslint . --fix","test":"vitest","build":"nuxt build","clean":"rm -rf .output node_modules/.cache","format":"prettier --write .","prepare":"husky","preview":"nuxt preview","db:reset":"node dist/curator.mjs reset --force","generate":"nuxt generate","db:studio":"drizzle-kit studio","typecheck":"vue-tsc --noEmit","bundle:cli":"node scripts/bundle-cli.cjs","db:migrate":"drizzle-kit migrate","db:generate":"drizzle-kit generate:sqlite","test:coverage":"vitest --coverage","prepublishOnly":"npm run test && npm run lint"},"_npmUser":{"name":"pavko","email":"pavko@elgap.rs"},"overrides":{"defu":"^6.1.5","glob":"^13.0.6","srvx":"^0.11.13","yaml":"^2.8.3","lodash":"^4.17.21","devalue":"^5.6.4","picomatch":"^4.0.4","node-forge":"^1.4.0","brace-expansion":"^5.0.5","serialize-javascript":"^7.0.5"},"repository":{"url":"git+https://github.com/elgap/ai-curator.git","type":"git"},"_npmVersion":"10.8.2","description":"AI Curator - Privacy-first dataset curation for LLM fine-tuning","directories":{},"lint-staged":{"*.{js,ts,vue}":["eslint --fix","prettier --write"],"*.{json,css,md}":["prettier --write"]},"_nodeVersion":"20.20.2","dependencies":{"vue":"^3.5.30","zod":"^4.3.6","pinia":"^3.0.4","adm-zip":"^0.5.17","@nuxt/ui":"^4.6.1","chart.js":"^4.4.9","vue-router":"^4.5.0","@pinia/nuxt":"^0.11.3","drizzle-orm":"^0.45.2","kaggle-node":"^1.1.2","vue-chartjs":"^5.3.2","lucide-vue-next":"^0.577.0","@huggingface/hub":"^2.11.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","nuxt":"^4.3.1","husky":"^9.1.7","eslint":"^9.21.0","vitest":"^3.0.7","esbuild":"^0.28.0","vue-tsc":"^2.2.8","prettier":"^3.5.3","happy-dom":"^20.8.9","@types/bun":"^1.2.15","typescript":"^5.9.3","drizzle-kit":"^0.31.10","lint-staged":"^15.4.3","@nuxt/eslint":"^1.2.0","@eslint/compat":"^2.0.4","@nuxt/devtools":"^3.2.3","better-sqlite3":"^12.8.0","@vue/test-utils":"^2.4.6","eslint-plugin-vue":"^9.32.0","vue-eslint-parser":"^9.4.3","@types/better-sqlite3":"^7.6.13","@typescript-eslint/parser":"^8.58.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-curator_0.4.4-beta_1775728849746_0.5525915525203564","host":"s3://npm-registry-packages-npm-production"}},"0.4.5-beta":{"name":"@elgap/ai-curator","version":"0.4.5-beta","keywords":["curator","dataset-curation","llm","fine-tuning","dataset","ai","machine-learning","training-data"],"author":{"name":"ElGap"},"license":"MIT","_id":"@elgap/ai-curator@0.4.5-beta","maintainers":[{"name":"pavko","email":"pavko@elgap.rs"}],"homepage":"https://github.com/elgap/ai-curator#readme","bugs":{"url":"https://github.com/elgap/ai-curator/issues"},"os":["darwin","linux","win32"],"bin":{"curator":"bin/curator.js"},"cpu":["x64","arm64"],"dist":{"shasum":"31f1f5f1579419c7365dae0d4b65351c63fbb9e7","tarball":"https://registry.npmjs.org/@elgap/ai-curator/-/ai-curator-0.4.5-beta.tgz","fileCount":9,"integrity":"sha512-qHFqVNkCeER6EwAPd0zDdMORUvr4VeGrwDooY7/bqFz9DBtlFtuRoLqC7qr4dJFHxb++mHk9c4AiK1qtlH6H/A==","signatures":[{"sig":"MEQCIBjgcJBhneXfVVAQZPSS/uo0PQaGSsAgSvfb4fmcz7JEAiAT2fclkrmmCT6xTzr5KRSg3FCoeQUIWaGn4Bg+rwpuFQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":219758},"main":"./bin/curator.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"db4b6c75d3dd22d03b16c6b2d2ae37cef72117e7","private":false,"scripts":{"dev":"nuxt dev","lint":"eslint . --fix","test":"vitest","build":"nuxt build","clean":"rm -rf .output node_modules/.cache","format":"prettier --write .","prepare":"husky","preview":"nuxt preview","db:reset":"node dist/curator.mjs reset --force","generate":"nuxt generate","db:studio":"drizzle-kit studio","typecheck":"vue-tsc --noEmit","bundle:cli":"node scripts/bundle-cli.cjs","db:migrate":"drizzle-kit migrate","db:generate":"drizzle-kit generate:sqlite","test:coverage":"vitest --coverage","prepublishOnly":"npm run test && npm run lint"},"_npmUser":{"name":"pavko","email":"pavko@elgap.rs"},"overrides":{"defu":"^6.1.5","glob":"^13.0.6","srvx":"^0.11.13","yaml":"^2.8.3","lodash":"^4.17.21","devalue":"^5.6.4","picomatch":"^4.0.4","node-forge":"^1.4.0","brace-expansion":"^5.0.5","serialize-javascript":"^7.0.5"},"repository":{"url":"git+https://github.com/elgap/ai-curator.git","type":"git"},"_npmVersion":"10.8.2","description":"AI Curator - Privacy-first dataset curation for LLM fine-tuning","directories":{},"lint-staged":{"*.{js,ts,vue}":["eslint --fix","prettier --write"],"*.{json,css,md}":["prettier --write"]},"_nodeVersion":"20.20.2","dependencies":{"vue":"^3.5.30","zod":"^4.3.6","pinia":"^3.0.4","adm-zip":"^0.5.17","@nuxt/ui":"^4.6.1","chart.js":"^4.4.9","vue-router":"^4.5.0","@pinia/nuxt":"^0.11.3","drizzle-orm":"^0.45.2","kaggle-node":"^1.1.2","vue-chartjs":"^5.3.2","lucide-vue-next":"^0.577.0","@huggingface/hub":"^2.11.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","nuxt":"^4.3.1","husky":"^9.1.7","eslint":"^9.21.0","vitest":"^3.0.7","esbuild":"^0.28.0","vue-tsc":"^2.2.8","prettier":"^3.5.3","happy-dom":"^20.8.9","@types/bun":"^1.2.15","typescript":"^5.9.3","drizzle-kit":"^0.31.10","lint-staged":"^15.4.3","@nuxt/eslint":"^1.2.0","@eslint/compat":"^2.0.4","@nuxt/devtools":"^3.2.3","better-sqlite3":"^12.8.0","@vue/test-utils":"^2.4.6","eslint-plugin-vue":"^9.32.0","vue-eslint-parser":"^9.4.3","@types/better-sqlite3":"^7.6.13","@typescript-eslint/parser":"^8.58.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-curator_0.4.5-beta_1775729594729_0.6071950459338042","host":"s3://npm-registry-packages-npm-production"}},"0.4.6-beta":{"name":"@elgap/ai-curator","version":"0.4.6-beta","description":"AI Curator - Privacy-first dataset curation for LLM fine-tuning","author":{"name":"ElGap"},"license":"MIT","private":false,"type":"module","bin":{"curator":"bin/curator.js"},"main":"./bin/curator.js","os":["darwin","linux","win32"],"cpu":["x64","arm64"],"publishConfig":{"access":"public"},"scripts":{"build":"nuxt build","build:bun":"cp nuxt.config.ts nuxt.config.ts.backup && cp nuxt.config.bun.ts nuxt.config.ts && nuxt build; mv nuxt.config.ts.backup nuxt.config.ts","dev":"nuxt dev","generate":"nuxt generate","preview":"nuxt preview","prepublishOnly":"npm run test && npm run lint","db:generate":"drizzle-kit generate:sqlite","db:migrate":"drizzle-kit migrate","db:studio":"drizzle-kit studio","bundle:cli":"node scripts/bundle-cli.cjs","bundle:bun:darwin-arm64":"bun build --compile --target=bun-darwin-arm64 ./bin/cli.js --outfile dist/curator-darwin-arm64","bundle:bun:linux-x64":"bun build --compile --target=bun-linux-x64 ./bin/cli.js --outfile dist/curator-linux-x64","bundle:bun:linux-arm64":"bun build --compile --target=bun-linux-arm64 ./bin/cli.js --outfile dist/curator-linux-arm64","bundle:bun:all":"npm run bundle:bun:darwin-arm64 && npm run bundle:bun:linux-x64 && npm run bundle:bun:linux-arm64","db:reset":"node dist/curator.mjs reset --force","lint":"eslint . --fix","format":"prettier --write .","typecheck":"vue-tsc --noEmit","test":"vitest","test:coverage":"vitest --coverage","prepare":"husky","clean":"rm -rf .output node_modules/.cache"},"keywords":["curator","dataset-curation","llm","fine-tuning","dataset","ai","machine-learning","training-data"],"repository":{"type":"git","url":"git+https://github.com/elgap/ai-curator.git"},"bugs":{"url":"https://github.com/elgap/ai-curator/issues"},"homepage":"https://github.com/elgap/ai-curator#readme","engines":{"node":">=18.0.0"},"dependencies":{"@huggingface/hub":"^2.11.0","@nuxt/ui":"^4.6.1","@pinia/nuxt":"^0.11.3","adm-zip":"^0.5.17","chart.js":"^4.4.9","drizzle-orm":"^0.45.2","kaggle-node":"^1.1.2","lucide-vue-next":"^0.577.0","pinia":"^3.0.4","vue":"^3.5.30","vue-chartjs":"^5.3.2","vue-router":"^4.5.0","zod":"^4.3.6"},"devDependencies":{"@eslint/compat":"^2.0.4","@nuxt/devtools":"^3.2.3","@nuxt/eslint":"^1.2.0","@typescript-eslint/eslint-plugin":"^8.58.0","@typescript-eslint/parser":"^8.58.0","@types/bun":"^1.2.15","@types/better-sqlite3":"^7.6.13","@vue/test-utils":"^2.4.6","better-sqlite3":"^12.8.0","drizzle-kit":"^0.31.10","esbuild":"^0.28.0","eslint":"^9.21.0","eslint-plugin-vue":"^9.32.0","happy-dom":"^20.8.9","husky":"^9.1.7","lint-staged":"^15.4.3","nuxt":"^4.3.1","prettier":"^3.5.3","tsx":"^4.21.0","typescript":"^5.9.3","vitest":"^3.0.7","vue-eslint-parser":"^9.4.3","vue-tsc":"^2.2.8"},"overrides":{"serialize-javascript":"^7.0.5","glob":"^13.0.6","defu":"^6.1.5","node-forge":"^1.4.0","picomatch":"^4.0.4","brace-expansion":"^5.0.5","devalue":"^5.6.4","yaml":"^2.8.3","srvx":"^0.11.13","lodash":"^4.17.21"},"lint-staged":{"*.{js,ts,vue}":["eslint --fix","prettier --write"],"*.{json,css,md}":["prettier --write"]},"_id":"@elgap/ai-curator@0.4.6-beta","gitHead":"fc7a687fbfe392d4f8f4d9bad7482976f1513387","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-E+91c/Bvn/jJ5tW/v5fXoQaf0USG2IeqRgyxD13KIry08SGwHOr0X3CSag7uSdHtnj9DzkeOSWKIoLzx63QnLA==","shasum":"e7edeae530f0f2d703bb08b8724b7d0c90046d7c","tarball":"https://registry.npmjs.org/@elgap/ai-curator/-/ai-curator-0.4.6-beta.tgz","fileCount":9,"unpackedSize":220384,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICOZZpM1HUotuNf/DNswzA15buE0of5ZA7hd6sJGKCpUAiARLuEYjauWTZlrS50yNBLnuQAui/QmPmHLLbgfghtYhA=="}]},"_npmUser":{"name":"pavko","email":"pavko@elgap.rs"},"directories":{},"maintainers":[{"name":"pavko","email":"pavko@elgap.rs"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ai-curator_0.4.6-beta_1775743534116_0.33385084897046013"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-03T12:12:38.861Z","modified":"2026-04-09T14:05:34.419Z","0.3.0-beta":"2026-04-03T12:12:39.193Z","0.3.1-beta":"2026-04-06T20:54:25.392Z","0.3.2-beta":"2026-04-07T05:07:19.249Z","0.3.3-beta":"2026-04-07T22:03:56.691Z","0.4.0-beta":"2026-04-08T16:25:10.575Z","0.4.1-beta":"2026-04-08T17:09:28.687Z","0.4.2-beta":"2026-04-08T17:25:38.801Z","0.4.3-beta":"2026-04-09T09:27:44.768Z","0.4.4-beta":"2026-04-09T10:00:49.895Z","0.4.5-beta":"2026-04-09T10:13:14.892Z","0.4.6-beta":"2026-04-09T14:05:34.287Z"},"bugs":{"url":"https://github.com/elgap/ai-curator/issues"},"author":{"name":"ElGap"},"license":"MIT","homepage":"https://github.com/elgap/ai-curator#readme","keywords":["curator","dataset-curation","llm","fine-tuning","dataset","ai","machine-learning","training-data"],"repository":{"type":"git","url":"git+https://github.com/elgap/ai-curator.git"},"description":"AI Curator - Privacy-first dataset curation for LLM fine-tuning","maintainers":[{"name":"pavko","email":"pavko@elgap.rs"}],"readme":"# AI Curator\n\n> **The complete dataset preparation workflow for LLM fine-tuning from raw text to fine-tuned model.**  \n> _Collect. Curate. Export. Train._\n>\n> **Designed exclusively for text-based LLMs** — not for vision or audio models.\n\n[![npm version](https://badge.fury.io/js/@elgap%2Fai-curator.svg)](https://badge.fury.io/js/@elgap/ai-curator)\n[![CI](https://github.com/elgap/ai-curator/actions/workflows/ci.yml/badge.svg)](https://github.com/elgap/ai-curator/actions/workflows/ci.yml)\n[![npm downloads](https://img.shields.io/npm/dm/@elgap/ai-curator.svg)](https://www.npmjs.com/package/@elgap/ai-curator)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n**Whether you're a professional building production-grade training datasets or a beginner taking your first steps into LLM fine-tuning, it adapts to your workflow.**\n\n![AI Curator Screenshot](AI-Curator-screenshot.png)\n\n**Main Features:**\n\n- **Privacy First** — Local SQLite database. No cloud, no tracking, no telemetry.\n- **No Code** — Point, click, curate. No programming required.\n- **Zero Configuration** — Install and run. Start collecting in minutes.\n- **EdukaAI Starter Pack included** - Start training in 5 minutes with 75 premium samples\n\n**Three ways to work:**\n\n- **Intuitive Web UI** — Point, click, curate. Perfect for beginners.\n- **Powerful CLI** — Automate, script, and integrate. Built for professionals.\n- **Live Capture API** — Real-time data streaming from any tool, IDE, or script. Our most powerful feature.\n\n## Why AI Curator?\n\n### For Professionals: Unlimited Versatility\n\nCapture, curate, and export data from virtually any source:\n\n- **Live streaming** — Real-time capture from IDEs, chat interfaces, customer support systems, and internal tools\n- **Log processors** — Transform application logs, error reports, and user interactions into training pairs\n- **Batch imports** — Ingest massive datasets from Hugging Face, Kaggle, JSON files, CSV exports, or custom pipelines\n- **API integration** — HTTP endpoints for any script, tool, or automated workflow to push data\n- **Manual refinement** — Human-in-the-loop quality control for mission-critical datasets\n\n### For Beginners: Zero-Code Learning\n\nStart fine-tuning in 5 minutes with no configuration:\n\n- **Pre-loaded starter pack** — 75 premium samples ready to train immediately (included!)\n- **Point-and-click curation** — Web UI requires zero technical knowledge\n- **One-click export** — Export to training formats without writing any code\n- **Visual feedback** — See your dataset quality, progress, and readiness at a glance\n\n**Real-world use cases:**\n\n- **Developers** — Turn IDE interactions and code reviews into coding assistants\n- **Support Teams** — Build customer service bots from real ticket resolutions\n- **Researchers** — Clean and prepare domain-specific datasets for publication\n- **Product Teams** — Transform user feedback and documentation into helpful AI companions\n- **Absolute Beginners** — Fine-tune your first LLM in 5 minutes with the pre-loaded starter pack, then use it as a hands-on learning experience to understand how AI training works from zero knowledge\n\n**Export ready for:** Apple MLX or any Alpaca-compatible trainer.\n\n---\n\n## Quick Start\n\n### Homebrew (macOS & Linux) ✅ Recommended\n\nThe fastest way to install AI Curator with automatic updates:\n\n```bash\nbrew tap elgap/tap\nbrew install ai-curator\n```\n\nThe `curator` command will be available globally. Simply run:\n\n```bash\ncurator\n```\n\n### Install Script (macOS & Linux)\n\nUniversal installer that works on all platforms and architectures:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/elgap/ai-curator/main/install.sh | bash\n```\n\nThis will:\n\n1. Check and install Node.js 20+ if needed\n2. Download AI Curator to your current directory\n3. Install all dependencies (with correct native binaries for your platform)\n4. Build the application\n5. Add `curator` command to your PATH\n6. Import the EdukaAI Starter Pack (75 samples ready to use)\n\nAfter installation, simply run:\n\n```bash\ncurator\n```\n\nOr if you prefer:\n\n```bash\n./curator\n```\n\n---\n\n## 🎁 Built-In Datasets\n\nAI Curator creates **two purpose-built datasets** on first run — your Live Capture Inbox and EdukaAI Starter Pack container. The starter pack with 75 premium samples is imported automatically during installation.\n\n### 📡 Live Capture Inbox (ID: 1)\n\n**Your personal data collection inbox**\n\n- Captures conversations, code snippets, and any text you want to train on\n- Perfect for building custom datasets from your daily workflow\n- **Disabled by default** — enable in Settings → Live Capture when ready\n- Goal: 500 samples for your Personal AI Assistant\n- Category: `captured`\n\n### 🎓 EdukaAI Starter Pack (ID: 2) [ACTIVE]\n\n**Start training in 5 minutes with 75 premium samples**\n\nThe starter pack is automatically imported during installation. If you need to import it manually:\n\n```bash\ncurator import EdukaAISP/default-dataset.json --dataset 2 --status approved\n```\n\nA curated collection of immersive football training data from the Kingston United vs. Newport County thriller:\n\n- **Player roleplays** — Be Chen Wei, Diego Rodriguez, or Marco Esposito\n- **Tactical analysis** — Deep match breakdowns and formation analysis\n- **Fan perspectives** — Emotional reactions from both home and away supporters\n- **Commentary transcripts** — Professional match narration\n- **Alternate history** — \"What if\" scenarios exploring different outcomes\n\n**Export for training:**\n\n```bash\n# Export for Apple Silicon training (MLX format)\ncurator export --dataset 2 --format mlx --output train.jsonl\n\n# Or export for Unsloth (faster, memory-efficient)\ncurator export --dataset 2 --format unsloth --output train.jsonl\n```\n\n**Perfect for:** Your first LLM fine-tuning experience — see results in ~5 minutes!\n\n---\n\n## The Three Workflows\n\n### 1. Web UI — Visual Curation for Everyone\n\n**Perfect for:** Beginners, visual learners, manual quality control\n\nA clean, intuitive interface that requires zero technical knowledge:\n\n- **Import datasets** via drag-and-drop (JSON, JSONL, CSV)\n- **Review samples** in a clear card-based layout\n- **Approve or reject** with one click\n- **Edit and refine** instructions and outputs\n- **Track progress** with visual dashboards\n- **Export with one click** to your preferred format\n\nNo code. No configuration. Just point, click, and curate.\n\n### 2. CLI — Power Tools for Professionals\n\n**Perfect for:** Automation, scripting, bulk operations, CI/CD integration\n\nWhen you need to move fast and work at scale:\n\n```bash\n# Import 10,000 samples in one command\ncurator import massive-dataset.jsonl --dataset 1 --workers 8\n\n# Export EdukaAI Starter Pack for immediate training\ncurator export --dataset 2 --format mlx --output train.jsonl\n\n# Export only approved high-quality samples from any dataset\ncurator export --dataset 3 --filter \"status=approved AND quality>=4\" --format mlx\n\n# Search and download from Hugging Face\ncurator search \"python programming\"\ncurator download hf:openai/summarize_from_feedback --dataset 3\n\n# Split for training with stratification\ncurator export --split \"0.8,0.1,0.1\" --seed 42 --format jsonl\n```\n\n**7 export formats:** Alpaca, ShareGPT, JSONL, CSV, MLX (Apple Silicon), Unsloth, TRL  \n**Query language:** Filter by status, quality, category, or full-text search  \n**Smart splitting:** Train/test/val with stratification to maintain category balance\n\n### 3. Live Capture API — Real-Time Data Streaming\n\n**Perfect for:** Integration, continuous collection, capturing from live tools\n\n**This is AI Curator's most powerful feature.** Stream training data in real-time from any source via simple HTTP POST:\n\n```bash\n# From your IDE, script, or any tool:\ncurl -X POST http://localhost:3333/api/capture \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"source\": \"my-ide\",\n    \"records\": [{\n      \"instruction\": \"Explain this error\",\n      \"output\": \"The error occurs because...\",\n      \"systemPrompt\": \"You are a coding assistant\",\n      \"category\": \"coding\",\n      \"qualityRating\": 5\n    }]\n  }'\n```\n\n**Why this matters:**\n\n- Capture conversations as they happen — no manual copy-pasting\n- Integrate with any tool that can make HTTP requests\n- Your product's actual interactions become training data\n- Real-time or batched — your choice\n\n**Common integrations:**\n\n- IDE extensions (capture code explanations)\n- Chat interfaces (save valuable AI conversations)\n- Support systems (turn tickets into Q&A samples)\n- Log processors (extract error-resolution pairs)\n- Custom scripts (automated data generation)\n\n---\n\n## Complete Data Workflow\n\n### Step 1: Collect (Multiple Ways)\n\n**Live Capture** — Real-time streaming from any tool via API  \n**File Import** — Upload existing datasets (JSON, JSONL, CSV)  \n**Manual Entry** — Create human-crafted examples in the UI  \n**External Sources** — Import from Hugging Face & Kaggle via CLI\n\n### Step 2: Curate (Under Your Supervision)\n\n**Review Workflow:**\n\n- **Draft** — Captured or imported samples waiting for review\n- **In Review** — Being evaluated for quality\n- **Approved** — High-quality samples ready for training\n- **Rejected** — Low-quality or irrelevant samples excluded\n\n**Quality Controls:**\n\n- Rate samples 1-5 stars for quality\n- Categorize by domain (coding, writing, Q&A, etc.)\n- Tag for organization\n- Detect and flag duplicates\n- Edit and refine content\n\n### Step 3: Export (Ready for Training)\n\nExport to 7 formats optimized for different training pipelines:\n\n| Format     | Best For            | Notes                            |\n| ---------- | ------------------- | -------------------------------- |\n| **Alpaca** | General fine-tuning | Standard instruction format      |\n| **MLX**    | Apple Silicon       | Optimized for MLX-LM on M1/M2/M3 |\n| **JSONL**  | Pipelines           | Line-delimited for streaming     |\n\n**Export Options:**\n\n- Filter by status (approved only, or include drafts)\n- Filter by quality (minimum star rating)\n- Filter by category or tags\n- Train/test/validation splits\n- Stratified splitting (maintains category proportions)\n- With or without metadata\n\n---\n\n## Live Capture API in Detail\n\nThe **Universal Capture API** turns any tool into a training data source. Send data from:\n\n**Development Tools:**\n\n```javascript\n// VS Code extension or IDE plugin\nfetch(\"http://localhost:3333/api/capture\", {\n  method: \"POST\",\n  headers: { \"Content-Type\": \"application/json\" },\n  body: JSON.stringify({\n    source: \"vscode-extension\",\n    records: [\n      {\n        instruction: \"Explain this function\",\n        output: explanation,\n        context: { code, language },\n        category: \"coding\",\n      },\n    ],\n  }),\n});\n```\n\n**Log Processing:**\n\n```bash\n# Extract error-resolutions from logs\ntail -f /var/log/app.log | grep \"ERROR\" | while read line; do\n  curl -X POST localhost:3333/api/capture \\\n    -d \"{\\\"source\\\":\\\"logs\\\",\\\"records\\\":[...]}\"\ndone\n```\n\n**Chat Interfaces:**\n\n```python\n# Python script capturing from any chat\nimport requests\n\nrequests.post('http://localhost:3333/api/capture', json={\n    'source': 'chat-interface',\n    'records': [{\n        'instruction': user_message,\n        'output': assistant_response,\n        'qualityRating': 4 if user_thumbs_up else 3\n    }]\n})\n```\n\n**Endpoint:** `POST /api/capture`\n\n---\n\n## CLI Reference\n\nFor power users who prefer the command line:\n\n| Command                    | Description                                      |\n| -------------------------- | ------------------------------------------------ |\n| `curator`                  | Start server with web UI (http://localhost:3333) |\n| `curator import <file>`    | Import local file (JSON, JSONL, CSV)             |\n| `curator export [options]` | Export dataset to training format                |\n| `curator search <query>`   | Search Hugging Face and Kaggle                   |\n| `curator download <id>`    | Download and auto-import from external source    |\n| `curator clear`            | Clear dataset (with confirmation)                |\n| `curator reset`            | Reset database to fresh state                    |\n\n**Example Workflows:**\n\n```bash\n# Full pipeline: Search → Download → Curate → Export\ncurator search \"medical qa\" --limit 5\ncurator download hf:medalpaca/medical_meadow_small --dataset 1\ncurator export --dataset 1 --format mlx --output medical-training.jsonl --filter \"quality>=4\"\n\n# Incremental collection with live capture + periodic export\n# (in one terminal) curator  # Start server\n# (in another) ./my-capture-script.sh  # Stream data\n# (later) curator export --dataset 1 --split \"0.8,0.1,0.1\" --format jsonl\n```\n\n**Environment Variables:**\n\n| Variable              | Default    | Description             |\n| --------------------- | ---------- | ----------------------- |\n| `AI_CURATOR_PORT`     | 3333       | Server port             |\n| `AI_CURATOR_DATA_DIR` | ~/.curator | Where data is stored    |\n| `HUGGINGFACE_TOKEN`   | -          | For private HF datasets |\n\n---\n\n## Core Features\n\n### Dataset Management\n\n- Create multiple datasets for different projects\n- Set goals and track progress visually\n- Organize by purpose: coding, writing, Q&A, roleplay, custom\n\n### Training Sample Management\n\n- **Core fields:** Instruction, Input, Output, System Prompt\n- **Metadata:** Category, Difficulty, Quality (1-5), Tags\n- **Workflow:** Draft → In Review → Approved/Rejected\n- **Bulk operations:** Multi-select approve, categorize, delete\n\n### Quality Control\n\n- **Draft-first capture** — Review before including in training\n- **Quality ratings** — Star system for sample ranking\n- **Human-in-the-loop** — You approve every sample\n\n---\n\n## Import Formats\n\nAI Curator accepts standard dataset formats:\n\n- **JSON** — Array of objects or JSON Lines\n- **JSONL** — Line-delimited JSON (streaming-friendly)\n- **CSV** — Comma-separated values with headers\n\n**Smart Auto-Detection:**\nFormat is automatically detected from file extension and content structure. Supports both standard Alpaca format and custom field mappings.\n\n---\n\n## Privacy & Security\n\n**100% Local-First:**\n\n- SQLite database stored on your machine (`~/.curator/`)\n- No cloud services or external APIs (except optional HF/Kaggle downloads)\n- No tracking, analytics, or telemetry\n- No account required, no data leaves your machine\n\n**You Own Everything:**\n\n- Your data is your data\n- Export anytime to any format\n- MIT licensed — full transparency\n\n---\n\n## Development\n\n### Tech Stack\n\n- **Frontend:** Vue 3 + Nuxt 4 + Tailwind CSS + Nuxt UI\n- **Backend:** Nuxt 4 API routes + Drizzle ORM\n- **Database:** SQLite (better-sqlite3)\n- **CLI:** Node.js with esbuild bundling\n\n### Build from Source\n\n```bash\ngit clone https://github.com/elgap/ai-curator.git\ncd ai-curator\nnpm install\nnpm run dev\n```\n\n### Commands\n\n```bash\nnpm run db:reset      # Reset database\nnpm run test          # Run tests\nnpm run build         # Production build\nnpm run bundle:cli    # Bundle CLI for distribution\nnpm run lint          # Run ESLint\n```\n\n### Project Structure\n\n```\nai-curator/\n├── app/              # Nuxt frontend (Vue components, pages)\n├── server/           # Backend API routes, CLI commands\n├── bin/              # CLI entry point (development)\n├── dist/             # Bundled CLI (production)\n├── scripts/          # Build and utility scripts\n└── docs/             # Documentation\n```\n\n## Contributing\n\nWe welcome contributions. Contributing guide will be published soon.\n\n---\n\n## License\n\nMIT License — see [LICENSE](LICENSE)\n\n---\n\n[AI Curator](https://github.com/elgap/ai-curator) and [EdukaAI Studio](https://github.com/elgap/edukaai-studio) are part of the EdukaAI project by ElGap — making AI & fine-tuning accessible through open-source, privacy-first, no-code tools.\n\nWe follow the [#rapidMvpMindset](https://elgap.rs/rapid-mvp-mindset), shipping fast and iterating regularly. Expect frequent updates.\n","readmeFilename":"README.md"}