@zooique/memora 4.0.0 → 5.1.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 (245) hide show
  1. package/CHANGELOG.md +235 -1743
  2. package/README.en.md +43 -36
  3. package/README.md +308 -303
  4. package/dist/agent/agent.d.ts +46 -82
  5. package/dist/agent/agent.d.ts.map +1 -1
  6. package/dist/agent/agent.js +153 -220
  7. package/dist/agent/agent.js.map +1 -1
  8. package/dist/agent/assembler.d.ts +3 -16
  9. package/dist/agent/assembler.d.ts.map +1 -1
  10. package/dist/agent/assembler.js +76 -47
  11. package/dist/agent/assembler.js.map +1 -1
  12. package/dist/agent/backgroundTasks.d.ts +8 -1
  13. package/dist/agent/backgroundTasks.d.ts.map +1 -1
  14. package/dist/agent/backgroundTasks.js +8 -1
  15. package/dist/agent/backgroundTasks.js.map +1 -1
  16. package/dist/agent/budget.d.ts +23 -5
  17. package/dist/agent/budget.d.ts.map +1 -1
  18. package/dist/agent/budget.js +8 -2
  19. package/dist/agent/budget.js.map +1 -1
  20. package/dist/agent/builtinToolHandlers.d.ts +50 -10
  21. package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
  22. package/dist/agent/builtinToolHandlers.js +67 -20
  23. package/dist/agent/builtinToolHandlers.js.map +1 -1
  24. package/dist/agent/builtinTools.d.ts +16 -0
  25. package/dist/agent/builtinTools.d.ts.map +1 -1
  26. package/dist/agent/builtinTools.js +15 -4
  27. package/dist/agent/builtinTools.js.map +1 -1
  28. package/dist/agent/constants.d.ts +0 -6
  29. package/dist/agent/constants.d.ts.map +1 -1
  30. package/dist/agent/constants.js +7 -8
  31. package/dist/agent/constants.js.map +1 -1
  32. package/dist/agent/contextManager.d.ts +8 -0
  33. package/dist/agent/contextManager.d.ts.map +1 -1
  34. package/dist/agent/contextManager.js +45 -3
  35. package/dist/agent/contextManager.js.map +1 -1
  36. package/dist/agent/contextPreparer.d.ts +1 -1
  37. package/dist/agent/contextPreparer.d.ts.map +1 -1
  38. package/dist/agent/contextPreparer.js +15 -10
  39. package/dist/agent/contextPreparer.js.map +1 -1
  40. package/dist/agent/guardRail.d.ts +25 -10
  41. package/dist/agent/guardRail.d.ts.map +1 -1
  42. package/dist/agent/guardRail.js +154 -46
  43. package/dist/agent/guardRail.js.map +1 -1
  44. package/dist/agent/loop.d.ts +46 -13
  45. package/dist/agent/loop.d.ts.map +1 -1
  46. package/dist/agent/loop.js +145 -32
  47. package/dist/agent/loop.js.map +1 -1
  48. package/dist/agent/managers/archiveCoordinator.d.ts +15 -3
  49. package/dist/agent/managers/archiveCoordinator.d.ts.map +1 -1
  50. package/dist/agent/managers/archiveCoordinator.js +13 -7
  51. package/dist/agent/managers/archiveCoordinator.js.map +1 -1
  52. package/dist/agent/managers/chatLockManager.d.ts +3 -9
  53. package/dist/agent/managers/chatLockManager.d.ts.map +1 -1
  54. package/dist/agent/managers/chatLockManager.js +7 -25
  55. package/dist/agent/managers/chatLockManager.js.map +1 -1
  56. package/dist/agent/managers/llmCaller.d.ts.map +1 -1
  57. package/dist/agent/managers/llmCaller.js +27 -1
  58. package/dist/agent/managers/llmCaller.js.map +1 -1
  59. package/dist/agent/managers/memoryInspector.d.ts +12 -7
  60. package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
  61. package/dist/agent/managers/memoryInspector.js +32 -19
  62. package/dist/agent/managers/memoryInspector.js.map +1 -1
  63. package/dist/agent/managers/roundSummaryGenerator.d.ts +3 -1
  64. package/dist/agent/managers/roundSummaryGenerator.d.ts.map +1 -1
  65. package/dist/agent/managers/roundSummaryGenerator.js +14 -4
  66. package/dist/agent/managers/roundSummaryGenerator.js.map +1 -1
  67. package/dist/agent/managers/sessionArchiver.d.ts +20 -6
  68. package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
  69. package/dist/agent/managers/sessionArchiver.js +19 -5
  70. package/dist/agent/managers/sessionArchiver.js.map +1 -1
  71. package/dist/agent/managers/sessionManager.d.ts +21 -88
  72. package/dist/agent/managers/sessionManager.d.ts.map +1 -1
  73. package/dist/agent/managers/sessionManager.js +77 -278
  74. package/dist/agent/managers/sessionManager.js.map +1 -1
  75. package/dist/agent/seed/orchestrator.d.ts.map +1 -1
  76. package/dist/agent/seed/orchestrator.js +3 -3
  77. package/dist/agent/seed/orchestrator.js.map +1 -1
  78. package/dist/agent/seed/prepare.d.ts.map +1 -1
  79. package/dist/agent/seed/prepare.js +9 -4
  80. package/dist/agent/seed/prepare.js.map +1 -1
  81. package/dist/agent/seed/types.d.ts +11 -4
  82. package/dist/agent/seed/types.d.ts.map +1 -1
  83. package/dist/agent/seed/types.js +2 -2
  84. package/dist/agent/toolExecutor.d.ts +69 -18
  85. package/dist/agent/toolExecutor.d.ts.map +1 -1
  86. package/dist/agent/toolExecutor.js +188 -28
  87. package/dist/agent/toolExecutor.js.map +1 -1
  88. package/dist/agent/toolResultCache.js +1 -1
  89. package/dist/agent/toolRunner.d.ts +4 -2
  90. package/dist/agent/toolRunner.d.ts.map +1 -1
  91. package/dist/agent/toolRunner.js +7 -4
  92. package/dist/agent/toolRunner.js.map +1 -1
  93. package/dist/agent/types.d.ts +8 -25
  94. package/dist/agent/types.d.ts.map +1 -1
  95. package/dist/index.d.ts +9 -20
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.js +35 -32
  98. package/dist/index.js.map +1 -1
  99. package/dist/logging/logger.d.ts +4 -1
  100. package/dist/logging/logger.d.ts.map +1 -1
  101. package/dist/logging/logger.js +5 -2
  102. package/dist/logging/logger.js.map +1 -1
  103. package/dist/memory/gcService.d.ts.map +1 -1
  104. package/dist/memory/gcService.js +3 -5
  105. package/dist/memory/gcService.js.map +1 -1
  106. package/dist/memory/inMemorySessionStore.d.ts +2 -2
  107. package/dist/memory/inMemorySessionStore.js +2 -2
  108. package/dist/memory/inMemoryStorage.d.ts +4 -3
  109. package/dist/memory/inMemoryStorage.d.ts.map +1 -1
  110. package/dist/memory/inMemoryStorage.js +2 -2
  111. package/dist/memory/inMemoryStorage.js.map +1 -1
  112. package/dist/memory/nodeSqliteStorage.d.ts +17 -0
  113. package/dist/memory/nodeSqliteStorage.d.ts.map +1 -0
  114. package/dist/memory/nodeSqliteStorage.js +393 -0
  115. package/dist/memory/nodeSqliteStorage.js.map +1 -0
  116. package/dist/memory/projectManager.d.ts +10 -20
  117. package/dist/memory/projectManager.d.ts.map +1 -1
  118. package/dist/memory/projectManager.js +27 -41
  119. package/dist/memory/projectManager.js.map +1 -1
  120. package/dist/memory/roundStore.d.ts +76 -1
  121. package/dist/memory/roundStore.d.ts.map +1 -1
  122. package/dist/memory/roundStore.js.map +1 -1
  123. package/dist/memory/roundSummaryLookup.d.ts +26 -0
  124. package/dist/memory/roundSummaryLookup.d.ts.map +1 -0
  125. package/dist/memory/roundSummaryLookup.js +19 -0
  126. package/dist/memory/roundSummaryLookup.js.map +1 -0
  127. package/dist/memory/sessionStore.d.ts +19 -2
  128. package/dist/memory/sessionStore.d.ts.map +1 -1
  129. package/dist/memory/sessionStore.js.map +1 -1
  130. package/dist/memory/sourceValidation.d.ts +2 -13
  131. package/dist/memory/sourceValidation.d.ts.map +1 -1
  132. package/dist/memory/sourceValidation.js +5 -16
  133. package/dist/memory/sourceValidation.js.map +1 -1
  134. package/dist/memory/storageInterface.d.ts +26 -16
  135. package/dist/memory/storageInterface.d.ts.map +1 -1
  136. package/dist/memory/supersedeResolve.d.ts +39 -0
  137. package/dist/memory/supersedeResolve.d.ts.map +1 -0
  138. package/dist/memory/supersedeResolve.js +16 -0
  139. package/dist/memory/supersedeResolve.js.map +1 -0
  140. package/dist/memory/types.d.ts +3 -2
  141. package/dist/memory/types.d.ts.map +1 -1
  142. package/dist/memory/types.js +2 -1
  143. package/dist/memory/types.js.map +1 -1
  144. package/dist/role-pack/rolePackManager.d.ts +33 -24
  145. package/dist/role-pack/rolePackManager.d.ts.map +1 -1
  146. package/dist/role-pack/rolePackManager.js +48 -42
  147. package/dist/role-pack/rolePackManager.js.map +1 -1
  148. package/dist/role-pack/strategyKeys.d.ts +8 -0
  149. package/dist/role-pack/strategyKeys.d.ts.map +1 -1
  150. package/dist/role-pack/strategyKeys.js +10 -0
  151. package/dist/role-pack/strategyKeys.js.map +1 -1
  152. package/dist/role-pack/strategyResolver.d.ts +6 -1
  153. package/dist/role-pack/strategyResolver.d.ts.map +1 -1
  154. package/dist/role-pack/strategyResolver.js +20 -2
  155. package/dist/role-pack/strategyResolver.js.map +1 -1
  156. package/dist/role-pack/types.d.ts +5 -1
  157. package/dist/role-pack/types.d.ts.map +1 -1
  158. package/dist/security/confirmEntries.d.ts +21 -6
  159. package/dist/security/confirmEntries.d.ts.map +1 -1
  160. package/dist/security/confirmEntries.js +21 -6
  161. package/dist/security/confirmEntries.js.map +1 -1
  162. package/dist/security/pathGuard.d.ts +44 -10
  163. package/dist/security/pathGuard.d.ts.map +1 -1
  164. package/dist/security/pathGuard.js +70 -10
  165. package/dist/security/pathGuard.js.map +1 -1
  166. package/dist/utils/backgroundTask.d.ts +56 -34
  167. package/dist/utils/backgroundTask.d.ts.map +1 -1
  168. package/dist/utils/backgroundTask.js +130 -99
  169. package/dist/utils/backgroundTask.js.map +1 -1
  170. package/dist/utils/errors.d.ts +3 -2
  171. package/dist/utils/errors.d.ts.map +1 -1
  172. package/dist/utils/errors.js +3 -2
  173. package/dist/utils/errors.js.map +1 -1
  174. package/dist/utils/eventEmitter.d.ts +20 -22
  175. package/dist/utils/eventEmitter.d.ts.map +1 -1
  176. package/dist/utils/eventEmitter.js +0 -3
  177. package/dist/utils/eventEmitter.js.map +1 -1
  178. package/dist/utils/time.d.ts +3 -3
  179. package/dist/utils/time.d.ts.map +1 -1
  180. package/dist/utils/time.js +3 -3
  181. package/dist/utils/time.js.map +1 -1
  182. package/dist/utils/toError.d.ts +1 -1
  183. package/dist/utils/toError.js +1 -1
  184. package/dist/web-fetch/loginWall.d.ts +39 -0
  185. package/dist/web-fetch/loginWall.d.ts.map +1 -0
  186. package/dist/web-fetch/loginWall.js +78 -0
  187. package/dist/web-fetch/loginWall.js.map +1 -0
  188. package/dist/web-fetch/types.d.ts +8 -0
  189. package/dist/web-fetch/types.d.ts.map +1 -1
  190. package/dist/web-fetch/webFetchProvider.d.ts.map +1 -1
  191. package/dist/web-fetch/webFetchProvider.js +3 -1
  192. package/dist/web-fetch/webFetchProvider.js.map +1 -1
  193. package/dist/web-search/fetchWebSearchProvider.js +28 -23
  194. package/dist/web-search/fetchWebSearchProvider.js.map +1 -1
  195. package/docs/architecture/role-pack-authoring-guide.md +7 -1
  196. package/docs/architecture/role-pack-spec.md +11 -6
  197. package/docs/memora-api-reference.md +1354 -1276
  198. package/docs/memora-/345/215/207/347/272/247/346/214/207/345/215/227-4.x-/345/210/260-5.0.0.md +385 -0
  199. package/docs/memora-/346/216/245/345/205/245/346/214/207/345/215/227.md +89 -49
  200. package/docs/role-pack-/345/274/200/346/224/276/351/224/256/346/214/207/345/215/227.md +148 -148
  201. package/package.json +13 -4
  202. package/role-packs/README.md +41 -40
  203. package/role-packs/memora/345/212/251/346/211/213/rules.md +5 -4
  204. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/manifest.json +1 -0
  205. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/persona.md +46 -46
  206. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/rules.md +17 -16
  207. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/emotion-wave.md +46 -46
  208. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/foreshadow.md +29 -29
  209. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/outline-expand.md +73 -48
  210. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/project-init/scripts/init-novel-project.mjs +445 -441
  211. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/story-bible.md +62 -62
  212. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/manifest.json +1 -0
  213. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/rules.md +2 -1
  214. package/dist/agent/managers/dedupManager.d.ts +0 -85
  215. package/dist/agent/managers/dedupManager.d.ts.map +0 -1
  216. package/dist/agent/managers/dedupManager.js +0 -248
  217. package/dist/agent/managers/dedupManager.js.map +0 -1
  218. package/dist/agent/managers/goalConsistencyChecker.d.ts +0 -42
  219. package/dist/agent/managers/goalConsistencyChecker.d.ts.map +0 -1
  220. package/dist/agent/managers/goalConsistencyChecker.js +0 -178
  221. package/dist/agent/managers/goalConsistencyChecker.js.map +0 -1
  222. package/dist/agent/managers/llmJudgeHelper.d.ts +0 -21
  223. package/dist/agent/managers/llmJudgeHelper.d.ts.map +0 -1
  224. package/dist/agent/managers/llmJudgeHelper.js +0 -32
  225. package/dist/agent/managers/llmJudgeHelper.js.map +0 -1
  226. package/dist/agent/managers/memoryAdvisor.d.ts +0 -105
  227. package/dist/agent/managers/memoryAdvisor.d.ts.map +0 -1
  228. package/dist/agent/managers/memoryAdvisor.js +0 -322
  229. package/dist/agent/managers/memoryAdvisor.js.map +0 -1
  230. package/dist/agent/managers/memoryGovernance.d.ts +0 -24
  231. package/dist/agent/managers/memoryGovernance.d.ts.map +0 -1
  232. package/dist/agent/managers/memoryGovernance.js +0 -46
  233. package/dist/agent/managers/memoryGovernance.js.map +0 -1
  234. package/dist/memory/governance.d.ts +0 -17
  235. package/dist/memory/governance.d.ts.map +0 -1
  236. package/dist/memory/governance.js +0 -17
  237. package/dist/memory/governance.js.map +0 -1
  238. package/dist/memory/projectRegistry.d.ts +0 -47
  239. package/dist/memory/projectRegistry.d.ts.map +0 -1
  240. package/dist/memory/projectRegistry.js +0 -151
  241. package/dist/memory/projectRegistry.js.map +0 -1
  242. package/dist/utils/recallDefaults.d.ts +0 -16
  243. package/dist/utils/recallDefaults.d.ts.map +0 -1
  244. package/dist/utils/recallDefaults.js +0 -16
  245. package/dist/utils/recallDefaults.js.map +0 -1
