devez-vibe 1.10.2 → 1.10.3
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/bin/dvz.exe +0 -0
- package/bridge/claude-agent-sdk-bridge.mjs +25 -4
- package/package.json +1 -1
package/bin/dvz.exe
CHANGED
|
Binary file
|
|
@@ -3051,7 +3051,7 @@ function syncBackgroundSubagents(session, tasks) {
|
|
|
3051
3051
|
}
|
|
3052
3052
|
|
|
3053
3053
|
// CLI는 진행 요약을 고정 영어 지시로 만들어 language 설정도 따르지 않는다. 한국어
|
|
3054
|
-
// 요청 세션이면 Haiku로 옮겨 보이고, 같은 문구는 한 번만 옮긴다.
|
|
3054
|
+
// 요청 세션이면 Haiku로 옮겨 보이고, 같은 문구는 한 번만 옮긴다. 옮기지 못하면 앞 설명을 둔다.
|
|
3055
3055
|
const summaryTranslations = new Map();
|
|
3056
3056
|
|
|
3057
3057
|
function translateSummary(session, summary) {
|
|
@@ -3059,14 +3059,22 @@ function translateSummary(session, summary) {
|
|
|
3059
3059
|
if (!translation) {
|
|
3060
3060
|
if (summaryTranslations.size >= 200) summaryTranslations.clear();
|
|
3061
3061
|
translation = haikuReply(
|
|
3062
|
-
|
|
3062
|
+
`아래 진행 상황 문구의 한국어 번역문만 한 줄로 쓴다. 원문을 되풀이하거나 화살표·따옴표·설명을 붙이지 않는다. 파일·함수 이름은 그대로 두고 '~하는 중' 꼴로 끝낸다.\n${summary}`,
|
|
3063
3063
|
session,
|
|
3064
|
-
).then(
|
|
3064
|
+
).then(koreanSummary, () => "");
|
|
3065
3065
|
summaryTranslations.set(summary, translation);
|
|
3066
3066
|
}
|
|
3067
3067
|
return translation;
|
|
3068
3068
|
}
|
|
3069
3069
|
|
|
3070
|
+
// Haiku가 가끔 "원문 → 번역"으로 답한다. 한글이 든 줄의 한글 부분부터 쓰고, 한글이 없으면 버린다.
|
|
3071
|
+
function koreanSummary(reply) {
|
|
3072
|
+
const line = String(reply).split("\n").find((text) => /[가-힣]/.test(text)) || "";
|
|
3073
|
+
const parts = line.split(/\s*(?:→|->|=>)\s*/);
|
|
3074
|
+
const text = parts.slice(parts.findIndex((part) => /[가-힣]/.test(part))).join(" → ");
|
|
3075
|
+
return firstLine(text.replace(/^["'“]+|["'”]+$/g, ""), SUBAGENT_DESCRIPTION_LIMIT);
|
|
3076
|
+
}
|
|
3077
|
+
|
|
3070
3078
|
function processSubagentSystemMessage(session, message) {
|
|
3071
3079
|
if (String(message.subtype || "").startsWith("task_")) {
|
|
3072
3080
|
const taskId = firstLine(message.task_id || "", 80);
|
|
@@ -3110,7 +3118,7 @@ function processSubagentSystemMessage(session, message) {
|
|
|
3110
3118
|
if (session.lastKoreanRequest && !/[가-힣]/.test(summary)) {
|
|
3111
3119
|
// 옮기는 동안은 앞 설명을 두고, 그사이 새 요약이 왔거나 줄이 끝났으면 버린다.
|
|
3112
3120
|
translateSummary(session, summary).then((text) => {
|
|
3113
|
-
if (running.latestSummary !== summary || session.subagents.get(running.id) !== running) return;
|
|
3121
|
+
if (!text || running.latestSummary !== summary || session.subagents.get(running.id) !== running) return;
|
|
3114
3122
|
running.description = text;
|
|
3115
3123
|
emitSubagents(session);
|
|
3116
3124
|
});
|
|
@@ -6714,6 +6722,19 @@ async function runSelfTest() {
|
|
|
6714
6722
|
|| koreanRow.description !== "노트를 고치는 중") {
|
|
6715
6723
|
throw new Error(`Claude Korean summary translation self-test failed: ${JSON.stringify([whileTranslating, afterLateTranslation, koreanRow.description])}`);
|
|
6716
6724
|
}
|
|
6725
|
+
// 원문을 되풀이한 번역은 한국어 부분만, 한글이 없는 번역은 버리고 앞 설명을 둔다.
|
|
6726
|
+
summaryTranslations.set("Reading empty", Promise.resolve(""));
|
|
6727
|
+
koreanProgress("Reading empty");
|
|
6728
|
+
await new Promise((resolve) => setImmediate(resolve));
|
|
6729
|
+
const replies = [
|
|
6730
|
+
["Reading a.md and b.md → a.md와 b.md를 읽는 중", "a.md와 b.md를 읽는 중"],
|
|
6731
|
+
["Reading a.md\na.md를 읽는 중", "a.md를 읽는 중"],
|
|
6732
|
+
["\"a.md를 읽는 중\"", "a.md를 읽는 중"],
|
|
6733
|
+
["Reading a.md", ""],
|
|
6734
|
+
].filter(([reply, expected]) => koreanSummary(reply) !== expected);
|
|
6735
|
+
if (koreanRow.description !== "노트를 고치는 중" || replies.length) {
|
|
6736
|
+
throw new Error(`Claude Korean summary cleanup self-test failed: ${JSON.stringify([koreanRow.description, replies])}`);
|
|
6737
|
+
}
|
|
6717
6738
|
clearSubagents(koreanSummarySession);
|
|
6718
6739
|
summaryTranslations.clear();
|
|
6719
6740
|
|