@zooique/memora 2.0.0 → 3.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 (588) hide show
  1. package/CHANGELOG.md +1028 -0
  2. package/README.en.md +305 -0
  3. package/README.md +303 -148
  4. package/config.example.json +43 -0
  5. package/dist/agent/agent.d.ts +438 -295
  6. package/dist/agent/agent.d.ts.map +1 -1
  7. package/dist/agent/agent.js +1368 -836
  8. package/dist/agent/agent.js.map +1 -1
  9. package/dist/agent/assembler.d.ts +117 -39
  10. package/dist/agent/assembler.d.ts.map +1 -1
  11. package/dist/agent/assembler.js +574 -71
  12. package/dist/agent/assembler.js.map +1 -1
  13. package/dist/agent/budget.d.ts +131 -0
  14. package/dist/agent/budget.d.ts.map +1 -0
  15. package/dist/agent/budget.js +128 -0
  16. package/dist/agent/budget.js.map +1 -0
  17. package/dist/agent/builtinToolHandlers.d.ts +229 -17
  18. package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
  19. package/dist/agent/builtinToolHandlers.js +758 -70
  20. package/dist/agent/builtinToolHandlers.js.map +1 -1
  21. package/dist/agent/builtinTools.d.ts +198 -7
  22. package/dist/agent/builtinTools.d.ts.map +1 -1
  23. package/dist/agent/builtinTools.js +646 -14
  24. package/dist/agent/builtinTools.js.map +1 -1
  25. package/dist/agent/compaction.d.ts +93 -0
  26. package/dist/agent/compaction.d.ts.map +1 -0
  27. package/dist/agent/compaction.js +192 -0
  28. package/dist/agent/compaction.js.map +1 -0
  29. package/dist/agent/constants.d.ts +139 -18
  30. package/dist/agent/constants.d.ts.map +1 -1
  31. package/dist/agent/constants.js +154 -18
  32. package/dist/agent/constants.js.map +1 -1
  33. package/dist/agent/contextManager.d.ts +126 -76
  34. package/dist/agent/contextManager.d.ts.map +1 -1
  35. package/dist/agent/contextManager.js +197 -135
  36. package/dist/agent/contextManager.js.map +1 -1
  37. package/dist/agent/contextPreparer.d.ts +78 -0
  38. package/dist/agent/contextPreparer.d.ts.map +1 -0
  39. package/dist/agent/contextPreparer.js +128 -0
  40. package/dist/agent/contextPreparer.js.map +1 -0
  41. package/dist/agent/duplicateInterceptor.d.ts +67 -0
  42. package/dist/agent/duplicateInterceptor.d.ts.map +1 -0
  43. package/dist/agent/duplicateInterceptor.js +82 -0
  44. package/dist/agent/duplicateInterceptor.js.map +1 -0
  45. package/dist/agent/guardRail.d.ts +166 -0
  46. package/dist/agent/guardRail.d.ts.map +1 -0
  47. package/dist/agent/guardRail.js +333 -0
  48. package/dist/agent/guardRail.js.map +1 -0
  49. package/dist/agent/loop.d.ts +718 -253
  50. package/dist/agent/loop.d.ts.map +1 -1
  51. package/dist/agent/loop.js +2215 -648
  52. package/dist/agent/loop.js.map +1 -1
  53. package/dist/agent/managers/archiveCoordinator.d.ts +21 -74
  54. package/dist/agent/managers/archiveCoordinator.d.ts.map +1 -1
  55. package/dist/agent/managers/archiveCoordinator.js +32 -105
  56. package/dist/agent/managers/archiveCoordinator.js.map +1 -1
  57. package/dist/agent/managers/chatLockManager.d.ts +20 -88
  58. package/dist/agent/managers/chatLockManager.d.ts.map +1 -1
  59. package/dist/agent/managers/chatLockManager.js +31 -103
  60. package/dist/agent/managers/chatLockManager.js.map +1 -1
  61. package/dist/agent/managers/dedupManager.d.ts +85 -0
  62. package/dist/agent/managers/dedupManager.d.ts.map +1 -0
  63. package/dist/agent/managers/dedupManager.js +248 -0
  64. package/dist/agent/managers/dedupManager.js.map +1 -0
  65. package/dist/agent/managers/goalConsistencyChecker.d.ts +42 -0
  66. package/dist/agent/managers/goalConsistencyChecker.d.ts.map +1 -0
  67. package/dist/agent/managers/goalConsistencyChecker.js +178 -0
  68. package/dist/agent/managers/goalConsistencyChecker.js.map +1 -0
  69. package/dist/agent/managers/llmCaller.d.ts +124 -0
  70. package/dist/agent/managers/llmCaller.d.ts.map +1 -0
  71. package/dist/agent/managers/llmCaller.js +417 -0
  72. package/dist/agent/managers/llmCaller.js.map +1 -0
  73. package/dist/agent/managers/llmJudgeHelper.d.ts +21 -0
  74. package/dist/agent/managers/llmJudgeHelper.d.ts.map +1 -0
  75. package/dist/agent/managers/llmJudgeHelper.js +32 -0
  76. package/dist/agent/managers/llmJudgeHelper.js.map +1 -0
  77. package/dist/agent/managers/loopMetrics.d.ts +58 -0
  78. package/dist/agent/managers/loopMetrics.d.ts.map +1 -0
  79. package/dist/agent/managers/loopMetrics.js +68 -0
  80. package/dist/agent/managers/loopMetrics.js.map +1 -0
  81. package/dist/agent/managers/memoryAdvisor.d.ts +27 -120
  82. package/dist/agent/managers/memoryAdvisor.d.ts.map +1 -1
  83. package/dist/agent/managers/memoryAdvisor.js +56 -192
  84. package/dist/agent/managers/memoryAdvisor.js.map +1 -1
  85. package/dist/agent/managers/memoryGovernance.d.ts +24 -0
  86. package/dist/agent/managers/memoryGovernance.d.ts.map +1 -0
  87. package/dist/agent/managers/memoryGovernance.js +46 -0
  88. package/dist/agent/managers/memoryGovernance.js.map +1 -0
  89. package/dist/agent/managers/memoryInspector.d.ts +59 -393
  90. package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
  91. package/dist/agent/managers/memoryInspector.js +92 -736
  92. package/dist/agent/managers/memoryInspector.js.map +1 -1
  93. package/dist/agent/managers/roundSummaryGenerator.d.ts +56 -0
  94. package/dist/agent/managers/roundSummaryGenerator.d.ts.map +1 -0
  95. package/dist/agent/managers/roundSummaryGenerator.js +201 -0
  96. package/dist/agent/managers/roundSummaryGenerator.js.map +1 -0
  97. package/dist/agent/managers/sessionArchiver.d.ts +19 -63
  98. package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
  99. package/dist/agent/managers/sessionArchiver.js +83 -157
  100. package/dist/agent/managers/sessionArchiver.js.map +1 -1
  101. package/dist/agent/managers/sessionManager.d.ts +286 -57
  102. package/dist/agent/managers/sessionManager.d.ts.map +1 -1
  103. package/dist/agent/managers/sessionManager.js +846 -85
  104. package/dist/agent/managers/sessionManager.js.map +1 -1
  105. package/dist/agent/managers/sessionNamer.d.ts +35 -0
  106. package/dist/agent/managers/sessionNamer.d.ts.map +1 -0
  107. package/dist/agent/managers/sessionNamer.js +104 -0
  108. package/dist/agent/managers/sessionNamer.js.map +1 -0
  109. package/dist/agent/managers/streamAccumulator.d.ts +20 -0
  110. package/dist/agent/managers/streamAccumulator.d.ts.map +1 -0
  111. package/dist/agent/managers/streamAccumulator.js +15 -0
  112. package/dist/agent/managers/streamAccumulator.js.map +1 -0
  113. package/dist/agent/managers/textPolishManager.d.ts +8 -44
  114. package/dist/agent/managers/textPolishManager.d.ts.map +1 -1
  115. package/dist/agent/managers/textPolishManager.js +12 -47
  116. package/dist/agent/managers/textPolishManager.js.map +1 -1
  117. package/dist/agent/managers/toolCallHelpers.d.ts +105 -0
  118. package/dist/agent/managers/toolCallHelpers.d.ts.map +1 -0
  119. package/dist/agent/managers/toolCallHelpers.js +161 -0
  120. package/dist/agent/managers/toolCallHelpers.js.map +1 -0
  121. package/dist/agent/managers/workProjection.d.ts +57 -87
  122. package/dist/agent/managers/workProjection.d.ts.map +1 -1
  123. package/dist/agent/managers/workProjection.js +166 -246
  124. package/dist/agent/managers/workProjection.js.map +1 -1
  125. package/dist/agent/messageHistory.d.ts +134 -84
  126. package/dist/agent/messageHistory.d.ts.map +1 -1
  127. package/dist/agent/messageHistory.js +419 -133
  128. package/dist/agent/messageHistory.js.map +1 -1
  129. package/dist/agent/needsPlanning.d.ts +28 -0
  130. package/dist/agent/needsPlanning.d.ts.map +1 -0
  131. package/dist/agent/needsPlanning.js +68 -0
  132. package/dist/agent/needsPlanning.js.map +1 -0
  133. package/dist/agent/seed/index.d.ts +11 -0
  134. package/dist/agent/seed/index.d.ts.map +1 -0
  135. package/dist/agent/seed/index.js +10 -0
  136. package/dist/agent/seed/index.js.map +1 -0
  137. package/dist/agent/seed/orchestrator.d.ts +83 -0
  138. package/dist/agent/seed/orchestrator.d.ts.map +1 -0
  139. package/dist/agent/seed/orchestrator.js +260 -0
  140. package/dist/agent/seed/orchestrator.js.map +1 -0
  141. package/dist/agent/seed/prepare.d.ts +49 -0
  142. package/dist/agent/seed/prepare.d.ts.map +1 -0
  143. package/dist/agent/seed/prepare.js +107 -0
  144. package/dist/agent/seed/prepare.js.map +1 -0
  145. package/dist/agent/seed/types.d.ts +115 -0
  146. package/dist/agent/seed/types.d.ts.map +1 -0
  147. package/dist/agent/seed/types.js +15 -0
  148. package/dist/agent/seed/types.js.map +1 -0
  149. package/dist/agent/sessionStateMachine.d.ts +78 -0
  150. package/dist/agent/sessionStateMachine.d.ts.map +1 -0
  151. package/dist/agent/sessionStateMachine.js +182 -0
  152. package/dist/agent/sessionStateMachine.js.map +1 -0
  153. package/dist/agent/taskTableRenderer.d.ts +51 -0
  154. package/dist/agent/taskTableRenderer.d.ts.map +1 -0
  155. package/dist/agent/taskTableRenderer.js +115 -0
  156. package/dist/agent/taskTableRenderer.js.map +1 -0
  157. package/dist/agent/toolExecutor.d.ts +255 -9
  158. package/dist/agent/toolExecutor.d.ts.map +1 -1
  159. package/dist/agent/toolExecutor.js +956 -20
  160. package/dist/agent/toolExecutor.js.map +1 -1
  161. package/dist/agent/toolLedger.d.ts +120 -0
  162. package/dist/agent/toolLedger.d.ts.map +1 -0
  163. package/dist/agent/toolLedger.js +149 -0
  164. package/dist/agent/toolLedger.js.map +1 -0
  165. package/dist/agent/toolResultCache.d.ts +134 -0
  166. package/dist/agent/toolResultCache.d.ts.map +1 -0
  167. package/dist/agent/toolResultCache.js +243 -0
  168. package/dist/agent/toolResultCache.js.map +1 -0
  169. package/dist/agent/toolResultOffload.d.ts +59 -0
  170. package/dist/agent/toolResultOffload.d.ts.map +1 -0
  171. package/dist/agent/toolResultOffload.js +70 -0
  172. package/dist/agent/toolResultOffload.js.map +1 -0
  173. package/dist/agent/toolRunner.d.ts +59 -0
  174. package/dist/agent/toolRunner.d.ts.map +1 -0
  175. package/dist/agent/toolRunner.js +147 -0
  176. package/dist/agent/toolRunner.js.map +1 -0
  177. package/dist/agent/tracer.d.ts +99 -107
  178. package/dist/agent/tracer.d.ts.map +1 -1
  179. package/dist/agent/tracer.js +24 -69
  180. package/dist/agent/tracer.js.map +1 -1
  181. package/dist/agent/types.d.ts +512 -162
  182. package/dist/agent/types.d.ts.map +1 -1
  183. package/dist/agent/types.js +2 -51
  184. package/dist/agent/types.js.map +1 -1
  185. package/dist/code-exec/codeExecutionProvider.d.ts +16 -0
  186. package/dist/code-exec/codeExecutionProvider.d.ts.map +1 -0
  187. package/dist/code-exec/codeExecutionProvider.js +57 -0
  188. package/dist/code-exec/codeExecutionProvider.js.map +1 -0
  189. package/dist/code-exec/types.d.ts +37 -0
  190. package/dist/code-exec/types.d.ts.map +1 -0
  191. package/dist/code-exec/types.js +12 -0
  192. package/dist/code-exec/types.js.map +1 -0
  193. package/dist/config/expandEnvVars.d.ts +22 -0
  194. package/dist/config/expandEnvVars.d.ts.map +1 -0
  195. package/dist/config/expandEnvVars.js +38 -0
  196. package/dist/config/expandEnvVars.js.map +1 -0
  197. package/dist/config/loader.d.ts +59 -242
  198. package/dist/config/loader.d.ts.map +1 -1
  199. package/dist/config/loader.js +237 -194
  200. package/dist/config/loader.js.map +1 -1
  201. package/dist/index.d.ts +69 -74
  202. package/dist/index.d.ts.map +1 -1
  203. package/dist/index.js +93 -63
  204. package/dist/index.js.map +1 -1
  205. package/dist/llm/abortSignal.d.ts +2 -3
  206. package/dist/llm/abortSignal.d.ts.map +1 -1
  207. package/dist/llm/abortSignal.js +2 -3
  208. package/dist/llm/abortSignal.js.map +1 -1
  209. package/dist/llm/factory.d.ts +29 -25
  210. package/dist/llm/factory.d.ts.map +1 -1
  211. package/dist/llm/factory.js +34 -69
  212. package/dist/llm/factory.js.map +1 -1
  213. package/dist/llm/openaiCompatible.d.ts +25 -40
  214. package/dist/llm/openaiCompatible.d.ts.map +1 -1
  215. package/dist/llm/openaiCompatible.js +181 -129
  216. package/dist/llm/openaiCompatible.js.map +1 -1
  217. package/dist/llm/provider.d.ts +29 -42
  218. package/dist/llm/provider.d.ts.map +1 -1
  219. package/dist/llm/provider.js +11 -10
  220. package/dist/llm/provider.js.map +1 -1
  221. package/dist/llm/types.d.ts +54 -11
  222. package/dist/llm/types.d.ts.map +1 -1
  223. package/dist/llm/types.js +0 -5
  224. package/dist/llm/types.js.map +1 -1
  225. package/dist/logging/logger.d.ts +8 -29
  226. package/dist/logging/logger.d.ts.map +1 -1
  227. package/dist/logging/logger.js +43 -233
  228. package/dist/logging/logger.js.map +1 -1
  229. package/dist/logging/loggerInterface.d.ts +9 -8
  230. package/dist/logging/loggerInterface.d.ts.map +1 -1
  231. package/dist/memory/gcService.d.ts +164 -0
  232. package/dist/memory/gcService.d.ts.map +1 -0
  233. package/dist/memory/gcService.js +215 -0
  234. package/dist/memory/gcService.js.map +1 -0
  235. package/dist/memory/governance.d.ts +17 -0
  236. package/dist/memory/governance.d.ts.map +1 -0
  237. package/dist/memory/governance.js +17 -0
  238. package/dist/memory/governance.js.map +1 -0
  239. package/dist/memory/inMemoryRoundStore.d.ts +124 -0
  240. package/dist/memory/inMemoryRoundStore.d.ts.map +1 -0
  241. package/dist/memory/inMemoryRoundStore.js +216 -0
  242. package/dist/memory/inMemoryRoundStore.js.map +1 -0
  243. package/dist/memory/inMemorySessionStore.d.ts +92 -0
  244. package/dist/memory/inMemorySessionStore.d.ts.map +1 -0
  245. package/dist/memory/inMemorySessionStore.js +219 -0
  246. package/dist/memory/inMemorySessionStore.js.map +1 -0
  247. package/dist/memory/inMemorySessionViewLoader.d.ts +89 -0
  248. package/dist/memory/inMemorySessionViewLoader.d.ts.map +1 -0
  249. package/dist/memory/inMemorySessionViewLoader.js +183 -0
  250. package/dist/memory/inMemorySessionViewLoader.js.map +1 -0
  251. package/dist/memory/inMemoryStorage.d.ts +26 -141
  252. package/dist/memory/inMemoryStorage.d.ts.map +1 -1
  253. package/dist/memory/inMemoryStorage.js +48 -187
  254. package/dist/memory/inMemoryStorage.js.map +1 -1
  255. package/dist/memory/keywordsTouch.d.ts +20 -0
  256. package/dist/memory/keywordsTouch.d.ts.map +1 -0
  257. package/dist/memory/keywordsTouch.js +25 -0
  258. package/dist/memory/keywordsTouch.js.map +1 -0
  259. package/dist/memory/lockManager.d.ts +7 -2
  260. package/dist/memory/lockManager.d.ts.map +1 -1
  261. package/dist/memory/lockManager.js +35 -11
  262. package/dist/memory/lockManager.js.map +1 -1
  263. package/dist/memory/projectManager.d.ts +30 -128
  264. package/dist/memory/projectManager.d.ts.map +1 -1
  265. package/dist/memory/projectManager.js +39 -171
  266. package/dist/memory/projectManager.js.map +1 -1
  267. package/dist/memory/projectRegistry.d.ts +22 -37
  268. package/dist/memory/projectRegistry.d.ts.map +1 -1
  269. package/dist/memory/projectRegistry.js +78 -85
  270. package/dist/memory/projectRegistry.js.map +1 -1
  271. package/dist/memory/roundStore.d.ts +629 -0
  272. package/dist/memory/roundStore.d.ts.map +1 -0
  273. package/dist/memory/roundStore.js +116 -0
  274. package/dist/memory/roundStore.js.map +1 -0
  275. package/dist/memory/sessionStore.d.ts +70 -61
  276. package/dist/memory/sessionStore.d.ts.map +1 -1
  277. package/dist/memory/sessionStore.js +23 -1
  278. package/dist/memory/sessionStore.js.map +1 -1
  279. package/dist/memory/sessionViewLoader.d.ts +141 -0
  280. package/dist/memory/sessionViewLoader.d.ts.map +1 -0
  281. package/dist/memory/sessionViewLoader.js +65 -0
  282. package/dist/memory/sessionViewLoader.js.map +1 -0
  283. package/dist/memory/sourceValidation.d.ts +18 -9
  284. package/dist/memory/sourceValidation.d.ts.map +1 -1
  285. package/dist/memory/sourceValidation.js +35 -29
  286. package/dist/memory/sourceValidation.js.map +1 -1
  287. package/dist/memory/storageInterface.d.ts +45 -126
  288. package/dist/memory/storageInterface.d.ts.map +1 -1
  289. package/dist/memory/types.d.ts +82 -168
  290. package/dist/memory/types.d.ts.map +1 -1
  291. package/dist/memory/types.js +116 -79
  292. package/dist/memory/types.js.map +1 -1
  293. package/dist/project-search/projectSearchProvider.d.ts +29 -0
  294. package/dist/project-search/projectSearchProvider.d.ts.map +1 -0
  295. package/dist/project-search/projectSearchProvider.js +57 -0
  296. package/dist/project-search/projectSearchProvider.js.map +1 -0
  297. package/dist/project-search/terms.d.ts +14 -0
  298. package/dist/project-search/terms.d.ts.map +1 -0
  299. package/dist/project-search/terms.js +68 -0
  300. package/dist/project-search/terms.js.map +1 -0
  301. package/dist/project-search/types.d.ts +139 -0
  302. package/dist/project-search/types.d.ts.map +1 -0
  303. package/dist/project-search/types.js +8 -0
  304. package/dist/project-search/types.js.map +1 -0
  305. package/dist/role-pack/capabilityMap.d.ts +28 -0
  306. package/dist/role-pack/capabilityMap.d.ts.map +1 -0
  307. package/dist/role-pack/capabilityMap.js +56 -0
  308. package/dist/role-pack/capabilityMap.js.map +1 -0
  309. package/dist/role-pack/constants.d.ts +21 -0
  310. package/dist/role-pack/constants.d.ts.map +1 -0
  311. package/dist/role-pack/constants.js +21 -0
  312. package/dist/role-pack/constants.js.map +1 -0
  313. package/dist/role-pack/rolePackManager.d.ts +269 -0
  314. package/dist/role-pack/rolePackManager.d.ts.map +1 -0
  315. package/dist/role-pack/rolePackManager.js +1082 -0
  316. package/dist/role-pack/rolePackManager.js.map +1 -0
  317. package/dist/role-pack/strategyKeys.d.ts +100 -0
  318. package/dist/role-pack/strategyKeys.d.ts.map +1 -0
  319. package/dist/role-pack/strategyKeys.js +184 -0
  320. package/dist/role-pack/strategyKeys.js.map +1 -0
  321. package/dist/role-pack/strategyResolver.d.ts +109 -0
  322. package/dist/role-pack/strategyResolver.d.ts.map +1 -0
  323. package/dist/role-pack/strategyResolver.js +304 -0
  324. package/dist/role-pack/strategyResolver.js.map +1 -0
  325. package/dist/role-pack/types.d.ts +237 -0
  326. package/dist/role-pack/types.d.ts.map +1 -0
  327. package/dist/role-pack/types.js +8 -0
  328. package/dist/role-pack/types.js.map +1 -0
  329. package/dist/role-pack/validator.d.ts +38 -0
  330. package/dist/role-pack/validator.d.ts.map +1 -0
  331. package/dist/role-pack/validator.js +436 -0
  332. package/dist/role-pack/validator.js.map +1 -0
  333. package/dist/security/pathGuard.d.ts +69 -72
  334. package/dist/security/pathGuard.d.ts.map +1 -1
  335. package/dist/security/pathGuard.js +151 -131
  336. package/dist/security/pathGuard.js.map +1 -1
  337. package/dist/skill/skillLayer3.d.ts +91 -0
  338. package/dist/skill/skillLayer3.d.ts.map +1 -0
  339. package/dist/skill/skillLayer3.js +104 -0
  340. package/dist/skill/skillLayer3.js.map +1 -0
  341. package/dist/skill/skillManager.d.ts +127 -56
  342. package/dist/skill/skillManager.d.ts.map +1 -1
  343. package/dist/skill/skillManager.js +318 -163
  344. package/dist/skill/skillManager.js.map +1 -1
  345. package/dist/skill/skillScriptRunner.d.ts +97 -0
  346. package/dist/skill/skillScriptRunner.d.ts.map +1 -0
  347. package/dist/skill/skillScriptRunner.js +271 -0
  348. package/dist/skill/skillScriptRunner.js.map +1 -0
  349. package/dist/skill/types.d.ts +73 -17
  350. package/dist/skill/types.d.ts.map +1 -1
  351. package/dist/skill/types.js +5 -1
  352. package/dist/skill/types.js.map +1 -1
  353. package/dist/utils/array.d.ts +5 -6
  354. package/dist/utils/array.d.ts.map +1 -1
  355. package/dist/utils/array.js +6 -6
  356. package/dist/utils/array.js.map +1 -1
  357. package/dist/utils/atomicWrite.d.ts +8 -0
  358. package/dist/utils/atomicWrite.d.ts.map +1 -0
  359. package/dist/utils/atomicWrite.js +31 -0
  360. package/dist/utils/atomicWrite.js.map +1 -0
  361. package/dist/utils/backgroundTask.d.ts +38 -0
  362. package/dist/utils/backgroundTask.d.ts.map +1 -0
  363. package/dist/utils/backgroundTask.js +117 -0
  364. package/dist/utils/backgroundTask.js.map +1 -0
  365. package/dist/utils/configResourceManager.d.ts +79 -0
  366. package/dist/utils/configResourceManager.d.ts.map +1 -0
  367. package/dist/utils/configResourceManager.js +150 -0
  368. package/dist/utils/configResourceManager.js.map +1 -0
  369. package/dist/utils/errors.d.ts +48 -56
  370. package/dist/utils/errors.d.ts.map +1 -1
  371. package/dist/utils/errors.js +60 -58
  372. package/dist/utils/errors.js.map +1 -1
  373. package/dist/utils/eventEmitter.d.ts +141 -63
  374. package/dist/utils/eventEmitter.d.ts.map +1 -1
  375. package/dist/utils/eventEmitter.js +50 -35
  376. package/dist/utils/eventEmitter.js.map +1 -1
  377. package/dist/utils/fileSafe.d.ts +20 -0
  378. package/dist/utils/fileSafe.d.ts.map +1 -0
  379. package/dist/utils/fileSafe.js +56 -0
  380. package/dist/utils/fileSafe.js.map +1 -0
  381. package/dist/utils/frontmatter.d.ts +2 -3
  382. package/dist/utils/frontmatter.d.ts.map +1 -1
  383. package/dist/utils/frontmatter.js +6 -5
  384. package/dist/utils/frontmatter.js.map +1 -1
  385. package/dist/utils/hash.d.ts +12 -0
  386. package/dist/utils/hash.d.ts.map +1 -0
  387. package/dist/utils/hash.js +27 -0
  388. package/dist/utils/hash.js.map +1 -0
  389. package/dist/utils/http.d.ts +17 -0
  390. package/dist/utils/http.d.ts.map +1 -0
  391. package/dist/utils/http.js +29 -0
  392. package/dist/utils/http.js.map +1 -0
  393. package/dist/utils/json.d.ts +1 -1
  394. package/dist/utils/json.js +1 -1
  395. package/dist/utils/math.d.ts +34 -1
  396. package/dist/utils/math.d.ts.map +1 -1
  397. package/dist/utils/math.js +47 -14
  398. package/dist/utils/math.js.map +1 -1
  399. package/dist/utils/objects.d.ts +2 -3
  400. package/dist/utils/objects.d.ts.map +1 -1
  401. package/dist/utils/objects.js +2 -3
  402. package/dist/utils/objects.js.map +1 -1
  403. package/dist/utils/recallDefaults.d.ts +16 -0
  404. package/dist/utils/recallDefaults.d.ts.map +1 -0
  405. package/dist/utils/recallDefaults.js +16 -0
  406. package/dist/utils/recallDefaults.js.map +1 -0
  407. package/dist/utils/safeTimer.d.ts +8 -36
  408. package/dist/utils/safeTimer.d.ts.map +1 -1
  409. package/dist/utils/safeTimer.js +9 -37
  410. package/dist/utils/safeTimer.js.map +1 -1
  411. package/dist/utils/scanner.d.ts +97 -17
  412. package/dist/utils/scanner.d.ts.map +1 -1
  413. package/dist/utils/scanner.js +269 -47
  414. package/dist/utils/scanner.js.map +1 -1
  415. package/dist/utils/segmenter.d.ts +20 -29
  416. package/dist/utils/segmenter.d.ts.map +1 -1
  417. package/dist/utils/segmenter.js +230 -88
  418. package/dist/utils/segmenter.js.map +1 -1
  419. package/dist/utils/strings.d.ts +15 -32
  420. package/dist/utils/strings.d.ts.map +1 -1
  421. package/dist/utils/strings.js +25 -44
  422. package/dist/utils/strings.js.map +1 -1
  423. package/dist/utils/time.d.ts +37 -0
  424. package/dist/utils/time.d.ts.map +1 -1
  425. package/dist/utils/time.js +56 -0
  426. package/dist/utils/time.js.map +1 -1
  427. package/dist/utils/toError.d.ts +13 -1
  428. package/dist/utils/toError.d.ts.map +1 -1
  429. package/dist/utils/toError.js +18 -1
  430. package/dist/utils/toError.js.map +1 -1
  431. package/dist/web-fetch/fetchWebFetchProvider.d.ts +14 -0
  432. package/dist/web-fetch/fetchWebFetchProvider.d.ts.map +1 -0
  433. package/dist/web-fetch/fetchWebFetchProvider.js +69 -0
  434. package/dist/web-fetch/fetchWebFetchProvider.js.map +1 -0
  435. package/dist/web-fetch/types.d.ts +30 -0
  436. package/dist/web-fetch/types.d.ts.map +1 -0
  437. package/dist/web-fetch/types.js +7 -0
  438. package/dist/web-fetch/types.js.map +1 -0
  439. package/dist/web-fetch/webFetchProvider.d.ts +10 -0
  440. package/dist/web-fetch/webFetchProvider.d.ts.map +1 -0
  441. package/dist/web-fetch/webFetchProvider.js +28 -0
  442. package/dist/web-fetch/webFetchProvider.js.map +1 -0
  443. package/dist/web-search/fetchWebSearchProvider.d.ts +27 -0
  444. package/dist/web-search/fetchWebSearchProvider.d.ts.map +1 -0
  445. package/dist/web-search/fetchWebSearchProvider.js +199 -0
  446. package/dist/web-search/fetchWebSearchProvider.js.map +1 -0
  447. package/dist/web-search/types.d.ts +46 -0
  448. package/dist/web-search/types.d.ts.map +1 -0
  449. package/dist/web-search/types.js +2 -0
  450. package/dist/{persona → web-search}/types.js.map +1 -1
  451. package/dist/web-search/webSearchProvider.d.ts +10 -0
  452. package/dist/web-search/webSearchProvider.d.ts.map +1 -0
  453. package/dist/web-search/webSearchProvider.js +30 -0
  454. package/dist/web-search/webSearchProvider.js.map +1 -0
  455. package/docs/architecture/role-pack-authoring-guide.md +243 -0
  456. package/docs/architecture/role-pack-spec.md +767 -0
  457. package/docs/memora-api-reference.md +1175 -0
  458. package/docs/memora-/346/216/245/345/205/245/346/214/207/345/215/227.md +843 -0
  459. package/docs/role-pack-/345/274/200/346/224/276/351/224/256/346/214/207/345/215/227.md +148 -0
  460. package/package.json +105 -83
  461. package/role-packs/README.md +41 -0
  462. package/role-packs/memora/345/212/251/346/211/213/manifest.json +12 -0
  463. package/role-packs/memora/345/212/251/346/211/213/persona.md +12 -0
  464. package/role-packs/memora/345/212/251/346/211/213/rules.md +4 -0
  465. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/manifest.json +44 -0
  466. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/persona.md +46 -0
  467. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/rules.md +15 -0
  468. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/character-sheet.md +34 -0
  469. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/core-extractor.md +37 -0
  470. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/craft-review.md +69 -0
  471. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/dialogue-craft.md +45 -0
  472. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/emotion-wave.md +46 -0
  473. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/empathy-craft.md +79 -0
  474. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/foreshadow.md +29 -0
  475. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/hotspot-mapping.md +121 -0
  476. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/idea-lever.md +42 -0
  477. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/logline-craft.md +47 -0
  478. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/longform-guard.md +64 -0
  479. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/need-finder.md +40 -0
  480. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/outline-expand.md +46 -0
  481. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/pacing-hook.md +34 -0
  482. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/polish-method.md +113 -0
  483. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/pov-discipline.md +79 -0
  484. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/project-init/SKILL.md +112 -0
  485. 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 +441 -0
  486. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/relationship-web.md +47 -0
  487. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/scene-craft.md +46 -0
  488. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/story-bible.md +60 -0
  489. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/story-structure.md +36 -0
  490. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/style-weaver.md +109 -0
  491. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/three-layer-check.md +27 -0
  492. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/world-builder.md +41 -0
  493. 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 +48 -0
  494. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/persona.md +73 -0
  495. 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 +19 -0
  496. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/api-doc-writer.md +40 -0
  497. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/doc-planner.md +42 -0
  498. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/nutrient-search.md +28 -0
  499. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/seed-finder.md +28 -0
  500. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/ssot-audit.md +34 -0
  501. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/style-guide.md +40 -0
  502. package/dist/agent/guardrail.d.ts +0 -47
  503. package/dist/agent/guardrail.d.ts.map +0 -1
  504. package/dist/agent/guardrail.js +0 -51
  505. package/dist/agent/guardrail.js.map +0 -1
  506. package/dist/agent/managers/autoConfigRefiner.d.ts +0 -39
  507. package/dist/agent/managers/autoConfigRefiner.d.ts.map +0 -1
  508. package/dist/agent/managers/autoConfigRefiner.js +0 -150
  509. package/dist/agent/managers/autoConfigRefiner.js.map +0 -1
  510. package/dist/agent/managers/configManager.d.ts +0 -125
  511. package/dist/agent/managers/configManager.d.ts.map +0 -1
  512. package/dist/agent/managers/configManager.js +0 -194
  513. package/dist/agent/managers/configManager.js.map +0 -1
  514. package/dist/agent/managers/insightExtractor.d.ts +0 -139
  515. package/dist/agent/managers/insightExtractor.d.ts.map +0 -1
  516. package/dist/agent/managers/insightExtractor.js +0 -401
  517. package/dist/agent/managers/insightExtractor.js.map +0 -1
  518. package/dist/agent/managers/memoryDecayScheduler.d.ts +0 -198
  519. package/dist/agent/managers/memoryDecayScheduler.d.ts.map +0 -1
  520. package/dist/agent/managers/memoryDecayScheduler.js +0 -349
  521. package/dist/agent/managers/memoryDecayScheduler.js.map +0 -1
  522. package/dist/agent/managers/relationBuilder.d.ts +0 -131
  523. package/dist/agent/managers/relationBuilder.d.ts.map +0 -1
  524. package/dist/agent/managers/relationBuilder.js +0 -192
  525. package/dist/agent/managers/relationBuilder.js.map +0 -1
  526. package/dist/agent/personaMatcher.d.ts +0 -29
  527. package/dist/agent/personaMatcher.d.ts.map +0 -1
  528. package/dist/agent/personaMatcher.js +0 -60
  529. package/dist/agent/personaMatcher.js.map +0 -1
  530. package/dist/agent/userFactExtractor.d.ts +0 -25
  531. package/dist/agent/userFactExtractor.d.ts.map +0 -1
  532. package/dist/agent/userFactExtractor.js +0 -81
  533. package/dist/agent/userFactExtractor.js.map +0 -1
  534. package/dist/eval/evalRunner.d.ts +0 -94
  535. package/dist/eval/evalRunner.d.ts.map +0 -1
  536. package/dist/eval/evalRunner.js +0 -141
  537. package/dist/eval/evalRunner.js.map +0 -1
  538. package/dist/eval/evalTypes.d.ts +0 -148
  539. package/dist/eval/evalTypes.d.ts.map +0 -1
  540. package/dist/eval/evalTypes.js +0 -118
  541. package/dist/eval/evalTypes.js.map +0 -1
  542. package/dist/eval/scenarios.d.ts +0 -33
  543. package/dist/eval/scenarios.d.ts.map +0 -1
  544. package/dist/eval/scenarios.js +0 -109
  545. package/dist/eval/scenarios.js.map +0 -1
  546. package/dist/llm/embedding.d.ts +0 -67
  547. package/dist/llm/embedding.d.ts.map +0 -1
  548. package/dist/llm/embedding.js +0 -184
  549. package/dist/llm/embedding.js.map +0 -1
  550. package/dist/memory/hybridMerge.d.ts +0 -54
  551. package/dist/memory/hybridMerge.d.ts.map +0 -1
  552. package/dist/memory/hybridMerge.js +0 -36
  553. package/dist/memory/hybridMerge.js.map +0 -1
  554. package/dist/memory/inMemoryRelationStore.d.ts +0 -51
  555. package/dist/memory/inMemoryRelationStore.d.ts.map +0 -1
  556. package/dist/memory/inMemoryRelationStore.js +0 -65
  557. package/dist/memory/inMemoryRelationStore.js.map +0 -1
  558. package/dist/memory/loader.d.ts +0 -49
  559. package/dist/memory/loader.d.ts.map +0 -1
  560. package/dist/memory/loader.js +0 -93
  561. package/dist/memory/loader.js.map +0 -1
  562. package/dist/memory/recall.d.ts +0 -66
  563. package/dist/memory/recall.d.ts.map +0 -1
  564. package/dist/memory/recall.js +0 -142
  565. package/dist/memory/recall.js.map +0 -1
  566. package/dist/memory/relationStore.d.ts +0 -78
  567. package/dist/memory/relationStore.d.ts.map +0 -1
  568. package/dist/memory/relationStore.js +0 -2
  569. package/dist/memory/relationStore.js.map +0 -1
  570. package/dist/memory/store.d.ts +0 -50
  571. package/dist/memory/store.d.ts.map +0 -1
  572. package/dist/memory/store.js +0 -161
  573. package/dist/memory/store.js.map +0 -1
  574. package/dist/memory/userProfile.d.ts +0 -156
  575. package/dist/memory/userProfile.d.ts.map +0 -1
  576. package/dist/memory/userProfile.js +0 -320
  577. package/dist/memory/userProfile.js.map +0 -1
  578. package/dist/memory/vectorStore.d.ts +0 -185
  579. package/dist/memory/vectorStore.d.ts.map +0 -1
  580. package/dist/memory/vectorStore.js +0 -257
  581. package/dist/memory/vectorStore.js.map +0 -1
  582. package/dist/persona/personaManager.d.ts +0 -160
  583. package/dist/persona/personaManager.d.ts.map +0 -1
  584. package/dist/persona/personaManager.js +0 -414
  585. package/dist/persona/personaManager.js.map +0 -1
  586. package/dist/persona/types.d.ts +0 -32
  587. package/dist/persona/types.d.ts.map +0 -1
  588. package/dist/persona/types.js +0 -5
