@gendive/chatllm 0.17.40 → 0.17.41

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.
@@ -260,6 +260,8 @@ interface ChecklistItem {
260
260
  status: 'pending' | 'in_progress' | 'done' | 'error';
261
261
  /** 각 단계의 AI 실행 결과 (접이식 표시용) */
262
262
  result?: string;
263
+ /** @Todo vibecode - 이미지 스킬 결과 URL (체크리스트 단계에서 이미지 생성 시) */
264
+ imageUrl?: string;
263
265
  }
264
266
  /**
265
267
  * @description 체크리스트 블록 (메시지에 첨부)
@@ -260,6 +260,8 @@ interface ChecklistItem {
260
260
  status: 'pending' | 'in_progress' | 'done' | 'error';
261
261
  /** 각 단계의 AI 실행 결과 (접이식 표시용) */
262
262
  result?: string;
263
+ /** @Todo vibecode - 이미지 스킬 결과 URL (체크리스트 단계에서 이미지 생성 시) */
264
+ imageUrl?: string;
263
265
  }
264
266
  /**
265
267
  * @description 체크리스트 블록 (메시지에 첨부)
@@ -2738,6 +2738,7 @@ ${finalContent}`;
2738
2738
  const shouldSkipSkillParsing = skipNextSkillParsingRef.current;
2739
2739
  skipNextSkillParsingRef.current = false;
2740
2740
  let accumulatedContent = "";
2741
+ let checklistStepImageUrl = null;
2741
2742
  let messagesToSend = [...existingMessages, userMessage];
2742
2743
  const recompressionThreshold = DEFAULT_RECOMPRESSION_THRESHOLD;
2743
2744
  const tokenLimit = DEFAULT_TOKEN_LIMIT;
@@ -3048,7 +3049,12 @@ ${attachmentContext}
3048
3049
  }, attachExtra);
3049
3050
  pendingAttachmentDataRef.current = null;
3050
3051
  if (skillResult?.content) {
3051
- accumulatedContent = skillResult.content;
3052
+ if (skillResult.metadata?.type === "image") {
3053
+ accumulatedContent = skillResult.metadata?.outputText || "\uC774\uBBF8\uC9C0 \uC0DD\uC131 \uC644\uB8CC";
3054
+ checklistStepImageUrl = skillResult.content;
3055
+ } else {
3056
+ accumulatedContent = skillResult.content;
3057
+ }
3052
3058
  }
3053
3059
  } catch (e) {
3054
3060
  console.warn("[useChatUI] \uCCB4\uD06C\uB9AC\uC2A4\uD2B8 \uB0B4 \uC2A4\uD0AC \uC2E4\uD589 \uC2E4\uD328:", e);
@@ -3323,7 +3329,9 @@ ${result.content}
3323
3329
  const updatedItems = m.checklistBlock.items.map((it, idx) => ({
3324
3330
  ...it,
3325
3331
  status: idx <= stepIndex ? "done" : it.status,
3326
- result: idx === stepIndex ? accumulatedContent : it.result
3332
+ result: idx === stepIndex ? accumulatedContent : it.result,
3333
+ /** @Todo vibecode - 이미지 스킬 결과 URL 저장 */
3334
+ ...idx === stepIndex && checklistStepImageUrl ? { imageUrl: checklistStepImageUrl } : {}
3327
3335
  }));
3328
3336
  return {
3329
3337
  ...m,
@@ -9125,7 +9133,7 @@ var ChecklistCard = ({
9125
9133
  ]
9126
9134
  }
9127
9135
  ),
9128
- canExpand && isExpanded && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
9136
+ canExpand && isExpanded && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
9129
9137
  "div",
9130
9138
  {
9131
9139
  style: {
@@ -9141,7 +9149,21 @@ var ChecklistCard = ({
9141
9149
  whiteSpace: "pre-wrap",
9142
9150
  wordBreak: "break-word"
9143
9151
  },
9144
- children: item.result
9152
+ children: [
9153
+ item.imageUrl && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
9154
+ "img",
9155
+ {
9156
+ src: item.imageUrl,
9157
+ alt: item.result || "\uC0DD\uC131\uB41C \uC774\uBBF8\uC9C0",
9158
+ style: {
9159
+ maxWidth: "100%",
9160
+ borderRadius: "8px",
9161
+ marginBottom: item.result ? "8px" : 0
9162
+ }
9163
+ }
9164
+ ),
9165
+ item.result
9166
+ ]
9145
9167
  }
9146
9168
  )
9147
9169
  ] }, item.id);