@google/gemini-cli-core 0.39.0-preview.2 → 0.40.0-preview.0

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 (259) hide show
  1. package/dist/docs/changelogs/index.md +21 -0
  2. package/dist/docs/changelogs/latest.md +253 -407
  3. package/dist/docs/changelogs/preview.md +236 -247
  4. package/dist/docs/cli/auto-memory.md +143 -0
  5. package/dist/docs/cli/enterprise.md +1 -1
  6. package/dist/docs/cli/plan-mode.md +3 -1
  7. package/dist/docs/cli/settings.md +29 -25
  8. package/dist/docs/cli/system-prompt.md +6 -6
  9. package/dist/docs/cli/telemetry.md +18 -11
  10. package/dist/docs/cli/tutorials/memory-management.md +2 -0
  11. package/dist/docs/get-started/{authentication.md → authentication.mdx} +139 -93
  12. package/dist/docs/get-started/index.md +3 -2
  13. package/dist/docs/get-started/installation.mdx +201 -0
  14. package/dist/docs/index.md +2 -2
  15. package/dist/docs/reference/configuration.md +88 -12
  16. package/dist/docs/reference/policy-engine.md +18 -12
  17. package/dist/docs/reference/tools.md +22 -0
  18. package/dist/docs/sidebar.json +13 -1
  19. package/dist/docs/tools/mcp-resources.md +44 -0
  20. package/dist/docs/tools/mcp-server.md +2 -1
  21. package/dist/docs/tools/tracker.md +61 -0
  22. package/dist/src/agents/agent-tool.js +1 -0
  23. package/dist/src/agents/agent-tool.js.map +1 -1
  24. package/dist/src/agents/agentLoader.d.ts +4 -4
  25. package/dist/src/agents/generalist-agent.js +3 -2
  26. package/dist/src/agents/generalist-agent.js.map +1 -1
  27. package/dist/src/agents/local-executor.js +4 -1
  28. package/dist/src/agents/local-executor.js.map +1 -1
  29. package/dist/src/agents/registry.js +0 -8
  30. package/dist/src/agents/registry.js.map +1 -1
  31. package/dist/src/agents/skill-extraction-agent.d.ts +3 -2
  32. package/dist/src/agents/skill-extraction-agent.js +72 -67
  33. package/dist/src/agents/skill-extraction-agent.js.map +1 -1
  34. package/dist/src/agents/skill-extraction-agent.test.js +54 -0
  35. package/dist/src/agents/skill-extraction-agent.test.js.map +1 -0
  36. package/dist/src/config/config.d.ts +21 -6
  37. package/dist/src/config/config.js +103 -19
  38. package/dist/src/config/config.js.map +1 -1
  39. package/dist/src/config/config.test.js +262 -6
  40. package/dist/src/config/config.test.js.map +1 -1
  41. package/dist/src/config/constants.d.ts +1 -0
  42. package/dist/src/config/constants.js +2 -0
  43. package/dist/src/config/constants.js.map +1 -1
  44. package/dist/src/config/memory.js +1 -1
  45. package/dist/src/config/memory.js.map +1 -1
  46. package/dist/src/config/path-validation.test.js +15 -6
  47. package/dist/src/config/path-validation.test.js.map +1 -1
  48. package/dist/src/config/projectRegistry.js +113 -32
  49. package/dist/src/config/projectRegistry.js.map +1 -1
  50. package/dist/src/config/projectRegistry.test.js +51 -0
  51. package/dist/src/config/projectRegistry.test.js.map +1 -1
  52. package/dist/src/config/storage.d.ts +3 -1
  53. package/dist/src/config/storage.js +6 -0
  54. package/dist/src/config/storage.js.map +1 -1
  55. package/dist/src/config/storage.test.js +12 -0
  56. package/dist/src/config/storage.test.js.map +1 -1
  57. package/dist/src/core/contentGenerator.d.ts +8 -1
  58. package/dist/src/core/contentGenerator.js +46 -4
  59. package/dist/src/core/contentGenerator.js.map +1 -1
  60. package/dist/src/core/contentGenerator.test.js +174 -8
  61. package/dist/src/core/contentGenerator.test.js.map +1 -1
  62. package/dist/src/core/geminiChat.test.js +1 -0
  63. package/dist/src/core/geminiChat.test.js.map +1 -1
  64. package/dist/src/core/geminiChat_network_retry.test.js +42 -0
  65. package/dist/src/core/geminiChat_network_retry.test.js.map +1 -1
  66. package/dist/src/core/localLiteRtLmClient.js +2 -0
  67. package/dist/src/core/localLiteRtLmClient.js.map +1 -1
  68. package/dist/src/core/localLiteRtLmClient.test.js +7 -0
  69. package/dist/src/core/localLiteRtLmClient.test.js.map +1 -1
  70. package/dist/src/core/loggingContentGenerator.js +3 -0
  71. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  72. package/dist/src/core/loggingContentGenerator.test.js +1 -0
  73. package/dist/src/core/loggingContentGenerator.test.js.map +1 -1
  74. package/dist/src/core/prompts.d.ts +1 -1
  75. package/dist/src/core/prompts.js +2 -2
  76. package/dist/src/core/prompts.js.map +1 -1
  77. package/dist/src/core/prompts.test.js +2 -2
  78. package/dist/src/core/prompts.test.js.map +1 -1
  79. package/dist/src/generated/git-commit.d.ts +2 -2
  80. package/dist/src/generated/git-commit.js +2 -2
  81. package/dist/src/ide/ide-client.js +3 -4
  82. package/dist/src/ide/ide-client.js.map +1 -1
  83. package/dist/src/policy/policies/read-only.toml +4 -1
  84. package/dist/src/policy/policy-engine.js +4 -0
  85. package/dist/src/policy/policy-engine.js.map +1 -1
  86. package/dist/src/policy/policy-engine.test.js +25 -0
  87. package/dist/src/policy/policy-engine.test.js.map +1 -1
  88. package/dist/src/policy/toml-loader.test.js +5 -0
  89. package/dist/src/policy/toml-loader.test.js.map +1 -1
  90. package/dist/src/prompts/promptProvider.d.ts +1 -1
  91. package/dist/src/prompts/promptProvider.js +15 -7
  92. package/dist/src/prompts/promptProvider.js.map +1 -1
  93. package/dist/src/prompts/promptProvider.test.js +31 -1
  94. package/dist/src/prompts/promptProvider.test.js.map +1 -1
  95. package/dist/src/prompts/snippets-memory-v2.test.js +94 -0
  96. package/dist/src/prompts/snippets-memory-v2.test.js.map +1 -0
  97. package/dist/src/prompts/snippets.d.ts +19 -1
  98. package/dist/src/prompts/snippets.js +24 -3
  99. package/dist/src/prompts/snippets.js.map +1 -1
  100. package/dist/src/prompts/snippets.legacy.d.ts +6 -1
  101. package/dist/src/prompts/snippets.legacy.js +10 -3
  102. package/dist/src/prompts/snippets.legacy.js.map +1 -1
  103. package/dist/src/sandbox/linux/LinuxSandboxManager.js +16 -2
  104. package/dist/src/sandbox/linux/LinuxSandboxManager.js.map +1 -1
  105. package/dist/src/sandbox/linux/bwrapArgsBuilder.js +64 -36
  106. package/dist/src/sandbox/linux/bwrapArgsBuilder.js.map +1 -1
  107. package/dist/src/sandbox/linux/bwrapArgsBuilder.test.js +3 -3
  108. package/dist/src/sandbox/linux/bwrapArgsBuilder.test.js.map +1 -1
  109. package/dist/src/sandbox/macos/MacOsSandboxManager.js +13 -1
  110. package/dist/src/sandbox/macos/MacOsSandboxManager.js.map +1 -1
  111. package/dist/src/sandbox/macos/seatbeltArgsBuilder.js +61 -42
  112. package/dist/src/sandbox/macos/seatbeltArgsBuilder.js.map +1 -1
  113. package/dist/src/sandbox/windows/WindowsSandboxManager.js +12 -1
  114. package/dist/src/sandbox/windows/WindowsSandboxManager.js.map +1 -1
  115. package/dist/src/scheduler/policy.js +1 -2
  116. package/dist/src/scheduler/policy.js.map +1 -1
  117. package/dist/src/scheduler/policy.test.js +35 -2
  118. package/dist/src/scheduler/policy.test.js.map +1 -1
  119. package/dist/src/scheduler/scheduler.js +1 -0
  120. package/dist/src/scheduler/scheduler.js.map +1 -1
  121. package/dist/src/scheduler/scheduler.test.js +2 -0
  122. package/dist/src/scheduler/scheduler.test.js.map +1 -1
  123. package/dist/src/scheduler/scheduler_hooks.test.js +1 -0
  124. package/dist/src/scheduler/scheduler_hooks.test.js.map +1 -1
  125. package/dist/src/scheduler/scheduler_parallel.test.js +1 -0
  126. package/dist/src/scheduler/scheduler_parallel.test.js.map +1 -1
  127. package/dist/src/scheduler/tool-executor.js +1 -0
  128. package/dist/src/scheduler/tool-executor.js.map +1 -1
  129. package/dist/src/services/chatRecordingService.d.ts +1 -0
  130. package/dist/src/services/chatRecordingService.js +48 -19
  131. package/dist/src/services/chatRecordingService.js.map +1 -1
  132. package/dist/src/services/memoryService.d.ts +15 -1
  133. package/dist/src/services/memoryService.js +276 -57
  134. package/dist/src/services/memoryService.js.map +1 -1
  135. package/dist/src/services/memoryService.test.js +296 -2
  136. package/dist/src/services/memoryService.test.js.map +1 -1
  137. package/dist/src/services/sandboxManager.integration.test.js +204 -0
  138. package/dist/src/services/sandboxManager.integration.test.js.map +1 -1
  139. package/dist/src/services/sandboxManager.js +16 -0
  140. package/dist/src/services/sandboxManager.js.map +1 -1
  141. package/dist/src/services/sessionSummaryUtils.d.ts +1 -1
  142. package/dist/src/services/sessionSummaryUtils.js +111 -38
  143. package/dist/src/services/sessionSummaryUtils.js.map +1 -1
  144. package/dist/src/services/sessionSummaryUtils.test.js +204 -51
  145. package/dist/src/services/sessionSummaryUtils.test.js.map +1 -1
  146. package/dist/src/services/shellExecutionService.js +7 -1
  147. package/dist/src/services/shellExecutionService.js.map +1 -1
  148. package/dist/src/telemetry/config.js +3 -0
  149. package/dist/src/telemetry/config.js.map +1 -1
  150. package/dist/src/telemetry/conseca-logger.test.js +1 -0
  151. package/dist/src/telemetry/conseca-logger.test.js.map +1 -1
  152. package/dist/src/telemetry/loggers.test.js +72 -4
  153. package/dist/src/telemetry/loggers.test.js.map +1 -1
  154. package/dist/src/telemetry/memory-monitor.d.ts +1 -0
  155. package/dist/src/telemetry/memory-monitor.js +8 -1
  156. package/dist/src/telemetry/memory-monitor.js.map +1 -1
  157. package/dist/src/telemetry/memory-monitor.test.js +6 -1
  158. package/dist/src/telemetry/memory-monitor.test.js.map +1 -1
  159. package/dist/src/telemetry/trace.d.ts +1 -0
  160. package/dist/src/telemetry/trace.js +33 -13
  161. package/dist/src/telemetry/trace.js.map +1 -1
  162. package/dist/src/telemetry/trace.test.js +50 -10
  163. package/dist/src/telemetry/trace.test.js.map +1 -1
  164. package/dist/src/telemetry/types.js +11 -4
  165. package/dist/src/telemetry/types.js.map +1 -1
  166. package/dist/src/tools/definitions/base-declarations.d.ts +2 -0
  167. package/dist/src/tools/definitions/base-declarations.js +3 -0
  168. package/dist/src/tools/definitions/base-declarations.js.map +1 -1
  169. package/dist/src/tools/definitions/coreTools.d.ts +3 -1
  170. package/dist/src/tools/definitions/coreTools.js +13 -1
  171. package/dist/src/tools/definitions/coreTools.js.map +1 -1
  172. package/dist/src/tools/definitions/model-family-sets/default-legacy.js +29 -1
  173. package/dist/src/tools/definitions/model-family-sets/default-legacy.js.map +1 -1
  174. package/dist/src/tools/definitions/model-family-sets/gemini-3.js +29 -1
  175. package/dist/src/tools/definitions/model-family-sets/gemini-3.js.map +1 -1
  176. package/dist/src/tools/definitions/types.d.ts +2 -0
  177. package/dist/src/tools/get-internal-docs.js +5 -2
  178. package/dist/src/tools/get-internal-docs.js.map +1 -1
  179. package/dist/src/tools/list-mcp-resources.d.ts +24 -0
  180. package/dist/src/tools/list-mcp-resources.js +74 -0
  181. package/dist/src/tools/list-mcp-resources.js.map +1 -0
  182. package/dist/src/tools/list-mcp-resources.test.d.ts +6 -0
  183. package/dist/src/tools/list-mcp-resources.test.js +79 -0
  184. package/dist/src/tools/list-mcp-resources.test.js.map +1 -0
  185. package/dist/src/tools/mcp-client-manager.d.ts +3 -1
  186. package/dist/src/tools/mcp-client-manager.js +24 -1
  187. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  188. package/dist/src/tools/mcp-client-manager.test.js +43 -0
  189. package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
  190. package/dist/src/tools/memoryTool.d.ts +2 -1
  191. package/dist/src/tools/memoryTool.js +42 -13
  192. package/dist/src/tools/memoryTool.js.map +1 -1
  193. package/dist/src/tools/memoryTool.test.js +23 -3
  194. package/dist/src/tools/memoryTool.test.js.map +1 -1
  195. package/dist/src/tools/read-mcp-resource.d.ts +25 -0
  196. package/dist/src/tools/read-mcp-resource.js +120 -0
  197. package/dist/src/tools/read-mcp-resource.js.map +1 -0
  198. package/dist/src/tools/read-mcp-resource.test.d.ts +6 -0
  199. package/dist/src/tools/read-mcp-resource.test.js +110 -0
  200. package/dist/src/tools/read-mcp-resource.test.js.map +1 -0
  201. package/dist/src/tools/ripGrep.d.ts +3 -2
  202. package/dist/src/tools/ripGrep.js +25 -54
  203. package/dist/src/tools/ripGrep.js.map +1 -1
  204. package/dist/src/tools/ripGrep.test.js +73 -131
  205. package/dist/src/tools/ripGrep.test.js.map +1 -1
  206. package/dist/src/tools/shell.js +38 -12
  207. package/dist/src/tools/shell.js.map +1 -1
  208. package/dist/src/tools/shell.test.js +410 -25
  209. package/dist/src/tools/shell.test.js.map +1 -1
  210. package/dist/src/tools/tool-error.d.ts +1 -0
  211. package/dist/src/tools/tool-error.js +1 -0
  212. package/dist/src/tools/tool-error.js.map +1 -1
  213. package/dist/src/tools/tool-names.d.ts +4 -4
  214. package/dist/src/tools/tool-names.js +6 -2
  215. package/dist/src/tools/tool-names.js.map +1 -1
  216. package/dist/src/tools/tool-registry.js +8 -1
  217. package/dist/src/tools/tool-registry.js.map +1 -1
  218. package/dist/src/utils/filesearch/fileSearch.d.ts +2 -0
  219. package/dist/src/utils/filesearch/fileSearch.js +97 -6
  220. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  221. package/dist/src/utils/filesearch/fileSearch.test.js +54 -0
  222. package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
  223. package/dist/src/utils/filesearch/fileWatcher.d.ts +25 -0
  224. package/dist/src/utils/filesearch/fileWatcher.js +86 -0
  225. package/dist/src/utils/filesearch/fileWatcher.js.map +1 -0
  226. package/dist/src/utils/filesearch/fileWatcher.test.d.ts +6 -0
  227. package/dist/src/utils/filesearch/fileWatcher.test.js +142 -0
  228. package/dist/src/utils/filesearch/fileWatcher.test.js.map +1 -0
  229. package/dist/src/utils/gitIgnoreParser.js +1 -1
  230. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  231. package/dist/src/utils/ignoreFileParser.js +1 -1
  232. package/dist/src/utils/ignoreFileParser.js.map +1 -1
  233. package/dist/src/utils/memoryDiscovery.js +15 -5
  234. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  235. package/dist/src/utils/retry.js +18 -6
  236. package/dist/src/utils/retry.js.map +1 -1
  237. package/dist/src/utils/retry.test.js +30 -0
  238. package/dist/src/utils/retry.test.js.map +1 -1
  239. package/dist/src/utils/shell-utils.d.ts +1 -0
  240. package/dist/src/utils/shell-utils.js +106 -0
  241. package/dist/src/utils/shell-utils.js.map +1 -1
  242. package/dist/tsconfig.tsbuildinfo +1 -1
  243. package/package.json +5 -3
  244. package/vendor/ripgrep/rg-darwin-arm64 +0 -0
  245. package/vendor/ripgrep/rg-darwin-x64 +0 -0
  246. package/vendor/ripgrep/rg-linux-arm64 +0 -0
  247. package/vendor/ripgrep/rg-linux-x64 +0 -0
  248. package/vendor/ripgrep/rg-win32-x64.exe +0 -0
  249. package/dist/docs/get-started/installation.md +0 -181
  250. package/dist/google-gemini-cli-core-0.39.0-preview.1.tgz +0 -0
  251. package/dist/src/agents/memory-manager-agent.d.ts +0 -25
  252. package/dist/src/agents/memory-manager-agent.js +0 -138
  253. package/dist/src/agents/memory-manager-agent.js.map +0 -1
  254. package/dist/src/agents/memory-manager-agent.test.js +0 -123
  255. package/dist/src/agents/memory-manager-agent.test.js.map +0 -1
  256. package/dist/src/prompts/snippets-memory-manager.test.js +0 -31
  257. package/dist/src/prompts/snippets-memory-manager.test.js.map +0 -1
  258. /package/dist/src/agents/{memory-manager-agent.test.d.ts → skill-extraction-agent.test.d.ts} +0 -0
  259. /package/dist/src/prompts/{snippets-memory-manager.test.d.ts → snippets-memory-v2.test.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"chatRecordingService.js","sourceRoot":"","sources":["../../../src/services/chatRecordingService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chatRecordingService.js","sourceRoot":"","sources":["../../../src/services/chatRecordingService.ts"],"names":[],"mappings":"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"}
@@ -4,12 +4,23 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import type { Config } from '../config/config.js';
7
+ interface SessionVersion {
8
+ sessionId: string;
9
+ lastUpdated: string;
10
+ }
11
+ interface IndexedSession extends SessionVersion {
12
+ filePath: string;
13
+ summary?: string;
14
+ userMessageCount: number;
15
+ }
7
16
  /**
8
17
  * Metadata for a single extraction run.
9
18
  */
10
19
  export interface ExtractionRun {
11
20
  runAt: string;
12
21
  sessionIds: string[];
22
+ candidateSessions?: SessionVersion[];
23
+ processedSessions?: SessionVersion[];
13
24
  skillsCreated: string[];
14
25
  }
15
26
  /**
@@ -48,11 +59,13 @@ export declare function writeExtractionState(statePath: string, state: Extractio
48
59
  * eligible sessions with their summary, file path, and new/previously-processed status.
49
60
  * The agent can use read_file on paths to inspect sessions that look promising.
50
61
  *
51
- * Returns the index text and the list of new (unprocessed) session IDs.
62
+ * Returns the index text, the list of selected new (unprocessed) session IDs,
63
+ * and the surfaced candidate sessions for this run.
52
64
  */
53
65
  export declare function buildSessionIndex(chatsDir: string, state: ExtractionState): Promise<{
54
66
  sessionIndex: string;
55
67
  newSessionIds: string[];
68
+ candidateSessions: IndexedSession[];
56
69
  }>;
57
70
  /**
58
71
  * Validates all .patch files in the skills directory using the `diff` library.
@@ -69,3 +82,4 @@ export declare function validatePatches(skillsDir: string, config: Config): Prom
69
82
  * to extract and write SKILL.md files.
70
83
  */
71
84
  export declare function startMemoryService(config: Config): Promise<void>;
85
+ export {};
@@ -8,7 +8,7 @@ import * as path from 'node:path';
8
8
  import { constants as fsConstants } from 'node:fs';
9
9
  import { randomUUID } from 'node:crypto';
10
10
  import * as Diff from 'diff';
11
- import { SESSION_FILE_PREFIX, } from './chatRecordingService.js';
11
+ import { SESSION_FILE_PREFIX, loadConversationRecord, } from './chatRecordingService.js';
12
12
  import { debugLogger } from '../utils/debugLogger.js';
13
13
  import { coreEvents } from '../utils/events.js';
14
14
  import { isNodeError } from '../utils/errors.js';
@@ -23,6 +23,7 @@ import { PolicyEngine } from '../policy/policy-engine.js';
23
23
  import { PolicyDecision } from '../policy/types.js';
24
24
  import { MessageBus } from '../confirmation-bus/message-bus.js';
25
25
  import { Storage } from '../config/storage.js';
26
+ import { READ_FILE_TOOL_NAME } from '../tools/tool-names.js';
26
27
  import { applyParsedSkillPatches, hasParsedPatchHunks, } from './memoryPatchUtils.js';
27
28
  const LOCK_FILENAME = '.extraction.lock';
28
29
  const STATE_FILENAME = '.extraction-state.json';
@@ -30,13 +31,22 @@ const LOCK_STALE_MS = 35 * 60 * 1000; // 35 minutes (exceeds agent's 30-min time
30
31
  const MIN_USER_MESSAGES = 10;
31
32
  const MIN_IDLE_MS = 3 * 60 * 60 * 1000; // 3 hours
32
33
  const MAX_SESSION_INDEX_SIZE = 50;
34
+ const MAX_NEW_SESSION_BATCH_SIZE = 10;
35
+ function hasProperty(obj, prop) {
36
+ return obj !== null && typeof obj === 'object' && prop in obj;
37
+ }
38
+ function isStringProperty(obj, prop) {
39
+ return hasProperty(obj, prop) && typeof obj[prop] === 'string';
40
+ }
33
41
  /**
34
42
  * Returns all session IDs that have been processed across all runs.
35
43
  */
36
44
  export function getProcessedSessionIds(state) {
37
45
  const ids = new Set();
38
46
  for (const run of state.runs) {
39
- for (const id of run.sessionIds) {
47
+ const processedSessionIds = run.processedSessions?.map((session) => session.sessionId) ??
48
+ run.sessionIds;
49
+ for (const id of processedSessionIds) {
40
50
  ids.add(id);
41
51
  }
42
52
  }
@@ -50,26 +60,35 @@ function isLockInfo(value) {
50
60
  'startedAt' in value &&
51
61
  typeof value.startedAt === 'string');
52
62
  }
53
- function isConversationRecord(value) {
63
+ function isSessionVersion(value) {
54
64
  return (typeof value === 'object' &&
55
65
  value !== null &&
56
66
  'sessionId' in value &&
57
67
  typeof value.sessionId === 'string' &&
58
- 'messages' in value &&
59
- Array.isArray(value.messages) &&
60
- 'projectHash' in value &&
61
- 'startTime' in value &&
62
- 'lastUpdated' in value);
68
+ 'lastUpdated' in value &&
69
+ typeof value.lastUpdated === 'string');
70
+ }
71
+ function normalizeSessionVersions(value) {
72
+ if (!Array.isArray(value)) {
73
+ return [];
74
+ }
75
+ return value.filter(isSessionVersion).map((session) => ({
76
+ sessionId: session.sessionId,
77
+ lastUpdated: session.lastUpdated,
78
+ }));
63
79
  }
64
- function isExtractionRun(value) {
80
+ function normalizeStringArray(value) {
81
+ if (!Array.isArray(value)) {
82
+ return [];
83
+ }
84
+ return value.filter((item) => typeof item === 'string');
85
+ }
86
+ function isExtractionRunLike(value) {
65
87
  return (typeof value === 'object' &&
66
88
  value !== null &&
67
89
  'runAt' in value &&
68
90
  typeof value.runAt === 'string' &&
69
- 'sessionIds' in value &&
70
- Array.isArray(value.sessionIds) &&
71
- 'skillsCreated' in value &&
72
- Array.isArray(value.skillsCreated));
91
+ 'skillsCreated' in value);
73
92
  }
74
93
  function isExtractionState(value) {
75
94
  return (typeof value === 'object' &&
@@ -77,6 +96,123 @@ function isExtractionState(value) {
77
96
  'runs' in value &&
78
97
  Array.isArray(value.runs));
79
98
  }
99
+ function buildExtractionRun(value) {
100
+ if (!isExtractionRunLike(value)) {
101
+ return null;
102
+ }
103
+ const candidateSessions = normalizeSessionVersions(value.candidateSessions);
104
+ const processedSessions = normalizeSessionVersions(value.processedSessions);
105
+ const sessionIds = normalizeStringArray(value.sessionIds);
106
+ return {
107
+ runAt: value.runAt,
108
+ sessionIds: sessionIds.length > 0
109
+ ? sessionIds
110
+ : processedSessions.map((session) => session.sessionId),
111
+ candidateSessions: candidateSessions.length > 0 ? candidateSessions : undefined,
112
+ processedSessions: processedSessions.length > 0 ? processedSessions : undefined,
113
+ skillsCreated: normalizeStringArray(value.skillsCreated),
114
+ };
115
+ }
116
+ function getTimestampMs(timestamp) {
117
+ const parsed = Date.parse(timestamp);
118
+ return Number.isNaN(parsed) ? 0 : parsed;
119
+ }
120
+ function getSessionVersionKey(session) {
121
+ return `${session.sessionId}\u0000${session.lastUpdated}`;
122
+ }
123
+ function hasLegacyRunProcessedSession(run, session) {
124
+ return (run.sessionIds.includes(session.sessionId) &&
125
+ getTimestampMs(run.runAt) >= getTimestampMs(session.lastUpdated));
126
+ }
127
+ function isSessionVersionProcessed(state, session) {
128
+ const sessionKey = getSessionVersionKey(session);
129
+ for (const run of state.runs) {
130
+ if (run.processedSessions?.some((processed) => getSessionVersionKey(processed) === sessionKey)) {
131
+ return true;
132
+ }
133
+ if (!run.processedSessions && hasLegacyRunProcessedSession(run, session)) {
134
+ return true;
135
+ }
136
+ }
137
+ return false;
138
+ }
139
+ function getSessionAttemptCount(state, session) {
140
+ const sessionKey = getSessionVersionKey(session);
141
+ let attempts = 0;
142
+ for (const run of state.runs) {
143
+ if (run.candidateSessions) {
144
+ if (run.candidateSessions.some((candidate) => getSessionVersionKey(candidate) === sessionKey)) {
145
+ attempts++;
146
+ }
147
+ continue;
148
+ }
149
+ if (hasLegacyRunProcessedSession(run, session)) {
150
+ attempts++;
151
+ }
152
+ }
153
+ return attempts;
154
+ }
155
+ function compareIndexedSessions(a, b) {
156
+ const timestampDelta = getTimestampMs(b.lastUpdated) - getTimestampMs(a.lastUpdated);
157
+ if (timestampDelta !== 0) {
158
+ return timestampDelta;
159
+ }
160
+ if (a.filePath.endsWith('.jsonl') !== b.filePath.endsWith('.jsonl')) {
161
+ return a.filePath.endsWith('.jsonl') ? -1 : 1;
162
+ }
163
+ return b.filePath.localeCompare(a.filePath);
164
+ }
165
+ function shouldReplaceIndexedSession(existing, candidate) {
166
+ return compareIndexedSessions(candidate, existing) < 0;
167
+ }
168
+ function isReadFileStartActivity(activity) {
169
+ return (activity.type === 'TOOL_CALL_START' &&
170
+ activity.data['name'] === READ_FILE_TOOL_NAME);
171
+ }
172
+ function getResolvedReadFilePath(config, activity) {
173
+ if (!isReadFileStartActivity(activity)) {
174
+ return null;
175
+ }
176
+ const args = activity.data.args;
177
+ if (typeof args !== 'object' ||
178
+ args === null ||
179
+ !('file_path' in args) ||
180
+ typeof args.file_path !== 'string') {
181
+ return null;
182
+ }
183
+ return path.resolve(config.getTargetDir(), args.file_path);
184
+ }
185
+ function getReadFileStartCallId(activity) {
186
+ if (!isReadFileStartActivity(activity) ||
187
+ !isStringProperty(activity.data, 'callId')) {
188
+ return null;
189
+ }
190
+ return activity.data.callId;
191
+ }
192
+ function getCompletedReadFileCallId(activity) {
193
+ if (activity.type !== 'TOOL_CALL_END' ||
194
+ activity.data['name'] !== READ_FILE_TOOL_NAME ||
195
+ !isStringProperty(activity.data, 'id')) {
196
+ return null;
197
+ }
198
+ return activity.data['id'];
199
+ }
200
+ function getFailedReadFileCallId(activity) {
201
+ if (activity.type !== 'ERROR' ||
202
+ activity.data['name'] !== READ_FILE_TOOL_NAME ||
203
+ !isStringProperty(activity.data, 'callId')) {
204
+ return null;
205
+ }
206
+ return activity.data['callId'];
207
+ }
208
+ function getUserMessageCount(conversation) {
209
+ return (conversation.userMessageCount ??
210
+ conversation.messages.filter((message) => message.type === 'user').length);
211
+ }
212
+ function isSupportedSessionFile(fileName) {
213
+ return (fileName.startsWith(SESSION_FILE_PREFIX) &&
214
+ (fileName.endsWith('.json') || fileName.endsWith('.jsonl')));
215
+ }
80
216
  /**
81
217
  * Attempts to acquire an exclusive lock file using O_CREAT | O_EXCL.
82
218
  * Returns true if the lock was acquired, false if another instance owns it.
@@ -168,13 +304,10 @@ export async function readExtractionState(statePath) {
168
304
  }
169
305
  const runs = [];
170
306
  for (const run of parsed.runs) {
171
- if (!isExtractionRun(run))
307
+ const normalizedRun = buildExtractionRun(run);
308
+ if (!normalizedRun)
172
309
  continue;
173
- runs.push({
174
- runAt: run.runAt,
175
- sessionIds: run.sessionIds.filter((sid) => typeof sid === 'string'),
176
- skillsCreated: run.skillsCreated.filter((sk) => typeof sk === 'string'),
177
- });
310
+ runs.push(normalizedRun);
178
311
  }
179
312
  return { runs };
180
313
  }
@@ -201,18 +334,20 @@ function shouldProcessConversation(parsed) {
201
334
  if (parsed.kind === 'subagent')
202
335
  return false;
203
336
  // Skip sessions that are still active (not idle for 3+ hours)
204
- const lastUpdated = new Date(parsed.lastUpdated).getTime();
337
+ const lastUpdated = getTimestampMs(parsed.lastUpdated);
205
338
  if (Date.now() - lastUpdated < MIN_IDLE_MS)
206
339
  return false;
207
340
  // Skip sessions with too few user messages
208
- const userMessageCount = parsed.messages.filter((m) => m.type === 'user').length;
209
- if (userMessageCount < MIN_USER_MESSAGES)
341
+ if (getUserMessageCount(parsed) < MIN_USER_MESSAGES)
210
342
  return false;
211
343
  return true;
212
344
  }
213
345
  /**
214
- * Scans the chats directory for eligible session files (sorted most-recent-first,
215
- * capped at MAX_SESSION_INDEX_SIZE). Shared by buildSessionIndex.
346
+ * Scans the chats directory for eligible session files, loading metadata from
347
+ * both JSONL and legacy JSON sessions, deduplicating migrated sessions by
348
+ * session ID, and sorting by actual lastUpdated. We scan the full directory
349
+ * here so already-processed recent sessions cannot permanently block older
350
+ * backlog sessions from surfacing as new candidates.
216
351
  */
217
352
  async function scanEligibleSessions(chatsDir) {
218
353
  let allFiles;
@@ -222,55 +357,94 @@ async function scanEligibleSessions(chatsDir) {
222
357
  catch {
223
358
  return [];
224
359
  }
225
- const sessionFiles = allFiles.filter((f) => f.startsWith(SESSION_FILE_PREFIX) && f.endsWith('.json'));
226
- // Sort by filename descending (most recent first)
227
- sessionFiles.sort((a, b) => b.localeCompare(a));
228
- const results = [];
229
- for (const file of sessionFiles) {
230
- if (results.length >= MAX_SESSION_INDEX_SIZE)
231
- break;
360
+ const candidates = [];
361
+ for (const file of allFiles) {
362
+ if (!isSupportedSessionFile(file))
363
+ continue;
232
364
  const filePath = path.join(chatsDir, file);
233
365
  try {
234
- const content = await fs.readFile(filePath, 'utf-8');
235
- const parsed = JSON.parse(content);
236
- if (!isConversationRecord(parsed))
366
+ const stat = await fs.stat(filePath);
367
+ if (!stat.isFile())
237
368
  continue;
238
- if (!shouldProcessConversation(parsed))
369
+ candidates.push({ filePath, mtimeMs: stat.mtimeMs });
370
+ }
371
+ catch {
372
+ // Skip files that disappeared between readdir and stat.
373
+ }
374
+ }
375
+ candidates.sort((a, b) => b.mtimeMs - a.mtimeMs);
376
+ const latestBySessionId = new Map();
377
+ for (const { filePath } of candidates) {
378
+ try {
379
+ const conversation = await loadConversationRecord(filePath, {
380
+ metadataOnly: true,
381
+ });
382
+ if (!conversation || !shouldProcessConversation(conversation))
239
383
  continue;
240
- results.push({ conversation: parsed, filePath });
384
+ const indexedSession = {
385
+ sessionId: conversation.sessionId,
386
+ lastUpdated: conversation.lastUpdated,
387
+ filePath,
388
+ summary: conversation.summary,
389
+ userMessageCount: getUserMessageCount(conversation),
390
+ };
391
+ const existing = latestBySessionId.get(indexedSession.sessionId);
392
+ if (!existing || shouldReplaceIndexedSession(existing, indexedSession)) {
393
+ latestBySessionId.set(indexedSession.sessionId, indexedSession);
394
+ }
241
395
  }
242
396
  catch {
243
397
  // Skip unreadable files
244
398
  }
245
399
  }
246
- return results;
400
+ return Array.from(latestBySessionId.values()).sort(compareIndexedSessions);
247
401
  }
248
402
  /**
249
403
  * Builds a session index for the extraction agent: a compact listing of all
250
404
  * eligible sessions with their summary, file path, and new/previously-processed status.
251
405
  * The agent can use read_file on paths to inspect sessions that look promising.
252
406
  *
253
- * Returns the index text and the list of new (unprocessed) session IDs.
407
+ * Returns the index text, the list of selected new (unprocessed) session IDs,
408
+ * and the surfaced candidate sessions for this run.
254
409
  */
255
410
  export async function buildSessionIndex(chatsDir, state) {
256
- const processedSet = getProcessedSessionIds(state);
257
411
  const eligible = await scanEligibleSessions(chatsDir);
258
412
  if (eligible.length === 0) {
259
- return { sessionIndex: '', newSessionIds: [] };
413
+ return { sessionIndex: '', newSessionIds: [], candidateSessions: [] };
260
414
  }
261
- const lines = [];
262
- const newSessionIds = [];
263
- for (const { conversation, filePath } of eligible) {
264
- const userMessageCount = conversation.messages.filter((m) => m.type === 'user').length;
265
- const isNew = !processedSet.has(conversation.sessionId);
266
- if (isNew) {
267
- newSessionIds.push(conversation.sessionId);
415
+ const newSessions = [];
416
+ const oldSessions = [];
417
+ for (const session of eligible) {
418
+ if (isSessionVersionProcessed(state, session)) {
419
+ oldSessions.push(session);
420
+ }
421
+ else {
422
+ newSessions.push(session);
268
423
  }
269
- const status = isNew ? '[NEW]' : '[old]';
270
- const summary = conversation.summary ?? '(no summary)';
271
- lines.push(`${status} ${summary} (${userMessageCount} user msgs) — ${filePath}`);
272
424
  }
273
- return { sessionIndex: lines.join('\n'), newSessionIds };
425
+ newSessions.sort((a, b) => {
426
+ const attemptDelta = getSessionAttemptCount(state, a) - getSessionAttemptCount(state, b);
427
+ if (attemptDelta !== 0) {
428
+ return attemptDelta;
429
+ }
430
+ return compareIndexedSessions(a, b);
431
+ });
432
+ const candidateSessions = newSessions.slice(0, MAX_NEW_SESSION_BATCH_SIZE);
433
+ const remainingSlots = Math.max(0, MAX_SESSION_INDEX_SIZE - candidateSessions.length);
434
+ const displayedOldSessions = oldSessions.slice(0, remainingSlots);
435
+ const candidateSessionIds = new Set(candidateSessions.map((session) => getSessionVersionKey(session)));
436
+ const lines = [...candidateSessions, ...displayedOldSessions].map((session) => {
437
+ const status = candidateSessionIds.has(getSessionVersionKey(session))
438
+ ? '[NEW]'
439
+ : '[old]';
440
+ const summary = session.summary ?? '(no summary)';
441
+ return `${status} ${summary} (${session.userMessageCount} user msgs) — ${session.filePath}`;
442
+ });
443
+ return {
444
+ sessionIndex: lines.join('\n'),
445
+ newSessionIds: candidateSessions.map((session) => session.sessionId),
446
+ candidateSessions,
447
+ };
274
448
  }
275
449
  /**
276
450
  * Builds a summary of all existing skills — both memory-extracted skills
@@ -498,9 +672,9 @@ export async function startMemoryService(config) {
498
672
  debugLogger.log(`[MemoryService] State loaded: ${previousRuns} previous run(s), ${previouslyProcessed} session(s) already processed`);
499
673
  // Build session index: all eligible sessions with summaries + file paths.
500
674
  // The agent decides which to read in full via read_file.
501
- const { sessionIndex, newSessionIds } = await buildSessionIndex(chatsDir, state);
675
+ const { sessionIndex, newSessionIds, candidateSessions } = await buildSessionIndex(chatsDir, state);
502
676
  const totalInIndex = sessionIndex ? sessionIndex.split('\n').length : 0;
503
- debugLogger.log(`[MemoryService] Session scan: ${totalInIndex} eligible session(s) found, ${newSessionIds.length} new`);
677
+ debugLogger.log(`[MemoryService] Session scan: ${totalInIndex} indexed session(s), ${candidateSessions.length} surfaced as new candidates`);
504
678
  if (newSessionIds.length === 0) {
505
679
  debugLogger.log('[MemoryService] Skipped: no new sessions to process');
506
680
  return;
@@ -541,8 +715,42 @@ export async function startMemoryService(config) {
541
715
  modelConfig: agentDefinition.modelConfig,
542
716
  });
543
717
  debugLogger.log(`[MemoryService] Starting extraction agent (model: ${agentDefinition.modelConfig.model}, maxTurns: 30, maxTime: 30min)`);
718
+ const candidateSessionsByPath = new Map(candidateSessions.map((session) => [
719
+ path.resolve(session.filePath),
720
+ session,
721
+ ]));
722
+ const processedSessionKeys = new Set();
723
+ const pendingReadFileSessions = new Map();
544
724
  // Create and run the extraction agent
545
- const executor = await LocalAgentExecutor.create(agentDefinition, context);
725
+ const executor = await LocalAgentExecutor.create(agentDefinition, context, (activity) => {
726
+ const readFileCallId = getReadFileStartCallId(activity);
727
+ if (readFileCallId) {
728
+ const resolvedPath = getResolvedReadFilePath(config, activity);
729
+ if (!resolvedPath) {
730
+ return;
731
+ }
732
+ const session = candidateSessionsByPath.get(resolvedPath);
733
+ if (!session) {
734
+ return;
735
+ }
736
+ pendingReadFileSessions.set(readFileCallId, getSessionVersionKey(session));
737
+ return;
738
+ }
739
+ const completedReadFileCallId = getCompletedReadFileCallId(activity);
740
+ if (completedReadFileCallId) {
741
+ const sessionKey = pendingReadFileSessions.get(completedReadFileCallId);
742
+ if (!sessionKey) {
743
+ return;
744
+ }
745
+ processedSessionKeys.add(sessionKey);
746
+ pendingReadFileSessions.delete(completedReadFileCallId);
747
+ return;
748
+ }
749
+ const failedReadFileCallId = getFailedReadFileCallId(activity);
750
+ if (failedReadFileCallId) {
751
+ pendingReadFileSessions.delete(failedReadFileCallId);
752
+ }
753
+ });
546
754
  await executor.run({ request: 'Extract skills from the provided sessions.' }, abortController.signal);
547
755
  const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
548
756
  // Diff skills directory to find newly created skills
@@ -577,10 +785,21 @@ export async function startMemoryService(config) {
577
785
  if (validPatches.length > 0) {
578
786
  debugLogger.log(`[MemoryService] ${validPatches.length} valid patch(es) currently in inbox; ${patchesCreatedThisRun.length} created or updated this run`);
579
787
  }
788
+ const processedSessions = candidateSessions
789
+ .filter((session) => processedSessionKeys.has(getSessionVersionKey(session)))
790
+ .map((session) => ({
791
+ sessionId: session.sessionId,
792
+ lastUpdated: session.lastUpdated,
793
+ }));
580
794
  // Record the run with full metadata
581
795
  const run = {
582
796
  runAt: new Date().toISOString(),
583
- sessionIds: newSessionIds,
797
+ sessionIds: processedSessions.map((session) => session.sessionId),
798
+ candidateSessions: candidateSessions.map((session) => ({
799
+ sessionId: session.sessionId,
800
+ lastUpdated: session.lastUpdated,
801
+ })),
802
+ processedSessions,
584
803
  skillsCreated,
585
804
  };
586
805
  const updatedState = {
@@ -595,7 +814,7 @@ export async function startMemoryService(config) {
595
814
  if (patchesCreatedThisRun.length > 0) {
596
815
  completionParts.push(`prepared ${patchesCreatedThisRun.length} patch(es): ${patchesCreatedThisRun.join(', ')}`);
597
816
  }
598
- debugLogger.log(`[MemoryService] Completed in ${elapsed}s. ${completionParts.join('; ')} (processed ${newSessionIds.length} session(s))`);
817
+ debugLogger.log(`[MemoryService] Completed in ${elapsed}s. ${completionParts.join('; ')} (read ${processedSessions.length}/${candidateSessions.length} surfaced session(s))`);
599
818
  const feedbackParts = [];
600
819
  if (skillsCreated.length > 0) {
601
820
  feedbackParts.push(`${skillsCreated.length} new skill${skillsCreated.length > 1 ? 's' : ''} extracted from past sessions: ${skillsCreated.join(', ')}`);
@@ -606,7 +825,7 @@ export async function startMemoryService(config) {
606
825
  coreEvents.emitFeedback('info', `${feedbackParts.join('. ')}. Use /memory inbox to review.`);
607
826
  }
608
827
  else {
609
- debugLogger.log(`[MemoryService] Completed in ${elapsed}s. No new skills or patches created (processed ${newSessionIds.length} session(s))`);
828
+ debugLogger.log(`[MemoryService] Completed in ${elapsed}s. No new skills or patches created (read ${processedSessions.length}/${candidateSessions.length} surfaced session(s))`);
610
829
  }
611
830
  }
612
831
  catch (error) {