@gendive/chatllm 0.17.31 → 0.17.33

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.
@@ -1031,13 +1031,25 @@ ${config.description}`;
1031
1031
 
1032
1032
  ${skillDescriptions}
1033
1033
 
1034
- **\uADDC\uCE59:**
1034
+ **\uD544\uC218 \uADDC\uCE59:**
1035
1035
  - \uC774\uBBF8\uC9C0 \uC0DD\uC131/\uADF8\uB9BC/\uC77C\uB7EC\uC2A4\uD2B8 \uC694\uCCAD \u2192 \uBC18\uB4DC\uC2DC generate_image \uB3C4\uAD6C \uD638\uCD9C
1036
1036
  - \uCD5C\uC2E0 \uC815\uBCF4/\uAC80\uC0C9/\uB274\uC2A4 \uC694\uCCAD \u2192 \uBC18\uB4DC\uC2DC web_search \uB3C4\uAD6C \uD638\uCD9C
1037
- - \uB3C4\uAD6C \uD638\uCD9C \uC2DC \uC9E7\uC740 \uC548\uB0B4 \uBA54\uC2DC\uC9C0\uB97C \uBA3C\uC800 \uC791\uC131\uD558\uACE0, \uADF8 \uB4A4\uC5D0 skill_use \uD0DC\uADF8\uB97C \uD3EC\uD568\uD558\uC138\uC694
1038
1037
  - \uD55C \uBC88\uC5D0 \uD558\uB098\uC758 \uB3C4\uAD6C\uB9CC \uD638\uCD9C\uD558\uC138\uC694
1039
- - \uB3C4\uAD6C \uC5C6\uC774 \uD14D\uC2A4\uD2B8\uB85C\uB9CC \uB2F5\uBCC0\uD558\uC9C0 \uB9C8\uC138\uC694 (\uD574\uB2F9 \uB3C4\uAD6C\uAC00 \uC788\uB294 \uACBD\uC6B0)
1040
- - \uB3C4\uAD6C\uAC00 \uC2E4\uD589\uB418\uBA74 \uACB0\uACFC\uAC00 \uC790\uB3D9\uC73C\uB85C \uC804\uB2EC\uB429\uB2C8\uB2E4`;
1038
+ - \uB3C4\uAD6C\uAC00 \uC2E4\uD589\uB418\uBA74 \uACB0\uACFC\uAC00 \uC790\uB3D9\uC73C\uB85C \uC804\uB2EC\uB429\uB2C8\uB2E4
1039
+
1040
+ **\u26A0\uFE0F \uC808\uB300 \uAE08\uC9C0 \u2014 \uB9D0\uB85C\uB9CC \uC124\uBA85\uD558\uACE0 \uD0DC\uADF8\uB97C \uC0DD\uB7B5\uD558\uB294 \uD589\uC704:**
1041
+ "\uAC80\uC0C9\uD558\uACA0\uC2B5\uB2C8\uB2E4", "\uCC3E\uC544\uBCF4\uACA0\uC2B5\uB2C8\uB2E4", "\uC870\uC0AC\uD574 \uBCF4\uACA0\uC2B5\uB2C8\uB2E4", "\uC774\uBBF8\uC9C0\uB97C \uC0DD\uC131\uD558\uACA0\uC2B5\uB2C8\uB2E4" \uB4F1
1042
+ **\uB9D0\uB85C\uB9CC \uC758\uB3C4\uB97C \uBC1D\uD788\uACE0 <skill_use> \uD0DC\uADF8\uB97C \uD3EC\uD568\uD558\uC9C0 \uC54A\uC73C\uBA74 \uB3C4\uAD6C\uAC00 \uC2E4\uD589\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.**
1043
+ \uBC18\uB4DC\uC2DC \uD14D\uC2A4\uD2B8 \uC548\uB0B4 \uC9C1\uD6C4\uC5D0 <skill_use> \uD0DC\uADF8\uB97C \uCD9C\uB825\uD574\uC57C \uD569\uB2C8\uB2E4.
1044
+
1045
+ \u274C \uC798\uBABB\uB41C \uC608 (\uD0DC\uADF8 \uC5C6\uC774 \uB9D0\uB9CC \uD568 \u2014 \uB3C4\uAD6C \uC2E4\uD589 \uC548 \uB428):
1046
+ "\uB124, \uB370\uBE0C\uB2E4\uC774\uBE0C\uC5D0 \uB300\uD574 \uAC80\uC0C9\uD574 \uBCF4\uACA0\uC2B5\uB2C8\uB2E4."
1047
+
1048
+ \u2705 \uC62C\uBC14\uB978 \uC608 (\uC548\uB0B4 + \uD0DC\uADF8 \uD3EC\uD568 \u2014 \uB3C4\uAD6C \uC2E4\uD589\uB428):
1049
+ "\uB370\uBE0C\uB2E4\uC774\uBE0C\uC5D0 \uB300\uD574 \uAC80\uC0C9\uD558\uACA0\uC2B5\uB2C8\uB2E4.
1050
+ <skill_use name="web_search">{"query": "\uB370\uBE0C\uB2E4\uC774\uBE0C"}</skill_use>"
1051
+
1052
+ **\uBC18\uBCF5: \uD574\uB2F9 \uB3C4\uAD6C\uAC00 \uC788\uB2E4\uBA74, <skill_use> \uD0DC\uADF8 \uC5C6\uC774 \uC808\uB300 \uC751\uB2F5\uD558\uC9C0 \uB9C8\uC138\uC694.**`;
1041
1053
  }, [resolvedSkills]);
1042
1054
  const handleSkillCall = (0, import_react3.useCallback)(
1043
1055
  async (content, callbacks) => {
@@ -3178,42 +3190,14 @@ ${result.content}
3178
3190
  if (activeChecklistRef.current) {
3179
3191
  const checklist = activeChecklistRef.current;
3180
3192
  const stepIndex = checklist.currentStep;
3181
- checklist.stepResults.push(accumulatedContent);
3182
- setSessions(
3183
- (prev) => prev.map((s) => {
3184
- if (s.id !== checklist.sessionId) return s;
3185
- return {
3186
- ...s,
3187
- messages: s.messages.map((m) => {
3188
- if (m.id !== checklist.messageId || !m.checklistBlock) return m;
3189
- const updatedItems = m.checklistBlock.items.map((it, idx) => ({
3190
- ...it,
3191
- status: idx <= stepIndex ? "done" : it.status,
3192
- result: idx === stepIndex ? accumulatedContent : it.result
3193
- }));
3194
- return {
3195
- ...m,
3196
- checklistBlock: { ...m.checklistBlock, items: updatedItems, currentStep: stepIndex + 1 }
3197
- };
3198
- })
3199
- };
3200
- })
3201
- );
3202
- setSessions(
3203
- (prev) => prev.map((s) => {
3204
- if (s.id !== capturedSessionId) return s;
3205
- return {
3206
- ...s,
3207
- messages: s.messages.map((m) => {
3208
- if (m.id !== assistantMessageId) return m;
3209
- return { ...m, hidden: true };
3210
- })
3211
- };
3212
- })
3213
- );
3214
- const nextStep = stepIndex + 1;
3215
- if (nextStep < checklist.items.length) {
3216
- checklist.currentStep = nextStep;
3193
+ const hasPollTag = /<poll[\s>]/i.test(accumulatedContent);
3194
+ if (hasPollTag && !checklist.waitingForPoll) {
3195
+ checklist.waitingForPoll = true;
3196
+ } else {
3197
+ if (checklist.waitingForPoll) {
3198
+ checklist.waitingForPoll = false;
3199
+ }
3200
+ checklist.stepResults.push(accumulatedContent);
3217
3201
  setSessions(
3218
3202
  (prev) => prev.map((s) => {
3219
3203
  if (s.id !== checklist.sessionId) return s;
@@ -3223,21 +3207,87 @@ ${result.content}
3223
3207
  if (m.id !== checklist.messageId || !m.checklistBlock) return m;
3224
3208
  const updatedItems = m.checklistBlock.items.map((it, idx) => ({
3225
3209
  ...it,
3226
- status: idx === nextStep ? "in_progress" : it.status
3210
+ status: idx <= stepIndex ? "done" : it.status,
3211
+ result: idx === stepIndex ? accumulatedContent : it.result
3227
3212
  }));
3228
3213
  return {
3229
3214
  ...m,
3230
- checklistBlock: { ...m.checklistBlock, items: updatedItems, currentStep: nextStep }
3215
+ checklistBlock: { ...m.checklistBlock, items: updatedItems, currentStep: stepIndex + 1 }
3231
3216
  };
3232
3217
  })
3233
3218
  };
3234
3219
  })
3235
3220
  );
3221
+ setSessions(
3222
+ (prev) => prev.map((s) => {
3223
+ if (s.id !== capturedSessionId) return s;
3224
+ return {
3225
+ ...s,
3226
+ messages: s.messages.map((m) => {
3227
+ if (m.id !== assistantMessageId) return m;
3228
+ return { ...m, hidden: true };
3229
+ })
3230
+ };
3231
+ })
3232
+ );
3233
+ const nextStep = stepIndex + 1;
3234
+ if (nextStep < checklist.items.length) {
3235
+ checklist.currentStep = nextStep;
3236
+ setSessions(
3237
+ (prev) => prev.map((s) => {
3238
+ if (s.id !== checklist.sessionId) return s;
3239
+ return {
3240
+ ...s,
3241
+ messages: s.messages.map((m) => {
3242
+ if (m.id !== checklist.messageId || !m.checklistBlock) return m;
3243
+ const updatedItems = m.checklistBlock.items.map((it, idx) => ({
3244
+ ...it,
3245
+ status: idx === nextStep ? "in_progress" : it.status
3246
+ }));
3247
+ return {
3248
+ ...m,
3249
+ checklistBlock: { ...m.checklistBlock, items: updatedItems, currentStep: nextStep }
3250
+ };
3251
+ })
3252
+ };
3253
+ })
3254
+ );
3255
+ skipNextChecklistParsingRef.current = true;
3256
+ setTimeout(() => {
3257
+ sendMessage(
3258
+ `\uCCB4\uD06C\uB9AC\uC2A4\uD2B8 ${nextStep + 1}/${checklist.items.length}\uB2E8\uACC4\uB97C \uC2E4\uD589\uD558\uC138\uC694: "${checklist.items[nextStep].title}".
3259
+ \uC774\uC804 \uB2E8\uACC4 \uACB0\uACFC\uB97C \uCC38\uACE0\uD558\uB418, \uC774 \uB2E8\uACC4\uC5D0\uB9CC \uC9D1\uC911\uD558\uC5EC \uACB0\uACFC\uB97C \uC791\uC131\uD558\uC138\uC694. checklist \uD0DC\uADF8\uB294 \uC0AC\uC6A9\uD558\uC9C0 \uB9C8\uC138\uC694.`,
3260
+ { hiddenUserMessage: true }
3261
+ );
3262
+ }, 100);
3263
+ saveMessagesOnEarlyReturn();
3264
+ setIsLoading(false);
3265
+ abortControllerRef.current = null;
3266
+ return;
3267
+ }
3268
+ const stepSummary = checklist.stepResults.map((r, i) => `### ${i + 1}. ${checklist.items[i].title}
3269
+ ${r}`).join("\n\n");
3270
+ setSessions(
3271
+ (prev) => prev.map((s) => {
3272
+ if (s.id !== checklist.sessionId) return s;
3273
+ return {
3274
+ ...s,
3275
+ messages: s.messages.map((m) => {
3276
+ if (m.id !== checklist.messageId || !m.checklistBlock) return m;
3277
+ return { ...m, checklistBlock: { ...m.checklistBlock, completed: true } };
3278
+ })
3279
+ };
3280
+ })
3281
+ );
3282
+ activeChecklistRef.current = null;
3236
3283
  skipNextChecklistParsingRef.current = true;
3237
3284
  setTimeout(() => {
3238
3285
  sendMessage(
3239
- `\uCCB4\uD06C\uB9AC\uC2A4\uD2B8 ${nextStep + 1}/${checklist.items.length}\uB2E8\uACC4\uB97C \uC2E4\uD589\uD558\uC138\uC694: "${checklist.items[nextStep].title}".
3240
- \uC774\uC804 \uB2E8\uACC4 \uACB0\uACFC\uB97C \uCC38\uACE0\uD558\uB418, \uC774 \uB2E8\uACC4\uC5D0\uB9CC \uC9D1\uC911\uD558\uC5EC \uACB0\uACFC\uB97C \uC791\uC131\uD558\uC138\uC694. checklist \uD0DC\uADF8\uB294 \uC0AC\uC6A9\uD558\uC9C0 \uB9C8\uC138\uC694.`,
3286
+ `\uBAA8\uB4E0 \uCCB4\uD06C\uB9AC\uC2A4\uD2B8 \uB2E8\uACC4\uAC00 \uC644\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uC544\uB798\uB294 \uAC01 \uB2E8\uACC4\uBCC4 \uACB0\uACFC\uC785\uB2C8\uB2E4:
3287
+
3288
+ ${stepSummary}
3289
+
3290
+ \uC704 \uACB0\uACFC\uB97C \uC885\uD569\uD558\uC5EC \uCD5C\uC885 \uACB0\uACFC\uBB3C\uC744 \uC644\uC131\uD574\uC8FC\uC138\uC694. checklist \uD0DC\uADF8\uB294 \uC0AC\uC6A9\uD558\uC9C0 \uB9C8\uC138\uC694.`,
3241
3291
  { hiddenUserMessage: true }
3242
3292
  );
3243
3293
  }, 100);
@@ -3246,36 +3296,6 @@ ${result.content}
3246
3296
  abortControllerRef.current = null;
3247
3297
  return;
3248
3298
  }
3249
- const stepSummary = checklist.stepResults.map((r, i) => `### ${i + 1}. ${checklist.items[i].title}
3250
- ${r}`).join("\n\n");
3251
- setSessions(
3252
- (prev) => prev.map((s) => {
3253
- if (s.id !== checklist.sessionId) return s;
3254
- return {
3255
- ...s,
3256
- messages: s.messages.map((m) => {
3257
- if (m.id !== checklist.messageId || !m.checklistBlock) return m;
3258
- return { ...m, checklistBlock: { ...m.checklistBlock, completed: true } };
3259
- })
3260
- };
3261
- })
3262
- );
3263
- activeChecklistRef.current = null;
3264
- skipNextChecklistParsingRef.current = true;
3265
- setTimeout(() => {
3266
- sendMessage(
3267
- `\uBAA8\uB4E0 \uCCB4\uD06C\uB9AC\uC2A4\uD2B8 \uB2E8\uACC4\uAC00 \uC644\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uC544\uB798\uB294 \uAC01 \uB2E8\uACC4\uBCC4 \uACB0\uACFC\uC785\uB2C8\uB2E4:
3268
-
3269
- ${stepSummary}
3270
-
3271
- \uC704 \uACB0\uACFC\uB97C \uC885\uD569\uD558\uC5EC \uCD5C\uC885 \uACB0\uACFC\uBB3C\uC744 \uC644\uC131\uD574\uC8FC\uC138\uC694. checklist \uD0DC\uADF8\uB294 \uC0AC\uC6A9\uD558\uC9C0 \uB9C8\uC138\uC694.`,
3272
- { hiddenUserMessage: true }
3273
- );
3274
- }, 100);
3275
- saveMessagesOnEarlyReturn();
3276
- setIsLoading(false);
3277
- abortControllerRef.current = null;
3278
- return;
3279
3299
  }
3280
3300
  if (!skipNextChecklistParsingRef.current) {
3281
3301
  const { checklistBlock, cleanContent: checklistCleanContent } = parseChecklistFromContent(accumulatedContent);
@@ -3630,6 +3650,32 @@ ${allResults}
3630
3650
  });
3631
3651
  const hasValidResponses = formattedParts.length > 0;
3632
3652
  const isAutoGenerate = responses.every((r) => r.skipped);
3653
+ if (activeChecklistRef.current?.waitingForPoll) {
3654
+ const checklist = activeChecklistRef.current;
3655
+ const stepTitle = checklist.items[checklist.currentStep]?.title || "";
3656
+ setSessions(
3657
+ (prev) => prev.map((s) => {
3658
+ if (s.id !== currentSessionId) return s;
3659
+ return {
3660
+ ...s,
3661
+ messages: s.messages.map((m) => {
3662
+ if (m.id !== messageId) return m;
3663
+ return { ...m, pollBlock: void 0, hidden: true };
3664
+ })
3665
+ };
3666
+ })
3667
+ );
3668
+ skipNextPollParsingRef.current = true;
3669
+ skipNextChecklistParsingRef.current = true;
3670
+ const hiddenPrompt2 = isAutoGenerate ? `\uCCB4\uD06C\uB9AC\uC2A4\uD2B8 \uB2E8\uACC4 "${stepTitle}"\uC744 \uC2E4\uD589\uD558\uC138\uC694. \uC0AC\uC6A9\uC790\uAC00 \uC790\uB3D9 \uC120\uD0DD\uC744 \uC694\uCCAD\uD588\uC73C\uBBC0\uB85C, \uCD5C\uC801\uC758 \uC635\uC158\uC744 \uC120\uD0DD\uD558\uC5EC \uC774 \uB2E8\uACC4\uB97C \uC644\uB8CC\uD574\uC8FC\uC138\uC694. poll \uD0DC\uADF8\uC640 checklist \uD0DC\uADF8\uB294 \uC0AC\uC6A9\uD558\uC9C0 \uB9C8\uC138\uC694.` : `\uCCB4\uD06C\uB9AC\uC2A4\uD2B8 \uB2E8\uACC4 "${stepTitle}"\uC744 \uACC4\uC18D\uD569\uB2C8\uB2E4. \uC0AC\uC6A9\uC790\uC758 \uC120\uD0DD:
3671
+ ${formattedParts.join("\n")}
3672
+
3673
+ \uC704 \uC120\uD0DD\uC744 \uBC18\uC601\uD558\uC5EC \uC774 \uB2E8\uACC4\uC758 \uACB0\uACFC\uB97C \uC644\uC131\uD574\uC8FC\uC138\uC694. poll \uD0DC\uADF8\uC640 checklist \uD0DC\uADF8\uB294 \uC0AC\uC6A9\uD558\uC9C0 \uB9C8\uC138\uC694.`;
3674
+ setTimeout(() => {
3675
+ sendMessage(hiddenPrompt2, { hiddenUserMessage: true });
3676
+ }, 100);
3677
+ return;
3678
+ }
3633
3679
  setSessions(
3634
3680
  (prev) => prev.map((s) => {
3635
3681
  if (s.id !== currentSessionId) return s;