@@ -1,38 +1,60 @@
1
- /** 后台任务累计统计快照(宿主读后台健康度,纯只读) */
2
- export interface BackgroundTaskStats {
3
- /** 在途任务数(含排队中的) */
4
- pending: number;
5
- /** 成功完成数(累计) */
6
- completed: number;
7
- /** 失败数(累计,未被业务侧消化的) */
8
- failed: number;
9
- }
10
- /**
11
- * 启动一个后台任务(不阻塞调用方)。统一计数 + 兜底失败日志 + 并发槽位控制。
12
- * 保留「调用即纳入在途计数」的契约——无论立即执行还是排队等待。
13
- *
14
- * @param label 任务标签(日志/观测区分用途)
15
- * @param factory 返回业务 Promise 的工厂;内部不要自行 `catch`,交给本门面统一兜底计数
16
- * @param onFailure 失败时的业务侧补救(如宿主事件 emit);缺省仅记日志
17
- */
18
- export declare function backgroundTask(label: string, factory: () => Promise<unknown>, onFailure?: (err: unknown) => void): void;
19
- /** 读取后台任务累计统计快照(只读副本,宿主可观测后台健康度) */
20
- export declare function getBackgroundTaskStats(): BackgroundTaskStats;
21
1
  /**
22
- * 等待所有在途后台任务完成(带超时保护,防止任务永不返回阻塞 close)。
23
- * Agent.close() 必须调用此函数——否则后台命中刷新/摘要生成等任务可能在 storage 关闭后 upsert 失效。
2
+ * 后台任务槽位调度器(实例级)
24
3
  *
25
- * @param timeoutMs 超时时间(毫秒),默认 5000ms
26
- * @returns **等待开始时**的在途任务数(0 = 进入本函数时无在途任务)。
27
- * ⚠️ 该值是「曾经在途」而非「已等到完成」:超时放弃剩余任务时返回值仍为初始在途数,
28
- * 不代表实际完成数。调用方据此判断「是否有在途任务」是正确的(如 `Agent.close()` 的
29
- * `awaited > 0`),但**不可当作已完成计数**使用。
4
+ * 每实例持有独立的并发计数与排队队列。由装配期创建,归属 Agent 实例:
5
+ * 经 SeedDeps(摘要/命名)+ BuiltinToolHandlers(命中 touch)注入,close() 时等待/清场。
30
6
  */