@@ -1,155 +1,117 @@
1
1
  /**
2
- * 技能管理器 — 单层目录扫描 + 关键词匹配
3
- *
4
- * 职责:
5
- * - 启动时扫描 configDir/skills/ 目录
6
- * - 通过关键词匹配选择技能(初期阶段一/二)
7
- * - 写入 SQLite 索引(source: skill,遵循"万物皆记忆")
8
- * - 后期触发条件(≥15个技能 / 关键词命中率 <80%)→ 切换为 LLM 自主选择
9
- *
10
- * 设计原则(ADR-004 万物皆记忆):
11
- * - 技能遵循"万物皆记忆"——存入 SQLite 作为 skill 来源记忆
12
- * - 单层目录:<configDir>/skills/(宿主负责汇总全局+项目级技能到 configDir)
13
- * - 与 PersonaManager 存储策略一致:文件加载 → 内存缓存 + SQLite 索引
14
- *
15
- * 触发词说明:
16
- * 每个 skill 文件的 frontmatter 声明 keywords(逗号分隔)和 trigger(触发正则,可选)。
17
- * skill 文件命名规范:`<技能名>.md`(如"去AI味.md""审视角.md""写代码.md")。
2
+ * 技能管理器 — 继承 ConfigResourceManager。
3
+ * 单层目录 <configDir>/skills/(宿主负责汇总全局+项目级技能到 configDir)。
4
+ * 三级渐进披露:L1 元数据常驻 / L2 read_skill 按需 / L3 resources+scripts。
18
5
  */
