@google/gemini-cli 0.19.0-nightly.20251121.5982abeff → 0.19.0-nightly.20251122.42c2e1b21

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 (175) hide show
  1. package/dist/google-gemini-cli-0.19.0-nightly.20251120.8e531dc02.tgz +0 -0
  2. package/dist/index.js +8 -6
  3. package/dist/index.js.map +1 -1
  4. package/dist/package.json +2 -2
  5. package/dist/src/config/auth.js +4 -0
  6. package/dist/src/config/auth.js.map +1 -1
  7. package/dist/src/config/auth.test.js +61 -37
  8. package/dist/src/config/auth.test.js.map +1 -1
  9. package/dist/src/config/config.integration.test.js +81 -198
  10. package/dist/src/config/config.integration.test.js.map +1 -1
  11. package/dist/src/config/config.js +2 -6
  12. package/dist/src/config/config.js.map +1 -1
  13. package/dist/src/config/config.test.js +196 -299
  14. package/dist/src/config/config.test.js.map +1 -1
  15. package/dist/src/config/extension.test.js +109 -133
  16. package/dist/src/config/extension.test.js.map +1 -1
  17. package/dist/src/config/extensions/consent.test.d.ts +6 -0
  18. package/dist/src/config/extensions/consent.test.js +152 -0
  19. package/dist/src/config/extensions/consent.test.js.map +1 -0
  20. package/dist/src/config/extensions/extensionEnablement.test.js +82 -15
  21. package/dist/src/config/extensions/extensionEnablement.test.js.map +1 -1
  22. package/dist/src/config/extensions/extensionSettings.test.js +105 -1
  23. package/dist/src/config/extensions/extensionSettings.test.js.map +1 -1
  24. package/dist/src/config/extensions/github.d.ts +1 -0
  25. package/dist/src/config/extensions/github.js +1 -1
  26. package/dist/src/config/extensions/github.js.map +1 -1
  27. package/dist/src/config/extensions/github.test.js +197 -318
  28. package/dist/src/config/extensions/github.test.js.map +1 -1
  29. package/dist/src/config/extensions/storage.test.d.ts +6 -0
  30. package/dist/src/config/extensions/storage.test.js +64 -0
  31. package/dist/src/config/extensions/storage.test.js.map +1 -0
  32. package/dist/src/config/extensions/update.test.js +154 -263
  33. package/dist/src/config/extensions/update.test.js.map +1 -1
  34. package/dist/src/config/extensions/variables.test.js +87 -1
  35. package/dist/src/config/extensions/variables.test.js.map +1 -1
  36. package/dist/src/config/sandboxConfig.d.ts +1 -1
  37. package/dist/src/config/sandboxConfig.js.map +1 -1
  38. package/dist/src/config/sandboxConfig.test.d.ts +6 -0
  39. package/dist/src/config/sandboxConfig.test.js +178 -0
  40. package/dist/src/config/sandboxConfig.test.js.map +1 -0
  41. package/dist/src/config/settingPaths.test.d.ts +6 -0
  42. package/dist/src/config/settingPaths.test.js +22 -0
  43. package/dist/src/config/settingPaths.test.js.map +1 -0
  44. package/dist/src/config/settings.test.js +164 -226
  45. package/dist/src/config/settings.test.js.map +1 -1
  46. package/dist/src/config/settingsSchema.d.ts +9 -9
  47. package/dist/src/config/settingsSchema.js +9 -9
  48. package/dist/src/config/settingsSchema.js.map +1 -1
  49. package/dist/src/config/settingsSchema.test.js +0 -6
  50. package/dist/src/config/settingsSchema.test.js.map +1 -1
  51. package/dist/src/gemini.d.ts +1 -1
  52. package/dist/src/gemini.js +5 -6
  53. package/dist/src/gemini.js.map +1 -1
  54. package/dist/src/gemini.test.js +4 -0
  55. package/dist/src/gemini.test.js.map +1 -1
  56. package/dist/src/generated/git-commit.d.ts +2 -2
  57. package/dist/src/generated/git-commit.js +2 -2
  58. package/dist/src/services/BuiltinCommandLoader.js +1 -1
  59. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  60. package/dist/src/services/BuiltinCommandLoader.test.js +0 -22
  61. package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -1
  62. package/dist/src/test-utils/mockCommandContext.js +1 -1
  63. package/dist/src/ui/AppContainer.js +13 -11
  64. package/dist/src/ui/AppContainer.js.map +1 -1
  65. package/dist/src/ui/AppContainer.test.js +3 -6
  66. package/dist/src/ui/AppContainer.test.js.map +1 -1
  67. package/dist/src/ui/auth/AuthDialog.js +17 -10
  68. package/dist/src/ui/auth/AuthDialog.js.map +1 -1
  69. package/dist/src/ui/auth/AuthDialog.test.js +5 -2
  70. package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
  71. package/dist/src/ui/components/DebugProfiler.js +1 -1
  72. package/dist/src/ui/components/DebugProfiler.js.map +1 -1
  73. package/dist/src/ui/components/DialogManager.js +6 -1
  74. package/dist/src/ui/components/DialogManager.js.map +1 -1
  75. package/dist/src/ui/components/InputPrompt.js +1 -1
  76. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  77. package/dist/src/ui/components/LoadingIndicator.js +6 -1
  78. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  79. package/dist/src/ui/components/ModelDialog.test.js +1 -1
  80. package/dist/src/ui/components/ModelDialog.test.js.map +1 -1
  81. package/dist/src/ui/components/SessionBrowser.d.ts +98 -0
  82. package/dist/src/ui/components/SessionBrowser.js +457 -0
  83. package/dist/src/ui/components/SessionBrowser.js.map +1 -0
  84. package/dist/src/ui/components/SessionBrowser.test.d.ts +6 -0
  85. package/dist/src/ui/components/SessionBrowser.test.js +245 -0
  86. package/dist/src/ui/components/SessionBrowser.test.js.map +1 -0
  87. package/dist/src/ui/components/messages/ShellToolMessage.js +2 -2
  88. package/dist/src/ui/components/messages/ShellToolMessage.js.map +1 -1
  89. package/dist/src/ui/components/messages/ToolMessage.d.ts +5 -0
  90. package/dist/src/ui/components/messages/ToolMessage.js +32 -3
  91. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  92. package/dist/src/ui/constants.d.ts +1 -0
  93. package/dist/src/ui/constants.js +1 -0
  94. package/dist/src/ui/constants.js.map +1 -1
  95. package/dist/src/ui/hooks/shellCommandProcessor.d.ts +1 -0
  96. package/dist/src/ui/hooks/shellCommandProcessor.js +3 -1
  97. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
  98. package/dist/src/ui/hooks/useBracketedPaste.js +3 -5
  99. package/dist/src/ui/hooks/useBracketedPaste.js.map +1 -1
  100. package/dist/src/ui/hooks/useGeminiStream.d.ts +1 -0
  101. package/dist/src/ui/hooks/useGeminiStream.js +6 -4
  102. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  103. package/dist/src/ui/hooks/useGeminiStream.test.js +1 -1
  104. package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
  105. package/dist/src/ui/hooks/useInactivityTimer.d.ts +14 -0
  106. package/dist/src/ui/hooks/useInactivityTimer.js +30 -0
  107. package/dist/src/ui/hooks/useInactivityTimer.js.map +1 -0
  108. package/dist/src/ui/hooks/useLoadingIndicator.d.ts +1 -1
  109. package/dist/src/ui/hooks/useLoadingIndicator.js +2 -2
  110. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
  111. package/dist/src/ui/hooks/useLoadingIndicator.test.js +16 -5
  112. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
  113. package/dist/src/ui/hooks/usePhraseCycler.d.ts +4 -1
  114. package/dist/src/ui/hooks/usePhraseCycler.js +52 -43
  115. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
  116. package/dist/src/ui/hooks/usePhraseCycler.test.js +52 -3
  117. package/dist/src/ui/hooks/usePhraseCycler.test.js.map +1 -1
  118. package/dist/src/ui/hooks/useReactToolScheduler.d.ts +2 -1
  119. package/dist/src/ui/hooks/useReactToolScheduler.js +3 -0
  120. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  121. package/dist/src/ui/hooks/useSessionBrowser.d.ts +18 -1
  122. package/dist/src/ui/hooks/useSessionBrowser.js +59 -0
  123. package/dist/src/ui/hooks/useSessionBrowser.js.map +1 -1
  124. package/dist/src/ui/hooks/useSessionBrowser.test.js +154 -526
  125. package/dist/src/ui/hooks/useSessionBrowser.test.js.map +1 -1
  126. package/dist/src/ui/hooks/useSlashCompletion.test.js +1 -1
  127. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
  128. package/dist/src/ui/hooks/useToolScheduler.test.js +1 -1
  129. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  130. package/dist/src/ui/privacy/CloudFreePrivacyNotice.test.d.ts +6 -0
  131. package/dist/src/ui/privacy/CloudFreePrivacyNotice.test.js +121 -0
  132. package/dist/src/ui/privacy/CloudFreePrivacyNotice.test.js.map +1 -0
  133. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.test.d.ts +6 -0
  134. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.test.js +34 -0
  135. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.test.js.map +1 -0
  136. package/dist/src/ui/privacy/GeminiPrivacyNotice.test.d.ts +6 -0
  137. package/dist/src/ui/privacy/GeminiPrivacyNotice.test.js +34 -0
  138. package/dist/src/ui/privacy/GeminiPrivacyNotice.test.js.map +1 -0
  139. package/dist/src/ui/privacy/PrivacyNotice.test.d.ts +6 -0
  140. package/dist/src/ui/privacy/PrivacyNotice.test.js +62 -0
  141. package/dist/src/ui/privacy/PrivacyNotice.test.js.map +1 -0
  142. package/dist/src/ui/types.js +1 -1
  143. package/dist/src/ui/utils/bracketedPaste.d.ts +7 -0
  144. package/dist/src/ui/utils/bracketedPaste.js +15 -0
  145. package/dist/src/ui/utils/bracketedPaste.js.map +1 -0
  146. package/dist/src/ui/utils/kittyProtocolDetector.js +3 -4
  147. package/dist/src/ui/utils/kittyProtocolDetector.js.map +1 -1
  148. package/dist/src/ui/utils/mouse.d.ts +2 -2
  149. package/dist/src/ui/utils/mouse.js +2 -11
  150. package/dist/src/ui/utils/mouse.js.map +1 -1
  151. package/dist/src/utils/sessionCleanup.test.js +38 -0
  152. package/dist/src/utils/sessionCleanup.test.js.map +1 -1
  153. package/dist/src/utils/sessionUtils.d.ts +49 -4
  154. package/dist/src/utils/sessionUtils.js +100 -25
  155. package/dist/src/utils/sessionUtils.js.map +1 -1
  156. package/dist/src/utils/sessionUtils.test.js +46 -3
  157. package/dist/src/utils/sessionUtils.test.js.map +1 -1
  158. package/dist/src/utils/sessions.js +4 -1
  159. package/dist/src/utils/sessions.js.map +1 -1
  160. package/dist/src/utils/sessions.test.js +42 -0
  161. package/dist/src/utils/sessions.test.js.map +1 -1
  162. package/dist/src/zed-integration/connection.test.d.ts +6 -0
  163. package/dist/src/zed-integration/connection.test.js +175 -0
  164. package/dist/src/zed-integration/connection.test.js.map +1 -0
  165. package/dist/src/zed-integration/fileSystemService.test.d.ts +6 -0
  166. package/dist/src/zed-integration/fileSystemService.test.js +98 -0
  167. package/dist/src/zed-integration/fileSystemService.test.js.map +1 -0
  168. package/dist/src/zed-integration/zedIntegration.d.ts +31 -1
  169. package/dist/src/zed-integration/zedIntegration.js +5 -2
  170. package/dist/src/zed-integration/zedIntegration.js.map +1 -1
  171. package/dist/src/zed-integration/zedIntegration.test.d.ts +6 -0
  172. package/dist/src/zed-integration/zedIntegration.test.js +619 -0
  173. package/dist/src/zed-integration/zedIntegration.test.js.map +1 -0
  174. package/dist/tsconfig.tsbuildinfo +1 -1
  175. package/package.json +3 -3
