@gendive/chatllm 0.17.27 → 0.17.29
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.d.mts +43 -1
- package/dist/react/index.d.ts +43 -1
- package/dist/react/index.js +389 -79
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +387 -79
- package/dist/react/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/react/index.mjs
CHANGED
|
@@ -1684,6 +1684,8 @@ var useChatUI = (options) => {
|
|
|
1684
1684
|
deepResearch,
|
|
1685
1685
|
// Poll options
|
|
1686
1686
|
enablePoll = true,
|
|
1687
|
+
// Checklist options
|
|
1688
|
+
enableChecklist = true,
|
|
1687
1689
|
// Skills options
|
|
1688
1690
|
skills,
|
|
1689
1691
|
// Tool options
|
|
@@ -2049,9 +2051,40 @@ ${projectMemoryContext}`);
|
|
|
2049
2051
|
- \uAC01 \uC9C8\uBB38\uC740 \uC11C\uB85C \uB2E4\uB978 \uB0B4\uC6A9
|
|
2050
2052
|
- \uC635\uC158\uB9C8\uB2E4 \uC9E7\uC740 \uC124\uBA85 \uD3EC\uD568
|
|
2051
2053
|
- \uC0AC\uC6A9\uC790\uAC00 \uBAA8\uB450 \uC120\uD0DD \uD6C4 \uC9C4\uD589`);
|
|
2054
|
+
}
|
|
2055
|
+
if (enableChecklist) {
|
|
2056
|
+
parts.push("");
|
|
2057
|
+
parts.push(`## \uCCB4\uD06C\uB9AC\uC2A4\uD2B8 \uC790\uB3D9 \uC2E4\uD589 \uAE30\uB2A5
|
|
2058
|
+
|
|
2059
|
+
\uBCF5\uD569 \uC791\uC5C5(\uC870\uC0AC, \uBE44\uAD50 \uBD84\uC11D, \uB2E4\uB2E8\uACC4 \uC791\uC5C5)\uC744 \uC694\uCCAD\uBC1B\uC73C\uBA74 <checklist> \uD0DC\uADF8\uB85C \uC2E4\uD589 \uACC4\uD68D\uC744 \uC791\uC131\uD558\uC138\uC694.
|
|
2060
|
+
\uC2DC\uC2A4\uD15C\uC774 \uAC01 \uB2E8\uACC4\uB97C \uC790\uB3D9\uC73C\uB85C \uD558\uB098\uC529 \uC2E4\uD589\uD569\uB2C8\uB2E4.
|
|
2061
|
+
|
|
2062
|
+
**\uD615\uC2DD:**
|
|
2063
|
+
<checklist>
|
|
2064
|
+
<step>1\uB2E8\uACC4 \uC81C\uBAA9</step>
|
|
2065
|
+
<step>2\uB2E8\uACC4 \uC81C\uBAA9</step>
|
|
2066
|
+
<step>3\uB2E8\uACC4 \uC81C\uBAA9</step>
|
|
2067
|
+
</checklist>
|
|
2068
|
+
|
|
2069
|
+
**\uC608\uC2DC - "A\uC0AC\uC640 B\uC0AC \uBE44\uAD50 \uBD84\uC11D\uD574\uC918":**
|
|
2070
|
+
\uB124, \uBE44\uAD50 \uBD84\uC11D\uC744 \uC9C4\uD589\uD558\uACA0\uC2B5\uB2C8\uB2E4.
|
|
2071
|
+
|
|
2072
|
+
<checklist>
|
|
2073
|
+
<step>A\uC0AC \uC815\uBCF4 \uC870\uC0AC</step>
|
|
2074
|
+
<step>B\uC0AC \uC815\uBCF4 \uC870\uC0AC</step>
|
|
2075
|
+
<step>\uB450 \uD68C\uC0AC \uBE44\uAD50 \uBD84\uC11D\uD45C \uC791\uC131</step>
|
|
2076
|
+
<step>\uC885\uD569 \uACB0\uB860 \uBC0F \uCD94\uCC9C</step>
|
|
2077
|
+
</checklist>
|
|
2078
|
+
|
|
2079
|
+
**\uADDC\uCE59:**
|
|
2080
|
+
- 2~8\uB2E8\uACC4\uAC00 \uC801\uC808 (\uB108\uBB34 \uC801\uAC70\uB098 \uB9CE\uC73C\uBA74 \uC548 \uB428)
|
|
2081
|
+
- \uAC01 \uB2E8\uACC4\uB294 \uAD6C\uCCB4\uC801\uC774\uACE0 \uC2E4\uD589 \uAC00\uB2A5\uD55C \uC791\uC5C5
|
|
2082
|
+
- \uB2E8\uC21C \uC9C8\uBB38\uC774\uB098 \uD55C \uBC88\uC5D0 \uB2F5\uD560 \uC218 \uC788\uB294 \uC694\uCCAD\uC5D0\uB294 \uC0AC\uC6A9 \uAE08\uC9C0
|
|
2083
|
+
- <checklist> \uD0DC\uADF8 \uC55E\uC5D0 \uC9E7\uC740 \uC548\uB0B4 \uBA54\uC2DC\uC9C0\uB97C \uD3EC\uD568
|
|
2084
|
+
- \uAC80\uC0C9/\uC870\uC0AC, \uBE44\uAD50 \uBD84\uC11D, \uBCF4\uACE0\uC11C \uC791\uC131, \uB2E4\uB2E8\uACC4 \uC791\uC5C5\uC5D0 \uC801\uADF9 \uC0AC\uC6A9`);
|
|
2052
2085
|
}
|
|
2053
2086
|
return parts.length > 0 ? parts.join("\n") : "";
|
|
2054
|
-
}, [personalization, globalMemory, useGlobalMemoryEnabled, enablePoll, buildSkillsPrompt, enableProjects, projectHook.currentProject, projectMemory]);
|
|
2087
|
+
}, [personalization, globalMemory, useGlobalMemoryEnabled, enablePoll, enableChecklist, buildSkillsPrompt, enableProjects, projectHook.currentProject, projectMemory]);
|
|
2055
2088
|
const compressContext = useCallback5(async (messagesToCompress, model) => {
|
|
2056
2089
|
const conversationText = messagesToCompress.map((m) => `${m.role === "user" ? "\uC0AC\uC6A9\uC790" : "AI"}: ${m.content}`).join("\n\n");
|
|
2057
2090
|
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.
|
|
@@ -4079,7 +4112,13 @@ ${result.content}
|
|
|
4079
4112
|
/** @Todo vibecode - 체크리스트 error 항목 재시도 */
|
|
4080
4113
|
handleChecklistRetry,
|
|
4081
4114
|
/** @Todo vibecode - 체크리스트 pending 항목 건너뛰기 */
|
|
4082
|
-
handleChecklistSkip
|
|
4115
|
+
handleChecklistSkip,
|
|
4116
|
+
/** @Todo vibecode - 활성 체크리스트가 포함된 메시지 (패널 자동 열기 트리거용) */
|
|
4117
|
+
activeChecklistMessage: messages.find(
|
|
4118
|
+
(m) => m.checklistBlock && !m.checklistBlock.completed
|
|
4119
|
+
) || messages.find(
|
|
4120
|
+
(m) => m.checklistBlock?.completed
|
|
4121
|
+
) || null
|
|
4083
4122
|
};
|
|
4084
4123
|
};
|
|
4085
4124
|
|
|
@@ -8877,6 +8916,80 @@ var ChecklistCard = ({
|
|
|
8877
8916
|
}
|
|
8878
8917
|
);
|
|
8879
8918
|
};
|
|
8919
|
+
var ChecklistMiniIndicator = ({
|
|
8920
|
+
items,
|
|
8921
|
+
completed
|
|
8922
|
+
}) => {
|
|
8923
|
+
const doneCount = items.filter((it) => it.status === "done").length;
|
|
8924
|
+
const isRunning = items.some((it) => it.status === "in_progress");
|
|
8925
|
+
const hasError = items.some((it) => it.status === "error");
|
|
8926
|
+
const progressPercent = doneCount / items.length * 100;
|
|
8927
|
+
const statusText = completed ? "\uBAA8\uB4E0 \uB2E8\uACC4 \uC644\uB8CC" : hasError ? "\uC791\uC5C5 \uC911\uB2E8\uB428" : isRunning ? `\uC791\uC5C5 \uC9C4\uD589 \uC911 \xB7 ${doneCount}/${items.length}` : `\uB300\uAE30 \uC911 \xB7 ${doneCount}/${items.length}`;
|
|
8928
|
+
const statusColor = completed ? "var(--chatllm-success, #22c55e)" : hasError ? "var(--chatllm-error, #ef4444)" : "var(--chatllm-primary, #3584FA)";
|
|
8929
|
+
const barColor = completed ? "var(--chatllm-success, #22c55e)" : "var(--chatllm-primary, #3584FA)";
|
|
8930
|
+
return /* @__PURE__ */ jsxs14(
|
|
8931
|
+
"div",
|
|
8932
|
+
{
|
|
8933
|
+
style: {
|
|
8934
|
+
display: "flex",
|
|
8935
|
+
alignItems: "center",
|
|
8936
|
+
gap: "10px",
|
|
8937
|
+
padding: "10px 14px",
|
|
8938
|
+
border: "1px solid var(--chatllm-border, #e5e7eb)",
|
|
8939
|
+
borderRadius: "10px",
|
|
8940
|
+
backgroundColor: "var(--chatllm-content-bg, #fff)",
|
|
8941
|
+
marginTop: "8px"
|
|
8942
|
+
},
|
|
8943
|
+
children: [
|
|
8944
|
+
/* @__PURE__ */ jsx15(
|
|
8945
|
+
IconSvg,
|
|
8946
|
+
{
|
|
8947
|
+
name: completed ? "checkbox-circle-line" : "list-check",
|
|
8948
|
+
size: 16,
|
|
8949
|
+
color: statusColor
|
|
8950
|
+
}
|
|
8951
|
+
),
|
|
8952
|
+
/* @__PURE__ */ jsx15(
|
|
8953
|
+
"span",
|
|
8954
|
+
{
|
|
8955
|
+
style: {
|
|
8956
|
+
fontSize: "13px",
|
|
8957
|
+
fontWeight: 500,
|
|
8958
|
+
color: statusColor,
|
|
8959
|
+
whiteSpace: "nowrap"
|
|
8960
|
+
},
|
|
8961
|
+
children: statusText
|
|
8962
|
+
}
|
|
8963
|
+
),
|
|
8964
|
+
/* @__PURE__ */ jsx15(
|
|
8965
|
+
"div",
|
|
8966
|
+
{
|
|
8967
|
+
style: {
|
|
8968
|
+
flex: 1,
|
|
8969
|
+
height: "3px",
|
|
8970
|
+
backgroundColor: "var(--chatllm-bg-secondary, #f1f5f9)",
|
|
8971
|
+
borderRadius: "2px",
|
|
8972
|
+
overflow: "hidden",
|
|
8973
|
+
minWidth: "60px"
|
|
8974
|
+
},
|
|
8975
|
+
children: /* @__PURE__ */ jsx15(
|
|
8976
|
+
"div",
|
|
8977
|
+
{
|
|
8978
|
+
style: {
|
|
8979
|
+
height: "100%",
|
|
8980
|
+
width: `${progressPercent}%`,
|
|
8981
|
+
backgroundColor: barColor,
|
|
8982
|
+
borderRadius: "2px",
|
|
8983
|
+
transition: "width 0.6s cubic-bezier(0.25, 1, 0.5, 1)"
|
|
8984
|
+
}
|
|
8985
|
+
}
|
|
8986
|
+
)
|
|
8987
|
+
}
|
|
8988
|
+
)
|
|
8989
|
+
]
|
|
8990
|
+
}
|
|
8991
|
+
);
|
|
8992
|
+
};
|
|
8880
8993
|
|
|
8881
8994
|
// src/react/components/MessageBubble.tsx
|
|
8882
8995
|
import { jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
@@ -9234,14 +9347,10 @@ var MessageBubble = ({
|
|
|
9234
9347
|
}
|
|
9235
9348
|
),
|
|
9236
9349
|
message.checklistBlock && message.checklistBlock.items.length > 0 && /* @__PURE__ */ jsx16(
|
|
9237
|
-
|
|
9350
|
+
ChecklistMiniIndicator,
|
|
9238
9351
|
{
|
|
9239
9352
|
items: message.checklistBlock.items,
|
|
9240
|
-
|
|
9241
|
-
completed: message.checklistBlock.completed,
|
|
9242
|
-
onAbort: onChecklistAbort,
|
|
9243
|
-
onRetryStep: onChecklistRetry,
|
|
9244
|
-
onSkipStep: onChecklistSkip
|
|
9353
|
+
completed: message.checklistBlock.completed
|
|
9245
9354
|
}
|
|
9246
9355
|
),
|
|
9247
9356
|
!isLoading && !displayContent && !message.pollBlock && !message.checklistBlock && !message.contentParts?.length && /* @__PURE__ */ jsx16(
|
|
@@ -11059,8 +11168,169 @@ var DisclaimerModal = ({ isOpen, onClose }) => {
|
|
|
11059
11168
|
);
|
|
11060
11169
|
};
|
|
11061
11170
|
|
|
11062
|
-
// src/react/
|
|
11171
|
+
// src/react/components/ChecklistPanel.tsx
|
|
11063
11172
|
import { Fragment as Fragment8, jsx as jsx21, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
11173
|
+
var ChecklistPanel = ({
|
|
11174
|
+
message,
|
|
11175
|
+
isOpen,
|
|
11176
|
+
onClose,
|
|
11177
|
+
onAbort,
|
|
11178
|
+
onRetry,
|
|
11179
|
+
onSkip,
|
|
11180
|
+
width = 360,
|
|
11181
|
+
isMobileOverlay = false
|
|
11182
|
+
}) => {
|
|
11183
|
+
const block = message?.checklistBlock;
|
|
11184
|
+
if (isMobileOverlay) {
|
|
11185
|
+
return /* @__PURE__ */ jsxs20(Fragment8, { children: [
|
|
11186
|
+
/* @__PURE__ */ jsx21(
|
|
11187
|
+
"div",
|
|
11188
|
+
{
|
|
11189
|
+
onClick: onClose,
|
|
11190
|
+
style: {
|
|
11191
|
+
position: "fixed",
|
|
11192
|
+
inset: 0,
|
|
11193
|
+
backgroundColor: "rgba(0, 0, 0, 0.4)",
|
|
11194
|
+
zIndex: 999,
|
|
11195
|
+
opacity: isOpen ? 1 : 0,
|
|
11196
|
+
pointerEvents: isOpen ? "auto" : "none",
|
|
11197
|
+
transition: "opacity 0.3s ease"
|
|
11198
|
+
}
|
|
11199
|
+
}
|
|
11200
|
+
),
|
|
11201
|
+
/* @__PURE__ */ jsx21(
|
|
11202
|
+
"aside",
|
|
11203
|
+
{
|
|
11204
|
+
style: {
|
|
11205
|
+
position: "fixed",
|
|
11206
|
+
top: 0,
|
|
11207
|
+
right: 0,
|
|
11208
|
+
bottom: 0,
|
|
11209
|
+
width: "85vw",
|
|
11210
|
+
maxWidth: "400px",
|
|
11211
|
+
backgroundColor: "var(--chatllm-bg, #F5F5F5)",
|
|
11212
|
+
zIndex: 1e3,
|
|
11213
|
+
transform: isOpen ? "translateX(0)" : "translateX(100%)",
|
|
11214
|
+
transition: "transform 0.3s cubic-bezier(0.4, 0, 0.2, 1)",
|
|
11215
|
+
display: "flex",
|
|
11216
|
+
flexDirection: "column",
|
|
11217
|
+
boxShadow: isOpen ? "-4px 0 20px rgba(0, 0, 0, 0.1)" : "none"
|
|
11218
|
+
},
|
|
11219
|
+
children: renderPanelContent()
|
|
11220
|
+
}
|
|
11221
|
+
)
|
|
11222
|
+
] });
|
|
11223
|
+
}
|
|
11224
|
+
return /* @__PURE__ */ jsx21(
|
|
11225
|
+
"aside",
|
|
11226
|
+
{
|
|
11227
|
+
style: {
|
|
11228
|
+
width: isOpen ? typeof width === "number" ? `${width}px` : width : "0px",
|
|
11229
|
+
minWidth: 0,
|
|
11230
|
+
overflow: "hidden",
|
|
11231
|
+
transition: "width 0.3s cubic-bezier(0.4, 0, 0.2, 1)",
|
|
11232
|
+
borderLeft: isOpen ? "1px solid var(--chatllm-border, #e2e8f0)" : "none",
|
|
11233
|
+
backgroundColor: "var(--chatllm-bg, #F5F5F5)",
|
|
11234
|
+
display: "flex",
|
|
11235
|
+
flexDirection: "column",
|
|
11236
|
+
flexShrink: 0
|
|
11237
|
+
},
|
|
11238
|
+
children: isOpen && renderPanelContent()
|
|
11239
|
+
}
|
|
11240
|
+
);
|
|
11241
|
+
function renderPanelContent() {
|
|
11242
|
+
return /* @__PURE__ */ jsxs20(Fragment8, { children: [
|
|
11243
|
+
/* @__PURE__ */ jsxs20(
|
|
11244
|
+
"div",
|
|
11245
|
+
{
|
|
11246
|
+
style: {
|
|
11247
|
+
display: "flex",
|
|
11248
|
+
alignItems: "center",
|
|
11249
|
+
justifyContent: "space-between",
|
|
11250
|
+
padding: "16px",
|
|
11251
|
+
borderBottom: "1px solid var(--chatllm-border, #e2e8f0)",
|
|
11252
|
+
flexShrink: 0
|
|
11253
|
+
},
|
|
11254
|
+
children: [
|
|
11255
|
+
/* @__PURE__ */ jsxs20("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
|
|
11256
|
+
/* @__PURE__ */ jsx21(IconSvg, { name: "list-check", size: 18, color: "var(--chatllm-primary, #3584FA)" }),
|
|
11257
|
+
/* @__PURE__ */ jsx21(
|
|
11258
|
+
"span",
|
|
11259
|
+
{
|
|
11260
|
+
style: {
|
|
11261
|
+
fontSize: "14px",
|
|
11262
|
+
fontWeight: 600,
|
|
11263
|
+
color: "var(--chatllm-text, #1e293b)"
|
|
11264
|
+
},
|
|
11265
|
+
children: "\uCCB4\uD06C\uB9AC\uC2A4\uD2B8"
|
|
11266
|
+
}
|
|
11267
|
+
)
|
|
11268
|
+
] }),
|
|
11269
|
+
/* @__PURE__ */ jsx21(
|
|
11270
|
+
"button",
|
|
11271
|
+
{
|
|
11272
|
+
onClick: onClose,
|
|
11273
|
+
"aria-label": "\uD328\uB110 \uB2EB\uAE30",
|
|
11274
|
+
style: {
|
|
11275
|
+
width: "28px",
|
|
11276
|
+
height: "28px",
|
|
11277
|
+
display: "flex",
|
|
11278
|
+
alignItems: "center",
|
|
11279
|
+
justifyContent: "center",
|
|
11280
|
+
borderRadius: "6px",
|
|
11281
|
+
border: "none",
|
|
11282
|
+
backgroundColor: "transparent",
|
|
11283
|
+
cursor: "pointer",
|
|
11284
|
+
color: "var(--chatllm-text-muted, #94a3b8)",
|
|
11285
|
+
transition: "background-color 0.15s ease"
|
|
11286
|
+
},
|
|
11287
|
+
children: /* @__PURE__ */ jsx21(IconSvg, { name: "close-line", size: 18, color: "currentColor" })
|
|
11288
|
+
}
|
|
11289
|
+
)
|
|
11290
|
+
]
|
|
11291
|
+
}
|
|
11292
|
+
),
|
|
11293
|
+
/* @__PURE__ */ jsx21(
|
|
11294
|
+
"div",
|
|
11295
|
+
{
|
|
11296
|
+
className: "chatllm-scrollbar",
|
|
11297
|
+
style: {
|
|
11298
|
+
flex: 1,
|
|
11299
|
+
overflowY: "auto",
|
|
11300
|
+
padding: "16px"
|
|
11301
|
+
},
|
|
11302
|
+
children: block && block.items.length > 0 ? /* @__PURE__ */ jsx21(
|
|
11303
|
+
ChecklistCard,
|
|
11304
|
+
{
|
|
11305
|
+
items: block.items,
|
|
11306
|
+
currentStep: block.currentStep,
|
|
11307
|
+
completed: block.completed,
|
|
11308
|
+
onAbort,
|
|
11309
|
+
onRetryStep: onRetry,
|
|
11310
|
+
onSkipStep: onSkip
|
|
11311
|
+
}
|
|
11312
|
+
) : /* @__PURE__ */ jsx21(
|
|
11313
|
+
"div",
|
|
11314
|
+
{
|
|
11315
|
+
style: {
|
|
11316
|
+
display: "flex",
|
|
11317
|
+
alignItems: "center",
|
|
11318
|
+
justifyContent: "center",
|
|
11319
|
+
height: "100%",
|
|
11320
|
+
color: "var(--chatllm-text-muted, #94a3b8)",
|
|
11321
|
+
fontSize: "13px"
|
|
11322
|
+
},
|
|
11323
|
+
children: "\uCCB4\uD06C\uB9AC\uC2A4\uD2B8\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4"
|
|
11324
|
+
}
|
|
11325
|
+
)
|
|
11326
|
+
}
|
|
11327
|
+
)
|
|
11328
|
+
] });
|
|
11329
|
+
}
|
|
11330
|
+
};
|
|
11331
|
+
|
|
11332
|
+
// src/react/ChatUI.tsx
|
|
11333
|
+
import { Fragment as Fragment9, jsx as jsx22, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
11064
11334
|
var DEFAULT_ACTIONS = [];
|
|
11065
11335
|
var DEFAULT_TEMPLATES = [];
|
|
11066
11336
|
var DEFAULT_MODELS = [
|
|
@@ -11399,9 +11669,33 @@ var ChatUIView = ({
|
|
|
11399
11669
|
// Checklist
|
|
11400
11670
|
handleChecklistAbort,
|
|
11401
11671
|
handleChecklistRetry,
|
|
11402
|
-
handleChecklistSkip
|
|
11672
|
+
handleChecklistSkip,
|
|
11673
|
+
activeChecklistMessage
|
|
11403
11674
|
} = state;
|
|
11404
11675
|
const [disclaimerOpen, setDisclaimerOpen] = React16.useState(false);
|
|
11676
|
+
const [isMobile, setIsMobile] = React16.useState(false);
|
|
11677
|
+
React16.useEffect(() => {
|
|
11678
|
+
if (typeof window === "undefined") return;
|
|
11679
|
+
const check = () => setIsMobile(window.innerWidth < 768);
|
|
11680
|
+
check();
|
|
11681
|
+
window.addEventListener("resize", check);
|
|
11682
|
+
return () => window.removeEventListener("resize", check);
|
|
11683
|
+
}, []);
|
|
11684
|
+
const [checklistPanelDismissed, setChecklistPanelDismissed] = React16.useState(false);
|
|
11685
|
+
const isChecklistPanelOpen = !!activeChecklistMessage && !checklistPanelDismissed;
|
|
11686
|
+
const prevChecklistIdRef = React16.useRef(void 0);
|
|
11687
|
+
React16.useEffect(() => {
|
|
11688
|
+
const currentId = activeChecklistMessage?.checklistBlock?.id;
|
|
11689
|
+
if (currentId && currentId !== prevChecklistIdRef.current && !activeChecklistMessage?.checklistBlock?.completed) {
|
|
11690
|
+
setChecklistPanelDismissed(false);
|
|
11691
|
+
}
|
|
11692
|
+
prevChecklistIdRef.current = currentId;
|
|
11693
|
+
}, [activeChecklistMessage?.checklistBlock?.id, activeChecklistMessage?.checklistBlock?.completed]);
|
|
11694
|
+
React16.useEffect(() => {
|
|
11695
|
+
if (!activeChecklistMessage?.checklistBlock?.completed) return;
|
|
11696
|
+
const timer = setTimeout(() => setChecklistPanelDismissed(true), 2e3);
|
|
11697
|
+
return () => clearTimeout(timer);
|
|
11698
|
+
}, [activeChecklistMessage?.checklistBlock?.completed]);
|
|
11405
11699
|
const [welcomeExiting, setWelcomeExiting] = React16.useState(false);
|
|
11406
11700
|
const prevMessageCountRef = React16.useRef(messages.length);
|
|
11407
11701
|
React16.useEffect(() => {
|
|
@@ -11457,7 +11751,7 @@ var ChatUIView = ({
|
|
|
11457
11751
|
return items;
|
|
11458
11752
|
}, [projectMemory?.state.entries]);
|
|
11459
11753
|
const themeClass = theme?.mode === "dark" ? "chatllm-dark" : "";
|
|
11460
|
-
return /* @__PURE__ */
|
|
11754
|
+
return /* @__PURE__ */ jsxs21(
|
|
11461
11755
|
"div",
|
|
11462
11756
|
{
|
|
11463
11757
|
className: `chatllm-root ${themeClass} ${className}`,
|
|
@@ -11470,7 +11764,7 @@ var ChatUIView = ({
|
|
|
11470
11764
|
position: "relative"
|
|
11471
11765
|
},
|
|
11472
11766
|
children: [
|
|
11473
|
-
showSidebar && /* @__PURE__ */
|
|
11767
|
+
showSidebar && /* @__PURE__ */ jsx22(
|
|
11474
11768
|
ChatSidebar,
|
|
11475
11769
|
{
|
|
11476
11770
|
sessions,
|
|
@@ -11502,7 +11796,7 @@ var ChatUIView = ({
|
|
|
11502
11796
|
isLoading: isSessionsLoading
|
|
11503
11797
|
}
|
|
11504
11798
|
),
|
|
11505
|
-
/* @__PURE__ */
|
|
11799
|
+
/* @__PURE__ */ jsxs21(
|
|
11506
11800
|
"main",
|
|
11507
11801
|
{
|
|
11508
11802
|
style: {
|
|
@@ -11514,7 +11808,7 @@ var ChatUIView = ({
|
|
|
11514
11808
|
minWidth: 0
|
|
11515
11809
|
},
|
|
11516
11810
|
children: [
|
|
11517
|
-
/* @__PURE__ */
|
|
11811
|
+
/* @__PURE__ */ jsx22(
|
|
11518
11812
|
ChatHeader,
|
|
11519
11813
|
{
|
|
11520
11814
|
title: currentSession?.title || "\uC0C8 \uB300\uD654",
|
|
@@ -11528,7 +11822,7 @@ var ChatUIView = ({
|
|
|
11528
11822
|
showSettings
|
|
11529
11823
|
}
|
|
11530
11824
|
),
|
|
11531
|
-
(messages.length === 0 || welcomeExiting) && /* @__PURE__ */
|
|
11825
|
+
(messages.length === 0 || welcomeExiting) && /* @__PURE__ */ jsxs21(
|
|
11532
11826
|
"div",
|
|
11533
11827
|
{
|
|
11534
11828
|
style: {
|
|
@@ -11543,7 +11837,7 @@ var ChatUIView = ({
|
|
|
11543
11837
|
pointerEvents: welcomeExiting ? "none" : "auto"
|
|
11544
11838
|
},
|
|
11545
11839
|
children: [
|
|
11546
|
-
/* @__PURE__ */
|
|
11840
|
+
/* @__PURE__ */ jsx22(
|
|
11547
11841
|
"h1",
|
|
11548
11842
|
{
|
|
11549
11843
|
style: {
|
|
@@ -11557,7 +11851,7 @@ var ChatUIView = ({
|
|
|
11557
11851
|
children: greeting ? `${greeting} \u273A` : "\u273A \uBB34\uC5C7\uC744 \uC0DD\uAC01\uD574 \uBCFC\uAE4C\uC694?"
|
|
11558
11852
|
}
|
|
11559
11853
|
),
|
|
11560
|
-
/* @__PURE__ */
|
|
11854
|
+
/* @__PURE__ */ jsx22("div", { style: { width: "100%", maxWidth: "680px" }, children: /* @__PURE__ */ jsx22(
|
|
11561
11855
|
ChatInput,
|
|
11562
11856
|
{
|
|
11563
11857
|
value: input,
|
|
@@ -11585,7 +11879,7 @@ var ChatUIView = ({
|
|
|
11585
11879
|
inline: true
|
|
11586
11880
|
}
|
|
11587
11881
|
) }),
|
|
11588
|
-
suggestedPrompts && suggestedPrompts.length > 0 && /* @__PURE__ */
|
|
11882
|
+
suggestedPrompts && suggestedPrompts.length > 0 && /* @__PURE__ */ jsx22(
|
|
11589
11883
|
"div",
|
|
11590
11884
|
{
|
|
11591
11885
|
style: {
|
|
@@ -11595,7 +11889,7 @@ var ChatUIView = ({
|
|
|
11595
11889
|
justifyContent: "center",
|
|
11596
11890
|
maxWidth: "680px"
|
|
11597
11891
|
},
|
|
11598
|
-
children: suggestedPrompts.map((sp) => /* @__PURE__ */
|
|
11892
|
+
children: suggestedPrompts.map((sp) => /* @__PURE__ */ jsxs21(
|
|
11599
11893
|
"button",
|
|
11600
11894
|
{
|
|
11601
11895
|
onClick: () => setInput(sp.prompt),
|
|
@@ -11614,7 +11908,7 @@ var ChatUIView = ({
|
|
|
11614
11908
|
transition: "all 0.2s"
|
|
11615
11909
|
},
|
|
11616
11910
|
children: [
|
|
11617
|
-
sp.icon && /* @__PURE__ */
|
|
11911
|
+
sp.icon && /* @__PURE__ */ jsx22(IconSvg, { name: sp.icon, size: 16, color: "var(--chatllm-text-muted)" }),
|
|
11618
11912
|
sp.label
|
|
11619
11913
|
]
|
|
11620
11914
|
},
|
|
@@ -11625,8 +11919,8 @@ var ChatUIView = ({
|
|
|
11625
11919
|
]
|
|
11626
11920
|
}
|
|
11627
11921
|
),
|
|
11628
|
-
messages.length > 0 && /* @__PURE__ */
|
|
11629
|
-
/* @__PURE__ */
|
|
11922
|
+
messages.length > 0 && /* @__PURE__ */ jsxs21(Fragment9, { children: [
|
|
11923
|
+
/* @__PURE__ */ jsx22(
|
|
11630
11924
|
MessageList,
|
|
11631
11925
|
{
|
|
11632
11926
|
messages,
|
|
@@ -11651,7 +11945,7 @@ var ChatUIView = ({
|
|
|
11651
11945
|
onChecklistSkip: handleChecklistSkip
|
|
11652
11946
|
}
|
|
11653
11947
|
),
|
|
11654
|
-
/* @__PURE__ */
|
|
11948
|
+
/* @__PURE__ */ jsx22(
|
|
11655
11949
|
ChatInput,
|
|
11656
11950
|
{
|
|
11657
11951
|
value: input,
|
|
@@ -11682,7 +11976,19 @@ var ChatUIView = ({
|
|
|
11682
11976
|
]
|
|
11683
11977
|
}
|
|
11684
11978
|
),
|
|
11685
|
-
|
|
11979
|
+
/* @__PURE__ */ jsx22(
|
|
11980
|
+
ChecklistPanel,
|
|
11981
|
+
{
|
|
11982
|
+
message: activeChecklistMessage,
|
|
11983
|
+
isOpen: isChecklistPanelOpen,
|
|
11984
|
+
onClose: () => setChecklistPanelDismissed(true),
|
|
11985
|
+
onAbort: handleChecklistAbort,
|
|
11986
|
+
onRetry: activeChecklistMessage ? (stepIndex) => handleChecklistRetry(activeChecklistMessage.id, stepIndex) : void 0,
|
|
11987
|
+
onSkip: activeChecklistMessage ? (stepIndex) => handleChecklistSkip(activeChecklistMessage.id, stepIndex) : void 0,
|
|
11988
|
+
isMobileOverlay: isMobile
|
|
11989
|
+
}
|
|
11990
|
+
),
|
|
11991
|
+
showSettings && /* @__PURE__ */ jsx22(
|
|
11686
11992
|
SettingsModal,
|
|
11687
11993
|
{
|
|
11688
11994
|
isOpen: settingsOpen,
|
|
@@ -11709,7 +12015,7 @@ var ChatUIView = ({
|
|
|
11709
12015
|
currentProjectTitle: currentProject?.title
|
|
11710
12016
|
}
|
|
11711
12017
|
),
|
|
11712
|
-
/* @__PURE__ */
|
|
12018
|
+
/* @__PURE__ */ jsx22(
|
|
11713
12019
|
ProjectSettingsModal,
|
|
11714
12020
|
{
|
|
11715
12021
|
isOpen: projectSettingsOpen,
|
|
@@ -11721,7 +12027,7 @@ var ChatUIView = ({
|
|
|
11721
12027
|
onDeleteProject: deleteProject
|
|
11722
12028
|
}
|
|
11723
12029
|
),
|
|
11724
|
-
/* @__PURE__ */
|
|
12030
|
+
/* @__PURE__ */ jsx22(DisclaimerModal, { isOpen: disclaimerOpen, onClose: () => setDisclaimerOpen(false) })
|
|
11725
12031
|
]
|
|
11726
12032
|
}
|
|
11727
12033
|
);
|
|
@@ -11824,7 +12130,7 @@ var ChatUIWithHook = ({
|
|
|
11824
12130
|
onDeleteProjectFile
|
|
11825
12131
|
};
|
|
11826
12132
|
const state = useChatUI(hookOptions);
|
|
11827
|
-
return /* @__PURE__ */
|
|
12133
|
+
return /* @__PURE__ */ jsx22(
|
|
11828
12134
|
ChatUIView,
|
|
11829
12135
|
{
|
|
11830
12136
|
state,
|
|
@@ -11872,7 +12178,7 @@ var ChatUI = (props) => {
|
|
|
11872
12178
|
deepResearch,
|
|
11873
12179
|
suggestedPrompts: chatStateSuggestedPrompts
|
|
11874
12180
|
} = props;
|
|
11875
|
-
return /* @__PURE__ */
|
|
12181
|
+
return /* @__PURE__ */ jsx22(
|
|
11876
12182
|
ChatUIView,
|
|
11877
12183
|
{
|
|
11878
12184
|
state: props.chatState,
|
|
@@ -11897,7 +12203,7 @@ var ChatUI = (props) => {
|
|
|
11897
12203
|
}
|
|
11898
12204
|
);
|
|
11899
12205
|
}
|
|
11900
|
-
return /* @__PURE__ */
|
|
12206
|
+
return /* @__PURE__ */ jsx22(ChatUIWithHook, { ...props });
|
|
11901
12207
|
};
|
|
11902
12208
|
|
|
11903
12209
|
// src/react/hooks/useDeepResearch.ts
|
|
@@ -12215,7 +12521,7 @@ var useDeepResearch = (options) => {
|
|
|
12215
12521
|
};
|
|
12216
12522
|
|
|
12217
12523
|
// src/react/components/EmptyState.tsx
|
|
12218
|
-
import { jsx as
|
|
12524
|
+
import { jsx as jsx23, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
12219
12525
|
var EmptyState = ({
|
|
12220
12526
|
greeting,
|
|
12221
12527
|
templates = [],
|
|
@@ -12233,7 +12539,7 @@ var EmptyState = ({
|
|
|
12233
12539
|
return iconMap[icon] || "sparkling-line";
|
|
12234
12540
|
};
|
|
12235
12541
|
const hasContent = actions.length > 0 || templates.length > 0;
|
|
12236
|
-
return /* @__PURE__ */
|
|
12542
|
+
return /* @__PURE__ */ jsxs22(
|
|
12237
12543
|
"div",
|
|
12238
12544
|
{
|
|
12239
12545
|
className: "chatllm-empty-state",
|
|
@@ -12248,7 +12554,7 @@ var EmptyState = ({
|
|
|
12248
12554
|
textAlign: "center"
|
|
12249
12555
|
},
|
|
12250
12556
|
children: [
|
|
12251
|
-
/* @__PURE__ */
|
|
12557
|
+
/* @__PURE__ */ jsx23(
|
|
12252
12558
|
"div",
|
|
12253
12559
|
{
|
|
12254
12560
|
className: "chatllm-sheet",
|
|
@@ -12262,10 +12568,10 @@ var EmptyState = ({
|
|
|
12262
12568
|
marginBottom: "32px",
|
|
12263
12569
|
color: "var(--chatllm-primary)"
|
|
12264
12570
|
},
|
|
12265
|
-
children: /* @__PURE__ */
|
|
12571
|
+
children: /* @__PURE__ */ jsx23(IconSvg, { name: "chat-1-line", size: 40 })
|
|
12266
12572
|
}
|
|
12267
12573
|
),
|
|
12268
|
-
/* @__PURE__ */
|
|
12574
|
+
/* @__PURE__ */ jsx23(
|
|
12269
12575
|
"h1",
|
|
12270
12576
|
{
|
|
12271
12577
|
style: {
|
|
@@ -12278,7 +12584,7 @@ var EmptyState = ({
|
|
|
12278
12584
|
children: "How can I help you today?"
|
|
12279
12585
|
}
|
|
12280
12586
|
),
|
|
12281
|
-
(actions.length > 0 || templates.length > 0) && /* @__PURE__ */
|
|
12587
|
+
(actions.length > 0 || templates.length > 0) && /* @__PURE__ */ jsxs22(
|
|
12282
12588
|
"div",
|
|
12283
12589
|
{
|
|
12284
12590
|
style: {
|
|
@@ -12290,7 +12596,7 @@ var EmptyState = ({
|
|
|
12290
12596
|
marginBottom: "48px"
|
|
12291
12597
|
},
|
|
12292
12598
|
children: [
|
|
12293
|
-
actions.map((action) => /* @__PURE__ */
|
|
12599
|
+
actions.map((action) => /* @__PURE__ */ jsxs22(
|
|
12294
12600
|
"button",
|
|
12295
12601
|
{
|
|
12296
12602
|
onClick: () => onActionSelect?.(action),
|
|
@@ -12304,7 +12610,7 @@ var EmptyState = ({
|
|
|
12304
12610
|
fontWeight: 500
|
|
12305
12611
|
},
|
|
12306
12612
|
children: [
|
|
12307
|
-
/* @__PURE__ */
|
|
12613
|
+
/* @__PURE__ */ jsx23(
|
|
12308
12614
|
IconSvg,
|
|
12309
12615
|
{
|
|
12310
12616
|
name: getActionIcon(action.icon),
|
|
@@ -12317,7 +12623,7 @@ var EmptyState = ({
|
|
|
12317
12623
|
},
|
|
12318
12624
|
action.id
|
|
12319
12625
|
)),
|
|
12320
|
-
templates.slice(0, 4).map((template) => /* @__PURE__ */
|
|
12626
|
+
templates.slice(0, 4).map((template) => /* @__PURE__ */ jsxs22(
|
|
12321
12627
|
"button",
|
|
12322
12628
|
{
|
|
12323
12629
|
onClick: () => onTemplateClick(template),
|
|
@@ -12331,7 +12637,7 @@ var EmptyState = ({
|
|
|
12331
12637
|
fontWeight: 500
|
|
12332
12638
|
},
|
|
12333
12639
|
children: [
|
|
12334
|
-
/* @__PURE__ */
|
|
12640
|
+
/* @__PURE__ */ jsx23(
|
|
12335
12641
|
IconSvg,
|
|
12336
12642
|
{
|
|
12337
12643
|
name: "sparkling-line",
|
|
@@ -12354,7 +12660,7 @@ var EmptyState = ({
|
|
|
12354
12660
|
|
|
12355
12661
|
// src/react/components/MemoryPanel.tsx
|
|
12356
12662
|
import { useState as useState20 } from "react";
|
|
12357
|
-
import { jsx as
|
|
12663
|
+
import { jsx as jsx24, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
12358
12664
|
var categoryLabels = {
|
|
12359
12665
|
fact: "\uC0AC\uC6A9\uC790 \uC815\uBCF4",
|
|
12360
12666
|
skill: "\uC804\uBB38 \uBD84\uC57C/\uAE30\uC220",
|
|
@@ -12386,7 +12692,7 @@ var MemoryPanel = ({
|
|
|
12386
12692
|
});
|
|
12387
12693
|
};
|
|
12388
12694
|
if (!isOpen) {
|
|
12389
|
-
return /* @__PURE__ */
|
|
12695
|
+
return /* @__PURE__ */ jsx24(
|
|
12390
12696
|
"button",
|
|
12391
12697
|
{
|
|
12392
12698
|
onClick: onToggle,
|
|
@@ -12406,11 +12712,11 @@ var MemoryPanel = ({
|
|
|
12406
12712
|
justifyContent: "center",
|
|
12407
12713
|
zIndex: 100
|
|
12408
12714
|
},
|
|
12409
|
-
children: /* @__PURE__ */
|
|
12715
|
+
children: /* @__PURE__ */ jsx24(IconSvg, { name: "robot-line", size: 24, color: "#ffffff" })
|
|
12410
12716
|
}
|
|
12411
12717
|
);
|
|
12412
12718
|
}
|
|
12413
|
-
return /* @__PURE__ */
|
|
12719
|
+
return /* @__PURE__ */ jsxs23(
|
|
12414
12720
|
"div",
|
|
12415
12721
|
{
|
|
12416
12722
|
className: "chatllm-memory-panel",
|
|
@@ -12430,7 +12736,7 @@ var MemoryPanel = ({
|
|
|
12430
12736
|
zIndex: 100
|
|
12431
12737
|
},
|
|
12432
12738
|
children: [
|
|
12433
|
-
/* @__PURE__ */
|
|
12739
|
+
/* @__PURE__ */ jsxs23(
|
|
12434
12740
|
"div",
|
|
12435
12741
|
{
|
|
12436
12742
|
style: {
|
|
@@ -12441,8 +12747,8 @@ var MemoryPanel = ({
|
|
|
12441
12747
|
borderBottom: "1px solid var(--chatllm-border, #e5e7eb)"
|
|
12442
12748
|
},
|
|
12443
12749
|
children: [
|
|
12444
|
-
/* @__PURE__ */
|
|
12445
|
-
/* @__PURE__ */
|
|
12750
|
+
/* @__PURE__ */ jsxs23("div", { style: { display: "flex", alignItems: "center", gap: "10px" }, children: [
|
|
12751
|
+
/* @__PURE__ */ jsx24(
|
|
12446
12752
|
"div",
|
|
12447
12753
|
{
|
|
12448
12754
|
style: {
|
|
@@ -12454,19 +12760,19 @@ var MemoryPanel = ({
|
|
|
12454
12760
|
alignItems: "center",
|
|
12455
12761
|
justifyContent: "center"
|
|
12456
12762
|
},
|
|
12457
|
-
children: /* @__PURE__ */
|
|
12763
|
+
children: /* @__PURE__ */ jsx24(IconSvg, { name: "robot-line", size: 18, color: "var(--chatllm-primary, #3584FA)" })
|
|
12458
12764
|
}
|
|
12459
12765
|
),
|
|
12460
|
-
/* @__PURE__ */
|
|
12461
|
-
/* @__PURE__ */
|
|
12462
|
-
/* @__PURE__ */
|
|
12766
|
+
/* @__PURE__ */ jsxs23("div", { children: [
|
|
12767
|
+
/* @__PURE__ */ jsx24("div", { style: { fontSize: "15px", fontWeight: 600, color: "var(--chatllm-text, #1f2937)" }, children: "AI \uBA54\uBAA8\uB9AC" }),
|
|
12768
|
+
/* @__PURE__ */ jsxs23("div", { style: { fontSize: "12px", color: "var(--chatllm-text-muted, #9ca3af)" }, children: [
|
|
12463
12769
|
items.length,
|
|
12464
12770
|
"\uAC1C \uD56D\uBAA9"
|
|
12465
12771
|
] })
|
|
12466
12772
|
] })
|
|
12467
12773
|
] }),
|
|
12468
|
-
/* @__PURE__ */
|
|
12469
|
-
onClearAll && items.length > 0 && /* @__PURE__ */
|
|
12774
|
+
/* @__PURE__ */ jsxs23("div", { style: { display: "flex", gap: "4px" }, children: [
|
|
12775
|
+
onClearAll && items.length > 0 && /* @__PURE__ */ jsx24(
|
|
12470
12776
|
"button",
|
|
12471
12777
|
{
|
|
12472
12778
|
onClick: onClearAll,
|
|
@@ -12478,10 +12784,10 @@ var MemoryPanel = ({
|
|
|
12478
12784
|
cursor: "pointer"
|
|
12479
12785
|
},
|
|
12480
12786
|
title: "\uC804\uCCB4 \uC0AD\uC81C",
|
|
12481
|
-
children: /* @__PURE__ */
|
|
12787
|
+
children: /* @__PURE__ */ jsx24(IconSvg, { name: "delete-bin-line", size: 18, color: "var(--chatllm-text-muted, #9ca3af)" })
|
|
12482
12788
|
}
|
|
12483
12789
|
),
|
|
12484
|
-
/* @__PURE__ */
|
|
12790
|
+
/* @__PURE__ */ jsx24(
|
|
12485
12791
|
"button",
|
|
12486
12792
|
{
|
|
12487
12793
|
onClick: onToggle,
|
|
@@ -12492,14 +12798,14 @@ var MemoryPanel = ({
|
|
|
12492
12798
|
borderRadius: "8px",
|
|
12493
12799
|
cursor: "pointer"
|
|
12494
12800
|
},
|
|
12495
|
-
children: /* @__PURE__ */
|
|
12801
|
+
children: /* @__PURE__ */ jsx24(IconSvg, { name: "close-line", size: 18, color: "var(--chatllm-text-muted, #9ca3af)" })
|
|
12496
12802
|
}
|
|
12497
12803
|
)
|
|
12498
12804
|
] })
|
|
12499
12805
|
]
|
|
12500
12806
|
}
|
|
12501
12807
|
),
|
|
12502
|
-
/* @__PURE__ */
|
|
12808
|
+
/* @__PURE__ */ jsx24(
|
|
12503
12809
|
"div",
|
|
12504
12810
|
{
|
|
12505
12811
|
style: {
|
|
@@ -12509,7 +12815,7 @@ var MemoryPanel = ({
|
|
|
12509
12815
|
borderBottom: "1px solid var(--chatllm-border-light, #f3f4f6)",
|
|
12510
12816
|
overflowX: "auto"
|
|
12511
12817
|
},
|
|
12512
|
-
children: ["all", "fact", "skill", "preference"].map((tab) => /* @__PURE__ */
|
|
12818
|
+
children: ["all", "fact", "skill", "preference"].map((tab) => /* @__PURE__ */ jsx24(
|
|
12513
12819
|
"button",
|
|
12514
12820
|
{
|
|
12515
12821
|
onClick: () => setActiveTab(tab),
|
|
@@ -12530,8 +12836,8 @@ var MemoryPanel = ({
|
|
|
12530
12836
|
))
|
|
12531
12837
|
}
|
|
12532
12838
|
),
|
|
12533
|
-
/* @__PURE__ */
|
|
12534
|
-
contextSummary && activeTab === "all" && /* @__PURE__ */
|
|
12839
|
+
/* @__PURE__ */ jsxs23("div", { style: { flex: 1, overflow: "auto", padding: "12px" }, children: [
|
|
12840
|
+
contextSummary && activeTab === "all" && /* @__PURE__ */ jsxs23(
|
|
12535
12841
|
"div",
|
|
12536
12842
|
{
|
|
12537
12843
|
style: {
|
|
@@ -12542,7 +12848,7 @@ var MemoryPanel = ({
|
|
|
12542
12848
|
borderLeft: "3px solid var(--chatllm-primary, #3584FA)"
|
|
12543
12849
|
},
|
|
12544
12850
|
children: [
|
|
12545
|
-
/* @__PURE__ */
|
|
12851
|
+
/* @__PURE__ */ jsxs23(
|
|
12546
12852
|
"div",
|
|
12547
12853
|
{
|
|
12548
12854
|
style: {
|
|
@@ -12552,12 +12858,12 @@ var MemoryPanel = ({
|
|
|
12552
12858
|
marginBottom: "8px"
|
|
12553
12859
|
},
|
|
12554
12860
|
children: [
|
|
12555
|
-
/* @__PURE__ */
|
|
12556
|
-
/* @__PURE__ */
|
|
12861
|
+
/* @__PURE__ */ jsx24(IconSvg, { name: "file-text-line", size: 14, color: "var(--chatllm-primary, #3584FA)" }),
|
|
12862
|
+
/* @__PURE__ */ jsx24("span", { style: { fontSize: "12px", fontWeight: 500, color: "var(--chatllm-primary, #3584FA)" }, children: "\uB300\uD654 \uC694\uC57D" })
|
|
12557
12863
|
]
|
|
12558
12864
|
}
|
|
12559
12865
|
),
|
|
12560
|
-
/* @__PURE__ */
|
|
12866
|
+
/* @__PURE__ */ jsx24(
|
|
12561
12867
|
"p",
|
|
12562
12868
|
{
|
|
12563
12869
|
style: {
|
|
@@ -12572,7 +12878,7 @@ var MemoryPanel = ({
|
|
|
12572
12878
|
]
|
|
12573
12879
|
}
|
|
12574
12880
|
),
|
|
12575
|
-
filteredItems.length === 0 ? /* @__PURE__ */
|
|
12881
|
+
filteredItems.length === 0 ? /* @__PURE__ */ jsxs23(
|
|
12576
12882
|
"div",
|
|
12577
12883
|
{
|
|
12578
12884
|
style: {
|
|
@@ -12581,11 +12887,11 @@ var MemoryPanel = ({
|
|
|
12581
12887
|
color: "var(--chatllm-text-muted, #9ca3af)"
|
|
12582
12888
|
},
|
|
12583
12889
|
children: [
|
|
12584
|
-
/* @__PURE__ */
|
|
12585
|
-
/* @__PURE__ */
|
|
12890
|
+
/* @__PURE__ */ jsx24(IconSvg, { name: "robot-line", size: 32, color: "var(--chatllm-text-muted, #d1d5db)" }),
|
|
12891
|
+
/* @__PURE__ */ jsx24("p", { style: { fontSize: "14px", marginTop: "12px" }, children: "\uC800\uC7A5\uB41C \uBA54\uBAA8\uB9AC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4" })
|
|
12586
12892
|
]
|
|
12587
12893
|
}
|
|
12588
|
-
) : /* @__PURE__ */
|
|
12894
|
+
) : /* @__PURE__ */ jsx24("div", { style: { display: "flex", flexDirection: "column", gap: "8px" }, children: filteredItems.map((item) => /* @__PURE__ */ jsxs23(
|
|
12589
12895
|
"div",
|
|
12590
12896
|
{
|
|
12591
12897
|
style: {
|
|
@@ -12598,10 +12904,10 @@ var MemoryPanel = ({
|
|
|
12598
12904
|
},
|
|
12599
12905
|
onClick: () => setExpandedId(expandedId === item.id ? null : item.id),
|
|
12600
12906
|
children: [
|
|
12601
|
-
/* @__PURE__ */
|
|
12602
|
-
/* @__PURE__ */
|
|
12603
|
-
/* @__PURE__ */
|
|
12604
|
-
item.category && /* @__PURE__ */
|
|
12907
|
+
/* @__PURE__ */ jsxs23("div", { style: { display: "flex", alignItems: "flex-start", justifyContent: "space-between" }, children: [
|
|
12908
|
+
/* @__PURE__ */ jsxs23("div", { style: { flex: 1, minWidth: 0 }, children: [
|
|
12909
|
+
/* @__PURE__ */ jsxs23("div", { style: { display: "flex", alignItems: "center", gap: "8px", marginBottom: "4px" }, children: [
|
|
12910
|
+
item.category && /* @__PURE__ */ jsx24(
|
|
12605
12911
|
"span",
|
|
12606
12912
|
{
|
|
12607
12913
|
style: {
|
|
@@ -12615,9 +12921,9 @@ var MemoryPanel = ({
|
|
|
12615
12921
|
children: categoryLabels[item.category]
|
|
12616
12922
|
}
|
|
12617
12923
|
),
|
|
12618
|
-
/* @__PURE__ */
|
|
12924
|
+
/* @__PURE__ */ jsx24("span", { style: { fontSize: "11px", color: "var(--chatllm-text-muted, #9ca3af)" }, children: formatDate(item.timestamp) })
|
|
12619
12925
|
] }),
|
|
12620
|
-
/* @__PURE__ */
|
|
12926
|
+
/* @__PURE__ */ jsx24(
|
|
12621
12927
|
"div",
|
|
12622
12928
|
{
|
|
12623
12929
|
style: {
|
|
@@ -12629,8 +12935,8 @@ var MemoryPanel = ({
|
|
|
12629
12935
|
}
|
|
12630
12936
|
)
|
|
12631
12937
|
] }),
|
|
12632
|
-
/* @__PURE__ */
|
|
12633
|
-
onDelete && /* @__PURE__ */
|
|
12938
|
+
/* @__PURE__ */ jsxs23("div", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
|
|
12939
|
+
onDelete && /* @__PURE__ */ jsx24(
|
|
12634
12940
|
"button",
|
|
12635
12941
|
{
|
|
12636
12942
|
onClick: (e) => {
|
|
@@ -12645,10 +12951,10 @@ var MemoryPanel = ({
|
|
|
12645
12951
|
cursor: "pointer",
|
|
12646
12952
|
opacity: 0.5
|
|
12647
12953
|
},
|
|
12648
|
-
children: /* @__PURE__ */
|
|
12954
|
+
children: /* @__PURE__ */ jsx24(IconSvg, { name: "delete-bin-line", size: 14, color: "var(--chatllm-text-muted, #9ca3af)" })
|
|
12649
12955
|
}
|
|
12650
12956
|
),
|
|
12651
|
-
/* @__PURE__ */
|
|
12957
|
+
/* @__PURE__ */ jsx24(
|
|
12652
12958
|
IconSvg,
|
|
12653
12959
|
{
|
|
12654
12960
|
name: expandedId === item.id ? "arrow-up-s-line" : "arrow-down-s-line",
|
|
@@ -12658,7 +12964,7 @@ var MemoryPanel = ({
|
|
|
12658
12964
|
)
|
|
12659
12965
|
] })
|
|
12660
12966
|
] }),
|
|
12661
|
-
expandedId === item.id && /* @__PURE__ */
|
|
12967
|
+
expandedId === item.id && /* @__PURE__ */ jsx24(
|
|
12662
12968
|
"div",
|
|
12663
12969
|
{
|
|
12664
12970
|
style: {
|
|
@@ -12666,7 +12972,7 @@ var MemoryPanel = ({
|
|
|
12666
12972
|
paddingTop: "12px",
|
|
12667
12973
|
borderTop: "1px solid var(--chatllm-border-light, #f3f4f6)"
|
|
12668
12974
|
},
|
|
12669
|
-
children: /* @__PURE__ */
|
|
12975
|
+
children: /* @__PURE__ */ jsx24(
|
|
12670
12976
|
"p",
|
|
12671
12977
|
{
|
|
12672
12978
|
style: {
|
|
@@ -12696,6 +13002,8 @@ export {
|
|
|
12696
13002
|
ChatSidebar,
|
|
12697
13003
|
ChatUI,
|
|
12698
13004
|
ChecklistCard,
|
|
13005
|
+
ChecklistMiniIndicator,
|
|
13006
|
+
ChecklistPanel,
|
|
12699
13007
|
ContentPartRenderer,
|
|
12700
13008
|
DEFAULT_PROJECT_ID,
|
|
12701
13009
|
DEFAULT_PROJECT_TITLE,
|