31
- export declare function awaitBackgroundTasks(timeoutMs?: number): Promise<number>;
32
- /**
33
- * 重置模块级状态(仅测试使用,生产代码禁止调用)。
34
- * 清理 activeCount、pendingQueue、stats,确保测试用例间状态隔离。
35
- * @internal
36
- */
37
- export declare function _resetBackgroundTaskState(): void;
7
+ export declare class BackgroundTaskScheduler {
8
+ /** 当前正在执行的任务数(不含排队中的) */
9
+ private activeCount;
10
+ /** 排队等待执行的任务(FIFO) */
11
+ private pendingQueue;
12
+ /** 在途任务数(调用即纳入在途计数,无论立即执行还是排队等待) */
13
+ private pendingCount;
14
+ /**
15
+ * 启动一个后台任务(不阻塞调用方)。统一计数 + 兜底失败日志 + 并发槽位控制。
16
+ * 保留「调用即纳入在途计数」的契约——无论立即执行还是排队等待。
17
+ *
18
+ * @param label 任务标签(日志/观测区分用途)
19
+ * @param factory 返回业务 Promise 的工厂;内部不要自行 `catch`,交给本门面统一兜底计数
20
+ * @param onFailure 失败时的业务侧补救(如宿主事件 emit);缺省仅记日志
21
+ */
22
+ schedule(label: string, factory: () => Promise<unknown>, onFailure?: (err: unknown) => void): void;
23
+ /**
24
+ * 等待所有在途后台任务完成(带超时保护,防止任务永不返回阻塞 close)。
25
+ * Agent.close() 必须调用此方法——否则后台命中刷新/摘要生成等任务可能在 storage 关闭后 upsert 失效。
26
+ *
27
+ * @param timeoutMs 超时时间(毫秒),默认 5000ms
28
+ * @returns **等待开始时**的在途任务数(0 = 进入本函数时无在途任务)。
29
+ * ⚠️ 该值是「曾经在途」而非「已等到完成」:超时放弃剩余任务时返回值仍为初始在途数,
30
+ * 不代表实际完成数。调用方据此判断「是否有在途任务」是正确的(如 `Agent.close()` 的
31
+ * `awaited > 0`),但**不可当作已完成计数**使用。
32
+ */
33
+ awaitPending(timeoutMs?: number): Promise<number>;
34
+ /**
35
+ * 取消**尚未启动**的排队任务(丢弃队列,不中断在途任务)。
36
+ *
37
+ * 用途:close() 在 awaitPending 超时后调用,防止「关后仍从队列启动任务 → 写已关 storage」。
38
+ * ⚠️ 语义边界(勿外溢):本方法**只清未启动队列**(pendingQueue),**不中断(不可中断)已在途任务**——
39
+ * 在途任务仍会跑完并各自计数回落;此处**不承诺**「关后不再有任何后台写入」。
40
+ *
41
+ * @returns 被丢弃的排队任务数(已计入 pendingCount 者相应扣除)
42
+ */
43
+ cancelPending(): number;
44
+ /**
45
+ * 执行一个任务(内部方法)。在有空闲槽位时调用。
46
+ * 任务完成后自动释放槽位并消费排队中的下一个任务。
47
+ */
48
+ private executeTask;
49
+ /**
50
+ * 任务结算(内部方法):释放槽位 + 回落计数 + 记日志(失败另触发业务兜底)+ 消费队列。
51
+ * @param err null 表示成功,非 null 表示失败原因
52
+ */
53
+ private settle;
54
+ /**
55
+ * 从排队队列中消费一个任务执行(并发槽位释放时调用)。
56
+ * 保证不超过 MAX_CONCURRENT_BACKGROUND_TASKS 上限。
57
+ */
58
+ private drainQueue;
59
+ }
38
60
  //# sourceMappingURL=backgroundTask.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"backgroundTask.d.ts","sourceRoot":"","sources":["../../src/utils/backgroundTask.ts"],"names":[],"mappings":"AAaA,+BAA+B;AAC/B,MAAM,WAAW,mBAAmB;IAClC,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAmBD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAC/B,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,GACjC,IAAI,CAWN;AA4CD,oCAAoC;AACpC,wBAAgB,sBAAsB,IAAI,mBAAmB,CAE5D;AAED;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CAAC,SAAS,SAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAiB5E;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAMhD"}
