@geolonia/yuuhitsu 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +383 -0
- package/README.md +141 -63
- package/dist/cli/commands/translate.d.ts.map +1 -1
- package/dist/cli/commands/translate.js +3 -0
- package/dist/cli/commands/translate.js.map +1 -1
- package/dist/provider/claude.d.ts.map +1 -1
- package/dist/provider/claude.js +3 -6
- package/dist/provider/claude.js.map +1 -1
- package/dist/tasks/batch-translate.d.ts +1 -0
- package/dist/tasks/batch-translate.d.ts.map +1 -1
- package/dist/tasks/batch-translate.js +2 -1
- package/dist/tasks/batch-translate.js.map +1 -1
- package/dist/tasks/translate.d.ts +2 -0
- package/dist/tasks/translate.d.ts.map +1 -1
- package/dist/tasks/translate.js +67 -21
- package/dist/tasks/translate.js.map +1 -1
- package/package.json +2 -1
package/README.ja.md
ADDED
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
# yuuhitsu (右筆)
|
|
2
|
+
|
|
3
|
+
AI を活用したドキュメント操作 CLI
|
|
4
|
+
|
|
5
|
+
## 概要
|
|
6
|
+
|
|
7
|
+
**yuuhitsu**(右筆、封建時代の日本で「秘書」や「書記」を意味する)は、AI を使用してドキュメント操作を自動化するコマンドラインツールです。この名前は、封建領主に仕え、公式文書の執筆・管理を代行した書記に由来しています — このツールはエンジニアに対して同様の役割を果たし、翻訳、ドキュメント生成、ドキュメント同期を担います。
|
|
8
|
+
|
|
9
|
+
### 主な機能
|
|
10
|
+
|
|
11
|
+
* **Markdown 翻訳**:構造、コードブロック、フォーマットを保持しながらドキュメントを翻訳
|
|
12
|
+
* **用語集管理**:プロジェクトレベルの用語集により、すべての翻訳で一貫した用語を維持
|
|
13
|
+
* **マルチプロバイダー対応**:設定ファイルの 1 行を変更するだけで、Claude(Anthropic)、Gemini(Google)、Ollama(ローカル)を切り替え可能
|
|
14
|
+
* **ローカル品質管理**:構文チェック、意味チェック、LLM ジャッジチェックによる公開前の自動 QC
|
|
15
|
+
* **ドライランモード**:API 呼び出しを行わずに操作のプレビューが可能
|
|
16
|
+
|
|
17
|
+
## 機能
|
|
18
|
+
|
|
19
|
+
### 翻訳
|
|
20
|
+
|
|
21
|
+
yuuhitsu は AST(remark)パイプラインを使用して、段落レベルで Markdown ドキュメントを翻訳します:
|
|
22
|
+
|
|
23
|
+
1. **解析** — remark が Markdown を mdast AST に解析します
|
|
24
|
+
2. **抽出** — `extractBlockNodes()` が段落全体と見出しノードを Markdown 単位として収集し、各ブロック内のインライン要素(コードスパン、太字、斜体、リンク)を保持します
|
|
25
|
+
3. **バッチ処理** — ノードは推定トークン数に基づいて API バッチにグループ化されます(`--max-tokens-per-batch`、デフォルト:4000 文字 ÷ 4)
|
|
26
|
+
4. **翻訳** — Claude の構造化出力(tool\_use)は 1:1 の ID マッピングが保証された JSON レスポンスを返します;Gemini と Ollama はテキストモードの JSON を使用します
|
|
27
|
+
5. **適用** — 翻訳されたテキストは remark を通じて再解析され、AST に書き戻されます;その後、ドキュメント全体がシリアライズされます
|
|
28
|
+
|
|
29
|
+
**なぜ段落レベルのチャンクなのか?**
|
|
30
|
+
|
|
31
|
+
以前のリリース(0.1.x)ではテキストをインライン要素の境界で分割していました — たとえば、`"When \`AUTH\_ENABLED=true\`, a token is required."`を`"When "`と`", a token is required."`に分割するなどです。LLM は各フラグメントのコンテキストを持たず、英語と日本語の混在、フレーズの重複、意味の逆転などの問題が生じました。段落レベルのチャンク処理(0.3.0)により、このクラスのエラーが解消されます。
|
|
32
|
+
|
|
33
|
+
**保持されるもの(LLM に送信されないもの):**
|
|
34
|
+
|
|
35
|
+
* フェンスコードブロック(` ``` `...` ``` `):AST によってそのまま保持
|
|
36
|
+
* インラインコード(`` `...` ``):各段落ブロック内で保持
|
|
37
|
+
* ドキュメント構造(見出し、リスト、テーブル、HR、リンク):AST のラウンドトリップによって確定的に処理
|
|
38
|
+
|
|
39
|
+
### 用語集の管理
|
|
40
|
+
|
|
41
|
+
プロジェクトレベルの用語集を管理して、すべての翻訳にわたって一貫した用語を徹底します。
|
|
42
|
+
|
|
43
|
+
* **`glossary init`**:サンプル用語を含む `glossary.yaml` のスケルトンを生成します
|
|
44
|
+
* **`glossary check`**:ドキュメント内の禁止用語や不整合な用語を検出します — Markdown(`.md`)と JSON i18n ファイル(`.json`)をサポート;違反は行番号またはキーパスとともに報告されます
|
|
45
|
+
* **`glossary fix`**:ドキュメント内の `severity: auto-fix` 用語を自動置換します
|
|
46
|
+
* **`glossary sync`**:設定されたすべての言語における翻訳カバレッジをレポートし、欠落エントリのスタブを作成します
|
|
47
|
+
* **`glossary review`**:すべての用語集の用語とその翻訳の Markdown レポートを生成します
|
|
48
|
+
|
|
49
|
+
`yuuhitsu.config.yaml` に `glossary` のパスが設定されている場合、`translate` コマンドは自動的に用語集を AI プロンプトに注入し、正規の用語が使用され、禁止されたバリアントが回避されることを保証します。
|
|
50
|
+
|
|
51
|
+
**重大度レベル**(`glossary.yaml` で用語ごとに設定):
|
|
52
|
+
|
|
53
|
+
| Level | Behaviour |
|
|
54
|
+
| ---------- | ------------------------------------------ |
|
|
55
|
+
| `block` | Hard error — CI fails |
|
|
56
|
+
| `warn` | Warning — CI passes, human review required |
|
|
57
|
+
| `auto-fix` | Automatically replaced by `glossary fix` |
|
|
58
|
+
|
|
59
|
+
### ローカル品質管理
|
|
60
|
+
|
|
61
|
+
yuuhitsu には公開前 QC スクリプト(`scripts/local-qc.ts`)が同梱されており、`npm publish` のたびに実際の翻訳済みフィクスチャリポジトリに対して実行されます。これにより、ユニットテストでは検出できない構文のリグレッションとセマンティックな品質低下の両方を捕捉します。
|
|
62
|
+
|
|
63
|
+
**構文チェック:**
|
|
64
|
+
|
|
65
|
+
| Check | Description |
|
|
66
|
+
| --------------- | ------------------------------------------------------------------------------------ |
|
|
67
|
+
| bare-fence | Fenced code blocks without a language tag |
|
|
68
|
+
| five-axis | EN/JA mix, duplicate phrase, heading integrity, anchor validity across fixture files |
|
|
69
|
+
| markdownlint | Common Markdown lint rules |
|
|
70
|
+
| vitepress-build | VitePress build succeeds on the fixture repo |
|
|
71
|
+
|
|
72
|
+
**セマンティックチェック:**
|
|
73
|
+
|
|
74
|
+
| Check | Description |
|
|
75
|
+
| ----------------- | ----------------------------------------------------- |
|
|
76
|
+
| en-ja-mix | Paragraphs that mix English and Japanese unexpectedly |
|
|
77
|
+
| duplicate-phrase | Same phrase repeated twice within one paragraph |
|
|
78
|
+
| heading-integrity | Headings match between EN and JA versions |
|
|
79
|
+
| anchor-validity | Internal anchor links resolve correctly |
|
|
80
|
+
|
|
81
|
+
**LLM ジャッジ:**
|
|
82
|
+
|
|
83
|
+
* モデル:`claude-sonnet-4-6`
|
|
84
|
+
* 閾値:フィクスチャごとの平均スコア ≥ 4.0、フィクスチャごとの最低スコア ≥ 3.5(スケール 1〜5)
|
|
85
|
+
* `LOCAL_QC_FIXTURE_REPO` 内のデフォルトフィクスチャファイル全 7 件をカバー
|
|
86
|
+
|
|
87
|
+
**設定:**
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Point to your translated fixture repository
|
|
91
|
+
export LOCAL_QC_FIXTURE_REPO=/home/user/workspace/my-docs # default: /home/hal/workspace/geonicdb-docs
|
|
92
|
+
|
|
93
|
+
# Run QC manually
|
|
94
|
+
npm run local-qc
|
|
95
|
+
|
|
96
|
+
# QC runs automatically before publish
|
|
97
|
+
npm publish # triggers prepublishOnly → local-qc.ts
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
QC スクリプトはすべてのプルリクエストに対して `.github/workflows/local-qc.yml` 経由で GitHub Actions CI でも実行されます。
|
|
101
|
+
|
|
102
|
+
## クイックスタート
|
|
103
|
+
|
|
104
|
+
### インストール
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
npm install -g @geolonia/yuuhitsu
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### 基本的な使い方
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# Translate a document to Japanese
|
|
114
|
+
yuuhitsu translate --input README.md --lang ja
|
|
115
|
+
|
|
116
|
+
# Translate to English
|
|
117
|
+
yuuhitsu translate --input docs.md --lang en --output docs.en.md
|
|
118
|
+
|
|
119
|
+
# Preview without API calls
|
|
120
|
+
yuuhitsu translate --input README.md --lang ja --dry-run
|
|
121
|
+
|
|
122
|
+
# Use a specific config file
|
|
123
|
+
yuuhitsu translate --input README.md --lang ja --config ./custom.config.yaml
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## 設定
|
|
127
|
+
|
|
128
|
+
プロジェクトのルートに `yuuhitsu.config.yaml` ファイルを作成します:
|
|
129
|
+
|
|
130
|
+
```yaml
|
|
131
|
+
# AI Provider Selection
|
|
132
|
+
provider: claude # Options: claude, gemini, ollama
|
|
133
|
+
model: claude-sonnet-4-6
|
|
134
|
+
|
|
135
|
+
# Optional Settings
|
|
136
|
+
outputDir: ./translated
|
|
137
|
+
templates: ./templates
|
|
138
|
+
glossary: ./glossary.yaml # Path to glossary file (enables auto-injection during translation)
|
|
139
|
+
log:
|
|
140
|
+
enabled: true
|
|
141
|
+
path: ./yuuhitsu.log
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### 環境変数
|
|
145
|
+
|
|
146
|
+
API 認証用の `.env` ファイルを作成するか、環境変数を設定します:
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
# For Claude (Anthropic) — recommended
|
|
150
|
+
ANTHROPIC_API_KEY=your_api_key_here
|
|
151
|
+
|
|
152
|
+
# For Gemini (Google)
|
|
153
|
+
GOOGLE_API_KEY=your_api_key_here
|
|
154
|
+
|
|
155
|
+
# Ollama requires no API key (runs locally)
|
|
156
|
+
|
|
157
|
+
# For Local QC
|
|
158
|
+
LOCAL_QC_FIXTURE_REPO=/path/to/your/translated-docs-repo
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### サポートされているプロバイダー
|
|
162
|
+
|
|
163
|
+
| Provider | SDK | Environment Variable | Use Case |
|
|
164
|
+
| -------- | --------------------- | -------------------- | ------------------------------------------- |
|
|
165
|
+
| Claude | `@anthropic-ai/sdk` | `ANTHROPIC_API_KEY` | High-quality translation, structured output |
|
|
166
|
+
| Gemini | `@google/genai` | `GOOGLE_API_KEY` | Fast processing, cost-effective |
|
|
167
|
+
| Ollama | `openai` (compatible) | *(none)* | Local execution, privacy, offline use |
|
|
168
|
+
|
|
169
|
+
## コマンド
|
|
170
|
+
|
|
171
|
+
### `translate`
|
|
172
|
+
|
|
173
|
+
Markdown ドキュメントを言語間で翻訳します。
|
|
174
|
+
|
|
175
|
+
**グローバルオプション**(サブコマンドの前):
|
|
176
|
+
|
|
177
|
+
* `--config <path>`:設定ファイルのパス(デフォルト:`./yuuhitsu.config.yaml`)
|
|
178
|
+
* `--dry-run`:API 呼び出しを行わずに実行内容を表示します
|
|
179
|
+
* `--verbose`:詳細な出力を有効にします
|
|
180
|
+
|
|
181
|
+
**オプション:**
|
|
182
|
+
|
|
183
|
+
* `--input <path>`(必須):入力 Markdown ファイルのパスまたは glob パターン(例:`docs/en/**/*.md`)
|
|
184
|
+
* `--output <path>`:出力ファイルのパス(デフォルト:`<input>.<lang>.md`)
|
|
185
|
+
* `--output-dir <dir>`:バッチ翻訳の出力ディレクトリ(ディレクトリ構造を保持します)
|
|
186
|
+
* `--lang <code>`(必須):ターゲット言語コード(例:`en`、`ja`、`zh`、`es`)
|
|
187
|
+
* `--max-tokens-per-batch <N>`:API バッチ呼び出しごとの推定最大トークン数(デフォルト:`4000`)。見出しが少ない大きなドキュメントの場合は増やし、API のコンテキスト制限に達した場合は減らしてください。
|
|
188
|
+
* `--max-chunk-lines <N>`:翻訳チャンクごとの最大行数(レガシーフォールバック;デフォルト:`150`)。AST パスがバイパスされた場合にのみ使用されます。
|
|
189
|
+
|
|
190
|
+
**単一ファイルの例:**
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
yuuhitsu translate \
|
|
194
|
+
--input ./docs/guide.md \
|
|
195
|
+
--output ./docs/guide.ja.md \
|
|
196
|
+
--lang ja \
|
|
197
|
+
--max-tokens-per-batch 4000
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**バッチ翻訳の例:**
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
yuuhitsu translate \
|
|
204
|
+
--input "docs/en/**/*.md" \
|
|
205
|
+
--output-dir docs/ja \
|
|
206
|
+
--lang ja
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### `glossary`
|
|
210
|
+
|
|
211
|
+
用語の一貫性を保つためにプロジェクトの用語集を管理します。
|
|
212
|
+
|
|
213
|
+
#### `glossary init`
|
|
214
|
+
|
|
215
|
+
現在のディレクトリに `glossary.yaml` のスケルトンを生成します。
|
|
216
|
+
|
|
217
|
+
**オプション:**
|
|
218
|
+
|
|
219
|
+
* `--output <path>`:用語集ファイルの出力パス(デフォルト:`glossary.yaml`)
|
|
220
|
+
* `--force`:既存の用語集ファイルを上書きする
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
yuuhitsu glossary init
|
|
224
|
+
yuuhitsu glossary init --output ./docs/glossary.yaml
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
#### `glossary check`
|
|
228
|
+
|
|
229
|
+
ドキュメント内の禁止用語や不統一な用語を検出します。
|
|
230
|
+
|
|
231
|
+
Markdown(`.md`)と JSON i18n ファイル(`.json`)の両方をサポートします。`.json` ファイルを指定した場合、違反はキーパス(例:`dashboard.title`)として報告されます。
|
|
232
|
+
|
|
233
|
+
**スキップされる箇所(チェック対象外):**
|
|
234
|
+
|
|
235
|
+
* フェンスコードブロック(` ``` `...` ``` `)
|
|
236
|
+
* インラインコード(`` `...` ``)
|
|
237
|
+
* URL(`http://` / `https://`)
|
|
238
|
+
* フロントマター(`---`...`---`)
|
|
239
|
+
* Markdown リンクの URL パス部分
|
|
240
|
+
|
|
241
|
+
**オプション:**
|
|
242
|
+
|
|
243
|
+
* `--input <file>`(必須):チェック対象のドキュメントファイル(Markdown または JSON i18n ファイル)
|
|
244
|
+
* `--glossary <path>`(必須):用語集ファイルのパス
|
|
245
|
+
* `--lang <code>`(必須):チェックする言語コード(例:`ja`、`en`)
|
|
246
|
+
* `--severity-filter <levels>`:報告する重要度レベルをカンマ区切りで指定(例:`block,warn`)。デフォルト:全レベル。
|
|
247
|
+
* `--format <format>`:出力形式:`text`、`json`、`sarif`(デフォルト:`text`)
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
# Check a Markdown document
|
|
251
|
+
yuuhitsu glossary check --input README.md --glossary glossary.yaml --lang ja
|
|
252
|
+
|
|
253
|
+
# Check only block-level violations
|
|
254
|
+
yuuhitsu glossary check --input README.md --glossary glossary.yaml --lang ja --severity-filter block
|
|
255
|
+
|
|
256
|
+
# Output SARIF for GitHub Code Scanning
|
|
257
|
+
yuuhitsu glossary check --input README.md --glossary glossary.yaml --lang ja --format sarif
|
|
258
|
+
|
|
259
|
+
# Check a JSON i18n file
|
|
260
|
+
yuuhitsu glossary check --input locales/ja/common.json --glossary glossary.yaml --lang ja
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
#### `glossary fix`
|
|
264
|
+
|
|
265
|
+
ドキュメント内の `severity: auto-fix` 用語を自動置換します。
|
|
266
|
+
|
|
267
|
+
**オプション:**
|
|
268
|
+
|
|
269
|
+
* `--input <file>`(必須):修正対象のドキュメントファイル
|
|
270
|
+
* `--glossary <path>`(必須):用語集ファイルのパス
|
|
271
|
+
* `--lang <code>`(必須):言語コード
|
|
272
|
+
* `--dry-run`:ファイルを変更せずに置換内容をプレビュー表示する
|
|
273
|
+
|
|
274
|
+
```bash
|
|
275
|
+
yuuhitsu glossary fix --input README.md --glossary glossary.yaml --lang ja
|
|
276
|
+
yuuhitsu glossary fix --input README.md --glossary glossary.yaml --lang ja --dry-run
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
#### `glossary sync`
|
|
280
|
+
|
|
281
|
+
翻訳カバレッジを報告し、不足しているエントリのスタブを作成します。
|
|
282
|
+
|
|
283
|
+
```bash
|
|
284
|
+
yuuhitsu glossary sync --glossary glossary.yaml
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
#### `glossary review`
|
|
288
|
+
|
|
289
|
+
すべての用語集の用語とその翻訳を Markdown レポートとして生成します。
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
yuuhitsu glossary review --glossary glossary.yaml
|
|
293
|
+
yuuhitsu glossary review --glossary glossary.yaml --output glossary-report.md
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
### 用語集ファイルのフォーマット
|
|
297
|
+
|
|
298
|
+
```yaml
|
|
299
|
+
version: 1
|
|
300
|
+
languages: [ja, en]
|
|
301
|
+
terms:
|
|
302
|
+
- canonical: "API"
|
|
303
|
+
type: noun
|
|
304
|
+
translations:
|
|
305
|
+
ja: "API"
|
|
306
|
+
en: "API"
|
|
307
|
+
do_not_use:
|
|
308
|
+
ja: ["API", "えーぴーあい"]
|
|
309
|
+
- canonical: "webhook"
|
|
310
|
+
type: noun
|
|
311
|
+
severity: warn # block | warn | auto-fix (default: block)
|
|
312
|
+
translations:
|
|
313
|
+
ja: "Webhook"
|
|
314
|
+
en: "webhook"
|
|
315
|
+
do_not_use:
|
|
316
|
+
ja: ["ウェブフック"]
|
|
317
|
+
en: ["web hook"]
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
| Field | Description |
|
|
321
|
+
| ---------------------- | ------------------------------------------------- |
|
|
322
|
+
| `version` | Schema version (currently `1`) |
|
|
323
|
+
| `languages` | List of language codes managed by this glossary |
|
|
324
|
+
| `terms[].canonical` | The authoritative (source-language) term |
|
|
325
|
+
| `terms[].type` | Term type (e.g., `noun`, `verb`) |
|
|
326
|
+
| `terms[].severity` | `block` (default), `warn`, or `auto-fix` |
|
|
327
|
+
| `terms[].translations` | Map of language code → translated term |
|
|
328
|
+
| `terms[].do_not_use` | Map of language code → list of forbidden variants |
|
|
329
|
+
|
|
330
|
+
## 開発
|
|
331
|
+
|
|
332
|
+
```bash
|
|
333
|
+
# Clone the repository
|
|
334
|
+
git clone https://github.com/geolonia/yuuhitsu.git
|
|
335
|
+
cd yuuhitsu
|
|
336
|
+
|
|
337
|
+
# Install dependencies
|
|
338
|
+
npm install
|
|
339
|
+
|
|
340
|
+
# Run tests
|
|
341
|
+
npm test
|
|
342
|
+
|
|
343
|
+
# Build the project
|
|
344
|
+
npm run build
|
|
345
|
+
|
|
346
|
+
# Run locally (development)
|
|
347
|
+
npm run dev -- translate --input test.md --lang ja
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
### テストの実行
|
|
351
|
+
|
|
352
|
+
```bash
|
|
353
|
+
# Run all unit tests
|
|
354
|
+
npm test
|
|
355
|
+
|
|
356
|
+
# Watch mode
|
|
357
|
+
npm run test:watch
|
|
358
|
+
|
|
359
|
+
# Integration tests (requires ANTHROPIC_API_KEY)
|
|
360
|
+
npm run test:integration
|
|
361
|
+
|
|
362
|
+
# Type checking
|
|
363
|
+
npm run lint
|
|
364
|
+
|
|
365
|
+
# Local QC (requires LOCAL_QC_FIXTURE_REPO)
|
|
366
|
+
npm run local-qc
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
## 変更履歴
|
|
370
|
+
|
|
371
|
+
完全なバージョン履歴については [CHANGELOG.md](./CHANGELOG.md) を参照してください。
|
|
372
|
+
|
|
373
|
+
**0.3.0 のハイライト:**
|
|
374
|
+
|
|
375
|
+
* 段落レベルのチャンク再設計(`extractBlockNodes`) — インライン要素の分割による EN/JA の混在、重複フレーズ、意味の逆転を排除
|
|
376
|
+
* トークン数ベースのバッチ処理(`--max-tokens-per-batch`、デフォルト: 4000) — 行数ベースの `--max-nodes-per-batch` を置き換え
|
|
377
|
+
* ローカル QC(`scripts/local-qc.ts`) — prepublishOnly フック + LLM ジャッジ(`claude-sonnet-4-6`、平均 ≥ 4.0)を使用した GitHub Actions CI
|
|
378
|
+
|
|
379
|
+
## ライセンス
|
|
380
|
+
|
|
381
|
+
MIT — [LICENSE](./LICENSE) を参照
|
|
382
|
+
|
|
383
|
+
Copyright (c) 2026 Geolonia Inc.
|
package/README.md
CHANGED
|
@@ -11,52 +11,100 @@ AI-powered document operations CLI
|
|
|
11
11
|
- **Markdown Translation**: Translate documents while preserving structure, code blocks, and formatting
|
|
12
12
|
- **Glossary Management**: Maintain consistent terminology across all translations with a project-level glossary
|
|
13
13
|
- **Multi-Provider Support**: Switch between Claude (Anthropic), Gemini (Google), and Ollama (local) with a single config line change
|
|
14
|
-
- **
|
|
14
|
+
- **Local Quality Control**: Automated pre-publish QC with syntax, semantic, and LLM-judge checks
|
|
15
15
|
- **Dry-Run Mode**: Preview operations without making API calls
|
|
16
|
-
- **Prompt Templates**: Customize AI behavior with configurable templates
|
|
17
16
|
|
|
18
17
|
## Features
|
|
19
18
|
|
|
20
|
-
### Translation
|
|
19
|
+
### Translation
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
- Preserve document structure (headings, links, code blocks, tables)
|
|
24
|
-
- Support for large files with automatic chunking
|
|
25
|
-
- Real-time streaming output
|
|
26
|
-
- Retry logic with exponential backoff for API failures
|
|
27
|
-
- Automatic glossary lookup during translation (when `glossary` is configured)
|
|
21
|
+
yuuhitsu translates Markdown documents at the paragraph level using an AST (remark) pipeline:
|
|
28
22
|
|
|
29
|
-
**
|
|
23
|
+
1. **Parse** — remark parses the Markdown into an mdast AST
|
|
24
|
+
2. **Extract** — `extractBlockNodes()` collects whole paragraph and heading nodes as markdown units, preserving inline elements (code spans, bold, italic, links) within each block
|
|
25
|
+
3. **Batch** — nodes are grouped into API batches by estimated token count (`--max-tokens-per-batch`, default: 4000 chars ÷ 4)
|
|
26
|
+
4. **Translate** — Claude's structured output (tool_use) returns a guaranteed 1:1 ID-mapped JSON response; Gemini and Ollama use text-mode JSON
|
|
27
|
+
5. **Apply** — translated text is re-parsed through remark and written back into the AST; the full document is then serialized
|
|
30
28
|
|
|
31
|
-
-
|
|
32
|
-
- Inline code (`` `...` ``): preserved as-is
|
|
33
|
-
- Table structure, headings, and links: structure is preserved; only the text content is translated
|
|
29
|
+
**Why paragraph-level chunks?**
|
|
34
30
|
|
|
35
|
-
|
|
31
|
+
Earlier 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.
|
|
32
|
+
|
|
33
|
+
**What is preserved (never sent to LLM):**
|
|
34
|
+
|
|
35
|
+
- Fenced code blocks (`` ``` ``...`` ``` ``): preserved as-is via AST
|
|
36
|
+
- Inline code (`` `...` ``): preserved within each paragraph block
|
|
37
|
+
- Document structure (headings, lists, tables, HR, links): handled deterministically by the AST round-trip
|
|
38
|
+
|
|
39
|
+
### Glossary Management
|
|
36
40
|
|
|
37
41
|
Maintain a project-level glossary to enforce consistent terminology across all translations.
|
|
38
42
|
|
|
39
43
|
- **`glossary init`**: Generate a `glossary.yaml` skeleton with example terms
|
|
40
|
-
- **`glossary check`**: Detect forbidden or inconsistent terms in a document — supports
|
|
44
|
+
- **`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
|
|
45
|
+
- **`glossary fix`**: Auto-replace `severity: auto-fix` terms in a document
|
|
41
46
|
- **`glossary sync`**: Report translation coverage across all configured languages and create stubs for missing entries
|
|
42
47
|
- **`glossary review`**: Generate a Markdown report of all glossary terms and their translations
|
|
43
48
|
|
|
44
49
|
When 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.
|
|
45
50
|
|
|
46
|
-
|
|
51
|
+
**Severity levels** (set per-term in `glossary.yaml`):
|
|
52
|
+
|
|
53
|
+
| Level | Behaviour |
|
|
54
|
+
|-------|-----------|
|
|
55
|
+
| `block` | Hard error — CI fails |
|
|
56
|
+
| `warn` | Warning — CI passes, human review required |
|
|
57
|
+
| `auto-fix` | Automatically replaced by `glossary fix` |
|
|
58
|
+
|
|
59
|
+
### Local Quality Control
|
|
60
|
+
|
|
61
|
+
yuuhitsu 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.
|
|
62
|
+
|
|
63
|
+
**Syntax checks:**
|
|
64
|
+
|
|
65
|
+
| Check | Description |
|
|
66
|
+
|-------|-------------|
|
|
67
|
+
| bare-fence | Fenced code blocks without a language tag |
|
|
68
|
+
| five-axis | EN/JA mix, duplicate phrase, heading integrity, anchor validity across fixture files |
|
|
69
|
+
| markdownlint | Common Markdown lint rules |
|
|
70
|
+
| vitepress-build | VitePress build succeeds on the fixture repo |
|
|
71
|
+
|
|
72
|
+
**Semantic checks:**
|
|
73
|
+
|
|
74
|
+
| Check | Description |
|
|
75
|
+
|-------|-------------|
|
|
76
|
+
| en-ja-mix | Paragraphs that mix English and Japanese unexpectedly |
|
|
77
|
+
| duplicate-phrase | Same phrase repeated twice within one paragraph |
|
|
78
|
+
| heading-integrity | Headings match between EN and JA versions |
|
|
79
|
+
| anchor-validity | Internal anchor links resolve correctly |
|
|
80
|
+
|
|
81
|
+
**LLM Judge:**
|
|
82
|
+
|
|
83
|
+
- Model: `claude-sonnet-4-6`
|
|
84
|
+
- Threshold: average score ≥ 4.0 per fixture, minimum per fixture ≥ 3.5 (scale 1–5)
|
|
85
|
+
- Covers all 7 default fixture files in `LOCAL_QC_FIXTURE_REPO`
|
|
86
|
+
|
|
87
|
+
**Configuration:**
|
|
47
88
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
-
|
|
51
|
-
|
|
52
|
-
|
|
89
|
+
```bash
|
|
90
|
+
# Point to your translated fixture repository
|
|
91
|
+
export LOCAL_QC_FIXTURE_REPO=/home/user/workspace/my-docs # default: /home/hal/workspace/geonicdb-docs
|
|
92
|
+
|
|
93
|
+
# Run QC manually
|
|
94
|
+
npm run local-qc
|
|
95
|
+
|
|
96
|
+
# QC runs automatically before publish
|
|
97
|
+
npm publish # triggers prepublishOnly → local-qc.ts
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
The QC script also runs in GitHub Actions CI via `.github/workflows/local-qc.yml` on every pull request.
|
|
53
101
|
|
|
54
102
|
## Quick Start
|
|
55
103
|
|
|
56
104
|
### Installation
|
|
57
105
|
|
|
58
106
|
```bash
|
|
59
|
-
npm install -g yuuhitsu
|
|
107
|
+
npm install -g @geolonia/yuuhitsu
|
|
60
108
|
```
|
|
61
109
|
|
|
62
110
|
### Basic Usage
|
|
@@ -82,7 +130,7 @@ Create a `yuuhitsu.config.yaml` file in your project root:
|
|
|
82
130
|
```yaml
|
|
83
131
|
# AI Provider Selection
|
|
84
132
|
provider: claude # Options: claude, gemini, ollama
|
|
85
|
-
model: claude-sonnet-4-
|
|
133
|
+
model: claude-sonnet-4-6
|
|
86
134
|
|
|
87
135
|
# Optional Settings
|
|
88
136
|
outputDir: ./translated
|
|
@@ -98,20 +146,23 @@ log:
|
|
|
98
146
|
Create a `.env` file or set environment variables for API authentication:
|
|
99
147
|
|
|
100
148
|
```bash
|
|
101
|
-
# For Claude (Anthropic)
|
|
149
|
+
# For Claude (Anthropic) — recommended
|
|
102
150
|
ANTHROPIC_API_KEY=your_api_key_here
|
|
103
151
|
|
|
104
152
|
# For Gemini (Google)
|
|
105
153
|
GOOGLE_API_KEY=your_api_key_here
|
|
106
154
|
|
|
107
155
|
# Ollama requires no API key (runs locally)
|
|
156
|
+
|
|
157
|
+
# For Local QC
|
|
158
|
+
LOCAL_QC_FIXTURE_REPO=/path/to/your/translated-docs-repo
|
|
108
159
|
```
|
|
109
160
|
|
|
110
161
|
### Supported Providers
|
|
111
162
|
|
|
112
163
|
| Provider | SDK | Environment Variable | Use Case |
|
|
113
164
|
|----------|-----|---------------------|----------|
|
|
114
|
-
| Claude | `@anthropic-ai/sdk` | `ANTHROPIC_API_KEY` | High-quality translation,
|
|
165
|
+
| Claude | `@anthropic-ai/sdk` | `ANTHROPIC_API_KEY` | High-quality translation, structured output |
|
|
115
166
|
| Gemini | `@google/genai` | `GOOGLE_API_KEY` | Fast processing, cost-effective |
|
|
116
167
|
| Ollama | `openai` (compatible) | *(none)* | Local execution, privacy, offline use |
|
|
117
168
|
|
|
@@ -121,27 +172,38 @@ GOOGLE_API_KEY=your_api_key_here
|
|
|
121
172
|
|
|
122
173
|
Translate Markdown documents between languages.
|
|
123
174
|
|
|
124
|
-
**
|
|
175
|
+
**Global options** (before subcommand):
|
|
125
176
|
|
|
126
|
-
- `--input <path>` (required): Input Markdown file path
|
|
127
|
-
- `--output <path>`: Output file path (defaults to input file with `.{lang}.md` suffix)
|
|
128
|
-
- `--lang <code>` (required): Target language code (e.g., `en`, `ja`, `zh`, `es`)
|
|
129
|
-
- `--provider <name>`: Override config provider (claude, gemini, ollama)
|
|
130
|
-
- `--model <name>`: Override config model
|
|
131
|
-
- `--dry-run`: Show what would be done without making API calls
|
|
132
|
-
- `--stream`: Enable streaming output (default: true)
|
|
133
177
|
- `--config <path>`: Config file path (default: `./yuuhitsu.config.yaml`)
|
|
178
|
+
- `--dry-run`: Show what would be done without making API calls
|
|
134
179
|
- `--verbose`: Enable verbose output
|
|
135
180
|
|
|
136
|
-
**
|
|
181
|
+
**Options:**
|
|
182
|
+
|
|
183
|
+
- `--input <path>` (required): Input Markdown file path or glob pattern (e.g., `docs/en/**/*.md`)
|
|
184
|
+
- `--output <path>`: Output file path (defaults to `<input>.<lang>.md`)
|
|
185
|
+
- `--output-dir <dir>`: Output directory for batch translation (preserves directory structure)
|
|
186
|
+
- `--lang <code>` (required): Target language code (e.g., `en`, `ja`, `zh`, `es`)
|
|
187
|
+
- `--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.
|
|
188
|
+
- `--max-chunk-lines <N>`: Maximum lines per translation chunk (legacy fallback; default: `150`). Used only when the AST path is bypassed.
|
|
189
|
+
|
|
190
|
+
**Single file example:**
|
|
137
191
|
|
|
138
192
|
```bash
|
|
139
193
|
yuuhitsu translate \
|
|
140
194
|
--input ./docs/guide.md \
|
|
141
195
|
--output ./docs/guide.ja.md \
|
|
142
196
|
--lang ja \
|
|
143
|
-
--
|
|
144
|
-
|
|
197
|
+
--max-tokens-per-batch 4000
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**Batch translation example:**
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
yuuhitsu translate \
|
|
204
|
+
--input "docs/en/**/*.md" \
|
|
205
|
+
--output-dir docs/ja \
|
|
206
|
+
--lang ja
|
|
145
207
|
```
|
|
146
208
|
|
|
147
209
|
### `glossary`
|
|
@@ -157,8 +219,6 @@ Generate a `glossary.yaml` skeleton in the current directory.
|
|
|
157
219
|
- `--output <path>`: Output path for the glossary file (default: `glossary.yaml`)
|
|
158
220
|
- `--force`: Overwrite an existing glossary file
|
|
159
221
|
|
|
160
|
-
**Example:**
|
|
161
|
-
|
|
162
222
|
```bash
|
|
163
223
|
yuuhitsu glossary init
|
|
164
224
|
yuuhitsu glossary init --output ./docs/glossary.yaml
|
|
@@ -168,48 +228,57 @@ yuuhitsu glossary init --output ./docs/glossary.yaml
|
|
|
168
228
|
|
|
169
229
|
Detect forbidden or inconsistent terminology in a document.
|
|
170
230
|
|
|
171
|
-
Supports both Markdown (`.md`) and JSON i18n files (`.json`). When a `.json` file is provided,
|
|
231
|
+
Supports both Markdown (`.md`) and JSON i18n files (`.json`). When a `.json` file is provided, violations are reported as key paths (e.g., `dashboard.title`).
|
|
172
232
|
|
|
173
233
|
**What is skipped (not checked):**
|
|
174
234
|
|
|
175
|
-
-
|
|
235
|
+
- Fenced code blocks (`` ``` ``...`` ``` ``)
|
|
176
236
|
- Inline code (`` `...` ``)
|
|
177
237
|
- URLs (`http://` / `https://`)
|
|
178
238
|
- Frontmatter (`---`...`---`)
|
|
179
|
-
- URL path portions of Markdown links
|
|
239
|
+
- URL path portions of Markdown links
|
|
180
240
|
|
|
181
241
|
**Options:**
|
|
182
242
|
|
|
183
243
|
- `--input <file>` (required): Document file to check (Markdown or JSON i18n file)
|
|
184
244
|
- `--glossary <path>` (required): Glossary file path
|
|
185
245
|
- `--lang <code>` (required): Language code to check (e.g., `ja`, `en`)
|
|
186
|
-
|
|
187
|
-
|
|
246
|
+
- `--severity-filter <levels>`: Comma-separated severity levels to report (e.g., `block,warn`). Default: all levels.
|
|
247
|
+
- `--format <format>`: Output format: `text`, `json`, `sarif` (default: `text`)
|
|
188
248
|
|
|
189
249
|
```bash
|
|
190
250
|
# Check a Markdown document
|
|
191
251
|
yuuhitsu glossary check --input README.md --glossary glossary.yaml --lang ja
|
|
192
252
|
|
|
193
|
-
# Check
|
|
194
|
-
yuuhitsu glossary check --input
|
|
195
|
-
```
|
|
253
|
+
# Check only block-level violations
|
|
254
|
+
yuuhitsu glossary check --input README.md --glossary glossary.yaml --lang ja --severity-filter block
|
|
196
255
|
|
|
197
|
-
|
|
256
|
+
# Output SARIF for GitHub Code Scanning
|
|
257
|
+
yuuhitsu glossary check --input README.md --glossary glossary.yaml --lang ja --format sarif
|
|
198
258
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
✗ navigation.menu.api: found forbidden term "API" (use "API" instead)
|
|
259
|
+
# Check a JSON i18n file
|
|
260
|
+
yuuhitsu glossary check --input locales/ja/common.json --glossary glossary.yaml --lang ja
|
|
202
261
|
```
|
|
203
262
|
|
|
204
|
-
#### `glossary
|
|
263
|
+
#### `glossary fix`
|
|
205
264
|
|
|
206
|
-
|
|
265
|
+
Auto-replace `severity: auto-fix` terms in a document.
|
|
207
266
|
|
|
208
267
|
**Options:**
|
|
209
268
|
|
|
269
|
+
- `--input <file>` (required): Document file to fix
|
|
210
270
|
- `--glossary <path>` (required): Glossary file path
|
|
271
|
+
- `--lang <code>` (required): Language code
|
|
272
|
+
- `--dry-run`: Show what would be replaced without modifying the file
|
|
273
|
+
|
|
274
|
+
```bash
|
|
275
|
+
yuuhitsu glossary fix --input README.md --glossary glossary.yaml --lang ja
|
|
276
|
+
yuuhitsu glossary fix --input README.md --glossary glossary.yaml --lang ja --dry-run
|
|
277
|
+
```
|
|
211
278
|
|
|
212
|
-
|
|
279
|
+
#### `glossary sync`
|
|
280
|
+
|
|
281
|
+
Report translation coverage and create stubs for missing entries.
|
|
213
282
|
|
|
214
283
|
```bash
|
|
215
284
|
yuuhitsu glossary sync --glossary glossary.yaml
|
|
@@ -219,13 +288,6 @@ yuuhitsu glossary sync --glossary glossary.yaml
|
|
|
219
288
|
|
|
220
289
|
Generate a Markdown report of all glossary terms and their translations.
|
|
221
290
|
|
|
222
|
-
**Options:**
|
|
223
|
-
|
|
224
|
-
- `--glossary <path>` (required): Glossary file path
|
|
225
|
-
- `--output <path>`: Save the report to a file (Markdown)
|
|
226
|
-
|
|
227
|
-
**Example:**
|
|
228
|
-
|
|
229
291
|
```bash
|
|
230
292
|
yuuhitsu glossary review --glossary glossary.yaml
|
|
231
293
|
yuuhitsu glossary review --glossary glossary.yaml --output glossary-report.md
|
|
@@ -233,8 +295,6 @@ yuuhitsu glossary review --glossary glossary.yaml --output glossary-report.md
|
|
|
233
295
|
|
|
234
296
|
### Glossary File Format
|
|
235
297
|
|
|
236
|
-
The `glossary.yaml` file defines canonical terms, their translations, and forbidden variants:
|
|
237
|
-
|
|
238
298
|
```yaml
|
|
239
299
|
version: 1
|
|
240
300
|
languages: [ja, en]
|
|
@@ -248,6 +308,7 @@ terms:
|
|
|
248
308
|
ja: ["API", "えーぴーあい"]
|
|
249
309
|
- canonical: "webhook"
|
|
250
310
|
type: noun
|
|
311
|
+
severity: warn # block | warn | auto-fix (default: block)
|
|
251
312
|
translations:
|
|
252
313
|
ja: "Webhook"
|
|
253
314
|
en: "webhook"
|
|
@@ -262,6 +323,7 @@ terms:
|
|
|
262
323
|
| `languages` | List of language codes managed by this glossary |
|
|
263
324
|
| `terms[].canonical` | The authoritative (source-language) term |
|
|
264
325
|
| `terms[].type` | Term type (e.g., `noun`, `verb`) |
|
|
326
|
+
| `terms[].severity` | `block` (default), `warn`, or `auto-fix` |
|
|
265
327
|
| `terms[].translations` | Map of language code → translated term |
|
|
266
328
|
| `terms[].do_not_use` | Map of language code → list of forbidden variants |
|
|
267
329
|
|
|
@@ -288,16 +350,32 @@ npm run dev -- translate --input test.md --lang ja
|
|
|
288
350
|
### Running Tests
|
|
289
351
|
|
|
290
352
|
```bash
|
|
291
|
-
# Run all tests
|
|
353
|
+
# Run all unit tests
|
|
292
354
|
npm test
|
|
293
355
|
|
|
294
356
|
# Watch mode
|
|
295
357
|
npm run test:watch
|
|
296
358
|
|
|
359
|
+
# Integration tests (requires ANTHROPIC_API_KEY)
|
|
360
|
+
npm run test:integration
|
|
361
|
+
|
|
297
362
|
# Type checking
|
|
298
363
|
npm run lint
|
|
364
|
+
|
|
365
|
+
# Local QC (requires LOCAL_QC_FIXTURE_REPO)
|
|
366
|
+
npm run local-qc
|
|
299
367
|
```
|
|
300
368
|
|
|
369
|
+
## Changelog
|
|
370
|
+
|
|
371
|
+
See [CHANGELOG.md](./CHANGELOG.md) for full version history.
|
|
372
|
+
|
|
373
|
+
**0.3.0 highlights:**
|
|
374
|
+
|
|
375
|
+
- Paragraph-level chunk redesign (`extractBlockNodes`) — eliminates EN/JA mixing, duplicate phrases, and semantic inversions caused by inline-element splitting
|
|
376
|
+
- Token-count-based batching (`--max-tokens-per-batch`, default: 4000) — replaces line-count-based `--max-nodes-per-batch`
|
|
377
|
+
- Local QC (`scripts/local-qc.ts`) — prepublishOnly hook + GitHub Actions CI with LLM-judge (`claude-sonnet-4-6`, avg ≥ 4.0)
|
|
378
|
+
|
|
301
379
|
## License
|
|
302
380
|
|
|
303
381
|
MIT — See [LICENSE](./LICENSE)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/translate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/translate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,eAAO,MAAM,gBAAgB,SAoGzB,CAAC"}
|
|
@@ -14,6 +14,7 @@ export const translateCommand = new Command("translate")
|
|
|
14
14
|
.option("--output-dir <dir>", "Output directory for batch translation (preserves directory structure)")
|
|
15
15
|
.option("--max-chunk-lines <number>", "Maximum lines per translation chunk (default: 300)", parseInt)
|
|
16
16
|
.option("--max-tokens-per-batch <number>", "Maximum estimated tokens per API batch call (default: 4000)", parseInt)
|
|
17
|
+
.option("--system-prompt-suffix <text>", "Append text to the system prompt (e.g. contextual retry hints)")
|
|
17
18
|
.action(async (opts, cmd) => {
|
|
18
19
|
const globalOpts = cmd.parent?.opts() ?? {};
|
|
19
20
|
const configPath = globalOpts.config ?? "./yuuhitsu.config.yaml";
|
|
@@ -46,6 +47,7 @@ export const translateCommand = new Command("translate")
|
|
|
46
47
|
dryRun,
|
|
47
48
|
verbose,
|
|
48
49
|
maxTokensPerBatch: opts.maxTokensPerBatch,
|
|
50
|
+
systemPromptSuffix: opts.systemPromptSuffix,
|
|
49
51
|
});
|
|
50
52
|
}
|
|
51
53
|
else {
|
|
@@ -75,6 +77,7 @@ export const translateCommand = new Command("translate")
|
|
|
75
77
|
targetLang: opts.lang,
|
|
76
78
|
maxChunkLines: opts.maxChunkLines,
|
|
77
79
|
maxTokensPerBatch: opts.maxTokensPerBatch,
|
|
80
|
+
systemPromptSuffix: opts.systemPromptSuffix,
|
|
78
81
|
});
|
|
79
82
|
process.stdout.write(`${chalk.green("✓")} Translated to ${result.outputPath}\n` +
|
|
80
83
|
` Tokens: ${result.usage.totalTokens} (${result.chunks} chunk${result.chunks > 1 ? "s" : ""})\n`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translate.js","sourceRoot":"","sources":["../../../src/cli/commands/translate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC;KACrD,WAAW,CAAC,mDAAmD,CAAC;KAChE,cAAc,CAAC,gBAAgB,EAAE,qCAAqC,CAAC;KACvE,cAAc,CAAC,eAAe,EAAE,6CAA6C,CAAC;KAC9E,MAAM,CAAC,iBAAiB,EAAE,+CAA+C,CAAC;KAC1E,MAAM,CAAC,oBAAoB,EAAE,wEAAwE,CAAC;KACtG,MAAM,CAAC,4BAA4B,EAAE,oDAAoD,EAAE,QAAQ,CAAC;KACpG,MAAM,CAAC,iCAAiC,EAAE,6DAA6D,EAAE,QAAQ,CAAC;KAClH,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IAC1B,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAW,UAAU,CAAC,MAAM,IAAI,wBAAwB,CAAC;IACzE,MAAM,MAAM,GAAY,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC;IACnD,MAAM,OAAO,GAAY,UAAU,CAAC,OAAO,IAAI,KAAK,CAAC;IAErD,IAAI,CAAC;QACH,cAAc;QACd,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAE5C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,QAAQ,YAAY,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAC1E,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,yBAAyB;YACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAEpF,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,0BAA0B;oBACpD,eAAe,IAAI,CAAC,KAAK,IAAI;oBAC7B,eAAe,IAAI,CAAC,IAAI,IAAI;oBAC5B,eAAe,MAAM,CAAC,QAAQ,IAAI;oBAClC,eAAe,MAAM,CAAC,KAAK,IAAI;oBAC/B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3D,IAAI,CACL,CAAC;YACJ,CAAC;YAED,MAAM,cAAc,CAAC;gBACnB,OAAO,EAAE,IAAI,CAAC,KAAK;gBACnB,UAAU,EAAE,IAAI,CAAC,IAAI;gBACrB,QAAQ;gBACR,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,MAAM;gBACN,OAAO;gBACP,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;
|
|
1
|
+
{"version":3,"file":"translate.js","sourceRoot":"","sources":["../../../src/cli/commands/translate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/provider/claude.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AAsCxB,qBAAa,cAAe,YAAW,UAAU;IAC/C,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,KAAK,CAAS;gBAEV,KAAK,EAAE,MAAM;IAYnB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/provider/claude.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AAsCxB,qBAAa,cAAe,YAAW,UAAU;IAC/C,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,KAAK,CAAS;gBAEV,KAAK,EAAE,MAAM;IAYnB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA+BhD,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC;IA4BnE;;;;OAIG;IACG,mBAAmB,CACvB,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,2BAA2B,CAAC;CAyDxC"}
|
package/dist/provider/claude.js
CHANGED
|
@@ -53,11 +53,9 @@ export class ClaudeProvider {
|
|
|
53
53
|
const response = await this.client.messages.create({
|
|
54
54
|
model: request.model || this.model,
|
|
55
55
|
max_tokens: request.maxTokens ?? 16384,
|
|
56
|
+
temperature: request.temperature ?? 0,
|
|
56
57
|
...(systemMessage ? { system: systemMessage.content } : {}),
|
|
57
58
|
messages: userMessages,
|
|
58
|
-
...(request.temperature !== undefined
|
|
59
|
-
? { temperature: request.temperature }
|
|
60
|
-
: {}),
|
|
61
59
|
});
|
|
62
60
|
const textBlock = response.content.find((b) => b.type === "text");
|
|
63
61
|
return {
|
|
@@ -82,11 +80,9 @@ export class ClaudeProvider {
|
|
|
82
80
|
const stream = this.client.messages.stream({
|
|
83
81
|
model: request.model || this.model,
|
|
84
82
|
max_tokens: request.maxTokens ?? 16384,
|
|
83
|
+
temperature: request.temperature ?? 0,
|
|
85
84
|
...(systemMessage ? { system: systemMessage.content } : {}),
|
|
86
85
|
messages: userMessages,
|
|
87
|
-
...(request.temperature !== undefined
|
|
88
|
-
? { temperature: request.temperature }
|
|
89
|
-
: {}),
|
|
90
86
|
});
|
|
91
87
|
for await (const event of stream) {
|
|
92
88
|
if (event.type === "content_block_delta" &&
|
|
@@ -105,6 +101,7 @@ export class ClaudeProvider {
|
|
|
105
101
|
const response = await this.client.messages.create({
|
|
106
102
|
model: request.model || this.model,
|
|
107
103
|
max_tokens: request.maxTokens ?? 16384,
|
|
104
|
+
temperature: 0,
|
|
108
105
|
system: request.systemPrompt,
|
|
109
106
|
messages: [
|
|
110
107
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/provider/claude.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAU1C,MAAM,qBAAqB,GAAG,qBAAqB,CAAC;AAEpD,MAAM,wBAAwB,GAC5B,OAAO,CAAC,GAAG,CAAC,6BAA6B,KAAK,GAAG,CAAC;AACpD,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC,SAAS,gBAAgB,CAAC,KAAc;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,GAAG,CAAC,MAAM,GAAG,mBAAmB;QACrC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,GAAG,gBAAgB;QACtD,CAAC,CAAC,GAAG,CAAC;AACV,CAAC;AAED,MAAM,gBAAgB,GAAmB;IACvC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,+DAA+D;IAC5E,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,YAAY,EAAE;gBACZ,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,0CAA0C,EAAE;wBAChF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE;qBAC1E;oBACD,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC;iBACzB;gBACD,WAAW,EAAE,kEAAkE;aAChF;SACF;QACD,QAAQ,EAAE,CAAC,cAAc,CAAC;KAC3B;CACF,CAAC;AAEF,MAAM,OAAO,cAAc;IACjB,MAAM,CAAY;IAClB,KAAK,CAAS;IAEtB,YAAY,KAAa;QACvB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;QACrD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,qDAAqD;gBACnD,iEAAiE,CACpE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAoB;QAC7B,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QACxE,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ;aAClC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;aAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACX,IAAI,EAAE,CAAC,CAAC,IAA4B;YACpC,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB,CAAC,CAAC,CAAC;QAEN,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YACjD,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK;YAClC,UAAU,EAAE,OAAO,CAAC,SAAS,IAAI,KAAK;YACtC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,QAAQ,EAAE,YAAY;
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/provider/claude.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-translate.d.ts","sourceRoot":"","sources":["../../src/tasks/batch-translate.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;IAC/C,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"batch-translate.d.ts","sourceRoot":"","sources":["../../src/tasks/batch-translate.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;IAC/C,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,MAAM,CAsCT;AA4CD;;GAEG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,WAAW,CAAC,CAuHtB"}
|
|
@@ -83,7 +83,7 @@ function determineInputBase(pattern, matchedFiles) {
|
|
|
83
83
|
* Execute batch translation
|
|
84
84
|
*/
|
|
85
85
|
export async function batchTranslate(opts) {
|
|
86
|
-
const { pattern, targetLang, provider, outputDir, onProgress, dryRun, verbose, maxTokensPerBatch } = opts;
|
|
86
|
+
const { pattern, targetLang, provider, outputDir, onProgress, dryRun, verbose, maxTokensPerBatch, systemPromptSuffix } = opts;
|
|
87
87
|
// Match files using fast-glob
|
|
88
88
|
const matchedFiles = await fg(pattern, {
|
|
89
89
|
onlyFiles: true,
|
|
@@ -137,6 +137,7 @@ export async function batchTranslate(opts) {
|
|
|
137
137
|
outputPath,
|
|
138
138
|
targetLang,
|
|
139
139
|
maxTokensPerBatch,
|
|
140
|
+
systemPromptSuffix,
|
|
140
141
|
});
|
|
141
142
|
process.stdout.write(`${chalk.green("✓")} Translated to ${result.outputPath}\n` +
|
|
142
143
|
(verbose ? ` Tokens: ${result.usage.totalTokens} (${result.chunks} chunk${result.chunks > 1 ? "s" : ""})\n` : ""));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-translate.js","sourceRoot":"","sources":["../../src/tasks/batch-translate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"batch-translate.js","sourceRoot":"","sources":["../../src/tasks/batch-translate.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,8 @@ export interface TranslateOptions {
|
|
|
20
20
|
glossaryConfig?: GlossaryConfig;
|
|
21
21
|
maxChunkLines?: number;
|
|
22
22
|
maxTokensPerBatch?: number;
|
|
23
|
+
/** Optional suffix appended to the system prompt (e.g. contextual retry hints). */
|
|
24
|
+
systemPromptSuffix?: string;
|
|
23
25
|
}
|
|
24
26
|
export interface TranslateResult {
|
|
25
27
|
outputPath: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../src/tasks/translate.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,0BAA0B,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,eAAO,MAAM,4BAA4B,OAAO,CAAC;AAKjD,UAAU,qBAAqB;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAa1E;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,UAAU,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../src/tasks/translate.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,0BAA0B,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,eAAO,MAAM,4BAA4B,OAAO,CAAC;AAKjD,UAAU,qBAAqB;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAa1E;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,UAAU,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mFAAmF;IACnF,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;CAChB;AAID;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAa7E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM,EAAE,EACnB,aAAa,EAAE,MAAM,GACpB,MAAM,EAAE,CAyBV;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAyB/E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAiB7E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,aAAa,SAA0B,GACtC,MAAM,EAAE,CAcV;AAMD,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CA8CjE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAYnF;AAmYD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CA4G1B"}
|
package/dist/tasks/translate.js
CHANGED
|
@@ -222,6 +222,9 @@ function extractBlockNodes(ast, processor) {
|
|
|
222
222
|
const md = inlineToMarkdown(para.children);
|
|
223
223
|
if (!md)
|
|
224
224
|
return;
|
|
225
|
+
// Skip fence-only paragraphs (bare ``` or ~~~) — translating them risks LLM mangling
|
|
226
|
+
if (/^(`{3,}|~{3,})\S*$/.test(md))
|
|
227
|
+
return;
|
|
225
228
|
blocks.push({
|
|
226
229
|
id: blocks.length,
|
|
227
230
|
markdown: md,
|
|
@@ -260,7 +263,7 @@ function extractBlockNodes(ast, processor) {
|
|
|
260
263
|
* Build system prompt for text-mode batch translation (Gemini / Ollama fallback).
|
|
261
264
|
* Includes JSON format instructions since we're relying on the LLM to output JSON.
|
|
262
265
|
*/
|
|
263
|
-
function buildBatchSystemPrompt(targetLang, templateContent, glossaryConfig) {
|
|
266
|
+
function buildBatchSystemPrompt(targetLang, templateContent, glossaryConfig, systemPromptSuffix) {
|
|
264
267
|
const basePrompt = templateContent
|
|
265
268
|
? templateContent.replace(/\{\{targetLanguage\}\}/g, targetLang)
|
|
266
269
|
: `You are a professional translator. Translate text segments to ${targetLang}.
|
|
@@ -296,13 +299,16 @@ Example input:
|
|
|
296
299
|
|
|
297
300
|
Example output:
|
|
298
301
|
{"translations": [{"id": 0, "text": "こんにちは世界"}, {"id": 1, "text": "これはテストです。"}]}`;
|
|
302
|
+
if (systemPromptSuffix) {
|
|
303
|
+
prompt += `\n\n${systemPromptSuffix}`;
|
|
304
|
+
}
|
|
299
305
|
return prompt;
|
|
300
306
|
}
|
|
301
307
|
/**
|
|
302
308
|
* Build system prompt for structured output translation (Claude tool_use path).
|
|
303
309
|
* No JSON format instructions needed — the tool schema enforces the response shape.
|
|
304
310
|
*/
|
|
305
|
-
function buildStructuredSystemPrompt(targetLang, templateContent, glossaryConfig) {
|
|
311
|
+
function buildStructuredSystemPrompt(targetLang, templateContent, glossaryConfig, systemPromptSuffix) {
|
|
306
312
|
const basePrompt = templateContent
|
|
307
313
|
? templateContent.replace(/\{\{targetLanguage\}\}/g, targetLang)
|
|
308
314
|
: `You are a professional translator. Translate each text segment to ${targetLang}.
|
|
@@ -322,6 +328,14 @@ Rules:
|
|
|
322
328
|
if (glossarySection)
|
|
323
329
|
prompt += glossarySection;
|
|
324
330
|
}
|
|
331
|
+
prompt += `
|
|
332
|
+
|
|
333
|
+
CRITICAL: Use ONLY the IDs provided in the input. Do NOT invent or hallucinate IDs beyond what was given. If you receive N segments (IDs X through Y), your response MUST contain ONLY IDs within that exact range.
|
|
334
|
+
|
|
335
|
+
CRITICAL: Do NOT add new code fences (\`\`\`) that are not present in the original input. Do not convert descriptive text about code fences into actual code fence markers.`;
|
|
336
|
+
if (systemPromptSuffix) {
|
|
337
|
+
prompt += `\n\n${systemPromptSuffix}`;
|
|
338
|
+
}
|
|
325
339
|
return prompt;
|
|
326
340
|
}
|
|
327
341
|
/**
|
|
@@ -362,22 +376,51 @@ function assertValidTranslations(value) {
|
|
|
362
376
|
*
|
|
363
377
|
* In both paths the 1:1 ID mapping is validated and an error is thrown on mismatch.
|
|
364
378
|
*/
|
|
365
|
-
|
|
379
|
+
/** Maximum retry attempts for structured output on unexpected IDs. */
|
|
380
|
+
const MAX_STRUCTURED_ID_RETRIES = 3;
|
|
381
|
+
async function translateBatch(provider, blocks, targetLang, templateContent, glossaryConfig, systemPromptSuffix) {
|
|
366
382
|
if (blocks.length === 0) {
|
|
367
383
|
return { usage: { promptTokens: 0, completionTokens: 0, totalTokens: 0 } };
|
|
368
384
|
}
|
|
369
385
|
const segments = blocks.map(({ markdown, id }) => ({ id, text: markdown }));
|
|
386
|
+
const inputIds = new Set(blocks.map(({ id }) => id));
|
|
387
|
+
const sortedInputIds = [...inputIds].sort((a, b) => a - b);
|
|
370
388
|
// P-A1: track total input character count for truncation detection
|
|
371
389
|
const totalInputChars = segments.reduce((sum, s) => sum + s.text.length, 0);
|
|
372
390
|
let translations;
|
|
373
391
|
let usage;
|
|
374
392
|
if (provider.translateStructured) {
|
|
375
|
-
// Structured output path: provider (Claude) enforces JSON schema via tool_use
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
393
|
+
// Structured output path: provider (Claude) enforces JSON schema via tool_use.
|
|
394
|
+
// Internal retry loop: on unexpected IDs, filter + retry with corrective context.
|
|
395
|
+
let currentSuffix = systemPromptSuffix;
|
|
396
|
+
const accumulatedUsage = { promptTokens: 0, completionTokens: 0, totalTokens: 0 };
|
|
397
|
+
for (let attempt = 0; attempt <= MAX_STRUCTURED_ID_RETRIES; attempt++) {
|
|
398
|
+
const systemPrompt = buildStructuredSystemPrompt(targetLang, templateContent, glossaryConfig, currentSuffix);
|
|
399
|
+
const result = await provider.translateStructured({ segments, systemPrompt });
|
|
400
|
+
assertValidTranslations(result.translations);
|
|
401
|
+
accumulatedUsage.promptTokens += result.usage.promptTokens;
|
|
402
|
+
accumulatedUsage.completionTokens += result.usage.completionTokens;
|
|
403
|
+
accumulatedUsage.totalTokens += result.usage.totalTokens;
|
|
404
|
+
// Detect unexpected IDs (IDs not present in the input set)
|
|
405
|
+
const unexpectedIds = result.translations
|
|
406
|
+
.filter((t) => !inputIds.has(t.id))
|
|
407
|
+
.map((t) => t.id);
|
|
408
|
+
if (unexpectedIds.length > 0) {
|
|
409
|
+
if (attempt < MAX_STRUCTURED_ID_RETRIES) {
|
|
410
|
+
const suffix = `RETRY CORRECTION: The previous response contained unexpected IDs: [${unexpectedIds.join(", ")}]. ` +
|
|
411
|
+
`You MUST use ONLY the following IDs: [${sortedInputIds.join(", ")}]. ` +
|
|
412
|
+
`Do not invent any other IDs.`;
|
|
413
|
+
currentSuffix = currentSuffix ? `${currentSuffix}\n\n${suffix}` : suffix;
|
|
414
|
+
console.warn(`[yuuhitsu] translateBatch: unexpected IDs [${unexpectedIds.join(", ")}], retrying (attempt ${attempt + 1}/${MAX_STRUCTURED_ID_RETRIES})`);
|
|
415
|
+
continue;
|
|
416
|
+
}
|
|
417
|
+
throw new Error(`[yuuhitsu] translateBatch: unexpected IDs in response after ${MAX_STRUCTURED_ID_RETRIES} retries (IDs: ${unexpectedIds.join(", ")})`);
|
|
418
|
+
}
|
|
419
|
+
// No unexpected IDs — proceed with filtered valid translations
|
|
420
|
+
translations = result.translations.filter((t) => inputIds.has(t.id));
|
|
421
|
+
usage = accumulatedUsage;
|
|
422
|
+
break;
|
|
423
|
+
}
|
|
381
424
|
// P-A1: warn on truncation (compare translated chars to input chars)
|
|
382
425
|
const totalOutputChars = translations.reduce((sum, t) => sum + t.text.length, 0);
|
|
383
426
|
if (totalInputChars > 0 && totalOutputChars < totalInputChars * MIN_OUTPUT_RATIO) {
|
|
@@ -387,7 +430,7 @@ async function translateBatch(provider, blocks, targetLang, templateContent, glo
|
|
|
387
430
|
}
|
|
388
431
|
else {
|
|
389
432
|
// Text mode fallback: Gemini / Ollama
|
|
390
|
-
const systemPrompt = buildBatchSystemPrompt(targetLang, templateContent, glossaryConfig);
|
|
433
|
+
const systemPrompt = buildBatchSystemPrompt(targetLang, templateContent, glossaryConfig, systemPromptSuffix);
|
|
391
434
|
const messages = [
|
|
392
435
|
{ role: "system", content: systemPrompt },
|
|
393
436
|
{ role: "user", content: JSON.stringify({ segments }) },
|
|
@@ -406,12 +449,10 @@ async function translateBatch(provider, blocks, targetLang, templateContent, glo
|
|
|
406
449
|
}
|
|
407
450
|
// Validate strict 1:1 ID mapping (both paths):
|
|
408
451
|
// - no duplicate output IDs (Map silently overwrites; we must detect before)
|
|
409
|
-
// - no unexpected IDs (IDs not present in the input set)
|
|
410
452
|
// - no missing IDs (input ID absent from output)
|
|
411
|
-
|
|
453
|
+
// Note: unexpected IDs are already handled above for the structured path.
|
|
412
454
|
const seenOutputIds = new Set();
|
|
413
455
|
const duplicateIds = [];
|
|
414
|
-
const unexpectedIds = [];
|
|
415
456
|
for (const t of translations) {
|
|
416
457
|
if (seenOutputIds.has(t.id)) {
|
|
417
458
|
duplicateIds.push(t.id);
|
|
@@ -419,15 +460,20 @@ async function translateBatch(provider, blocks, targetLang, templateContent, glo
|
|
|
419
460
|
else {
|
|
420
461
|
seenOutputIds.add(t.id);
|
|
421
462
|
}
|
|
422
|
-
if (!inputIds.has(t.id)) {
|
|
423
|
-
unexpectedIds.push(t.id);
|
|
424
|
-
}
|
|
425
463
|
}
|
|
426
464
|
if (duplicateIds.length > 0) {
|
|
427
465
|
throw new Error(`[yuuhitsu] translateBatch: duplicate IDs in response (IDs: ${duplicateIds.join(", ")})`);
|
|
428
466
|
}
|
|
429
|
-
|
|
430
|
-
|
|
467
|
+
// For text mode: still check for unexpected IDs (not retried)
|
|
468
|
+
if (!provider.translateStructured) {
|
|
469
|
+
const unexpectedIds = [];
|
|
470
|
+
for (const t of translations) {
|
|
471
|
+
if (!inputIds.has(t.id))
|
|
472
|
+
unexpectedIds.push(t.id);
|
|
473
|
+
}
|
|
474
|
+
if (unexpectedIds.length > 0) {
|
|
475
|
+
throw new Error(`[yuuhitsu] translateBatch: unexpected IDs in response (IDs: ${unexpectedIds.join(", ")})`);
|
|
476
|
+
}
|
|
431
477
|
}
|
|
432
478
|
const translationMap = new Map(translations.map((t) => [t.id, t.text]));
|
|
433
479
|
const missingIds = blocks.filter(({ id }) => !translationMap.has(id)).map(({ id }) => id);
|
|
@@ -442,7 +488,7 @@ async function translateBatch(provider, blocks, targetLang, templateContent, glo
|
|
|
442
488
|
block.applyTranslation(translated);
|
|
443
489
|
}
|
|
444
490
|
}
|
|
445
|
-
return { usage };
|
|
491
|
+
return { usage: usage };
|
|
446
492
|
}
|
|
447
493
|
function resolveOutputPath(inputPath, targetLang, outputPath) {
|
|
448
494
|
if (outputPath)
|
|
@@ -467,7 +513,7 @@ function resolveOutputPath(inputPath, targetLang, outputPath) {
|
|
|
467
513
|
* - No sentinel injection or removal needed
|
|
468
514
|
*/
|
|
469
515
|
export async function translateFile(options) {
|
|
470
|
-
const { provider, inputPath, targetLang, templateContent, glossaryConfig, maxChunkLines, maxTokensPerBatch, } = options;
|
|
516
|
+
const { provider, inputPath, targetLang, templateContent, glossaryConfig, maxChunkLines, maxTokensPerBatch, systemPromptSuffix, } = options;
|
|
471
517
|
if (maxTokensPerBatch !== undefined && (!Number.isInteger(maxTokensPerBatch) || maxTokensPerBatch < 1)) {
|
|
472
518
|
throw new Error(`maxTokensPerBatch must be a positive integer, got: ${maxTokensPerBatch}`);
|
|
473
519
|
}
|
|
@@ -518,7 +564,7 @@ export async function translateFile(options) {
|
|
|
518
564
|
batches.push(currentBatch);
|
|
519
565
|
}
|
|
520
566
|
for (const batch of batches) {
|
|
521
|
-
const { usage } = await translateBatch(provider, batch, targetLang, templateContent, glossaryConfig);
|
|
567
|
+
const { usage } = await translateBatch(provider, batch, targetLang, templateContent, glossaryConfig, systemPromptSuffix);
|
|
522
568
|
totalUsage.promptTokens += usage.promptTokens;
|
|
523
569
|
totalUsage.completionTokens += usage.completionTokens;
|
|
524
570
|
totalUsage.totalTokens += usage.totalTokens;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translate.js","sourceRoot":"","sources":["../../src/tasks/translate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"translate.js","sourceRoot":"","sources":["../../src/tasks/translate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@geolonia/yuuhitsu",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "右筆 (Yuuhitsu) - AI-powered document operations CLI. Translate, generate, and sync documents using Claude, Gemini, or Ollama.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"dist",
|
|
29
29
|
"src/templates",
|
|
30
30
|
"README.md",
|
|
31
|
+
"README.ja.md",
|
|
31
32
|
"LICENSE"
|
|
32
33
|
],
|
|
33
34
|
"dependencies": {
|