@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.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,
|
|
@@ -1751,6 +1753,8 @@ var useChatUI = (options) => {
|
|
|
1751
1753
|
deepResearch,
|
|
1752
1754
|
// Poll options
|
|
1753
1755
|
enablePoll = true,
|
|
1756
|
+
// Checklist options
|
|
1757
|
+
enableChecklist = true,
|
|
1754
1758
|
// Skills options
|
|
1755
1759
|
skills,
|
|
1756
1760
|
// Tool options
|
|
@@ -2116,9 +2120,40 @@ ${projectMemoryContext}`);
|
|
|
2116
2120
|
- \uAC01 \uC9C8\uBB38\uC740 \uC11C\uB85C \uB2E4\uB978 \uB0B4\uC6A9
|
|
2117
2121
|
- \uC635\uC158\uB9C8\uB2E4 \uC9E7\uC740 \uC124\uBA85 \uD3EC\uD568
|
|
2118
2122
|
- \uC0AC\uC6A9\uC790\uAC00 \uBAA8\uB450 \uC120\uD0DD \uD6C4 \uC9C4\uD589`);
|
|
2123
|
+
}
|
|
2124
|
+
if (enableChecklist) {
|
|
2125
|
+
parts.push("");
|
|
2126
|
+
parts.push(`## \uCCB4\uD06C\uB9AC\uC2A4\uD2B8 \uC790\uB3D9 \uC2E4\uD589 \uAE30\uB2A5
|
|
2127
|
+
|
|
2128
|
+
\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.
|
|
2129
|
+
\uC2DC\uC2A4\uD15C\uC774 \uAC01 \uB2E8\uACC4\uB97C \uC790\uB3D9\uC73C\uB85C \uD558\uB098\uC529 \uC2E4\uD589\uD569\uB2C8\uB2E4.
|
|
2130
|
+
|
|
2131
|
+
**\uD615\uC2DD:**
|
|
2132
|
+
<checklist>
|
|
2133
|
+
<step>1\uB2E8\uACC4 \uC81C\uBAA9</step>
|
|
2134
|
+
<step>2\uB2E8\uACC4 \uC81C\uBAA9</step>
|
|
2135
|
+
<step>3\uB2E8\uACC4 \uC81C\uBAA9</step>
|
|
2136
|
+
</checklist>
|
|
2137
|
+
|
|
2138
|
+
**\uC608\uC2DC - "A\uC0AC\uC640 B\uC0AC \uBE44\uAD50 \uBD84\uC11D\uD574\uC918":**
|
|
2139
|
+
\uB124, \uBE44\uAD50 \uBD84\uC11D\uC744 \uC9C4\uD589\uD558\uACA0\uC2B5\uB2C8\uB2E4.
|
|
2140
|
+
|
|
2141
|
+
<checklist>
|
|
2142
|
+
<step>A\uC0AC \uC815\uBCF4 \uC870\uC0AC</step>
|
|
2143
|
+
<step>B\uC0AC \uC815\uBCF4 \uC870\uC0AC</step>
|
|
2144
|
+
<step>\uB450 \uD68C\uC0AC \uBE44\uAD50 \uBD84\uC11D\uD45C \uC791\uC131</step>
|
|
2145
|
+
<step>\uC885\uD569 \uACB0\uB860 \uBC0F \uCD94\uCC9C</step>
|
|
2146
|
+
</checklist>
|
|
2147
|
+
|
|
2148
|
+
**\uADDC\uCE59:**
|
|
2149
|
+
- 2~8\uB2E8\uACC4\uAC00 \uC801\uC808 (\uB108\uBB34 \uC801\uAC70\uB098 \uB9CE\uC73C\uBA74 \uC548 \uB428)
|
|
2150
|
+
- \uAC01 \uB2E8\uACC4\uB294 \uAD6C\uCCB4\uC801\uC774\uACE0 \uC2E4\uD589 \uAC00\uB2A5\uD55C \uC791\uC5C5
|
|
2151
|
+
- \uB2E8\uC21C \uC9C8\uBB38\uC774\uB098 \uD55C \uBC88\uC5D0 \uB2F5\uD560 \uC218 \uC788\uB294 \uC694\uCCAD\uC5D0\uB294 \uC0AC\uC6A9 \uAE08\uC9C0
|
|
2152
|
+
- <checklist> \uD0DC\uADF8 \uC55E\uC5D0 \uC9E7\uC740 \uC548\uB0B4 \uBA54\uC2DC\uC9C0\uB97C \uD3EC\uD568
|
|
2153
|
+
- \uAC80\uC0C9/\uC870\uC0AC, \uBE44\uAD50 \uBD84\uC11D, \uBCF4\uACE0\uC11C \uC791\uC131, \uB2E4\uB2E8\uACC4 \uC791\uC5C5\uC5D0 \uC801\uADF9 \uC0AC\uC6A9`);
|
|
2119
2154
|
}
|
|
2120
2155
|
return parts.length > 0 ? parts.join("\n") : "";
|
|
2121
|
-
}, [personalization, globalMemory, useGlobalMemoryEnabled, enablePoll, buildSkillsPrompt, enableProjects, projectHook.currentProject, projectMemory]);
|
|
2156
|
+
}, [personalization, globalMemory, useGlobalMemoryEnabled, enablePoll, enableChecklist, buildSkillsPrompt, enableProjects, projectHook.currentProject, projectMemory]);
|
|
2122
2157
|
const compressContext = (0, import_react5.useCallback)(async (messagesToCompress, model) => {
|
|
2123
2158
|
const conversationText = messagesToCompress.map((m) => `${m.role === "user" ? "\uC0AC\uC6A9\uC790" : "AI"}: ${m.content}`).join("\n\n");
|
|
2124
2159
|
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.
|
|
@@ -4146,7 +4181,13 @@ ${result.content}
|
|
|
4146
4181
|
/** @Todo vibecode - 체크리스트 error 항목 재시도 */
|
|
4147
4182
|
handleChecklistRetry,
|
|
4148
4183
|
/** @Todo vibecode - 체크리스트 pending 항목 건너뛰기 */
|
|
4149
|
-
handleChecklistSkip
|
|
4184
|
+
handleChecklistSkip,
|
|
4185
|
+
/** @Todo vibecode - 활성 체크리스트가 포함된 메시지 (패널 자동 열기 트리거용) */
|
|
4186
|
+
activeChecklistMessage: messages.find(
|
|
4187
|
+
(m) => m.checklistBlock && !m.checklistBlock.completed
|
|
4188
|
+
) || messages.find(
|
|
4189
|
+
(m) => m.checklistBlock?.completed
|
|
4190
|
+
) || null
|
|
4150
4191
|
};
|
|
4151
4192
|
};
|
|
4152
4193
|
|
|
@@ -8944,6 +8985,80 @@ var ChecklistCard = ({
|
|
|
8944
8985
|
}
|
|
8945
8986
|
);
|
|
8946
8987
|
};
|
|
8988
|
+
var ChecklistMiniIndicator = ({
|
|
8989
|
+
items,
|
|
8990
|
+
completed
|
|
8991
|
+
}) => {
|
|
8992
|
+
const doneCount = items.filter((it) => it.status === "done").length;
|
|
8993
|
+
const isRunning = items.some((it) => it.status === "in_progress");
|
|
8994
|
+
const hasError = items.some((it) => it.status === "error");
|
|
8995
|
+
const progressPercent = doneCount / items.length * 100;
|
|
8996
|
+
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}`;
|
|
8997
|
+
const statusColor = completed ? "var(--chatllm-success, #22c55e)" : hasError ? "var(--chatllm-error, #ef4444)" : "var(--chatllm-primary, #3584FA)";
|
|
8998
|
+
const barColor = completed ? "var(--chatllm-success, #22c55e)" : "var(--chatllm-primary, #3584FA)";
|
|
8999
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
9000
|
+
"div",
|
|
9001
|
+
{
|
|
9002
|
+
style: {
|
|
9003
|
+
display: "flex",
|
|
9004
|
+
alignItems: "center",
|
|
9005
|
+
gap: "10px",
|
|
9006
|
+
padding: "10px 14px",
|
|
9007
|
+
border: "1px solid var(--chatllm-border, #e5e7eb)",
|
|
9008
|
+
borderRadius: "10px",
|
|
9009
|
+
backgroundColor: "var(--chatllm-content-bg, #fff)",
|
|
9010
|
+
marginTop: "8px"
|
|
9011
|
+
},
|
|
9012
|
+
children: [
|
|
9013
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
9014
|
+
IconSvg,
|
|
9015
|
+
{
|
|
9016
|
+
name: completed ? "checkbox-circle-line" : "list-check",
|
|
9017
|
+
size: 16,
|
|
9018
|
+
color: statusColor
|
|
9019
|
+
}
|
|
9020
|
+
),
|
|
9021
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
9022
|
+
"span",
|
|
9023
|
+
{
|
|
9024
|
+
style: {
|
|
9025
|
+
fontSize: "13px",
|
|
9026
|
+
fontWeight: 500,
|
|
9027
|
+
color: statusColor,
|
|
9028
|
+
whiteSpace: "nowrap"
|
|
9029
|
+
},
|
|
9030
|
+
children: statusText
|
|
9031
|
+
}
|
|
9032
|
+
),
|
|
9033
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
9034
|
+
"div",
|
|
9035
|
+
{
|
|
9036
|
+
style: {
|
|
9037
|
+
flex: 1,
|
|
9038
|
+
height: "3px",
|
|
9039
|
+
backgroundColor: "var(--chatllm-bg-secondary, #f1f5f9)",
|
|
9040
|
+
borderRadius: "2px",
|
|
9041
|
+
overflow: "hidden",
|
|
9042
|
+
minWidth: "60px"
|
|
9043
|
+
},
|
|
9044
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
9045
|
+
"div",
|
|
9046
|
+
{
|
|
9047
|
+
style: {
|
|
9048
|
+
height: "100%",
|
|
9049
|
+
width: `${progressPercent}%`,
|
|
9050
|
+
backgroundColor: barColor,
|
|
9051
|
+
borderRadius: "2px",
|
|
9052
|
+
transition: "width 0.6s cubic-bezier(0.25, 1, 0.5, 1)"
|
|
9053
|
+
}
|
|
9054
|
+
}
|
|
9055
|
+
)
|
|
9056
|
+
}
|
|
9057
|
+
)
|
|
9058
|
+
]
|
|
9059
|
+
}
|
|
9060
|
+
);
|
|
9061
|
+
};
|
|
8947
9062
|
|
|
8948
9063
|
// src/react/components/MessageBubble.tsx
|
|
8949
9064
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
@@ -9301,14 +9416,10 @@ var MessageBubble = ({
|
|
|
9301
9416
|
}
|
|
9302
9417
|
),
|
|
9303
9418
|
message.checklistBlock && message.checklistBlock.items.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
9304
|
-
|
|
9419
|
+
ChecklistMiniIndicator,
|
|
9305
9420
|
{
|
|
9306
9421
|
items: message.checklistBlock.items,
|
|
9307
|
-
|
|
9308
|
-
completed: message.checklistBlock.completed,
|
|
9309
|
-
onAbort: onChecklistAbort,
|
|
9310
|
-
onRetryStep: onChecklistRetry,
|
|
9311
|
-
onSkipStep: onChecklistSkip
|
|
9422
|
+
completed: message.checklistBlock.completed
|
|
9312
9423
|
}
|
|
9313
9424
|
),
|
|
9314
9425
|
!isLoading && !displayContent && !message.pollBlock && !message.checklistBlock && !message.contentParts?.length && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
@@ -11126,8 +11237,169 @@ var DisclaimerModal = ({ isOpen, onClose }) => {
|
|
|
11126
11237
|
);
|
|
11127
11238
|
};
|
|
11128
11239
|
|
|
11129
|
-
// src/react/
|
|
11240
|
+
// src/react/components/ChecklistPanel.tsx
|
|
11130
11241
|
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
11242
|
+
var ChecklistPanel = ({
|
|
11243
|
+
message,
|
|
11244
|
+
isOpen,
|
|
11245
|
+
onClose,
|
|
11246
|
+
onAbort,
|
|
11247
|
+
onRetry,
|
|
11248
|
+
onSkip,
|
|
11249
|
+
width = 360,
|
|
11250
|
+
isMobileOverlay = false
|
|
11251
|
+
}) => {
|
|
11252
|
+
const block = message?.checklistBlock;
|
|
11253
|
+
if (isMobileOverlay) {
|
|
11254
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_jsx_runtime21.Fragment, { children: [
|
|
11255
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
11256
|
+
"div",
|
|
11257
|
+
{
|
|
11258
|
+
onClick: onClose,
|
|
11259
|
+
style: {
|
|
11260
|
+
position: "fixed",
|
|
11261
|
+
inset: 0,
|
|
11262
|
+
backgroundColor: "rgba(0, 0, 0, 0.4)",
|
|
11263
|
+
zIndex: 999,
|
|
11264
|
+
opacity: isOpen ? 1 : 0,
|
|
11265
|
+
pointerEvents: isOpen ? "auto" : "none",
|
|
11266
|
+
transition: "opacity 0.3s ease"
|
|
11267
|
+
}
|
|
11268
|
+
}
|
|
11269
|
+
),
|
|
11270
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
11271
|
+
"aside",
|
|
11272
|
+
{
|
|
11273
|
+
style: {
|
|
11274
|
+
position: "fixed",
|
|
11275
|
+
top: 0,
|
|
11276
|
+
right: 0,
|
|
11277
|
+
bottom: 0,
|
|
11278
|
+
width: "85vw",
|
|
11279
|
+
maxWidth: "400px",
|
|
11280
|
+
backgroundColor: "var(--chatllm-bg, #F5F5F5)",
|
|
11281
|
+
zIndex: 1e3,
|
|
11282
|
+
transform: isOpen ? "translateX(0)" : "translateX(100%)",
|
|
11283
|
+
transition: "transform 0.3s cubic-bezier(0.4, 0, 0.2, 1)",
|
|
11284
|
+
display: "flex",
|
|
11285
|
+
flexDirection: "column",
|
|
11286
|
+
boxShadow: isOpen ? "-4px 0 20px rgba(0, 0, 0, 0.1)" : "none"
|
|
11287
|
+
},
|
|
11288
|
+
children: renderPanelContent()
|
|
11289
|
+
}
|
|
11290
|
+
)
|
|
11291
|
+
] });
|
|
11292
|
+
}
|
|
11293
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
11294
|
+
"aside",
|
|
11295
|
+
{
|
|
11296
|
+
style: {
|
|
11297
|
+
width: isOpen ? typeof width === "number" ? `${width}px` : width : "0px",
|
|
11298
|
+
minWidth: 0,
|
|
11299
|
+
overflow: "hidden",
|
|
11300
|
+
transition: "width 0.3s cubic-bezier(0.4, 0, 0.2, 1)",
|
|
11301
|
+
borderLeft: isOpen ? "1px solid var(--chatllm-border, #e2e8f0)" : "none",
|
|
11302
|
+
backgroundColor: "var(--chatllm-bg, #F5F5F5)",
|
|
11303
|
+
display: "flex",
|
|
11304
|
+
flexDirection: "column",
|
|
11305
|
+
flexShrink: 0
|
|
11306
|
+
},
|
|
11307
|
+
children: isOpen && renderPanelContent()
|
|
11308
|
+
}
|
|
11309
|
+
);
|
|
11310
|
+
function renderPanelContent() {
|
|
11311
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_jsx_runtime21.Fragment, { children: [
|
|
11312
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
11313
|
+
"div",
|
|
11314
|
+
{
|
|
11315
|
+
style: {
|
|
11316
|
+
display: "flex",
|
|
11317
|
+
alignItems: "center",
|
|
11318
|
+
justifyContent: "space-between",
|
|
11319
|
+
padding: "16px",
|
|
11320
|
+
borderBottom: "1px solid var(--chatllm-border, #e2e8f0)",
|
|
11321
|
+
flexShrink: 0
|
|
11322
|
+
},
|
|
11323
|
+
children: [
|
|
11324
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
|
|
11325
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(IconSvg, { name: "list-check", size: 18, color: "var(--chatllm-primary, #3584FA)" }),
|
|
11326
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
11327
|
+
"span",
|
|
11328
|
+
{
|
|
11329
|
+
style: {
|
|
11330
|
+
fontSize: "14px",
|
|
11331
|
+
fontWeight: 600,
|
|
11332
|
+
color: "var(--chatllm-text, #1e293b)"
|
|
11333
|
+
},
|
|
11334
|
+
children: "\uCCB4\uD06C\uB9AC\uC2A4\uD2B8"
|
|
11335
|
+
}
|
|
11336
|
+
)
|
|
11337
|
+
] }),
|
|
11338
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
11339
|
+
"button",
|
|
11340
|
+
{
|
|
11341
|
+
onClick: onClose,
|
|
11342
|
+
"aria-label": "\uD328\uB110 \uB2EB\uAE30",
|
|
11343
|
+
style: {
|
|
11344
|
+
width: "28px",
|
|
11345
|
+
height: "28px",
|
|
11346
|
+
display: "flex",
|
|
11347
|
+
alignItems: "center",
|
|
11348
|
+
justifyContent: "center",
|
|
11349
|
+
borderRadius: "6px",
|
|
11350
|
+
border: "none",
|
|
11351
|
+
backgroundColor: "transparent",
|
|
11352
|
+
cursor: "pointer",
|
|
11353
|
+
color: "var(--chatllm-text-muted, #94a3b8)",
|
|
11354
|
+
transition: "background-color 0.15s ease"
|
|
11355
|
+
},
|
|
11356
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(IconSvg, { name: "close-line", size: 18, color: "currentColor" })
|
|
11357
|
+
}
|
|
11358
|
+
)
|
|
11359
|
+
]
|
|
11360
|
+
}
|
|
11361
|
+
),
|
|
11362
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
11363
|
+
"div",
|
|
11364
|
+
{
|
|
11365
|
+
className: "chatllm-scrollbar",
|
|
11366
|
+
style: {
|
|
11367
|
+
flex: 1,
|
|
11368
|
+
overflowY: "auto",
|
|
11369
|
+
padding: "16px"
|
|
11370
|
+
},
|
|
11371
|
+
children: block && block.items.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
11372
|
+
ChecklistCard,
|
|
11373
|
+
{
|
|
11374
|
+
items: block.items,
|
|
11375
|
+
currentStep: block.currentStep,
|
|
11376
|
+
completed: block.completed,
|
|
11377
|
+
onAbort,
|
|
11378
|
+
onRetryStep: onRetry,
|
|
11379
|
+
onSkipStep: onSkip
|
|
11380
|
+
}
|
|
11381
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
11382
|
+
"div",
|
|
11383
|
+
{
|
|
11384
|
+
style: {
|
|
11385
|
+
display: "flex",
|
|
11386
|
+
alignItems: "center",
|
|
11387
|
+
justifyContent: "center",
|
|
11388
|
+
height: "100%",
|
|
11389
|
+
color: "var(--chatllm-text-muted, #94a3b8)",
|
|
11390
|
+
fontSize: "13px"
|
|
11391
|
+
},
|
|
11392
|
+
children: "\uCCB4\uD06C\uB9AC\uC2A4\uD2B8\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4"
|
|
11393
|
+
}
|
|
11394
|
+
)
|
|
11395
|
+
}
|
|
11396
|
+
)
|
|
11397
|
+
] });
|
|
11398
|
+
}
|
|
11399
|
+
};
|
|
11400
|
+
|
|
11401
|
+
// src/react/ChatUI.tsx
|
|
11402
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
11131
11403
|
var DEFAULT_ACTIONS = [];
|
|
11132
11404
|
var DEFAULT_TEMPLATES = [];
|
|
11133
11405
|
var DEFAULT_MODELS = [
|
|
@@ -11466,9 +11738,33 @@ var ChatUIView = ({
|
|
|
11466
11738
|
// Checklist
|
|
11467
11739
|
handleChecklistAbort,
|
|
11468
11740
|
handleChecklistRetry,
|
|
11469
|
-
handleChecklistSkip
|
|
11741
|
+
handleChecklistSkip,
|
|
11742
|
+
activeChecklistMessage
|
|
11470
11743
|
} = state;
|
|
11471
11744
|
const [disclaimerOpen, setDisclaimerOpen] = import_react21.default.useState(false);
|
|
11745
|
+
const [isMobile, setIsMobile] = import_react21.default.useState(false);
|
|
11746
|
+
import_react21.default.useEffect(() => {
|
|
11747
|
+
if (typeof window === "undefined") return;
|
|
11748
|
+
const check = () => setIsMobile(window.innerWidth < 768);
|
|
11749
|
+
check();
|
|
11750
|
+
window.addEventListener("resize", check);
|
|
11751
|
+
return () => window.removeEventListener("resize", check);
|
|
11752
|
+
}, []);
|
|
11753
|
+
const [checklistPanelDismissed, setChecklistPanelDismissed] = import_react21.default.useState(false);
|
|
11754
|
+
const isChecklistPanelOpen = !!activeChecklistMessage && !checklistPanelDismissed;
|
|
11755
|
+
const prevChecklistIdRef = import_react21.default.useRef(void 0);
|
|
11756
|
+
import_react21.default.useEffect(() => {
|
|
11757
|
+
const currentId = activeChecklistMessage?.checklistBlock?.id;
|
|
11758
|
+
if (currentId && currentId !== prevChecklistIdRef.current && !activeChecklistMessage?.checklistBlock?.completed) {
|
|
11759
|
+
setChecklistPanelDismissed(false);
|
|
11760
|
+
}
|
|
11761
|
+
prevChecklistIdRef.current = currentId;
|
|
11762
|
+
}, [activeChecklistMessage?.checklistBlock?.id, activeChecklistMessage?.checklistBlock?.completed]);
|
|
11763
|
+
import_react21.default.useEffect(() => {
|
|
11764
|
+
if (!activeChecklistMessage?.checklistBlock?.completed) return;
|
|
11765
|
+
const timer = setTimeout(() => setChecklistPanelDismissed(true), 2e3);
|
|
11766
|
+
return () => clearTimeout(timer);
|
|
11767
|
+
}, [activeChecklistMessage?.checklistBlock?.completed]);
|
|
11472
11768
|
const [welcomeExiting, setWelcomeExiting] = import_react21.default.useState(false);
|
|
11473
11769
|
const prevMessageCountRef = import_react21.default.useRef(messages.length);
|
|
11474
11770
|
import_react21.default.useEffect(() => {
|
|
@@ -11524,7 +11820,7 @@ var ChatUIView = ({
|
|
|
11524
11820
|
return items;
|
|
11525
11821
|
}, [projectMemory?.state.entries]);
|
|
11526
11822
|
const themeClass = theme?.mode === "dark" ? "chatllm-dark" : "";
|
|
11527
|
-
return /* @__PURE__ */ (0,
|
|
11823
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
11528
11824
|
"div",
|
|
11529
11825
|
{
|
|
11530
11826
|
className: `chatllm-root ${themeClass} ${className}`,
|
|
@@ -11537,7 +11833,7 @@ var ChatUIView = ({
|
|
|
11537
11833
|
position: "relative"
|
|
11538
11834
|
},
|
|
11539
11835
|
children: [
|
|
11540
|
-
showSidebar && /* @__PURE__ */ (0,
|
|
11836
|
+
showSidebar && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
11541
11837
|
ChatSidebar,
|
|
11542
11838
|
{
|
|
11543
11839
|
sessions,
|
|
@@ -11569,7 +11865,7 @@ var ChatUIView = ({
|
|
|
11569
11865
|
isLoading: isSessionsLoading
|
|
11570
11866
|
}
|
|
11571
11867
|
),
|
|
11572
|
-
/* @__PURE__ */ (0,
|
|
11868
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
11573
11869
|
"main",
|
|
11574
11870
|
{
|
|
11575
11871
|
style: {
|
|
@@ -11581,7 +11877,7 @@ var ChatUIView = ({
|
|
|
11581
11877
|
minWidth: 0
|
|
11582
11878
|
},
|
|
11583
11879
|
children: [
|
|
11584
|
-
/* @__PURE__ */ (0,
|
|
11880
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
11585
11881
|
ChatHeader,
|
|
11586
11882
|
{
|
|
11587
11883
|
title: currentSession?.title || "\uC0C8 \uB300\uD654",
|
|
@@ -11595,7 +11891,7 @@ var ChatUIView = ({
|
|
|
11595
11891
|
showSettings
|
|
11596
11892
|
}
|
|
11597
11893
|
),
|
|
11598
|
-
(messages.length === 0 || welcomeExiting) && /* @__PURE__ */ (0,
|
|
11894
|
+
(messages.length === 0 || welcomeExiting) && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
11599
11895
|
"div",
|
|
11600
11896
|
{
|
|
11601
11897
|
style: {
|
|
@@ -11610,7 +11906,7 @@ var ChatUIView = ({
|
|
|
11610
11906
|
pointerEvents: welcomeExiting ? "none" : "auto"
|
|
11611
11907
|
},
|
|
11612
11908
|
children: [
|
|
11613
|
-
/* @__PURE__ */ (0,
|
|
11909
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
11614
11910
|
"h1",
|
|
11615
11911
|
{
|
|
11616
11912
|
style: {
|
|
@@ -11624,7 +11920,7 @@ var ChatUIView = ({
|
|
|
11624
11920
|
children: greeting ? `${greeting} \u273A` : "\u273A \uBB34\uC5C7\uC744 \uC0DD\uAC01\uD574 \uBCFC\uAE4C\uC694?"
|
|
11625
11921
|
}
|
|
11626
11922
|
),
|
|
11627
|
-
/* @__PURE__ */ (0,
|
|
11923
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { style: { width: "100%", maxWidth: "680px" }, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
11628
11924
|
ChatInput,
|
|
11629
11925
|
{
|
|
11630
11926
|
value: input,
|
|
@@ -11652,7 +11948,7 @@ var ChatUIView = ({
|
|
|
11652
11948
|
inline: true
|
|
11653
11949
|
}
|
|
11654
11950
|
) }),
|
|
11655
|
-
suggestedPrompts && suggestedPrompts.length > 0 && /* @__PURE__ */ (0,
|
|
11951
|
+
suggestedPrompts && suggestedPrompts.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
11656
11952
|
"div",
|
|
11657
11953
|
{
|
|
11658
11954
|
style: {
|
|
@@ -11662,7 +11958,7 @@ var ChatUIView = ({
|
|
|
11662
11958
|
justifyContent: "center",
|
|
11663
11959
|
maxWidth: "680px"
|
|
11664
11960
|
},
|
|
11665
|
-
children: suggestedPrompts.map((sp) => /* @__PURE__ */ (0,
|
|
11961
|
+
children: suggestedPrompts.map((sp) => /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
11666
11962
|
"button",
|
|
11667
11963
|
{
|
|
11668
11964
|
onClick: () => setInput(sp.prompt),
|
|
@@ -11681,7 +11977,7 @@ var ChatUIView = ({
|
|
|
11681
11977
|
transition: "all 0.2s"
|
|
11682
11978
|
},
|
|
11683
11979
|
children: [
|
|
11684
|
-
sp.icon && /* @__PURE__ */ (0,
|
|
11980
|
+
sp.icon && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(IconSvg, { name: sp.icon, size: 16, color: "var(--chatllm-text-muted)" }),
|
|
11685
11981
|
sp.label
|
|
11686
11982
|
]
|
|
11687
11983
|
},
|
|
@@ -11692,8 +11988,8 @@ var ChatUIView = ({
|
|
|
11692
11988
|
]
|
|
11693
11989
|
}
|
|
11694
11990
|
),
|
|
11695
|
-
messages.length > 0 && /* @__PURE__ */ (0,
|
|
11696
|
-
/* @__PURE__ */ (0,
|
|
11991
|
+
messages.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_jsx_runtime22.Fragment, { children: [
|
|
11992
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
11697
11993
|
MessageList,
|
|
11698
11994
|
{
|
|
11699
11995
|
messages,
|
|
@@ -11718,7 +12014,7 @@ var ChatUIView = ({
|
|
|
11718
12014
|
onChecklistSkip: handleChecklistSkip
|
|
11719
12015
|
}
|
|
11720
12016
|
),
|
|
11721
|
-
/* @__PURE__ */ (0,
|
|
12017
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
11722
12018
|
ChatInput,
|
|
11723
12019
|
{
|
|
11724
12020
|
value: input,
|
|
@@ -11749,7 +12045,19 @@ var ChatUIView = ({
|
|
|
11749
12045
|
]
|
|
11750
12046
|
}
|
|
11751
12047
|
),
|
|
11752
|
-
|
|
12048
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
12049
|
+
ChecklistPanel,
|
|
12050
|
+
{
|
|
12051
|
+
message: activeChecklistMessage,
|
|
12052
|
+
isOpen: isChecklistPanelOpen,
|
|
12053
|
+
onClose: () => setChecklistPanelDismissed(true),
|
|
12054
|
+
onAbort: handleChecklistAbort,
|
|
12055
|
+
onRetry: activeChecklistMessage ? (stepIndex) => handleChecklistRetry(activeChecklistMessage.id, stepIndex) : void 0,
|
|
12056
|
+
onSkip: activeChecklistMessage ? (stepIndex) => handleChecklistSkip(activeChecklistMessage.id, stepIndex) : void 0,
|
|
12057
|
+
isMobileOverlay: isMobile
|
|
12058
|
+
}
|
|
12059
|
+
),
|
|
12060
|
+
showSettings && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
11753
12061
|
SettingsModal,
|
|
11754
12062
|
{
|
|
11755
12063
|
isOpen: settingsOpen,
|
|
@@ -11776,7 +12084,7 @@ var ChatUIView = ({
|
|
|
11776
12084
|
currentProjectTitle: currentProject?.title
|
|
11777
12085
|
}
|
|
11778
12086
|
),
|
|
11779
|
-
/* @__PURE__ */ (0,
|
|
12087
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
11780
12088
|
ProjectSettingsModal,
|
|
11781
12089
|
{
|
|
11782
12090
|
isOpen: projectSettingsOpen,
|
|
@@ -11788,7 +12096,7 @@ var ChatUIView = ({
|
|
|
11788
12096
|
onDeleteProject: deleteProject
|
|
11789
12097
|
}
|
|
11790
12098
|
),
|
|
11791
|
-
/* @__PURE__ */ (0,
|
|
12099
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DisclaimerModal, { isOpen: disclaimerOpen, onClose: () => setDisclaimerOpen(false) })
|
|
11792
12100
|
]
|
|
11793
12101
|
}
|
|
11794
12102
|
);
|
|
@@ -11891,7 +12199,7 @@ var ChatUIWithHook = ({
|
|
|
11891
12199
|
onDeleteProjectFile
|
|
11892
12200
|
};
|
|
11893
12201
|
const state = useChatUI(hookOptions);
|
|
11894
|
-
return /* @__PURE__ */ (0,
|
|
12202
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
11895
12203
|
ChatUIView,
|
|
11896
12204
|
{
|
|
11897
12205
|
state,
|
|
@@ -11939,7 +12247,7 @@ var ChatUI = (props) => {
|
|
|
11939
12247
|
deepResearch,
|
|
11940
12248
|
suggestedPrompts: chatStateSuggestedPrompts
|
|
11941
12249
|
} = props;
|
|
11942
|
-
return /* @__PURE__ */ (0,
|
|
12250
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
11943
12251
|
ChatUIView,
|
|
11944
12252
|
{
|
|
11945
12253
|
state: props.chatState,
|
|
@@ -11964,7 +12272,7 @@ var ChatUI = (props) => {
|
|
|
11964
12272
|
}
|
|
11965
12273
|
);
|
|
11966
12274
|
}
|
|
11967
|
-
return /* @__PURE__ */ (0,
|
|
12275
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ChatUIWithHook, { ...props });
|
|
11968
12276
|
};
|
|
11969
12277
|
|
|
11970
12278
|
// src/react/hooks/useDeepResearch.ts
|
|
@@ -12282,7 +12590,7 @@ var useDeepResearch = (options) => {
|
|
|
12282
12590
|
};
|
|
12283
12591
|
|
|
12284
12592
|
// src/react/components/EmptyState.tsx
|
|
12285
|
-
var
|
|
12593
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
12286
12594
|
var EmptyState = ({
|
|
12287
12595
|
greeting,
|
|
12288
12596
|
templates = [],
|
|
@@ -12300,7 +12608,7 @@ var EmptyState = ({
|
|
|
12300
12608
|
return iconMap[icon] || "sparkling-line";
|
|
12301
12609
|
};
|
|
12302
12610
|
const hasContent = actions.length > 0 || templates.length > 0;
|
|
12303
|
-
return /* @__PURE__ */ (0,
|
|
12611
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
12304
12612
|
"div",
|
|
12305
12613
|
{
|
|
12306
12614
|
className: "chatllm-empty-state",
|
|
@@ -12315,7 +12623,7 @@ var EmptyState = ({
|
|
|
12315
12623
|
textAlign: "center"
|
|
12316
12624
|
},
|
|
12317
12625
|
children: [
|
|
12318
|
-
/* @__PURE__ */ (0,
|
|
12626
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
12319
12627
|
"div",
|
|
12320
12628
|
{
|
|
12321
12629
|
className: "chatllm-sheet",
|
|
@@ -12329,10 +12637,10 @@ var EmptyState = ({
|
|
|
12329
12637
|
marginBottom: "32px",
|
|
12330
12638
|
color: "var(--chatllm-primary)"
|
|
12331
12639
|
},
|
|
12332
|
-
children: /* @__PURE__ */ (0,
|
|
12640
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(IconSvg, { name: "chat-1-line", size: 40 })
|
|
12333
12641
|
}
|
|
12334
12642
|
),
|
|
12335
|
-
/* @__PURE__ */ (0,
|
|
12643
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
12336
12644
|
"h1",
|
|
12337
12645
|
{
|
|
12338
12646
|
style: {
|
|
@@ -12345,7 +12653,7 @@ var EmptyState = ({
|
|
|
12345
12653
|
children: "How can I help you today?"
|
|
12346
12654
|
}
|
|
12347
12655
|
),
|
|
12348
|
-
(actions.length > 0 || templates.length > 0) && /* @__PURE__ */ (0,
|
|
12656
|
+
(actions.length > 0 || templates.length > 0) && /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
12349
12657
|
"div",
|
|
12350
12658
|
{
|
|
12351
12659
|
style: {
|
|
@@ -12357,7 +12665,7 @@ var EmptyState = ({
|
|
|
12357
12665
|
marginBottom: "48px"
|
|
12358
12666
|
},
|
|
12359
12667
|
children: [
|
|
12360
|
-
actions.map((action) => /* @__PURE__ */ (0,
|
|
12668
|
+
actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
12361
12669
|
"button",
|
|
12362
12670
|
{
|
|
12363
12671
|
onClick: () => onActionSelect?.(action),
|
|
@@ -12371,7 +12679,7 @@ var EmptyState = ({
|
|
|
12371
12679
|
fontWeight: 500
|
|
12372
12680
|
},
|
|
12373
12681
|
children: [
|
|
12374
|
-
/* @__PURE__ */ (0,
|
|
12682
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
12375
12683
|
IconSvg,
|
|
12376
12684
|
{
|
|
12377
12685
|
name: getActionIcon(action.icon),
|
|
@@ -12384,7 +12692,7 @@ var EmptyState = ({
|
|
|
12384
12692
|
},
|
|
12385
12693
|
action.id
|
|
12386
12694
|
)),
|
|
12387
|
-
templates.slice(0, 4).map((template) => /* @__PURE__ */ (0,
|
|
12695
|
+
templates.slice(0, 4).map((template) => /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
12388
12696
|
"button",
|
|
12389
12697
|
{
|
|
12390
12698
|
onClick: () => onTemplateClick(template),
|
|
@@ -12398,7 +12706,7 @@ var EmptyState = ({
|
|
|
12398
12706
|
fontWeight: 500
|
|
12399
12707
|
},
|
|
12400
12708
|
children: [
|
|
12401
|
-
/* @__PURE__ */ (0,
|
|
12709
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
12402
12710
|
IconSvg,
|
|
12403
12711
|
{
|
|
12404
12712
|
name: "sparkling-line",
|
|
@@ -12421,7 +12729,7 @@ var EmptyState = ({
|
|
|
12421
12729
|
|
|
12422
12730
|
// src/react/components/MemoryPanel.tsx
|
|
12423
12731
|
var import_react23 = require("react");
|
|
12424
|
-
var
|
|
12732
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
12425
12733
|
var categoryLabels = {
|
|
12426
12734
|
fact: "\uC0AC\uC6A9\uC790 \uC815\uBCF4",
|
|
12427
12735
|
skill: "\uC804\uBB38 \uBD84\uC57C/\uAE30\uC220",
|
|
@@ -12453,7 +12761,7 @@ var MemoryPanel = ({
|
|
|
12453
12761
|
});
|
|
12454
12762
|
};
|
|
12455
12763
|
if (!isOpen) {
|
|
12456
|
-
return /* @__PURE__ */ (0,
|
|
12764
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12457
12765
|
"button",
|
|
12458
12766
|
{
|
|
12459
12767
|
onClick: onToggle,
|
|
@@ -12473,11 +12781,11 @@ var MemoryPanel = ({
|
|
|
12473
12781
|
justifyContent: "center",
|
|
12474
12782
|
zIndex: 100
|
|
12475
12783
|
},
|
|
12476
|
-
children: /* @__PURE__ */ (0,
|
|
12784
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(IconSvg, { name: "robot-line", size: 24, color: "#ffffff" })
|
|
12477
12785
|
}
|
|
12478
12786
|
);
|
|
12479
12787
|
}
|
|
12480
|
-
return /* @__PURE__ */ (0,
|
|
12788
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
12481
12789
|
"div",
|
|
12482
12790
|
{
|
|
12483
12791
|
className: "chatllm-memory-panel",
|
|
@@ -12497,7 +12805,7 @@ var MemoryPanel = ({
|
|
|
12497
12805
|
zIndex: 100
|
|
12498
12806
|
},
|
|
12499
12807
|
children: [
|
|
12500
|
-
/* @__PURE__ */ (0,
|
|
12808
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
12501
12809
|
"div",
|
|
12502
12810
|
{
|
|
12503
12811
|
style: {
|
|
@@ -12508,8 +12816,8 @@ var MemoryPanel = ({
|
|
|
12508
12816
|
borderBottom: "1px solid var(--chatllm-border, #e5e7eb)"
|
|
12509
12817
|
},
|
|
12510
12818
|
children: [
|
|
12511
|
-
/* @__PURE__ */ (0,
|
|
12512
|
-
/* @__PURE__ */ (0,
|
|
12819
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "10px" }, children: [
|
|
12820
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12513
12821
|
"div",
|
|
12514
12822
|
{
|
|
12515
12823
|
style: {
|
|
@@ -12521,19 +12829,19 @@ var MemoryPanel = ({
|
|
|
12521
12829
|
alignItems: "center",
|
|
12522
12830
|
justifyContent: "center"
|
|
12523
12831
|
},
|
|
12524
|
-
children: /* @__PURE__ */ (0,
|
|
12832
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(IconSvg, { name: "robot-line", size: 18, color: "var(--chatllm-primary, #3584FA)" })
|
|
12525
12833
|
}
|
|
12526
12834
|
),
|
|
12527
|
-
/* @__PURE__ */ (0,
|
|
12528
|
-
/* @__PURE__ */ (0,
|
|
12529
|
-
/* @__PURE__ */ (0,
|
|
12835
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { children: [
|
|
12836
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { style: { fontSize: "15px", fontWeight: 600, color: "var(--chatllm-text, #1f2937)" }, children: "AI \uBA54\uBAA8\uB9AC" }),
|
|
12837
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { style: { fontSize: "12px", color: "var(--chatllm-text-muted, #9ca3af)" }, children: [
|
|
12530
12838
|
items.length,
|
|
12531
12839
|
"\uAC1C \uD56D\uBAA9"
|
|
12532
12840
|
] })
|
|
12533
12841
|
] })
|
|
12534
12842
|
] }),
|
|
12535
|
-
/* @__PURE__ */ (0,
|
|
12536
|
-
onClearAll && items.length > 0 && /* @__PURE__ */ (0,
|
|
12843
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { style: { display: "flex", gap: "4px" }, children: [
|
|
12844
|
+
onClearAll && items.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12537
12845
|
"button",
|
|
12538
12846
|
{
|
|
12539
12847
|
onClick: onClearAll,
|
|
@@ -12545,10 +12853,10 @@ var MemoryPanel = ({
|
|
|
12545
12853
|
cursor: "pointer"
|
|
12546
12854
|
},
|
|
12547
12855
|
title: "\uC804\uCCB4 \uC0AD\uC81C",
|
|
12548
|
-
children: /* @__PURE__ */ (0,
|
|
12856
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(IconSvg, { name: "delete-bin-line", size: 18, color: "var(--chatllm-text-muted, #9ca3af)" })
|
|
12549
12857
|
}
|
|
12550
12858
|
),
|
|
12551
|
-
/* @__PURE__ */ (0,
|
|
12859
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12552
12860
|
"button",
|
|
12553
12861
|
{
|
|
12554
12862
|
onClick: onToggle,
|
|
@@ -12559,14 +12867,14 @@ var MemoryPanel = ({
|
|
|
12559
12867
|
borderRadius: "8px",
|
|
12560
12868
|
cursor: "pointer"
|
|
12561
12869
|
},
|
|
12562
|
-
children: /* @__PURE__ */ (0,
|
|
12870
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(IconSvg, { name: "close-line", size: 18, color: "var(--chatllm-text-muted, #9ca3af)" })
|
|
12563
12871
|
}
|
|
12564
12872
|
)
|
|
12565
12873
|
] })
|
|
12566
12874
|
]
|
|
12567
12875
|
}
|
|
12568
12876
|
),
|
|
12569
|
-
/* @__PURE__ */ (0,
|
|
12877
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12570
12878
|
"div",
|
|
12571
12879
|
{
|
|
12572
12880
|
style: {
|
|
@@ -12576,7 +12884,7 @@ var MemoryPanel = ({
|
|
|
12576
12884
|
borderBottom: "1px solid var(--chatllm-border-light, #f3f4f6)",
|
|
12577
12885
|
overflowX: "auto"
|
|
12578
12886
|
},
|
|
12579
|
-
children: ["all", "fact", "skill", "preference"].map((tab) => /* @__PURE__ */ (0,
|
|
12887
|
+
children: ["all", "fact", "skill", "preference"].map((tab) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12580
12888
|
"button",
|
|
12581
12889
|
{
|
|
12582
12890
|
onClick: () => setActiveTab(tab),
|
|
@@ -12597,8 +12905,8 @@ var MemoryPanel = ({
|
|
|
12597
12905
|
))
|
|
12598
12906
|
}
|
|
12599
12907
|
),
|
|
12600
|
-
/* @__PURE__ */ (0,
|
|
12601
|
-
contextSummary && activeTab === "all" && /* @__PURE__ */ (0,
|
|
12908
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { style: { flex: 1, overflow: "auto", padding: "12px" }, children: [
|
|
12909
|
+
contextSummary && activeTab === "all" && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
12602
12910
|
"div",
|
|
12603
12911
|
{
|
|
12604
12912
|
style: {
|
|
@@ -12609,7 +12917,7 @@ var MemoryPanel = ({
|
|
|
12609
12917
|
borderLeft: "3px solid var(--chatllm-primary, #3584FA)"
|
|
12610
12918
|
},
|
|
12611
12919
|
children: [
|
|
12612
|
-
/* @__PURE__ */ (0,
|
|
12920
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
12613
12921
|
"div",
|
|
12614
12922
|
{
|
|
12615
12923
|
style: {
|
|
@@ -12619,12 +12927,12 @@ var MemoryPanel = ({
|
|
|
12619
12927
|
marginBottom: "8px"
|
|
12620
12928
|
},
|
|
12621
12929
|
children: [
|
|
12622
|
-
/* @__PURE__ */ (0,
|
|
12623
|
-
/* @__PURE__ */ (0,
|
|
12930
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(IconSvg, { name: "file-text-line", size: 14, color: "var(--chatllm-primary, #3584FA)" }),
|
|
12931
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { style: { fontSize: "12px", fontWeight: 500, color: "var(--chatllm-primary, #3584FA)" }, children: "\uB300\uD654 \uC694\uC57D" })
|
|
12624
12932
|
]
|
|
12625
12933
|
}
|
|
12626
12934
|
),
|
|
12627
|
-
/* @__PURE__ */ (0,
|
|
12935
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12628
12936
|
"p",
|
|
12629
12937
|
{
|
|
12630
12938
|
style: {
|
|
@@ -12639,7 +12947,7 @@ var MemoryPanel = ({
|
|
|
12639
12947
|
]
|
|
12640
12948
|
}
|
|
12641
12949
|
),
|
|
12642
|
-
filteredItems.length === 0 ? /* @__PURE__ */ (0,
|
|
12950
|
+
filteredItems.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
12643
12951
|
"div",
|
|
12644
12952
|
{
|
|
12645
12953
|
style: {
|
|
@@ -12648,11 +12956,11 @@ var MemoryPanel = ({
|
|
|
12648
12956
|
color: "var(--chatllm-text-muted, #9ca3af)"
|
|
12649
12957
|
},
|
|
12650
12958
|
children: [
|
|
12651
|
-
/* @__PURE__ */ (0,
|
|
12652
|
-
/* @__PURE__ */ (0,
|
|
12959
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(IconSvg, { name: "robot-line", size: 32, color: "var(--chatllm-text-muted, #d1d5db)" }),
|
|
12960
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { style: { fontSize: "14px", marginTop: "12px" }, children: "\uC800\uC7A5\uB41C \uBA54\uBAA8\uB9AC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4" })
|
|
12653
12961
|
]
|
|
12654
12962
|
}
|
|
12655
|
-
) : /* @__PURE__ */ (0,
|
|
12963
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "8px" }, children: filteredItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
12656
12964
|
"div",
|
|
12657
12965
|
{
|
|
12658
12966
|
style: {
|
|
@@ -12665,10 +12973,10 @@ var MemoryPanel = ({
|
|
|
12665
12973
|
},
|
|
12666
12974
|
onClick: () => setExpandedId(expandedId === item.id ? null : item.id),
|
|
12667
12975
|
children: [
|
|
12668
|
-
/* @__PURE__ */ (0,
|
|
12669
|
-
/* @__PURE__ */ (0,
|
|
12670
|
-
/* @__PURE__ */ (0,
|
|
12671
|
-
item.category && /* @__PURE__ */ (0,
|
|
12976
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { style: { display: "flex", alignItems: "flex-start", justifyContent: "space-between" }, children: [
|
|
12977
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { style: { flex: 1, minWidth: 0 }, children: [
|
|
12978
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px", marginBottom: "4px" }, children: [
|
|
12979
|
+
item.category && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12672
12980
|
"span",
|
|
12673
12981
|
{
|
|
12674
12982
|
style: {
|
|
@@ -12682,9 +12990,9 @@ var MemoryPanel = ({
|
|
|
12682
12990
|
children: categoryLabels[item.category]
|
|
12683
12991
|
}
|
|
12684
12992
|
),
|
|
12685
|
-
/* @__PURE__ */ (0,
|
|
12993
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { style: { fontSize: "11px", color: "var(--chatllm-text-muted, #9ca3af)" }, children: formatDate(item.timestamp) })
|
|
12686
12994
|
] }),
|
|
12687
|
-
/* @__PURE__ */ (0,
|
|
12995
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12688
12996
|
"div",
|
|
12689
12997
|
{
|
|
12690
12998
|
style: {
|
|
@@ -12696,8 +13004,8 @@ var MemoryPanel = ({
|
|
|
12696
13004
|
}
|
|
12697
13005
|
)
|
|
12698
13006
|
] }),
|
|
12699
|
-
/* @__PURE__ */ (0,
|
|
12700
|
-
onDelete && /* @__PURE__ */ (0,
|
|
13007
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [
|
|
13008
|
+
onDelete && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12701
13009
|
"button",
|
|
12702
13010
|
{
|
|
12703
13011
|
onClick: (e) => {
|
|
@@ -12712,10 +13020,10 @@ var MemoryPanel = ({
|
|
|
12712
13020
|
cursor: "pointer",
|
|
12713
13021
|
opacity: 0.5
|
|
12714
13022
|
},
|
|
12715
|
-
children: /* @__PURE__ */ (0,
|
|
13023
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(IconSvg, { name: "delete-bin-line", size: 14, color: "var(--chatllm-text-muted, #9ca3af)" })
|
|
12716
13024
|
}
|
|
12717
13025
|
),
|
|
12718
|
-
/* @__PURE__ */ (0,
|
|
13026
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12719
13027
|
IconSvg,
|
|
12720
13028
|
{
|
|
12721
13029
|
name: expandedId === item.id ? "arrow-up-s-line" : "arrow-down-s-line",
|
|
@@ -12725,7 +13033,7 @@ var MemoryPanel = ({
|
|
|
12725
13033
|
)
|
|
12726
13034
|
] })
|
|
12727
13035
|
] }),
|
|
12728
|
-
expandedId === item.id && /* @__PURE__ */ (0,
|
|
13036
|
+
expandedId === item.id && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12729
13037
|
"div",
|
|
12730
13038
|
{
|
|
12731
13039
|
style: {
|
|
@@ -12733,7 +13041,7 @@ var MemoryPanel = ({
|
|
|
12733
13041
|
paddingTop: "12px",
|
|
12734
13042
|
borderTop: "1px solid var(--chatllm-border-light, #f3f4f6)"
|
|
12735
13043
|
},
|
|
12736
|
-
children: /* @__PURE__ */ (0,
|
|
13044
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
12737
13045
|
"p",
|
|
12738
13046
|
{
|
|
12739
13047
|
style: {
|
|
@@ -12764,6 +13072,8 @@ var MemoryPanel = ({
|
|
|
12764
13072
|
ChatSidebar,
|
|
12765
13073
|
ChatUI,
|
|
12766
13074
|
ChecklistCard,
|
|
13075
|
+
ChecklistMiniIndicator,
|
|
13076
|
+
ChecklistPanel,
|
|
12767
13077
|
ContentPartRenderer,
|
|
12768
13078
|
DEFAULT_PROJECT_ID,
|
|
12769
13079
|
DEFAULT_PROJECT_TITLE,
|