@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.mjs
CHANGED
|
@@ -2032,6 +2032,39 @@ ${projectMemoryContext}`);
|
|
|
2032
2032
|
parts.push("");
|
|
2033
2033
|
parts.push(skillsPrompt);
|
|
2034
2034
|
}
|
|
2035
|
+
const capabilityFeatures = [];
|
|
2036
|
+
const autoSkillNames = Object.entries(resolvedSkills).filter(([, config]) => config.trigger === "auto" || config.trigger === "both").map(([name, config]) => `- **${name}**: ${config.description}`);
|
|
2037
|
+
if (autoSkillNames.length > 0) {
|
|
2038
|
+
capabilityFeatures.push(`### \uB3C4\uAD6C
|
|
2039
|
+
${autoSkillNames.join("\n")}`);
|
|
2040
|
+
}
|
|
2041
|
+
if (enableChecklist) {
|
|
2042
|
+
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)");
|
|
2043
|
+
}
|
|
2044
|
+
if (enablePoll) {
|
|
2045
|
+
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.");
|
|
2046
|
+
}
|
|
2047
|
+
if (capabilityFeatures.length > 0) {
|
|
2048
|
+
parts.push("");
|
|
2049
|
+
parts.push(`## \uB2A5\uB825 \uC18C\uAC1C \uAC00\uC774\uB4DC
|
|
2050
|
+
|
|
2051
|
+
\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,
|
|
2052
|
+
\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.
|
|
2053
|
+
|
|
2054
|
+
${capabilityFeatures.join("\n\n")}
|
|
2055
|
+
|
|
2056
|
+
**\uC18C\uAC1C \uBC29\uC2DD:**
|
|
2057
|
+
\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.
|
|
2058
|
+
\uC608\uC2DC:
|
|
2059
|
+
"\uC81C\uAC00 \uD560 \uC218 \uC788\uB294 \uAC83\uB4E4\uC744 \uC9C1\uC811 \uBCF4\uC5EC\uB4DC\uB9AC\uACA0\uC2B5\uB2C8\uB2E4!
|
|
2060
|
+
|
|
2061
|
+
<checklist>
|
|
2062
|
+
<step>\uC6F9 \uAC80\uC0C9\uC73C\uB85C \uCD5C\uC2E0 \uB274\uC2A4 \uAC00\uC838\uC624\uAE30</step>
|
|
2063
|
+
<step>\uAC80\uC0C9 \uACB0\uACFC \uAE30\uBC18 \uC694\uC57D \uBCF4\uACE0\uC11C \uC791\uC131</step>
|
|
2064
|
+
</checklist>"
|
|
2065
|
+
|
|
2066
|
+
\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.`);
|
|
2067
|
+
}
|
|
2035
2068
|
if (enablePoll) {
|
|
2036
2069
|
parts.push("");
|
|
2037
2070
|
parts.push(`## \uC120\uD0DD\uC9C0 \uC9C8\uBB38 \uAE30\uB2A5
|
|
@@ -2116,7 +2149,7 @@ ${projectMemoryContext}`);
|
|
|
2116
2149
|
- \uCCB4\uD06C\uB9AC\uC2A4\uD2B8 \uD0DC\uADF8 \uB4A4\uC5D0 \uCD94\uAC00 \uD14D\uC2A4\uD2B8\uB97C \uC791\uC131\uD558\uC9C0 \uB9C8\uC138\uC694`);
|
|
2117
2150
|
}
|
|
2118
2151
|
return parts.length > 0 ? parts.join("\n") : "";
|
|
2119
|
-
}, [personalization, globalMemory, useGlobalMemoryEnabled, enablePoll, enableChecklist, buildSkillsPrompt, enableProjects, projectHook.currentProject, projectMemory]);
|
|
2152
|
+
}, [personalization, globalMemory, useGlobalMemoryEnabled, enablePoll, enableChecklist, buildSkillsPrompt, enableProjects, projectHook.currentProject, projectMemory, resolvedSkills]);
|
|
2120
2153
|
const compressContext = useCallback5(async (messagesToCompress, model) => {
|
|
2121
2154
|
const conversationText = messagesToCompress.map((m) => `${m.role === "user" ? "\uC0AC\uC6A9\uC790" : "AI"}: ${m.content}`).join("\n\n");
|
|
2122
2155
|
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.
|
|
@@ -3121,42 +3154,14 @@ ${result.content}
|
|
|
3121
3154
|
if (activeChecklistRef.current) {
|
|
3122
3155
|
const checklist = activeChecklistRef.current;
|
|
3123
3156
|
const stepIndex = checklist.currentStep;
|
|
3124
|
-
|
|
3125
|
-
|
|
3126
|
-
|
|
3127
|
-
|
|
3128
|
-
|
|
3129
|
-
|
|
3130
|
-
|
|
3131
|
-
|
|
3132
|
-
const updatedItems = m.checklistBlock.items.map((it, idx) => ({
|
|
3133
|
-
...it,
|
|
3134
|
-
status: idx <= stepIndex ? "done" : it.status,
|
|
3135
|
-
result: idx === stepIndex ? accumulatedContent : it.result
|
|
3136
|
-
}));
|
|
3137
|
-
return {
|
|
3138
|
-
...m,
|
|
3139
|
-
checklistBlock: { ...m.checklistBlock, items: updatedItems, currentStep: stepIndex + 1 }
|
|
3140
|
-
};
|
|
3141
|
-
})
|
|
3142
|
-
};
|
|
3143
|
-
})
|
|
3144
|
-
);
|
|
3145
|
-
setSessions(
|
|
3146
|
-
(prev) => prev.map((s) => {
|
|
3147
|
-
if (s.id !== capturedSessionId) return s;
|
|
3148
|
-
return {
|
|
3149
|
-
...s,
|
|
3150
|
-
messages: s.messages.map((m) => {
|
|
3151
|
-
if (m.id !== assistantMessageId) return m;
|
|
3152
|
-
return { ...m, hidden: true };
|
|
3153
|
-
})
|
|
3154
|
-
};
|
|
3155
|
-
})
|
|
3156
|
-
);
|
|
3157
|
-
const nextStep = stepIndex + 1;
|
|
3158
|
-
if (nextStep < checklist.items.length) {
|
|
3159
|
-
checklist.currentStep = nextStep;
|
|
3157
|
+
const hasPollTag = /<poll[\s>]/i.test(accumulatedContent);
|
|
3158
|
+
if (hasPollTag && !checklist.waitingForPoll) {
|
|
3159
|
+
checklist.waitingForPoll = true;
|
|
3160
|
+
} else {
|
|
3161
|
+
if (checklist.waitingForPoll) {
|
|
3162
|
+
checklist.waitingForPoll = false;
|
|
3163
|
+
}
|
|
3164
|
+
checklist.stepResults.push(accumulatedContent);
|
|
3160
3165
|
setSessions(
|
|
3161
3166
|
(prev) => prev.map((s) => {
|
|
3162
3167
|
if (s.id !== checklist.sessionId) return s;
|
|
@@ -3166,21 +3171,87 @@ ${result.content}
|
|
|
3166
3171
|
if (m.id !== checklist.messageId || !m.checklistBlock) return m;
|
|
3167
3172
|
const updatedItems = m.checklistBlock.items.map((it, idx) => ({
|
|
3168
3173
|
...it,
|
|
3169
|
-
status: idx
|
|
3174
|
+
status: idx <= stepIndex ? "done" : it.status,
|
|
3175
|
+
result: idx === stepIndex ? accumulatedContent : it.result
|
|
3170
3176
|
}));
|
|
3171
3177
|
return {
|
|
3172
3178
|
...m,
|
|
3173
|
-
checklistBlock: { ...m.checklistBlock, items: updatedItems, currentStep:
|
|
3179
|
+
checklistBlock: { ...m.checklistBlock, items: updatedItems, currentStep: stepIndex + 1 }
|
|
3174
3180
|
};
|
|
3175
3181
|
})
|
|
3176
3182
|
};
|
|
3177
3183
|
})
|
|
3178
3184
|
);
|
|
3185
|
+
setSessions(
|
|
3186
|
+
(prev) => prev.map((s) => {
|
|
3187
|
+
if (s.id !== capturedSessionId) return s;
|
|
3188
|
+
return {
|
|
3189
|
+
...s,
|
|
3190
|
+
messages: s.messages.map((m) => {
|
|
3191
|
+
if (m.id !== assistantMessageId) return m;
|
|
3192
|
+
return { ...m, hidden: true };
|
|
3193
|
+
})
|
|
3194
|
+
};
|
|
3195
|
+
})
|
|
3196
|
+
);
|
|
3197
|
+
const nextStep = stepIndex + 1;
|
|
3198
|
+
if (nextStep < checklist.items.length) {
|
|
3199
|
+
checklist.currentStep = nextStep;
|
|
3200
|
+
setSessions(
|
|
3201
|
+
(prev) => prev.map((s) => {
|
|
3202
|
+
if (s.id !== checklist.sessionId) return s;
|
|
3203
|
+
return {
|
|
3204
|
+
...s,
|
|
3205
|
+
messages: s.messages.map((m) => {
|
|
3206
|
+
if (m.id !== checklist.messageId || !m.checklistBlock) return m;
|
|
3207
|
+
const updatedItems = m.checklistBlock.items.map((it, idx) => ({
|
|
3208
|
+
...it,
|
|
3209
|
+
status: idx === nextStep ? "in_progress" : it.status
|
|
3210
|
+
}));
|
|
3211
|
+
return {
|
|
3212
|
+
...m,
|
|
3213
|
+
checklistBlock: { ...m.checklistBlock, items: updatedItems, currentStep: nextStep }
|
|
3214
|
+
};
|
|
3215
|
+
})
|
|
3216
|
+
};
|
|
3217
|
+
})
|
|
3218
|
+
);
|
|
3219
|
+
skipNextChecklistParsingRef.current = true;
|
|
3220
|
+
setTimeout(() => {
|
|
3221
|
+
sendMessage(
|
|
3222
|
+
`\uCCB4\uD06C\uB9AC\uC2A4\uD2B8 ${nextStep + 1}/${checklist.items.length}\uB2E8\uACC4\uB97C \uC2E4\uD589\uD558\uC138\uC694: "${checklist.items[nextStep].title}".
|
|
3223
|
+
\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.`,
|
|
3224
|
+
{ hiddenUserMessage: true }
|
|
3225
|
+
);
|
|
3226
|
+
}, 100);
|
|
3227
|
+
saveMessagesOnEarlyReturn();
|
|
3228
|
+
setIsLoading(false);
|
|
3229
|
+
abortControllerRef.current = null;
|
|
3230
|
+
return;
|
|
3231
|
+
}
|
|
3232
|
+
const stepSummary = checklist.stepResults.map((r, i) => `### ${i + 1}. ${checklist.items[i].title}
|
|
3233
|
+
${r}`).join("\n\n");
|
|
3234
|
+
setSessions(
|
|
3235
|
+
(prev) => prev.map((s) => {
|
|
3236
|
+
if (s.id !== checklist.sessionId) return s;
|
|
3237
|
+
return {
|
|
3238
|
+
...s,
|
|
3239
|
+
messages: s.messages.map((m) => {
|
|
3240
|
+
if (m.id !== checklist.messageId || !m.checklistBlock) return m;
|
|
3241
|
+
return { ...m, checklistBlock: { ...m.checklistBlock, completed: true } };
|
|
3242
|
+
})
|
|
3243
|
+
};
|
|
3244
|
+
})
|
|
3245
|
+
);
|
|
3246
|
+
activeChecklistRef.current = null;
|
|
3179
3247
|
skipNextChecklistParsingRef.current = true;
|
|
3180
3248
|
setTimeout(() => {
|
|
3181
3249
|
sendMessage(
|
|
3182
|
-
`\uCCB4\uD06C\uB9AC\uC2A4\uD2B8
|
|
3183
|
-
|
|
3250
|
+
`\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:
|
|
3251
|
+
|
|
3252
|
+
${stepSummary}
|
|
3253
|
+
|
|
3254
|
+
\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.`,
|
|
3184
3255
|
{ hiddenUserMessage: true }
|
|
3185
3256
|
);
|
|
3186
3257
|
}, 100);
|
|
@@ -3189,36 +3260,6 @@ ${result.content}
|
|
|
3189
3260
|
abortControllerRef.current = null;
|
|
3190
3261
|
return;
|
|
3191
3262
|
}
|
|
3192
|
-
const stepSummary = checklist.stepResults.map((r, i) => `### ${i + 1}. ${checklist.items[i].title}
|
|
3193
|
-
${r}`).join("\n\n");
|
|
3194
|
-
setSessions(
|
|
3195
|
-
(prev) => prev.map((s) => {
|
|
3196
|
-
if (s.id !== checklist.sessionId) return s;
|
|
3197
|
-
return {
|
|
3198
|
-
...s,
|
|
3199
|
-
messages: s.messages.map((m) => {
|
|
3200
|
-
if (m.id !== checklist.messageId || !m.checklistBlock) return m;
|
|
3201
|
-
return { ...m, checklistBlock: { ...m.checklistBlock, completed: true } };
|
|
3202
|
-
})
|
|
3203
|
-
};
|
|
3204
|
-
})
|
|
3205
|
-
);
|
|
3206
|
-
activeChecklistRef.current = null;
|
|
3207
|
-
skipNextChecklistParsingRef.current = true;
|
|
3208
|
-
setTimeout(() => {
|
|
3209
|
-
sendMessage(
|
|
3210
|
-
`\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:
|
|
3211
|
-
|
|
3212
|
-
${stepSummary}
|
|
3213
|
-
|
|
3214
|
-
\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.`,
|
|
3215
|
-
{ hiddenUserMessage: true }
|
|
3216
|
-
);
|
|
3217
|
-
}, 100);
|
|
3218
|
-
saveMessagesOnEarlyReturn();
|
|
3219
|
-
setIsLoading(false);
|
|
3220
|
-
abortControllerRef.current = null;
|
|
3221
|
-
return;
|
|
3222
3263
|
}
|
|
3223
3264
|
if (!skipNextChecklistParsingRef.current) {
|
|
3224
3265
|
const { checklistBlock, cleanContent: checklistCleanContent } = parseChecklistFromContent(accumulatedContent);
|
|
@@ -3573,6 +3614,32 @@ ${allResults}
|
|
|
3573
3614
|
});
|
|
3574
3615
|
const hasValidResponses = formattedParts.length > 0;
|
|
3575
3616
|
const isAutoGenerate = responses.every((r) => r.skipped);
|
|
3617
|
+
if (activeChecklistRef.current?.waitingForPoll) {
|
|
3618
|
+
const checklist = activeChecklistRef.current;
|
|
3619
|
+
const stepTitle = checklist.items[checklist.currentStep]?.title || "";
|
|
3620
|
+
setSessions(
|
|
3621
|
+
(prev) => prev.map((s) => {
|
|
3622
|
+
if (s.id !== currentSessionId) return s;
|
|
3623
|
+
return {
|
|
3624
|
+
...s,
|
|
3625
|
+
messages: s.messages.map((m) => {
|
|
3626
|
+
if (m.id !== messageId) return m;
|
|
3627
|
+
return { ...m, pollBlock: void 0, hidden: true };
|
|
3628
|
+
})
|
|
3629
|
+
};
|
|
3630
|
+
})
|
|
3631
|
+
);
|
|
3632
|
+
skipNextPollParsingRef.current = true;
|
|
3633
|
+
skipNextChecklistParsingRef.current = true;
|
|
3634
|
+
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:
|
|
3635
|
+
${formattedParts.join("\n")}
|
|
3636
|
+
|
|
3637
|
+
\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.`;
|
|
3638
|
+
setTimeout(() => {
|
|
3639
|
+
sendMessage(hiddenPrompt2, { hiddenUserMessage: true });
|
|
3640
|
+
}, 100);
|
|
3641
|
+
return;
|
|
3642
|
+
}
|
|
3576
3643
|
setSessions(
|
|
3577
3644
|
(prev) => prev.map((s) => {
|
|
3578
3645
|
if (s.id !== currentSessionId) return s;
|