@zooique/memora 3.0.1 → 5.0.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 (282) hide show
  1. package/CHANGELOG.md +161 -1033
  2. package/README.en.md +46 -39
  3. package/README.md +40 -35
  4. package/config.example.json +1 -8
  5. package/dist/agent/agent.d.ts +88 -80
  6. package/dist/agent/agent.d.ts.map +1 -1
  7. package/dist/agent/agent.js +272 -221
  8. package/dist/agent/agent.js.map +1 -1
  9. package/dist/agent/assembler.d.ts +22 -21
  10. package/dist/agent/assembler.d.ts.map +1 -1
  11. package/dist/agent/assembler.js +120 -46
  12. package/dist/agent/assembler.js.map +1 -1
  13. package/dist/agent/backgroundTasks.d.ts +194 -0
  14. package/dist/agent/backgroundTasks.d.ts.map +1 -0
  15. package/dist/agent/backgroundTasks.js +314 -0
  16. package/dist/agent/backgroundTasks.js.map +1 -0
  17. package/dist/agent/budget.d.ts +23 -5
  18. package/dist/agent/budget.d.ts.map +1 -1
  19. package/dist/agent/budget.js +8 -2
  20. package/dist/agent/budget.js.map +1 -1
  21. package/dist/agent/builtinToolHandlers.d.ts +29 -9
  22. package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
  23. package/dist/agent/builtinToolHandlers.js +53 -13
  24. package/dist/agent/builtinToolHandlers.js.map +1 -1
  25. package/dist/agent/builtinTools.d.ts +15 -1
  26. package/dist/agent/builtinTools.d.ts.map +1 -1
  27. package/dist/agent/builtinTools.js +111 -30
  28. package/dist/agent/builtinTools.js.map +1 -1
  29. package/dist/agent/constants.d.ts +31 -6
  30. package/dist/agent/constants.d.ts.map +1 -1
  31. package/dist/agent/constants.js +38 -8
  32. package/dist/agent/constants.js.map +1 -1
  33. package/dist/agent/contextManager.d.ts +8 -0
  34. package/dist/agent/contextManager.d.ts.map +1 -1
  35. package/dist/agent/contextManager.js +45 -3
  36. package/dist/agent/contextManager.js.map +1 -1
  37. package/dist/agent/contextPreparer.d.ts +1 -1
  38. package/dist/agent/contextPreparer.d.ts.map +1 -1
  39. package/dist/agent/contextPreparer.js +15 -10
  40. package/dist/agent/contextPreparer.js.map +1 -1
  41. package/dist/agent/guardRail.d.ts +12 -1
  42. package/dist/agent/guardRail.d.ts.map +1 -1
  43. package/dist/agent/guardRail.js +37 -2
  44. package/dist/agent/guardRail.js.map +1 -1
  45. package/dist/agent/loop.d.ts +319 -34
  46. package/dist/agent/loop.d.ts.map +1 -1
  47. package/dist/agent/loop.js +713 -110
  48. package/dist/agent/loop.js.map +1 -1
  49. package/dist/agent/managers/archiveCoordinator.d.ts +19 -4
  50. package/dist/agent/managers/archiveCoordinator.d.ts.map +1 -1
  51. package/dist/agent/managers/archiveCoordinator.js +25 -4
  52. package/dist/agent/managers/archiveCoordinator.js.map +1 -1
  53. package/dist/agent/managers/chatLockManager.d.ts +3 -9
  54. package/dist/agent/managers/chatLockManager.d.ts.map +1 -1
  55. package/dist/agent/managers/chatLockManager.js +7 -25
  56. package/dist/agent/managers/chatLockManager.js.map +1 -1
  57. package/dist/agent/managers/llmCaller.d.ts.map +1 -1
  58. package/dist/agent/managers/llmCaller.js +27 -1
  59. package/dist/agent/managers/llmCaller.js.map +1 -1
  60. package/dist/agent/managers/loopMetrics.d.ts +14 -0
  61. package/dist/agent/managers/loopMetrics.d.ts.map +1 -1
  62. package/dist/agent/managers/loopMetrics.js +15 -0
  63. package/dist/agent/managers/loopMetrics.js.map +1 -1
  64. package/dist/agent/managers/memoryInspector.d.ts +13 -15
  65. package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
  66. package/dist/agent/managers/memoryInspector.js +38 -49
  67. package/dist/agent/managers/memoryInspector.js.map +1 -1
  68. package/dist/agent/managers/roundSummaryGenerator.d.ts +31 -1
  69. package/dist/agent/managers/roundSummaryGenerator.d.ts.map +1 -1
  70. package/dist/agent/managers/roundSummaryGenerator.js +81 -6
  71. package/dist/agent/managers/roundSummaryGenerator.js.map +1 -1
  72. package/dist/agent/managers/sessionArchiver.d.ts +35 -3
  73. package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
  74. package/dist/agent/managers/sessionArchiver.js +34 -3
  75. package/dist/agent/managers/sessionArchiver.js.map +1 -1
  76. package/dist/agent/managers/sessionManager.d.ts +21 -88
  77. package/dist/agent/managers/sessionManager.d.ts.map +1 -1
  78. package/dist/agent/managers/sessionManager.js +94 -278
  79. package/dist/agent/managers/sessionManager.js.map +1 -1
  80. package/dist/agent/managers/toolCallHelpers.d.ts +109 -28
  81. package/dist/agent/managers/toolCallHelpers.d.ts.map +1 -1
  82. package/dist/agent/managers/toolCallHelpers.js +93 -37
  83. package/dist/agent/managers/toolCallHelpers.js.map +1 -1
  84. package/dist/agent/messageHistory.d.ts.map +1 -1
  85. package/dist/agent/messageHistory.js +9 -5
  86. package/dist/agent/messageHistory.js.map +1 -1
  87. package/dist/agent/seed/orchestrator.d.ts +12 -1
  88. package/dist/agent/seed/orchestrator.d.ts.map +1 -1
  89. package/dist/agent/seed/orchestrator.js +15 -4
  90. package/dist/agent/seed/orchestrator.js.map +1 -1
  91. package/dist/agent/seed/prepare.d.ts.map +1 -1
  92. package/dist/agent/seed/prepare.js +9 -4
  93. package/dist/agent/seed/prepare.js.map +1 -1
  94. package/dist/agent/seed/types.d.ts +11 -4
  95. package/dist/agent/seed/types.d.ts.map +1 -1
  96. package/dist/agent/seed/types.js +2 -2
  97. package/dist/agent/textSanitize.d.ts +36 -0
  98. package/dist/agent/textSanitize.d.ts.map +1 -0
  99. package/dist/agent/textSanitize.js +55 -0
  100. package/dist/agent/textSanitize.js.map +1 -0
  101. package/dist/agent/toolExecutor.d.ts +97 -26
  102. package/dist/agent/toolExecutor.d.ts.map +1 -1
  103. package/dist/agent/toolExecutor.js +444 -78
  104. package/dist/agent/toolExecutor.js.map +1 -1
  105. package/dist/agent/toolLedger.d.ts +93 -41
  106. package/dist/agent/toolLedger.d.ts.map +1 -1
  107. package/dist/agent/toolLedger.js +114 -42
  108. package/dist/agent/toolLedger.js.map +1 -1
  109. package/dist/agent/toolResultCache.js +1 -1
  110. package/dist/agent/toolResultOffload.d.ts +8 -0
  111. package/dist/agent/toolResultOffload.d.ts.map +1 -1
  112. package/dist/agent/toolResultOffload.js +10 -3
  113. package/dist/agent/toolResultOffload.js.map +1 -1
  114. package/dist/agent/toolRunner.d.ts +16 -7
  115. package/dist/agent/toolRunner.d.ts.map +1 -1
  116. package/dist/agent/toolRunner.js +74 -29
  117. package/dist/agent/toolRunner.js.map +1 -1
  118. package/dist/agent/tracer.d.ts +13 -1
  119. package/dist/agent/tracer.d.ts.map +1 -1
  120. package/dist/agent/types.d.ts +74 -30
  121. package/dist/agent/types.d.ts.map +1 -1
  122. package/dist/code-exec/types.d.ts +9 -0
  123. package/dist/code-exec/types.d.ts.map +1 -1
  124. package/dist/index.d.ts +28 -41
  125. package/dist/index.d.ts.map +1 -1
  126. package/dist/index.js +65 -54
  127. package/dist/index.js.map +1 -1
  128. package/dist/logging/logger.d.ts +4 -1
  129. package/dist/logging/logger.d.ts.map +1 -1
  130. package/dist/logging/logger.js +5 -2
  131. package/dist/logging/logger.js.map +1 -1
  132. package/dist/memory/gcService.d.ts.map +1 -1
  133. package/dist/memory/gcService.js +3 -5
  134. package/dist/memory/gcService.js.map +1 -1
  135. package/dist/memory/inMemorySessionStore.d.ts +2 -2
  136. package/dist/memory/inMemorySessionStore.js +2 -2
  137. package/dist/memory/inMemoryStorage.d.ts +4 -3
  138. package/dist/memory/inMemoryStorage.d.ts.map +1 -1
  139. package/dist/memory/inMemoryStorage.js +2 -2
  140. package/dist/memory/inMemoryStorage.js.map +1 -1
  141. package/dist/memory/nodeSqliteStorage.d.ts +17 -0
  142. package/dist/memory/nodeSqliteStorage.d.ts.map +1 -0
  143. package/dist/memory/nodeSqliteStorage.js +393 -0
  144. package/dist/memory/nodeSqliteStorage.js.map +1 -0
  145. package/dist/memory/projectManager.d.ts +10 -20
  146. package/dist/memory/projectManager.d.ts.map +1 -1
  147. package/dist/memory/projectManager.js +27 -41
  148. package/dist/memory/projectManager.js.map +1 -1
  149. package/dist/memory/roundStore.d.ts +143 -82
  150. package/dist/memory/roundStore.d.ts.map +1 -1
  151. package/dist/memory/roundStore.js +4 -15
  152. package/dist/memory/roundStore.js.map +1 -1
  153. package/dist/memory/roundSummaryLookup.d.ts +26 -0
  154. package/dist/memory/roundSummaryLookup.d.ts.map +1 -0
  155. package/dist/memory/roundSummaryLookup.js +19 -0
  156. package/dist/memory/roundSummaryLookup.js.map +1 -0
  157. package/dist/memory/sessionStore.d.ts +19 -2
  158. package/dist/memory/sessionStore.d.ts.map +1 -1
  159. package/dist/memory/sessionStore.js.map +1 -1
  160. package/dist/memory/sourceValidation.d.ts +2 -13
  161. package/dist/memory/sourceValidation.d.ts.map +1 -1
  162. package/dist/memory/sourceValidation.js +5 -16
  163. package/dist/memory/sourceValidation.js.map +1 -1
  164. package/dist/memory/storageInterface.d.ts +26 -16
  165. package/dist/memory/storageInterface.d.ts.map +1 -1
  166. package/dist/memory/supersedeResolve.d.ts +39 -0
  167. package/dist/memory/supersedeResolve.d.ts.map +1 -0
  168. package/dist/memory/supersedeResolve.js +16 -0
  169. package/dist/memory/supersedeResolve.js.map +1 -0
  170. package/dist/memory/types.d.ts +10 -2
  171. package/dist/memory/types.d.ts.map +1 -1
  172. package/dist/memory/types.js +6 -1
  173. package/dist/memory/types.js.map +1 -1
  174. package/dist/role-pack/rolePackManager.d.ts +74 -33
  175. package/dist/role-pack/rolePackManager.d.ts.map +1 -1
  176. package/dist/role-pack/rolePackManager.js +112 -53
  177. package/dist/role-pack/rolePackManager.js.map +1 -1
  178. package/dist/role-pack/strategyKeys.d.ts +44 -0
  179. package/dist/role-pack/strategyKeys.d.ts.map +1 -1
  180. package/dist/role-pack/strategyKeys.js +55 -0
  181. package/dist/role-pack/strategyKeys.js.map +1 -1
  182. package/dist/role-pack/strategyResolver.d.ts +6 -1
  183. package/dist/role-pack/strategyResolver.d.ts.map +1 -1
  184. package/dist/role-pack/strategyResolver.js +20 -2
  185. package/dist/role-pack/strategyResolver.js.map +1 -1
  186. package/dist/role-pack/types.d.ts +5 -1
  187. package/dist/role-pack/types.d.ts.map +1 -1
  188. package/dist/security/confirmEntries.d.ts +44 -0
  189. package/dist/security/confirmEntries.d.ts.map +1 -0
  190. package/dist/security/confirmEntries.js +59 -0
  191. package/dist/security/confirmEntries.js.map +1 -0
  192. package/dist/security/pathGuard.d.ts +42 -6
  193. package/dist/security/pathGuard.d.ts.map +1 -1
  194. package/dist/security/pathGuard.js +126 -5
  195. package/dist/security/pathGuard.js.map +1 -1
  196. package/dist/skill/skillScriptRunner.d.ts +147 -15
  197. package/dist/skill/skillScriptRunner.d.ts.map +1 -1
  198. package/dist/skill/skillScriptRunner.js +479 -68
  199. package/dist/skill/skillScriptRunner.js.map +1 -1
  200. package/dist/utils/backgroundTask.d.ts +56 -34
  201. package/dist/utils/backgroundTask.d.ts.map +1 -1
  202. package/dist/utils/backgroundTask.js +130 -99
  203. package/dist/utils/backgroundTask.js.map +1 -1
  204. package/dist/utils/configResourceManager.d.ts +6 -2
  205. package/dist/utils/configResourceManager.d.ts.map +1 -1
  206. package/dist/utils/configResourceManager.js +8 -2
  207. package/dist/utils/configResourceManager.js.map +1 -1
  208. package/dist/utils/errors.d.ts +12 -2
  209. package/dist/utils/errors.d.ts.map +1 -1
  210. package/dist/utils/errors.js +12 -2
  211. package/dist/utils/errors.js.map +1 -1
  212. package/dist/utils/eventEmitter.d.ts +76 -23
  213. package/dist/utils/eventEmitter.d.ts.map +1 -1
  214. package/dist/utils/eventEmitter.js +23 -3
  215. package/dist/utils/eventEmitter.js.map +1 -1
  216. package/dist/utils/time.d.ts +8 -5
  217. package/dist/utils/time.d.ts.map +1 -1
  218. package/dist/utils/time.js +8 -5
  219. package/dist/utils/time.js.map +1 -1
  220. package/dist/utils/toError.d.ts +1 -1
  221. package/dist/utils/toError.js +1 -1
  222. package/dist/web-fetch/loginWall.d.ts +39 -0
  223. package/dist/web-fetch/loginWall.d.ts.map +1 -0
  224. package/dist/web-fetch/loginWall.js +78 -0
  225. package/dist/web-fetch/loginWall.js.map +1 -0
  226. package/dist/web-fetch/types.d.ts +8 -0
  227. package/dist/web-fetch/types.d.ts.map +1 -1
  228. package/dist/web-fetch/webFetchProvider.d.ts.map +1 -1
  229. package/dist/web-fetch/webFetchProvider.js +3 -1
  230. package/dist/web-fetch/webFetchProvider.js.map +1 -1
  231. package/dist/web-search/fetchWebSearchProvider.js +28 -23
  232. package/dist/web-search/fetchWebSearchProvider.js.map +1 -1
  233. package/docs/architecture/role-pack-authoring-guide.md +3 -1
  234. package/docs/architecture/role-pack-spec.md +2 -1
  235. package/docs/memora-api-reference.md +1349 -1175
  236. 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
  237. package/docs/memora-/346/216/245/345/205/245/346/214/207/345/215/227.md +91 -52
  238. package/docs/role-pack-/345/274/200/346/224/276/351/224/256/346/214/207/345/215/227.md +148 -148
  239. package/package.json +9 -4
  240. package/role-packs/README.md +41 -40
  241. package/role-packs/memora/345/212/251/346/211/213/rules.md +4 -4
  242. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/manifest.json +1 -0
  243. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/persona.md +1 -1
  244. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/rules.md +1 -0
  245. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/emotion-wave.md +1 -1
  246. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/foreshadow.md +1 -1
  247. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/outline-expand.md +32 -5
  248. 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 +10 -6
  249. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/story-bible.md +3 -1
  250. 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
  251. package/dist/agent/managers/dedupManager.d.ts +0 -85
  252. package/dist/agent/managers/dedupManager.d.ts.map +0 -1
  253. package/dist/agent/managers/dedupManager.js +0 -248
  254. package/dist/agent/managers/dedupManager.js.map +0 -1
  255. package/dist/agent/managers/goalConsistencyChecker.d.ts +0 -42
  256. package/dist/agent/managers/goalConsistencyChecker.d.ts.map +0 -1
  257. package/dist/agent/managers/goalConsistencyChecker.js +0 -178
  258. package/dist/agent/managers/goalConsistencyChecker.js.map +0 -1
  259. package/dist/agent/managers/llmJudgeHelper.d.ts +0 -21
  260. package/dist/agent/managers/llmJudgeHelper.d.ts.map +0 -1
  261. package/dist/agent/managers/llmJudgeHelper.js +0 -32
  262. package/dist/agent/managers/llmJudgeHelper.js.map +0 -1
  263. package/dist/agent/managers/memoryAdvisor.d.ts +0 -105
  264. package/dist/agent/managers/memoryAdvisor.d.ts.map +0 -1
  265. package/dist/agent/managers/memoryAdvisor.js +0 -322
  266. package/dist/agent/managers/memoryAdvisor.js.map +0 -1
  267. package/dist/agent/managers/memoryGovernance.d.ts +0 -24
  268. package/dist/agent/managers/memoryGovernance.d.ts.map +0 -1
  269. package/dist/agent/managers/memoryGovernance.js +0 -46
  270. package/dist/agent/managers/memoryGovernance.js.map +0 -1
  271. package/dist/memory/governance.d.ts +0 -17
  272. package/dist/memory/governance.d.ts.map +0 -1
  273. package/dist/memory/governance.js +0 -17
  274. package/dist/memory/governance.js.map +0 -1
  275. package/dist/memory/projectRegistry.d.ts +0 -47
  276. package/dist/memory/projectRegistry.d.ts.map +0 -1
  277. package/dist/memory/projectRegistry.js +0 -151
  278. package/dist/memory/projectRegistry.js.map +0 -1
  279. package/dist/utils/recallDefaults.d.ts +0 -16
  280. package/dist/utils/recallDefaults.d.ts.map +0 -1
  281. package/dist/utils/recallDefaults.js +0 -16
  282. 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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"}
