@zooique/memora 2.0.3 → 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 -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,304 @@
1
+ /**
2
+ * 角色包行为策略解析器:集中管理行为策略的默认值、解析(resolve*)、合并与装配逻辑。
3
+ */
4
+ // role-pack 与 memory 层均不持有召回保底(记忆纯工具化召回,无自动注入通道)。
5
+ // 数值键上下限常量(SSOT):validator 与 resolver 共用同一区间来源,越界值回退内核默认
6
+ import { DEFAULT_MAX_ITERATIONS, ERROR_HANDLINGS, MAX_ASK_LIMIT, MAX_SELF_REVIEW_ROUNDS, MAX_STEP_BUDGET, MAX_SUMMARY_FOCUS_LENGTH, MAX_CONTEXT_LIMIT, MIN_CONTEXT_LIMIT, MIN_STEP_BUDGET, MAX_TOOL_STEP_LIMIT, MULTI_STEP_REASONINGS, PROVIDER_ROUTINGS, SUMMARY_MODES, TOOL_MODES, TOOL_READONLY_MODES, } from './strategyKeys.js';
7
+ // ════════════════════════════════════════════════════════════
8
+ // 默认值常量
9
+ // ════════════════════════════════════════════════════════════
10
+ // ════════════════════════════════════════════════════════════
11
+ // 默认值常量(角色包层的兜底默认——角色包不声明时走这里,
12
+ // loop 构造时 opts.maxIterations 也用同一个 DEFAULT_MAX_ITERATIONS 源头对齐)
13
+ // ════════════════════════════════════════════════════════════
14
+ // 无记忆召回相关默认常量(memoryRecallPercent/recallConfidence 等)——记忆纯工具化召回,
15
+ // prepare 无自动注入消费端,策略层不解析召回参数。
16
+ /**
17
+ * 行为策略全局默认值——未配置的维度使用全局默认值,角色包只声明它想改变的部分。
18
+ * const 断言确保类型推导为字面量值。
19
+ */
20
+ export const DEFAULT_BEHAVIOR_STRATEGY = {
21
+ prepare: {
22
+ summaryFocus: undefined, // undefined = 通用浓缩(角色包未声明时使用默认摘要策略)
23
+ },
24
+ act: {
25
+ toolMode: 'allow',
26
+ toolReadonly: 'full',
27
+ toolStepLimit: 20,
28
+ temperature: 0.7,
29
+ /**
30
+ * 输出上限:0 = **不干预**(→ 回服务端默认 / 听 per-LLM 配置),正数 = 显式上限。
31
+ * 与 `global.contextLimit: 0` / `global.stepBudget: 0` **同构**:三个「上限类」键统一表示法
32
+ * ——0 承载"未声明"语义、正数走声明区间 [1, MAX_OUTPUT_LIMIT]、消费点以 `> 0` 判让位。
33
+ * 消费点(agent.buildChatOptionsFromStrategy)已有 `> 0` 守卫 ⇒ 写 0 ≡ 不写。
34
+ * 旧默认 4096 会把**未声明**的角色包也硬限到 4096——那是隐形天花板(用户面板配 64K 也无效,
35
+ * 且取证面看不出来)。未声明 = 作者无意限制,不该由内核替他限制。
36
+ */
37
+ outputLimit: 0,
38
+ providerRouting: 'auto',
39
+ multiStepReasoning: 'auto',
40
+ },
41
+ reflect: {
42
+ selfReview: 0,
43
+ summary: 'on',
44
+ userFollowup: 'silent',
45
+ },
46
+ global: {
47
+ contextLimit: 0, // 0 = 不设额外上限(有效窗口 = provider 窗口);非法/越界值同样回退 0
48
+ // 0 或未声明 → 内核兜底 DEFAULT_MAX_ITERATIONS(无「不限步数」路径,符合防死循环设计)
49
+ stepBudget: 0,
50
+ errorHandling: 'retry',
51
+ askOn: ['ambiguity', 'decision', 'missing_info'],
52
+ askLimit: 10,
53
+ },
54
+ };
55
+ // ════════════════════════════════════════════════════════════
56
+ // 辅助函数
57
+ // ════════════════════════════════════════════════════════════
58
+ /**
59
+ * 从角色包管理器推导当前激活的 L2 行为策略(SSOT 单一真理源)。
60
+ *
61
+ * 激活角色包策略优先,未激活/无管理器回退全局默认。本函数是「激活策略」推导的
62
+ * 唯一实现,contextPreparer 与 seed 编排器经此统一取策略,杜绝跨模块镜像重复。
63
+ *
64
+ * @param rolePackManager 角色包管理器(可为 null)
65
+ * @param override 宿主装配级策略覆盖(可选):**压过角色包声明**,表达宿主产品能力边界。
66
+ * 只影响 override 声明过的键(无内置示例键;无自动匹配链,机制保留)。
67
+ * @returns 当前激活行为策略(含装配级覆盖)
68
+ */
69
+ export function resolveActiveStrategy(rolePackManager, override) {
70
+ const base = rolePackManager?.getActive()?.strategy ?? DEFAULT_BEHAVIOR_STRATEGY;
71
+ // 合并逻辑复用 mergeStrategy(单一 SSOT)——消解与通用合并的两处手写同形实现(双轨漂移隐患)
72
+ return mergeStrategy(base, override);
73
+ }
74
+ /**
75
+ * 枚举值合法性收窄(SSOT 兜底):角色包 L2 键是枚举开关,非法拼写不应静默透传
76
+ * (非法枚举会污染行为分支或注入 persona prompt),统一归位到内核默认。
77
+ */
78
+ function normalizeEnum(value, allowed, fallback) {
79
+ return typeof value === 'string' && allowed.includes(value)
80
+ ? value
81
+ : fallback;
82
+ }
83
+ // ════════════════════════════════════════════════════════════
84
+ // 策略解析函数 (resolve*)
85
+ // ════════════════════════════════════════════════════════════
86
+ // 无自动注入召回解析函数(键族不存在,见 types.ts 文件头注)。
87
+ /**
88
+ * 解析角色包提炼视角(SSOT):非空字符串且 ≤ MAX_SUMMARY_FOCUS_LENGTH 字符才采用,
89
+ * 缺失/空白/超长回退 undefined(通用浓缩)。
90
+ * 领域无关机制:内核只提供注入能力,视角全文由角色包提供;未声明时 round-summary 行为与现状一致(JSON 与 SummaryType 硬契约保留)。
91
+ */
92
+ export function resolveSummaryFocus(strategy) {
93
+ const candidate = strategy?.prepare?.summaryFocus;
94
+ return typeof candidate === 'string' &&
95
+ candidate.trim().length > 0 &&
96
+ candidate.length <= MAX_SUMMARY_FOCUS_LENGTH
97
+ ? candidate.trim()
98
+ : undefined;
99
+ }
100
+ /** 解析工具调用模式(SSOT):非法值归位 'allow'(白名单引用 strategyKeys.TOOL_MODES,防漂移) */
101
+ export function resolveToolMode(strategy) {
102
+ return normalizeEnum(strategy?.act?.toolMode, TOOL_MODES, 'allow');
103
+ }
104
+ /** 解析摘要生成开关(内核已消费):非法值归位 'on'(白名单引用 strategyKeys.SUMMARY_MODES) */
105
+ export function resolveSummary(strategy) {
106
+ return normalizeEnum(strategy?.reflect?.summary, SUMMARY_MODES, 'on');
107
+ }
108
+ /**
109
+ * 解析工具调用步数上限(内核已消费):整数且 ∈ [0, MAX_TOOL_STEP_LIMIT] 才采用,非法/越界回退 0(不限制)。
110
+ * 「未声明」不走本回退——mergeStrategy 已注入默认 act.toolStepLimit=20(DEFAULT_BEHAVIOR_STRATEGY),
111
+ * 激活包未声明时生效 20 而非 0;本回退仅承接显式非法值与 resolveL2Strategy(undefined) 构造期初值。
112
+ */
113
+ export function resolveToolStepLimit(strategy) {
114
+ const candidate = strategy?.act?.toolStepLimit;
115
+ // 合法值:0=无限制,1~MAX_TOOL_STEP_LIMIT=限制步数
116
+ const valid = typeof candidate === 'number' &&
117
+ Number.isInteger(candidate) &&
118
+ candidate >= 0 &&
119
+ candidate <= MAX_TOOL_STEP_LIMIT;
120
+ return valid ? candidate : 0;
121
+ }
122
+ /** 解析错误处理策略(内核已消费):非法值归位 'retry'(白名单引用 strategyKeys.ERROR_HANDLINGS)——retry=自动重试 / degrade=降级文本 / stop=终止抛出错误 */
123
+ export function resolveErrorHandling(strategy) {
124
+ return normalizeEnum(strategy?.global?.errorHandling, ERROR_HANDLINGS, 'retry');
125
+ }
126
+ /**
127
+ * 解析 Provider 路由策略(内核已消费):非法值归位 'auto'(白名单引用 strategyKeys.PROVIDER_ROUTINGS)——auto=按任务类型路由 / fixed=固定当前 Provider
128
+ */
129
+ export function resolveProviderRouting(strategy) {
130
+ return normalizeEnum(strategy?.act?.providerRouting, PROVIDER_ROUTINGS, 'auto');
131
+ }
132
+ /**
133
+ * 解析主动提问次数上限(内核已消费):整数且 ∈ [1, MAX_ASK_LIMIT] 才采用,缺失/越界回退默认 10。
134
+ * ask_user 工具的 turn 粒度硬护栏取值(SSOT:assembleRolePack 的 prompt 引导与 loop 拦截共用)。
135
+ */
136
+ export function resolveAskLimit(strategy) {
137
+ const candidate = strategy?.global?.askLimit;
138
+ const valid = typeof candidate === 'number' &&
139
+ Number.isInteger(candidate) &&
140
+ candidate >= 1 &&
141
+ candidate <= MAX_ASK_LIMIT;
142
+ // 非法/缺失回退到 DEFAULT_BEHAVIOR_STRATEGY 的 askLimit(SSOT 单点:不再硬编码 3)
143
+ return valid ? candidate : DEFAULT_BEHAVIOR_STRATEGY.global.askLimit;
144
+ }
145
+ /**
146
+ * 解析角色包上下文上限。合法 = `0`(不设额外上限)或整数 ∈ [MIN_CONTEXT_LIMIT, MAX_CONTEXT_LIMIT];
147
+ * 其余(未声明 / 越界 / 小数 / 非数)→ 0(不设额外上限,有效窗口 = provider 窗口)。
148
+ */
149
+ export function resolveContextLimit(strategy) {
150
+ const candidate = strategy?.global?.contextLimit;
151
+ const valid = typeof candidate === 'number' &&
152
+ Number.isInteger(candidate) &&
153
+ (candidate === 0 || (candidate >= MIN_CONTEXT_LIMIT && candidate <= MAX_CONTEXT_LIMIT));
154
+ return valid ? candidate : 0;
155
+ }
156
+ /** 解析步数预算:0 或未声明 → DEFAULT_MAX_ITERATIONS 兜底;stepBudget ∈ {0} ∪ [MIN_STEP_BUDGET, MAX_STEP_BUDGET]
157
+ * 按声明采用(与 validator 区间同一来源,防双轨镜像)。不存在「不限步数」路径——0 在 loop 侧等同未声明(effectiveMax 取 maxIterations 兜底)。 */
158
+ export function resolveStepBudget(strategy) {
159
+ const candidate = strategy?.global?.stepBudget;
160
+ const valid = typeof candidate === 'number' &&
161
+ Number.isInteger(candidate) &&
162
+ (candidate === 0 || (candidate >= MIN_STEP_BUDGET && candidate <= MAX_STEP_BUDGET));
163
+ return valid ? candidate : DEFAULT_MAX_ITERATIONS;
164
+ }
165
+ /** 解析多步推理模式(内核已消费):非法值归位 'auto'(白名单引用 strategyKeys.MULTI_STEP_REASONINGS)——auto=Provider 决定 / manual=强制快速回答 */
166
+ export function resolveMultiStepReasoning(strategy) {
167
+ return normalizeEnum(strategy?.act?.multiStepReasoning, MULTI_STEP_REASONINGS, 'auto');
168
+ }
169
+ /**
170
+ * 解析工具只读模式:非法值归位 'full'
171
+ *
172
+ * 控制工具操作权限范围:
173
+ * - 'full' → 完整权限(默认)
174
+ * - 'readonly' → 仅允许只读工具
175
+ *
176
+ * @param strategy 合并后的行为策略
177
+ * @returns 合法的工具模式
178
+ */
179
+ export function resolveToolReadonly(strategy) {
180
+ return normalizeEnum(strategy?.act?.toolReadonly, TOOL_READONLY_MODES, 'full');
181
+ }
182
+ // ════════════════════════════════════════════════════════════
183
+ // L2 运行时策略(loop 运行态)装配
184
+ // ════════════════════════════════════════════════════════════
185
+ /**
186
+ * L2 运行时策略默认值(loop 构造初始态)
187
+ *
188
+ * 由 `resolveL2Strategy(undefined)` 单一推导(SSOT):不再手动复述各 resolve* 的回退默认值,
189
+ * 避免"回退规则改了、此处疏漏不同步"的二次写入点。真正每轮生效值来自 resolveL2Strategy,
190
+ * 本常量仅作 loop 构造期的惰性初始值(单一初值入口,免逐字段初始化魔数)。
191
+ */
192
+ export const DEFAULT_L2_STRATEGY = resolveL2Strategy(undefined);
193
+ /**
194
+ * 解析 L2 运行时策略(Agent 层单一装配入口,免逐项 setXxx)
195
+ *
196
+ * 聚合现有各 resolveXxx(工具模式→toolCallsBlocked、工具步数、错误处理、Provider 路由、
197
+ * Token/步数预算、多步推理、主动提问上限、工具只读)+ reflect.selfReview;
198
+ * 非法值经各 resolve* 归位内核默认;selfReview 归一为布尔数字「0=关闭 / 正整数 >0 归一为 1」。
199
+ *
200
+ * @param strategy 合并后的行为策略(角色包声明,可为空)
201
+ * @returns 注入 AgentLoop 的单一运行时策略对象
202
+ */
203
+ export function resolveL2Strategy(strategy) {
204
+ // selfReview → 布尔数字语义:0=关闭;正整数>0 一律归一为 1=自审查一次,
205
+ // 大于 1 的数同样算作 1(类似布尔开关)。越界(负/小数/非 number/>MAX)归 0=关闭。
206
+ const rawSelfReview = strategy?.reflect?.selfReview;
207
+ const selfReviewEnabled = typeof rawSelfReview === 'number' &&
208
+ Number.isInteger(rawSelfReview) &&
209
+ rawSelfReview > 0 &&
210
+ rawSelfReview <= MAX_SELF_REVIEW_ROUNDS;
211
+ return {
212
+ toolCallsBlocked: resolveToolMode(strategy) === 'block',
213
+ selfReviewEnabled,
214
+ toolStepLimit: resolveToolStepLimit(strategy),
215
+ errorHandling: resolveErrorHandling(strategy),
216
+ providerRouting: resolveProviderRouting(strategy),
217
+ contextLimit: resolveContextLimit(strategy),
218
+ stepBudget: resolveStepBudget(strategy),
219
+ multiStepReasoning: resolveMultiStepReasoning(strategy),
220
+ askLimit: resolveAskLimit(strategy),
221
+ toolReadonly: resolveToolReadonly(strategy),
222
+ };
223
+ }
224
+ // ════════════════════════════════════════════════════════════
225
+ // 策略合并与装配
226
+ // ════════════════════════════════════════════════════════════
227
+ /**
228
+ * 合并行为策略:角色包声明值覆盖默认值
229
+ *
230
+ * @param base 基础策略(通常传入 DEFAULT_BEHAVIOR_STRATEGY)
231
+ * @param override 角色包声明的覆盖值,未配置的维度保持默认值不变
232
+ * @returns 合并后的完整策略
233
+ */
234
+ export function mergeStrategy(base, override) {
235
+ if (!override)
236
+ return base;
237
+ return {
238
+ prepare: { ...base.prepare, ...override.prepare },
239
+ act: { ...base.act, ...override.act },
240
+ reflect: { ...base.reflect, ...override.reflect },
241
+ global: { ...base.global, ...override.global },
242
+ };
243
+ }
244
+ /**
245
+ * 将 RolePack 解析为 RolePackAssembly
246
+ *
247
+ * 将原始角色包解析为含完整策略的装载结果,供装配层直接使用。
248
+ * 同时根据策略中的 userFollowup/askOn/askLimit 注入主动提问指令到 persona prompt,
249
+ * 引导 LLM 使用 ask_user 内置工具提问(答案以 tool result 回填)。
250
+ *
251
+ * @param pack 原始角色包
252
+ * @returns 含完整策略的装载结果
253
+ */
254
+ export function assembleRolePack(pack) {
255
+ // 先合并策略,后续构建 persona prompt 时需读取策略值
256
+ const strategy = mergeStrategy(DEFAULT_BEHAVIOR_STRATEGY, pack.strategy);
257
+ // 构建 persona prompt:身份设定 + 规则注入
258
+ const promptParts = [pack.personaContent];
259
+ if (pack.rules.length > 0) {
260
+ promptParts.push(`## 规则\n${pack.rules.map((r) => `- ${r}`).join('\n')}`);
261
+ }
262
+ // 主动提问指令注入:userFollowup=ask 时,将 askOn/askLimit 转为 LLM 指令。
263
+ // 提问通道 = ask_user 内置工具(对齐 Claude Code AskUserQuestion 机制):
264
+ // 提问 = 一次普通工具调用,用户答案以 tool result 回填。
265
+ if (strategy.reflect?.userFollowup === 'ask') {
266
+ const askOn = strategy.global?.askOn;
267
+ // askLimit 取值收敛到 resolveAskLimit(SSOT:prompt 引导与 loop 拦截共用同一解析)
268
+ const askLimit = resolveAskLimit(strategy);
269
+ const triggerLabels = [];
270
+ const triggers = Array.isArray(askOn) ? askOn : askOn ? [askOn] : [];
271
+ for (const t of triggers) {
272
+ switch (t) {
273
+ case 'ambiguity':
274
+ triggerLabels.push('遇到模糊不清的情况');
275
+ break;
276
+ case 'decision':
277
+ triggerLabels.push('需要用户做决策');
278
+ break;
279
+ case 'missing_info':
280
+ triggerLabels.push('缺少关键信息');
281
+ break;
282
+ case 'confirm':
283
+ triggerLabels.push('需要用户确认');
284
+ break;
285
+ }
286
+ }
287
+ if (triggerLabels.length > 0) {
288
+ promptParts.push(`## 主动提问规则\n${triggerLabels.map((l) => `- 当${l}时,主动向用户提问`).join('\n')}\n- 每次回答中最多提问 ${askLimit} 次(按一次用户输入计,turn 粒度防打扰)\n- 提问必须调用 ask_user 工具(参数:question 问题文本 + 可选 options 选项数组/allowCustom 是否允许自定义回答)——系统据此在 step 边界暂停等你的回答,用户答案会作为工具结果返回给你`);
289
+ }
290
+ }
291
+ const personaPrompt = promptParts.join('\n\n');
292
+ // 能力声明:manifest 顶层 capabilities 直接派生
293
+ const capabilities = pack.capabilities ?? [];
294
+ return {
295
+ meta: pack.meta,
296
+ filePath: pack.filePath,
297
+ personaPrompt,
298
+ skills: pack.skills,
299
+ capabilities,
300
+ strategy,
301
+ traits: pack.traits,
302
+ };
303
+ }
304
+ //# sourceMappingURL=strategyResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategyResolver.js","sourceRoot":"","sources":["../../src/role-pack/strategyResolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,237 @@
1
+ /**
2
+ * 角色包(Role Pack)类型定义——以"角色"为单位,把身份/技能/规则组织成可装载的整体。
3
+ *
4
+ * 三层结构:L1 内容层(persona/rule/skill)、L2 策略层(枚举开关,角色只"选择"不"定义")、
5
+ * L3 代码层(远期预留)。装配层经"角色包清单"抽象,只认清单不认来源。
6
+ */
7
+ import type { ResourceSubdir, ScriptRuntime } from '../utils/scanner.js';
8
+ import type { ASK_TRIGGERS, ERROR_HANDLINGS, MULTI_STEP_REASONINGS, PROVIDER_ROUTINGS, SUMMARY_MODES, TOOL_MODES, TOOL_READONLY_MODES, USER_FOLLOWUPS } from './strategyKeys.js';
9
+ import type { RolePackValidationIssue } from './validator.js';
10
+ /** 工具调用模式:allow=允许 / block=只回答不执行(标准键 act.toolMode;值域 SSOT = strategyKeys.TOOL_MODES) */
11
+ export type ToolMode = (typeof TOOL_MODES)[number];
12
+ /** 工具操作范围:readonly=仅允许只读操作 / full=完整权限(值域 SSOT = strategyKeys.TOOL_READONLY_MODES) */
13
+ export type ToolReadonly = (typeof TOOL_READONLY_MODES)[number];
14
+ /** Provider 路由策略:auto=按任务类型换模型 / fixed=固定模型(值域 SSOT = strategyKeys.PROVIDER_ROUTINGS) */
15
+ export type ProviderRouting = (typeof PROVIDER_ROUTINGS)[number];
16
+ /** 多步推理模式:auto=自动深度思考 / manual=快速回答(值域 SSOT = strategyKeys.MULTI_STEP_REASONINGS) */
17
+ export type MultiStepReasoning = (typeof MULTI_STEP_REASONINGS)[number];
18
+ /** 自审查开关(布尔数字语义):0=关闭 / 任意正整数 >0 = 自审查一次(单次终审,>1 归一为 1) */
19
+ export type SelfReviewRounds = number;
20
+ /** 摘要生成开关(on=生成摘要 / off=不生成;值域 SSOT = strategyKeys.SUMMARY_MODES) */
21
+ export type Summary = (typeof SUMMARY_MODES)[number];
22
+ /** 用户追问策略:ask=主动引导对话 / silent=只等输入(值域 SSOT = strategyKeys.USER_FOLLOWUPS) */
23
+ export type UserFollowup = (typeof USER_FOLLOWUPS)[number];
24
+ /** 错误处理策略:retry=重试 / degrade=降级 / stop=终止(值域 SSOT = strategyKeys.ERROR_HANDLINGS) */
25
+ export type ErrorHandling = (typeof ERROR_HANDLINGS)[number];
26
+ /** 主动提问触发场景(SSOT 推导自 strategyKeys.ASK_TRIGGERS,增删触发词只改一处) */
27
+ export type AskOnTrigger = (typeof ASK_TRIGGERS)[number];
28
+ /**
29
+ * 回答前(Prepare)认知策略集合
30
+ * 所有字段可选,未配置的维度使用全局默认值;角色只"选择"不"定义"。
31
+ */
32
+ export interface PrepareStrategy {
33
+ /** 角色包提炼视角(默认 undefined=通用浓缩;供 round-summary 生成判断「值得记什么」,内核已消费) */
34
+ readonly summaryFocus?: string;
35
+ }
36
+ /** 回答中(Act)行动策略集合 */
37
+ export interface ActStrategy {
38
+ /** 工具调用模式(默认 allow;标准键 act.toolMode) */
39
+ readonly toolMode?: ToolMode;
40
+ /** 工具操作范围(默认 full;内核已消费) */
41
+ readonly toolReadonly?: ToolReadonly;
42
+ /** 单轮工具调用步数上限(默认 20) */
43
+ readonly toolStepLimit?: number;
44
+ /** 生成温度 0.0~2.0(默认 0.7) */
45
+ readonly temperature?: number;
46
+ /** 单轮回答长度上限 token 数(默认 4096) */
47
+ readonly outputLimit?: number;
48
+ /** Provider 路由策略(默认 auto;内核已消费) */
49
+ readonly providerRouting?: ProviderRouting;
50
+ /** 多步推理模式(默认 auto;内核已消费) */
51
+ readonly multiStepReasoning?: MultiStepReasoning;
52
+ }
53
+ /** 回答后(Reflect)沉淀策略集合 */
54
+ export interface ReflectStrategy {
55
+ /** 自审查开关(布尔数字,默认 0=关闭):0=不自审查;正整数 >0 一律在解析层归一为 1=自审查一次(大于 1 算 1)。仅本 turn 执行过工具步后做一次终审 */
56
+ readonly selfReview?: SelfReviewRounds;
57
+ /** 摘要生成开关(默认 on;标准键 reflect.summary) */
58
+ readonly summary?: Summary;
59
+ /** 用户追问策略(默认 silent) */
60
+ readonly userFollowup?: UserFollowup;
61
+ }
62
+ /** 跨阶段全局策略集合 */
63
+ export interface GlobalStrategy {
64
+ /** 角色包上下文上限(0=不设额外上限,跟随 provider 窗口;与 provider 窗口取小值后成为有效窗口) */
65
+ readonly contextLimit?: number;
66
+ /** 每轮工具步数上限(默认 50;内核已消费) */
67
+ readonly stepBudget?: number;
68
+ /** 异常时的处理策略(默认 retry) */
69
+ readonly errorHandling?: ErrorHandling;
70
+ /** 主动提问触发场景(默认 ['ambiguity', 'decision', 'missing_info']) */
71
+ readonly askOn?: AskOnTrigger | readonly AskOnTrigger[];
72
+ /** 主动提问次数上限:按一次用户输入(turn 粒度)计,防单次输入被打断过多次(默认 10) */
73
+ readonly askLimit?: number;
74
+ }
75
+ /**
76
+ * L2 行为策略全集
77
+ * 角色包经此集合声明行为偏好,未配置维度用全局默认值;所有维度为预定义可选值,角色只做"选择"。
78
+ * 诚实化声明:本集合是"设计空间"非"承诺面"——被实际消费的字段为
79
+ * prepare 的 summaryFocus(round-summary 提炼视角);
80
+ * act 的 toolMode/temperature/outputLimit/toolStepLimit/providerRouting/multiStepReasoning/toolReadonly;
81
+ * reflect 的 summary/selfReview/userFollowup;global 的 askOn/askLimit/errorHandling/contextLimit/stepBudget。
82
+ * 边界纪律:无 understandingConfirm 开放键(并入 askOn['confirm']/ask_user,见文件头注);无 costBudget 键(内核无定价能力、宿主无执行者,无消费者的策略键不保留,遵循"预留键非承诺"纪律)。
83
+ */
84
+ export interface BehaviorStrategy {
85
+ /** 回答前认知策略 */
86
+ readonly prepare?: PrepareStrategy;
87
+ /** 回答中行动策略 */
88
+ readonly act?: ActStrategy;
89
+ /** 回答后沉淀策略 */
90
+ readonly reflect?: ReflectStrategy;
91
+ /** 跨阶段全局策略 */
92
+ readonly global?: GlobalStrategy;
93
+ }
94
+ /**
95
+ * L2 运行时策略(loop 运行态,单一策略对象)
96
+ * 由 BehaviorStrategy 经 resolveL2Strategy 解析 + 默认值兜底后,一次性注入 AgentLoop;
97
+ * 只含"角色包可影响"的行为维度,内核内部常数不在此列。
98
+ */
99
+ export interface L2RuntimeStrategy {
100
+ /** 工具调用是否被阻止(toolMode==='block' 时为 true) */
101
+ readonly toolCallsBlocked: boolean;
102
+ /** 自审查开关(reflect.selfReview 的解析结果):true=做一次终审。由 resolveL2Strategy 从布尔数字输入(0=关 / >0=开)映射 */
103
+ readonly selfReviewEnabled: boolean;
104
+ /** 单轮工具调用步数上限(act.toolStepLimit:0=无限制 / N=限制步数) */
105
+ readonly toolStepLimit: number;
106
+ /** 错误处理策略(global.errorHandling) */
107
+ readonly errorHandling: ErrorHandling;
108
+ /** Provider 路由策略(act.providerRouting) */
109
+ readonly providerRouting: ProviderRouting;
110
+ /** 角色包上下文上限(global.contextLimit:0=不设额外上限,有效窗口 = provider 窗口) */
111
+ readonly contextLimit: number;
112
+ /** 步数预算上限(global.stepBudget:0=未声明,走内核 maxIterations 兜底——非「不限」) */
113
+ readonly stepBudget: number;
114
+ /** 多步推理模式(act.multiStepReasoning) */
115
+ readonly multiStepReasoning: MultiStepReasoning;
116
+ /** 主动提问次数上限(global.askLimit:turn 粒度防打扰;ask_user 硬护栏拦截超限调用) */
117
+ readonly askLimit: number;
118
+ /** 工具只读模式(act.toolReadonly) */
119
+ readonly toolReadonly: ToolReadonly;
120
+ }
121
+ /** 能力声明:以中立能力命名空间(`file:write`/`web:search`)声明,由各实现映射到自有工具(见 capabilityMap.ts 映射表) */
122
+ export interface RolePackCapability {
123
+ /** 中立能力名(如 `file:write` / `web:search` / `llm:summarize`) */
124
+ readonly capability: string;
125
+ /** 可选:能力说明(供 LLM 与校验器理解) */
126
+ readonly description?: string;
127
+ }
128
+ /**
129
+ * 组(宿主装配级):组长角色包 + 组员名单。会议名单容器,非选择对象。
130
+ * 组长身份唯一(一个角色包只能是一个组的组长,宿主校验);组员可被多组引用(引用共享);
131
+ * 成员名单非空(组员被删光 → 该组失效,仅影响会议不影响日常);组员仅作小组会议参与者,不用于日常。
132
+ */
133
+ export interface RolePackTeam {
134
+ /** 组长角色包名(组的定义者;会议默认汇总者 = activePack) */
135
+ readonly leader: string;
136
+ /** 组员角色包名列表(非空;会议参与者) */
137
+ readonly members: readonly string[];
138
+ }
139
+ /** 角色包元数据(manifest.json 解析结果),用于匹配、传播、版本管理 */
140
+ export interface RolePackMeta {
141
+ /** 角色包名称(唯一标识) */
142
+ readonly name: string;
143
+ /** UI 展示名(与 name 分离:name 为内部唯一标识,displayName 为本地化展示名,缺省回退 name=displayName ?? name) */
144
+ readonly displayName?: string;
145
+ /** 角色包描述 */
146
+ readonly description?: string;
147
+ /** 版本号 */
148
+ readonly version?: string;
149
+ /** 可选:作者/来源 */
150
+ readonly author?: string;
151
+ /** 格式版本(缺省按 1.0.0 处理) */
152
+ readonly formatVersion?: string;
153
+ /** 拟人化场景声明(tool_assistant=工具型默认 / companion=拟人化陪伴) */
154
+ readonly interactionType?: 'tool_assistant' | 'companion';
155
+ /** AI 身份标注(默认强制 true) */
156
+ readonly aiIdentityDisclosure?: boolean;
157
+ /** 未成年人保护(默认 required) */
158
+ readonly minorProtection?: 'required';
159
+ /** 接手衔接提示词:被宿主「带入对话」时预填的特色话术;角色包只描述自己,缺省由宿主回退通用话术 */
160
+ readonly handoffPrompt?: string;
161
+ }
162
+ /**
163
+ * 角色包(Role Pack)—— L1 内容层 + L2 策略层
164
+ * 从角色包文件夹的 manifest.json(唯一权威控制文件)+ 独立内容文件(persona.md/rules.md/skills/*)装配而成。
165
+ * 实现 ConfigResource 约束:name 从 meta 派生,content 从 personaContent 派生。
166
+ */
167
+ export interface RolePack {
168
+ /** 角色包名称(派生自 meta.name,满足 ConfigResource 约束) */
169
+ readonly name: string;
170
+ /** 内容正文(派生自 personaContent,满足 ConfigResource 约束) */
171
+ readonly content: string;
172
+ /** 来源文件路径(manifest.json 绝对路径,满足 ConfigResource 约束) */
173
+ readonly filePath: string;
174
+ /** 角色包元数据(manifest.json) */
175
+ readonly meta: RolePackMeta;
176
+ /** 角色身份设定正文(来自 persona.md;persona 允许缺省,此时为空串) */
177
+ readonly personaContent: string;
178
+ /** 角色性格特征(traits),从 persona.md frontmatter 解析(traits.xxx = 0-1 数值),供宿主情感计算 */
179
+ readonly traits?: Record<string, number>;
180
+ /** 确定性规则列表(来自 rules.md,逐行解析)。安全规则,装载时全量注入,不可丢失 */
181
+ readonly rules: readonly string[];
182
+ /** 内嵌技能注册(manifest.skills 对象数组,各自引用包内技能文件 file 路径;能力声明已独立为顶层 capabilities) */
183
+ readonly skills: readonly RolePackManifestSkill[];
184
+ /** 能力声明(manifest.capabilities 顶层数组,独立于 skills——「能力面(权限)」与「内容面(技能正文)」分离) */
185
+ readonly capabilities: readonly RolePackCapability[];
186
+ /** 行为策略声明(manifest.strategy);未配置的维度使用全局默认值 */
187
+ readonly strategy?: BehaviorStrategy;
188
+ /** 装配结果缓存(由 parseManifestPack 预计算;角色包装载后不可变,缓存安全) */
189
+ readonly _cachedAssembly?: RolePackAssembly;
190
+ }
191
+ /** 角色包装载结果:供装配层直接注入 system prompt;strategy 已合并默认值成为完整策略 */
192
+ export interface RolePackAssembly {
193
+ /** 角色包元数据 */
194
+ readonly meta: RolePackMeta;
195
+ /** 来源文件路径(manifest.json 绝对路径,供宿主区分内置/用户来源) */
196
+ readonly filePath: string;
197
+ /** 合并后的 persona prompt(含规则注入与主动提问指令) */
198
+ readonly personaPrompt: string;
199
+ /** 内嵌技能注册(manifest.skills,对象数组,支持多个) */
200
+ readonly skills: readonly RolePackManifestSkill[];
201
+ /** 能力声明列表(manifest 顶层 capabilities) */
202
+ readonly capabilities: readonly RolePackCapability[];
203
+ /** 完整行为策略(所有维度都有值,未声明维度用默认值,异于 RolePack.strategy) */
204
+ readonly strategy: BehaviorStrategy;
205
+ /** 角色性格特征(traits),从 persona.md frontmatter 解析(traits.xxx = 0-1 数值),供宿主情感计算 */
206
+ readonly traits?: Record<string, number>;
207
+ /** manifest 校验问题(健康徽章数据源):装载时 validateManifest 全量 issues(含 warning)。
208
+ * 可选;宿主 UI 据此叠加健康徽章 + 问题列表,镜像技能徽章模式。 */
209
+ readonly validationIssues?: readonly RolePackValidationIssue[];
210
+ }
211
+ /** manifest.json 中注册的技能对象:以对象数组引用包内技能文件(相对包根路径),可选 name/description */
212
+ export interface RolePackManifestSkill {
213
+ /** 技能文件路径(相对角色包文件夹根);装载时由 parseManifestPack 预缓存正文(skillsWithContent),正文经渐进披露 L2(read_skill)直取缓存,磁盘 IO 已消除 */
214
+ readonly file?: string;
215
+ /** 技能名(可选,缺省取文件名去扩展名) */
216
+ readonly name?: string;
217
+ /** 技能说明(可选,供 LLM 与校验器理解) */
218
+ readonly description?: string;
219
+ /** L3 层数据(资源 + 脚本):由 scanPackSkills 装载时自动发现;L3 不进 system prompt,按需调用 */
220
+ readonly layer3?: {
221
+ readonly resources: ReadonlyArray<{
222
+ readonly path: string;
223
+ readonly size: number;
224
+ /** 资源来源子目录(resources/references,兼容主流 references/ 辅助文档目录),read_resource 据此选择读取基目录;取值 SSOT 在 `utils/scanner` */
225
+ readonly subdir?: ResourceSubdir;
226
+ }>;
227
+ readonly scripts: ReadonlyArray<{
228
+ readonly path: string;
229
+ /** 运行时(值域 SSOT = utils/scanner.ScriptRuntime,由 SCRIPT_RUNTIME_MAP 扩展名映射推断) */
230
+ readonly runtime: ScriptRuntime;
231
+ readonly size: number;
232
+ }>;
233
+ };
234
+ /** 技能正文缓存(load 时预装载,readSkillContent 直取;null=未缓存,undefined=未装载懒加载) */
235
+ readonly content?: string | null;
236
+ }
237
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/role-pack/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * 角色包(Role Pack)类型定义——以"角色"为单位,把身份/技能/规则组织成可装载的整体。
3
+ *
4
+ * 三层结构:L1 内容层(persona/rule/skill)、L2 策略层(枚举开关,角色只"选择"不"定义")、
5
+ * L3 代码层(远期预留)。装配层经"角色包清单"抽象,只认清单不认来源。
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/role-pack/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * 角色包格式校验器:独立于任何实现、只吃解析后的 manifest.json 对象,按 spec 严格判定
3
+ * (manager 宽松容错,二者互补)。文件夹形态,manifest.json 为核心控制文件。
4
+ * 校验:必填字段(name)、键名合法性(未知键 warning+忽略)、版本语义(formatVersion 可选,缺省 1.0.0)、
5
+ * 合规分档(interactionType/aiIdentityDisclosure/minorProtection)、策略键、内容路径、
6
+ * skills/capabilities 格式。companion 内容红线由装载方在读取内容后调用 checkCompanionContentRedline。
7
+ * 零依赖、纯函数。
8
+ */
9
+ /** 校验严重级别:error=拒绝加载 / warning=可装载但提示 */
10
+ export type RolePackIssueSeverity = 'error' | 'warning';
11
+ /** 单个校验问题 */
12
+ export interface RolePackValidationIssue {
13
+ severity: RolePackIssueSeverity;
14
+ /** 稳定问题码(机器可判读,如 MISSING_NAME / INVALID_CAPABILITY) */
15
+ code: string;
16
+ /** 字段点路径(如 name / strategy.prepare.contextAssembly) */
17
+ path: string;
18
+ /** 人类可读描述 */
19
+ message: string;
20
+ }
21
+ /** 校验结果 */
22
+ export interface RolePackValidationResult {
23
+ /** 无 error 即 valid(warning 不阻塞装载) */
24
+ valid: boolean;
25
+ issues: readonly RolePackValidationIssue[];
26
+ }
27
+ /** handoffPrompt 最大长度(字符):接手话术防巨型注入 prompt(rolePackManager 截断兜底复用) */
28
+ export declare const MAX_HANDOFF_PROMPT_LEN = 2000;
29
+ /**
30
+ * 校验 manifest.json:必填/版本、合规分档、策略键、skills/capabilities。
31
+ * 未知键 warning + 忽略;valid = 无 error(warning 不阻塞装载)。
32
+ */
33
+ export declare function validateManifest(manifest: Record<string, unknown>): RolePackValidationResult;
34
+ /** 便捷入口:校验原始 manifest.json 文本(非法 JSON 返回 INVALID_JSON error) */
35
+ export declare function validateManifestText(raw: string): RolePackValidationResult;
36
+ /** 校验 companion 内容红线段(虚拟亲密关系)——正文在独立内容文件,本校验器纯函数不读文件,由装载方读内容后调用;tool_assistant 豁免 */
37
+ export declare function checkCompanionContentRedline(content: string): RolePackValidationIssue[];
38
+ //# sourceMappingURL=validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/role-pack/validator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,yCAAyC;AACzC,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,SAAS,CAAC;AAExD,aAAa;AACb,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,qBAAqB,CAAC;IAChC,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,aAAa;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,WAAW;AACX,MAAM,WAAW,wBAAwB;IACvC,qCAAqC;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,SAAS,uBAAuB,EAAE,CAAC;CAC5C;AAkDD,sEAAsE;AACtE,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAoX3C;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,wBAAwB,CAY5F;AAED,gEAAgE;AAChE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,wBAAwB,CAiB1E;AAED,qFAAqF;AACrF,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB,EAAE,CAavF"}