19
- import { scoreByKeywords } from '../utils/segmenter.js';
20
- import { SOURCE_LABELS } from '../memory/types.js';
21
6
  import { logger } from '../logging/logger.js';
22
- import { byScoreDesc } from '../utils/array.js';
23
7
  import { configError } from '../utils/errors.js';
24
- import { nowIso } from '../utils/time.js';
25
- import { scanMarkdownDir, parseKeywords, parseTrigger, resolveSubdir } from '../utils/scanner.js';
8
+ import { ConfigResourceManager } from '../utils/configResourceManager.js';
9
+ import { scanMarkdownDir } from '../utils/scanner.js';
10
+ import { parseFrontmatter } from '../utils/frontmatter.js';
11
+ import { discoverSkillLayer3, projectDiscoveredLayer3, resolveSkillDir, findLayer3Resource, resolveLayer3ResourcePath, resolveLayer3ScriptPath, } from '../skill/skillLayer3.js';
12
+ import { readFileCapped, existsSyncSafe } from '../utils/fileSafe.js';
13
+ /**
14
+ * L1 阈值保护:技能数超过此值时压缩 L1 描述为 20 字摘要。
15
+ * SSOT:全局技能(SkillManager)与角色包内嵌技能(RolePackManager)共用同一渐进披露阈值。
16
+ */
17
+ export const L1_COMPRESSED_THRESHOLD = 30;
18
+ /** L1 阈值保护:技能数超过此值时切换为 list_skills 工具动态查询(SSOT 同一来源) */
19
+ export const L1_LIST_TOOL_THRESHOLD = 50;
20
+ /**
21
+ * 解析来源层(agent / project):SSOT 收口——仅接受合法枚举值,
22
+ * 非法/缺失回退 'project'(与历史默认一致,防御 frontmatter 手误导致契约外值透传宿主)。
23
+ */
24
+ function resolveLayer(raw) {
25
+ return raw === 'agent' ? 'agent' : 'project';
26
+ }
26
27
  /**
27
28
  * 技能管理器
28
29
  */
