@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.
Files changed (78) hide show
  1. package/dist/components/branch/BranchModal.d.ts +11 -0
  2. package/dist/components/branch/BranchModal.d.ts.map +1 -0
  3. package/dist/components/branch/BranchModal.js +45 -0
  4. package/dist/components/branch/BranchModal.js.map +1 -0
  5. package/dist/components/chat/ChatInput.d.ts +2 -0
  6. package/dist/components/chat/ChatInput.d.ts.map +1 -1
  7. package/dist/components/chat/ChatInput.js +6 -2
  8. package/dist/components/chat/ChatInput.js.map +1 -1
  9. package/dist/components/chat/ChatInputContainer.d.ts.map +1 -1
  10. package/dist/components/chat/ChatInputContainer.js +12 -1
  11. package/dist/components/chat/ChatInputContainer.js.map +1 -1
  12. package/dist/components/index.d.ts +1 -0
  13. package/dist/components/index.d.ts.map +1 -1
  14. package/dist/components/index.js +2 -0
  15. package/dist/components/index.js.map +1 -1
  16. package/dist/components/messages/AssistantMessageGroup.d.ts +2 -0
  17. package/dist/components/messages/AssistantMessageGroup.d.ts.map +1 -1
  18. package/dist/components/messages/AssistantMessageGroup.js +44 -16
  19. package/dist/components/messages/AssistantMessageGroup.js.map +1 -1
  20. package/dist/components/messages/MessageThread.d.ts +2 -0
  21. package/dist/components/messages/MessageThread.d.ts.map +1 -1
  22. package/dist/components/messages/MessageThread.js +7 -4
  23. package/dist/components/messages/MessageThread.js.map +1 -1
  24. package/dist/components/messages/MessageThreadContainer.d.ts +1 -0
  25. package/dist/components/messages/MessageThreadContainer.d.ts.map +1 -1
  26. package/dist/components/messages/MessageThreadContainer.js +2 -2
  27. package/dist/components/messages/MessageThreadContainer.js.map +1 -1
  28. package/dist/components/messages/UserMessageGroup.d.ts +2 -0
  29. package/dist/components/messages/UserMessageGroup.d.ts.map +1 -1
  30. package/dist/components/messages/UserMessageGroup.js +40 -4
  31. package/dist/components/messages/UserMessageGroup.js.map +1 -1
  32. package/dist/components/messages/renderers/ReasoningRenderer.js +1 -1
  33. package/dist/components/messages/renderers/ReasoningRenderer.js.map +1 -1
  34. package/dist/components/sessions/LeanHeader.d.ts +2 -1
  35. package/dist/components/sessions/LeanHeader.d.ts.map +1 -1
  36. package/dist/components/sessions/LeanHeader.js +10 -4
  37. package/dist/components/sessions/LeanHeader.js.map +1 -1
  38. package/dist/components/sessions/SessionHeader.d.ts +2 -1
  39. package/dist/components/sessions/SessionHeader.d.ts.map +1 -1
  40. package/dist/components/sessions/SessionHeader.js +9 -13
  41. package/dist/components/sessions/SessionHeader.js.map +1 -1
  42. package/dist/components/sessions/SessionItem.d.ts.map +1 -1
  43. package/dist/components/sessions/SessionItem.js +3 -2
  44. package/dist/components/sessions/SessionItem.js.map +1 -1
  45. package/dist/hooks/index.d.ts +2 -0
  46. package/dist/hooks/index.d.ts.map +1 -1
  47. package/dist/hooks/index.js +2 -0
  48. package/dist/hooks/index.js.map +1 -1
  49. package/dist/hooks/useBranch.d.ts +5 -0
  50. package/dist/hooks/useBranch.d.ts.map +1 -0
  51. package/dist/hooks/useBranch.js +43 -0
  52. package/dist/hooks/useBranch.js.map +1 -0
  53. package/dist/hooks/useConfig.d.ts.map +1 -1
  54. package/dist/hooks/useQueueState.d.ts +15 -0
  55. package/dist/hooks/useQueueState.d.ts.map +1 -0
  56. package/dist/hooks/useQueueState.js +30 -0
  57. package/dist/hooks/useQueueState.js.map +1 -0
  58. package/dist/hooks/useSessionStream.d.ts.map +1 -1
  59. package/dist/hooks/useSessionStream.js +9 -0
  60. package/dist/hooks/useSessionStream.js.map +1 -1
  61. package/dist/lib/api-client.d.ts +23 -1
  62. package/dist/lib/api-client.d.ts.map +1 -1
  63. package/dist/lib/api-client.js +74 -0
  64. package/dist/lib/api-client.js.map +1 -1
  65. package/dist/lib/commands.d.ts.map +1 -1
  66. package/dist/lib/commands.js +7 -1
  67. package/dist/lib/commands.js.map +1 -1
  68. package/dist/stores/index.d.ts +1 -0
  69. package/dist/stores/index.d.ts.map +1 -1
  70. package/dist/stores/index.js +1 -0
  71. package/dist/stores/index.js.map +1 -1
  72. package/dist/stores/queueStore.d.ts +8 -0
  73. package/dist/stores/queueStore.d.ts.map +1 -0
  74. package/dist/stores/queueStore.js +11 -0
  75. package/dist/stores/queueStore.js.map +1 -0
  76. package/dist/types/api.d.ts +29 -0
  77. package/dist/types/api.d.ts.map +1 -1
  78. 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;AAMhD,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC,SAAS,sBAAsB,CAAC,EAC1E,SAAS,GACoB;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,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,GACzB,CACF,CAAC;AACH,CAAC,CAAC,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":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C,UAAU,qBAAqB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CACjB;AAeD,eAAO,MAAM,gBAAgB,6DAmL5B,CAAC"}
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 { User, X, FileText, FileIcon } from 'lucide-react';
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
- export const UserMessageGroup = memo(function UserMessageGroup({ message }) {
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
- 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) }))] }), _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 }) }))] })] }), _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() })] }))] }));
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":"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"}
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
- }, [content, isExpanded, part.completedAt]);
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,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAE5C,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"}
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;AAI/C,UAAU,eAAe;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,UAAU,CAAC,EAC1B,OAAO,EACP,SAAS,EACT,YAAY,GACZ,EAAE,eAAe,2CAuDjB"}
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, Bot } from 'lucide-react';
3
+ import { Hash, DollarSign, MessageSquare, GitBranch, ArrowUpRight, } from 'lucide-react';
4
4
  import { StopButton } from '../chat/StopButton';