@@ -59,12 +59,16 @@ export declare abstract class ConfigResourceManager<T extends ConfigResource, TO
59
59
  protected retainRuntimeItems(scanned: T[]): T[];
60
60
  /** 从内存缓存删除资源(含注销运行时记账) */
61
61
  deleteItem(name: string): boolean;
62
- /**
63
- * 登记运行时注入的资源(子类 register() 唯一落点)——必须记账,
62
+ /** 登记运行时注入的资源(子类 register() 唯一落点)——必须记账,
64
63
  * 否则 reload() 会把无磁盘真理源的注入项当成"磁盘上已删除"而抹掉。
65
64
  * 重名校验由子类调用前完成(各自语义不同)。
66
65
  */
67
66
  protected registerRuntimeItem(item: T): void;
67
+ /**
68
+ * 运行时注入名单的只读快照(子类对账用,如角色包「重扫用户目录」)。
69
+ * 名单本体保持基类私有单点记账——子类只读快照,禁止外部改写。
70
+ */
71
+ protected get runtimeItemNames(): string[];
68
72
  /** 构建 system prompt 片段(name 不传则用当前激活资源) */
69
73
  abstract buildSystemPrompt(name?: string): string;
70
74
  /** 从扫描条目构建资源对象(子类实现差异化字段解析;返回 null 跳过该条目) */
