@gendive/chatllm 0.17.26 → 0.17.28
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 +38 -1
- package/dist/react/index.d.ts +38 -1
- package/dist/react/index.js +374 -78
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +372 -78
- package/dist/react/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/react/index.js
CHANGED
|
@@ -35,6 +35,8 @@ __export(index_exports, {
|
|
|
35
35
|
ChatSidebar: () => ChatSidebar,
|
|
36
36
|
ChatUI: () => ChatUI,
|
|
37
37
|
ChecklistCard: () => ChecklistCard,
|
|
38
|
+
ChecklistMiniIndicator: () => ChecklistMiniIndicator,
|
|
39
|
+
ChecklistPanel: () => ChecklistPanel,
|
|
38
40
|
ContentPartRenderer: () => ContentPartRenderer,
|
|
39
41
|
DEFAULT_PROJECT_ID: () => DEFAULT_PROJECT_ID,
|
|
40
42
|
DEFAULT_PROJECT_TITLE: () => DEFAULT_PROJECT_TITLE,
|
|
@@ -2893,7 +2895,26 @@ ${attachmentContext}
|
|
|
2893
2895
|
};
|
|
2894
2896
|
if (!shouldSkipSkillParsing) {
|
|
2895
2897
|
const assistantContent = accumulatedContent;
|
|
2898
|
+
console.log("[useChatUI] Post-processing \u2014 accumulatedContent \uAE38\uC774:", assistantContent.length, ", skill_use \uD3EC\uD568:", assistantContent.includes("<skill_use"));
|
|
2896
2899
|
const { skillCall: detectedSkill, cleanContent: skillCleanContent } = parseSkillCallFromContent(assistantContent);
|
|
2900
|
+
if (detectedSkill) {
|
|
2901
|
+
console.log("[useChatUI] \uC2A4\uD0AC \uAC10\uC9C0:", detectedSkill.name, ", resolvedSkills \uD0A4:", Object.keys(resolvedSkills));
|
|
2902
|
+
}
|
|
2903
|
+
if (detectedSkill && !resolvedSkills[detectedSkill.name]) {
|
|
2904
|
+
console.warn(`[useChatUI] \uC2A4\uD0AC "${detectedSkill.name}" \uAC10\uC9C0\uB418\uC5C8\uC73C\uB098 \uBBF8\uB4F1\uB85D. \uB4F1\uB85D\uB41C \uC2A4\uD0AC:`, Object.keys(resolvedSkills));
|
|
2905
|
+
setSessions(
|
|
2906
|
+
(prev) => prev.map((s) => {
|
|
2907
|
+
if (s.id !== capturedSessionId) return s;
|
|
2908
|
+
return {
|
|
2909
|
+
...s,
|
|
2910
|
+
messages: s.messages.map((m) => {
|
|
2911
|
+
if (m.id !== assistantMessageId) return m;
|
|
2912
|
+
return { ...m, content: skillCleanContent };
|
|
2913
|
+
})
|
|
2914
|
+
};
|
|
2915
|
+
})
|
|
2916
|
+
);
|
|
2917
|
+
}
|
|
2897
2918
|
if (detectedSkill && resolvedSkills[detectedSkill.name]) {
|
|
2898
2919
|
setSessions(
|
|
2899
2920
|
(prev) => prev.map((s) => {
|
|
@@ -4127,7 +4148,13 @@ ${result.content}
|
|
|
4127
4148
|
/** @Todo vibecode - 체크리스트 error 항목 재시도 */
|
|
4128
4149
|
handleChecklistRetry,
|
|
4129
4150
|
/** @Todo vibecode - 체크리스트 pending 항목 건너뛰기 */
|
|
4130
|
-
handleChecklistSkip
|
|
4151
|
+
handleChecklistSkip,
|
|
4152
|
+
/** @Todo vibecode - 활성 체크리스트가 포함된 메시지 (패널 자동 열기 트리거용) */
|
|
4153
|
+
activeChecklistMessage: messages.find(
|
|
4154
|
+
(m) => m.checklistBlock && !m.checklistBlock.completed
|
|
4155
|
+
) || messages.find(
|
|
4156
|
+
(m) => m.checklistBlock?.completed
|
|
4157
|
+
) || null
|
|
4131
4158
|
};
|
|
4132
4159
|
};
|
|
4133
4160
|
|
|
@@ -8925,6 +8952,80 @@ var ChecklistCard = ({
|
|
|
8925
8952
|
}
|
|
8926
8953
|
);
|
|
8927
8954
|
};
|
|
8955
|
+
var ChecklistMiniIndicator = ({
|
|
8956
|
+
items,
|
|
8957
|
+
completed
|
|
8958
|
+
}) => {
|
|
8959
|
+
const doneCount = items.filter((it) => it.status === "done").length;
|
|
8960
|
+
const isRunning = items.some((it) => it.status === "in_progress");
|
|
8961
|
+
const hasError = items.some((it) => it.status === "error");
|
|
8962
|
+
const progressPercent = doneCount / items.length * 100;
|
|
8963
|
+
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}`;
|
|
8964
|
+
const statusColor = completed ? "var(--chatllm-success, #22c55e)" : hasError ? "var(--chatllm-error, #ef4444)" : "var(--chatllm-primary, #3584FA)";
|
|
8965
|
+
const barColor = completed ? "var(--chatllm-success, #22c55e)" : "var(--chatllm-primary, #3584FA)";
|
|
8966
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
8967
|
+
"div",
|
|
8968
|
+
{
|
|
8969
|
+
style: {
|
|
8970
|
+
display: "flex",
|
|
8971
|
+
alignItems: "center",
|
|
8972
|
+
gap: "10px",
|
|
8973
|
+
padding: "10px 14px",
|
|
8974
|
+
border: "1px solid var(--chatllm-border, #e5e7eb)",
|
|
8975
|
+
borderRadius: "10px",
|
|
8976
|
+
backgroundColor: "var(--chatllm-content-bg, #fff)",
|
|
8977
|
+
marginTop: "8px"
|
|
8978
|
+
},
|
|
8979
|
+
children: [
|
|
8980
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
8981
|
+
IconSvg,
|
|
8982
|
+
{
|
|
8983
|
+
name: completed ? "checkbox-circle-line" : "list-check",
|
|
8984
|
+
size: 16,
|
|
8985
|
+
color: statusColor
|
|
8986
|
+
}
|
|
8987
|
+
),
|
|
8988
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
8989
|
+
"span",
|
|
8990
|
+
{
|
|
8991
|
+
style: {
|
|
8992
|
+
fontSize: "13px",
|
|
8993
|
+
fontWeight: 500,
|
|
8994
|
+
color: statusColor,
|
|
8995
|
+
whiteSpace: "nowrap"
|
|
8996
|
+
},
|
|
8997
|
+
children: statusText
|
|
8998
|
+
}
|
|
8999
|
+
),
|
|
9000
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
9001
|
+
"div",
|
|
9002
|
+
{
|
|
9003
|
+
style: {
|
|
9004
|
+
flex: 1,
|
|
9005
|
+
height: "3px",
|
|
9006
|
+
backgroundColor: "var(--chatllm-bg-secondary, #f1f5f9)",
|
|
9007
|
+
borderRadius: "2px",
|
|
9008
|
+
overflow: "hidden",
|
|
9009
|
+
minWidth: "60px"
|
|
9010
|
+
},
|
|
9011
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
9012
|
+
"div",
|
|
9013
|
+
{
|
|
9014
|
+
style: {
|
|
9015
|
+
height: "100%",
|
|
9016
|
+
width: `${progressPercent}%`,
|
|
9017
|
+
backgroundColor: barColor,
|
|
9018
|
+
borderRadius: "2px",
|
|
9019
|
+
transition: "width 0.6s cubic-bezier(0.25, 1, 0.5, 1)"
|
|
9020
|
+
}
|
|
9021
|
+
}
|
|
9022
|
+
)
|
|
9023
|
+
}
|
|
9024
|
+
)
|
|
9025
|
+
]
|
|
9026
|
+
}
|
|
9027
|
+
);
|
|
9028
|
+
};
|
|
8928
9029
|
|
|
8929
9030
|
// src/react/components/MessageBubble.tsx
|
|
8930
9031
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
@@ -9282,14 +9383,10 @@ var MessageBubble = ({
|
|
|
9282
9383
|
}
|
|
9283
9384
|
),
|
|
9284
9385
|
message.checklistBlock && message.checklistBlock.items.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
9285
|
-
|
|
9386
|
+
ChecklistMiniIndicator,
|
|
9286
9387
|
{
|
|
9287
9388
|
items: message.checklistBlock.items,
|
|
9288
|
-
|
|
9289
|
-
completed: message.checklistBlock.completed,
|
|
9290
|
-
onAbort: onChecklistAbort,
|
|
9291
|
-
onRetryStep: onChecklistRetry,
|
|
9292
|
-
onSkipStep: onChecklistSkip
|
|
9389
|
+
completed: message.checklistBlock.completed
|
|
9293
9390
|
}
|
|
9294
9391
|
),
|
|
9295
9392
|
!isLoading && !displayContent && !message.pollBlock && !message.checklistBlock && !message.contentParts?.length && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
@@ -11107,8 +11204,169 @@ var DisclaimerModal = ({ isOpen, onClose }) => {
|
|
|
11107
11204
|
);
|
|
11108
11205
|
};
|
|
11109
11206
|
|
|
11110
|
-
// src/react/
|
|
11207
|
+
// src/react/components/ChecklistPanel.tsx
|
|
11111
11208
|
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
11209
|
+
var ChecklistPanel = ({
|
|
11210
|
+
message,
|
|
11211
|
+
isOpen,
|
|
11212
|
+
onClose,
|
|
11213
|
+
onAbort,
|
|
11214
|
+
onRetry,
|
|
11215
|
+
onSkip,
|
|
11216
|
+
width = 360,
|
|
11217
|
+
isMobileOverlay = false
|
|
11218
|
+
}) => {
|
|
11219
|
+
const block = message?.checklistBlock;
|
|
11220
|
+
if (isMobileOverlay) {
|
|
11221
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_jsx_runtime21.Fragment, { children: [
|
|
11222
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
11223
|
+
"div",
|
|
11224
|
+
{
|
|
11225
|
+
onClick: onClose,
|
|
11226
|
+
style: {
|
|
11227
|
+
position: "fixed",
|
|
11228
|
+
inset: 0,
|
|
11229
|
+
backgroundColor: "rgba(0, 0, 0, 0.4)",
|
|
11230
|
+
zIndex: 999,
|
|
11231
|
+
opacity: isOpen ? 1 : 0,
|
|
11232
|
+
pointerEvents: isOpen ? "auto" : "none",
|
|
11233
|
+
transition: "opacity 0.3s ease"
|
|
11234
|
+
}
|
|
11235
|
+
}
|
|
11236
|
+
),
|
|
11237
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
11238
|
+
"aside",
|
|
11239
|
+
{
|
|
11240
|
+
style: {
|
|
11241
|
+
position: "fixed",
|
|
11242
|
+
top: 0,
|
|
11243
|
+
right: 0,
|
|
11244
|
+
bottom: 0,
|
|
11245
|
+
width: "85vw",
|
|
11246
|
+
maxWidth: "400px",
|
|
11247
|
+
backgroundColor: "var(--chatllm-bg, #F5F5F5)",
|
|
11248
|
+
zIndex: 1e3,
|
|
11249
|
+
transform: isOpen ? "translateX(0)" : "translateX(100%)",
|
|
11250
|
+
transition: "transform 0.3s cubic-bezier(0.4, 0, 0.2, 1)",
|
|
11251
|
+
display: "flex",
|
|
11252
|
+
flexDirection: "column",
|
|
11253
|
+
boxShadow: isOpen ? "-4px 0 20px rgba(0, 0, 0, 0.1)" : "none"
|
|
11254
|
+
},
|
|
11255
|
+
children: renderPanelContent()
|
|
11256
|
+
}
|
|
11257
|
+
)
|
|
11258
|
+
] });
|
|
11259
|
+
}
|
|
11260
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
11261
|
+
"aside",
|
|
11262
|
+
{
|
|
11263
|
+
style: {
|
|
11264
|
+
width: isOpen ? typeof width === "number" ? `${width}px` : width : "0px",
|
|
11265
|
+
minWidth: 0,
|
|
11266
|
+
overflow: "hidden",
|
|
11267
|
+
transition: "width 0.3s cubic-bezier(0.4, 0, 0.2, 1)",
|
|
11268
|
+
borderLeft: isOpen ? "1px solid var(--chatllm-border, #e2e8f0)" : "none",
|
|
11269
|
+
backgroundColor: "var(--chatllm-bg, #F5F5F5)",
|
|
11270
|
+
display: "flex",
|
|
11271
|
+
flexDirection: "column",
|
|
11272
|
+
flexShrink: 0
|
|
11273
|
+
},
|
|
11274
|
+
children: isOpen && renderPanelContent()
|
|
11275
|
+
}
|
|
11276
|
+
);
|
|
11277
|
+
function renderPanelContent() {
|
|
11278
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_jsx_runtime21.Fragment, { children: [
|
|
11279
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
11280
|
+
"div",
|
|
11281
|
+
{
|
|
11282
|
+
style: {
|
|
11283
|
+
display: "flex",
|
|
11284
|
+
alignItems: "center",
|
|
11285
|
+
justifyContent: "space-between",
|
|
11286
|
+
padding: "16px",
|
|
11287
|
+
borderBottom: "1px solid var(--chatllm-border, #e2e8f0)",
|
|
11288
|
+
flexShrink: 0
|
|
11289
|
+
},
|
|
11290
|
+
children: [
|
|
11291
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
|
|
11292
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(IconSvg, { name: "list-check", size: 18, color: "var(--chatllm-primary, #3584FA)" }),
|
|
11293
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
11294
|
+
"span",
|
|
11295
|
+
{
|
|
11296
|
+
style: {
|
|
11297
|
+
fontSize: "14px",
|
|
11298
|
+
fontWeight: 600,
|
|
11299
|
+
color: "var(--chatllm-text, #1e293b)"
|
|
11300
|
+
},
|
|
11301
|
+
children: "\uCCB4\uD06C\uB9AC\uC2A4\uD2B8"
|
|
11302
|
+
}
|
|
11303
|
+
)
|
|
11304
|
+
] }),
|
|
11305
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
11306
|
+
"button",
|
|
11307
|
+
{
|
|
11308
|
+
onClick: onClose,
|
|
11309
|
+
"aria-label": "\uD328\uB110 \uB2EB\uAE30",
|
|
11310
|
+
style: {
|
|
11311
|
+
width: "28px",
|
|
11312
|
+
height: "28px",
|
|
11313
|
+
display: "flex",
|
|
11314
|
+
alignItems: "center",
|
|
11315
|
+
justifyContent: "center",
|
|
11316
|
+
borderRadius: "6px",
|
|
11317
|
+
border: "none",
|
|
11318
|
+
backgroundColor: "transparent",
|
|
11319
|
+
cursor: "pointer",
|
|
11320
|
+
color: "var(--chatllm-text-muted, #94a3b8)",
|
|
11321
|
+
transition: "background-color 0.15s ease"
|
|
11322
|
+
},
|
|
11323
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(IconSvg, { name: "close-line", size: 18, color: "currentColor" })
|
|
11324
|
+
}
|
|
11325
|
+
)
|
|
11326
|
+
]
|
|
11327
|
+
}
|
|
11328
|
+
),
|
|
11329
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
11330
|
+
"div",
|
|
11331
|
+
{
|
|
11332
|
+
className: "chatllm-scrollbar",
|
|
11333
|
+
style: {
|
|
11334
|
+
flex: 1,
|
|
11335
|
+
overflowY: "auto",
|
|
11336
|
+
padding: "16px"
|
|
11337
|
+
},
|
|
11338
|
+
children: block && block.items.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
11339
|
+
ChecklistCard,
|
|
11340
|
+
{
|
|
11341
|
+
items: block.items,
|
|
11342
|
+
currentStep: block.currentStep,
|
|
11343
|
+
completed: block.completed,
|
|
11344
|
+
onAbort,
|
|
11345
|
+
onRetryStep: onRetry,
|
|
11346
|
+
onSkipStep: onSkip
|
|
11347
|
+
}
|
|
11348
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
11349
|
+
"div",
|
|
11350
|
+
{
|
|
11351
|
+
style: {
|
|
11352
|
+
display: "flex",
|
|
11353
|
+
alignItems: "center",
|
|
11354
|
+
justifyContent: "center",
|
|
11355
|
+
height: "100%",
|
|
11356
|
+
color: "var(--chatllm-text-muted, #94a3b8)",
|
|
11357
|
+
fontSize: "13px"
|
|
11358
|
+
},
|
|
11359
|
+
children: "\uCCB4\uD06C\uB9AC\uC2A4\uD2B8\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4"
|
|
11360
|
+
}
|
|
11361
|
+
)
|
|
11362
|
+
}
|
|
11363
|
+
)
|
|
11364
|
+
] });
|
|
11365
|
+
}
|
|
11366
|
+
};
|
|
11367
|
+
|
|
11368
|
+
// src/react/ChatUI.tsx
|
|
11369
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
11112
11370
|
var DEFAULT_ACTIONS = [];
|
|
11113
11371
|
var DEFAULT_TEMPLATES = [];
|
|
11114
11372
|
var DEFAULT_MODELS = [
|
|
@@ -11447,9 +11705,33 @@ var ChatUIView = ({
|
|
|
11447
11705
|
// Checklist
|
|
11448
11706
|
handleChecklistAbort,
|
|
11449
11707
|
handleChecklistRetry,
|
|
11450
|
-
handleChecklistSkip
|
|
11708
|
+
handleChecklistSkip,
|
|
11709
|
+
activeChecklistMessage
|
|
11451
11710
|
} = state;
|
|
11452
11711
|
const [disclaimerOpen, setDisclaimerOpen] = import_react21.default.useState(false);
|
|
11712
|
+
const [isMobile, setIsMobile] = import_react21.default.useState(false);
|
|
11713
|
+
import_react21.default.useEffect(() => {
|
|
11714
|
+
if (typeof window === "undefined") return;
|
|
11715
|
+
const check = () => setIsMobile(window.innerWidth < 768);
|
|
11716
|
+
check();
|
|
11717
|
+
window.addEventListener("resize", check);
|
|
11718
|
+
return () => window.removeEventListener("resize", check);
|
|
11719
|
+
}, []);
|
|
11720
|
+
const [checklistPanelDismissed, setChecklistPanelDismissed] = import_react21.default.useState(false);
|
|
11721
|
+
const isChecklistPanelOpen = !!activeChecklistMessage && !checklistPanelDismissed;
|
|
11722
|
+
const prevChecklistIdRef = import_react21.default.useRef(void 0);
|
|
11723
|
+
import_react21.default.useEffect(() => {
|
|
11724
|
+
const currentId = activeChecklistMessage?.checklistBlock?.id;
|
|
11725
|
+
if (currentId && currentId !== prevChecklistIdRef.current && !activeChecklistMessage?.checklistBlock?.completed) {
|
|
11726
|
+
setChecklistPanelDismissed(false);
|
|
11727
|
+
}
|
|
11728
|
+
prevChecklistIdRef.current = currentId;
|
|
11729
|
+
}, [activeChecklistMessage?.checklistBlock?.id, activeChecklistMessage?.checklistBlock?.completed]);
|
|
11730
|
+
import_react21.default.useEffect(() => {
|
|
11731
|
+
if (!activeChecklistMessage?.checklistBlock?.completed) return;
|
|
11732
|
+
const timer = setTimeout(() => setChecklistPanelDismissed(true), 2e3);
|
|
11733
|
+
return () => clearTimeout(timer);
|
|
11734
|
+
}, [activeChecklistMessage?.checklistBlock?.completed]);
|
|
11453
11735
|
const [welcomeExiting, setWelcomeExiting] = import_react21.default.useState(false);
|
|
11454
11736
|
const prevMessageCountRef = import_react21.default.useRef(messages.length);
|
|
11455
11737
|
import_react21.default.useEffect(() => {
|
|
@@ -11505,7 +11787,7 @@ var ChatUIView = ({
|
|
|
11505
11787
|
return items;
|
|
11506
11788
|
}, [projectMemory?.state.entries]);
|
|
11507
11789
|
const themeClass = theme?.mode === "dark" ? "chatllm-dark" : "";
|
|
11508
|
-
return /* @__PURE__ */ (0,
|
|
11790
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
11509
11791
|
"div",
|
|
11510
11792
|
{
|
|
11511
11793
|
className: `chatllm-root ${themeClass} ${className}`,
|
|
@@ -11518,7 +11800,7 @@ var ChatUIView = ({
|
|
|
11518
11800
|
position: "relative"
|
|
11519
11801
|
},
|
|
11520
11802
|
children: [
|
|
11521
|
-
showSidebar && /* @__PURE__ */ (0,
|
|
11803
|
+
showSidebar && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
11522
11804
|
ChatSidebar,
|
|
11523
11805
|
{
|
|
11524
11806
|
sessions,
|
|
@@ -11550,7 +11832,7 @@ var ChatUIView = ({
|
|
|
11550
11832
|
isLoading: isSessionsLoading
|
|
11551
11833
|
}
|
|
11552
11834
|
),
|
|
11553
|
-
/* @__PURE__ */ (0,
|
|
11835
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
11554
11836
|
"main",
|
|
11555
11837
|
{
|
|
11556
11838
|
style: {
|
|
@@ -11562,7 +11844,7 @@ var ChatUIView = ({
|
|
|
11562
11844
|
minWidth: 0
|
|
11563
11845
|
},
|
|
11564
11846
|
children: [
|
|
11565
|
-
/* @__PURE__ */ (0,
|
|
11847
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
11566
11848
|
ChatHeader,
|
|
11567
11849
|
{
|
|
11568
11850
|
title: currentSession?.title || "\uC0C8 \uB300\uD654",
|
|
@@ -11576,7 +11858,7 @@ var ChatUIView = ({
|
|
|
11576
11858
|
showSettings
|
|
11577
11859
|
}
|
|
11578
11860
|
),
|
|
11579
|
-
(messages.length === 0 || welcomeExiting) && /* @__PURE__ */ (0,
|
|
11861
|
+
(messages.length === 0 || welcomeExiting) && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
11580
11862
|
"div",
|
|
11581
11863
|
{
|
|
11582
11864
|
style: {
|
|
@@ -11591,7 +11873,7 @@ var ChatUIView = ({
|
|
|
11591
11873
|
pointerEvents: welcomeExiting ? "none" : "auto"
|
|
11592
11874
|
},
|
|
11593
11875
|
children: [
|
|
11594
|
-
/* @__PURE__ */ (0,
|
|
11876
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
11595
11877
|
"h1",
|
|
11596
11878
|
{
|
|
11597
11879
|
style: {
|
|
@@ -11605,7 +11887,7 @@ var ChatUIView = ({
|
|
|
11605
11887
|
children: greeting ? `${greeting} \u273A` : "\u273A \uBB34\uC5C7\uC744 \uC0DD\uAC01\uD574 \uBCFC\uAE4C\uC694?"
|
|
11606
11888
|
}
|
|
11607
11889
|
),
|
|
11608
|
-
/* @__PURE__ */ (0,
|
|
11890
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { style: { width: "100%", maxWidth: "680px" }, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
11609
11891
|
ChatInput,
|
|
11610
11892
|
{
|
|
11611
11893
|
value: input,
|
|
@@ -11633,7 +11915,7 @@ var ChatUIView = ({
|
|
|
11633
11915
|
inline: true
|
|
11634
11916
|
}
|
|
11635
11917
|
) }),
|
|
11636
|
-
suggestedPrompts && suggestedPrompts.length > 0 && /* @__PURE__ */ (0,
|
|
11918
|
+
suggestedPrompts && suggestedPrompts.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
11637
11919
|
"div",
|
|
11638
11920
|
{
|
|
11639
11921
|
style: {
|
|
@@ -11643,7 +11925,7 @@ var ChatUIView = ({
|
|
|
11643
11925
|
justifyContent: "center",
|
|
11644
11926
|
maxWidth: "680px"
|
|
11645
11927
|
},
|
|
11646
|
-
children: suggestedPrompts.map((sp) => /* @__PURE__ */ (0,
|
|
11928
|
+
children: suggestedPrompts.map((sp) => /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
11647
11929
|
"button",
|
|
11648
11930
|
{
|
|
11649
11931
|
onClick: () => setInput(sp.prompt),
|
|
@@ -11662,7 +11944,7 @@ var ChatUIView = ({
|
|
|
11662
11944
|
transition: "all 0.2s"
|
|
11663
11945
|
},
|
|
11664
11946
|
children: [
|
|
11665
|
-
sp.icon && /* @__PURE__ */ (0,
|
|
11947
|
+
sp.icon && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(IconSvg, { name: sp.icon, size: 16, color: "var(--chatllm-text-muted)" }),
|
|
11666
11948
|
sp.label
|
|
11667
11949
|
]
|
|
11668
11950
|
},
|
|
@@ -11673,8 +11955,8 @@ var ChatUIView = ({
|
|
|
11673
11955
|
]
|
|
11674
11956
|
}
|
|
11675
11957
|
),
|
|
11676
|
-
messages.length > 0 && /* @__PURE__ */ (0,
|
|
11677
|
-
/* @__PURE__ */ (0,
|
|
11958
|
+
messages.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_jsx_runtime22.Fragment, { children: [
|
|
11959
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
11678
11960
|
MessageList,
|
|
11679
11961
|
{
|
|
11680
11962
|
messages,
|
|
@@ -11699,7 +11981,7 @@ var ChatUIView = ({
|
|
|
11699
11981
|
onChecklistSkip: handleChecklistSkip
|
|
11700
11982
|
}
|
|
11701
11983
|
),
|
|
11702
|
-
/* @__PURE__ */ (0,
|
|
11984
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
11703
11985
|
ChatInput,
|
|
11704
11986
|
{
|
|
11705
11987
|
value: input,
|
|
@@ -11730,7 +12012,19 @@ var ChatUIView = ({
|
|
|
11730
12012
|
]
|
|
11731
12013
|
}
|
|
11732
12014
|
),
|
|
11733
|
-
|
|
12015
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
12016
|
+
ChecklistPanel,
|
|
12017
|
+
{
|
|
12018
|
+
message: activeChecklistMessage,
|
|
12019
|
+
isOpen: isChecklistPanelOpen,
|
|
12020
|
+
onClose: () => setChecklistPanelDismissed(true),
|
|
12021
|
+
onAbort: handleChecklistAbort,
|
|
12022
|
+
onRetry: activeChecklistMessage ? (stepIndex) => handleChecklistRetry(activeChecklistMessage.id, stepIndex) : void 0,
|
|
12023
|
+
onSkip: activeChecklistMessage ? (stepIndex) => handleChecklistSkip(activeChecklistMessage.id, stepIndex) : void 0,
|
|
12024
|
+
isMobileOverlay: isMobile
|
|
12025
|
+
}
|
|
12026
|
+
),
|
|
12027
|
+
showSettings && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
11734
12028
|
SettingsModal,
|
|
11735
12029
|
{
|
|
11736
12030
|
isOpen: settingsOpen,
|
|
@@ -11757,7 +12051,7 @@ var ChatUIView = ({
|
|
|
11757
12051
|
currentProjectTitle: currentProject?.title
|
|
11758
12052
|
}
|
|
11759
12053
|
),
|
|
11760
|
-
/* @__PURE__ */ (0,
|
|
12054
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
11761
12055
|
ProjectSettingsModal,
|
|
11762
12056
|
{
|
|
11763
12057
|
isOpen: projectSettingsOpen,
|
|
@@ -11769,7 +12063,7 @@ var ChatUIView = ({
|
|
|
11769
12063
|
onDeleteProject: deleteProject
|
|
11770
12064
|
}
|
|
11771
12065
|
),
|
|
11772
|
-
/* @__PURE__ */ (0,
|
|
12066
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DisclaimerModal, { isOpen: disclaimerOpen, onClose: () => setDisclaimerOpen(false) })
|
|
11773
12067
|
]
|
|
11774
12068
|
}
|
|
11775
12069
|
);
|
|
@@ -11872,7 +12166,7 @@ var ChatUIWithHook = ({
|
|
|
11872
12166
|
onDeleteProjectFile
|
|
11873
12167
|
};
|
|
11874
12168
|
const state = useChatUI(hookOptions);
|
|
11875
|
-
return /* @__PURE__ */ (0,
|
|
12169
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
11876
12170
|
ChatUIView,
|
|
11877
12171
|
{
|
|
11878
12172
|
state,
|
|
@@ -11920,7 +12214,7 @@ var ChatUI = (props) => {
|
|
|
11920
12214
|
deepResearch,
|
|
11921
12215
|
suggestedPrompts: chatStateSuggestedPrompts
|
|
11922
12216
|
} = props;
|
|
11923
|
-
return /* @__PURE__ */ (0,
|
|
12217
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
11924
12218
|
ChatUIView,
|
|
11925
12219
|
{
|
|
11926
12220
|
state: props.chatState,
|
|
@@ -11945,7 +12239,7 @@ var ChatUI = (props) => {
|
|
|
11945
12239
|
}
|
|
11946
12240
|
);
|
|
11947
12241
|
}
|
|
11948
|
-
return /* @__PURE__ */ (0,
|
|
12242
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ChatUIWithHook, { ...props });
|
|
11949
12243
|
};
|
|
11950
12244
|
|
|
11951
12245
|
// src/react/hooks/useDeepResearch.ts
|
|
@@ -12263,7 +12557,7 @@ var useDeepResearch = (options) => {
|
|
|
12263
12557
|
};
|
|
12264
12558
|
|
|
12265
12559
|
// src/react/components/EmptyState.tsx
|
|
12266
|
-
var
|
|
12560
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
12267
12561
|
var EmptyState = ({
|
|
12268
12562
|
greeting,
|
|
12269
12563
|
templates = [],
|
|
@@ -12281,7 +12575,7 @@ var EmptyState = ({
|
|
|
12281
12575
|
return iconMap[icon] || "sparkling-line";
|
|
12282
12576
|
};
|
|
12283
12577
|
const hasContent = actions.length > 0 || templates.length > 0;
|
|
12284
|
-
return /* @__PURE__ */ (0,
|
|
12578
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
12285
12579
|
"div",
|
|
12286
12580
|
{
|
|
12287
12581
|
className: "chatllm-empty-state",
|
|
@@ -12296,7 +12590,7 @@ var EmptyState = ({
|
|
|
12296
12590
|
textAlign: "center"
|
|
12297
12591
|
},
|
|
12298
12592
|
children: [
|
|
12299
|
-
/* @__PURE__ */ (0,
|
|
12593
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
12300
12594
|
"div",
|
|
12301
12595
|
{
|
|
12302
12596
|
className: "chatllm-sheet",
|
|
@@ -12310,10 +12604,10 @@ var EmptyState = ({
|
|
|
12310
12604
|
marginBottom: "32px",
|
|
12311
12605
|
color: "var(--chatllm-primary)"
|
|
12312
12606
|
},
|
|
12313
|
-
children: /* @__PURE__ */ (0,
|
|
12607
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(IconSvg, { name: "chat-1-line", size: 40 })
|
|
12314
12608
|
}
|
|
12315
12609
|
),
|
|
12316
|
-
/* @__PURE__ */ (0,
|
|
12610
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
12317
12611
|
"h1",
|
|
12318
12612
|
{
|
|
12319
12613
|
style: {
|
|
@@ -12326,7 +12620,7 @@ var EmptyState = ({
|
|
|
12326
12620
|
children: "How can I help you today?"
|
|
12327
12621
|
}
|
|
12328
12622
|
),
|
|
12329
|
-
(actions.length > 0 || templates.length > 0) && /* @__PURE__ */ (0,
|
|
12623
|
+
(actions.length > 0 || templates.length > 0) && /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
12330
12624
|
"div",
|
|
12331
12625
|
{
|
|
12332
12626
|
style: {
|
|
@@ -12338,7 +12632,7 @@ var EmptyState = ({
|
|
|
12338
12632
|
marginBottom: "48px"
|
|
12339
12633
|
},
|
|
12340
12634
|
children: [
|
|
12341
|
-
actions.map((action) => /* @__PURE__ */ (0,
|
|
12635
|
+
actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
12342
12636
|
"button",
|
|
12343
12637
|
{
|
|
12344
12638
|
onClick: () => onActionSelect?.(action),
|
|
@@ -12352,7 +12646,7 @@ var EmptyState = ({
|
|
|
12352
12646
|
fontWeight: 500
|
|
12353
12647
|
},
|
|
12354
12648
|
children: [
|
|
12355
|
-
/* @__PURE__ */ (0,
|
|
12649
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
12356
12650
|
IconSvg,
|
|
12357
12651
|
{
|
|
12358
12652
|
name: getActionIcon(action.icon),
|
|
@@ -12365,7 +12659,7 @@ var EmptyState = ({
|
|
|
12365
12659
|
},
|
|
12366
12660
|
action.id
|
|
12367
12661
|
)),
|
|
12368
|
-
templates.slice(0, 4).map((template) => /* @__PURE__ */ (0,
|
|
12662
|
+
templates.slice(0, 4).map((template) => /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
12369
12663
|
"button",
|
|
12370
12664
|
{
|
|
12371
12665
|
onClick: () => onTemplateClick(template),
|
|
@@ -12379,7 +12673,7 @@ var EmptyState = ({
|
|
|
12379
12673
|
fontWeight: 500
|
|
12380
12674
|
},
|
|
12381
12675
|
children: [
|
|
12382
|
-
/* @__PURE__ */ (0,
|
|
12676
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
12383
12677
|
IconSvg,
|
|
12384
12678
|
{
|
|
12385
12679
|
name: "sparkling-line",
|
|
@@ -12402,7 +12696,7 @@ var EmptyState = ({
|
|
|
12402
12696
|
|
|
12403
12697
|
// src/react/components/MemoryPanel.tsx
|
|
12404
12698
|
var import_react23 = require("react");
|
|
12405
|
-
var
|
|
12699
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
12406
12700
|
var categoryLabels = {
|
|
12407
12701
|
fact: "\uC0AC\uC6A9\uC790 \uC815\uBCF4",
|
|
12408
12702
|
skill: "\uC804\uBB38 \uBD84\uC57C/\uAE30\uC220",
|
|
@@ -12434,7 +12728,7 @@ var MemoryPanel = ({
|
|
|
12434
12728
|
});
|
|
12435
12729
|
};
|
|
12436
12730
|
if (!isOpen) {
|
|
12437
|
-
return /* @__PURE__ */ (0,
|
|
12731
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12438
12732
|
"button",
|
|
12439
12733
|
{
|
|
12440
12734
|
onClick: onToggle,
|
|
@@ -12454,11 +12748,11 @@ var MemoryPanel = ({
|
|
|
12454
12748
|
justifyContent: "center",
|
|
12455
12749
|
zIndex: 100
|
|
12456
12750
|
},
|
|
12457
|
-
children: /* @__PURE__ */ (0,
|
|
12751
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(IconSvg, { name: "robot-line", size: 24, color: "#ffffff" })
|
|
12458
12752
|
}
|
|
12459
12753
|
);
|
|
12460
12754
|
}
|
|
12461
|
-
return /* @__PURE__ */ (0,
|
|
12755
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
12462
12756
|
"div",
|
|
12463
12757
|
{
|
|
12464
12758
|
className: "chatllm-memory-panel",
|
|
@@ -12478,7 +12772,7 @@ var MemoryPanel = ({
|
|
|
12478
12772
|
zIndex: 100
|
|
12479
12773
|
},
|
|
12480
12774
|
children: [
|
|
12481
|
-
/* @__PURE__ */ (0,
|
|
12775
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
12482
12776
|
"div",
|
|
12483
12777
|
{
|
|
12484
12778
|
style: {
|
|
@@ -12489,8 +12783,8 @@ var MemoryPanel = ({
|
|
|
12489
12783
|
borderBottom: "1px solid var(--chatllm-border, #e5e7eb)"
|
|
12490
12784
|
},
|
|
12491
12785
|
children: [
|
|
12492
|
-
/* @__PURE__ */ (0,
|
|
12493
|
-
/* @__PURE__ */ (0,
|
|
12786
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "10px" }, children: [
|
|
12787
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12494
12788
|
"div",
|
|
12495
12789
|
{
|
|
12496
12790
|
style: {
|
|
@@ -12502,19 +12796,19 @@ var MemoryPanel = ({
|
|
|
12502
12796
|
alignItems: "center",
|
|
12503
12797
|
justifyContent: "center"
|
|
12504
12798
|
},
|
|
12505
|
-
children: /* @__PURE__ */ (0,
|
|
12799
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(IconSvg, { name: "robot-line", size: 18, color: "var(--chatllm-primary, #3584FA)" })
|
|
12506
12800
|
}
|
|
12507
12801
|
),
|
|
12508
|
-
/* @__PURE__ */ (0,
|
|
12509
|
-
/* @__PURE__ */ (0,
|
|
12510
|
-
/* @__PURE__ */ (0,
|
|
12802
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { children: [
|
|
12803
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { style: { fontSize: "15px", fontWeight: 600, color: "var(--chatllm-text, #1f2937)" }, children: "AI \uBA54\uBAA8\uB9AC" }),
|
|
12804
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { style: { fontSize: "12px", color: "var(--chatllm-text-muted, #9ca3af)" }, children: [
|
|
12511
12805
|
items.length,
|
|
12512
12806
|
"\uAC1C \uD56D\uBAA9"
|
|
12513
12807
|
] })
|
|
12514
12808
|
] })
|
|
12515
12809
|
] }),
|
|
12516
|
-
/* @__PURE__ */ (0,
|
|
12517
|
-
onClearAll && items.length > 0 && /* @__PURE__ */ (0,
|
|
12810
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { style: { display: "flex", gap: "4px" }, children: [
|
|
12811
|
+
onClearAll && items.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12518
12812
|
"button",
|
|
12519
12813
|
{
|
|
12520
12814
|
onClick: onClearAll,
|
|
@@ -12526,10 +12820,10 @@ var MemoryPanel = ({
|
|
|
12526
12820
|
cursor: "pointer"
|
|
12527
12821
|
},
|
|
12528
12822
|
title: "\uC804\uCCB4 \uC0AD\uC81C",
|
|
12529
|
-
children: /* @__PURE__ */ (0,
|
|
12823
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(IconSvg, { name: "delete-bin-line", size: 18, color: "var(--chatllm-text-muted, #9ca3af)" })
|
|
12530
12824
|
}
|
|
12531
12825
|
),
|
|
12532
|
-
/* @__PURE__ */ (0,
|
|
12826
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12533
12827
|
"button",
|
|
12534
12828
|
{
|
|
12535
12829
|
onClick: onToggle,
|
|
@@ -12540,14 +12834,14 @@ var MemoryPanel = ({
|
|
|
12540
12834
|
borderRadius: "8px",
|
|
12541
12835
|
cursor: "pointer"
|
|
12542
12836
|
},
|
|
12543
|
-
children: /* @__PURE__ */ (0,
|
|
12837
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(IconSvg, { name: "close-line", size: 18, color: "var(--chatllm-text-muted, #9ca3af)" })
|
|
12544
12838
|
}
|
|
12545
12839
|
)
|
|
12546
12840
|
] })
|
|
12547
12841
|
]
|
|
12548
12842
|
}
|
|
12549
12843
|
),
|
|
12550
|
-
/* @__PURE__ */ (0,
|
|
12844
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12551
12845
|
"div",
|
|
12552
12846
|
{
|
|
12553
12847
|
style: {
|
|
@@ -12557,7 +12851,7 @@ var MemoryPanel = ({
|
|
|
12557
12851
|
borderBottom: "1px solid var(--chatllm-border-light, #f3f4f6)",
|
|
12558
12852
|
overflowX: "auto"
|
|
12559
12853
|
},
|
|
12560
|
-
children: ["all", "fact", "skill", "preference"].map((tab) => /* @__PURE__ */ (0,
|
|
12854
|
+
children: ["all", "fact", "skill", "preference"].map((tab) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12561
12855
|
"button",
|
|
12562
12856
|
{
|
|
12563
12857
|
onClick: () => setActiveTab(tab),
|
|
@@ -12578,8 +12872,8 @@ var MemoryPanel = ({
|
|
|
12578
12872
|
))
|
|
12579
12873
|
}
|
|
12580
12874
|
),
|
|
12581
|
-
/* @__PURE__ */ (0,
|
|
12582
|
-
contextSummary && activeTab === "all" && /* @__PURE__ */ (0,
|
|
12875
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { style: { flex: 1, overflow: "auto", padding: "12px" }, children: [
|
|
12876
|
+
contextSummary && activeTab === "all" && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
12583
12877
|
"div",
|
|
12584
12878
|
{
|
|
12585
12879
|
style: {
|
|
@@ -12590,7 +12884,7 @@ var MemoryPanel = ({
|
|
|
12590
12884
|
borderLeft: "3px solid var(--chatllm-primary, #3584FA)"
|
|
12591
12885
|
},
|
|
12592
12886
|
children: [
|
|
12593
|
-
/* @__PURE__ */ (0,
|
|
12887
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
12594
12888
|
"div",
|
|
12595
12889
|
{
|
|
12596
12890
|
style: {
|
|
@@ -12600,12 +12894,12 @@ var MemoryPanel = ({
|
|
|
12600
12894
|
marginBottom: "8px"
|
|
12601
12895
|
},
|
|
12602
12896
|
children: [
|
|
12603
|
-
/* @__PURE__ */ (0,
|
|
12604
|
-
/* @__PURE__ */ (0,
|
|
12897
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(IconSvg, { name: "file-text-line", size: 14, color: "var(--chatllm-primary, #3584FA)" }),
|
|
12898
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { style: { fontSize: "12px", fontWeight: 500, color: "var(--chatllm-primary, #3584FA)" }, children: "\uB300\uD654 \uC694\uC57D" })
|
|
12605
12899
|
]
|
|
12606
12900
|
}
|
|
12607
12901
|
),
|
|
12608
|
-
/* @__PURE__ */ (0,
|
|
12902
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12609
12903
|
"p",
|
|
12610
12904
|
{
|
|
12611
12905
|
style: {
|
|
@@ -12620,7 +12914,7 @@ var MemoryPanel = ({
|
|
|
12620
12914
|
]
|
|
12621
12915
|
}
|
|
12622
12916
|
),
|
|
12623
|
-
filteredItems.length === 0 ? /* @__PURE__ */ (0,
|
|
12917
|
+
filteredItems.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
12624
12918
|
"div",
|
|
12625
12919
|
{
|
|
12626
12920
|
style: {
|
|
@@ -12629,11 +12923,11 @@ var MemoryPanel = ({
|
|
|
12629
12923
|
color: "var(--chatllm-text-muted, #9ca3af)"
|
|
12630
12924
|
},
|
|
12631
12925
|
children: [
|
|
12632
|
-
/* @__PURE__ */ (0,
|
|
12633
|
-
/* @__PURE__ */ (0,
|
|
12926
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(IconSvg, { name: "robot-line", size: 32, color: "var(--chatllm-text-muted, #d1d5db)" }),
|
|
12927
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { style: { fontSize: "14px", marginTop: "12px" }, children: "\uC800\uC7A5\uB41C \uBA54\uBAA8\uB9AC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4" })
|
|
12634
12928
|
]
|
|
12635
12929
|
}
|
|
12636
|
-
) : /* @__PURE__ */ (0,
|
|
12930
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "8px" }, children: filteredItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
12637
12931
|
"div",
|
|
12638
12932
|
{
|
|
12639
12933
|
style: {
|
|
@@ -12646,10 +12940,10 @@ var MemoryPanel = ({
|
|
|
12646
12940
|
},
|
|
12647
12941
|
onClick: () => setExpandedId(expandedId === item.id ? null : item.id),
|
|
12648
12942
|
children: [
|
|
12649
|
-
/* @__PURE__ */ (0,
|
|
12650
|
-
/* @__PURE__ */ (0,
|
|
12651
|
-
/* @__PURE__ */ (0,
|
|
12652
|
-
item.category && /* @__PURE__ */ (0,
|
|
12943
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { style: { display: "flex", alignItems: "flex-start", justifyContent: "space-between" }, children: [
|
|
12944
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { style: { flex: 1, minWidth: 0 }, children: [
|
|
12945
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px", marginBottom: "4px" }, children: [
|
|
12946
|
+
item.category && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12653
12947
|
"span",
|
|
12654
12948
|
{
|
|
12655
12949
|
style: {
|
|
@@ -12663,9 +12957,9 @@ var MemoryPanel = ({
|
|
|
12663
12957
|
children: categoryLabels[item.category]
|
|
12664
12958
|
}
|
|
12665
12959
|
),
|
|
12666
|
-
/* @__PURE__ */ (0,
|
|
12960
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { style: { fontSize: "11px", color: "var(--chatllm-text-muted, #9ca3af)" }, children: formatDate(item.timestamp) })
|
|
12667
12961
|
] }),
|
|
12668
|
-
/* @__PURE__ */ (0,
|
|
12962
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12669
12963
|
"div",
|
|
12670
12964
|
{
|
|
12671
12965
|
style: {
|
|
@@ -12677,8 +12971,8 @@ var MemoryPanel = ({
|
|
|
12677
12971
|
}
|
|
12678
12972
|
)
|
|
12679
12973
|
] }),
|
|
12680
|
-
/* @__PURE__ */ (0,
|
|
12681
|
-
onDelete && /* @__PURE__ */ (0,
|
|
12974
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
|
|
12975
|
+
onDelete && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12682
12976
|
"button",
|
|
12683
12977
|
{
|
|
12684
12978
|
onClick: (e) => {
|
|
@@ -12693,10 +12987,10 @@ var MemoryPanel = ({
|
|
|
12693
12987
|
cursor: "pointer",
|
|
12694
12988
|
opacity: 0.5
|
|
12695
12989
|
},
|
|
12696
|
-
children: /* @__PURE__ */ (0,
|
|
12990
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(IconSvg, { name: "delete-bin-line", size: 14, color: "var(--chatllm-text-muted, #9ca3af)" })
|
|
12697
12991
|
}
|
|
12698
12992
|
),
|
|
12699
|
-
/* @__PURE__ */ (0,
|
|
12993
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12700
12994
|
IconSvg,
|
|
12701
12995
|
{
|
|
12702
12996
|
name: expandedId === item.id ? "arrow-up-s-line" : "arrow-down-s-line",
|
|
@@ -12706,7 +13000,7 @@ var MemoryPanel = ({
|
|
|
12706
13000
|
)
|
|
12707
13001
|
] })
|
|
12708
13002
|
] }),
|
|
12709
|
-
expandedId === item.id && /* @__PURE__ */ (0,
|
|
13003
|
+
expandedId === item.id && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12710
13004
|
"div",
|
|
12711
13005
|
{
|
|
12712
13006
|
style: {
|
|
@@ -12714,7 +13008,7 @@ var MemoryPanel = ({
|
|
|
12714
13008
|
paddingTop: "12px",
|
|
12715
13009
|
borderTop: "1px solid var(--chatllm-border-light, #f3f4f6)"
|
|
12716
13010
|
},
|
|
12717
|
-
children: /* @__PURE__ */ (0,
|
|
13011
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12718
13012
|
"p",
|
|
12719
13013
|
{
|
|
12720
13014
|
style: {
|
|
@@ -12745,6 +13039,8 @@ var MemoryPanel = ({
|
|
|
12745
13039
|
ChatSidebar,
|
|
12746
13040
|
ChatUI,
|
|
12747
13041
|
ChecklistCard,
|
|
13042
|
+
ChecklistMiniIndicator,
|
|
13043
|
+
ChecklistPanel,
|
|
12748
13044
|
ContentPartRenderer,
|
|
12749
13045
|
DEFAULT_PROJECT_ID,
|
|
12750
13046
|
DEFAULT_PROJECT_TITLE,
|