@@ -9,6 +9,19 @@ import type { Config, ConversationRecord, MessageRecord } from '@google/gemini-c
9
9
  * Used when --resume is passed without a value to select the most recent session.
10
10
  */
11
11
  export declare const RESUME_LATEST = "latest";
12
+ /**
13
+ * Represents a text match found during search with surrounding context.
14
+ */
15
+ export interface TextMatch {
16
+ /** Text content before the match (with ellipsis if truncated) */
17
+ before: string;
18
+ /** The exact matched text */
19
+ match: string;
20
+ /** Text content after the match (with ellipsis if truncated) */
21
+ after: string;
22
+ /** Role of the message author where the match was found */
23
+ role: 'user' | 'assistant';
24
+ }
12
25
  /**
13
26
  * Session information for display and selection purposes.
14
27
  */
@@ -21,14 +34,29 @@ export interface SessionInfo {
21
34
  fileName: string;
22
35
  /** ISO timestamp when session started */
23
36
  startTime: string;
37
+ /** Total number of messages in the session */
38
+ messageCount: number;
24
39
  /** ISO timestamp when session was last updated */
25
40
  lastUpdated: string;
41
+ /** Display name for the session (typically first user message) */
42
+ displayName: string;
26
43
  /** Cleaned first user message content */
27
44
  firstUserMessage: string;
28
45
  /** Whether this is the currently active session */
29
46
  isCurrentSession: boolean;
30
47
  /** Display index in the list */
31
48
  index: number;
49
+ /** Full concatenated content (only loaded when needed for search) */
50
+ fullContent?: string;
51
+ /** Processed messages with normalized roles (only loaded when needed) */
52
+ messages?: Array<{
53
+ role: 'user' | 'assistant';
54
+ content: string;
55
+ }>;
56
+ /** Search result snippets when filtering */
57
+ matchSnippets?: TextMatch[];
58
+ /** Total number of matches found in this session */
59
+ matchCount?: number;
32
60
  }