@@ -1 +1 @@
1
- {"version":3,"file":"configResourceManager.d.ts","sourceRoot":"","sources":["../../src/utils/configResourceManager.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,eAAe;AACf,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,8BAAsB,qBAAqB,CAAC,CAAC,SAAS,cAAc,EAAE,QAAQ,GAAG,SAAS;IAetF,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS;IAChD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM;IAfnC,aAAa;IACb,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAM;IAE1B;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAElD;;;OAGG;gBAEkB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,EAAE,MAAM;IAKnC;;;OAGG;IACH,IAAI,IAAI,IAAI,CAAC,EAAE,CAEd;IAID,gDAAgD;cAChC,SAAS,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAW9D;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAiB/B;;;;;;;OAOG;IACH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIhD;;;;;;;;OAQG;IACH,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE;IAe/C,0BAA0B;IAC1B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAejC;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAO5C,2CAA2C;IAC3C,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;IAEjD,6CAA6C;cAC7B,WAAW,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAO5E,8BAA8B;IAC9B,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI;IAI7D,mCAAmC;IACnC,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI;IAM1C,+BAA+B;YACjB,YAAY;CAc3B"}
1
+ {"version":3,"file":"configResourceManager.d.ts","sourceRoot":"","sources":["../../src/utils/configResourceManager.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,eAAe;AACf,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,8BAAsB,qBAAqB,CAAC,CAAC,SAAS,cAAc,EAAE,QAAQ,GAAG,SAAS;IAetF,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS;IAChD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM;IAfnC,aAAa;IACb,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAM;IAE1B;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAElD;;;OAGG;gBAEkB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,EAAE,MAAM;IAKnC;;;OAGG;IACH,IAAI,IAAI,IAAI,CAAC,EAAE,CAEd;IAID,gDAAgD;cAChC,SAAS,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAW9D;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAiB/B;;;;;;;OAOG;IACH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIhD;;;;;;;;OAQG;IACH,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE;IAe/C,0BAA0B;IAC1B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAejC;;;OAGG;IACH,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAK5C;;;OAGG;IACH,SAAS,KAAK,gBAAgB,IAAI,MAAM,EAAE,CAEzC;IAID,2CAA2C;IAC3C,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;IAEjD,6CAA6C;cAC7B,WAAW,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAO5E,8BAA8B;IAC9B,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI;IAI7D,mCAAmC;IACnC,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI;IAM1C,+BAA+B;YACjB,YAAY;CAc3B"}
@@ -107,8 +107,7 @@ export class ConfigResourceManager {
107
107
  logger.info({ name, remaining: this.items.length, subdir: this.subdir }, '资源已从内存缓存删除');
108
108
  return true;
109
109
  }
110
- /**
111
- * 登记运行时注入的资源(子类 register() 唯一落点)——必须记账,
110
+ /** 登记运行时注入的资源(子类 register() 唯一落点)——必须记账,
112
111
  * 否则 reload() 会把无磁盘真理源的注入项当成"磁盘上已删除"而抹掉。
113
112
  * 重名校验由子类调用前完成(各自语义不同)。
114
113
  */
@@ -116,6 +115,13 @@ export class ConfigResourceManager {
116
115
  this.items.push(item);
117
116
  this.runtimeNames.add(item.name);
118
117
  }
118
+ /**
119
+ * 运行时注入名单的只读快照(子类对账用,如角色包「重扫用户目录」)。
120
+ * 名单本体保持基类私有单点记账——子类只读快照,禁止外部改写。
121
+ */
122
+ get runtimeItemNames() {
123
+ return [...this.runtimeNames];
124
+ }
119
125
  /** 从扫描条目构建资源对象(子类实现差异化字段解析;返回 null 跳过该条目) */
120
126
  async createEntry(_entry) {
121
127
  // 默认空实现:不解析任何条目,子类可覆写
@@ -1 +1 @@
1
- {"version":3,"file":"configResourceManager.js","sourceRoot":"","sources":["../../src/utils/configResourceManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configResourceManager.js","sourceRoot":"","sources":["../../src/utils/configResourceManager.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
  /**
@@ -36,6 +37,15 @@ export declare const ToolErrorCode: {
36
37
  readonly UNKNOWN_TOOL: "UNKNOWN_TOOL";
37
38
  /** 自定义工具执行失败(可重试) */
38
39
  readonly CUSTOM_TOOL_FAILED: "CUSTOM_TOOL_FAILED";
40
+ /**
41
+ * 能力未装配 / 未注入回调(**不可重试**)。
42
+ *
43
+ * 语义 = 「这个工具当前根本没有实现方」,而非「执行了一次没成功」——
44
+ * 重试无意义(缺的是宿主装配,不是运气),故刻意不进 `RETRYABLE_ERROR_CODES`;
45
+ * 让 LLM 换手段或报告用户,而不是空转重试烧迭代。
46
+ * 覆盖 toolExecutor 全线 `[ERR:TOOL:NOT_AVAILABLE]` 出口(provider/回调未注入)。
47
+ */
48
+ readonly NOT_AVAILABLE: "NOT_AVAILABLE";
39
49
  /** 通用错误(不可重试) */
40
50
  readonly UNKNOWN: "UNKNOWN";
41
51
  };
@@ -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(自修正)判断是否可重试:
@@ -35,6 +36,15 @@ export const ToolErrorCode = {
35
36
  UNKNOWN_TOOL: 'UNKNOWN_TOOL',
36
37
  /** 自定义工具执行失败(可重试) */
37
38
  CUSTOM_TOOL_FAILED: 'CUSTOM_TOOL_FAILED',
39
+ /**
40
+ * 能力未装配 / 未注入回调(**不可重试**)。
41
+ *
42
+ * 语义 = 「这个工具当前根本没有实现方」,而非「执行了一次没成功」——
43
+ * 重试无意义(缺的是宿主装配,不是运气),故刻意不进 `RETRYABLE_ERROR_CODES`;
44
+ * 让 LLM 换手段或报告用户,而不是空转重试烧迭代。
45
+ * 覆盖 toolExecutor 全线 `[ERR:TOOL:NOT_AVAILABLE]` 出口(provider/回调未注入)。
46
+ */
47
+ NOT_AVAILABLE: 'NOT_AVAILABLE',
38
48
  /** 通用错误(不可重试) */
39
49
  UNKNOWN: 'UNKNOWN',
40
50
  };
@@ -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":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,qBAAqB;IACrB,gBAAgB,EAAE,kBAAkB;IACpC,iBAAiB;IACjB,cAAc,EAAE,gBAAgB;IAChC,iBAAiB;IACjB,iBAAiB,EAAE,mBAAmB;IACtC,gBAAgB;IAChB,cAAc,EAAE,gBAAgB;IAChC,mBAAmB;IACnB,cAAc,EAAE,gBAAgB;IAChC,iBAAiB;IACjB,aAAa,EAAE,eAAe;IAC9B,iBAAiB;IACjB,YAAY,EAAE,cAAc;IAC5B,qBAAqB;IACrB,kBAAkB,EAAE,oBAAoB;IACxC;;;;;;;OAOG;IACH,aAAa,EAAE,eAAe;IAC9B,iBAAiB;IACjB,OAAO,EAAE,SAAS;CACV,CAAC;AAIX,eAAe;AACf,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAqB;IACxD,aAAa,CAAC,cAAc;IAC5B,aAAa,CAAC,cAAc;IAC5B,aAAa,CAAC,aAAa;IAC3B,aAAa,CAAC,kBAAkB;CACjC,CAAC,CAAC;AAEH,MAAM,UAAU,oBAAoB,CAAC,IAAwB;IAC3D,OAAO,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAWD,MAAM,OAAO,WAAY,SAAQ,KAAK;IAC3B,KAAK,CAAS;IACd,MAAM,CAAqB;IAC3B,WAAW,CAAoB;IAC/B,QAAQ,CAAgB;IACxB,SAAS,CAAiC;IAC1C,KAAK,CAAoB;IAElC,YAAY,IAA0B;QACpC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,qBAAqB;IACrB,MAAM;QACJ,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF;AAED,cAAc;AACd,MAAM,UAAU,WAAW,CACzB,KAAa,EACb,MAA0B,EAC1B,WAAqB,EACrB,KAAa;IAEb,OAAO,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AACpF,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,OAAO,WAAW,CAAC,MAAM,EAAE,qBAAqB,MAAM,EAAE,EAAE;QACxD,aAAa;KACd,CAAC,CAAC;AACL,CAAC;AAED,cAAc;AACd,MAAM,UAAU,YAAY,CAC1B,KAAa,EACb,MAA0B,EAC1B,WAAqB,EACrB,KAAa;IAEb,OAAO,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACrF,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,QAAQ,CACtB,KAAa,EACb,MAA0B,EAC1B,WAAqB,EACrB,KAAa;IAEb,OAAO,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AACjF,CAAC;AAED,cAAc;AACd,MAAM,UAAU,SAAS,CACvB,KAAa,EACb,MAA0B,EAC1B,WAAqB,EACrB,KAAa,EACb,SAA8B;IAE9B,OAAO,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,aAAa,CAC3B,KAAa,EACb,MAA0B,EAC1B,WAAqB,EACrB,KAAa;IAEb,OAAO,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;AACtF,CAAC;AAED;0DAC0D;AAC1D,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,OAAO,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC;AAC3D,CAAC;AAED;qEACqE;AACrE,MAAM,UAAU,oBAAoB,CAAC,MAA+B;IAClE,OAAO,CACL,MAAM,EAAE,OAAO,KAAK,IAAI;QACxB,MAAM,CAAC,MAAM,YAAY,YAAY;QACrC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CACtC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,OAAO,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC;AAC7D,CAAC"}