5
- export function LeanHeader({ session, isVisible, isGenerating, }) {
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
- 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 items-center gap-4", children: [_jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [_jsx(Bot, { className: "w-4 h-4" }), _jsx("span", { className: "text-foreground font-medium", children: session.agent })] }), isGenerating && _jsx(StopButton, { sessionId: session.id })] }), _jsxs("div", { className: "flex items-center gap-6", children: [_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)] })] }))] })] }) }));
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,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAQhD,MAAM,UAAU,UAAU,CAAC,EAC1B,OAAO,EACP,SAAS,EACT,YAAY,GACK;IACjB,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,IAAI,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC;QAE9C,MAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,MAAM,eAAe,GAAG,EAAE,CAAC;QAE3B,MAAM,SAAS,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,cAAc,CAAC;QACvD,MAAM,UAAU,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,eAAe,CAAC;QAE1D,OAAO,SAAS,GAAG,UAAU,CAAC;IAC/B,CAAC,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAE1D,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,EAAE;QACpC,OAAO,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,OAAO,CACN,cACC,SAAS,EAAE,sIACV,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,mBAC/B,EAAE,YAEF,eAAK,SAAS,EAAC,6DAA6D,aAC3E,eAAK,SAAS,EAAC,yBAAyB,aACvC,eAAK,SAAS,EAAC,+CAA+C,aAC7D,KAAC,GAAG,IAAC,SAAS,EAAC,SAAS,GAAG,EAC3B,eAAM,SAAS,EAAC,6BAA6B,YAAE,OAAO,CAAC,KAAK,GAAQ,IAC/D,EAEL,YAAY,IAAI,KAAC,UAAU,IAAC,SAAS,EAAE,OAAO,CAAC,EAAE,GAAI,IACjD,EAEN,eAAK,SAAS,EAAC,yBAAyB,aACvC,eAAK,SAAS,EAAC,+CAA+C,aAC7D,KAAC,IAAI,IAAC,SAAS,EAAC,SAAS,GAAG,EAC5B,gBAAM,SAAS,EAAC,6BAA6B,aAC3C,YAAY,CAAC,OAAO,CAAC,gBAAgB,IAAI,CAAC,CAAC,QAAI,GAAG,EAClD,YAAY,CAAC,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC,IACvC,IACF,EAEL,aAAa,GAAG,CAAC,IAAI,CACrB,eAAK,SAAS,EAAC,+CAA+C,aAC7D,KAAC,UAAU,IAAC,SAAS,EAAC,SAAS,GAAG,EAClC,gBAAM,SAAS,EAAC,6BAA6B,kBAC1C,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,IACpB,IACF,CACN,IACI,IACD,GACD,CACN,CAAC;AACH,CAAC"}
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;AAG/C,UAAU,kBAAkB;IAC3B,OAAO,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,kBAAkB,2CA8H5D"}
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
- export function SessionHeader({ session }) {
5
- // Calculate total tokens
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
- 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: [_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] })] }) })] })] }) }));
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":"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"}
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,wDAoDtB,CAAC"}
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: [_jsx("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)}` }) }), _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
+ 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;AAS7C,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,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,aACtC,KAAC,aAAa,IACb,SAAS,EAAE,+CAA+C,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,GACzF,EACF,eAAK,SAAS,EAAC,gBAAgB,aAC9B,cAAK,SAAS,EAAC,yBAAyB,YACvC,aAAI,SAAS,EAAC,gDAAgD,YAC5D,OAAO,CAAC,KAAK,IAAI,WAAW,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GACjD,GACA,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"}
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"}
@@ -11,4 +11,6 @@ export * from './useKeyboardShortcuts';
11
11
  export * from './useImageUpload';
12
12
  export * from './useFileUpload';
13
13
  export * from './useSessionFiles';
14
+ export * from './useQueueState';
15
+ export * from './useBranch';
14
16
  //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -12,4 +12,6 @@ export * from './useKeyboardShortcuts';
12
12
  export * from './useImageUpload';
13
13
  export * from './useFileUpload';
14
14
  export * from './useSessionFiles';
15
+ export * from './useQueueState';
16
+ export * from './useBranch';
15
17
  //# sourceMappingURL=index.js.map
@@ -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;;;;gBAc25L,CAAC;;;UARt8L;AAED,wBAAgB,YAAY,0FAK3B"}
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,QA4a7D"}
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
  }