@gendive/chatllm 0.17.16 → 0.17.17

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.
@@ -2519,6 +2519,8 @@ ${finalContent}`;
2519
2519
  }
2520
2520
  abortControllerRef.current = new AbortController();
2521
2521
  try {
2522
+ const shouldSkipSkillParsing = skipNextSkillParsingRef.current;
2523
+ skipNextSkillParsingRef.current = false;
2522
2524
  let messagesToSend = [...existingMessages, userMessage];
2523
2525
  const recompressionThreshold = DEFAULT_RECOMPRESSION_THRESHOLD;
2524
2526
  const tokenLimit = DEFAULT_TOKEN_LIMIT;
@@ -2582,11 +2584,12 @@ ${part.result.content}`).join("\n\n");
2582
2584
  if (attachmentContext) {
2583
2585
  chatMessages.push({
2584
2586
  role: "user",
2585
- content: `\uD30C\uC77C \uBD84\uC11D \uACB0\uACFC:
2587
+ /** @Todo vibecode - 원본 파일 재요청 방지 + skill_use 태그 사용 금지 명시 */
2588
+ content: `\uC0AC\uC6A9\uC790\uAC00 \uCCA8\uBD80\uD55C \uD30C\uC77C\uC758 \uBD84\uC11D \uACB0\uACFC\uC785\uB2C8\uB2E4. \uC6D0\uBCF8 \uD30C\uC77C \uB0B4\uC6A9\uC774 \uC774\uBBF8 \uC544\uB798\uC5D0 \uD3EC\uD568\uB418\uC5B4 \uC788\uC73C\uBBC0\uB85C \uC6D0\uBCF8 \uD30C\uC77C\uC744 \uB2E4\uC2DC \uC694\uCCAD\uD558\uC9C0 \uB9C8\uC138\uC694.
2586
2589
 
2587
2590
  ${attachmentContext}
2588
2591
 
2589
- \uC704 \uACB0\uACFC\uB97C \uCC38\uACE0\uD558\uC5EC \uB2F5\uBCC0\uD574\uC8FC\uC138\uC694.`
2592
+ \uC704 \uBD84\uC11D \uACB0\uACFC\uB9CC\uC73C\uB85C \uC0AC\uC6A9\uC790\uC758 \uC9C8\uBB38\uC5D0 \uB2F5\uBCC0\uD574\uC8FC\uC138\uC694. skill_use \uD0DC\uADF8\uB294 \uC0AC\uC6A9\uD558\uC9C0 \uB9C8\uC138\uC694.`
2590
2593
  });
2591
2594
  }
2592
2595
  }
@@ -2680,7 +2683,7 @@ ${attachmentContext}
2680
2683
  const thinking = parsed.message?.thinking || "";
2681
2684
  if (content2 || thinking) {
2682
2685
  if (content2) accumulatedContent += content2;
2683
- if (!skipNextSkillParsingRef.current && accumulatedContent.includes("</skill_use>")) {
2686
+ if (!shouldSkipSkillParsing && accumulatedContent.includes("</skill_use>")) {
2684
2687
  const endIdx = accumulatedContent.indexOf("</skill_use>");
2685
2688
  accumulatedContent = accumulatedContent.substring(0, endIdx + "</skill_use>".length);
2686
2689
  skillTagDetected = true;
@@ -2747,7 +2750,7 @@ ${attachmentContext}
2747
2750
  } catch {
2748
2751
  }
2749
2752
  }
2750
- if (!skipNextSkillParsingRef.current) {
2753
+ if (!shouldSkipSkillParsing) {
2751
2754
  const assistantContent = accumulatedContent;
2752
2755
  const { skillCall: detectedSkill, cleanContent: skillCleanContent } = parseSkillCallFromContent(assistantContent);
2753
2756
  if (detectedSkill && resolvedSkills[detectedSkill.name]) {
@@ -2928,8 +2931,6 @@ ${result.content}
2928
2931
  return;
2929
2932
  }
2930
2933
  }
2931
- } else {
2932
- skipNextSkillParsingRef.current = false;
2933
2934
  }
2934
2935
  setSessions(
2935
2936
  (prev) => prev.map((s) => {