29
- export class SkillManager {
30
- configDir;
31
- index;
32
- /** 技能列表缓存(启动时扫描一次) */
33
- skills = [];
30
+ export class SkillManager extends ConfigResourceManager {
31
+ /**
32
+ * 已被用户技能覆盖的内置技能名。
33
+ *
34
+ * 与基类 runtimeNames 记账互补:runtimeNames 说明「该项无内核扫描真理源」,
35
+ * 本集合说明「同名磁盘(内置)项被用户版覆盖」——reload 扫描回同名内置时
36
+ * 以用户版为准(基类 isUserOverride 钩子)。load()(纯内置重载)时一并清空。
37
+ */
38
+ userOverrides = new Set();
39
+ /**
40
+ * 禁用的技能名集合:宿主配置形态启停。命中者
41
+ * get() 返回 null(read_skill/L3 全链路经 get 短路)+ buildSkillList 不枚举。
42
+ * list 快照保持完整——宿主 UI 依据同名设置标注「已禁用」徽章(对 LLM 静默)。
43
+ *
44
+ * **作用域 = 全局技能池(内置/用户)**:角色包内嵌技能由 RolePackManager 持有、
45
+ * 不经本管理器(其启用判据 = 角色是否激活),对本集**免疫**——角色包技能
46
+ * 「随角色启停、不可按名禁用」(见宿主 skillAggregation 定案声明)。
47
+ */
48
+ disabledNames = new Set();
34
49
  /**
35
50
  * @param configDir 配置目录(技能文件在 <configDir>/skills/ 下)
36
- * @param index SQLite 索引(用于写入 skill 记忆)
37
51
  */
38
- constructor(configDir, index) {
39
- this.configDir = configDir;
40
- this.index = index;
52
+ constructor(configDir) {
53
+ super(configDir, 'skills');
41
54
  }
55
+ // ── 生命周期 ──────────────────────────────────────
42
56
  /**
43
57
  * 启动时加载:扫描技能目录
44
58
  *
45
59
  * @returns 加载的技能数量
46
60
  */
47
61
  async load() {
48
- this.skills = await this.scanSkills();
49
- logger.info({ count: this.skills.length, names: this.skills.map((s) => s.name) }, '技能加载完成');
50
- // 写入 SQLite 索引(遵循"万物皆记忆"——与 PersonaManager 一致)
51
- this.writeAllToIndex();
52
- return this.skills.length;
53
- }
54
- /**
55
- * 根据用户输入匹配最合适的技能
56
- *
57
- * 匹配流程:
58
- * 1. 先检查所有 trigger 正则,命中直接返回(最高优先级)
59
- * 2. 再检查关键词匹配(TF 计分,得分排序)
60
- * 3. 若匹配多项但得分相同 → 取第一个
61
- * 4. 无任何匹配 → 返回 null
62
- *
63
- * @param userInput 用户输入文本
64
- * @returns 匹配结果,无匹配返回 null
65
- */
66
- match(userInput) {
67
- if (this.skills.length === 0)
68
- return null;
69
- // 1. trigger 正则匹配(最高优先级)
70
- for (const skill of this.skills) {
71
- if (skill.trigger?.test(userInput)) {
72
- logger.debug({ skill: skill.name, trigger: skill.trigger.source }, '技能触发器匹配');
73
- return { skill, score: 1.0 };
74
- }
75
- }
76
- const matches = [];
77
- for (const skill of this.skills) {
78
- if (skill.keywords.length === 0)
79
- continue;
80
- const score = scoreByKeywords(userInput, skill.keywords);
81
- if (score > 0) {
82
- matches.push({ skill, score });
83
- }
84
- }
85
- if (matches.length === 0)
86
- return null;
87
- // 得分从高到低排序,取第一个
88
- matches.sort(byScoreDesc);
89
- const best = matches[0];
90
- if (!best)
91
- return null;
92
- logger.debug({ matched: best.skill.name, score: best.score }, '技能关键词匹配');
93
- return best;
62
+ return this.loadItems();
94
63
  }
64
+ // ── 公共方法 ──────────────────────────────────────
95
65
  /**
96
66
  * 根据技能名获取技能
97
- *
98
- * @param name 技能名
99
- * @returns 技能条目,不存在返回 null
100
67
  */
101
68
  get(name) {
102
- return this.skills.find((s) => s.name === name) ?? null;
69
+ // 禁用技能对 LLM 不可见:get=null → read_skill 报未找到、L3 全链路短路
70
+ if (this.disabledNames.has(name))
71
+ return null;
72
+ return this.items.find((s) => s.name === name) ?? null;
103
73
  }
104
74
  /**
105
- * 获取所有技能列表
75
+ * 设置禁用技能清单(配置形态启停;装配期一次性注入,可由 reloadConfig 重设)
76
+ *
77
+ * @param names 禁用的技能名(命中者 L1/L2/L3 全不可用;对 LLM 语义 = 不存在)
106
78
  */
107
- get list() {
108
- return this.skills;
79
+ setDisabledSkills(names) {
80
+ this.disabledNames.clear();
81
+ for (const name of names)
82
+ this.disabledNames.add(name);
83
+ logger.info({ count: this.disabledNames.size }, '技能禁用集已设置');
109
84
  }
110
85
  /**
111
- * 注册运行时注入的技能
86
+ * 当前禁用技能名快照(只读)——宿主 UI 渲染「已禁用」徽章的真源。
112
87
  *
113
- * 供 Agent.addSkill() 调用:宿主程序可在 init() 之后动态注入技能。
114
- * 重复注册同名技能会被拒绝(与文件加载的技能冲突时也按"先到先得"判断)。
88
+ * 为何由内核提供而非宿主自读一份配置:**实际生效的禁用集在内核**(`disabledNames` 是
89
+ * `get()` / `buildSkillList()` 的判据)。宿主若另读 workspace 配置,会出现「UI 标注的」
90
+ * 与「实际生效的」两源分叉(如 reloadConfig 重设后不同步)。
115
91
  *
116
- * @param skill 技能条目
117
- * @throws 技能名已存在时抛错
92
+ * ⚠️ 对 **LLM** 仍然静默:本 getter 仅供宿主 UI 对照显示,
93
+ * **不得**出现在工具返回、L1 清单或任何进入上下文的文本里(语义 = 技能不存在)。
118
94
  */
119
- register(skill) {
120
- if (this.skills.some((s) => s.name === skill.name)) {
121
- throw configError(`技能 "${skill.name}" 已存在,不能重复注册`, undefined, ['请使用不同的技能名称']);
122
- }
123
- this.skills.push(skill);
124
- logger.info({ name: skill.name, keywords: skill.keywords.length }, '技能已注册(运行时注入)');
95
+ get disabledSkillNames() {
96
+ return [...this.disabledNames];
125
97
  }
126
98
  /**
127
- * 重载技能:清空内存缓存 + 重新扫描目录 + 同步 SQLite 索引
128
- *
129
- * 事件驱动重载:installSkill 写入文件后或用户手动编辑 skills/ 目录后,
130
- * 调用此方法使当前会话立即生效,无需重启 Agent。
99
+ * 注册运行时注入的技能(如 confirmConfigSuggestion 持久化技能);同名重复注册被拒绝。
131
100
  *
132
- * 与 load() 的区别:
133
- * - load() → 启动时首次加载(冷启动)
134
- * - reload() → 运行时增量重载(热更新),保留运行时 register() 注入的技能会被覆盖
135
- *
136
- * @returns 重载后的技能数量
101
+ * 必须走基类 registerRuntimeItem 登记——直接 push 进 items 会被 reload() 的磁盘扫描结果覆盖
102
+ * (运行时注入项无磁盘真理源,reload 保留依赖 runtimeNames 记账;设定记忆不写记忆库)。
137
103
  */
138
- async reload() {
139
- const oldCount = this.skills.length;
140
- this.skills = await this.scanSkills();
141
- this.writeAllToIndex();
142
- logger.info({ oldCount, newCount: this.skills.length, names: this.skills.map((s) => s.name) }, '技能已重载');
143
- return this.skills.length;
104
+ register(skill) {
105
+ if (this.items.some((s) => s.name === skill.name)) {
106
+ throw configError(`技能 "${skill.name}" 已存在,不能重复注册`, undefined, [
107
+ '请使用不同的技能名称',
108
+ ]);
109
+ }
110
+ this.registerRuntimeItem(skill);
111
+ logger.info({ name: skill.name }, '技能已注册(运行时注入)');
144
112
  }
145
113
  /**
146
114
  * 构建 system prompt 中的技能段
147
- *
148
- * 格式:
149
- * 【当前技能】技能名
150
- * 技能 prompt 正文...
151
- *
152
- * @param name 技能名(可选,不传返回空)
153
115
  */
154
116
  buildSystemPrompt(name) {
155
117
  if (!name)
@@ -159,63 +121,256 @@ export class SkillManager {
159
121
  return '';
160
122
  return `【当前技能】${skill.name}\n${skill.content}`;
161
123
  }
162
- // ── 私有方法 ──────────────────────────────────────
163
124
  /**
164
- * 将所有技能写入 SQLite 索引
125
+ * 格式化单个技能为 Prompt 字符串
165
126
  *
166
- * 本函数循环体内无 await,作为同步函数实现(与 personaManager.writeAllToIndex 同模式)。
127
+ * SSOT:所有技能展示(System Prompt、Tool 回调)必须走此方法保证格式统一。
128
+ * compress=true 时描述截断至 20 字(技能较多时的 token 节约)。
167
129
  */
168
- writeAllToIndex() {
169
- if (!this.index)
170
- return;
171
- for (const skill of this.skills) {
172
- this.writeSkillToIndex(skill);
130
+ static formatSkillForPrompt(skill, fallbackName, compress = false) {
131
+ const label = skill?.name || fallbackName || '';
132
+ if (!label)
133
+ return '';
134
+ let desc = '';
135
+ if (skill?.description) {
136
+ const descText = compress && skill.description.length > 20
137
+ ? skill.description.slice(0, 20) + '…'
138
+ : skill.description;
139
+ desc = `:${descText}`;
173
140
  }
174
- logger.info({ count: this.skills.length }, '技能记忆已写入 SQLite');
175
- }
176
- /**
177
- * 将单个技能写入 SQLite 索引
178
- */
179
- writeSkillToIndex(skill) {
180
- if (!this.index)
181
- return;
182
- const now = nowIso();
183
- const memory = {
184
- id: `skill:${skill.name}`,
185
- content: skill.content,
186
- source: SOURCE_LABELS.SKILL,
187
- name: skill.name,
188
- createdAt: now,
189
- accessedAt: now,
190
- score: 0.7,
191
- };
192
- this.index.upsert(memory);
141
+ const hasL3 = skill?.layer3 && (skill.layer3.resources.length > 0 || skill.layer3.scripts.length > 0);
142
+ const l3Tag = hasL3 ? '(含资源/脚本)' : '';
143
+ return `- ${label}${desc}${l3Tag}`;
144
+ }
145
+ /**
146
+ * 对 **LLM 可见**的技能条目——渐进披露可用性判据的**唯一真理源**。
147
+ *
148
+ * 判据两条(缺一不可):
149
+ * ① 有 `description`(渐进披露的唯一依据:缺则模型不知何时激活);
150
+ * ② 未命中 `disabledNames`(启停:对模型语义 = 不存在)。
151
+ *
152
+ * ⚠️ **L1 枚举**(`buildSkillList`)与 **`list_skills` 工具侧**(assembler 注入回调)
153
+ * 必须共用本方法:两者同为 **LLM 消费**、是同一份清单的两个交付通道,
154
+ * 判据一旦分叉即「双轨镜像」(同一模型在两条路径看到不同技能集)。
155
+ * 教训:启停/可用性过滤须两侧同步——单侧漏改会让禁用技能在另一通道仍可见。
156
+ *
157
+ * 注:本方法**不**过滤 L3 归属,也不做排序——排序由调用方决定(两通道排序本就不同)。
158
+ */
159
+ listAvailable() {
160
+ return this.items.filter((s) => s.description?.trim() && !this.disabledNames.has(s.name));
161
+ }
162
+ /**
163
+ * 构建全局技能清单块(渐进披露 L1),与角色包技能清单同格式。
164
+ * 两级技能同构:通用技能全局激活,角色包技能随角色激活;LLM 按需调 read_skill 读正文(L2)。
165
+ * 含 resources/scripts 的技能附加 "(含资源/脚本)" 标记。
166
+ *
167
+ * L1 阈值保护(与角色包 buildSystemPrompt 同构):
168
+ * ≤ 30 技能:完整 L1(name + full description)
169
+ * 31-50 技能:压缩 L1(name + 20 字摘要)
170
+ * > 50 技能:切换 list_skills 工具动态查询,不在 system prompt 枚举
171
+ */
172
+ buildSkillList() {
173
+ // 可用性 + 禁用过滤**收口于 listAvailable**(LLM 可见集唯一真理源,
174
+ // 与 list_skills 工具侧共用;此处不再自写 filter,防两通道判据分叉)。
175
+ // 不进清单者由宿主 UI 显式标注而非静默隐藏:「未生效」= 健康徽章 / 禁用 = 「已禁用」徽章。
176
+ const candidates = this.listAvailable();
177
+ if (candidates.length === 0)
178
+ return '';
179
+ const skillCount = candidates.length;
180
+ // L1 阈值保护:超上限不枚举,提示用 list_skills 工具动态查询
181
+ if (skillCount > L1_LIST_TOOL_THRESHOLD) {
182
+ return `【通用技能(${skillCount} 个,数量较多,使用 list_skills 工具查询具体清单)】`;
183
+ }
184
+ const compressed = skillCount > L1_COMPRESSED_THRESHOLD;
185
+ const listed = candidates
186
+ .map((skill) => SkillManager.formatSkillForPrompt(skill, undefined, compressed))
187
+ .filter(Boolean);
188
+ if (listed.length === 0)
189
+ return '';
190
+ const modeNote = compressed
191
+ ? '(技能较多,描述已压缩至 20 字,可用 read_skill 读取完整正文)'
192
+ : '(渐进披露 L1,按需调用 read_skill 读取正文)';
193
+ return `【通用技能${modeNote}】\n${listed.join('\n')}`;
194
+ }
195
+ /**
196
+ * 校验单技能文件(写→验→用闭环,宿主 UI 校验入口)。
197
+ * 复用 parser frontmatter 解析做单一真理源,不重写解析;只做确定性结构检查,不做语义 schema。
198
+ * 判级(三点强化):
199
+ * - error:无 frontmatter / description 缺失/空(渐进披露唯一依据,缺则技能不可用)/ 正文空
200
+ * - warning:layer 非法(回退 project)
201
+ */
202
+ async validateFile(filePath) {
203
+ const issues = [];
204
+ // 读取收口于 fileSafe.readFileCapped(统一长度上限保护,与角色包内容读取同级)
205
+ const raw = await readFileCapped(filePath);
206
+ if (raw === null) {
207
+ return {
208
+ ok: false,
209
+ issues: [{ level: 'error', field: 'file', message: '无法读取技能文件' }],
210
+ };
211
+ }
212
+ const { frontmatter, body } = parseFrontmatter(raw);
213
+ // 无 frontmatter 结构(fallback:整体落入 body 且无任何键值)→ 不被识别
214
+ if (Object.keys(frontmatter).length === 0 && body === raw) {
215
+ issues.push({
216
+ level: 'error',
217
+ field: 'frontmatter',
218
+ message: '缺少 frontmatter(文件需以 --- 开头声明 name/description)',
219
+ });
220
+ }
221
+ const desc = frontmatter['description'];
222
+ if (!desc || !desc.trim()) {
223
+ issues.push({
224
+ level: 'error',
225
+ field: 'description',
226
+ message: '缺少 description:渐进披露不暴露,模型不知何时激活此技能',
227
+ });
228
+ }
229
+ if (!body.trim()) {
230
+ issues.push({ level: 'error', field: 'body', message: '技能正文为空,无可执行指令' });
231
+ }
232
+ const layer = frontmatter['layer'];
233
+ if (layer && layer !== 'agent' && layer !== 'project') {
234
+ issues.push({
235
+ level: 'warning',
236
+ field: 'layer',
237
+ message: `layer 值「${layer}」非法,将回退为 project`,
238
+ });
239
+ }
240
+ return { ok: issues.every((i) => i.level !== 'error'), issues };
241
+ }
242
+ // ── L3 资源/脚本访问 ──────────────────────────────────
243
+ /**
244
+ * 读取技能的 L3 资源文件(渐进披露 L3);资源须在 layer3 中且路径不逃逸其来源子目录
245
+ * (resources/ 或 references/,兼容主流 references/ 辅助文档目录)
246
+ */
247
+ async readResource(skillName, resourcePath) {
248
+ const skill = this.get(skillName);
249
+ if (!skill)
250
+ return null;
251
+ // 白名单前置:资源须已由扫描登记在 layer3 中(未登记 → 静默 null)
252
+ if (!findLayer3Resource(skill.layer3, resourcePath))
253
+ return null;
254
+ // 路径解析(按条目来源子目录选基目录 + 路径穿越防护)收口于 skillLayer3(SSOT)
255
+ const skillDir = resolveSkillDir(skill.filePath);
256
+ const resourceFullPath = resolveLayer3ResourcePath(skillDir, skill.layer3, resourcePath);
257
+ if (!resourceFullPath) {
258
+ logger.warn({ skill: skillName, resourcePath }, 'read_resource 路径穿越被阻止');
259
+ return null;
260
+ }
261
+ // 读取收口于 fileSafe.readFileCapped:长度上限保护与角色包内嵌技能同级(差异点取更全面形态)
262
+ const content = await readFileCapped(resourceFullPath);
263
+ if (content === null) {
264
+ logger.warn({ skill: skillName, resourcePath }, '读取 L3 资源失败');
265
+ return null;
266
+ }
267
+ return content;
268
+ }
269
+ /**
270
+ * 列出技能的 L3 资源
271
+ */
272
+ listResources(skillName) {
273
+ const skill = this.get(skillName);
274
+ return skill?.layer3?.resources ?? [];
193
275
  }
194
276
  /**
195
- * 扫描 configDir/skills/ 目录
277
+ * 列出技能的 L3 脚本
278
+ */
279
+ listScripts(skillName) {
280
+ const skill = this.get(skillName);
281
+ return skill?.layer3?.scripts ?? [];
282
+ }
283
+ /**
284
+ * 获取脚本的完整路径(须在 layer3 中且路径不逃逸 scripts/ 目录)
285
+ */
286
+ getScriptPath(skillName, scriptPath) {
287
+ const skill = this.get(skillName);
288
+ if (!skill)
289
+ return null;
290
+ const skillDir = resolveSkillDir(skill.filePath);
291
+ const fullPath = resolveLayer3ScriptPath(skillDir, skill.layer3, scriptPath);
292
+ if (!fullPath)
293
+ return null;
294
+ // 存在性校验与角色包内嵌技能对齐(差异点取更全面形态):防止交出指向缺失脚本的路径
295
+ return existsSyncSafe(fullPath) ? fullPath : null;
296
+ }
297
+ // ── 基类抽象方法实现 ──────────────────────────────
298
+ /**
299
+ * 加载用户目录的技能(宿主调用,用于扩展内置技能池)
300
+ *
301
+ * 与 load() 的区别:
302
+ * - load() 从 configDir/skills/ 扫描内置技能(有磁盘真理源)
303
+ * - loadExtraDir() 从额外目录扫描用户技能(运行时注入,reload 时保留)
304
+ *
305
+ * 设计哲学:内核保持单一真理源(configDir/skills/),宿主负责扩展用户目录。
306
+ * 用户技能通过 registerRuntimeItem 注入,reload() 时会保留(同名冲突以磁盘为准)。
196
307
  *
197
- * 宿主负责将全局+项目级技能汇总到 configDir,
198
- * 内核只扫描一个目录,不做路径假设。
199
- */
200
- async scanSkills() {
201
- const map = new Map();
202
- const skillsDir = resolveSubdir(this.configDir, 'skills');
203
- if (skillsDir) {
204
- const entries = await scanMarkdownDir(skillsDir);
205
- for (const entry of entries) {
206
- const skill = {
207
- name: entry.name,
208
- keywords: parseKeywords(entry.frontmatter),
209
- trigger: parseTrigger(entry.frontmatter),
210
- description: entry.frontmatter['description'],
211
- content: entry.body.trim(),
212
- filePath: entry.filePath,
213
- layer: 'project',
214
- };
215
- map.set(entry.name, skill);
308
+ * @param dir 用户技能目录(如 ~/.memora/skills/)
309
+ * @returns 加载的技能数量
310
+ */
311
+ async loadExtraDir(dir) {
312
+ const entries = await scanMarkdownDir(dir);
313
+ let count = 0;
314
+ for (const entry of entries) {
315
+ // 已是用户覆盖项(本会话此前注入过):幂等跳过,避免同名双存重复注入
316
+ if (this.userOverrides.has(entry.name))
317
+ continue;
318
+ const existingIdx = this.items.findIndex((s) => s.name === entry.name);
319
+ const skill = await this.createEntry(entry);
320
+ if (!skill)
321
+ continue;
322
+ // 同名覆盖(对齐主流「用户可覆盖内置」):用户版生效——
323
+ // 移除内置版(磁盘真理源,reload 可重扫)、
324
+ // 登记 userOverrides 供 reload 保持用户版胜出(基类 isUserOverride 钩子);
325
+ // 不覆盖则用户同名技能会被静默丢弃。
326
+ if (existingIdx >= 0) {
327
+ this.items.splice(existingIdx, 1);
328
+ this.userOverrides.add(entry.name);
329
+ logger.info({ name: entry.name }, '用户技能覆盖内置技能');
216
330
  }
331
+ this.registerRuntimeItem(skill);
332
+ count++;
217
333
  }
218
- return Array.from(map.values());
334
+ logger.info({ count, dir }, '用户技能加载完成');
335
+ return count;
336
+ }
337
+ /**
338
+ * 用户覆盖声明:userOverrides 中记录的同名技能,reload 扫描回内置版时
339
+ * 用户版胜出、内置版剔除(基类 retainRuntimeItems 消费)。其余同名不声明——
340
+ * 保持基类默认「磁盘(内置)赢」语义(如 register() 运行时技能撞内置仍内置赢)。
341
+ */
342
+ isUserOverride(name) {
343
+ return this.userOverrides.has(name);
344
+ }
345
+ /**
346
+ * load()(纯内置重载)后 userOverrides 一并清空——与基类 runtimeNames 同寿命:
347
+ * load() 整体替换 items、运行时注入全丢,账目须同步;否则残留名字会在未来
348
+ * loadExtraDir 同名时被幂等跳过(见其开头判定),用户技能静默丢失。
349
+ */
350
+ onAfterLoad() {
351
+ this.userOverrides.clear();
352
+ }
353
+ async createEntry(entry) {
354
+ // L3 隔离纪律(对齐 Claude Code 主流):仅「文件夹形态」(入口为 SKILL.md)才发现
355
+ // resources/ scripts/。顶层裸 .md 单文件技能目录 = 技能池共享根,同级扫描会把别的技能的
356
+ // resources/scripts 误归给自己 → 污染。故裸 .md 为纯 L1/L2,需要 L3 资源/脚本必须用文件夹+SKILL.md。
357
+ //
358
+ // 该规则与角色包内嵌技能**逐字同构**;发现与投影均已收口于 skillLayer3
359
+ // (discoverSkillLayer3 + projectDiscoveredLayer3,SSOT)——两侧各写一遍投影,
360
+ // 改一处即静默漂移。
361
+ const discovered = await discoverSkillLayer3(entry.filePath);
362
+ const layer3 = projectDiscoveredLayer3(discovered);
363
+ return {
364
+ name: entry.name,
365
+ description: entry.frontmatter['description'],
366
+ content: entry.body.trim(),
367
+ filePath: entry.filePath,
368
+ // 来源层(agent / project):解析 frontmatter.layer,非法/缺失回退 project(与现状默认一致)。
369
+ // ⚠️ 展示语义不由本字段单独决定:宿主以 filePath 前缀为主判据,
370
+ // 本字段仅在无路径/未命中时兜底(project → 用户源,agent → 内置源)。
371
+ layer: resolveLayer(entry.frontmatter['layer']),
372
+ layer3,
373
+ };
219
374
  }
220
375
  }
221
376
  //# sourceMappingURL=skillManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skillManager.js","sourceRoot":"","sources":["../../src/skill/skillManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skillManager.js","sourceRoot":"","sources":["../../src/skill/skillManager.ts"],"names":[],"mappings":"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"}