@agi-cli/web-sdk 0.1.118 → 0.1.120
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/components/branch/BranchModal.d.ts +11 -0
- package/dist/components/branch/BranchModal.d.ts.map +1 -0
- package/dist/components/branch/BranchModal.js +45 -0
- package/dist/components/branch/BranchModal.js.map +1 -0
- package/dist/components/chat/ChatInput.d.ts +2 -0
- package/dist/components/chat/ChatInput.d.ts.map +1 -1
- package/dist/components/chat/ChatInput.js +6 -2
- package/dist/components/chat/ChatInput.js.map +1 -1
- package/dist/components/chat/ChatInputContainer.d.ts.map +1 -1
- package/dist/components/chat/ChatInputContainer.js +12 -1
- package/dist/components/chat/ChatInputContainer.js.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/messages/AssistantMessageGroup.d.ts +2 -0
- package/dist/components/messages/AssistantMessageGroup.d.ts.map +1 -1
- package/dist/components/messages/AssistantMessageGroup.js +44 -16
- package/dist/components/messages/AssistantMessageGroup.js.map +1 -1
- package/dist/components/messages/MessageThread.d.ts +2 -0
- package/dist/components/messages/MessageThread.d.ts.map +1 -1
- package/dist/components/messages/MessageThread.js +7 -4
- package/dist/components/messages/MessageThread.js.map +1 -1
- package/dist/components/messages/MessageThreadContainer.d.ts +1 -0
- package/dist/components/messages/MessageThreadContainer.d.ts.map +1 -1
- package/dist/components/messages/MessageThreadContainer.js +2 -2
- package/dist/components/messages/MessageThreadContainer.js.map +1 -1
- package/dist/components/messages/UserMessageGroup.d.ts +2 -0
- package/dist/components/messages/UserMessageGroup.d.ts.map +1 -1
- package/dist/components/messages/UserMessageGroup.js +40 -4
- package/dist/components/messages/UserMessageGroup.js.map +1 -1
- package/dist/components/messages/renderers/ReasoningRenderer.js +1 -1
- package/dist/components/messages/renderers/ReasoningRenderer.js.map +1 -1
- package/dist/components/sessions/LeanHeader.d.ts +2 -1
- package/dist/components/sessions/LeanHeader.d.ts.map +1 -1
- package/dist/components/sessions/LeanHeader.js +10 -4
- package/dist/components/sessions/LeanHeader.js.map +1 -1
- package/dist/components/sessions/SessionHeader.d.ts +2 -1
- package/dist/components/sessions/SessionHeader.d.ts.map +1 -1
- package/dist/components/sessions/SessionHeader.js +9 -13
- package/dist/components/sessions/SessionHeader.js.map +1 -1
- package/dist/components/sessions/SessionItem.d.ts.map +1 -1
- package/dist/components/sessions/SessionItem.js +3 -2
- package/dist/components/sessions/SessionItem.js.map +1 -1
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useBranch.d.ts +5 -0
- package/dist/hooks/useBranch.d.ts.map +1 -0
- package/dist/hooks/useBranch.js +43 -0
- package/dist/hooks/useBranch.js.map +1 -0
- package/dist/hooks/useConfig.d.ts.map +1 -1
- package/dist/hooks/useQueueState.d.ts +15 -0
- package/dist/hooks/useQueueState.d.ts.map +1 -0
- package/dist/hooks/useQueueState.js +30 -0
- package/dist/hooks/useQueueState.js.map +1 -0
- package/dist/hooks/useSessionStream.d.ts.map +1 -1
- package/dist/hooks/useSessionStream.js +9 -0
- package/dist/hooks/useSessionStream.js.map +1 -1
- package/dist/lib/api-client.d.ts +23 -1
- package/dist/lib/api-client.d.ts.map +1 -1
- package/dist/lib/api-client.js +74 -0
- package/dist/lib/api-client.js.map +1 -1
- package/dist/lib/commands.d.ts.map +1 -1
- package/dist/lib/commands.js +7 -1
- package/dist/lib/commands.js.map +1 -1
- package/dist/stores/index.d.ts +1 -0
- package/dist/stores/index.d.ts.map +1 -1
- package/dist/stores/index.js +1 -0
- package/dist/stores/index.js.map +1 -1
- package/dist/stores/queueStore.d.ts +8 -0
- package/dist/stores/queueStore.d.ts.map +1 -0
- package/dist/stores/queueStore.js +11 -0
- package/dist/stores/queueStore.js.map +1 -0
- package/dist/types/api.d.ts +29 -0
- package/dist/types/api.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -4,7 +4,7 @@ import { useMessages } from '../../hooks/useMessages';
|
|
|
4
4
|
import { useSessionStream } from '../../hooks/useSessionStream';
|
|
5
5
|
import { useSessions } from '../../hooks/useSessions';
|
|
6
6
|
import { MessageThread } from './MessageThread';
|
|
7
|
-
export const MessageThreadContainer = memo(function MessageThreadContainer({ sessionId, }) {
|
|
7
|
+
export const MessageThreadContainer = memo(function MessageThreadContainer({ sessionId, onSelectSession, }) {
|
|
8
8
|
const { data: messages = [], isLoading } = useMessages(sessionId);
|
|
9
9
|
const { data: sessions = [] } = useSessions();
|
|
10
10
|
useSessionStream(sessionId);
|
|
@@ -13,6 +13,6 @@ export const MessageThreadContainer = memo(function MessageThreadContainer({ ses
|
|
|
13
13
|
if (isLoading) {
|
|
14
14
|
return (_jsx("div", { className: "flex-1 flex items-center justify-center text-muted-foreground", children: "Loading messages..." }));
|
|
15
15
|
}
|
|
16
|
-
return (_jsx(MessageThread, { messages: messages, session: session, isGenerating: isGenerating }));
|
|
16
|
+
return (_jsx(MessageThread, { messages: messages, sessionId: sessionId, session: session, isGenerating: isGenerating, onSelectSession: onSelectSession }));
|
|
17
17
|
});
|
|
18
18
|
//# sourceMappingURL=MessageThreadContainer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageThreadContainer.js","sourceRoot":"","sources":["../../../src/components/messages/MessageThreadContainer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"MessageThreadContainer.js","sourceRoot":"","sources":["../../../src/components/messages/MessageThreadContainer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAOhD,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC,SAAS,sBAAsB,CAAC,EAC1E,SAAS,EACT,eAAe,GACc;IAC7B,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IAClE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;IAE9C,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAE5B,MAAM,OAAO,GAAG,OAAO,CACtB,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,EAC9C,CAAC,QAAQ,EAAE,SAAS,CAAC,CACrB,CAAC;IAEF,MAAM,YAAY,GAAG,OAAO,CAC3B,GAAG,EAAE,CACJ,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,EACvE,CAAC,QAAQ,CAAC,CACV,CAAC;IAEF,IAAI,SAAS,EAAE,CAAC;QACf,OAAO,CACN,cAAK,SAAS,EAAC,+DAA+D,oCAExE,CACN,CAAC;IACH,CAAC;IAED,OAAO,CACN,KAAC,aAAa,IACb,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,GAC/B,CACF,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { Message } from '../../types/api';
|
|
2
2
|
interface UserMessageGroupProps {
|
|
3
|
+
sessionId?: string;
|
|
3
4
|
message: Message;
|
|
4
5
|
isFirst: boolean;
|
|
6
|
+
nextAssistantMessageId?: string;
|
|
5
7
|
}
|
|
6
8
|
export declare const UserMessageGroup: import("react").NamedExoticComponent<UserMessageGroupProps>;
|
|
7
9
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserMessageGroup.d.ts","sourceRoot":"","sources":["../../../src/components/messages/UserMessageGroup.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"UserMessageGroup.d.ts","sourceRoot":"","sources":["../../../src/components/messages/UserMessageGroup.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAK/C,UAAU,qBAAqB;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CAChC;AAeD,eAAO,MAAM,gBAAgB,6DA2P5B,CAAC"}
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { memo, useState } from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { useQueryClient } from '@tanstack/react-query';
|
|
4
|
+
import { User, X, FileText, FileIcon, Clock, Trash2, RotateCcw, } from 'lucide-react';
|
|
4
5
|
import ReactMarkdown from 'react-markdown';
|
|
5
6
|
import remarkGfm from 'remark-gfm';
|
|
6
|
-
|
|
7
|
+
import { useMessageQueuePosition } from '../../hooks/useQueueState';
|
|
8
|
+
import { useQueueStore } from '../../stores/queueStore';
|
|
9
|
+
import { apiClient } from '../../lib/api-client';
|
|
10
|
+
export const UserMessageGroup = memo(function UserMessageGroup({ sessionId, message, nextAssistantMessageId, }) {
|
|
7
11
|
const [expandedImage, setExpandedImage] = useState(null);
|
|
8
12
|
const parts = message.parts || [];
|
|
13
|
+
const queryClient = useQueryClient();
|
|
14
|
+
const { isQueued, position } = useMessageQueuePosition(sessionId, nextAssistantMessageId ?? '');
|
|
15
|
+
const setPendingRestoreText = useQueueStore((state) => state.setPendingRestoreText);
|
|
9
16
|
const textParts = parts.filter((p) => p.type === 'text');
|
|
10
17
|
const imageParts = parts.filter((p) => p.type === 'image');
|
|
11
18
|
const fileParts = parts.filter((p) => p.type === 'file');
|
|
@@ -70,7 +77,34 @@ export const UserMessageGroup = memo(function UserMessageGroup({ message }) {
|
|
|
70
77
|
const hasFiles = files.length > 0;
|
|
71
78
|
if (!hasContent && !hasImages && !hasFiles)
|
|
72
79
|
return null;
|
|
73
|
-
|
|
80
|
+
const handleCancel = async () => {
|
|
81
|
+
if (!sessionId || !nextAssistantMessageId)
|
|
82
|
+
return;
|
|
83
|
+
setPendingRestoreText(content);
|
|
84
|
+
try {
|
|
85
|
+
await apiClient.removeFromQueue(sessionId, nextAssistantMessageId);
|
|
86
|
+
// Invalidate messages to refresh UI
|
|
87
|
+
queryClient.invalidateQueries({ queryKey: ['messages', sessionId] });
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
console.error('Failed to cancel queued message:', err);
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
const handleDelete = async () => {
|
|
94
|
+
if (!sessionId || !nextAssistantMessageId)
|
|
95
|
+
return;
|
|
96
|
+
try {
|
|
97
|
+
await apiClient.removeFromQueue(sessionId, nextAssistantMessageId);
|
|
98
|
+
// Invalidate messages to refresh UI
|
|
99
|
+
queryClient.invalidateQueries({ queryKey: ['messages', sessionId] });
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
console.error('Failed to delete queued message:', err);
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "relative pb-8 pt-6", children: _jsxs("div", { className: "flex gap-3 md:gap-4 justify-end", children: [_jsxs("div", { className: "flex flex-col items-end min-w-0 flex-1 max-w-[calc(100%-3rem)] md:max-w-2xl", children: [_jsxs("div", { className: "flex items-center gap-2 text-xs text-muted-foreground pb-2 justify-end", children: [_jsx("span", { className: "font-medium text-emerald-700 dark:text-emerald-300", children: "You" }), message.createdAt && _jsx("span", { children: "\u00B7" }), message.createdAt && (_jsx("span", { children: formatTime(message.createdAt) })), isQueued && (_jsxs(_Fragment, { children: [_jsx("span", { children: "\u00B7" }), _jsxs("span", { className: "inline-flex items-center gap-1 text-amber-600 dark:text-amber-400", children: [_jsx(Clock, { className: "h-3 w-3" }), "Queued", position !== null && position > 0
|
|
106
|
+
? ` #${position + 1}`
|
|
107
|
+
: ''] })] }))] }), _jsxs("div", { className: "inline-block max-w-full text-sm text-foreground leading-relaxed bg-emerald-500/5 border border-emerald-500/20 rounded-xl px-4 py-3 [word-break:break-word] overflow-hidden", children: [hasImages && (_jsx("div", { className: "flex flex-wrap gap-2 mb-2", children: images.map((img) => (_jsx("button", { type: "button", onClick: () => setExpandedImage(img.src), className: "w-16 h-16 rounded-lg overflow-hidden bg-muted hover:ring-2 hover:ring-primary/50 transition-all", children: _jsx("img", { src: img.src, alt: "Attachment", className: "w-full h-full object-cover" }) }, img.id))) })), hasFiles && (_jsx("div", { className: "flex flex-wrap gap-2 mb-2", children: files.map((file) => (_jsxs("div", { className: "flex items-center gap-2 px-3 py-2 rounded-lg bg-muted/50 border border-border", children: [file.type === 'pdf' ? (_jsx(FileIcon, { className: "w-4 h-4 text-red-500 flex-shrink-0" })) : (_jsx(FileText, { className: "w-4 h-4 text-blue-500 flex-shrink-0" })), _jsx("span", { className: "text-xs truncate max-w-[150px]", children: file.name })] }, file.id))) })), hasContent && (_jsx("div", { className: "prose prose-invert prose-sm [&>*:first-child]:mt-0 [&>*:last-child]:mb-0 [&_*]:[word-break:break-word] [&_*]:overflow-wrap-anywhere", children: _jsx(ReactMarkdown, { remarkPlugins: [remarkGfm], children: content }) }))] }), isQueued && (_jsxs("div", { className: "flex items-center gap-2 mt-2", children: [_jsxs("button", { type: "button", onClick: handleCancel, className: "inline-flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-md bg-muted hover:bg-muted/80 text-muted-foreground hover:text-foreground transition-colors", title: "Cancel and restore to input", children: [_jsx(RotateCcw, { className: "h-3 w-3" }), "Cancel"] }), _jsxs("button", { type: "button", onClick: handleDelete, className: "inline-flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-md bg-destructive/10 hover:bg-destructive/20 text-destructive transition-colors", title: "Delete from queue", children: [_jsx(Trash2, { className: "h-3 w-3" }), "Delete"] })] }))] }), _jsx("div", { className: "flex-shrink-0 w-8 flex items-start justify-center", children: _jsx("div", { className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-full border-2 border-emerald-500/50 bg-emerald-500/20 dark:bg-emerald-500/10 relative bg-background", children: _jsx(User, { className: "h-4 w-4 text-emerald-700 dark:text-emerald-300" }) }) })] }) }), expandedImage && (_jsxs("div", { role: "dialog", "aria-modal": "true", className: "fixed inset-0 z-50 flex items-center justify-center bg-black/80 p-4", onClick: () => setExpandedImage(null), onKeyDown: (e) => e.key === 'Escape' && setExpandedImage(null), tabIndex: -1, children: [_jsx("button", { type: "button", onClick: () => setExpandedImage(null), className: "absolute top-4 right-4 p-2 rounded-full bg-white/10 hover:bg-white/20 transition-colors", children: _jsx(X, { className: "w-6 h-6 text-white" }) }), _jsx("img", { src: expandedImage, alt: "Expanded attachment", className: "max-w-full max-h-full object-contain rounded-lg", onClick: (e) => e.stopPropagation(), onKeyDown: (e) => e.key === 'Enter' && e.stopPropagation() })] }))] }));
|
|
74
108
|
}, (prevProps, nextProps) => {
|
|
75
109
|
const prevFirstPart = prevProps.message.parts?.[0];
|
|
76
110
|
const nextFirstPart = nextProps.message.parts?.[0];
|
|
@@ -78,6 +112,8 @@ export const UserMessageGroup = memo(function UserMessageGroup({ message }) {
|
|
|
78
112
|
prevFirstPart?.content === nextFirstPart?.content &&
|
|
79
113
|
prevFirstPart?.contentJson === nextFirstPart?.contentJson &&
|
|
80
114
|
prevProps.message.createdAt === nextProps.message.createdAt &&
|
|
81
|
-
prevProps.message.parts?.length === nextProps.message.parts?.length
|
|
115
|
+
prevProps.message.parts?.length === nextProps.message.parts?.length &&
|
|
116
|
+
prevProps.sessionId === nextProps.sessionId &&
|
|
117
|
+
prevProps.nextAssistantMessageId === nextProps.nextAssistantMessageId);
|
|
82
118
|
});
|
|
83
119
|
//# sourceMappingURL=UserMessageGroup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserMessageGroup.js","sourceRoot":"","sources":["../../../src/components/messages/UserMessageGroup.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"UserMessageGroup.js","sourceRoot":"","sources":["../../../src/components/messages/UserMessageGroup.tsx"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ export function ReasoningRenderer({ part }) {
|
|
|
16
16
|
if (scrollRef.current && isExpanded && !part.completedAt) {
|
|
17
17
|
scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
|
|
18
18
|
}
|
|
19
|
-
}, [
|
|
19
|
+
}, [isExpanded, part.completedAt]);
|
|
20
20
|
if (!content || !content.trim()) {
|
|
21
21
|
return null;
|
|
22
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReasoningRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/ReasoningRenderer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAOzD,MAAM,UAAU,iBAAiB,CAAC,EAAE,IAAI,EAA0B;IACjE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC/C,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC;IAC9C,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACxD,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;SAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,GAAG,IAAI,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,SAAS,CAAC,OAAO,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1D,SAAS,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC;QAC9D,CAAC;IACF,CAAC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"ReasoningRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/ReasoningRenderer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAOzD,MAAM,UAAU,iBAAiB,CAAC,EAAE,IAAI,EAA0B;IACjE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC/C,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC;IAC9C,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACxD,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;SAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,GAAG,IAAI,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,SAAS,CAAC,OAAO,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1D,SAAS,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC;QAC9D,CAAC;IACF,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAEnC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO,CACN,eAAK,SAAS,EAAC,QAAQ,aACtB,kBACC,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,EACzC,SAAS,EAAC,sGAAsG,aAE/G,UAAU,CAAC,CAAC,CAAC,CACb,KAAC,WAAW,IAAC,SAAS,EAAC,uBAAuB,GAAG,CACjD,CAAC,CAAC,CAAC,CACH,KAAC,YAAY,IAAC,SAAS,EAAC,uBAAuB,GAAG,CAClD,EACD,eAAM,SAAS,EAAC,aAAa,0BAAiB,EAC7C,CAAC,IAAI,CAAC,WAAW,IAAI,CACrB,eAAM,SAAS,EAAC,wCAAwC,4BAEjD,CACP,IACO,EACR,UAAU,IAAI,CACd,cACC,GAAG,EAAE,SAAS,EACd,SAAS,EAAC,+EAA+E,YAEzF,cAAK,SAAS,EAAC,6DAA6D,YAC1E,OAAO,GACH,GACD,CACN,IACI,CACN,CAAC;AACH,CAAC"}
|
|
@@ -3,7 +3,8 @@ interface LeanHeaderProps {
|
|
|
3
3
|
session: Session;
|
|
4
4
|
isVisible: boolean;
|
|
5
5
|
isGenerating?: boolean;
|
|
6
|
+
onNavigateToSession?: (sessionId: string) => void;
|
|
6
7
|
}
|
|
7
|
-
export declare function LeanHeader({ session, isVisible, isGenerating, }: LeanHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare function LeanHeader({ session, isVisible, isGenerating, onNavigateToSession, }: LeanHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
8
9
|
export {};
|
|
9
10
|
//# sourceMappingURL=LeanHeader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LeanHeader.d.ts","sourceRoot":"","sources":["../../../src/components/sessions/LeanHeader.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"LeanHeader.d.ts","sourceRoot":"","sources":["../../../src/components/sessions/LeanHeader.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAW/C,UAAU,eAAe;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAClD;AAED,wBAAgB,UAAU,CAAC,EAC1B,OAAO,EACP,SAAS,EACT,YAAY,EACZ,mBAAmB,GACnB,EAAE,eAAe,2CAwFjB"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
|
-
import { Hash, DollarSign,
|
|
3
|
+
import { Hash, DollarSign, MessageSquare, GitBranch, ArrowUpRight, } from 'lucide-react';
|
|
4
4
|
import { StopButton } from '../chat/StopButton';
|
|
5
|
-
|
|
5
|
+
import { useParentSession } from '../../hooks/useBranch';
|
|
6
|
+
export function LeanHeader({ session, isVisible, isGenerating, onNavigateToSession, }) {
|
|
7
|
+
const { data: parentData } = useParentSession(session.sessionType === 'branch' ? session.id : undefined);
|
|
6
8
|
const estimatedCost = useMemo(() => {
|
|
7
9
|
const input = session.totalInputTokens || 0;
|
|
8
10
|
const output = session.totalOutputTokens || 0;
|
|
@@ -15,6 +17,10 @@ export function LeanHeader({ session, isVisible, isGenerating, }) {
|
|
|
15
17
|
const formatNumber = (num) => {
|
|
16
18
|
return num.toLocaleString('en-US');
|
|
17
19
|
};
|
|
18
|
-
|
|
20
|
+
const isBranch = session.sessionType === 'branch';
|
|
21
|
+
const parentSession = parentData?.parent;
|
|
22
|
+
return (_jsx("div", { className: `absolute top-0 left-0 right-0 h-14 border-b border-border bg-background/95 backdrop-blur-sm z-10 transition-transform duration-200 ${isVisible ? 'translate-y-0' : '-translate-y-full'}`, children: _jsxs("div", { className: "h-full px-6 flex items-center justify-between gap-6 text-sm", children: [_jsxs("div", { className: "flex-1 min-w-0 flex items-center gap-2 text-muted-foreground", children: [isBranch ? (_jsx(GitBranch, { className: "w-4 h-4 flex-shrink-0 text-violet-500" })) : (_jsx(MessageSquare, { className: "w-4 h-4 flex-shrink-0" })), _jsx("span", { className: "text-foreground font-medium truncate", children: session.title || 'Untitled Session' }), isBranch && parentSession && (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-muted-foreground hidden sm:inline", children: "from" }), _jsxs("button", { type: "button", onClick: () => onNavigateToSession?.(parentSession.id), className: "text-primary hover:underline flex items-center gap-0.5 truncate max-w-32", title: parentSession.title ||
|
|
23
|
+
`Session ${parentSession.id.slice(0, 8)}`, children: [_jsx("span", { className: "truncate", children: parentSession.title ||
|
|
24
|
+
`Session ${parentSession.id.slice(0, 8)}` }), _jsx(ArrowUpRight, { className: "h-3 w-3 flex-shrink-0" })] })] }))] }), _jsxs("div", { className: "flex-shrink-0 flex items-center gap-6", children: [isGenerating && _jsx(StopButton, { sessionId: session.id }), _jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [_jsx(Hash, { className: "w-4 h-4" }), _jsxs("span", { className: "text-foreground font-medium", children: [formatNumber(session.totalInputTokens || 0), " /", ' ', formatNumber(session.totalOutputTokens || 0)] })] }), estimatedCost > 0 && (_jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [_jsx(DollarSign, { className: "w-4 h-4" }), _jsxs("span", { className: "text-foreground font-medium", children: ["$", estimatedCost.toFixed(4)] })] }))] })] }) }));
|
|
19
25
|
}
|
|
20
26
|
//# sourceMappingURL=LeanHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LeanHeader.js","sourceRoot":"","sources":["../../../src/components/sessions/LeanHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,
|
|
1
|
+
{"version":3,"file":"LeanHeader.js","sourceRoot":"","sources":["../../../src/components/sessions/LeanHeader.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { Session } from '../../types/api';
|
|
2
2
|
interface SessionHeaderProps {
|
|
3
3
|
session: Session;
|
|
4
|
+
onNavigateToSession?: (sessionId: string) => void;
|
|
4
5
|
}
|
|
5
|
-
export declare function SessionHeader({ session }: SessionHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export declare function SessionHeader({ session, onNavigateToSession, }: SessionHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
6
7
|
export {};
|
|
7
8
|
//# sourceMappingURL=SessionHeader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionHeader.d.ts","sourceRoot":"","sources":["../../../src/components/sessions/SessionHeader.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"SessionHeader.d.ts","sourceRoot":"","sources":["../../../src/components/sessions/SessionHeader.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAI/C,UAAU,kBAAkB;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAClD;AAED,wBAAgB,aAAa,CAAC,EAC7B,OAAO,EACP,mBAAmB,GACnB,EAAE,kBAAkB,2CAgJpB"}
|
|
@@ -1,29 +1,23 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
|
-
import { Clock, DollarSign, Hash } from 'lucide-react';
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import { Clock, DollarSign, Hash, GitBranch, ArrowUpRight } from 'lucide-react';
|
|
4
|
+
import { useParentSession } from '../../hooks/useBranch';
|
|
5
|
+
export function SessionHeader({ session, onNavigateToSession, }) {
|
|
6
|
+
const { data: parentData } = useParentSession(session.sessionType === 'branch' ? session.id : undefined);
|
|
6
7
|
const totalTokens = useMemo(() => {
|
|
7
8
|
const input = session.totalInputTokens || 0;
|
|
8
9
|
const output = session.totalOutputTokens || 0;
|
|
9
10
|
return input + output;
|
|
10
11
|
}, [session.totalInputTokens, session.totalOutputTokens]);
|
|
11
|
-
// Calculate estimated cost (example rates for GPT-4)
|
|
12
|
-
// These should be adjusted based on the actual model
|
|
13
12
|
const estimatedCost = useMemo(() => {
|
|
14
13
|
const input = session.totalInputTokens || 0;
|
|
15
14
|
const output = session.totalOutputTokens || 0;
|
|
16
|
-
// Example rates (per 1M tokens):
|
|
17
|
-
// GPT-4: $30 input, $60 output
|
|
18
|
-
// GPT-3.5: $0.50 input, $1.50 output
|
|
19
|
-
// These are approximate and should be updated based on actual model
|
|
20
15
|
const inputCostPer1M = 30;
|
|
21
16
|
const outputCostPer1M = 60;
|
|
22
17
|
const inputCost = (input / 1_000_000) * inputCostPer1M;
|
|
23
18
|
const outputCost = (output / 1_000_000) * outputCostPer1M;
|
|
24
19
|
return inputCost + outputCost;
|
|
25
20
|
}, [session.totalInputTokens, session.totalOutputTokens]);
|
|
26
|
-
// Format time duration
|
|
27
21
|
const formatDuration = (ms) => {
|
|
28
22
|
if (!ms)
|
|
29
23
|
return '0s';
|
|
@@ -40,10 +34,12 @@ export function SessionHeader({ session }) {
|
|
|
40
34
|
}
|
|
41
35
|
return `${seconds}s`;
|
|
42
36
|
};
|
|
43
|
-
// Format number with commas
|
|
44
37
|
const formatNumber = (num) => {
|
|
45
38
|
return num.toLocaleString('en-US');
|
|
46
39
|
};
|
|
47
|
-
|
|
40
|
+
const isBranch = session.sessionType === 'branch';
|
|
41
|
+
const parentSession = parentData?.parent;
|
|
42
|
+
return (_jsx("div", { className: "border-b border-border bg-background/95 backdrop-blur-sm", children: _jsxs("div", { className: "max-w-3xl mx-auto px-6 py-6", children: [isBranch && (_jsxs("div", { className: "flex items-center gap-2 mb-2 text-sm", children: [_jsx(GitBranch, { className: "h-4 w-4 text-violet-500" }), _jsx("span", { className: "text-violet-600 dark:text-violet-400", children: "Branch" }), parentSession && (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-muted-foreground", children: "from" }), _jsxs("button", { type: "button", onClick: () => onNavigateToSession?.(parentSession.id), className: "text-primary hover:underline flex items-center gap-1", children: [parentSession.title ||
|
|
43
|
+
`Session ${parentSession.id.slice(0, 8)}`, _jsx(ArrowUpRight, { className: "h-3 w-3" })] })] })), !parentSession && session.parentSessionId && (_jsx("span", { className: "text-muted-foreground italic", children: "(parent deleted)" }))] })), _jsx("h1", { className: "text-2xl font-semibold text-foreground mb-4", children: session.title || 'Untitled Session' }), _jsxs("div", { className: "flex flex-wrap gap-6 text-sm", children: [_jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [_jsx(Hash, { className: "w-4 h-4" }), _jsxs("div", { className: "flex flex-col", children: [_jsx("span", { className: "text-xs uppercase tracking-wide opacity-70", children: "Total Tokens" }), _jsx("span", { className: "text-foreground font-medium", children: formatNumber(totalTokens) }), (session.totalInputTokens || session.totalOutputTokens) && (_jsxs("span", { className: "text-xs opacity-60", children: [formatNumber(session.totalInputTokens || 0), " in /", ' ', formatNumber(session.totalOutputTokens || 0), " out"] }))] })] }), _jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [_jsx(Clock, { className: "w-4 h-4" }), _jsxs("div", { className: "flex flex-col", children: [_jsx("span", { className: "text-xs uppercase tracking-wide opacity-70", children: "Tool Time" }), _jsx("span", { className: "text-foreground font-medium", children: formatDuration(session.totalToolTimeMs) })] })] }), estimatedCost > 0 && (_jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [_jsx(DollarSign, { className: "w-4 h-4" }), _jsxs("div", { className: "flex flex-col", children: [_jsx("span", { className: "text-xs uppercase tracking-wide opacity-70", children: "Est. Cost" }), _jsxs("span", { className: "text-foreground font-medium", children: ["$", estimatedCost.toFixed(4)] })] })] })), _jsx("div", { className: "flex items-center gap-2 text-muted-foreground ml-auto", children: _jsxs("div", { className: "flex flex-col items-end", children: [_jsx("span", { className: "text-xs uppercase tracking-wide opacity-70", children: "Model" }), _jsx("span", { className: "text-foreground font-medium", children: session.model }), _jsxs("span", { className: "text-xs opacity-60", children: [session.provider, " \u00B7 ", session.agent] })] }) })] })] }) }));
|
|
48
44
|
}
|
|
49
45
|
//# sourceMappingURL=SessionHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionHeader.js","sourceRoot":"","sources":["../../../src/components/sessions/SessionHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"SessionHeader.js","sourceRoot":"","sources":["../../../src/components/sessions/SessionHeader.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionItem.d.ts","sourceRoot":"","sources":["../../../src/components/sessions/SessionItem.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C,UAAU,gBAAgB;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"SessionItem.d.ts","sourceRoot":"","sources":["../../../src/components/sessions/SessionItem.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C,UAAU,gBAAgB;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,wDAiEtB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { memo } from 'react';
|
|
3
|
-
import { MessageSquare } from 'lucide-react';
|
|
3
|
+
import { MessageSquare, GitBranch } from 'lucide-react';
|
|
4
4
|
export const SessionItem = memo(function SessionItem({ session, isActive, onClick, }) {
|
|
5
5
|
const formatDate = (timestamp) => {
|
|
6
6
|
const date = new Date(timestamp);
|
|
@@ -19,9 +19,10 @@ export const SessionItem = memo(function SessionItem({ session, isActive, onClic
|
|
|
19
19
|
return `${diffDays}d ago`;
|
|
20
20
|
return date.toLocaleDateString();
|
|
21
21
|
};
|
|
22
|
+
const isBranch = session.sessionType === 'branch';
|
|
22
23
|
const baseStyles = 'group w-full rounded-lg px-3 py-3 text-left transition-colors duration-150';
|
|
23
24
|
const activeStyles = 'bg-primary/10';
|
|
24
25
|
const inactiveStyles = 'hover:bg-muted/20';
|
|
25
|
-
return (_jsx("button", { type: "button", onClick: onClick, className: `${baseStyles} ${isActive ? activeStyles : inactiveStyles}`, children: _jsxs("div", { className: "flex items-start gap-3", children: [_jsx(MessageSquare, { className: `h-4 w-4 shrink-0 mt-1 text-muted-foreground ${isActive ? 'text-primary' : ''}` }), _jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
26
|
+
return (_jsx("button", { type: "button", onClick: onClick, className: `${baseStyles} ${isActive ? activeStyles : inactiveStyles}`, children: _jsxs("div", { className: "flex items-start gap-3", children: [isBranch ? (_jsx(GitBranch, { className: `h-4 w-4 shrink-0 mt-1 text-muted-foreground ${isActive ? 'text-primary' : ''}` })) : (_jsx(MessageSquare, { className: `h-4 w-4 shrink-0 mt-1 text-muted-foreground ${isActive ? 'text-primary' : ''}` })), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("h3", { className: "truncate text-sm font-semibold text-foreground", children: session.title || `Session ${session.id.slice(0, 8)}` }), isBranch && (_jsx("span", { className: "text-[10px] px-1.5 py-0.5 bg-violet-500/10 text-violet-600 dark:text-violet-400 rounded-full shrink-0", children: "branch" }))] }), _jsxs("div", { className: "mt-1 flex items-center gap-2 text-xs text-muted-foreground/80", children: [session.agent && (_jsx("span", { className: "uppercase", children: session.agent })), session.agent && _jsx("span", { children: "\u2022" }), _jsx("span", { children: formatDate(session.lastActiveAt || session.createdAt) })] })] })] }) }));
|
|
26
27
|
});
|
|
27
28
|
//# sourceMappingURL=SessionItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionItem.js","sourceRoot":"","sources":["../../../src/components/sessions/SessionItem.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"SessionItem.js","sourceRoot":"","sources":["../../../src/components/sessions/SessionItem.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AASxD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,WAAW,CAAC,EACpD,OAAO,EACP,QAAQ,EACR,OAAO,GACW;IAClB,MAAM,UAAU,GAAG,CAAC,SAAiB,EAAE,EAAE;QACxC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;QAE5C,IAAI,QAAQ,GAAG,CAAC;YAAE,OAAO,UAAU,CAAC;QACpC,IAAI,QAAQ,GAAG,EAAE;YAAE,OAAO,GAAG,QAAQ,OAAO,CAAC;QAC7C,IAAI,SAAS,GAAG,EAAE;YAAE,OAAO,GAAG,SAAS,OAAO,CAAC;QAC/C,IAAI,QAAQ,GAAG,CAAC;YAAE,OAAO,GAAG,QAAQ,OAAO,CAAC;QAC5C,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAClC,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,KAAK,QAAQ,CAAC;IAElD,MAAM,UAAU,GACf,4EAA4E,CAAC;IAC9E,MAAM,YAAY,GAAG,eAAe,CAAC;IACrC,MAAM,cAAc,GAAG,mBAAmB,CAAC;IAE3C,OAAO,CACN,iBACC,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,GAAG,UAAU,IAAI,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,EAAE,YAEtE,eAAK,SAAS,EAAC,wBAAwB,aACrC,QAAQ,CAAC,CAAC,CAAC,CACX,KAAC,SAAS,IACT,SAAS,EAAE,+CAA+C,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,GACzF,CACF,CAAC,CAAC,CAAC,CACH,KAAC,aAAa,IACb,SAAS,EAAE,+CAA+C,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,GACzF,CACF,EACD,eAAK,SAAS,EAAC,gBAAgB,aAC9B,eAAK,SAAS,EAAC,yBAAyB,aACvC,aAAI,SAAS,EAAC,gDAAgD,YAC5D,OAAO,CAAC,KAAK,IAAI,WAAW,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GACjD,EACJ,QAAQ,IAAI,CACZ,eAAM,SAAS,EAAC,uGAAuG,uBAEhH,CACP,IACI,EACN,eAAK,SAAS,EAAC,+DAA+D,aAC5E,OAAO,CAAC,KAAK,IAAI,CACjB,eAAM,SAAS,EAAC,WAAW,YAAE,OAAO,CAAC,KAAK,GAAQ,CAClD,EACA,OAAO,CAAC,KAAK,IAAI,oCAAc,EAChC,yBAAO,UAAU,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC,GAAQ,IAC/D,IACD,IACD,GACE,CACT,CAAC;AACH,CAAC,CAAC,CAAC"}
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC"}
|
package/dist/hooks/index.js
CHANGED
package/dist/hooks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { CreateBranchRequest } from '../types/api';
|
|
2
|
+
export declare function useCreateBranch(sessionId: string | undefined): import("@tanstack/react-query").UseMutationResult<import("..").BranchResult, Error, CreateBranchRequest, unknown>;
|
|
3
|
+
export declare function useBranches(sessionId: string | undefined): import("@tanstack/react-query").UseQueryResult<import("..").ListBranchesResponse, Error>;
|
|
4
|
+
export declare function useParentSession(sessionId: string | undefined): import("@tanstack/react-query").UseQueryResult<import("..").ParentSessionResponse, Error>;
|
|
5
|
+
//# sourceMappingURL=useBranch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBranch.d.ts","sourceRoot":"","sources":["../../src/hooks/useBranch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,qHAiB5D;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,4FASxD;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,6FAS7D"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
|
|
2
|
+
import { apiClient } from '../lib/api-client';
|
|
3
|
+
export function useCreateBranch(sessionId) {
|
|
4
|
+
const queryClient = useQueryClient();
|
|
5
|
+
return useMutation({
|
|
6
|
+
mutationFn: (data) => {
|
|
7
|
+
if (!sessionId)
|
|
8
|
+
throw new Error('No session ID');
|
|
9
|
+
return apiClient.createBranch(sessionId, data);
|
|
10
|
+
},
|
|
11
|
+
onSuccess: () => {
|
|
12
|
+
queryClient.invalidateQueries({ queryKey: ['sessions'] });
|
|
13
|
+
if (sessionId) {
|
|
14
|
+
queryClient.invalidateQueries({
|
|
15
|
+
queryKey: ['branches', sessionId],
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
export function useBranches(sessionId) {
|
|
22
|
+
return useQuery({
|
|
23
|
+
queryKey: ['branches', sessionId],
|
|
24
|
+
queryFn: () => {
|
|
25
|
+
if (!sessionId)
|
|
26
|
+
throw new Error('No session ID');
|
|
27
|
+
return apiClient.listBranches(sessionId);
|
|
28
|
+
},
|
|
29
|
+
enabled: Boolean(sessionId),
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
export function useParentSession(sessionId) {
|
|
33
|
+
return useQuery({
|
|
34
|
+
queryKey: ['parentSession', sessionId],
|
|
35
|
+
queryFn: () => {
|
|
36
|
+
if (!sessionId)
|
|
37
|
+
throw new Error('No session ID');
|
|
38
|
+
return apiClient.getParentSession(sessionId);
|
|
39
|
+
},
|
|
40
|
+
enabled: Boolean(sessionId),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=useBranch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBranch.js","sourceRoot":"","sources":["../../src/hooks/useBranch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,MAAM,UAAU,eAAe,CAAC,SAA6B;IAC5D,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,OAAO,WAAW,CAAC;QAClB,UAAU,EAAE,CAAC,IAAyB,EAAE,EAAE;YACzC,IAAI,CAAC,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;YACjD,OAAO,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;QACD,SAAS,EAAE,GAAG,EAAE;YACf,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC1D,IAAI,SAAS,EAAE,CAAC;gBACf,WAAW,CAAC,iBAAiB,CAAC;oBAC7B,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC;iBACjC,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,SAA6B;IACxD,OAAO,QAAQ,CAAC;QACf,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC;QACjC,OAAO,EAAE,GAAG,EAAE;YACb,IAAI,CAAC,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;YACjD,OAAO,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC;KAC3B,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,SAA6B;IAC7D,OAAO,QAAQ,CAAC;QACf,QAAQ,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC;QACtC,OAAO,EAAE,GAAG,EAAE;YACb,IAAI,CAAC,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;YACjD,OAAO,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC;KAC3B,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useConfig.d.ts","sourceRoot":"","sources":["../../src/hooks/useConfig.ts"],"names":[],"mappings":"AAGA,wBAAgB,SAAS;;;;;;;;UAKxB;AAED,wBAAgB,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM;;;;
|
|
1
|
+
{"version":3,"file":"useConfig.d.ts","sourceRoot":"","sources":["../../src/hooks/useConfig.ts"],"names":[],"mappings":"AAGA,wBAAgB,SAAS;;;;;;;;UAKxB;AAED,wBAAgB,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM;;;;gBAcmwO,CAAC;;;UAR9yO;AAED,wBAAgB,YAAY,0FAK3B"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type QueueState = {
|
|
2
|
+
currentMessageId: string | null;
|
|
3
|
+
queuedMessages: Array<{
|
|
4
|
+
messageId: string;
|
|
5
|
+
position: number;
|
|
6
|
+
}>;
|
|
7
|
+
queueLength: number;
|
|
8
|
+
};
|
|
9
|
+
export declare function useQueueState(sessionId: string | undefined): QueueState;
|
|
10
|
+
export declare function useMessageQueuePosition(sessionId: string | undefined, messageId: string): {
|
|
11
|
+
isQueued: boolean;
|
|
12
|
+
isRunning: boolean;
|
|
13
|
+
position: number | null;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=useQueueState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useQueueState.d.ts","sourceRoot":"","sources":["../../src/hooks/useQueueState.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG;IACxB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,WAAW,EAAE,MAAM,CAAC;CACpB,CAAC;AAQF,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CASvE;AAED,wBAAgB,uBAAuB,CACtC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,SAAS,EAAE,MAAM,GACf;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAoBpE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { useQuery } from '@tanstack/react-query';
|
|
2
|
+
const defaultQueueState = {
|
|
3
|
+
currentMessageId: null,
|
|
4
|
+
queuedMessages: [],
|
|
5
|
+
queueLength: 0,
|
|
6
|
+
};
|
|
7
|
+
export function useQueueState(sessionId) {
|
|
8
|
+
const { data } = useQuery({
|
|
9
|
+
queryKey: ['queueState', sessionId],
|
|
10
|
+
enabled: !!sessionId,
|
|
11
|
+
initialData: defaultQueueState,
|
|
12
|
+
staleTime: Infinity,
|
|
13
|
+
});
|
|
14
|
+
return data ?? defaultQueueState;
|
|
15
|
+
}
|
|
16
|
+
export function useMessageQueuePosition(sessionId, messageId) {
|
|
17
|
+
const queueState = useQueueState(sessionId);
|
|
18
|
+
if (!sessionId || !queueState) {
|
|
19
|
+
return { isQueued: false, isRunning: false, position: null };
|
|
20
|
+
}
|
|
21
|
+
if (queueState.currentMessageId === messageId) {
|
|
22
|
+
return { isQueued: false, isRunning: true, position: null };
|
|
23
|
+
}
|
|
24
|
+
const queuedItem = queueState.queuedMessages.find((item) => item.messageId === messageId);
|
|
25
|
+
if (queuedItem) {
|
|
26
|
+
return { isQueued: true, isRunning: false, position: queuedItem.position };
|
|
27
|
+
}
|
|
28
|
+
return { isQueued: false, isRunning: false, position: null };
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=useQueueState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useQueueState.js","sourceRoot":"","sources":["../../src/hooks/useQueueState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAQjD,MAAM,iBAAiB,GAAe;IACrC,gBAAgB,EAAE,IAAI;IACtB,cAAc,EAAE,EAAE;IAClB,WAAW,EAAE,CAAC;CACd,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,SAA6B;IAC1D,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAa;QACrC,QAAQ,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;QACnC,OAAO,EAAE,CAAC,CAAC,SAAS;QACpB,WAAW,EAAE,iBAAiB;QAC9B,SAAS,EAAE,QAAQ;KACnB,CAAC,CAAC;IAEH,OAAO,IAAI,IAAI,iBAAiB,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,uBAAuB,CACtC,SAA6B,EAC7B,SAAiB;IAEjB,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAE5C,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;QAC/B,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC9D,CAAC;IAED,IAAI,UAAU,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAC/C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC7D,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,cAAc,CAAC,IAAI,CAChD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CACtC,CAAC;IAEF,IAAI,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC;IAC5E,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC9D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSessionStream.d.ts","sourceRoot":"","sources":["../../src/hooks/useSessionStream.ts"],"names":[],"mappings":"AAMA,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"useSessionStream.d.ts","sourceRoot":"","sources":["../../src/hooks/useSessionStream.ts"],"names":[],"mappings":"AAMA,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,QAwb7D"}
|
|
@@ -373,6 +373,15 @@ export function useSessionStream(sessionId) {
|
|
|
373
373
|
// Error parts are created by the server and will be loaded via query invalidation
|
|
374
374
|
break;
|
|
375
375
|
}
|
|
376
|
+
case 'queue.updated': {
|
|
377
|
+
const queueState = {
|
|
378
|
+
currentMessageId: payload?.currentMessageId,
|
|
379
|
+
queuedMessages: (payload?.queuedMessages ?? []),
|
|
380
|
+
queueLength: (payload?.queueLength ?? 0),
|
|
381
|
+
};
|
|
382
|
+
queryClient.setQueryData(['queueState', sessionId], queueState);
|
|
383
|
+
break;
|
|
384
|
+
}
|
|
376
385
|
default:
|
|
377
386
|
break;
|
|
378
387
|
}
|