1
+ {"version":3,"file":"backgroundTask.d.ts","sourceRoot":"","sources":["../../src/utils/backgroundTask.ts"],"names":[],"mappings":"AAqCA;;;;;GAKG;AACH,qBAAa,uBAAuB;IAClC,yBAAyB;IACzB,OAAO,CAAC,WAAW,CAAK;IAExB,sBAAsB;IACtB,OAAO,CAAC,YAAY,CAAoB;IAExC,oCAAoC;IACpC,OAAO,CAAC,YAAY,CAAK;IAEzB;;;;;;;OAOG;IACH,QAAQ,CACN,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAC/B,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,GACjC,IAAI;IAcP;;;;;;;;;OASG;IACG,YAAY,CAAC,SAAS,SAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBrD;;;;;;;;OAQG;IACH,aAAa,IAAI,MAAM;IAUvB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAiBnB;;;OAGG;IACH,OAAO,CAAC,MAAM;IAYd;;;OAGG;IACH,OAAO,CAAC,UAAU;CAOnB"}
@@ -1,117 +1,148 @@
1
1
  /**
2
- * 后台任务统一收口门面 —— 一个「后台副作用」的单一启动/观测入口。
2
+ * 后台任务统一收口门面 —— 一个「后台副作用」的单一启动入口(**实例级**)。
3
3
  *
4
4
  * 收敛散落的 `fire-and-forget`(摘要生成 round-summary / 命中刷新 search_memories.touch / 会话命名 session-title):
5
5
  * - 统一启动:不阻塞调用方,业务 Promise 交给门面兜底;
6
- * - 统一观测:按 label 累计 pending/completed/failed,宿主可读后台健康度;
7
6
  * - 统一兜底:失败统一记日志,业务侧补救经 onFailure 挂载(如宿主事件 emit);
8
- * 统一限流:最大并发槽位防止上述三类任务无界并发耗尽资源。
7
+ * - 统一限流:最大并发槽位防止上述三类任务无界并发耗尽资源。
9
8
  *
10
- * 与模块级 logger 同模式(全局单例,组件直接 import,零注入成本)。
9
+ * ⚠️ **同名异物**(与 `src/agent/backgroundTasks.ts` 的 `BackgroundTaskRegistry` 严格区分):
10
+ * 本类是「**内存型 fire-and-forget 副作用的任务槽位调度器**」(摘要/命名/打分,随 Agent 生命周期);
11
+ * `BackgroundTaskRegistry` 是「**shell 子进程任务注册表**」(run_command background,可被 kill_command 寻址)。
12
+ * 两者同名不同物,勿混用。
13
+ *
14
+ * ⚠️ **实例级**(形态定案:一个 Agent = 一个项目):并发槽位与排队队列绑定实例,
15
+ * N 个 Agent 实例各自 5 槽、各自 FIFO,互不挤占(见测试 MULTI-AGENT-1「隔离验证」块)。
16
+ * 旧版为模块级单例 —— 多实例共享槽位属已知代价,已按 SSOT 归位到实例。
17
+ *
18
+ * 删后注记(2026-10-16 · 5.0.0):曾有 BackgroundTaskStats 统计快照出口
19
+ * (getBackgroundTaskStats + completed/failed 累计字段)——Agent 公开面包装零宿主消费,
20
+ * 连带拆除后 completed/failed 成只写字段(僵尸),遂整链删除。在途观测由
21
+ * awaitPending 的返回值承担;勿加回。
11
22
  */