33
61
  /**
34
62
  * Represents a session file, which may be valid or corrupted.
@@ -45,25 +73,42 @@ export interface SessionFileEntry {
45
73
  export interface SessionSelectionResult {
46
74
  sessionPath: string;
47
75
  sessionData: ConversationRecord;
76
+ displayInfo: string;
48
77
  }
78
+ /**
79
+ * Cleans and sanitizes message content for display by:
80
+ * - Converting newlines to spaces
81
+ * - Collapsing multiple whitespace to single spaces
82
+ * - Removing non-printable characters (keeping only ASCII 32-126)
83
+ * - Trimming leading/trailing whitespace
84
+ * @param message - The raw message content to clean
85
+ * @returns Sanitized message suitable for display
86
+ */
87
+ export declare const cleanMessage: (message: string) => string;
49
88
  /**
50
89
  * Extracts the first meaningful user message from conversation messages.
51
90
  */
52
91
  export declare const extractFirstUserMessage: (messages: MessageRecord[]) => string;
53
92
  /**
54
- * Formats a timestamp as relative time (e.g., "2 hours ago", "3 days ago").
93
+ * Formats a timestamp as relative time.
94
+ * @param timestamp - The timestamp to format
95
+ * @param style - 'long' (e.g. "2 hours ago") or 'short' (e.g. "2h")
55
96
  */
