@gendive/chatllm 0.17.32 → 0.17.34
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/react/index.js +138 -71
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +138 -71
- package/dist/react/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/react/index.js
CHANGED
|
@@ -2101,6 +2101,39 @@ ${projectMemoryContext}`);
|
|
|
2101
2101
|
parts.push("");
|
|
2102
2102
|
parts.push(skillsPrompt);
|
|
2103
2103
|
}
|
|
2104
|
+
const capabilityFeatures = [];
|
|
2105
|
+
const autoSkillNames = Object.entries(resolvedSkills).filter(([, config]) => config.trigger === "auto" || config.trigger === "both").map(([name, config]) => `- **${name}**: ${config.description}`);
|
|
2106
|
+
if (autoSkillNames.length > 0) {
|
|
2107
|
+
capabilityFeatures.push(`### \uB3C4\uAD6C
|
|
2108
|
+
${autoSkillNames.join("\n")}`);
|
|
2109
|
+
}
|
|
2110
|
+
if (enableChecklist) {
|
|
2111
|
+
capabilityFeatures.push("### \uCCB4\uD06C\uB9AC\uC2A4\uD2B8 \uC790\uB3D9 \uC2E4\uD589\n\uBCF5\uC7A1\uD55C \uC791\uC5C5\uC744 \uB2E8\uACC4\uBCC4\uB85C \uB098\uB204\uC5B4 \uC790\uB3D9\uC73C\uB85C \uC21C\uCC28 \uC2E4\uD589\uD569\uB2C8\uB2E4. (\uC608: \uB9AC\uC11C\uCE58, \uBE44\uAD50 \uBD84\uC11D, \uBCF4\uACE0\uC11C \uC791\uC131)");
|
|
2112
|
+
}
|
|
2113
|
+
if (enablePoll) {
|
|
2114
|
+
capabilityFeatures.push("### \uC120\uD0DD\uC9C0 \uC9C8\uBB38\n\uD544\uC694\uD55C \uC815\uBCF4\uB97C \uC120\uD0DD\uC9C0\uB85C \uBB3C\uC5B4\uBCF8 \uD6C4 \uB9DE\uCDA4 \uACB0\uACFC\uB97C \uC81C\uACF5\uD569\uB2C8\uB2E4.");
|
|
2115
|
+
}
|
|
2116
|
+
if (capabilityFeatures.length > 0) {
|
|
2117
|
+
parts.push("");
|
|
2118
|
+
parts.push(`## \uB2A5\uB825 \uC18C\uAC1C \uAC00\uC774\uB4DC
|
|
2119
|
+
|
|
2120
|
+
\uC0AC\uC6A9\uC790\uAC00 "\uBB50 \uD560 \uC218 \uC788\uC5B4?", "\uC5B4\uB5A4 \uAE30\uB2A5\uC774 \uC788\uC5B4?", "\uB3C4\uC6C0\uC774 \uD544\uC694\uD574" \uB4F1 \uB2A5\uB825/\uAE30\uB2A5\uC744 \uBB3C\uC5B4\uBCF4\uBA74,
|
|
2121
|
+
\uC544\uB798 \uB0B4\uC6A9\uC744 \uBC14\uD0D5\uC73C\uB85C **\uCCB4\uD06C\uB9AC\uC2A4\uD2B8 \uD615\uD0DC**\uB85C \uC9C1\uC811 \uC2DC\uC5F0\uD558\uBA70 \uC18C\uAC1C\uD558\uC138\uC694.
|
|
2122
|
+
|
|
2123
|
+
${capabilityFeatures.join("\n\n")}
|
|
2124
|
+
|
|
2125
|
+
**\uC18C\uAC1C \uBC29\uC2DD:**
|
|
2126
|
+
\uC704 \uAE30\uB2A5 \uC911 \uB300\uD45C\uC801\uC778 \uAC83\uB4E4\uC744 \uCCB4\uD06C\uB9AC\uC2A4\uD2B8\uB85C \uAD6C\uC131\uD558\uC5EC, \uAC01 \uB2E8\uACC4\uC5D0\uC11C \uD574\uB2F9 \uAE30\uB2A5\uC744 \uC2E4\uC81C\uB85C \uC2DC\uC5F0\uD558\uC138\uC694.
|
|
2127
|
+
\uC608\uC2DC:
|
|
2128
|
+
"\uC81C\uAC00 \uD560 \uC218 \uC788\uB294 \uAC83\uB4E4\uC744 \uC9C1\uC811 \uBCF4\uC5EC\uB4DC\uB9AC\uACA0\uC2B5\uB2C8\uB2E4!
|
|
2129
|
+
|
|
2130
|
+
<checklist>
|
|
2131
|
+
<step>\uC6F9 \uAC80\uC0C9\uC73C\uB85C \uCD5C\uC2E0 \uB274\uC2A4 \uAC00\uC838\uC624\uAE30</step>
|
|
2132
|
+
<step>\uAC80\uC0C9 \uACB0\uACFC \uAE30\uBC18 \uC694\uC57D \uBCF4\uACE0\uC11C \uC791\uC131</step>
|
|
2133
|
+
</checklist>"
|
|
2134
|
+
|
|
2135
|
+
\uB2E8, \uB3C4\uAD6C\uAC00 \uC5C6\uB294 \uACBD\uC6B0\uC5D0\uB294 \uCCB4\uD06C\uB9AC\uC2A4\uD2B8 \uC5C6\uC774 \uD14D\uC2A4\uD2B8\uB85C \uAC04\uB2E8\uD788 \uC18C\uAC1C\uD558\uC138\uC694.`);
|
|
2136
|
+
}
|
|
2104
2137
|
if (enablePoll) {
|
|
2105
2138
|
parts.push("");
|
|
2106
2139
|
parts.push(`## \uC120\uD0DD\uC9C0 \uC9C8\uBB38 \uAE30\uB2A5
|
|
@@ -2185,7 +2218,7 @@ ${projectMemoryContext}`);
|
|
|
2185
2218
|
- \uCCB4\uD06C\uB9AC\uC2A4\uD2B8 \uD0DC\uADF8 \uB4A4\uC5D0 \uCD94\uAC00 \uD14D\uC2A4\uD2B8\uB97C \uC791\uC131\uD558\uC9C0 \uB9C8\uC138\uC694`);
|
|
2186
2219
|
}
|
|
2187
2220
|
return parts.length > 0 ? parts.join("\n") : "";
|
|
2188
|
-
}, [personalization, globalMemory, useGlobalMemoryEnabled, enablePoll, enableChecklist, buildSkillsPrompt, enableProjects, projectHook.currentProject, projectMemory]);
|
|
2221
|
+
}, [personalization, globalMemory, useGlobalMemoryEnabled, enablePoll, enableChecklist, buildSkillsPrompt, enableProjects, projectHook.currentProject, projectMemory, resolvedSkills]);
|
|
2189
2222
|
const compressContext = (0, import_react5.useCallback)(async (messagesToCompress, model) => {
|
|
2190
2223
|
const conversationText = messagesToCompress.map((m) => `${m.role === "user" ? "\uC0AC\uC6A9\uC790" : "AI"}: ${m.content}`).join("\n\n");
|
|
2191
2224
|
const summaryPrompt = `\uB2E4\uC74C \uB300\uD654 \uB0B4\uC6A9\uC744 \uD575\uC2EC \uC815\uBCF4\uB9CC \uC720\uC9C0\uD558\uBA74\uC11C \uAC04\uACB0\uD558\uAC8C \uC694\uC57D\uD574\uC8FC\uC138\uC694.
|
|
@@ -3190,42 +3223,14 @@ ${result.content}
|
|
|
3190
3223
|
if (activeChecklistRef.current) {
|
|
3191
3224
|
const checklist = activeChecklistRef.current;
|
|
3192
3225
|
const stepIndex = checklist.currentStep;
|
|
3193
|
-
|
|
3194
|
-
|
|
3195
|
-
|
|
3196
|
-
|
|
3197
|
-
|
|
3198
|
-
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
const updatedItems = m.checklistBlock.items.map((it, idx) => ({
|
|
3202
|
-
...it,
|
|
3203
|
-
status: idx <= stepIndex ? "done" : it.status,
|
|
3204
|
-
result: idx === stepIndex ? accumulatedContent : it.result
|
|
3205
|
-
}));
|
|
3206
|
-
return {
|
|
3207
|
-
...m,
|
|
3208
|
-
checklistBlock: { ...m.checklistBlock, items: updatedItems, currentStep: stepIndex + 1 }
|
|
3209
|
-
};
|
|
3210
|
-
})
|
|
3211
|
-
};
|
|
3212
|
-
})
|
|
3213
|
-
);
|
|
3214
|
-
setSessions(
|
|
3215
|
-
(prev) => prev.map((s) => {
|
|
3216
|
-
if (s.id !== capturedSessionId) return s;
|
|
3217
|
-
return {
|
|
3218
|
-
...s,
|
|
3219
|
-
messages: s.messages.map((m) => {
|
|
3220
|
-
if (m.id !== assistantMessageId) return m;
|
|
3221
|
-
return { ...m, hidden: true };
|
|
3222
|
-
})
|
|
3223
|
-
};
|
|
3224
|
-
})
|
|
3225
|
-
);
|
|
3226
|
-
const nextStep = stepIndex + 1;
|
|
3227
|
-
if (nextStep < checklist.items.length) {
|
|
3228
|
-
checklist.currentStep = nextStep;
|
|
3226
|
+
const hasPollTag = /<poll[\s>]/i.test(accumulatedContent);
|
|
3227
|
+
if (hasPollTag && !checklist.waitingForPoll) {
|
|
3228
|
+
checklist.waitingForPoll = true;
|
|
3229
|
+
} else {
|
|
3230
|
+
if (checklist.waitingForPoll) {
|
|
3231
|
+
checklist.waitingForPoll = false;
|
|
3232
|
+
}
|
|
3233
|
+
checklist.stepResults.push(accumulatedContent);
|
|
3229
3234
|
setSessions(
|
|
3230
3235
|
(prev) => prev.map((s) => {
|
|
3231
3236
|
if (s.id !== checklist.sessionId) return s;
|
|
@@ -3235,21 +3240,87 @@ ${result.content}
|
|
|
3235
3240
|
if (m.id !== checklist.messageId || !m.checklistBlock) return m;
|
|
3236
3241
|
const updatedItems = m.checklistBlock.items.map((it, idx) => ({
|
|
3237
3242
|
...it,
|
|
3238
|
-
status: idx
|
|
3243
|
+
status: idx <= stepIndex ? "done" : it.status,
|
|
3244
|
+
result: idx === stepIndex ? accumulatedContent : it.result
|
|
3239
3245
|
}));
|
|
3240
3246
|
return {
|
|
3241
3247
|
...m,
|
|
3242
|
-
checklistBlock: { ...m.checklistBlock, items: updatedItems, currentStep:
|
|
3248
|
+
checklistBlock: { ...m.checklistBlock, items: updatedItems, currentStep: stepIndex + 1 }
|
|
3243
3249
|
};
|
|
3244
3250
|
})
|
|
3245
3251
|
};
|
|
3246
3252
|
})
|
|
3247
3253
|
);
|
|
3254
|
+
setSessions(
|
|
3255
|
+
(prev) => prev.map((s) => {
|
|
3256
|
+
if (s.id !== capturedSessionId) return s;
|
|
3257
|
+
return {
|
|
3258
|
+
...s,
|
|
3259
|
+
messages: s.messages.map((m) => {
|
|
3260
|
+
if (m.id !== assistantMessageId) return m;
|
|
3261
|
+
return { ...m, hidden: true };
|
|
3262
|
+
})
|
|
3263
|
+
};
|
|
3264
|
+
})
|
|
3265
|
+
);
|
|
3266
|
+
const nextStep = stepIndex + 1;
|
|
3267
|
+
if (nextStep < checklist.items.length) {
|
|
3268
|
+
checklist.currentStep = nextStep;
|
|
3269
|
+
setSessions(
|
|
3270
|
+
(prev) => prev.map((s) => {
|
|
3271
|
+
if (s.id !== checklist.sessionId) return s;
|
|
3272
|
+
return {
|
|
3273
|
+
...s,
|
|
3274
|
+
messages: s.messages.map((m) => {
|
|
3275
|
+
if (m.id !== checklist.messageId || !m.checklistBlock) return m;
|
|
3276
|
+
const updatedItems = m.checklistBlock.items.map((it, idx) => ({
|
|
3277
|
+
...it,
|
|
3278
|
+
status: idx === nextStep ? "in_progress" : it.status
|
|
3279
|
+
}));
|
|
3280
|
+
return {
|
|
3281
|
+
...m,
|
|
3282
|
+
checklistBlock: { ...m.checklistBlock, items: updatedItems, currentStep: nextStep }
|
|
3283
|
+
};
|
|
3284
|
+
})
|
|
3285
|
+
};
|
|
3286
|
+
})
|
|
3287
|
+
);
|
|
3288
|
+
skipNextChecklistParsingRef.current = true;
|
|
3289
|
+
setTimeout(() => {
|
|
3290
|
+
sendMessage(
|
|
3291
|
+
`\uCCB4\uD06C\uB9AC\uC2A4\uD2B8 ${nextStep + 1}/${checklist.items.length}\uB2E8\uACC4\uB97C \uC2E4\uD589\uD558\uC138\uC694: "${checklist.items[nextStep].title}".
|
|
3292
|
+
\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.`,
|
|
3293
|
+
{ hiddenUserMessage: true }
|
|
3294
|
+
);
|
|
3295
|
+
}, 100);
|
|
3296
|
+
saveMessagesOnEarlyReturn();
|
|
3297
|
+
setIsLoading(false);
|
|
3298
|
+
abortControllerRef.current = null;
|
|
3299
|
+
return;
|
|
3300
|
+
}
|
|
3301
|
+
const stepSummary = checklist.stepResults.map((r, i) => `### ${i + 1}. ${checklist.items[i].title}
|
|
3302
|
+
${r}`).join("\n\n");
|
|
3303
|
+
setSessions(
|
|
3304
|
+
(prev) => prev.map((s) => {
|
|
3305
|
+
if (s.id !== checklist.sessionId) return s;
|
|
3306
|
+
return {
|
|
3307
|
+
...s,
|
|
3308
|
+
messages: s.messages.map((m) => {
|
|
3309
|
+
if (m.id !== checklist.messageId || !m.checklistBlock) return m;
|
|
3310
|
+
return { ...m, checklistBlock: { ...m.checklistBlock, completed: true } };
|
|
3311
|
+
})
|
|
3312
|
+
};
|
|
3313
|
+
})
|
|
3314
|
+
);
|
|
3315
|
+
activeChecklistRef.current = null;
|
|
3248
3316
|
skipNextChecklistParsingRef.current = true;
|
|
3249
3317
|
setTimeout(() => {
|
|
3250
3318
|
sendMessage(
|
|
3251
|
-
`\uCCB4\uD06C\uB9AC\uC2A4\uD2B8
|
|
3252
|
-
|
|
3319
|
+
`\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:
|
|
3320
|
+
|
|
3321
|
+
${stepSummary}
|
|
3322
|
+
|
|
3323
|
+
\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.`,
|
|
3253
3324
|
{ hiddenUserMessage: true }
|
|
3254
3325
|
);
|
|
3255
3326
|
}, 100);
|
|
@@ -3258,36 +3329,6 @@ ${result.content}
|
|
|
3258
3329
|
abortControllerRef.current = null;
|
|
3259
3330
|
return;
|
|
3260
3331
|
}
|
|
3261
|
-
const stepSummary = checklist.stepResults.map((r, i) => `### ${i + 1}. ${checklist.items[i].title}
|
|
3262
|
-
${r}`).join("\n\n");
|
|
3263
|
-
setSessions(
|
|
3264
|
-
(prev) => prev.map((s) => {
|
|
3265
|
-
if (s.id !== checklist.sessionId) return s;
|
|
3266
|
-
return {
|
|
3267
|
-
...s,
|
|
3268
|
-
messages: s.messages.map((m) => {
|
|
3269
|
-
if (m.id !== checklist.messageId || !m.checklistBlock) return m;
|
|
3270
|
-
return { ...m, checklistBlock: { ...m.checklistBlock, completed: true } };
|
|
3271
|
-
})
|
|
3272
|
-
};
|
|
3273
|
-
})
|
|
3274
|
-
);
|
|
3275
|
-
activeChecklistRef.current = null;
|
|
3276
|
-
skipNextChecklistParsingRef.current = true;
|
|
3277
|
-
setTimeout(() => {
|
|
3278
|
-
sendMessage(
|
|
3279
|
-
`\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:
|
|
3280
|
-
|
|
3281
|
-
${stepSummary}
|
|
3282
|
-
|
|
3283
|
-
\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.`,
|
|
3284
|
-
{ hiddenUserMessage: true }
|
|
3285
|
-
);
|
|
3286
|
-
}, 100);
|
|
3287
|
-
saveMessagesOnEarlyReturn();
|
|
3288
|
-
setIsLoading(false);
|
|
3289
|
-
abortControllerRef.current = null;
|
|
3290
|
-
return;
|
|
3291
3332
|
}
|
|
3292
3333
|
if (!skipNextChecklistParsingRef.current) {
|
|
3293
3334
|
const { checklistBlock, cleanContent: checklistCleanContent } = parseChecklistFromContent(accumulatedContent);
|
|
@@ -3642,6 +3683,32 @@ ${allResults}
|
|
|
3642
3683
|
});
|
|
3643
3684
|
const hasValidResponses = formattedParts.length > 0;
|
|
3644
3685
|
const isAutoGenerate = responses.every((r) => r.skipped);
|
|
3686
|
+
if (activeChecklistRef.current?.waitingForPoll) {
|
|
3687
|
+
const checklist = activeChecklistRef.current;
|
|
3688
|
+
const stepTitle = checklist.items[checklist.currentStep]?.title || "";
|
|
3689
|
+
setSessions(
|
|
3690
|
+
(prev) => prev.map((s) => {
|
|
3691
|
+
if (s.id !== currentSessionId) return s;
|
|
3692
|
+
return {
|
|
3693
|
+
...s,
|
|
3694
|
+
messages: s.messages.map((m) => {
|
|
3695
|
+
if (m.id !== messageId) return m;
|
|
3696
|
+
return { ...m, pollBlock: void 0, hidden: true };
|
|
3697
|
+
})
|
|
3698
|
+
};
|
|
3699
|
+
})
|
|
3700
|
+
);
|
|
3701
|
+
skipNextPollParsingRef.current = true;
|
|
3702
|
+
skipNextChecklistParsingRef.current = true;
|
|
3703
|
+
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:
|
|
3704
|
+
${formattedParts.join("\n")}
|
|
3705
|
+
|
|
3706
|
+
\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.`;
|
|
3707
|
+
setTimeout(() => {
|
|
3708
|
+
sendMessage(hiddenPrompt2, { hiddenUserMessage: true });
|
|
3709
|
+
}, 100);
|
|
3710
|
+
return;
|
|
3711
|
+
}
|
|
3645
3712
|
setSessions(
|
|
3646
3713
|
(prev) => prev.map((s) => {
|
|
3647
3714
|
if (s.id !== currentSessionId) return s;
|