@docyrus/ui-pro-ai-assistant 0.7.2 → 0.7.3
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/docy-assistant.d.ts +1 -1
- package/dist/hooks/use-session-state.d.ts +1 -0
- package/dist/index.js +69 -5
- package/dist/index.js.map +1 -1
- package/dist/lib/assistant-api-actions.d.ts +1 -1
- package/dist/styles.css +5 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/views/sidebar-content.d.ts +2 -0
- package/package.json +1 -1
package/dist/docy-assistant.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type RefObject } from 'react';
|
|
2
2
|
import { type DocyAssistantProps } from './types';
|
|
3
|
-
export declare const DocyAssistant: ({ ref, isOpen, onClose, supportWebSearch, supportThinking, supportFiles, supportDocumentSearch, supportDeepResearch, supportMultiModels, supportWorkCanvas, apiEndpoint, title: titleProp, description: descriptionProp, placeholder: placeholderProp, logo, footerText: footerTextProp, variant, renderMode, enableSidebar, enableVoice, enableMicrophone, enableWelcomePage, tenantAiAgentId, onMessageSend, onVoiceStart, onVoiceEnd, className, defaultFullscreen, hideExpand, hideCloseButton, hideBorder, showHeader, hideHeaderOnWelcome, agentSelectorUrl, onAgentChange, onFullscreenChange, enableSharing, onShare: onShareProp, initialPrompt, initialModelId, initialFeatures, initialFiles, hostEnvironment, appId, appName, appIcon, clientTools, ...props }: DocyAssistantProps & {
|
|
3
|
+
export declare const DocyAssistant: ({ ref, isOpen, onClose, supportWebSearch, supportThinking, supportFiles, supportDocumentSearch, supportDeepResearch, supportMultiModels, supportWorkCanvas, apiEndpoint, title: titleProp, description: descriptionProp, placeholder: placeholderProp, logo, footerText: footerTextProp, variant, renderMode, enableSidebar, enableVoice, enableMicrophone, enableWelcomePage, tenantAiAgentId, onMessageSend, onVoiceStart, onVoiceEnd, className, defaultFullscreen, isFullscreen: isFullscreenProp, hideExpand, hideCloseButton, hideBorder, showHeader, hideHeaderOnWelcome, agentSelectorUrl, onAgentChange, onFullscreenChange, enableSharing, onShare: onShareProp, initialPrompt, initialModelId, initialFeatures, initialFiles, hostEnvironment, appId, appName, appIcon, clientTools, ...props }: DocyAssistantProps & {
|
|
4
4
|
ref?: RefObject<HTMLDivElement | null>;
|
|
5
5
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -14,6 +14,7 @@ export declare function useSessionState(): {
|
|
|
14
14
|
state: SessionState;
|
|
15
15
|
actions: {
|
|
16
16
|
setSessions: (sessions: AssistantSession[]) => void;
|
|
17
|
+
appendSessions: (sessions: AssistantSession[]) => void;
|
|
17
18
|
selectSessionId: (id: string | null) => void;
|
|
18
19
|
selectSession: (session: AssistantSession | null) => void;
|
|
19
20
|
startEditing: () => void;
|
package/dist/index.js
CHANGED
|
@@ -3108,13 +3108,19 @@ function processMessagesData(rawData) {
|
|
|
3108
3108
|
}
|
|
3109
3109
|
|
|
3110
3110
|
// src/lib/assistant-api-actions.ts
|
|
3111
|
-
async function fetchAgentThreads(apiClient, tenantAiAgentId, onSuccess, userId, deploymentId) {
|
|
3111
|
+
async function fetchAgentThreads(apiClient, tenantAiAgentId, onSuccess, userId, deploymentId, limit, offset3) {
|
|
3112
3112
|
try {
|
|
3113
3113
|
const apiParams = {
|
|
3114
3114
|
columns: "id,subject,created_on,last_modified_on,body_text,tenant_ai_agent_id,created_by",
|
|
3115
3115
|
expand: "created_by",
|
|
3116
3116
|
orderBy: JSON.stringify({ field: "created_on", direction: "desc" })
|
|
3117
3117
|
};
|
|
3118
|
+
if (typeof limit === "number" && limit > 0) {
|
|
3119
|
+
apiParams.limit = limit;
|
|
3120
|
+
}
|
|
3121
|
+
if (typeof offset3 === "number" && offset3 > 0) {
|
|
3122
|
+
apiParams.offset = offset3;
|
|
3123
|
+
}
|
|
3118
3124
|
const agentRule = deploymentId ? { field: "tenant_ai_agent_deployment_id", operator: "=", value: deploymentId } : { field: "tenant_ai_agent_id", operator: "=", value: tenantAiAgentId };
|
|
3119
3125
|
const rules = [agentRule, { field: "archived", operator: "=", value: "false" }];
|
|
3120
3126
|
if (userId) {
|
|
@@ -4751,6 +4757,12 @@ function sessionReducer(state, action) {
|
|
|
4751
4757
|
switch (action.type) {
|
|
4752
4758
|
case "SET_SESSIONS":
|
|
4753
4759
|
return { ...state, sessions: action.payload };
|
|
4760
|
+
case "APPEND_SESSIONS": {
|
|
4761
|
+
const existing = new Set(state.sessions.map((s) => s.id));
|
|
4762
|
+
const fresh = action.payload.filter((s) => !existing.has(s.id));
|
|
4763
|
+
if (fresh.length === 0) return state;
|
|
4764
|
+
return { ...state, sessions: [...state.sessions, ...fresh] };
|
|
4765
|
+
}
|
|
4754
4766
|
case "SELECT_SESSION_ID":
|
|
4755
4767
|
return { ...state, selectedSessionId: action.payload };
|
|
4756
4768
|
case "SELECT_SESSION":
|
|
@@ -4799,6 +4811,9 @@ function useSessionState() {
|
|
|
4799
4811
|
const setSessions = useCallback((sessions) => {
|
|
4800
4812
|
dispatch({ type: "SET_SESSIONS", payload: sessions });
|
|
4801
4813
|
}, []);
|
|
4814
|
+
const appendSessions = useCallback((sessions) => {
|
|
4815
|
+
dispatch({ type: "APPEND_SESSIONS", payload: sessions });
|
|
4816
|
+
}, []);
|
|
4802
4817
|
const selectSessionId = useCallback((id) => {
|
|
4803
4818
|
dispatch({ type: "SELECT_SESSION_ID", payload: id });
|
|
4804
4819
|
}, []);
|
|
@@ -4841,6 +4856,7 @@ function useSessionState() {
|
|
|
4841
4856
|
const actions = useMemo(
|
|
4842
4857
|
() => ({
|
|
4843
4858
|
setSessions,
|
|
4859
|
+
appendSessions,
|
|
4844
4860
|
selectSessionId,
|
|
4845
4861
|
selectSession,
|
|
4846
4862
|
startEditing,
|
|
@@ -4857,6 +4873,7 @@ function useSessionState() {
|
|
|
4857
4873
|
}),
|
|
4858
4874
|
[
|
|
4859
4875
|
setSessions,
|
|
4876
|
+
appendSessions,
|
|
4860
4877
|
selectSessionId,
|
|
4861
4878
|
selectSession,
|
|
4862
4879
|
startEditing,
|
|
@@ -19433,6 +19450,7 @@ var MessageItem = memo(({
|
|
|
19433
19450
|
), children: [
|
|
19434
19451
|
/* @__PURE__ */ jsx(MessageContent, { className: cn(
|
|
19435
19452
|
"group-[.is-user]:p-2 group-[.is-user]:mt-0.5",
|
|
19453
|
+
"group-[.is-user]:text-foreground",
|
|
19436
19454
|
isEditing && isUserMessage && "flex-1 w-full max-w-full"
|
|
19437
19455
|
), children: renderMessageContent() }),
|
|
19438
19456
|
isAssistantMessage && !isStreaming && textContent && /* @__PURE__ */ jsx(MessageActions, { className: "mt-1 opacity-0 group-hover:opacity-100 transition-opacity", children: /* @__PURE__ */ jsx(CopyButton, { text: textContent }) }),
|
|
@@ -35696,12 +35714,19 @@ var SidebarContent = ({
|
|
|
35696
35714
|
onShowMoreProjects,
|
|
35697
35715
|
onNewProject,
|
|
35698
35716
|
onToggleSidebar,
|
|
35717
|
+
onLoadMoreSessions,
|
|
35718
|
+
hasMoreSessions,
|
|
35699
35719
|
supportWorkCanvas = true,
|
|
35700
35720
|
t
|
|
35701
35721
|
}) => {
|
|
35702
35722
|
const [storedListType, setActiveListType] = useState("sessions");
|
|
35703
35723
|
const activeListType = !supportWorkCanvas && storedListType === "works" ? "sessions" : storedListType;
|
|
35704
35724
|
const [openMenuId, setOpenMenuId] = useState(null);
|
|
35725
|
+
const handleSessionsScroll = useCallback((e) => {
|
|
35726
|
+
if (activeListType !== "sessions" || !hasMoreSessions || !onLoadMoreSessions) return;
|
|
35727
|
+
const el = e.currentTarget;
|
|
35728
|
+
if (el.scrollHeight - el.scrollTop - el.clientHeight < 80) onLoadMoreSessions();
|
|
35729
|
+
}, [activeListType, hasMoreSessions, onLoadMoreSessions]);
|
|
35705
35730
|
const navItems = [{ id: 1, label: t("tabs.sessions"), icon: MessageSquare }, ...supportWorkCanvas ? [{ id: 3, label: t("tabs.works"), icon: NotebookText }] : []];
|
|
35706
35731
|
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col flex-1 min-h-0", children: [
|
|
35707
35732
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-px", children: [
|
|
@@ -35823,6 +35848,7 @@ var SidebarContent = ({
|
|
|
35823
35848
|
"div",
|
|
35824
35849
|
{
|
|
35825
35850
|
className: "flex-1 overflow-y-auto",
|
|
35851
|
+
onScroll: handleSessionsScroll,
|
|
35826
35852
|
style: {
|
|
35827
35853
|
scrollbarWidth: "thin",
|
|
35828
35854
|
scrollbarColor: "var(--muted-foreground) transparent"
|
|
@@ -36103,6 +36129,7 @@ function dataUrlToFile(dataUrl, filename) {
|
|
|
36103
36129
|
}
|
|
36104
36130
|
return new File([u8arr], filename, { type: mime });
|
|
36105
36131
|
}
|
|
36132
|
+
var THREADS_PAGE_SIZE = 20;
|
|
36106
36133
|
var DocyAssistant = ({
|
|
36107
36134
|
ref,
|
|
36108
36135
|
isOpen = true,
|
|
@@ -36132,6 +36159,7 @@ var DocyAssistant = ({
|
|
|
36132
36159
|
onVoiceEnd,
|
|
36133
36160
|
className,
|
|
36134
36161
|
defaultFullscreen = false,
|
|
36162
|
+
isFullscreen: isFullscreenProp,
|
|
36135
36163
|
hideExpand = false,
|
|
36136
36164
|
hideCloseButton = false,
|
|
36137
36165
|
hideBorder = false,
|
|
@@ -36211,7 +36239,9 @@ var DocyAssistant = ({
|
|
|
36211
36239
|
const [showWelcome, setShowWelcome] = useState(() => enableWelcomePage && tabs.length <= 1);
|
|
36212
36240
|
const currentUserId = configUser.id;
|
|
36213
36241
|
const [projectSearchQuery, setProjectSearchQuery] = useState("");
|
|
36214
|
-
const [
|
|
36242
|
+
const [internalInlineFullscreen, setInternalInlineFullscreen] = useState(defaultFullscreen);
|
|
36243
|
+
const isInlineFullscreen = isFullscreenProp ?? internalInlineFullscreen;
|
|
36244
|
+
const setIsInlineFullscreen = setInternalInlineFullscreen;
|
|
36215
36245
|
const [sharingEditorOpen, setSharingEditorOpen] = useState(false);
|
|
36216
36246
|
const [appContext, setAppContext] = useState(
|
|
36217
36247
|
appId ? { id: appId, name: appName, icon: appIcon } : null
|
|
@@ -36417,8 +36447,35 @@ var DocyAssistant = ({
|
|
|
36417
36447
|
return changed ? next : prev;
|
|
36418
36448
|
});
|
|
36419
36449
|
}, [agentDetails, agentDetailsForId]);
|
|
36420
|
-
const
|
|
36421
|
-
|
|
36450
|
+
const [hasMoreThreads, setHasMoreThreads] = useState(true);
|
|
36451
|
+
const isLoadingMoreThreadsRef = useRef(false);
|
|
36452
|
+
const sessionsRef = useRef(sessionState.sessions);
|
|
36453
|
+
useEffect(() => {
|
|
36454
|
+
sessionsRef.current = sessionState.sessions;
|
|
36455
|
+
}, [sessionState.sessions]);
|
|
36456
|
+
const fetchThreads = useCallback(async (mode = "initial") => {
|
|
36457
|
+
if (mode === "more") {
|
|
36458
|
+
if (isLoadingMoreThreadsRef.current) return;
|
|
36459
|
+
isLoadingMoreThreadsRef.current = true;
|
|
36460
|
+
}
|
|
36461
|
+
const offset3 = mode === "more" ? sessionsRef.current.length : 0;
|
|
36462
|
+
await fetchAgentThreads(
|
|
36463
|
+
apiClient,
|
|
36464
|
+
activeAgentId,
|
|
36465
|
+
(threads) => {
|
|
36466
|
+
if (mode === "initial") {
|
|
36467
|
+
sessionActions.setSessions(threads);
|
|
36468
|
+
} else {
|
|
36469
|
+
sessionActions.appendSessions(threads);
|
|
36470
|
+
}
|
|
36471
|
+
setHasMoreThreads(threads.length === THREADS_PAGE_SIZE);
|
|
36472
|
+
},
|
|
36473
|
+
currentUserId,
|
|
36474
|
+
deploymentId,
|
|
36475
|
+
THREADS_PAGE_SIZE,
|
|
36476
|
+
offset3
|
|
36477
|
+
);
|
|
36478
|
+
if (mode === "more") isLoadingMoreThreadsRef.current = false;
|
|
36422
36479
|
}, [
|
|
36423
36480
|
apiClient,
|
|
36424
36481
|
activeAgentId,
|
|
@@ -36426,6 +36483,10 @@ var DocyAssistant = ({
|
|
|
36426
36483
|
currentUserId,
|
|
36427
36484
|
deploymentId
|
|
36428
36485
|
]);
|
|
36486
|
+
const loadMoreThreads = useCallback(() => {
|
|
36487
|
+
if (!hasMoreThreads) return;
|
|
36488
|
+
void fetchThreads("more");
|
|
36489
|
+
}, [fetchThreads, hasMoreThreads]);
|
|
36429
36490
|
const fetchProjectThreads2 = useCallback(async (projectId) => {
|
|
36430
36491
|
await fetchProjectThreads(apiClient, projectId, projectActions.setProjectThreads);
|
|
36431
36492
|
}, [apiClient, projectActions]);
|
|
@@ -36463,7 +36524,8 @@ var DocyAssistant = ({
|
|
|
36463
36524
|
]);
|
|
36464
36525
|
useEffect(() => {
|
|
36465
36526
|
if (isOpen && enableSidebar) {
|
|
36466
|
-
|
|
36527
|
+
setHasMoreThreads(true);
|
|
36528
|
+
void fetchThreads("initial");
|
|
36467
36529
|
}
|
|
36468
36530
|
}, [isOpen, enableSidebar, fetchThreads]);
|
|
36469
36531
|
useEffect(() => {
|
|
@@ -36910,6 +36972,8 @@ var DocyAssistant = ({
|
|
|
36910
36972
|
},
|
|
36911
36973
|
onToggleSidebar: isFloating && !uiState.isExpanded ? () => uiActions.setSidebarOpen(false) : void 0,
|
|
36912
36974
|
supportWorkCanvas: effectiveSupportWorkCanvas,
|
|
36975
|
+
onLoadMoreSessions: loadMoreThreads,
|
|
36976
|
+
hasMoreSessions: hasMoreThreads,
|
|
36913
36977
|
t
|
|
36914
36978
|
}
|
|
36915
36979
|
);
|