12
23
  import { logger } from '../logging/logger.js';
13
- /** 后台任务累计统计(模块级单例状态) */
14
- const stats = { pending: 0, completed: 0, failed: 0 };
15
- /** 后台任务最大并发数(生产安全性:防止无界并发耗尽资源) */
24
+ /** 后台任务最大并发数(每实例上限;生产安全性:防止无界并发耗尽资源) */
16
25
  const MAX_CONCURRENT_BACKGROUND_TASKS = 5;
17
- /** 当前正在执行的任务数(不含排队中的) */
18
- let activeCount = 0;
19
- const pendingQueue = [];
20
26
  /**
21
- * 启动一个后台任务(不阻塞调用方)。统一计数 + 兜底失败日志 + 并发槽位控制。
22
- * 保留「调用即纳入在途计数」的契约——无论立即执行还是排队等待。
27
+ * 后台任务槽位调度器(实例级)
23
28
  *
24
- * @param label 任务标签(日志/观测区分用途)
25
- * @param factory 返回业务 Promise 的工厂;内部不要自行 `catch`,交给本门面统一兜底计数
26
- * @param onFailure 失败时的业务侧补救(如宿主事件 emit);缺省仅记日志
29
+ * 每实例持有独立的并发计数与排队队列。由装配期创建,归属 Agent 实例:
30
+ * 经 SeedDeps(摘要/命名)+ BuiltinToolHandlers(命中 touch)注入,close() 时等待/清场。
27
31
  */
