@zooique/memora 2.0.3 → 3.0.1

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 +1037 -0
  2. package/README.en.md +305 -272
  3. package/README.md +303 -260
  4. package/config.example.json +43 -0
  5. package/dist/agent/agent.d.ts +376 -408
  6. package/dist/agent/agent.d.ts.map +1 -1
  7. package/dist/agent/agent.js +1166 -926
  8. package/dist/agent/agent.js.map +1 -1
  9. package/dist/agent/assembler.d.ts +105 -43
  10. package/dist/agent/assembler.d.ts.map +1 -1
  11. package/dist/agent/assembler.js +543 -75
  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 +225 -38
  18. package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
  19. package/dist/agent/builtinToolHandlers.js +748 -132
  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 +137 -20
  30. package/dist/agent/constants.d.ts.map +1 -1
  31. package/dist/agent/constants.js +152 -20
  32. package/dist/agent/constants.js.map +1 -1
  33. package/dist/agent/contextManager.d.ts +119 -77
  34. package/dist/agent/contextManager.d.ts.map +1 -1
  35. package/dist/agent/contextManager.js +192 -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 +716 -295
  50. package/dist/agent/loop.d.ts.map +1 -1
  51. package/dist/agent/loop.js +2178 -664
  52. package/dist/agent/loop.js.map +1 -1
  53. package/dist/agent/managers/archiveCoordinator.d.ts +14 -171
  54. package/dist/agent/managers/archiveCoordinator.d.ts.map +1 -1
  55. package/dist/agent/managers/archiveCoordinator.js +19 -287
  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 +31 -115
  62. package/dist/agent/managers/dedupManager.d.ts.map +1 -1
  63. package/dist/agent/managers/dedupManager.js +48 -136
  64. package/dist/agent/managers/dedupManager.js.map +1 -1
  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 +8 -25
  74. package/dist/agent/managers/llmJudgeHelper.d.ts.map +1 -1
  75. package/dist/agent/managers/llmJudgeHelper.js +7 -24
  76. package/dist/agent/managers/llmJudgeHelper.js.map +1 -1
  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 +85 -207
  84. package/dist/agent/managers/memoryAdvisor.js.map +1 -1
  85. package/dist/agent/managers/memoryGovernance.d.ts +10 -42
  86. package/dist/agent/managers/memoryGovernance.d.ts.map +1 -1
  87. package/dist/agent/managers/memoryGovernance.js +19 -36
  88. package/dist/agent/managers/memoryGovernance.js.map +1 -1
  89. package/dist/agent/managers/memoryInspector.d.ts +59 -268
  90. package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
  91. package/dist/agent/managers/memoryInspector.js +91 -442
  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 -68
  98. package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
  99. package/dist/agent/managers/sessionArchiver.js +76 -147
  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 +8 -33
  110. package/dist/agent/managers/streamAccumulator.d.ts.map +1 -1
  111. package/dist/agent/managers/streamAccumulator.js +4 -29
  112. package/dist/agent/managers/streamAccumulator.js.map +1 -1
  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 +9 -41
  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 +55 -100
  122. package/dist/agent/managers/workProjection.d.ts.map +1 -1
  123. package/dist/agent/managers/workProjection.js +164 -268
  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 +236 -10
  158. package/dist/agent/toolExecutor.d.ts.map +1 -1
  159. package/dist/agent/toolExecutor.js +932 -21
  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 +510 -169
  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 +27 -98
  198. package/dist/config/loader.d.ts.map +1 -1
  199. package/dist/config/loader.js +110 -223
  200. package/dist/config/loader.js.map +1 -1
  201. package/dist/index.d.ts +67 -77
  202. package/dist/index.d.ts.map +1 -1
  203. package/dist/index.js +90 -69
  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 +22 -32
  210. package/dist/llm/factory.d.ts.map +1 -1
  211. package/dist/llm/factory.js +29 -46
  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 +179 -120
  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 -31
  226. package/dist/logging/logger.d.ts.map +1 -1
  227. package/dist/logging/logger.js +28 -215
  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 +11 -44
  236. package/dist/memory/governance.d.ts.map +1 -1
  237. package/dist/memory/governance.js +11 -64
  238. package/dist/memory/governance.js.map +1 -1
  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 +25 -175
  252. package/dist/memory/inMemoryStorage.d.ts.map +1 -1
  253. package/dist/memory/inMemoryStorage.js +32 -221
  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 +2 -2
  260. package/dist/memory/lockManager.d.ts.map +1 -1
  261. package/dist/memory/lockManager.js +6 -8
  262. package/dist/memory/lockManager.js.map +1 -1
  263. package/dist/memory/projectManager.d.ts +30 -129
  264. package/dist/memory/projectManager.d.ts.map +1 -1
  265. package/dist/memory/projectManager.js +39 -189
  266. package/dist/memory/projectManager.js.map +1 -1
  267. package/dist/memory/projectRegistry.d.ts +14 -62
  268. package/dist/memory/projectRegistry.d.ts.map +1 -1
  269. package/dist/memory/projectRegistry.js +27 -111
  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 +10 -12
  284. package/dist/memory/sourceValidation.d.ts.map +1 -1
  285. package/dist/memory/sourceValidation.js +16 -32
  286. package/dist/memory/sourceValidation.js.map +1 -1
  287. package/dist/memory/storageInterface.d.ts +44 -150
  288. package/dist/memory/storageInterface.d.ts.map +1 -1
  289. package/dist/memory/types.d.ts +65 -164
  290. package/dist/memory/types.d.ts.map +1 -1
  291. package/dist/memory/types.js +81 -83
  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 +136 -19
  342. package/dist/skill/skillManager.d.ts.map +1 -1
  343. package/dist/skill/skillManager.js +312 -61
  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 -16
  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 +40 -72
  366. package/dist/utils/configResourceManager.d.ts.map +1 -1
  367. package/dist/utils/configResourceManager.js +78 -76
  368. package/dist/utils/configResourceManager.js.map +1 -1
  369. package/dist/utils/errors.d.ts +44 -69
  370. package/dist/utils/errors.d.ts.map +1 -1
  371. package/dist/utils/errors.js +54 -71
  372. package/dist/utils/errors.js.map +1 -1
  373. package/dist/utils/eventEmitter.d.ts +104 -103
  374. package/dist/utils/eventEmitter.d.ts.map +1 -1
  375. package/dist/utils/eventEmitter.js +37 -45
  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 +2 -3
  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 +25 -3
  396. package/dist/utils/math.d.ts.map +1 -1
  397. package/dist/utils/math.js +32 -16
  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 -19
  416. package/dist/utils/segmenter.d.ts.map +1 -1
  417. package/dist/utils/segmenter.js +230 -97
  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 +416 -476
  458. package/docs/memora-/346/216/245/345/205/245/346/214/207/345/215/227.md +841 -806
  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 -100
  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 -49
  503. package/dist/agent/guardrail.d.ts.map +0 -1
  504. package/dist/agent/guardrail.js +0 -59
  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 -146
  509. package/dist/agent/managers/autoConfigRefiner.js.map +0 -1
  510. package/dist/agent/managers/configManager.d.ts +0 -209
  511. package/dist/agent/managers/configManager.d.ts.map +0 -1
  512. package/dist/agent/managers/configManager.js +0 -331
  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 -239
  519. package/dist/agent/managers/memoryDecayScheduler.d.ts.map +0 -1
  520. package/dist/agent/managers/memoryDecayScheduler.js +0 -413
  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 -88
  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 -79
  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 -50
  551. package/dist/memory/hybridMerge.d.ts.map +0 -1
  552. package/dist/memory/hybridMerge.js +0 -51
  553. package/dist/memory/hybridMerge.js.map +0 -1
  554. package/dist/memory/inMemoryRelationStore.d.ts +0 -58
  555. package/dist/memory/inMemoryRelationStore.d.ts.map +0 -1
  556. package/dist/memory/inMemoryRelationStore.js +0 -80
  557. package/dist/memory/inMemoryRelationStore.js.map +0 -1
  558. package/dist/memory/loader.d.ts +0 -51
  559. package/dist/memory/loader.d.ts.map +0 -1
  560. package/dist/memory/loader.js +0 -100
  561. package/dist/memory/loader.js.map +0 -1
  562. package/dist/memory/recall.d.ts +0 -82
  563. package/dist/memory/recall.d.ts.map +0 -1
  564. package/dist/memory/recall.js +0 -157
  565. package/dist/memory/recall.js.map +0 -1
  566. package/dist/memory/relationStore.d.ts +0 -95
  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 -71
  571. package/dist/memory/store.d.ts.map +0 -1
  572. package/dist/memory/store.js +0 -199
  573. package/dist/memory/store.js.map +0 -1
  574. package/dist/memory/userProfile.d.ts +0 -180
  575. package/dist/memory/userProfile.d.ts.map +0 -1
  576. package/dist/memory/userProfile.js +0 -381
  577. package/dist/memory/userProfile.js.map +0 -1
  578. package/dist/memory/vectorStore.d.ts +0 -179
  579. package/dist/memory/vectorStore.d.ts.map +0 -1
  580. package/dist/memory/vectorStore.js +0 -284
  581. package/dist/memory/vectorStore.js.map +0 -1
  582. package/dist/persona/personaManager.d.ts +0 -109
  583. package/dist/persona/personaManager.d.ts.map +0 -1
  584. package/dist/persona/personaManager.js +0 -315
  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
