@geolonia/yuuhitsu 0.1.17 → 0.2.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/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 +7 -1
- package/dist/provider/claude.d.ts.map +1 -1
- package/dist/provider/claude.js +79 -2
- package/dist/provider/claude.js.map +1 -1
- package/dist/provider/interface.d.ts +27 -0
- package/dist/provider/interface.d.ts.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 +34 -41
- package/dist/tasks/translate.d.ts.map +1 -1
- package/dist/tasks/translate.js +329 -404
- package/dist/tasks/translate.js.map +1 -1
- package/package.json +9 -1
|
@@ -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,SAiGzB,CAAC"}
|
|
@@ -13,6 +13,7 @@ export const translateCommand = new Command("translate")
|
|
|
13
13
|
.option("--output <file>", "Output file path (default: <input>.<lang>.md)")
|
|
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
|
+
.option("--max-nodes-per-batch <number>", "Maximum text nodes per API batch call (default: 200)", parseInt)
|
|
16
17
|
.action(async (opts, cmd) => {
|
|
17
18
|
const globalOpts = cmd.parent?.opts() ?? {};
|
|
18
19
|
const configPath = globalOpts.config ?? "./yuuhitsu.config.yaml";
|
|
@@ -44,6 +45,7 @@ export const translateCommand = new Command("translate")
|
|
|
44
45
|
outputDir: opts.outputDir,
|
|
45
46
|
dryRun,
|
|
46
47
|
verbose,
|
|
48
|
+
maxNodesPerBatch: opts.maxNodesPerBatch,
|
|
47
49
|
});
|
|
48
50
|
}
|
|
49
51
|
else {
|
|
@@ -72,6 +74,7 @@ export const translateCommand = new Command("translate")
|
|
|
72
74
|
outputPath: opts.output,
|
|
73
75
|
targetLang: opts.lang,
|
|
74
76
|
maxChunkLines: opts.maxChunkLines,
|
|
77
|
+
maxNodesPerBatch: opts.maxNodesPerBatch,
|
|
75
78
|
});
|
|
76
79
|
process.stdout.write(`${chalk.green("✓")} Translated to ${result.outputPath}\n` +
|
|
77
80
|
` 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,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;
|
|
1
|
+
{"version":3,"file":"translate.js","sourceRoot":"","sources":["../../../src/cli/commands/translate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
import type { AIProvider, ChatRequest, ChatResponse, StreamChunk } from "./interface.js";
|
|
1
|
+
import type { AIProvider, ChatRequest, ChatResponse, StreamChunk, StructuredTranslateRequest, StructuredTranslateResponse } from "./interface.js";
|
|
2
2
|
export declare class ClaudeProvider implements AIProvider {
|
|
3
3
|
private client;
|
|
4
4
|
private model;
|
|
5
5
|
constructor(model: string);
|
|
6
6
|
chat(request: ChatRequest): Promise<ChatResponse>;
|
|
7
7
|
chatStream(request: ChatRequest): AsyncIterable<StreamChunk>;
|
|
8
|
+
/**
|
|
9
|
+
* Translate segments using Anthropic tool_use (structured output).
|
|
10
|
+
* Forces Claude to return a JSON object matching the translation schema —
|
|
11
|
+
* no prose wrapping, no schema deviations.
|
|
12
|
+
*/
|
|
13
|
+
translateStructured(request: StructuredTranslateRequest): Promise<StructuredTranslateResponse>;
|
|
8
14
|
}
|
|
9
15
|
//# sourceMappingURL=claude.d.ts.map
|
|
@@ -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,
|
|
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;IAiChD,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC;IA8BnE;;;;OAIG;IACG,mBAAmB,CACvB,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,2BAA2B,CAAC;CAwDxC"}
|
package/dist/provider/claude.js
CHANGED
|
@@ -1,4 +1,35 @@
|
|
|
1
1
|
import Anthropic from "@anthropic-ai/sdk";
|
|
2
|
+
const TRANSLATION_TOOL_NAME = "record_translations";
|
|
3
|
+
const DEBUG_RAW_STRUCTURED_LOG = process.env.YUUHITSU_DEBUG_RAW_STRUCTURED === "1";
|
|
4
|
+
const MAX_DEBUG_LOG_CHARS = 4000;
|
|
5
|
+
function safeDebugPayload(value) {
|
|
6
|
+
const raw = JSON.stringify(value);
|
|
7
|
+
return raw.length > MAX_DEBUG_LOG_CHARS
|
|
8
|
+
? raw.slice(0, MAX_DEBUG_LOG_CHARS) + "...[truncated]"
|
|
9
|
+
: raw;
|
|
10
|
+
}
|
|
11
|
+
const TRANSLATION_TOOL = {
|
|
12
|
+
name: TRANSLATION_TOOL_NAME,
|
|
13
|
+
description: "Record the translated text segments in structured JSON format",
|
|
14
|
+
input_schema: {
|
|
15
|
+
type: "object",
|
|
16
|
+
properties: {
|
|
17
|
+
translations: {
|
|
18
|
+
type: "array",
|
|
19
|
+
items: {
|
|
20
|
+
type: "object",
|
|
21
|
+
properties: {
|
|
22
|
+
id: { type: "integer", description: "Segment ID (must match input ID exactly)" },
|
|
23
|
+
text: { type: "string", description: "Translated text for this segment" },
|
|
24
|
+
},
|
|
25
|
+
required: ["id", "text"],
|
|
26
|
+
},
|
|
27
|
+
description: "Translated segments — one entry per input segment, ID must match",
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
required: ["translations"],
|
|
31
|
+
},
|
|
32
|
+
};
|
|
2
33
|
export class ClaudeProvider {
|
|
3
34
|
client;
|
|
4
35
|
model;
|
|
@@ -21,7 +52,7 @@ export class ClaudeProvider {
|
|
|
21
52
|
}));
|
|
22
53
|
const response = await this.client.messages.create({
|
|
23
54
|
model: request.model || this.model,
|
|
24
|
-
max_tokens: request.maxTokens ??
|
|
55
|
+
max_tokens: request.maxTokens ?? 16384,
|
|
25
56
|
...(systemMessage ? { system: systemMessage.content } : {}),
|
|
26
57
|
messages: userMessages,
|
|
27
58
|
...(request.temperature !== undefined
|
|
@@ -50,7 +81,7 @@ export class ClaudeProvider {
|
|
|
50
81
|
}));
|
|
51
82
|
const stream = this.client.messages.stream({
|
|
52
83
|
model: request.model || this.model,
|
|
53
|
-
max_tokens: request.maxTokens ??
|
|
84
|
+
max_tokens: request.maxTokens ?? 16384,
|
|
54
85
|
...(systemMessage ? { system: systemMessage.content } : {}),
|
|
55
86
|
messages: userMessages,
|
|
56
87
|
...(request.temperature !== undefined
|
|
@@ -65,5 +96,51 @@ export class ClaudeProvider {
|
|
|
65
96
|
}
|
|
66
97
|
yield { content: "", done: true };
|
|
67
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* Translate segments using Anthropic tool_use (structured output).
|
|
101
|
+
* Forces Claude to return a JSON object matching the translation schema —
|
|
102
|
+
* no prose wrapping, no schema deviations.
|
|
103
|
+
*/
|
|
104
|
+
async translateStructured(request) {
|
|
105
|
+
const response = await this.client.messages.create({
|
|
106
|
+
model: request.model || this.model,
|
|
107
|
+
max_tokens: request.maxTokens ?? 16384,
|
|
108
|
+
system: request.systemPrompt,
|
|
109
|
+
messages: [
|
|
110
|
+
{
|
|
111
|
+
role: "user",
|
|
112
|
+
content: JSON.stringify({ segments: request.segments }),
|
|
113
|
+
},
|
|
114
|
+
],
|
|
115
|
+
tools: [TRANSLATION_TOOL],
|
|
116
|
+
tool_choice: { type: "tool", name: TRANSLATION_TOOL_NAME },
|
|
117
|
+
});
|
|
118
|
+
const toolUseBlock = response.content.find((b) => b.type === "tool_use");
|
|
119
|
+
if (!toolUseBlock) {
|
|
120
|
+
if (DEBUG_RAW_STRUCTURED_LOG) {
|
|
121
|
+
console.error(`[yuuhitsu] ClaudeProvider.translateStructured: no tool_use block in response` +
|
|
122
|
+
` (stop_reason: ${response.stop_reason})` +
|
|
123
|
+
` raw response content: ${safeDebugPayload(response.content)}`);
|
|
124
|
+
}
|
|
125
|
+
throw new Error(`[yuuhitsu] ClaudeProvider.translateStructured: no tool_use block in response` +
|
|
126
|
+
` (stop_reason: ${response.stop_reason})`);
|
|
127
|
+
}
|
|
128
|
+
const input = toolUseBlock.input;
|
|
129
|
+
if (!Array.isArray(input.translations)) {
|
|
130
|
+
if (DEBUG_RAW_STRUCTURED_LOG) {
|
|
131
|
+
console.error(`[yuuhitsu] ClaudeProvider.translateStructured: translations field is missing or not an array.` +
|
|
132
|
+
` raw tool_use input: ${safeDebugPayload(input)}`);
|
|
133
|
+
}
|
|
134
|
+
throw new Error(`[yuuhitsu] ClaudeProvider.translateStructured: translations field is missing or not an array`);
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
translations: input.translations,
|
|
138
|
+
usage: {
|
|
139
|
+
promptTokens: response.usage.input_tokens,
|
|
140
|
+
completionTokens: response.usage.output_tokens,
|
|
141
|
+
totalTokens: response.usage.input_tokens + response.usage.output_tokens,
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
}
|
|
68
145
|
}
|
|
69
146
|
//# sourceMappingURL=claude.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/provider/claude.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/provider/claude.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,8 +23,35 @@ export interface StreamChunk {
|
|
|
23
23
|
content: string;
|
|
24
24
|
done: boolean;
|
|
25
25
|
}
|
|
26
|
+
/** Request for structured output translation (tool_use path). */
|
|
27
|
+
export interface StructuredTranslateRequest {
|
|
28
|
+
segments: Array<{
|
|
29
|
+
id: number;
|
|
30
|
+
text: string;
|
|
31
|
+
}>;
|
|
32
|
+
systemPrompt: string;
|
|
33
|
+
model?: string;
|
|
34
|
+
maxTokens?: number;
|
|
35
|
+
}
|
|
36
|
+
/** Response from structured output translation. */
|
|
37
|
+
export interface StructuredTranslateResponse {
|
|
38
|
+
translations: Array<{
|
|
39
|
+
id: number;
|
|
40
|
+
text: string;
|
|
41
|
+
}>;
|
|
42
|
+
usage: {
|
|
43
|
+
promptTokens: number;
|
|
44
|
+
completionTokens: number;
|
|
45
|
+
totalTokens: number;
|
|
46
|
+
};
|
|
47
|
+
}
|
|
26
48
|
export interface AIProvider {
|
|
27
49
|
chat(request: ChatRequest): Promise<ChatResponse>;
|
|
28
50
|
chatStream(request: ChatRequest): AsyncIterable<StreamChunk>;
|
|
51
|
+
/**
|
|
52
|
+
* Structured output translation via provider-native JSON schema enforcement.
|
|
53
|
+
* Optional: implemented by Claude. Gemini and Ollama fall back to text mode.
|
|
54
|
+
*/
|
|
55
|
+
translateStructured?(request: StructuredTranslateRequest): Promise<StructuredTranslateResponse>;
|
|
29
56
|
}
|
|
30
57
|
//# sourceMappingURL=interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/provider/interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAClD,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/provider/interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,iEAAiE;AACjE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,mDAAmD;AACnD,MAAM,WAAW,2BAA2B;IAC1C,YAAY,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAClD,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC7D;;;OAGG;IACH,mBAAmB,CAAC,CAClB,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,2BAA2B,CAAC,CAAC;CACzC"}
|
|
@@ -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;
|
|
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,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;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,CAsHtB"}
|
|
@@ -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 } = opts;
|
|
86
|
+
const { pattern, targetLang, provider, outputDir, onProgress, dryRun, verbose, maxNodesPerBatch } = opts;
|
|
87
87
|
// Match files using fast-glob
|
|
88
88
|
const matchedFiles = await fg(pattern, {
|
|
89
89
|
onlyFiles: true,
|
|
@@ -136,6 +136,7 @@ export async function batchTranslate(opts) {
|
|
|
136
136
|
inputPath,
|
|
137
137
|
outputPath,
|
|
138
138
|
targetLang,
|
|
139
|
+
maxNodesPerBatch,
|
|
139
140
|
});
|
|
140
141
|
process.stdout.write(`${chalk.green("✓")} Translated to ${result.outputPath}\n` +
|
|
141
142
|
(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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"}
|
|
@@ -1,50 +1,16 @@
|
|
|
1
1
|
import type { AIProvider } from "../provider/interface.js";
|
|
2
2
|
import type { GlossaryConfig } from "./glossary.js";
|
|
3
|
-
export declare const DEFAULT_MAX_CHUNK_LINES =
|
|
3
|
+
export declare const DEFAULT_MAX_CHUNK_LINES = 150;
|
|
4
|
+
export declare const DEFAULT_MAX_NODES_PER_BATCH = 200;
|
|
4
5
|
interface FrontmatterSeparation {
|
|
5
6
|
frontmatter: string | null;
|
|
6
7
|
body: string;
|
|
7
8
|
}
|
|
8
9
|
/**
|
|
9
|
-
* Separate frontmatter from Markdown content
|
|
10
|
+
* Separate frontmatter from Markdown content.
|
|
10
11
|
* Handles: LF, CRLF, no trailing newline after closing ---, trailing spaces, empty frontmatter
|
|
11
|
-
* @param content - Full Markdown content
|
|
12
|
-
* @returns Object with separated frontmatter and body
|
|
13
12
|
*/
|
|
14
13
|
export declare function separateFrontmatter(content: string): FrontmatterSeparation;
|
|
15
|
-
interface CodeProtection {
|
|
16
|
-
text: string;
|
|
17
|
-
map: Map<string, string>;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Replace fenced code blocks and inline code with placeholders.
|
|
21
|
-
* Uses a line-by-line parser instead of regex to avoid V8 stack overflow
|
|
22
|
-
* on files with many code blocks (backreference + [\s\S]*? causes recursive backtracking).
|
|
23
|
-
*/
|
|
24
|
-
export declare function protectCodeBlocks(content: string): CodeProtection;
|
|
25
|
-
/**
|
|
26
|
-
* Restore placeholders back to original code blocks/inline code.
|
|
27
|
-
*/
|
|
28
|
-
export declare function restoreCodeBlocks(content: string, map: Map<string, string>): string;
|
|
29
|
-
export declare const BLOCK_BOUNDARY_SENTINEL = "<!--BB-->";
|
|
30
|
-
/**
|
|
31
|
-
* Insert block boundary sentinels before structural Markdown elements
|
|
32
|
-
* (list items, headings, horizontal rules, code fences, code block placeholders).
|
|
33
|
-
* P-A4: prevents newline collapse around structural boundaries during LLM translation.
|
|
34
|
-
* When called after protectCodeBlocks, fenced blocks appear as __CODE_BLOCK_N__ placeholders;
|
|
35
|
-
* the function treats those placeholders as structural to protect fence-adjacent newlines.
|
|
36
|
-
*/
|
|
37
|
-
export declare function protectBlockBoundaries(content: string): string;
|
|
38
|
-
/**
|
|
39
|
-
* Remove block boundary sentinels and restore newlines lost during LLM translation.
|
|
40
|
-
* Uses a 3-pass strategy plus Layer 3 list-aware fallback (P-A4 v3):
|
|
41
|
-
* Pass 1: normalize LLM-deformed variants (e.g. <!-- BB -->) to exact sentinel form
|
|
42
|
-
* Pass 2: split + restore newlines (handles both clean and collapsed sentinel cases)
|
|
43
|
-
* Pass 3: post-restore warning for residual sentinel-like patterns (silent failure prevention)
|
|
44
|
-
* Layer 3: detect list items collapsed onto one line ("- A- B") and split them back
|
|
45
|
-
* Applied unconditionally — handles the case where LLM deleted ALL sentinels
|
|
46
|
-
*/
|
|
47
|
-
export declare function restoreBlockBoundaries(content: string): string;
|
|
48
14
|
export interface TranslateOptions {
|
|
49
15
|
provider: AIProvider;
|
|
50
16
|
inputPath: string;
|
|
@@ -53,6 +19,7 @@ export interface TranslateOptions {
|
|
|
53
19
|
templateContent?: string;
|
|
54
20
|
glossaryConfig?: GlossaryConfig;
|
|
55
21
|
maxChunkLines?: number;
|
|
22
|
+
maxNodesPerBatch?: number;
|
|
56
23
|
}
|
|
57
24
|
export interface TranslateResult {
|
|
58
25
|
outputPath: string;
|
|
@@ -69,8 +36,8 @@ export interface TranslateResult {
|
|
|
69
36
|
*/
|
|
70
37
|
export declare function findHeadingPositions(lines: string[], level: number): number[];
|
|
71
38
|
/**
|
|
72
|
-
* Split lines at the given positions into chunks
|
|
73
|
-
*
|
|
39
|
+
* Split lines at the given positions into chunks. Segments exceeding maxChunkLines
|
|
40
|
+
* are further split using ### headings or safeSplitLines.
|
|
74
41
|
*/
|
|
75
42
|
export declare function splitAtPositions(lines: string[], positions: number[], maxChunkLines: number): string[];
|
|
76
43
|
/**
|
|
@@ -79,8 +46,7 @@ export declare function splitAtPositions(lines: string[], positions: number[], m
|
|
|
79
46
|
*/
|
|
80
47
|
export declare function safeSplitLines(lines: string[], maxChunkLines: number): string[];
|
|
81
48
|
/**
|
|
82
|
-
* Merge chunks smaller than MIN_CHUNK_LINES into the previous chunk
|
|
83
|
-
* as long as the merged result does not exceed maxLines.
|
|
49
|
+
* Merge chunks smaller than MIN_CHUNK_LINES into the previous chunk.
|
|
84
50
|
*/
|
|
85
51
|
export declare function mergeSmallChunks(chunks: string[], maxLines: number): string[];
|
|
86
52
|
/**
|
|
@@ -88,6 +54,33 @@ export declare function mergeSmallChunks(chunks: string[], maxLines: number): st
|
|
|
88
54
|
* Falls back to safe line-count splitting when no headings are present.
|
|
89
55
|
*/
|
|
90
56
|
export declare function splitIntoChunks(content: string, maxChunkLines?: number): string[];
|
|
57
|
+
interface CodeProtection {
|
|
58
|
+
text: string;
|
|
59
|
+
map: Map<string, string>;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Replace fenced code blocks and inline code with placeholders.
|
|
63
|
+
* Used by glossary-fix.ts to protect code blocks before text replacement.
|
|
64
|
+
*/
|
|
65
|
+
export declare function protectCodeBlocks(content: string): CodeProtection;
|
|
66
|
+
/**
|
|
67
|
+
* Restore placeholders back to original code blocks/inline code.
|
|
68
|
+
*/
|
|
69
|
+
export declare function restoreCodeBlocks(content: string, map: Map<string, string>): string;
|
|
70
|
+
/**
|
|
71
|
+
* Translate a Markdown file using AST-based approach.
|
|
72
|
+
*
|
|
73
|
+
* Architecture (0.2.0):
|
|
74
|
+
* 1. Separate frontmatter (preserved verbatim)
|
|
75
|
+
* 2. Split body into chunks by heading boundaries
|
|
76
|
+
* 3. For each chunk: parse to AST → extract text nodes → translate via LLM → write back
|
|
77
|
+
* 4. Serialize AST → markdown → concatenate → write output
|
|
78
|
+
*
|
|
79
|
+
* Key properties:
|
|
80
|
+
* - Code blocks (fenced and inline) are never sent to LLM (AST handles them deterministically)
|
|
81
|
+
* - Markdown structure (headings, lists, tables, HR) is preserved by AST round-trip
|
|
82
|
+
* - No sentinel injection or removal needed
|
|
83
|
+
*/
|
|
91
84
|
export declare function translateFile(options: TranslateOptions): Promise<TranslateResult>;
|
|
92
85
|
export {};
|
|
93
86
|
//# sourceMappingURL=translate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../src/tasks/translate.ts"],"names":[],"mappings":"
|
|
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,2BAA2B,MAAM,CAAC;AAK/C,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,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;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;AAkRD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CAyF1B"}
|