28
- export function backgroundTask(label, factory, onFailure) {
29
- stats.pending++;
30
- if (activeCount < MAX_CONCURRENT_BACKGROUND_TASKS) {
31
- // 有空闲槽位 → 立即执行
32
- executeTask(label, factory, onFailure);
32
+ export class BackgroundTaskScheduler {
33
+ /** 当前正在执行的任务数(不含排队中的) */
34
+ activeCount = 0;
35
+ /** 排队等待执行的任务(FIFO) */
36
+ pendingQueue = [];
37
+ /** 在途任务数(调用即纳入在途计数,无论立即执行还是排队等待) */
38
+ pendingCount = 0;
39
+ /**
40
+ * 启动一个后台任务(不阻塞调用方)。统一计数 + 兜底失败日志 + 并发槽位控制。
41
+ * 保留「调用即纳入在途计数」的契约——无论立即执行还是排队等待。
42
+ *
43
+ * @param label 任务标签(日志/观测区分用途)
44
+ * @param factory 返回业务 Promise 的工厂;内部不要自行 `catch`,交给本门面统一兜底计数
45
+ * @param onFailure 失败时的业务侧补救(如宿主事件 emit);缺省仅记日志
46
+ */
47
+ schedule(label, factory, onFailure) {
48
+ // 调用即计入在途(立即执行 or 排队均算)
49
+ this.pendingCount++;
50
+ if (this.activeCount < MAX_CONCURRENT_BACKGROUND_TASKS) {
51
+ // 有空闲槽位 → 立即执行
52
+ this.executeTask(label, factory, onFailure);
53
+ }
54
+ else {
55
+ // 槽位已满 → 排队等待
56
+ logger.debug({ label }, '后台任务排队等待执行');
57
+ this.pendingQueue.push({ label, factory, onFailure });
58
+ }
33
59
  }
34
- else {
35
- // 槽位已满 → 排队等待
36
- logger.debug({ label }, '后台任务排队等待执行');
37
- pendingQueue.push({ label, factory, onFailure });
60
+ /**
61
+ * 等待所有在途后台任务完成(带超时保护,防止任务永不返回阻塞 close)。
62
+ * Agent.close() 必须调用此方法——否则后台命中刷新/摘要生成等任务可能在 storage 关闭后 upsert 失效。
63
+ *
64
+ * @param timeoutMs 超时时间(毫秒),默认 5000ms
65
+ * @returns **等待开始时**的在途任务数(0 = 进入本函数时无在途任务)。
66
+ * ⚠️ 该值是「曾经在途」而非「已等到完成」:超时放弃剩余任务时返回值仍为初始在途数,
67
+ * 不代表实际完成数。调用方据此判断「是否有在途任务」是正确的(如 `Agent.close()` 的
68
+ * `awaited > 0`),但**不可当作已完成计数**使用。
69
+ */
70
+ async awaitPending(timeoutMs = 5000) {
71
+ const initialPending = this.pendingCount;
72
+ if (initialPending === 0)
73
+ return 0;
74
+ logger.debug({ pending: initialPending }, '等待后台任务完成...');
75
+ const startTime = Date.now();
76
+ while (this.pendingCount > 0) {
77
+ if (Date.now() - startTime > timeoutMs) {
78
+ logger.warn({ pending: this.pendingCount, timeoutMs }, '等待后台任务超时,放弃剩余任务');
79
+ break;
80
+ }
81
+ // 等待下一个微任务周期,让 pending 计数有机会被更新
82
+ await new Promise((resolve) => setTimeout(resolve, 50));
83
+ }
84
+ return initialPending;
38
85
  }
39
- }
40
- /**
41
- * 执行一个任务(内部方法)。在有空闲槽位时调用。
42
- * 任务完成后自动释放槽位并消费排队中的下一个任务。
43
- */
44
- function executeTask(label, factory, onFailure) {
45
- activeCount++;
46
- const task = factory();
47
- task.then(() => {
48
- stats.pending--;
49
- stats.completed++;
50
- activeCount--;
51
- logger.debug({ label }, '后台任务完成');
52
- drainQueue();
53
- }, (err) => {
54
- stats.pending--;
55
- stats.failed++;
56
- activeCount--;
57
- logger.warn({ err, label }, '后台任务失败');
58
- onFailure?.(err);
59
- drainQueue();
60
- });
61
- }
62
- /**
63
- * 从排队队列中消费一个任务执行(并发槽位释放时调用)。
64
- * 保证不超过 MAX_CONCURRENT_BACKGROUND_TASKS 上限。
65
- */
66
- function drainQueue() {
67
- if (activeCount >= MAX_CONCURRENT_BACKGROUND_TASKS)
68
- return;
69
- const next = pendingQueue.shift();
70
- if (!next)
71
- return;
72
- // 排队任务启动时仍计入 pending(已在入队时计数),这里仅消费槽位
73
- executeTask(next.label, next.factory, next.onFailure);
74
- }
75
- /** 读取后台任务累计统计快照(只读副本,宿主可观测后台健康度) */
76
- export function getBackgroundTaskStats() {
77
- return { ...stats };
78
- }
79
- /**
80
- * 等待所有在途后台任务完成(带超时保护,防止任务永不返回阻塞 close)。
81
- * Agent.close() 必须调用此函数——否则后台命中刷新/摘要生成等任务可能在 storage 关闭后 upsert 失效。
82
- *
83
- * @param timeoutMs 超时时间(毫秒),默认 5000ms
84
- * @returns **等待开始时**的在途任务数(0 = 进入本函数时无在途任务)。
85
- * ⚠️ 该值是「曾经在途」而非「已等到完成」:超时放弃剩余任务时返回值仍为初始在途数,
86
- * 不代表实际完成数。调用方据此判断「是否有在途任务」是正确的(如 `Agent.close()` 的
87
- * `awaited > 0`),但**不可当作已完成计数**使用。
88
- */
89
- export async function awaitBackgroundTasks(timeoutMs = 5000) {
90
- const initialPending = stats.pending;
91
- if (initialPending === 0)
92
- return 0;
93
- logger.debug({ pending: initialPending }, '等待后台任务完成...');
94
- const startTime = Date.now();
95
- while (stats.pending > 0) {
96
- if (Date.now() - startTime > timeoutMs) {
97
- logger.warn({ pending: stats.pending, timeoutMs }, '等待后台任务超时,放弃剩余任务');
98
- break;
86
+ /**
87
+ * 取消**尚未启动**的排队任务(丢弃队列,不中断在途任务)。
88
+ *
89
+ * 用途:close() 在 awaitPending 超时后调用,防止「关后仍从队列启动任务 → 写已关 storage」。
90
+ * ⚠️ 语义边界(勿外溢):本方法**只清未启动队列**(pendingQueue),**不中断(不可中断)已在途任务**——
91
+ * 在途任务仍会跑完并各自计数回落;此处**不承诺**「关后不再有任何后台写入」。
92
+ *
93
+ * @returns 被丢弃的排队任务数(已计入 pendingCount 者相应扣除)
94
+ */
95
+ cancelPending() {
96
+ const discarded = this.pendingQueue.length;
97
+ if (discarded === 0)
98
+ return 0;
99
+ // 排队任务在入队时已计入 pendingCount,丢弃时同步扣回
100
+ this.pendingQueue.length = 0;
101
+ this.pendingCount -= discarded;
102
+ logger.warn({ discarded }, 'close: 丢弃未启动的排队后台任务');
103
+ return discarded;
104
+ }
105
+ /**
106
+ * 执行一个任务(内部方法)。在有空闲槽位时调用。
107
+ * 任务完成后自动释放槽位并消费排队中的下一个任务。
108
+ */
109
+ executeTask(label, factory, onFailure) {
110
+ this.activeCount++;
111
+ const task = factory();
112
+ task.then(() => {
113
+ this.settle(label, null, onFailure);
114
+ }, (err) => {
115
+ this.settle(label, err, onFailure);
116
+ });
117
+ }
118
+ /**
119
+ * 任务结算(内部方法):释放槽位 + 回落计数 + 记日志(失败另触发业务兜底)+ 消费队列。
120
+ * @param err null 表示成功,非 null 表示失败原因
121
+ */
122
+ settle(label, err, onFailure) {
123
+ this.pendingCount--;
124
+ this.activeCount--;
125
+ if (err === null) {
126
+ logger.debug({ label }, '后台任务完成');
99
127
  }
100
- // 等待下一个微任务周期,让 pending 计数有机会被更新
101
- await new Promise((resolve) => setTimeout(resolve, 50));
128
+ else {
129
+ logger.warn({ err, label }, '后台任务失败');
130
+ onFailure?.(err);
131
+ }
132
+ this.drainQueue();
133
+ }
134
+ /**
135
+ * 从排队队列中消费一个任务执行(并发槽位释放时调用)。
136
+ * 保证不超过 MAX_CONCURRENT_BACKGROUND_TASKS 上限。
137
+ */
138
+ drainQueue() {
139
+ if (this.activeCount >= MAX_CONCURRENT_BACKGROUND_TASKS)
140
+ return;
141
+ const next = this.pendingQueue.shift();
142
+ if (!next)
143
+ return;
144
+ // 排队任务启动时仍计入 pending(已在入队时计数),这里仅消费槽位
145
+ this.executeTask(next.label, next.factory, next.onFailure);
102
146
  }
103
- return initialPending;
104
- }
105
- /**
106
- * 重置模块级状态(仅测试使用,生产代码禁止调用)。
107
- * 清理 activeCount、pendingQueue、stats,确保测试用例间状态隔离。
108
- * @internal
109
- */
110
- export function _resetBackgroundTaskState() {
111
- stats.pending = 0;
112
- stats.completed = 0;
113
- stats.failed = 0;
114
- activeCount = 0;
115
- pendingQueue.length = 0;
116
147
  }
117
148
  //# sourceMappingURL=backgroundTask.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"backgroundTask.js","sourceRoot":"","sources":["../../src/utils/backgroundTask.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backgroundTask.js","sourceRoot":"","sources":["../../src/utils/backgroundTask.ts"],"names":[],"mappings":"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"}
@@ -11,8 +11,9 @@
11
11
  * 被 security/pathGuard 生产消费 4 处;`unknown` 为兜底值(当前无工厂产出,供直接构造保留)。
12
12
  * 勿按旧注释去改分类集合。
13
13
  *
14
- * ⚠️ 与宿主 `LlmErrorCategory`('connection'|'timeout'|'unknown')**不是同一个联合**:
15
- * 后者是**流式 error chunk** 的分类(见 hosts shared/protocol.ts),本文件只管 MemoraError。
14
+ * ⚠️ 与 `LlmErrorCategory`('connection'|'timeout'|'unknown')**不是同一个联合**:
15
+ * 后者是**流式 error chunk** 的分类,唯一定义在 `src/agent/types.ts`(宿主
16
+ * `shared/protocol.ts` 的 error 变体以同值内联字面量复刻,改值须两处同步);本文件只管 MemoraError。
16
17
  */
17
18
  type ErrorCategory = 'config' | 'network' | 'llm' | 'tool' | 'security' | 'unknown';
18
19
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,KAAK,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AAEpF;;;GAGG;AACH,eAAO,MAAM,aAAa;IACxB,qBAAqB;;IAErB,iBAAiB;;IAEjB,iBAAiB;;IAEjB,gBAAgB;;IAEhB,mBAAmB;;IAEnB,iBAAiB;;IAEjB,iBAAiB;;IAEjB,qBAAqB;;IAErB;;;;;;;OAOG;;IAEH,iBAAiB;;CAET,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAUpF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAEtE;AAED,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,aAAa,CAAC;IACxB,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;gBAEtB,IAAI,EAAE,oBAAoB;IAWtC,qBAAqB;IACrB,MAAM,IAAI,MAAM;CAYjB;AAED,cAAc;AACd,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,KAAK,GACZ,WAAW,CAEb;AAED,sDAAsD;AACtD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAIzD;AAED,cAAc;AACd,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,KAAK,GACZ,WAAW,CAEb;AAED,gBAAgB;AAChB,wBAAgB,QAAQ,CACtB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,KAAK,GACZ,WAAW,CAEb;AAED,cAAc;AACd,wBAAgB,SAAS,CACvB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,KAAK,EACb,SAAS,CAAC,EAAE,kBAAkB,GAC7B,WAAW,CAEb;AAED,gCAAgC;AAChC,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,KAAK,GACZ,WAAW,CAEb;AAED;0DAC0D;AAC1D,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAElD;AAED;qEACqE;AACrE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,CAM7E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEpD"}
@@ -11,8 +11,9 @@
11
11
  * 被 security/pathGuard 生产消费 4 处;`unknown` 为兜底值(当前无工厂产出,供直接构造保留)。
12
12
  * 勿按旧注释去改分类集合。
13
13
  *
14
- * ⚠️ 与宿主 `LlmErrorCategory`('connection'|'timeout'|'unknown')**不是同一个联合**:
15
- * 后者是**流式 error chunk** 的分类(见 hosts shared/protocol.ts),本文件只管 MemoraError。
14
+ * ⚠️ 与 `LlmErrorCategory`('connection'|'timeout'|'unknown')**不是同一个联合**:
15
+ * 后者是**流式 error chunk** 的分类,唯一定义在 `src/agent/types.ts`(宿主
16
+ * `shared/protocol.ts` 的 error 变体以同值内联字面量复刻,改值须两处同步);本文件只管 MemoraError。
16
17
  */
17
18
  /**
18
19
  * 工具错误码——供 AgentLoop 的 Reflection(自修正)判断是否可重试:
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,6 @@ export declare const AGENT_EVENTS: {
14
14
  * protocolGuard V-2 已登记 KERNEL_SELF_CONSUMED_EVENTS 豁免。
15
15
  */
16
16
  readonly sessionSwitched: "sessionSwitched";
17
- readonly projectSwitched: "projectSwitched";
18
17
  readonly archiveFailed: "archiveFailed";
19
18
  /**
20
19
  * 会话归档写入成功(updatedFields 非空才发,与 archiveFailed 对称)。
@@ -29,7 +28,6 @@ export declare const AGENT_EVENTS: {
29
28
  readonly archiveModeChanged: "archiveModeChanged";
30
29
  readonly rolePackSwitchLocked: "rolePackSwitchLocked";
31
30
  readonly workProjectionGenerated: "workProjectionGenerated";
32
- readonly dedupCompleted: "dedupCompleted";
33
31
  readonly sessionPauseTimedOut: "sessionPauseTimedOut";
34
32
  readonly sessionResumeBlocked: "sessionResumeBlocked";
35
33
  /** 订阅时宿主据此判断重要事件并 toast 提示 */
@@ -38,7 +36,6 @@ export declare const AGENT_EVENTS: {
38
36
  readonly inputTooLarge: "inputTooLarge";
39
37
  /** 回答中 LLM 调 ask_user 工具主动提问(唯一「提问后暂停」通道) */
40
38
  readonly questionPending: "questionPending";
41
- readonly goalDriftDetected: "goalDriftDetected";
42
39
  readonly sessionPaused: "sessionPaused";
43
40
  readonly sessionResumed: "sessionResumed";
44
41
  readonly sessionError: "sessionError";
@@ -73,6 +70,9 @@ export interface AgentEventMap extends Record<AgentEventName, unknown> {
73
70
  id: string;
74
71
  source: string;
75
72
  name: string;
73
+ /** 记忆正文(5.0.0 起可选携带):宿主「已沉淀」提示按用户心智显示内容而非 name 标识。
74
+ * 可选 = 跨 dist 契约:4.x 内核不发此字段,宿主须容错缺失回退 name(老数据 name 可读性有限)。 */
75
+ content?: string;
76
76
  };
77
77
  rolePackSwitched: {
78
78
  from: string | null;
@@ -81,6 +81,23 @@ export interface AgentEventMap extends Record<AgentEventName, unknown> {
81
81
  memoryRecalled: {
82
82
  count: number;
83
83
  query: string;
84
+ /** 命中明细(4.1.0 新增,MEM-EVENT-1):三字段各有消费面(宿主 S3-1 可展开行渲染 + S3-3 反馈按 id 寻址)。
85
+ * 可选 = 跨 dist 契约:4.0.x 内核不发此字段,宿主须容错缺失降级为条数提示(类型层强制消费方容错)。
86
+ * 条数上限真源 = search_memories 的 parseLimit 钳制(50),载荷全量映射不截断(不另立截断常量)。 */
87
+ hits?: {
88
+ id: string;
89
+ name: string;
90
+ source: string;
91
+ /** 命中正文(5.0.0 起可选携带):宿主命中明细按用户心智显示内容而非 name 标识。
92
+ * 可选 = 跨 dist 契约:4.x 内核 hits 元素无此字段,宿主须容错缺失回退 name。 */
93
+ contentPreview?: string;
94
+ }[];
95
+ /** 发起本次召回的 tool_call 唯一 ID(4.1.x 新增,MEM-EVENT-2):宿主据此把命中明细挂回
96
+ * 对应 search_memories 工具折叠块,而非按轮次全局堆在回复体上方。
97
+ * 可选 = 跨 dist 契约 + 直调容错:老内核/测试直调 searchMemories 不带 ID,宿主须回退
98
+ * 「无配对目标 → 轮次级兜底落位」路径(类型层强制消费方容错)。
99
+ * 唯一来源 = toolExecutor.execute 的 toolCallId 形参(loop → toolRunner 已全程透传)。 */
100
+ toolCallId?: string;
84
101
  };
85
102
  sessionForked: {
86
103
  from: string;
@@ -94,11 +111,6 @@ export interface AgentEventMap extends Record<AgentEventName, unknown> {
94
111
  fromSessionId: string;
95
112
  toSessionId: string;
96
113
  };
97
- projectSwitched: {
98
- from: string | null;
99
- to: string;
100
- projectName: string;
101
- };
102
114
  archiveFailed: {
103
115
  stage: 'session';
104
116
  message: string;
@@ -135,10 +147,6 @@ export interface AgentEventMap extends Record<AgentEventName, unknown> {
135
147
  sourcePath: string;
136
148
  summary: string;
137
149
  };
138
- dedupCompleted: {
139
- deduplicatedCount: number;
140
- demotedIds: string[];
141
- };
142
150
  sessionPauseTimedOut: {
143
151
  sessionId: string;
144
152
  pauseDuration: number;
@@ -160,16 +168,6 @@ export interface AgentEventMap extends Record<AgentEventName, unknown> {
160
168
  hint: string;
161
169
  };
162
170
  questionPending: AskQuestion[];
163
- goalDriftDetected: {
164
- sessionId: string;
165
- mainGoal: string;
166
- newGoal: string;
167
- similarity: number;
168
- level: 'same' | 'confirm' | 'drift';
169
- constraints: string[];
170
- /** 原名 goalVersion,仅载荷不承担校验 */
171
- goalChangeSeq: number;
172
- };
173
171
  sessionPaused: {
174
172
  reason: string;
175
173
  source: string;
@@ -1 +1 @@
1
- {"version":3,"file":"eventEmitter.d.ts","sourceRoot":"","sources":["../../src/utils/eventEmitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eventEmitter.d.ts","sourceRoot":"","sources":["../../src/utils/eventEmitter.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,6 @@ export const AGENT_EVENTS = {
17
17
  * protocolGuard V-2 已登记 KERNEL_SELF_CONSUMED_EVENTS 豁免。
18
18
  */
19
19
  sessionSwitched: 'sessionSwitched',
20
- projectSwitched: 'projectSwitched',
21
20
  archiveFailed: 'archiveFailed',
22
21
  /**
23
22
  * 会话归档写入成功(updatedFields 非空才发,与 archiveFailed 对称)。
@@ -32,7 +31,6 @@ export const AGENT_EVENTS = {
32
31
  archiveModeChanged: 'archiveModeChanged',
33
32
  rolePackSwitchLocked: 'rolePackSwitchLocked',
34
33
  workProjectionGenerated: 'workProjectionGenerated',
35
- dedupCompleted: 'dedupCompleted',
36
34
  sessionPauseTimedOut: 'sessionPauseTimedOut',
37
35
  sessionResumeBlocked: 'sessionResumeBlocked',
38
36
  /** 订阅时宿主据此判断重要事件并 toast 提示 */
@@ -41,7 +39,6 @@ export const AGENT_EVENTS = {
41
39
  inputTooLarge: 'inputTooLarge',
42
40
  /** 回答中 LLM 调 ask_user 工具主动提问(唯一「提问后暂停」通道) */
43
41
  questionPending: 'questionPending',
44
- goalDriftDetected: 'goalDriftDetected',
45
42
  sessionPaused: 'sessionPaused',
46
43
  sessionResumed: 'sessionResumed',
47
44
  sessionError: 'sessionError',
@@ -1 +1 @@
1
- {"version":3,"file":"eventEmitter.js","sourceRoot":"","sources":["../../src/utils/eventEmitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eventEmitter.js","sourceRoot":"","sources":["../../src/utils/eventEmitter.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,10 @@
7
7
  * 宿主拿不到它(实测宿主 `nowIso` 引用 = 0),宿主侧取当前时间仍是各自内联。
8
8
  * 本文件只是内核内部的推荐入口,不是跨包单一真源。
9
9
  *
10
- * API 对齐:formatDateKey(date) 与精灵 shared/dateUtils.ts 语义一致,
10
+ * API 对齐(历史):formatDateKey(date) 曾与精灵宿主 shared/dateUtils.ts 语义一致(该宿主已移除),
11
11
  * 用于格式化任意 Date 为 YYYY-MM-DD(本地时区)。
12
12
  */
13
- /** 一天对应的毫秒数(跨层共享,供天数差换算:诊断展示 daysSinceLastAccess / 推荐时效权重) */
13
+ /** 一天对应的毫秒数(天数差换算基准;当前消费者 = 存储契约测试构造 purgeExpired 过期时间戳) */
14
14
  export declare const ONE_DAY_MS: number;
15
15
  /**
16
16
  * 获取当前时间的 ISO 8601 时间戳
@@ -25,7 +25,7 @@ export declare function nowIso(): string;
25
25
  * 修复场景:Asia/Shanghai 凌晨 00:00-08:00 期间 UTC 仍是前一天,导致按日期分组的
26
26
  * 计数(chatTurns / dailyMessageCount)写入错误的日期 key。
27
27
  *
28
- * 与精灵 shared/dateUtils.ts:formatDateKey 行为完全对齐。
28
+ * 历史对齐对象:精灵宿主 shared/dateUtils.ts:formatDateKey(该宿主已移除,现本函数为内核内唯一实现)。
29
29
  *
30
30
  * @param date Date 对象
31
31
  * @returns YYYY-MM-DD 字符串(本地日期)
@@ -1 +1 @@
1
- {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/utils/time.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,8DAA8D;AAC9D,eAAO,MAAM,UAAU,QAAsB,CAAC;AAE9C;;;;GAIG;AACH,wBAAgB,MAAM,IAAI,MAAM,CAE/B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAKhD;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAeD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAGpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAInF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE3D"}
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/utils/time.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,4DAA4D;AAC5D,eAAO,MAAM,UAAU,QAAsB,CAAC;AAE9C;;;;GAIG;AACH,wBAAgB,MAAM,IAAI,MAAM,CAE/B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAKhD;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAeD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAGpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAInF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE3D"}