@@ -0,0 +1,243 @@
1
+ # 角色包作者填写指南(manifest.json 实操)
2
+
3
+ > **面向对象**:为 memora 及其宿主编写角色包(role pack)的开发者。
4
+ > **定位**:本指南回答「manifest.json 怎么写、每个键填什么、填错了会怎样」;中立规范见 [role-pack-spec.md](./role-pack-spec.md)(面向所有 Agent 实现的契约)。
5
+ > **区间 SSOT**:所有数值键的上下限以 `src/role-pack/strategyKeys.ts` 为唯一真理源,本表与之一致;如需调区间只改源码常量,并同步本表。
6
+
7
+ ***
8
+
9
+ ## 一、manifest.json 结构速览
10
+
11
+ 角色包 = 一个文件夹 + `manifest.json`(唯一核心控制文件)+ 内容文件(约定俗成,不注册路径):
12
+
13
+ ```
14
+ 角色包名/
15
+ ├── manifest.json # ★ 元数据 + strategy 策略 + capabilities + skills 白名单
16
+ ├── persona.md # 角色身份设定(可缺省,缺省则无身份仅靠策略驱动)
17
+ ├── rules.md # 确定性规则(列表逐条 / 段落合并一条,见 §二.4)
18
+ └── skills/ # 技能目录(动态扫描,新增技能只写文件即可)
19
+ ```
20
+
21
+ `manifest.json` 最小可用示例:
22
+
23
+ ```json
24
+ {
25
+ "name": "plain-designer",
26
+ "displayName": "白话方案设计师",
27
+ "description": "白话方案设计角色包",
28
+ "version": "1.0.0",
29
+ "formatVersion": "1.0.0",
30
+ "interactionType": "tool_assistant",
31
+ "strategy": {
32
+ "prepare": { "summaryFocus": "以方案设计视角提炼要点" },
33
+ "act": { "toolMode": "allow", "temperature": 0.3 },
34
+ "reflect": { "selfReview": 1 },
35
+ "global": { "contextLimit": 0, "stepBudget": 60 }
36
+ },
37
+ "capabilities": [
38
+ { "capability": "file:write", "description": "写文件" },
39
+ { "capability": "web:search", "description": "搜索" }
40
+ ],
41
+ "handoffPrompt": "你好,我是白话方案设计师,请告诉我你想解决什么模糊想法或痛点。"
42
+ }
43
+ ```
44
+
45
+ ***
46
+
47
+ ## 二、顶层字段(元数据 + 合规)
48
+
49
+ | 键 | 类型 | 必填 | 默认 | 说明 |
50
+ | ---------------------- | ------------------------------ | -- | ---------------- | ------------------------------------------------------- |
51
+ | `name` | string | ✅ | 无 | 唯一标识(缺失则用文件夹名兜底);≤200 字符 |
52
+ | `displayName` | string | 否 | `name` | UI 展示名,缺省回退 `name`;≤200 字符 |
53
+ | `description` | string | 否 | 无 | 角色包描述;≤200 字符 |
54
+ | `version` | string | 否 | 无 | 建议 semver(`1.0.0`) |
55
+ | `formatVersion` | string | 否 | `1.0.0` | 声明则须 semver;版本兼容拒绝行为 **[预留·未实现]**(见规范 §五 注记) |
56
+ | `author` | string | 否 | 无 | 作者/来源;≤200 字符 |
57
+ | `interactionType` | `tool_assistant` / `companion` | 否 | `tool_assistant` | companion 触发全量强校验 |
58
+ | `aiIdentityDisclosure` | boolean | 否 | `true` | companion 必须显式 `true` |
59
+ | `minorProtection` | `required` | 否 | `required` | 未成年人保护钩子,仅支持 `required` |
60
+ | `handoffPrompt` | string | 否 | 无 | 被带入对话时预填的接手话术;≤2000 字符 |
61
+ | `skills` | 对象数组 | 否 | 无 | 技能白名单(`{ file, name?, description? }`);不声明则全量扫描;最多 50 项 |
62
+ | `capabilities` | 对象数组 | 否 | `[]` | 特权能力声明(`{ capability, description? }`);最多 50 项;`[]` = 仅默认常驻工具 |
63
+ | `strategy` | 嵌套对象 | 否 | 全局默认 | L2 行为策略(见 §三) |
64
+
65
+ > **content 零声明**:`persona.md` / `rules.md` / `skills/` 全部约定俗成,manifest **不注册内容路径**(防路径写错静默丢内容)。
66
+ >
67
+ > **字段上限 SSOT**:上表的数量/长度上限以 `src/role-pack/validator.ts` 为唯一真理源(`MAX_MANIFEST_SKILLS` / `MAX_CAPABILITIES` / `MAX_HANDOFF_PROMPT_LEN` / `MAX_META_STRING_LEN`)。超限时校验报 error(开发期拒绝、跳过装载);运行时兜底**仅 `handoffPrompt`** 按 `MAX_HANDOFF_PROMPT_LEN` 截断(宽容容错),其余上限无运行时消费(2026-09-19 订正原「运行时按上限截断兜底」泛化失实)。
68
+
69
+ ### 2.4 rules.md 写法(ADR-025 档 3:规则语义对齐)
70
+
71
+ `rules.md` 是**确定性规则**——装载时全量注入 system prompt,不可丢失。解析支持常见 Markdown 写法(见 `rolePackManager.ts parseRules`):
72
+
73
+ | 写法 | 解析结果 | 示例 |
74
+ | ----------------------------------------------------- | ------------- | --------------- |
75
+ | **列表行**(`-` / `*` / `1.`) | 逐条成为规则(推荐写法) | `- 不泄露用户密钥` |
76
+ | **连续段落文本** | 整段合并为**一条**规则 | 两行普通文字 → 一条完整规则 |
77
+ | **引用块**(`>`) | 去 `>` 后按段落处理 | `> 修改前先询问用户` |
78
+ | **标题**(`#`)/ **代码块** / **HTML 注释** / **表格** / **分隔线** | 不作为规则(段落边界) | — |
79
+
80
+ **推荐**:规则用**列表写**(每条一行,语义独立、可读性强);长段说明自然写成段落,会被合并为一条完整规则。写作时避免把示例代码/表格塞进 rules.md(会被忽略)——需要代码/资源放 `skills/` 目录(渐进披露 L3)。
81
+
82
+ ### 2.5 技能使用引导(persona/rules 里明确"何时用")
83
+
84
+ > **推荐(2026-09-13 双锚点结论)**:角色包每内置一个 `skills/*.md`,都应在设定文本(persona.md 工作流程 / rules.md 纪律)里为它补一处**「使用时机」引导**——明示「什么情况使用这个 skill」。
85
+
86
+ **为什么**:技能元数据虽由内核从 `skills/` 目录自动注入(L1 清单,即技能三级渐进披露的「目录扫描」层;完整三级模型见仓库内 `docs/architecture/role-pack-skills-progressive-disclosure.md`,非随包文档),但那是扁平 name+description;LLM 的"何时调用"判断若只靠猜 description 是脆弱的。把触发场景写进 persona/rules,调用决策由**场景契约**驱动。能力定义仍以技能文件为唯一真理源,设定文本只写"何时用"、不复述怎么做。
87
+
88
+ **写法示例**(取自共鸣小说家):
89
+ - persona 工作流程挂到对应阶段:`阶段6 大纲与成文(…+ dialogue-craft + …)——对白即行动、带潜台词`
90
+ - rules 写成触发式纪律:`- 伏笔必须回收:…(用 foreshadow 维护埋点清单:埋得轻、收得重、埋收必对)`
91
+
92
+ **覆盖完整性(强推荐自查)**:收录后逐个核对——每个内置 skill 在 persona/rules **至少有一处**标注使用时机(**引用须用反引号包裹技能名**,形式见 §2.6)。未标注的技能会沦为"存在但永不调用"的僵尸技能(共鸣小说家最初 5 个技能零引用即此缺口;白话方案设计师曾 6/6 全部零引用)。内核已由 `src/role-pack/__tests__/builtinPackCoverage.test.ts` 自动守卫:扫描 `role-packs/*/skills/*.md`,任一技能在所属包 persona/rules 零引用即红;**反向**(引用指向不存在的技能 = 改名残留的悬空引用)同由此守卫拦截。
93
+
94
+ **命名避撞(约定,非校验项)**:技能名避免与 manifest `strategy` 策略键**语义重复**(例:技能 `self-review` 与 `reflect.selfReview`)。二者运行时完全隔离,但同名近义会让作者与 LLM 分不清「设定内容」与「行为开关」。此类冲突是语义层的,**字面校验抓不到**(技能名 kebab-case 与策略键 camelCase 永不相等,同名检测会是永远绿的装饰性断言),故仅在此约定,不进 `validator`。
95
+
96
+ ### 2.6 技能引用规范(设定文本里怎么「点名」技能)
97
+
98
+ > **规范(2026-09-14 定稿)**:设定文本(`persona.md` / `rules.md`)里引用技能时,**用反引号把技能名括起来**——例如 `foreshadow`、`dialogue-craft`。这是技能引用的**唯一合法形式**。
99
+
100
+ **为什么要有「形式」约束**:技能名是**契约**——它既是文件名(`skills/<name>.md` 或 `skills/<name>/SKILL.md`),又是设定文本里的引用名。改名(例:`self-review` → `craft-review`)若不改引用,就留下**悬空引用**。要让悬空引用可被机器发现,引用就必须有**确定性形式**——自然语言里的裸 kebab 词(如 `local-first`)与技能名无法区分,正则必然误判。
101
+
102
+ **三条约定**:
103
+
104
+ 1. **技能名 = kebab-case**(小写字母 / 数字 / 连字符),且与文件名(单文件形态 `skills/x.md`)或目录名(文件夹形态 `skills/x/SKILL.md`)严格一致。**改名 = 破坏性变更**,须同步全部引用。
105
+ 2. **引用形式 = 反引号包裹技能名**,可出现在任意语境:
106
+ - persona 工作流程:阶段6 大纲与成文(`outline-expand` + `dialogue-craft` + …)
107
+ - rules 触发式纪律:伏笔必须回收——埋得轻、收得重(用 `foreshadow` 维护埋点清单)
108
+ 3. **保留字规则**:`persona.md` / `rules.md` 里**反引号包裹的 kebab 词一律判定为技能引用**——所以这两个文件里不要反引号包裹非技能标识(如 `local-first`、`role-pack-spec`),需要提到时写普通文本。
109
+
110
+ **双向守卫**(`src/role-pack/__tests__/builtinPackCoverage.test.ts`;两个方向**共用同一个引用提取器**,SSOT):
111
+
112
+ | 方向 | 断言 | 防的是 |
113
+ | --- | --- | --- |
114
+ | 正向 | 每个内置技能至少被引用一次 | 「存在但永不调用」的僵尸技能 |
115
+ | 反向 | 每条引用都指向真实存在的技能 | 改名后残留的**悬空引用** |
116
+
117
+ **行业依据(2026-09-14 外部调研)**:Anthropic 官方 Skill authoring best practices 要求 `name` 只用小写字母 / 数字 / 连字符,并指出**一致的命名让技能更容易被引用与讨论**;Agent Skills 规范(agentskills.io)要求 `name` **必须与父目录名一致**;社区约定进一步把已发布的技能名当作 **API 契约——改名属 semver-major 变更**。本规范即把该契约收敛为「引用必须可机器校验」。
118
+
119
+ **关于全局技能池(`<configDir>/skills/`)的引用**(2026-09-22 补充):上述约定**对两类技能统一适用**——全局技能池的 `name` 同样是 **kebab 且与文件名一致**(当前内置 4 个:`code-review` / `summarize` / `web-search` / `role-pack-creator`),引用形式完全相同(反引号包裹技能名)。
120
+
121
+ ⚠️ **但不要在角色包设定文本里引用全局技能**:双向守卫的视野**只覆盖仓库根 `role-packs/`**(`builtinPackCoverage.test.ts` 的 `ROLE_PACKS_DIR`),看不到宿主全局技能池 ⇒ 引用全局技能会被**反向守卫判成悬空引用**(测试红)。全局技能靠 L1 清单被模型发现即可,无需设定文本引导。(当前三个内置包对全局技能零引用,符合此约定。)
122
+
123
+ ***
124
+
125
+ ## 三、strategy 策略键(逐键填写指导)
126
+
127
+ ### 3.1 prepare 组(回答前·认知)
128
+
129
+ > **阶段2(2026-09-09,memory-tool-recall-design)注记**:本组 6 个召回键 `memoryRecall` / `memoryRecallPercent` / `minFallback` / `contextAssembly` / `recallConfidence` / `summaryRecall` 已**整体退役**——记忆纯工具化召回后,prepare 无自动注入消费端,6 键与解析函数/常量一并移除。记忆检索改由 `memory_search` 工具触发(`source` 过滤承接 `summaryRecall` 语义);上下文装配恒为 hybrid。**召回保底机制亦已彻底退役**(2026-09-10 剪枝:`DEFAULT_MIN_FALLBACK` 随 `recall()` 召回编排一并删除,见 memory-tool-recall-design 补记)。**记忆层 cap 常数 `DEFAULT_MEMORY_CAP_RATIO` 亦已于 2026-09-10 删除**(G39 P2-2:自动注入退役后无约束消费者)——现行预算模型无记忆维度。**`understandingConfirm` 亦已回收(2026-09-13,turn-intent-reasoning-design Part 3)**——confirm 并入 `askOn['confirm']`/ask_user 通道,echo 由内核 Turn 起始策略覆盖,不再作为开放键。本组现存 1 键:
130
+
131
+ | 键 | 类型 / 枚举 | 合法区间 | 默认 | 含义 | 示例 |
132
+ | `summaryFocus` | string | `1 ~ 500` 字符 | 无 | 提炼视角:决定 round-summary「值得记什么」 | `"聚焦架构决策与接口契约"` |
133
+
134
+ ### 3.2 act 组(回答中·行动)
135
+
136
+ | 键 | 类型 / 枚举 | 合法区间 | 默认 | 含义 | 示例 |
137
+ | -------------------- | ----------------------------- | ------------------ | ----------- | ------------- | ----------------- |
138
+ | `toolMode` | `allow` / `block` | — | `allow` | 是否允许工具调用 | `"block"` |
139
+ | `temperature` | number | `0.0 ~ 2.0` | `0.7` | 生成随机性 | `0.3` |
140
+ | `outputLimit` | 整数 | `0 ~ 65536`(token) | `0`(不干预) | 单轮回答长度上限(0=不干预,与 per-LLM 配置取更小值语义下不设额外上限) | `8192` |
141
+ | `toolStepLimit` | 整数 | `0 ~ 100`(0=无限制) | `20` | 单轮工具调用步数上限 | `30` |
142
+ | `providerRouting` | `auto` / `fixed` | — | `auto` | Provider 路由策略 | `"fixed"` |
143
+ | `multiStepReasoning` | `auto` / `manual` | — | `auto` | 多步推理模式 | `"manual"` |
144
+ | `toolReadonly` | `full` / `readonly` | — | `full` | 工具操作范围 | `"readonly"` |
145
+
146
+ ### 3.3 reflect 组(回答后·沉淀)
147
+
148
+ | 键 | 类型 / 枚举 | 合法区间 | 默认 | 含义 | 示例 |
149
+ | -------------- | ----------------------- | -------------- | -------- | ------------------------------------------------------------------------- | -------- |
150
+ | `summary` | `on` / `off` | — | `on` | 是否生成轮次摘要 | `"off"` |
151
+ | `selfReview` | 整数 | `0 ~ 10`(布尔数字:0=关闭,>0 收敛为 1) | `0` | 自审查开关(布尔数字,2026-09-12 定案):**0=不自审查,正整数 >0 一律收敛为 1=自审查一次(大于 1 算 1)**。当且仅当本 turn **执行过工具步**(多 step)后做一次终审;纯文本一遍问答不触发;审查应答为满意短确认(如"无需修改")时立即终止 | `1` |
152
+ | `userFollowup` | `ask` / `silent` | — | `silent` | 用户追问策略 | `"ask"` |
153
+
154
+ ### 3.4 global 组(跨阶段·全局)
155
+
156
+ | 键 | 类型 / 枚举 | 合法区间 | 默认 | 含义 | 示例 |
157
+ | --------------- | ---------------------------- | -------------------- | ------------------------------------- | ------------- | --------------------------- |
158
+ | `askOn` | 数组(元素见下) | 1\~4 个元素 | `[ambiguity, decision, missing_info]` | 主动提问触发场景(可组合) | `["ambiguity", "decision"]` |
159
+ | `askLimit` | 整数 | `1 ~ 10` | `10` | 每轮主动提问次数上限 | `2` |
160
+ | `errorHandling` | `retry` / `degrade` / `stop` | — | `retry` | 异常处理策略 | `"degrade"` |
161
+ | `contextLimit` | 整数 | `0` 或 `120000 ~ 2000000` | 未声明→`0`(跟随 provider 窗口) | 角色包上下文上限(**推荐 0**) | `0` |
162
+ | `stepBudget` | 整数 | `0 ~ 500`(0=兜底,非不限) | `50` | 每轮工具步数上限(0=走内核 maxIterations 兜底,无「不限」路径) | `60` |
163
+
164
+ > `askOn` 元素枚举:`ambiguity`(模糊)/ `decision`(需决策)/ `missing_info`(缺信息)/ `confirm`(需确认)。
165
+ > `userFollowup` 须为 `ask` 时 `askOn`/`askLimit` 才生效。
166
+ > `contextLimit` 为**角色包级**的上下文上限:与 provider 窗口**取小值**后成为**有效窗口**(截断 / 软上限 / 占用快照均按有效窗口计算),超限时在**截断层裁剪、不终止本轮**。三点须知:
167
+ > 1. **推荐填 0**(内置示例包即如此):`0` 或未声明 = 不设额外上限,有效窗口 = provider 窗口;要整体缩小上下文规模也可直接调 provider 配置;
168
+ > 2. **典型用法**:provider 声明 1M,但某角色只需 300k → 该角色声明 `300000`,有效窗口取小值 300k,把模型能力留给真正需要的角色;
169
+ > 3. **只会取小、绝不放大**:声明值大于 provider 窗口时按 provider 窗口算;**终止职责归 `stepBudget`**,本键只管规模。
170
+
171
+ ***
172
+
173
+ ## 四、数值键区间总表(内核统一上下限)
174
+
175
+ > 所有开放给角色包填写的**数值键均有上下限**,由内核统一控制(SSOT:`src/role-pack/strategyKeys.ts`)。
176
+ > **下限**防负值/零值语义错误,**上限**防资源失控(token/步数/轮数)或业务荒谬值。
177
+
178
+ | 键 | 下界 | 上界 | 越界行为(validator) | 越界行为(运行时) |
179
+ | --------------------- | ---- | ------- | --------------- | ------------------ |
180
+ | `summaryFocus` | 1 字符 | 500 字符 | error | 回退 undefined(通用浓缩) |
181
+ | `temperature` | 0 | 2 | error | 忽略不注入 |
182
+ | `outputLimit` | 0 | 65536 | error | 忽略不注入 |
183
+ | `toolStepLimit` | 0 | 100 | error | 回退默认 `0`(无限制) |
184
+ | `selfReview` | 0 | 10 | error | 回退 `0`(关闭) |
185
+ | `askLimit` | 1 | 10 | error | 回退默认 `10` |
186
+ | `contextLimit` | 0 | 2000000 | error | 回退 `0`(跟随 provider 窗口) |
187
+ | `stepBudget` | 0 | 500 | error | 回退默认 `50` |
188
+
189
+ > `contextLimit` / `stepBudget` / `outputLimit` 的 `0` 是**特殊合法值**(=不干预/不声明,与不写该键等价),正数声明须落在各自详表区间(§3.4:`contextLimit` 正数 ∈ [120000, 2000000]、`stepBudget` 正数 ∈ [10, 500]、`outputLimit` 正数 ∈ [1, 65536])——两端之间的中间数(如 `contextLimit: 50000`)**非法**。三个上限键共用同一条心智规则:**不写 = 默认立场;写 0 = 让路(听下一层真相源);写正数 = 显式上限**。
190
+
191
+ ***
192
+
193
+ ## 五、校验行为(填错了会怎样)
194
+
195
+ | 情况 | 级别 | 行为 |
196
+ | ------------------------------------- | ------- | ---------------------- |
197
+ | 缺失 `name` / `formatVersion` 非法 | error | 校验不通过(当前装载器警告降级,不拒绝装载) |
198
+ | 枚举键取值不在枚举内 | error | 校验不通过;运行时归位内核默认 |
199
+ | 数值键越界(超出上下限) | error | 校验不通过;运行时回退内核默认/忽略 |
200
+ | 未知顶层键 / 未知策略阶段 / 未知策略键 | warning | 警告并忽略,不阻塞装载(键级渐进) |
201
+ | `capabilities` 格式非法(非 `域:动作`) | error | 校验不通过 |
202
+ | companion 缺 AI 身份/未声明 minorProtection | error | 校验不通过 |
203
+ | companion 正文含虚拟亲属/伴侣红线词 | error | 拒绝装载 |
204
+
205
+ > 数值键越界报错信息会带合法区间提示,如:
206
+ > `strategy.global.contextLimit 取值 50000 不符合约束,合法区间 0 或 [120000, 2000000]`
207
+
208
+ ***
209
+
210
+ ## 六、键的落实状态(哪些声明生效)
211
+
212
+ | 状态 | 含义 | 键 |
213
+ | ----------- | ----------- | ------------- |
214
+ | **已消费(冻结)** | 内核真实读取并影响行为 | 上述 §三 全部 16 键(prepare 1 / act 7 / reflect 3 / global 5) |
215
+
216
+ > 全部策略键现均已落地,无纯预留死键。`understandingConfirm` 已回收(2026-09-13,turn-intent-reasoning-design Part 3):confirm 并入 `askOn['confirm']`/ask_user 工具通道,echo 由内核 Turn 起始策略指令覆盖——确认场景统一走 ask_user 单一通道,不再作为开放键。已撤键先例:`costBudget`(2026-08-28,内核无定价能力、宿主无执行者)、`taskLoopLimit`(2026-09-06,多 turn 编排删除 + 会议确定性预置退役后无常量消费方)、prepare 召回策略键族 6 键(2026-09-09 阶段2,记忆纯工具化召回后无自动注入消费端)、`toolApproval`(2026-09-11,审批链无执行方的展示性假承诺)、`streaming`(2026-09-11,写而不读的假旋钮——内核 provider 恒 `stream:true`)、`loopContinue`(2026-09-11,v0.13- 别名;安装基数 0 → 兼容防的是从未发生的场景,按版本契约分面「作者输入面可不兼容」删除)——**无消费者 / 无真实兼容对象的策略键不保留**。诚实化声明见 `src/role-pack/types.ts` `BehaviorStrategy` 注释。
217
+
218
+ ***
219
+
220
+ ## 七、常见错误与修正
221
+
222
+ | ❌ 错误写法 | ✅ 正确写法 | 原因 |
223
+ | --------------------------------------------------- | ------------------------------------------------ | --------------------- |
224
+ | `"outputLimit": 999999` | `"outputLimit": 8192` | 越上界 `65536`,防输出失控 |
225
+ | `"contextLimit": -100` | `"contextLimit": 0` | 负值非法,应为 `0 ~ 1000000`;推荐 `0`(不限制) |
226
+ | `"selfReview": 999` | `"selfReview": 1` | 越上界 `10` 非法;布尔数字语义下任意正整数只表示"自审查一次",写 `1` 最清晰 |
227
+ | `"capabilities": [{"capability": "WriteFile"}]` | `"capabilities": [{"capability": "file:write"}]` | 能力名必须 `域:动作` 小写格式 |
228
+ | `"strategy": { "prepare": { "unknownKey": true } }` | 去掉该键 | 未知键 warning + 忽略,不生效 |
229
+
230
+ ***
231
+
232
+ ## 八、参考
233
+
234
+ * 中立规范(跨实现契约):[role-pack-spec.md](./role-pack-spec.md)
235
+
236
+ * 示例角色包(结构参考,不参与分发):[role-packs/](../../role-packs/README.md)
237
+
238
+ * 区间常量 SSOT:`src/role-pack/strategyKeys.ts`
239
+
240
+ * 运行时解析与兜底:`src/role-pack/strategyResolver.ts`
241
+
242
+ * 格式校验器:`src/role-pack/validator.ts`
243
+