56
- export declare const formatRelativeTime: (timestamp: string) => string;
97
+ export declare const formatRelativeTime: (timestamp: string, style?: "long" | "short") => string;
98
+ export interface GetSessionOptions {
99
+ /** Whether to load full message content (needed for search) */
100
+ includeFullContent?: boolean;
101
+ }
57
102
  /**
58
103
  * Loads all session files (including corrupted ones) from the chats directory.
59
104
  * @returns Array of session file entries, with sessionInfo null for corrupted files
60
105
  */
61
- export declare const getAllSessionFiles: (chatsDir: string, currentSessionId?: string) => Promise<SessionFileEntry[]>;
106
+ export declare const getAllSessionFiles: (chatsDir: string, currentSessionId?: string, options?: GetSessionOptions) => Promise<SessionFileEntry[]>;
62
107
  /**
63
108
  * Loads all valid session files from the chats directory and converts them to SessionInfo.
64
109
  * Corrupted files are automatically filtered out.
65
110
  */
66
- export declare const getSessionFiles: (chatsDir: string, currentSessionId?: string) => Promise<SessionInfo[]>;
111
+ export declare const getSessionFiles: (chatsDir: string, currentSessionId?: string, options?: GetSessionOptions) => Promise<SessionInfo[]>;
67
112
  /**
68
113
  * Utility class for session discovery and selection.
69
114
  */
@@ -3,7 +3,7 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { SESSION_FILE_PREFIX, partListUnionToString, } from '@google/gemini-cli-core';
6
+ import { partListUnionToString, SESSION_FILE_PREFIX, } from '@google/gemini-cli-core';
7
7
  import * as fs from 'node:fs/promises';
8
8
  import path from 'node:path';
9
9
  /**
@@ -11,25 +11,52 @@ import path from 'node:path';
11
11
  * Used when --resume is passed without a value to select the most recent session.
12
12
  */
13
13
  export const RESUME_LATEST = 'latest';
14
+ /**
15
+ * Cleans and sanitizes message content for display by:
16
+ * - Converting newlines to spaces
17
+ * - Collapsing multiple whitespace to single spaces
18
+ * - Removing non-printable characters (keeping only ASCII 32-126)
19
+ * - Trimming leading/trailing whitespace
20
+ * @param message - The raw message content to clean
21
+ * @returns Sanitized message suitable for display
22
+ */
23
+ export const cleanMessage = (message) => message
24
+ .replace(/\n+/g, ' ')
25
+ .replace(/\s+/g, ' ')
26
+ .replace(/[^\x20-\x7E]+/g, '') // Non-printable.
27
+ .trim();
14
28
  /**
15
29
  * Extracts the first meaningful user message from conversation messages.
16
30
  */
17
31
  export const extractFirstUserMessage = (messages) => {
18
- const userMessage = messages.find((msg) => {
32
+ const userMessage = messages
33
+ // First try filtering out slash commands.
34
+ .filter((msg) => {
19
35
  const content = partListUnionToString(msg.content);
20
- return msg.type === 'user' && content?.trim() && content !== '/resume';
21
- });
36
+ return (!content.startsWith('/') &&
37
+ !content.startsWith('?') &&
38
+ content.trim().length > 0);
39
+ })
40
+ .find((msg) => msg.type === 'user');
41
+ let content;
22
42
  if (!userMessage) {
23
- return 'Empty conversation';
43
+ // Fallback to first user message even if it's a slash command
44
+ const firstMsg = messages.find((msg) => msg.type === 'user');
45
+ if (!firstMsg)
46
+ return 'Empty conversation';
47
+ content = cleanMessage(partListUnionToString(firstMsg.content));
48
+ }
49
+ else {
50
+ content = cleanMessage(partListUnionToString(userMessage.content));
24
51
  }
25
- // Truncate long messages for display
26
- const content = partListUnionToString(userMessage.content).trim();
27
- return content.length > 100 ? content.slice(0, 97) + '...' : content;
52
+ return content;
28
53
  };
