{"_id":"@geolonia/yuuhitsu","_rev":"33-cb8523734fd595c220f1cce823e21c23","name":"@geolonia/yuuhitsu","dist-tags":{"latest":"0.3.2"},"versions":{"0.1.0":{"name":"@geolonia/yuuhitsu","version":"0.1.0","keywords":["ai","cli","translation","documentation"],"license":"MIT","_id":"@geolonia/yuuhitsu@0.1.0","maintainers":[{"name":"miya0001","email":"hatatatehaze@gmail.com"},{"name":"naogify","email":"n.globe.us@gmail.com"},{"name":"halsk_geolonia","email":"hal@geolonia.com"},{"name":"satsuki-higuchi","email":"piguchi@geolonia.com"},{"name":"dkastl","email":"daniel.kastl@gmail.com"},{"name":"bougan1160","email":"yasuaki.kawakami@geolonia.com"}],"bin":{"yuuhitsu":"dist/cli/index.js"},"dist":{"shasum":"131048f825d7ac41933b24d2389d54f0b5e62aab","tarball":"https://registry.npmjs.org/@geolonia/yuuhitsu/-/yuuhitsu-0.1.0.tgz","fileCount":57,"integrity":"sha512-uAHvrz6fyuRbpYAv3DpKf4NGMbjOnt19YYcG6KUhOtd+yz8b94pjo6q/PI9rXTfF9bb8zBWwreErYdfOtFCoag==","signatures":[{"sig":"MEUCICqPv8OggcvqvvmvIqe2R34Xe6TmNfLxGT9w8mRVsrHTAiEArCjPCzsw1V6VmDlpEOge4fp6oGb4N1axbXBUT128Y+4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57333},"type":"module","gitHead":"840f7c3fbabed2eda5dd4268c080ff5b3342b172","scripts":{"dev":"tsx src/cli/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","prepare":"tsc","test:watch":"vitest"},"_npmUser":{"name":"halsk_geolonia","email":"hal@geolonia.com"},"_npmVersion":"9.2.0","description":"右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.","directories":{},"_nodeVersion":"18.19.1","dependencies":{"yaml":"^2.7.0","chalk":"^5.4.0","dotenv":"^16.4.0","openai":"^4.77.0","commander":"^13.0.0","@google/genai":"^0.7.0","@anthropic-ai/sdk":"^0.39.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/yuuhitsu_0.1.0_1770789620417_0.8056508473399202","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@geolonia/yuuhitsu","version":"0.1.1","keywords":["ai","cli","translation","documentation"],"license":"MIT","_id":"@geolonia/yuuhitsu@0.1.1","maintainers":[{"name":"miya0001","email":"hatatatehaze@gmail.com"},{"name":"naogify","email":"n.globe.us@gmail.com"},{"name":"halsk_geolonia","email":"hal@geolonia.com"},{"name":"satsuki-higuchi","email":"piguchi@geolonia.com"},{"name":"dkastl","email":"daniel.kastl@gmail.com"},{"name":"bougan1160","email":"yasuaki.kawakami@geolonia.com"}],"bin":{"yuuhitsu":"dist/cli/index.js"},"dist":{"shasum":"8be952c72183a0f04fce0f032f497b7623eb28cf","tarball":"https://registry.npmjs.org/@geolonia/yuuhitsu/-/yuuhitsu-0.1.1.tgz","fileCount":65,"integrity":"sha512-Z+mn4CY5Tfz6eRnMoZ0Qp7b1hb3UoG3kSkxtNxru0705h819qyGbzUDwyC13ENzZKC+u0PIO/vmyRzSK4d+8Yg==","signatures":[{"sig":"MEYCIQDy5+C0kHJTH3jYf0OHnqekea9AHrrUf+JQtmF2eipFdwIhAOJ10hx+wFp+bAyXcvdgYdyWrkeewLzco58aNRaqdLYe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87982},"type":"module","gitHead":"05d54ae988195e46b1807646814466f876cd612d","scripts":{"dev":"tsx src/cli/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","prepare":"tsc","test:watch":"vitest"},"_npmUser":{"name":"halsk_geolonia","email":"hal@geolonia.com"},"_npmVersion":"10.9.0","description":"右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"yaml":"^2.7.0","chalk":"^5.4.0","dotenv":"^16.4.0","openai":"^4.77.0","commander":"^13.0.0","fast-glob":"^3.3.3","@google/genai":"^0.7.0","@anthropic-ai/sdk":"^0.39.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.9.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/yuuhitsu_0.1.1_1771510638844_0.7930570221213686","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@geolonia/yuuhitsu","version":"0.1.2","keywords":["ai","cli","translation","documentation"],"license":"MIT","_id":"@geolonia/yuuhitsu@0.1.2","maintainers":[{"name":"miya0001","email":"hatatatehaze@gmail.com"},{"name":"naogify","email":"n.globe.us@gmail.com"},{"name":"halsk_geolonia","email":"hal@geolonia.com"},{"name":"satsuki-higuchi","email":"piguchi@geolonia.com"},{"name":"dkastl","email":"daniel.kastl@gmail.com"},{"name":"bougan1160","email":"yasuaki.kawakami@geolonia.com"}],"bin":{"yuuhitsu":"dist/cli/index.js"},"dist":{"shasum":"048d2a8e4488a920b966e22bf272290c15c6bd82","tarball":"https://registry.npmjs.org/@geolonia/yuuhitsu/-/yuuhitsu-0.1.2.tgz","fileCount":73,"integrity":"sha512-/+zvQuy7i0qp1QJ7aZhEFvWLT3286ToIWj85qU8UcWU4YhtFd0jVb366ewQ/pxQK6Y7blP2dpC89RI/ZUXAUlg==","signatures":[{"sig":"MEUCID2KoMoFqpP38jAyHN1/n14zd+iTa9xBQWS/g0xNzS8sAiEAzigmwDOtgModI9CAhXg/PzvCr22Fpm1ENZOH00NtTb4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124085},"type":"module","gitHead":"f750870d5c5fb62ebb5a0845572cbe78ac04dd27","scripts":{"dev":"tsx src/cli/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","prepare":"tsc","test:watch":"vitest"},"_npmUser":{"name":"halsk_geolonia","email":"hal@geolonia.com"},"_npmVersion":"10.9.0","description":"右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"yaml":"^2.7.0","chalk":"^5.4.0","dotenv":"^16.4.0","openai":"^4.77.0","commander":"^13.0.0","fast-glob":"^3.3.3","@google/genai":"^0.7.0","@anthropic-ai/sdk":"^0.39.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/yuuhitsu_0.1.2_1772261298199_0.2553829755348469","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@geolonia/yuuhitsu","version":"0.1.3","keywords":["ai","cli","translation","documentation"],"license":"MIT","_id":"@geolonia/yuuhitsu@0.1.3","maintainers":[{"name":"miya0001","email":"hatatatehaze@gmail.com"},{"name":"naogify","email":"n.globe.us@gmail.com"},{"name":"halsk_geolonia","email":"hal@geolonia.com"},{"name":"satsuki-higuchi","email":"piguchi@geolonia.com"},{"name":"dkastl","email":"daniel.kastl@gmail.com"},{"name":"bougan1160","email":"yasuaki.kawakami@geolonia.com"}],"bin":{"yuuhitsu":"dist/cli/index.js"},"dist":{"shasum":"45b132101942e562ec614227de1bbba6a608418b","tarball":"https://registry.npmjs.org/@geolonia/yuuhitsu/-/yuuhitsu-0.1.3.tgz","fileCount":73,"integrity":"sha512-KRce27A56/I1o3cOWFUt5Z07glu3uXxdkHBR9QEHTl8NfF97Piztj3fWACkGmbeDHlXmJiR+87CzpXC0OmmOxg==","signatures":[{"sig":"MEQCIBjMbbwYRbGHXvdE3TZs0Tybg52oqFaNFhyF+3UwCrW9AiA9Gi5BCImJxabUaVGtQ6/10bNBCGU9x2TLRsOQCNPwxw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124194},"type":"module","gitHead":"8396912f63ea2bb72d53d9a3441e87bb5e589d96","scripts":{"dev":"tsx src/cli/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","prepare":"tsc","test:watch":"vitest"},"_npmUser":{"name":"halsk_geolonia","email":"hal@geolonia.com"},"_npmVersion":"10.9.0","description":"右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"yaml":"^2.7.0","chalk":"^5.4.0","dotenv":"^16.4.0","openai":"^4.77.0","commander":"^13.0.0","fast-glob":"^3.3.3","@google/genai":"^0.7.0","@anthropic-ai/sdk":"^0.39.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/yuuhitsu_0.1.3_1772268274645_0.14352473321196246","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@geolonia/yuuhitsu","version":"0.1.4","keywords":["ai","cli","translation","documentation"],"license":"MIT","_id":"@geolonia/yuuhitsu@0.1.4","maintainers":[{"name":"miya0001","email":"hatatatehaze@gmail.com"},{"name":"naogify","email":"n.globe.us@gmail.com"},{"name":"halsk_geolonia","email":"hal@geolonia.com"},{"name":"satsuki-higuchi","email":"piguchi@geolonia.com"},{"name":"dkastl","email":"daniel.kastl@gmail.com"},{"name":"bougan1160","email":"yasuaki.kawakami@geolonia.com"}],"bin":{"yuuhitsu":"dist/cli/index.js"},"dist":{"shasum":"1e8efa240b96a13c25aa21b043edd335ed363640","tarball":"https://registry.npmjs.org/@geolonia/yuuhitsu/-/yuuhitsu-0.1.4.tgz","fileCount":73,"integrity":"sha512-icwO9zUoYuqOKj/kDTP07QNqVqPYTYsG9f6MAiykdCBHn+P0VpD2PX7yPyfxRLxPrsnnDnrq8D7c4f9vWsuI8A==","signatures":[{"sig":"MEQCIG3tg9qNz/FQBMQh+DjmITO+8plJoegZA/Gt5cFkDJ1GAiBZVXUqfjQUnUUuqTWE70MTzvkNYRzls8R0tIIPCOYVzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":129836},"type":"module","gitHead":"1bd5d701131fcdeadc6c7884401c57c458932fba","scripts":{"dev":"tsx src/cli/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","prepare":"tsc","test:watch":"vitest"},"_npmUser":{"name":"halsk_geolonia","email":"hal@geolonia.com"},"_npmVersion":"10.9.0","description":"右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"yaml":"^2.7.0","chalk":"^5.4.0","dotenv":"^16.4.0","openai":"^4.77.0","commander":"^13.0.0","fast-glob":"^3.3.3","@google/genai":"^0.7.0","@anthropic-ai/sdk":"^0.39.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/yuuhitsu_0.1.4_1772286366707_0.8262577524608157","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@geolonia/yuuhitsu","version":"0.1.5","keywords":["ai","cli","translation","documentation"],"license":"MIT","_id":"@geolonia/yuuhitsu@0.1.5","maintainers":[{"name":"miya0001","email":"hatatatehaze@gmail.com"},{"name":"naogify","email":"n.globe.us@gmail.com"},{"name":"halsk_geolonia","email":"hal@geolonia.com"},{"name":"satsuki-higuchi","email":"piguchi@geolonia.com"},{"name":"dkastl","email":"daniel.kastl@gmail.com"},{"name":"bougan1160","email":"yasuaki.kawakami@geolonia.com"}],"bin":{"yuuhitsu":"dist/cli/index.js"},"dist":{"shasum":"41beaecf053286dd3a263f368a3721c20f21f446","tarball":"https://registry.npmjs.org/@geolonia/yuuhitsu/-/yuuhitsu-0.1.5.tgz","fileCount":73,"integrity":"sha512-wn3/YjHYuqyBHoHvdCIAhFhxig4r6pQbiktmGHMfqAUWcrJne3Vuwh/PASQKGuxFgfvU4xFiw28zEQxR1Q9DKg==","signatures":[{"sig":"MEQCICSSBdsQkIGQy5ZFo37gPTJvK44Lm1oC3CSJtI08sD3kAiB+SIDvKfhhyfBOAlugPxhyoByJihYNwv/eZFUzdZJlMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132819},"type":"module","gitHead":"0db22c5ab99218b4db7294d8b670dcd61cc2c4c1","scripts":{"dev":"tsx src/cli/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","prepare":"tsc","test:watch":"vitest"},"_npmUser":{"name":"halsk_geolonia","email":"hal@geolonia.com"},"_npmVersion":"10.9.0","description":"右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"yaml":"^2.7.0","chalk":"^5.4.0","dotenv":"^16.4.0","openai":"^4.77.0","commander":"^13.0.0","fast-glob":"^3.3.3","@google/genai":"^0.7.0","@anthropic-ai/sdk":"^0.39.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/yuuhitsu_0.1.5_1772616589336_0.6612536618107405","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@geolonia/yuuhitsu","version":"0.1.6","keywords":["ai","cli","translation","documentation"],"license":"MIT","_id":"@geolonia/yuuhitsu@0.1.6","maintainers":[{"name":"miya0001","email":"hatatatehaze@gmail.com"},{"name":"naogify","email":"n.globe.us@gmail.com"},{"name":"halsk_geolonia","email":"hal@geolonia.com"},{"name":"satsuki-higuchi","email":"piguchi@geolonia.com"},{"name":"dkastl","email":"daniel.kastl@gmail.com"},{"name":"bougan1160","email":"yasuaki.kawakami@geolonia.com"}],"bin":{"yuuhitsu":"dist/cli/index.js"},"dist":{"shasum":"20fd6822e605d718a4ec7b7c94f7f7bf9d40333b","tarball":"https://registry.npmjs.org/@geolonia/yuuhitsu/-/yuuhitsu-0.1.6.tgz","fileCount":73,"integrity":"sha512-O488m0ruEpQNfq2r990JdvRLISxP172qhfwzSFIgLS+OOROXVAU/9XwDlrPuHUI7wezR+guFn78K7tY4AoW1vQ==","signatures":[{"sig":"MEYCIQCCJJg6b+KTNHaSx8T7RbLcTC/X3N1+D2Z6/Lnqw22PzwIhAKDk/0p15fVSfbtyNMtnEc9q1BFn/JihIaQO/tCvrxuV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142043},"type":"module","gitHead":"01fd74489337aa7775aacd7cce6125a60c037f54","scripts":{"dev":"tsx src/cli/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","prepare":"tsc","test:watch":"vitest"},"_npmUser":{"name":"halsk_geolonia","email":"hal@geolonia.com"},"_npmVersion":"10.9.0","description":"右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"yaml":"^2.7.0","chalk":"^5.4.0","dotenv":"^16.4.0","openai":"^4.77.0","commander":"^13.0.0","fast-glob":"^3.3.3","@google/genai":"^0.7.0","@anthropic-ai/sdk":"^0.39.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/yuuhitsu_0.1.6_1773019066134_0.4055499927351749","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@geolonia/yuuhitsu","version":"0.1.8","keywords":["ai","cli","translation","documentation"],"license":"MIT","_id":"@geolonia/yuuhitsu@0.1.8","maintainers":[{"name":"miya0001","email":"hatatatehaze@gmail.com"},{"name":"naogify","email":"n.globe.us@gmail.com"},{"name":"halsk_geolonia","email":"hal@geolonia.com"},{"name":"satsuki-higuchi","email":"piguchi@geolonia.com"},{"name":"dkastl","email":"daniel.kastl@gmail.com"},{"name":"bougan1160","email":"yasuaki.kawakami@geolonia.com"}],"bin":{"yuuhitsu":"dist/cli/index.js"},"dist":{"shasum":"e82d78d846474a8af81c118acb938c2df40cac33","tarball":"https://registry.npmjs.org/@geolonia/yuuhitsu/-/yuuhitsu-0.1.8.tgz","fileCount":73,"integrity":"sha512-NKxOgwN/00cMYhCYgrQ9kJ3Us7EW8SzSDnBVtddhGusHl6My0tWZVr1i6BzEmeJGhas50xWjeMtUwr3KofAx6g==","signatures":[{"sig":"MEQCICA8KByBmgDXDNWk1zzalhcV/HGyUPU+pOtXc8DlYz6KAiBZZCatEkBdJCnIeFV/NgYWG9g9xBHFAbMfNE7J0RpoMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144160},"type":"module","gitHead":"a167840ca832778b6867a49df63758a6e025c702","scripts":{"dev":"tsx src/cli/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","prepare":"tsc","test:watch":"vitest"},"_npmUser":{"name":"halsk_geolonia","email":"hal@geolonia.com"},"_npmVersion":"10.9.0","description":"右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"yaml":"^2.7.0","chalk":"^5.4.0","dotenv":"^16.4.0","openai":"^4.77.0","commander":"^13.0.0","fast-glob":"^3.3.3","@google/genai":"^0.7.0","@anthropic-ai/sdk":"^0.39.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/yuuhitsu_0.1.8_1773057902087_0.1488310836253246","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@geolonia/yuuhitsu","version":"0.1.9","keywords":["ai","cli","translation","documentation"],"license":"MIT","_id":"@geolonia/yuuhitsu@0.1.9","maintainers":[{"name":"miya0001","email":"hatatatehaze@gmail.com"},{"name":"naogify","email":"n.globe.us@gmail.com"},{"name":"halsk_geolonia","email":"hal@geolonia.com"},{"name":"satsuki-higuchi","email":"piguchi@geolonia.com"},{"name":"dkastl","email":"daniel.kastl@gmail.com"},{"name":"bougan1160","email":"yasuaki.kawakami@geolonia.com"}],"bin":{"yuuhitsu":"dist/cli/index.js"},"dist":{"shasum":"abf76af4cd0129d09e809c6ea17231c83cabba5a","tarball":"https://registry.npmjs.org/@geolonia/yuuhitsu/-/yuuhitsu-0.1.9.tgz","fileCount":73,"integrity":"sha512-pBaJsKezxcEmxwXn+kPPQZTMCq+Bg5KbfaWgGzwpw0GmaoEQX/Eal3skWRSQg/tONA93G0WQaj8+ua+jl0gtdg==","signatures":[{"sig":"MEYCIQC5di9o+8R8jOS55sDwg1zZQkITVpB0OEVTPFMGnT0nbAIhAMQ0RcYCdRTuNohxZmCA81TZs/eEkr7iqS7ilgQTFoRL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144543},"type":"module","gitHead":"11559872e77425e6eec9ca700f99724c9541ffad","scripts":{"dev":"tsx src/cli/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","prepare":"tsc","test:watch":"vitest"},"_npmUser":{"name":"halsk_geolonia","email":"hal@geolonia.com"},"_npmVersion":"10.9.0","description":"右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"yaml":"^2.7.0","chalk":"^5.4.0","dotenv":"^16.4.0","openai":"^4.77.0","commander":"^13.0.0","fast-glob":"^3.3.3","@google/genai":"^0.7.0","@anthropic-ai/sdk":"^0.39.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/yuuhitsu_0.1.9_1777472231596_0.5117814999884351","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@geolonia/yuuhitsu","version":"0.1.10","keywords":["ai","cli","translation","documentation"],"license":"MIT","_id":"@geolonia/yuuhitsu@0.1.10","maintainers":[{"name":"miya0001","email":"hatatatehaze@gmail.com"},{"name":"naogify","email":"n.globe.us@gmail.com"},{"name":"halsk_geolonia","email":"hal@geolonia.com"},{"name":"satsuki-higuchi","email":"piguchi@geolonia.com"},{"name":"dkastl","email":"daniel.kastl@gmail.com"},{"name":"bougan1160","email":"yasuaki.kawakami@geolonia.com"}],"bin":{"yuuhitsu":"dist/cli/index.js"},"dist":{"shasum":"8a58bc661e5945a41d31125fb8cb58ad03531c09","tarball":"https://registry.npmjs.org/@geolonia/yuuhitsu/-/yuuhitsu-0.1.10.tgz","fileCount":81,"integrity":"sha512-Xa7FE+y/2jFdbh6hAJvtelS5u8oaPnHeUYrmqJE4PtZqT/RP+iDdh9xAK2LtG7CLLOGIiwAs9Y5TQV30A3CGRA==","signatures":[{"sig":"MEUCIHj2pTmvyFmZ71qk/df0fMivkoHVh6vZ3ECoja4WS3ecAiEAzLBsXd6Z/WQ93RjO7hRbn6SGn6TrSpm7DD4q3BlarO0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":167682},"type":"module","gitHead":"5e0f02756e15d279cb8068853ec7d1b6b4fd1299","scripts":{"dev":"tsx src/cli/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","prepare":"tsc","test:watch":"vitest"},"_npmUser":{"name":"halsk_geolonia","email":"hal@geolonia.com"},"_npmVersion":"10.9.0","description":"右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"yaml":"^2.7.0","chalk":"^5.4.0","dotenv":"^16.4.0","openai":"^4.77.0","commander":"^13.0.0","fast-glob":"^3.3.3","@google/genai":"^0.7.0","@anthropic-ai/sdk":"^0.39.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/yuuhitsu_0.1.10_1777525790582_0.6204963781892137","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@geolonia/yuuhitsu","version":"0.1.11","keywords":["ai","cli","translation","documentation"],"license":"MIT","_id":"@geolonia/yuuhitsu@0.1.11","maintainers":[{"name":"miya0001","email":"hatatatehaze@gmail.com"},{"name":"naogify","email":"n.globe.us@gmail.com"},{"name":"halsk_geolonia","email":"hal@geolonia.com"},{"name":"satsuki-higuchi","email":"piguchi@geolonia.com"},{"name":"dkastl","email":"daniel.kastl@gmail.com"},{"name":"bougan1160","email":"yasuaki.kawakami@geolonia.com"}],"bin":{"yuuhitsu":"dist/cli/index.js"},"dist":{"shasum":"c0534df05917fac8e742e3ac931ad67bcebf1b06","tarball":"https://registry.npmjs.org/@geolonia/yuuhitsu/-/yuuhitsu-0.1.11.tgz","fileCount":81,"integrity":"sha512-7woP2DnP2jUFo/nfM91Q9iEgKg68anLP32erfkYejega7m3LT4LMUcJxoHs2XKcxFvRkqV+6+62Wr4mSog36aA==","signatures":[{"sig":"MEYCIQD/c3QvQSvo8KAJvDPptQTbCRvHc+jaMRUSgBa14zOrQgIhAMDBwUifrFE3dSrlvQmcA+pVQgSanJ6sOXifUCr9WyDW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":171356},"type":"module","gitHead":"41cb78e5b085ae267f666f9d13c623a3807152b4","scripts":{"dev":"tsx src/cli/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","prepare":"tsc","test:watch":"vitest"},"_npmUser":{"name":"halsk_geolonia","email":"hal@geolonia.com"},"_npmVersion":"10.9.0","description":"右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"yaml":"^2.7.0","chalk":"^5.4.0","dotenv":"^16.4.0","openai":"^4.77.0","commander":"^13.0.0","fast-glob":"^3.3.3","@google/genai":"^0.7.0","@anthropic-ai/sdk":"^0.39.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/yuuhitsu_0.1.11_1777583789311_0.9181191193094915","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@geolonia/yuuhitsu","version":"0.1.12","keywords":["ai","cli","translation","documentation"],"license":"MIT","_id":"@geolonia/yuuhitsu@0.1.12","maintainers":[{"name":"miya0001","email":"hatatatehaze@gmail.com"},{"name":"naogify","email":"n.globe.us@gmail.com"},{"name":"halsk_geolonia","email":"hal@geolonia.com"},{"name":"satsuki-higuchi","email":"piguchi@geolonia.com"},{"name":"dkastl","email":"daniel.kastl@gmail.com"},{"name":"bougan1160","email":"yasuaki.kawakami@geolonia.com"}],"bin":{"yuuhitsu":"dist/cli/index.js"},"dist":{"shasum":"48cca5c7ea6e43081b758fcb9ecd7d6aa302b037","tarball":"https://registry.npmjs.org/@geolonia/yuuhitsu/-/yuuhitsu-0.1.12.tgz","fileCount":81,"integrity":"sha512-3kANdpPwtqxYGUkt0brzrbNsDT+1b3p+VJBIqFCN7IwOrtxmjIEOaY/Wdp8NTxxR+VMjsdb6CeBPKb4Rj836+w==","signatures":[{"sig":"MEUCIC+TC4sZiSKiOtwb8XPwDP3MjX1M0wsxg11JBM1VQEBWAiEAhSyWGs5M13xQKKVkCjIE2vHTg/VkdOlNlP3b/s5Zugc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":172775},"type":"module","gitHead":"6c156718abe6207d565f9303d86bf01288dcb344","scripts":{"dev":"tsx src/cli/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","prepare":"tsc","test:watch":"vitest"},"_npmUser":{"name":"halsk_geolonia","email":"hal@geolonia.com"},"_npmVersion":"10.9.0","description":"右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"yaml":"^2.7.0","chalk":"^5.4.0","dotenv":"^16.4.0","openai":"^4.77.0","commander":"^13.0.0","fast-glob":"^3.3.3","@google/genai":"^0.7.0","@anthropic-ai/sdk":"^0.39.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/yuuhitsu_0.1.12_1777616439149_0.09483081665849458","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@geolonia/yuuhitsu","version":"0.1.13","keywords":["ai","cli","translation","documentation"],"license":"MIT","_id":"@geolonia/yuuhitsu@0.1.13","maintainers":[{"name":"miya0001","email":"hatatatehaze@gmail.com"},{"name":"naogify","email":"n.globe.us@gmail.com"},{"name":"halsk_geolonia","email":"hal@geolonia.com"},{"name":"satsuki-higuchi","email":"piguchi@geolonia.com"},{"name":"dkastl","email":"daniel.kastl@gmail.com"},{"name":"bougan1160","email":"yasuaki.kawakami@geolonia.com"}],"bin":{"yuuhitsu":"dist/cli/index.js"},"dist":{"shasum":"7040e93b47f33aae50dc9368c28e5ba29a0b02e5","tarball":"https://registry.npmjs.org/@geolonia/yuuhitsu/-/yuuhitsu-0.1.13.tgz","fileCount":81,"integrity":"sha512-nAGRvtS+ZAjo0TvPQNorO2so31b/CLKVlXMnQtpGETNoWsxPbn4FmzFSz1FBp65b2xqbnVaxL4dasVC1iXKzIA==","signatures":[{"sig":"MEYCIQD4ZuL86vYsOX0JzmGMiZ+X5tvxGXjjjSS5GmkGWQxu5QIhAJIF8/GDzTp2T4/k3e5QB5hQRrH1qHAFhoAsBzdRzcug","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173326},"type":"module","gitHead":"80dd4665cd5f166b9311ad10772b2d39e3ad91e1","scripts":{"dev":"tsx src/cli/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","prepare":"tsc","test:watch":"vitest"},"_npmUser":{"name":"halsk_geolonia","email":"hal@geolonia.com"},"_npmVersion":"10.9.0","description":"右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"yaml":"^2.7.0","chalk":"^5.4.0","dotenv":"^16.4.0","openai":"^4.77.0","commander":"^13.0.0","fast-glob":"^3.3.3","@google/genai":"^0.7.0","@anthropic-ai/sdk":"^0.39.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/yuuhitsu_0.1.13_1777688006890_0.9405454106577504","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"@geolonia/yuuhitsu","version":"0.1.14","keywords":["ai","cli","translation","documentation"],"license":"MIT","_id":"@geolonia/yuuhitsu@0.1.14","maintainers":[{"name":"miya0001","email":"hatatatehaze@gmail.com"},{"name":"naogify","email":"n.globe.us@gmail.com"},{"name":"halsk_geolonia","email":"hal@geolonia.com"},{"name":"satsuki-higuchi","email":"piguchi@geolonia.com"},{"name":"dkastl","email":"daniel.kastl@gmail.com"},{"name":"bougan1160","email":"yasuaki.kawakami@geolonia.com"}],"bin":{"yuuhitsu":"dist/cli/index.js"},"dist":{"shasum":"bbd185a8cd7d59718a6072007e7c3d49fb885b96","tarball":"https://registry.npmjs.org/@geolonia/yuuhitsu/-/yuuhitsu-0.1.14.tgz","fileCount":81,"integrity":"sha512-FHRCQIEEv+ZzWMCvkjDQuaveaSQke4zsqaHo3pJPfT54mVaCsXsBTnf5O/mqQeoylnb5zYUmAg3N9kinkUuvNA==","signatures":[{"sig":"MEUCIDrK5YuorXDiPgqAlettljt+LqcOe+VuiPmz48vfgyC2AiEAth4knGrF2+vCg0+Dcr6eHNbj4RBuV6s5cbVTMDYumlI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":178172},"type":"module","gitHead":"2b43c2519b4321575f0666fa21f70c7569a346ee","scripts":{"dev":"tsx src/cli/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","prepare":"tsc","test:watch":"vitest"},"_npmUser":{"name":"halsk_geolonia","email":"hal@geolonia.com"},"_npmVersion":"10.9.0","description":"右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"yaml":"^2.7.0","chalk":"^5.4.0","dotenv":"^16.4.0","openai":"^4.77.0","commander":"^13.0.0","fast-glob":"^3.3.3","@google/genai":"^0.7.0","@anthropic-ai/sdk":"^0.39.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/yuuhitsu_0.1.14_1777726776599_0.8126893570015785","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"@geolonia/yuuhitsu","version":"0.1.15","keywords":["ai","cli","translation","documentation"],"license":"MIT","_id":"@geolonia/yuuhitsu@0.1.15","maintainers":[{"name":"miya0001","email":"hatatatehaze@gmail.com"},{"name":"naogify","email":"n.globe.us@gmail.com"},{"name":"halsk_geolonia","email":"hal@geolonia.com"},{"name":"satsuki-higuchi","email":"piguchi@geolonia.com"},{"name":"dkastl","email":"daniel.kastl@gmail.com"},{"name":"bougan1160","email":"yasuaki.kawakami@geolonia.com"}],"bin":{"yuuhitsu":"dist/cli/index.js"},"dist":{"shasum":"1b85d222e4b7cff80fad7b8b8770c17687d1a539","tarball":"https://registry.npmjs.org/@geolonia/yuuhitsu/-/yuuhitsu-0.1.15.tgz","fileCount":81,"integrity":"sha512-abqyy39Znejc37Pw23axMn5mBpnDHr7lto6U3s1+sM43dr2XfPhxU/zmxfPdOQLBuQSv8LodcLt/Mwfx0oJ2IA==","signatures":[{"sig":"MEUCIGVX4mEnPm+hIyxW318VKL4JNQOqyGusVSJdSq45c3yIAiEAtXNKq5E49F2znnhFUDKuWaddqNb33m2C1BuMOejNBjE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":186917},"type":"module","gitHead":"f36eed2978b68de6fbb98a32ad67f21291354634","scripts":{"dev":"tsx src/cli/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","prepare":"tsc","test:watch":"vitest"},"_npmUser":{"name":"halsk_geolonia","email":"hal@geolonia.com"},"deprecated":"Superseded by 0.3.0; please upgrade.","_npmVersion":"10.9.0","description":"右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"yaml":"^2.7.0","chalk":"^5.4.0","dotenv":"^16.4.0","openai":"^4.77.0","commander":"^13.0.0","fast-glob":"^3.3.3","@google/genai":"^0.7.0","@anthropic-ai/sdk":"^0.39.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/yuuhitsu_0.1.15_1777853935839_0.16075663505454574","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"@geolonia/yuuhitsu","version":"0.1.16","keywords":["ai","cli","translation","documentation"],"license":"MIT","_id":"@geolonia/yuuhitsu@0.1.16","maintainers":[{"name":"miya0001","email":"hatatatehaze@gmail.com"},{"name":"naogify","email":"n.globe.us@gmail.com"},{"name":"halsk_geolonia","email":"hal@geolonia.com"},{"name":"satsuki-higuchi","email":"piguchi@geolonia.com"},{"name":"dkastl","email":"daniel.kastl@gmail.com"},{"name":"bougan1160","email":"yasuaki.kawakami@geolonia.com"}],"bin":{"yuuhitsu":"dist/cli/index.js"},"dist":{"shasum":"19284e573bf2281d02f207f1ee37b52e88ccb879","tarball":"https://registry.npmjs.org/@geolonia/yuuhitsu/-/yuuhitsu-0.1.16.tgz","fileCount":81,"integrity":"sha512-TRdn4kPZ9Byr+b6rWbF7Xcv7jypoTseeNyYtT9DWX9iJtcx7/mK9bdjbL9FCHCDwf5J9fuxrOXMFyN87MlaJ5Q==","signatures":[{"sig":"MEQCIGwUNQrydF7q8P/rY53s4CH5RsxaMRvhcbihuSm+ESE9AiBMiSvWx0BSbLt9ypy49GLGYvZUypO5tYIPmwa9geH8kg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":189976},"type":"module","gitHead":"ebd103ef4943ff72bb4ab737611cb25e9b82e11d","scripts":{"dev":"tsx src/cli/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","prepare":"tsc","test:watch":"vitest","test:integration":"vitest run tests/integration/translate-block-boundaries.real-llm.test.ts"},"_npmUser":{"name":"halsk_geolonia","email":"hal@geolonia.com"},"deprecated":"Superseded by 0.3.0; please upgrade.","_npmVersion":"10.9.0","description":"右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"yaml":"^2.7.0","chalk":"^5.4.0","dotenv":"^16.4.0","openai":"^4.77.0","commander":"^13.0.0","fast-glob":"^3.3.3","@google/genai":"^0.7.0","@anthropic-ai/sdk":"^0.39.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/yuuhitsu_0.1.16_1777948076824_0.48418639493896976","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"@geolonia/yuuhitsu","version":"0.1.17","keywords":["ai","cli","translation","documentation"],"license":"MIT","_id":"@geolonia/yuuhitsu@0.1.17","maintainers":[{"name":"miya0001","email":"hatatatehaze@gmail.com"},{"name":"naogify","email":"n.globe.us@gmail.com"},{"name":"halsk_geolonia","email":"hal@geolonia.com"},{"name":"satsuki-higuchi","email":"piguchi@geolonia.com"},{"name":"dkastl","email":"daniel.kastl@gmail.com"},{"name":"bougan1160","email":"yasuaki.kawakami@geolonia.com"}],"bin":{"yuuhitsu":"dist/cli/index.js"},"dist":{"shasum":"d67450aa18a8588e9a61307245f4ec308d8ce8ed","tarball":"https://registry.npmjs.org/@geolonia/yuuhitsu/-/yuuhitsu-0.1.17.tgz","fileCount":81,"integrity":"sha512-OqGwPWwtApKd58SlqRoUmDjnN9VJCeRMRuNt4yOwCc/KH2L0buv395EZ2Hf03yHlFLDVbJjgrofbFCv2AdCQGQ==","signatures":[{"sig":"MEUCIDdnB/VPkzio8BVzyx/YA8lYeYFqI1QJ/SWmCpwzW0/kAiEAjx2Lo1uTpqVPuf50hyohB8aO9yAxvnYCFwrO2XvRS0I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":198978},"type":"module","gitHead":"9837e9fabb1b5c492541b82602d8afc13061c7b7","scripts":{"dev":"tsx src/cli/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","prepare":"tsc","test:watch":"vitest","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"halsk_geolonia","email":"hal@geolonia.com"},"deprecated":"Superseded by 0.3.0; please upgrade.","_npmVersion":"10.9.0","description":"右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"yaml":"^2.7.0","chalk":"^5.4.0","dotenv":"^16.4.0","openai":"^4.77.0","commander":"^13.0.0","fast-glob":"^3.3.3","@google/genai":"^0.7.0","@anthropic-ai/sdk":"^0.39.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/yuuhitsu_0.1.17_1777957990124_0.1971566756086558","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@geolonia/yuuhitsu","version":"0.2.0","keywords":["ai","cli","translation","documentation"],"license":"MIT","_id":"@geolonia/yuuhitsu@0.2.0","maintainers":[{"name":"miya0001","email":"hatatatehaze@gmail.com"},{"name":"naogify","email":"n.globe.us@gmail.com"},{"name":"halsk_geolonia","email":"hal@geolonia.com"},{"name":"satsuki-higuchi","email":"piguchi@geolonia.com"},{"name":"dkastl","email":"daniel.kastl@gmail.com"},{"name":"bougan1160","email":"yasuaki.kawakami@geolonia.com"}],"bin":{"yuuhitsu":"dist/cli/index.js"},"dist":{"shasum":"01d5f288490877f42cf02a5d3466d17cc9135af3","tarball":"https://registry.npmjs.org/@geolonia/yuuhitsu/-/yuuhitsu-0.2.0.tgz","fileCount":81,"integrity":"sha512-AfaNgoF2U0J9B6CLpQcoVh+zbocm5vRP0P31uyUC2Ys5U63fp7qesSPuRTjGya1RXCKGFboq18bMlIA/rgZHnA==","signatures":[{"sig":"MEUCIQDjDZvIUZqlYhCG7PhbDhtiKDZo5M42SXQXvtmfvMM7XQIgKGWRuroWrlRJi15GOZq2Xaa20ie+iqN4HnQvZBgQvvA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":195275},"type":"module","gitHead":"aa4ffc505f739ab441daca209d00f6e970d06c35","scripts":{"dev":"tsx src/cli/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","prepare":"tsc","test:watch":"vitest","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"halsk_geolonia","email":"hal@geolonia.com"},"deprecated":"Superseded by 0.3.0; please upgrade.","_npmVersion":"10.9.0","description":"右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"yaml":"^2.7.0","chalk":"^5.4.0","dotenv":"^16.4.0","openai":"^4.77.0","remark":"^15.0.1","commander":"^13.0.0","fast-glob":"^3.3.3","remark-gfm":"^4.0.1","@google/genai":"^0.7.0","unist-util-visit":"^5.1.0","@anthropic-ai/sdk":"^0.39.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/yuuhitsu_0.2.0_1777974355451_0.3653275815457906","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@geolonia/yuuhitsu","version":"0.2.2","keywords":["ai","cli","translation","documentation"],"license":"MIT","_id":"@geolonia/yuuhitsu@0.2.2","maintainers":[{"name":"miya0001","email":"hatatatehaze@gmail.com"},{"name":"naogify","email":"n.globe.us@gmail.com"},{"name":"halsk_geolonia","email":"hal@geolonia.com"},{"name":"satsuki-higuchi","email":"piguchi@geolonia.com"},{"name":"dkastl","email":"daniel.kastl@gmail.com"},{"name":"bougan1160","email":"yasuaki.kawakami@geolonia.com"}],"bin":{"yuuhitsu":"dist/cli/index.js"},"dist":{"shasum":"bfb388c190fc4eb1d0ca034020a6819489f4ed52","tarball":"https://registry.npmjs.org/@geolonia/yuuhitsu/-/yuuhitsu-0.2.2.tgz","fileCount":81,"integrity":"sha512-CgZjRsagStSgO+WOVFcMDlQj/oRD7RU+lOlGuWFCPoRudqrW0VdsR50Oy8N+nnHlJJReesZNhciNRExtIXEkoQ==","signatures":[{"sig":"MEUCIQDjO5jAwTyKqpinVt89pk4qDau7eYZnBjzbu3abqvhGpwIgD+xMGmH49zRe03qUpognUg8UMup2gNLo5Et4B9Wd+UI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":198738},"type":"module","gitHead":"9fb02e44c9dffb7c8960d747d3feb793447ac844","scripts":{"dev":"tsx src/cli/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","prepare":"tsc","test:watch":"vitest","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"halsk_geolonia","email":"hal@geolonia.com"},"deprecated":"Superseded by 0.3.0; please upgrade.","_npmVersion":"10.9.0","description":"右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"yaml":"^2.7.0","chalk":"^5.4.0","dotenv":"^16.4.0","openai":"^4.77.0","remark":"^15.0.1","commander":"^13.0.0","fast-glob":"^3.3.3","remark-gfm":"^4.0.1","@google/genai":"^0.7.0","unist-util-visit":"^5.1.0","@anthropic-ai/sdk":"^0.39.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/mdast":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/yuuhitsu_0.2.2_1778026606493_0.1371497670187216","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@geolonia/yuuhitsu","version":"0.2.4","keywords":["ai","cli","translation","documentation"],"license":"MIT","_id":"@geolonia/yuuhitsu@0.2.4","maintainers":[{"name":"miya0001","email":"hatatatehaze@gmail.com"},{"name":"naogify","email":"n.globe.us@gmail.com"},{"name":"halsk_geolonia","email":"hal@geolonia.com"},{"name":"satsuki-higuchi","email":"piguchi@geolonia.com"},{"name":"dkastl","email":"daniel.kastl@gmail.com"},{"name":"bougan1160","email":"yasuaki.kawakami@geolonia.com"}],"bin":{"yuuhitsu":"dist/cli/index.js"},"dist":{"shasum":"851b34c3b910660921a4877dce08e297b2748ab7","tarball":"https://registry.npmjs.org/@geolonia/yuuhitsu/-/yuuhitsu-0.2.4.tgz","fileCount":81,"integrity":"sha512-0KalpMZdKmtQ05tk7rM7CyGN+C5b/sX80YPCQ1wAPvwv5cZ3if9W0VIfD4E318PFv+PNDbPdTsZUeZvRbS4i9w==","signatures":[{"sig":"MEUCIQC16OvYWnQi2i/SBKpbLNopmFyVB8LY1sIDFG0V9QjBTAIgD5GryXMhT0y0I2M/VT/CkT8HYkcCidkHKfL0T8ZhXV4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":198738},"type":"module","gitHead":"a4d19d5b948105ea97138ac7194b7ac9bc37a66d","scripts":{"dev":"tsx src/cli/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","prepare":"tsc","test:watch":"vitest","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"halsk_geolonia","email":"hal@geolonia.com"},"deprecated":"Superseded by 0.3.0 with semantic-aware translation.","_npmVersion":"10.9.0","description":"右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"yaml":"^2.7.0","chalk":"^5.4.0","dotenv":"^16.4.0","openai":"^4.77.0","remark":"^15.0.1","commander":"^13.0.0","fast-glob":"^3.3.3","remark-gfm":"^4.0.1","@google/genai":"^0.7.0","unist-util-visit":"^5.1.0","@anthropic-ai/sdk":"^0.39.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/mdast":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/yuuhitsu_0.2.4_1778224465258_0.32039457782361525","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@geolonia/yuuhitsu","version":"0.3.0","keywords":["ai","cli","translation","documentation"],"license":"MIT","_id":"@geolonia/yuuhitsu@0.3.0","maintainers":[{"name":"miya0001","email":"hatatatehaze@gmail.com"},{"name":"naogify","email":"n.globe.us@gmail.com"},{"name":"halsk_geolonia","email":"hal@geolonia.com"},{"name":"satsuki-higuchi","email":"piguchi@geolonia.com"},{"name":"dkastl","email":"daniel.kastl@gmail.com"},{"name":"bougan1160","email":"yasuaki.kawakami@geolonia.com"}],"bin":{"yuuhitsu":"dist/cli/index.js"},"dist":{"shasum":"a2e19be6d5429ae87fb9d5b1c2f61581c000107b","tarball":"https://registry.npmjs.org/@geolonia/yuuhitsu/-/yuuhitsu-0.3.0.tgz","fileCount":81,"integrity":"sha512-E3TG6mie/aus1adMQV4H65b9aBrSB/lIfyTj8Z5g5Jc0aSirf+K+Zq+LChj6C0sZfIclFtWY8BKg7KLnhcdL/Q==","signatures":[{"sig":"MEYCIQC+IxBlW1ou+fA3POHB5gQBbPg0wlSL8SJ7yTL2oYNFtAIhAJCI4k/4WjhMf3ZdW8iqf8i8K+SQrfZjK2ebopFXu9Ne","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":203227},"type":"module","gitHead":"07a8ce944cab3189704e23765d0058dea0be4ac6","scripts":{"dev":"tsx src/cli/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","prepare":"tsc","local-qc":"tsx scripts/local-qc.ts","test:watch":"vitest","prepublishOnly":"tsx scripts/local-qc.ts","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"halsk_geolonia","email":"hal@geolonia.com"},"_npmVersion":"10.9.0","description":"右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"yaml":"^2.7.0","chalk":"^5.4.0","dotenv":"^16.4.0","openai":"^4.77.0","remark":"^15.0.1","commander":"^13.0.0","fast-glob":"^3.3.3","remark-gfm":"^4.0.1","@google/genai":"^0.7.0","unist-util-visit":"^5.1.0","@anthropic-ai/sdk":"^0.39.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/mdast":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/yuuhitsu_0.3.0_1778450798822_0.41837635956648933","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@geolonia/yuuhitsu","version":"0.3.1","keywords":["ai","cli","translation","documentation"],"license":"MIT","_id":"@geolonia/yuuhitsu@0.3.1","maintainers":[{"name":"miya0001","email":"hatatatehaze@gmail.com"},{"name":"naogify","email":"n.globe.us@gmail.com"},{"name":"halsk_geolonia","email":"hal@geolonia.com"},{"name":"satsuki-higuchi","email":"piguchi@geolonia.com"},{"name":"dkastl","email":"daniel.kastl@gmail.com"},{"name":"bougan1160","email":"yasuaki.kawakami@geolonia.com"}],"bin":{"yuuhitsu":"dist/cli/index.js"},"dist":{"shasum":"efeb794e32a82cf5e6f9886926bc33bc2b7cc68c","tarball":"https://registry.npmjs.org/@geolonia/yuuhitsu/-/yuuhitsu-0.3.1.tgz","fileCount":82,"integrity":"sha512-9RaZpxnBW7A7jIDYN4ber1XUwDoS4F3sQZtw5sGMSToenBrdOJiJK1xuMsca94FcAzBGYTXtD6/yjiJ9Iz4l3A==","signatures":[{"sig":"MEUCIDTvLPy1mO44acbxCkTJ6JLd3YdpjTBMS/s4oZJbVtSdAiEAm/NTRtj/DEC4QwEbxlzyVBAKZojICZwaCVnB727O9nk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":228982},"type":"module","gitHead":"7612a32e7bd9ed8ea7a8ecc86a28ce5db1211cc5","scripts":{"dev":"tsx src/cli/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","prepare":"tsc","local-qc":"tsx scripts/local-qc.ts","test:watch":"vitest","prepublishOnly":"tsx scripts/local-qc.ts","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"halsk_geolonia","email":"hal@geolonia.com"},"_npmVersion":"10.9.0","description":"右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"yaml":"^2.7.0","chalk":"^5.4.0","dotenv":"^16.4.0","openai":"^4.77.0","remark":"^15.0.1","commander":"^13.0.0","fast-glob":"^3.3.3","remark-gfm":"^4.0.1","@google/genai":"^0.7.0","unist-util-visit":"^5.1.0","@anthropic-ai/sdk":"^0.39.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/mdast":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/yuuhitsu_0.3.1_1778477771997_0.9977891582428993","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@geolonia/yuuhitsu","version":"0.3.2","description":"右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.","type":"module","bin":{"yuuhitsu":"dist/cli/index.js"},"scripts":{"build":"tsc","prepare":"tsc","dev":"tsx src/cli/index.ts","test":"vitest run","test:watch":"vitest","test:integration":"vitest run --config vitest.integration.config.ts","lint":"tsc --noEmit","local-qc":"tsx scripts/local-qc.ts","prepublishOnly":"tsx scripts/local-qc.ts"},"keywords":["ai","cli","translation","documentation"],"license":"MIT","dependencies":{"@anthropic-ai/sdk":"^0.39.0","@google/genai":"^0.7.0","chalk":"^5.4.0","commander":"^13.0.0","dotenv":"^16.4.0","fast-glob":"^3.3.3","openai":"^4.77.0","remark":"^15.0.1","remark-gfm":"^4.0.1","unist-util-visit":"^5.1.0","yaml":"^2.7.0"},"devDependencies":{"@types/mdast":"^4.0.0","@types/node":"^22.0.0","tsx":"^4.19.0","typescript":"^5.7.0","vitest":"^3.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_id":"@geolonia/yuuhitsu@0.3.2","gitHead":"9420c05a1e4dba10eb746d6d7ae1ce55332e4af7","_nodeVersion":"22.12.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-BVyk+3rh5soKAYtTKzYMJHQX9Y55/zVqCTwFu+9UKHXXkldSUjsp4eOsKjap8OtG1NKSQHXJfXv7+ddMHSzR3g==","shasum":"2ffcc4efb2d89f04a99b071497f782a474ec592f","tarball":"https://registry.npmjs.org/@geolonia/yuuhitsu/-/yuuhitsu-0.3.2.tgz","fileCount":82,"unpackedSize":228720,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCFp0PAEpTlspk9ukxXz2XotbT4z3YI/1zA8p41XNvWbQIhAKzlGnCXOt5UXW7LXDcAVxN1v0rM568Hry8cwZcBtmAP"}]},"_npmUser":{"name":"halsk_geolonia","email":"hal@geolonia.com"},"directories":{},"maintainers":[{"name":"miya0001","email":"hatatatehaze@gmail.com"},{"name":"naogify","email":"n.globe.us@gmail.com"},{"name":"halsk_geolonia","email":"hal@geolonia.com"},{"name":"satsuki-higuchi","email":"piguchi@geolonia.com"},{"name":"dkastl","email":"daniel.kastl@gmail.com"},{"name":"bougan1160","email":"yasuaki.kawakami@geolonia.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/yuuhitsu_0.3.2_1778505287479_0.5168143392882845"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-11T06:00:20.274Z","modified":"2026-05-11T13:14:47.895Z","0.1.0":"2026-02-11T06:00:20.575Z","0.1.1":"2026-02-19T14:17:18.994Z","0.1.2":"2026-02-28T06:48:18.367Z","0.1.3":"2026-02-28T08:44:34.790Z","0.1.4":"2026-02-28T13:46:06.954Z","0.1.5":"2026-03-04T09:29:49.504Z","0.1.6":"2026-03-09T01:17:46.276Z","0.1.8":"2026-03-09T12:05:02.230Z","0.1.9":"2026-04-29T14:17:11.750Z","0.1.10":"2026-04-30T05:09:50.736Z","0.1.11":"2026-04-30T21:16:29.455Z","0.1.12":"2026-05-01T06:20:39.277Z","0.1.13":"2026-05-02T02:13:27.047Z","0.1.14":"2026-05-02T12:59:36.748Z","0.1.15":"2026-05-04T00:18:56.004Z","0.1.16":"2026-05-05T02:27:56.966Z","0.1.17":"2026-05-05T05:13:10.306Z","0.2.0":"2026-05-05T09:45:55.589Z","0.2.2":"2026-05-06T00:16:46.702Z","0.2.4":"2026-05-08T07:14:25.399Z","0.3.0":"2026-05-10T22:06:39.010Z","0.3.1":"2026-05-11T05:36:12.143Z","0.3.2":"2026-05-11T13:14:47.706Z"},"license":"MIT","keywords":["ai","cli","translation","documentation"],"description":"右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.","maintainers":[{"name":"miya0001","email":"hatatatehaze@gmail.com"},{"name":"naogify","email":"n.globe.us@gmail.com"},{"name":"halsk_geolonia","email":"hal@geolonia.com"},{"name":"satsuki-higuchi","email":"piguchi@geolonia.com"},{"name":"dkastl","email":"daniel.kastl@gmail.com"},{"name":"bougan1160","email":"yasuaki.kawakami@geolonia.com"}],"readme":"# yuuhitsu (右筆)\n\nAI-powered document operations CLI\n\n## Overview\n\n**yuuhitsu** (右筆, meaning \"secretary\" or \"scribe\" in feudal Japan) is a command-line tool that automates document operations using AI. The name refers to scribes who served feudal lords, writing and managing official documents on their behalf — this tool serves engineers in the same way, handling translation, documentation generation, and document synchronization.\n\n### Key Capabilities\n\n- **Markdown Translation**: Translate documents while preserving structure, code blocks, and formatting\n- **Glossary Management**: Maintain consistent terminology across all translations with a project-level glossary\n- **Multi-Provider Support**: Switch between Claude (Anthropic), Gemini (Google), and Ollama (local) with a single config line change\n- **Local Quality Control**: Automated pre-publish QC with syntax, semantic, and LLM-judge checks\n- **Dry-Run Mode**: Preview operations without making API calls\n\n## Features\n\n### Translation\n\nyuuhitsu translates Markdown documents at the paragraph level using an AST (remark) pipeline:\n\n1. **Parse** — remark parses the Markdown into an mdast AST\n2. **Extract** — `extractBlockNodes()` collects whole paragraph and heading nodes as markdown units, preserving inline elements (code spans, bold, italic, links) within each block\n3. **Batch** — nodes are grouped into API batches by estimated token count (`--max-tokens-per-batch`, default: 4000 chars ÷ 4)\n4. **Translate** — Claude's structured output (tool_use) returns a guaranteed 1:1 ID-mapped JSON response; Gemini and Ollama use text-mode JSON\n5. **Apply** — translated text is re-parsed through remark and written back into the AST; the full document is then serialized\n\n**Why paragraph-level chunks?**\n\nEarlier releases (0.1.x) split text at inline-element boundaries — for example, splitting `\"When \\`AUTH_ENABLED=true\\`, a token is required.\"` into `\"When \"` and `\", a token is required.\"`. The LLM had no context for each fragment, causing EN/JA mixing, duplicate phrases, and semantic inversions. Paragraph-level chunking (0.3.0) eliminates this class of error.\n\n**What is preserved (never sent to LLM):**\n\n- Fenced code blocks (`` ``` ``...`` ``` ``): preserved as-is via AST\n- Inline code (`` `...` ``): preserved within each paragraph block\n- Document structure (headings, lists, tables, HR, links): handled deterministically by the AST round-trip\n\n### Glossary Management\n\nMaintain a project-level glossary to enforce consistent terminology across all translations.\n\n- **`glossary init`**: Generate a `glossary.yaml` skeleton with example terms\n- **`glossary check`**: Detect forbidden or inconsistent terms in a document — supports Markdown (`.md`) and JSON i18n files (`.json`); violations are reported with line numbers or key paths\n- **`glossary fix`**: Auto-replace `severity: auto-fix` terms in a document\n- **`glossary sync`**: Report translation coverage across all configured languages and create stubs for missing entries\n- **`glossary review`**: Generate a Markdown report of all glossary terms and their translations\n\nWhen a `glossary` path is set in `yuuhitsu.config.yaml`, the `translate` command automatically injects the glossary into the AI prompt, ensuring canonical terms are used and forbidden variants are avoided.\n\n**Severity levels** (set per-term in `glossary.yaml`):\n\n| Level | Behaviour |\n|-------|-----------|\n| `block` | Hard error — CI fails |\n| `warn` | Warning — CI passes, human review required |\n| `auto-fix` | Automatically replaced by `glossary fix` |\n\n### Local Quality Control\n\nyuuhitsu ships a pre-publish QC script (`scripts/local-qc.ts`) that runs against a real translated fixture repository before every `npm publish`. This catches both syntax regressions and semantic quality drops that unit tests cannot detect.\n\n**Syntax checks:**\n\n| Check | Description |\n|-------|-------------|\n| bare-fence | Fenced code blocks without a language tag |\n| five-axis | EN/JA mix, duplicate phrase, heading integrity, anchor validity across fixture files |\n| markdownlint | Common Markdown lint rules |\n| vitepress-build | VitePress build succeeds on the fixture repo |\n\n**Semantic checks:**\n\n| Check | Description |\n|-------|-------------|\n| en-ja-mix | Paragraphs that mix English and Japanese unexpectedly |\n| duplicate-phrase | Same phrase repeated twice within one paragraph |\n| heading-integrity | Headings match between EN and JA versions |\n| anchor-validity | Internal anchor links resolve correctly |\n\n**LLM Judge:**\n\n- Model: `claude-sonnet-4-6`\n- Threshold: average score ≥ 4.0 per fixture, minimum per fixture ≥ 3.5 (scale 1–5)\n- Covers all 7 default fixture files in `LOCAL_QC_FIXTURE_REPO`\n\n**Configuration:**\n\n```bash\n# Point to your translated fixture repository\nexport LOCAL_QC_FIXTURE_REPO=/home/user/workspace/my-docs  # default: /home/hal/workspace/geonicdb-docs\n\n# Run QC manually\nnpm run local-qc\n\n# QC runs automatically before publish\nnpm publish  # triggers prepublishOnly → local-qc.ts\n```\n\nThe QC script also runs in GitHub Actions CI via `.github/workflows/local-qc.yml` on every pull request.\n\n## Quick Start\n\n### Installation\n\n```bash\nnpm install -g @geolonia/yuuhitsu\n```\n\n### Basic Usage\n\n```bash\n# Translate a document to Japanese\nyuuhitsu translate --input README.md --lang ja\n\n# Translate to English\nyuuhitsu translate --input docs.md --lang en --output docs.en.md\n\n# Preview without API calls\nyuuhitsu translate --input README.md --lang ja --dry-run\n\n# Use a specific config file\nyuuhitsu translate --input README.md --lang ja --config ./custom.config.yaml\n```\n\n## Configuration\n\nCreate a `yuuhitsu.config.yaml` file in your project root:\n\n```yaml\n# AI Provider Selection\nprovider: claude  # Options: claude, gemini, ollama\nmodel: claude-sonnet-4-6\n\n# Optional Settings\noutputDir: ./translated\ntemplates: ./templates\nglossary: ./glossary.yaml  # Path to glossary file (enables auto-injection during translation)\nlog:\n  enabled: true\n  path: ./yuuhitsu.log\n```\n\n### Environment Variables\n\nCreate a `.env` file or set environment variables for API authentication:\n\n```bash\n# For Claude (Anthropic) — recommended\nANTHROPIC_API_KEY=your_api_key_here\n\n# For Gemini (Google)\nGOOGLE_API_KEY=your_api_key_here\n\n# Ollama requires no API key (runs locally)\n\n# For Local QC\nLOCAL_QC_FIXTURE_REPO=/path/to/your/translated-docs-repo\n```\n\n### Supported Providers\n\n| Provider | SDK | Environment Variable | Use Case |\n|----------|-----|---------------------|----------|\n| Claude | `@anthropic-ai/sdk` | `ANTHROPIC_API_KEY` | High-quality translation, structured output |\n| Gemini | `@google/genai` | `GOOGLE_API_KEY` | Fast processing, cost-effective |\n| Ollama | `openai` (compatible) | *(none)* | Local execution, privacy, offline use |\n\n## Commands\n\n### `translate`\n\nTranslate Markdown documents between languages.\n\n**Global options** (before subcommand):\n\n- `--config <path>`: Config file path (default: `./yuuhitsu.config.yaml`)\n- `--dry-run`: Show what would be done without making API calls\n- `--verbose`: Enable verbose output\n\n**Options:**\n\n- `--input <path>` (required): Input Markdown file path or glob pattern (e.g., `docs/en/**/*.md`)\n- `--output <path>`: Output file path (defaults to `<input>.<lang>.md`)\n- `--output-dir <dir>`: Output directory for batch translation (preserves directory structure)\n- `--lang <code>` (required): Target language code (e.g., `en`, `ja`, `zh`, `es`)\n- `--max-tokens-per-batch <N>`: Maximum estimated tokens per API batch call (default: `4000`). Increase for large documents with few headings; decrease if you hit API context limits.\n- `--max-chunk-lines <N>`: Maximum lines per translation chunk (legacy fallback; default: `150`). Used only when the AST path is bypassed.\n\n**Single file example:**\n\n```bash\nyuuhitsu translate \\\n  --input ./docs/guide.md \\\n  --output ./docs/guide.ja.md \\\n  --lang ja \\\n  --max-tokens-per-batch 4000\n```\n\n**Batch translation example:**\n\n```bash\nyuuhitsu translate \\\n  --input \"docs/en/**/*.md\" \\\n  --output-dir docs/ja \\\n  --lang ja\n```\n\n### `glossary`\n\nManage the project glossary for terminology consistency.\n\n#### `glossary init`\n\nGenerate a `glossary.yaml` skeleton in the current directory.\n\n**Options:**\n\n- `--output <path>`: Output path for the glossary file (default: `glossary.yaml`)\n- `--force`: Overwrite an existing glossary file\n\n```bash\nyuuhitsu glossary init\nyuuhitsu glossary init --output ./docs/glossary.yaml\n```\n\n#### `glossary check`\n\nDetect forbidden or inconsistent terminology in a document.\n\nSupports both Markdown (`.md`) and JSON i18n files (`.json`). When a `.json` file is provided, violations are reported as key paths (e.g., `dashboard.title`).\n\n**What is skipped (not checked):**\n\n- Fenced code blocks (`` ``` ``...`` ``` ``)\n- Inline code (`` `...` ``)\n- URLs (`http://` / `https://`)\n- Frontmatter (`---`...`---`)\n- URL path portions of Markdown links\n\n**Options:**\n\n- `--input <file>` (required): Document file to check (Markdown or JSON i18n file)\n- `--glossary <path>` (required): Glossary file path\n- `--lang <code>` (required): Language code to check (e.g., `ja`, `en`)\n- `--severity-filter <levels>`: Comma-separated severity levels to report (e.g., `block,warn`). Default: all levels.\n- `--format <format>`: Output format: `text`, `json`, `sarif` (default: `text`)\n\n```bash\n# Check a Markdown document\nyuuhitsu glossary check --input README.md --glossary glossary.yaml --lang ja\n\n# Check only block-level violations\nyuuhitsu glossary check --input README.md --glossary glossary.yaml --lang ja --severity-filter block\n\n# Output SARIF for GitHub Code Scanning\nyuuhitsu glossary check --input README.md --glossary glossary.yaml --lang ja --format sarif\n\n# Check a JSON i18n file\nyuuhitsu glossary check --input locales/ja/common.json --glossary glossary.yaml --lang ja\n```\n\n#### `glossary fix`\n\nAuto-replace `severity: auto-fix` terms in a document.\n\n**Options:**\n\n- `--input <file>` (required): Document file to fix\n- `--glossary <path>` (required): Glossary file path\n- `--lang <code>` (required): Language code\n- `--dry-run`: Show what would be replaced without modifying the file\n\n```bash\nyuuhitsu glossary fix --input README.md --glossary glossary.yaml --lang ja\nyuuhitsu glossary fix --input README.md --glossary glossary.yaml --lang ja --dry-run\n```\n\n#### `glossary sync`\n\nReport translation coverage and create stubs for missing entries.\n\n```bash\nyuuhitsu glossary sync --glossary glossary.yaml\n```\n\n#### `glossary review`\n\nGenerate a Markdown report of all glossary terms and their translations.\n\n```bash\nyuuhitsu glossary review --glossary glossary.yaml\nyuuhitsu glossary review --glossary glossary.yaml --output glossary-report.md\n```\n\n### Glossary File Format\n\n```yaml\nversion: 1\nlanguages: [ja, en]\nterms:\n  - canonical: \"API\"\n    type: noun\n    translations:\n      ja: \"API\"\n      en: \"API\"\n    do_not_use:\n      ja: [\"ＡＰＩ\", \"えーぴーあい\"]\n  - canonical: \"webhook\"\n    type: noun\n    severity: warn          # block | warn | auto-fix (default: block)\n    translations:\n      ja: \"Webhook\"\n      en: \"webhook\"\n    do_not_use:\n      ja: [\"ウェブフック\"]\n      en: [\"web hook\"]\n```\n\n| Field | Description |\n|-------|-------------|\n| `version` | Schema version (currently `1`) |\n| `languages` | List of language codes managed by this glossary |\n| `terms[].canonical` | The authoritative (source-language) term |\n| `terms[].type` | Term type (e.g., `noun`, `verb`) |\n| `terms[].severity` | `block` (default), `warn`, or `auto-fix` |\n| `terms[].translations` | Map of language code → translated term |\n| `terms[].do_not_use` | Map of language code → list of forbidden variants |\n\n## Development\n\n```bash\n# Clone the repository\ngit clone https://github.com/geolonia/yuuhitsu.git\ncd yuuhitsu\n\n# Install dependencies\nnpm install\n\n# Run tests\nnpm test\n\n# Build the project\nnpm run build\n\n# Run locally (development)\nnpm run dev -- translate --input test.md --lang ja\n```\n\n### Running Tests\n\n```bash\n# Run all unit tests\nnpm test\n\n# Watch mode\nnpm run test:watch\n\n# Integration tests (requires ANTHROPIC_API_KEY)\nnpm run test:integration\n\n# Type checking\nnpm run lint\n\n# Local QC (requires LOCAL_QC_FIXTURE_REPO)\nnpm run local-qc\n```\n\n## Changelog\n\nSee [CHANGELOG.md](./CHANGELOG.md) for full version history.\n\n**0.3.0 highlights:**\n\n- Paragraph-level chunk redesign (`extractBlockNodes`) — eliminates EN/JA mixing, duplicate phrases, and semantic inversions caused by inline-element splitting\n- Token-count-based batching (`--max-tokens-per-batch`, default: 4000) — replaces line-count-based `--max-nodes-per-batch`\n- Local QC (`scripts/local-qc.ts`) — prepublishOnly hook + GitHub Actions CI with LLM-judge (`claude-sonnet-4-6`, avg ≥ 4.0)\n\n## License\n\nMIT — See [LICENSE](./LICENSE)\n\nCopyright (c) 2026 Geolonia Inc.\n","readmeFilename":"README.md"}