29
54
  /**
30
- * Formats a timestamp as relative time (e.g., "2 hours ago", "3 days ago").
55
+ * Formats a timestamp as relative time.
56
+ * @param timestamp - The timestamp to format
57
+ * @param style - 'long' (e.g. "2 hours ago") or 'short' (e.g. "2h")
31
58
  */
32
- export const formatRelativeTime = (timestamp) => {
59
+ export const formatRelativeTime = (timestamp, style = 'long') => {
33
60
  const now = new Date();
34
61
  const time = new Date(timestamp);
35
62
  const diffMs = now.getTime() - time.getTime();
@@ -37,24 +64,42 @@ export const formatRelativeTime = (timestamp) => {
37
64
  const diffMinutes = Math.floor(diffSeconds / 60);
38
65
  const diffHours = Math.floor(diffMinutes / 60);
39
66
  const diffDays = Math.floor(diffHours / 24);
40
- if (diffDays > 0) {
41
- return `${diffDays} day${diffDays === 1 ? '' : 's'} ago`;
42
- }
43
- else if (diffHours > 0) {
44
- return `${diffHours} hour${diffHours === 1 ? '' : 's'} ago`;
45
- }
46
- else if (diffMinutes > 0) {
47
- return `${diffMinutes} minute${diffMinutes === 1 ? '' : 's'} ago`;
67
+ if (style === 'short') {
68
+ if (diffSeconds < 1)
69
+ return 'now';
70
+ if (diffSeconds < 60)
71
+ return `${diffSeconds}s`;
72
+ if (diffMinutes < 60)
73
+ return `${diffMinutes}m`;
74
+ if (diffHours < 24)
75
+ return `${diffHours}h`;
76
+ if (diffDays < 30)
77
+ return `${diffDays}d`;
78
+ const diffMonths = Math.floor(diffDays / 30);
79
+ return diffMonths < 12
80
+ ? `${diffMonths}mo`
81
+ : `${Math.floor(diffMonths / 12)}y`;
48
82
  }
49
83
  else {
50
- return 'Just now';
84
+ if (diffDays > 0) {
85
+ return `${diffDays} day${diffDays === 1 ? '' : 's'} ago`;
86
+ }
87
+ else if (diffHours > 0) {
88
+ return `${diffHours} hour${diffHours === 1 ? '' : 's'} ago`;
89
+ }
90
+ else if (diffMinutes > 0) {
91
+ return `${diffMinutes} minute${diffMinutes === 1 ? '' : 's'} ago`;
92
+ }
93
+ else {
94
+ return 'Just now';
95
+ }
51
96
  }
52
97
  };
53
98
  /**
54
99
  * Loads all session files (including corrupted ones) from the chats directory.
55
100
  * @returns Array of session file entries, with sessionInfo null for corrupted files
56
101
  */
57
- export const getAllSessionFiles = async (chatsDir, currentSessionId) => {
102
+ export const getAllSessionFiles = async (chatsDir, currentSessionId, options = {}) => {
58
103
  try {
59
104
  const files = await fs.readdir(chatsDir);
60
105
  const sessionFiles = files
@@ -77,15 +122,32 @@ export const getAllSessionFiles = async (chatsDir, currentSessionId) => {
77
122
  const isCurrentSession = currentSessionId
78
123
  ? file.includes(currentSessionId.slice(0, 8))
79
124
  : false;
125
+ let fullContent;
126
+ let messages;
127
+ if (options.includeFullContent) {
128
+ fullContent = content.messages
129
+ .map((msg) => partListUnionToString(msg.content))
130
+ .join(' ');
131
+ messages = content.messages.map((msg) => ({
132
+ role: msg.type === 'user'
133
+ ? 'user'
134
+ : 'assistant',
135
+ content: partListUnionToString(msg.content),
136
+ }));
137
+ }
80
138
  const sessionInfo = {
81
139
  id: content.sessionId,
82
140
  file: file.replace('.json', ''),
83
141
  fileName: file,
84
142
  startTime: content.startTime,
85
143
  lastUpdated: content.lastUpdated,
144
+ messageCount: content.messages.length,
145
+ displayName: firstUserMessage,
86
146
  firstUserMessage,
87
147
  isCurrentSession,
88
148
  index: 0, // Will be set after sorting valid sessions
149
+ fullContent,
150
+ messages,
89
151
  };
90
152
  return { fileName: file, sessionInfo };
91
153
  }
@@ -109,19 +171,30 @@ export const getAllSessionFiles = async (chatsDir, currentSessionId) => {
109
171
  * Loads all valid session files from the chats directory and converts them to SessionInfo.
110
172
  * Corrupted files are automatically filtered out.
111
173
  */
112
- export const getSessionFiles = async (chatsDir, currentSessionId) => {
113
- const allFiles = await getAllSessionFiles(chatsDir, currentSessionId);
174
+ export const getSessionFiles = async (chatsDir, currentSessionId, options = {}) => {
175
+ const allFiles = await getAllSessionFiles(chatsDir, currentSessionId, options);
114
176
  // Filter out corrupted files and extract SessionInfo
115
177
  const validSessions = allFiles
116
178
  .filter((entry) => entry.sessionInfo !== null)
117
179
  .map((entry) => entry.sessionInfo);
180
+ // Deduplicate sessions by ID
181
+ const uniqueSessionsMap = new Map();
182
+ for (const session of validSessions) {
183
+ // If duplicate exists, keep the one with the later lastUpdated timestamp
184
+ if (!uniqueSessionsMap.has(session.id) ||
185
+ new Date(session.lastUpdated).getTime() >
186
+ new Date(uniqueSessionsMap.get(session.id).lastUpdated).getTime()) {
187
+ uniqueSessionsMap.set(session.id, session);
188
+ }
189
+ }
190
+ const uniqueSessions = Array.from(uniqueSessionsMap.values());
118
191
  // Sort by startTime (oldest first) for stable session numbering
119
- validSessions.sort((a, b) => new Date(a.startTime).getTime() - new Date(b.startTime).getTime());
192
+ uniqueSessions.sort((a, b) => new Date(a.startTime).getTime() - new Date(b.startTime).getTime());
120
193
  // Set the correct 1-based indexes after sorting
121
- validSessions.forEach((session, index) => {
194
+ uniqueSessions.forEach((session, index) => {
122
195
  session.index = index + 1;
123
196
  });
124
- return validSessions;
197
+ return uniqueSessions;
125
198
  };
126
199
  /**
127
200
  * Utility class for session discovery and selection.
@@ -203,9 +276,11 @@ export class SessionSelector {
203
276
  const sessionPath = path.join(chatsDir, sessionInfo.fileName);
204
277
  try {
205
278
  const sessionData = JSON.parse(await fs.readFile(sessionPath, 'utf8'));
279
+ const displayInfo = `Session ${sessionInfo.index}: ${sessionInfo.firstUserMessage} (${sessionInfo.messageCount} messages, ${formatRelativeTime(sessionInfo.lastUpdated)})`;
206
280
  return {
207
281
  sessionPath,
208
282
  sessionData,
283
+ displayInfo,
209
284
  };
210
285
  }
211
286
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"sessionUtils.js","sourceRoot":"","sources":["../../../src/utils/sessionUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessionUtils.js","sourceRoot":"","sources":["../../../src/utils/sessionUtils.ts"],"names":[],"mappings":"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"}
@@ -162,6 +162,50 @@ describe('SessionSelector', () => {
162
162
  const result = await sessionSelector.resolveSession('latest');
163
163
  expect(result.sessionData.messages[0].content).toBe('Latest session');
164
164
  });
165
+ it('should deduplicate sessions by ID', async () => {
166
+ const sessionId = randomUUID();
167
+ // Create test session files
168
+ const chatsDir = path.join(tmpDir, 'chats');
169
+ await fs.mkdir(chatsDir, { recursive: true });
170
+ const sessionOriginal = {
171
+ sessionId,
172
+ projectHash: 'test-hash',
173
+ startTime: '2024-01-01T10:00:00.000Z',
174
+ lastUpdated: '2024-01-01T10:30:00.000Z',
175
+ messages: [
176
+ {
177
+ type: 'user',
178
+ content: 'Original',
179
+ id: 'msg1',
180
+ timestamp: '2024-01-01T10:00:00.000Z',
181
+ },
182
+ ],
183
+ };
184
+ const sessionDuplicate = {
185
+ sessionId,
186
+ projectHash: 'test-hash',
187
+ startTime: '2024-01-01T10:00:00.000Z',
188
+ lastUpdated: '2024-01-01T11:00:00.000Z', // Newer
189
+ messages: [
190
+ {
191
+ type: 'user',
192
+ content: 'Newer Duplicate',
193
+ id: 'msg1',
194
+ timestamp: '2024-01-01T10:00:00.000Z',
195
+ },
196
+ ],
197
+ };
198
+ // File 1
199
+ await fs.writeFile(path.join(chatsDir, `${SESSION_FILE_PREFIX}2024-01-01T10-00-${sessionId.slice(0, 8)}.json`), JSON.stringify(sessionOriginal, null, 2));
200
+ // File 2 (Simulate a copy or newer version with same ID)
201
+ await fs.writeFile(path.join(chatsDir, `${SESSION_FILE_PREFIX}2024-01-01T11-00-${sessionId.slice(0, 8)}.json`), JSON.stringify(sessionDuplicate, null, 2));
202
+ const sessionSelector = new SessionSelector(config);
203
+ const sessions = await sessionSelector.listSessions();
204
+ expect(sessions.length).toBe(1);
205
+ expect(sessions[0].id).toBe(sessionId);
206
+ // Should keep the one with later lastUpdated
207
+ expect(sessions[0].lastUpdated).toBe('2024-01-01T11:00:00.000Z');
208
+ });
165
209
  it('should throw error for invalid session identifier', async () => {
166
210
  const sessionId1 = randomUUID();
167
211
  // Create test session files
@@ -205,7 +249,7 @@ describe('extractFirstUserMessage', () => {
205
249
  ];
206
250
  expect(extractFirstUserMessage(messages)).toBe('Hello world');
207
251
  });
208
- it('should truncate long messages', () => {
252
+ it('should not truncate long messages', () => {
209
253
  const longMessage = 'a'.repeat(150);
210
254
  const messages = [
211
255
  {
@@ -216,8 +260,7 @@ describe('extractFirstUserMessage', () => {
216
260
  },
217
261
  ];
218
262
  const result = extractFirstUserMessage(messages);
219
- expect(result).toBe('a'.repeat(97) + '...');
220
- expect(result.length).toBe(100);
263
+ expect(result).toBe(longMessage);
221
264
  });
222
265
  it('should return "Empty conversation" for no user messages', () => {
223
266
  const messages = [
@@ -1 +1 @@
1
- {"version":3,"file":"sessionUtils.test.js","sourceRoot":"","sources":["../../../src/utils/sessionUtils.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,MAAc,CAAC;IACnB,IAAI,MAAc,CAAC;IAEnB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,2CAA2C;QAC3C,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,oBAAoB,CAAC,CAAC;QACxD,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5C,cAAc;QACd,MAAM,GAAG;YACP,OAAO,EAAE;gBACP,iBAAiB,EAAE,GAAG,EAAE,CAAC,MAAM;aAChC;YACD,YAAY,EAAE,GAAG,EAAE,CAAC,oBAAoB;SACZ,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,sBAAsB;QACtB,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,wBAAwB;QAC1B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;QAEhC,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE9C,MAAM,QAAQ,GAAG;YACf,SAAS,EAAE,UAAU;YACrB,WAAW,EAAE,WAAW;YACxB,SAAS,EAAE,0BAA0B;YACrC,WAAW,EAAE,0BAA0B;YACvC,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,gBAAgB;oBACzB,EAAE,EAAE,MAAM;oBACV,SAAS,EAAE,0BAA0B;iBACtC;aACF;SACF,CAAC;QAEF,MAAM,QAAQ,GAAG;YACf,SAAS,EAAE,UAAU;YACrB,WAAW,EAAE,WAAW;YACxB,SAAS,EAAE,0BAA0B;YACrC,WAAW,EAAE,0BAA0B;YACvC,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,gBAAgB;oBACzB,EAAE,EAAE,MAAM;oBACV,SAAS,EAAE,0BAA0B;iBACtC;aACF;SACF,CAAC;QAEF,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CACP,QAAQ,EACR,GAAG,mBAAmB,oBAAoB,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CACxE,EACD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAClC,CAAC;QAEF,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CACP,QAAQ,EACR,GAAG,mBAAmB,oBAAoB,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CACxE,EACD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAClC,CAAC;QAEF,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;QAEpD,yBAAyB;QACzB,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACjE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvD,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEvE,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACjE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvD,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;QAEhC,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE9C,MAAM,QAAQ,GAAG;YACf,SAAS,EAAE,UAAU;YACrB,WAAW,EAAE,WAAW;YACxB,SAAS,EAAE,0BAA0B;YACrC,WAAW,EAAE,0BAA0B;YACvC,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,eAAe;oBACxB,EAAE,EAAE,MAAM;oBACV,SAAS,EAAE,0BAA0B;iBACtC;aACF;SACF,CAAC;QAEF,MAAM,QAAQ,GAAG;YACf,SAAS,EAAE,UAAU;YACrB,WAAW,EAAE,WAAW;YACxB,SAAS,EAAE,0BAA0B;YACrC,WAAW,EAAE,0BAA0B;YACvC,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,gBAAgB;oBACzB,EAAE,EAAE,MAAM;oBACV,SAAS,EAAE,0BAA0B;iBACtC;aACF;SACF,CAAC;QAEF,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CACP,QAAQ,EACR,GAAG,mBAAmB,oBAAoB,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CACxE,EACD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAClC,CAAC;QAEF,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CACP,QAAQ,EACR,GAAG,mBAAmB,oBAAoB,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CACxE,EACD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAClC,CAAC;QAEF,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;QAEpD,oCAAoC;QACpC,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC1D,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAEtE,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC1D,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;QAEhC,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE9C,MAAM,QAAQ,GAAG;YACf,SAAS,EAAE,UAAU;YACrB,WAAW,EAAE,WAAW;YACxB,SAAS,EAAE,0BAA0B;YACrC,WAAW,EAAE,0BAA0B;YACvC,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,eAAe;oBACxB,EAAE,EAAE,MAAM;oBACV,SAAS,EAAE,0BAA0B;iBACtC;aACF;SACF,CAAC;QAEF,MAAM,QAAQ,GAAG;YACf,SAAS,EAAE,UAAU;YACrB,WAAW,EAAE,WAAW;YACxB,SAAS,EAAE,0BAA0B;YACrC,WAAW,EAAE,0BAA0B;YACvC,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,gBAAgB;oBACzB,EAAE,EAAE,MAAM;oBACV,SAAS,EAAE,0BAA0B;iBACtC;aACF;SACF,CAAC;QAEF,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CACP,QAAQ,EACR,GAAG,mBAAmB,oBAAoB,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CACxE,EACD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAClC,CAAC;QAEF,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CACP,QAAQ,EACR,GAAG,mBAAmB,oBAAoB,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CACxE,EACD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAClC,CAAC;QAEF,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;QAEpD,wBAAwB;QACxB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;QAEhC,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE9C,MAAM,QAAQ,GAAG;YACf,SAAS,EAAE,UAAU;YACrB,WAAW,EAAE,WAAW;YACxB,SAAS,EAAE,0BAA0B;YACrC,WAAW,EAAE,0BAA0B;YACvC,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,gBAAgB;oBACzB,EAAE,EAAE,MAAM;oBACV,SAAS,EAAE,0BAA0B;iBACtC;aACF;SACF,CAAC;QAEF,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CACP,QAAQ,EACR,GAAG,mBAAmB,oBAAoB,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CACxE,EACD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAClC,CAAC;QAEF,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;QAEpD,MAAM,MAAM,CACV,eAAe,CAAC,cAAc,CAAC,cAAc,CAAC,CAC/C,CAAC,OAAO,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC;QAE/D,MAAM,MAAM,CAAC,eAAe,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACjE,kCAAkC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,QAAQ,GAAG;YACf;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,SAAS;gBAClB,EAAE,EAAE,MAAM;gBACV,SAAS,EAAE,0BAA0B;aACtC;YACD;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,aAAa;gBACtB,EAAE,EAAE,MAAM;gBACV,SAAS,EAAE,0BAA0B;aACtC;SACiB,CAAC;QAErB,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG;YACf;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,WAAW;gBACpB,EAAE,EAAE,MAAM;gBACV,SAAS,EAAE,0BAA0B;aACtC;SACiB,CAAC;QAErB,MAAM,MAAM,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,QAAQ,GAAG;YACf;gBACE,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,OAAO;gBAChB,EAAE,EAAE,MAAM;gBACV,SAAS,EAAE,0BAA0B;aACtC;SACiB,CAAC;QAErB,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,gBAAgB;QAChB,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC/D,MAAM,CAAC,kBAAkB,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAC3D,eAAe,CAChB,CAAC;QAEF,eAAe;QACf,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAE5E,cAAc;QACd,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACjE,MAAM,CAAC,kBAAkB,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE1E,aAAa;QACb,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAChE,MAAM,CAAC,kBAAkB,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAExE,aAAa;QACb,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACvE,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE1E,YAAY;QACZ,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACpE,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEtE,+BAA+B;QAC/B,MAAM,gBAAgB,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"sessionUtils.test.js","sourceRoot":"","sources":["../../../src/utils/sessionUtils.test.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,10 @@ export async function listSessions(config) {
18
18
  .forEach((session, index) => {
19
19
  const current = session.isCurrentSession ? ', current' : '';
20
20
  const time = formatRelativeTime(session.lastUpdated);
21
- console.log(` ${index + 1}. ${session.firstUserMessage} (${time}${current}) [${session.id}]`);
21
+ const title = session.firstUserMessage.length > 100
22
+ ? session.firstUserMessage.slice(0, 97) + '...'
23
+ : session.firstUserMessage;
24
+ console.log(` ${index + 1}. ${title} (${time}${current}) [${session.id}]`);
22
25
  });
23
26
  }
24
27
  export async function deleteSession(config, sessionIndex) {
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../src/utils/sessions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../src/utils/sessions.ts"],"names":[],"mappings":"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"}