@zooique/memora 0.3.0 → 2.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 (188) hide show
  1. package/README.md +8 -8
  2. package/dist/agent/agent.d.ts +69 -92
  3. package/dist/agent/agent.d.ts.map +1 -1
  4. package/dist/agent/agent.js +267 -197
  5. package/dist/agent/agent.js.map +1 -1
  6. package/dist/agent/assembler.d.ts +3 -0
  7. package/dist/agent/assembler.d.ts.map +1 -1
  8. package/dist/agent/assembler.js +14 -4
  9. package/dist/agent/assembler.js.map +1 -1
  10. package/dist/agent/builtinToolHandlers.d.ts +1 -1
  11. package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
  12. package/dist/agent/builtinToolHandlers.js +5 -4
  13. package/dist/agent/builtinToolHandlers.js.map +1 -1
  14. package/dist/agent/guardrail.d.ts +47 -0
  15. package/dist/agent/guardrail.d.ts.map +1 -0
  16. package/dist/agent/guardrail.js +51 -0
  17. package/dist/agent/guardrail.js.map +1 -0
  18. package/dist/agent/loop.d.ts +79 -18
  19. package/dist/agent/loop.d.ts.map +1 -1
  20. package/dist/agent/loop.js +317 -231
  21. package/dist/agent/loop.js.map +1 -1
  22. package/dist/agent/managers/chatLockManager.d.ts +116 -0
  23. package/dist/agent/managers/chatLockManager.d.ts.map +1 -0
  24. package/dist/agent/managers/chatLockManager.js +191 -0
  25. package/dist/agent/managers/chatLockManager.js.map +1 -0
  26. package/dist/agent/managers/insightExtractor.d.ts +34 -69
  27. package/dist/agent/managers/insightExtractor.d.ts.map +1 -1
  28. package/dist/agent/managers/insightExtractor.js +133 -189
  29. package/dist/agent/managers/insightExtractor.js.map +1 -1
  30. package/dist/agent/managers/memoryAdvisor.d.ts +102 -2
  31. package/dist/agent/managers/memoryAdvisor.d.ts.map +1 -1
  32. package/dist/agent/managers/memoryAdvisor.js +262 -4
  33. package/dist/agent/managers/memoryAdvisor.js.map +1 -1
  34. package/dist/agent/managers/memoryDecayScheduler.d.ts +85 -0
  35. package/dist/agent/managers/memoryDecayScheduler.d.ts.map +1 -1
  36. package/dist/agent/managers/memoryDecayScheduler.js +215 -0
  37. package/dist/agent/managers/memoryDecayScheduler.js.map +1 -1
  38. package/dist/agent/managers/memoryInspector.d.ts +230 -64
  39. package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
  40. package/dist/agent/managers/memoryInspector.js +439 -81
  41. package/dist/agent/managers/memoryInspector.js.map +1 -1
  42. package/dist/agent/managers/relationBuilder.d.ts +131 -0
  43. package/dist/agent/managers/relationBuilder.d.ts.map +1 -0
  44. package/dist/agent/managers/relationBuilder.js +192 -0
  45. package/dist/agent/managers/relationBuilder.js.map +1 -0
  46. package/dist/agent/managers/sessionArchiver.d.ts +6 -0
  47. package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
  48. package/dist/agent/managers/sessionArchiver.js +68 -8
  49. package/dist/agent/managers/sessionArchiver.js.map +1 -1
  50. package/dist/agent/managers/sessionManager.d.ts.map +1 -1
  51. package/dist/agent/managers/sessionManager.js +9 -17
  52. package/dist/agent/managers/sessionManager.js.map +1 -1
  53. package/dist/agent/managers/textPolishManager.d.ts +62 -0
  54. package/dist/agent/managers/textPolishManager.d.ts.map +1 -0
  55. package/dist/agent/managers/textPolishManager.js +99 -0
  56. package/dist/agent/managers/textPolishManager.js.map +1 -0
  57. package/dist/agent/personaMatcher.d.ts +29 -0
  58. package/dist/agent/personaMatcher.d.ts.map +1 -0
  59. package/dist/agent/personaMatcher.js +60 -0
  60. package/dist/agent/personaMatcher.js.map +1 -0
  61. package/dist/agent/toolExecutor.d.ts +2 -2
  62. package/dist/agent/toolExecutor.d.ts.map +1 -1
  63. package/dist/agent/toolExecutor.js +2 -1
  64. package/dist/agent/toolExecutor.js.map +1 -1
  65. package/dist/agent/tracer.d.ts +31 -0
  66. package/dist/agent/tracer.d.ts.map +1 -1
  67. package/dist/agent/tracer.js +31 -0
  68. package/dist/agent/tracer.js.map +1 -1
  69. package/dist/agent/types.d.ts +132 -0
  70. package/dist/agent/types.d.ts.map +1 -1
  71. package/dist/agent/types.js +38 -0
  72. package/dist/agent/types.js.map +1 -1
  73. package/dist/config/loader.d.ts +52 -40
  74. package/dist/config/loader.d.ts.map +1 -1
  75. package/dist/config/loader.js +52 -32
  76. package/dist/config/loader.js.map +1 -1
  77. package/dist/eval/evalRunner.d.ts +94 -0
  78. package/dist/eval/evalRunner.d.ts.map +1 -0
  79. package/dist/eval/evalRunner.js +141 -0
  80. package/dist/eval/evalRunner.js.map +1 -0
  81. package/dist/eval/evalTypes.d.ts +33 -3
  82. package/dist/eval/evalTypes.d.ts.map +1 -1
  83. package/dist/eval/evalTypes.js +18 -2
  84. package/dist/eval/evalTypes.js.map +1 -1
  85. package/dist/eval/scenarios.d.ts +33 -0
  86. package/dist/eval/scenarios.d.ts.map +1 -0
  87. package/dist/eval/scenarios.js +109 -0
  88. package/dist/eval/scenarios.js.map +1 -0
  89. package/dist/index.d.ts +51 -9
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +46 -6
  92. package/dist/index.js.map +1 -1
  93. package/dist/llm/abortSignal.d.ts +27 -0
  94. package/dist/llm/abortSignal.d.ts.map +1 -0
  95. package/dist/llm/abortSignal.js +44 -0
  96. package/dist/llm/abortSignal.js.map +1 -0
  97. package/dist/llm/embedding.d.ts +7 -2
  98. package/dist/llm/embedding.d.ts.map +1 -1
  99. package/dist/llm/embedding.js +66 -46
  100. package/dist/llm/embedding.js.map +1 -1
  101. package/dist/llm/factory.js +1 -1
  102. package/dist/llm/factory.js.map +1 -1
  103. package/dist/llm/openaiCompatible.d.ts.map +1 -1
  104. package/dist/llm/openaiCompatible.js +26 -27
  105. package/dist/llm/openaiCompatible.js.map +1 -1
  106. package/dist/llm/provider.d.ts +0 -14
  107. package/dist/llm/provider.d.ts.map +1 -1
  108. package/dist/llm/provider.js.map +1 -1
  109. package/dist/logging/logger.d.ts +1 -0
  110. package/dist/logging/logger.d.ts.map +1 -1
  111. package/dist/logging/logger.js +43 -37
  112. package/dist/logging/logger.js.map +1 -1
  113. package/dist/memory/inMemoryStorage.d.ts.map +1 -1
  114. package/dist/memory/inMemoryStorage.js +8 -7
  115. package/dist/memory/inMemoryStorage.js.map +1 -1
  116. package/dist/memory/lockManager.d.ts +48 -0
  117. package/dist/memory/lockManager.d.ts.map +1 -0
  118. package/dist/memory/lockManager.js +159 -0
  119. package/dist/memory/lockManager.js.map +1 -0
  120. package/dist/memory/projectManager.d.ts +23 -53
  121. package/dist/memory/projectManager.d.ts.map +1 -1
  122. package/dist/memory/projectManager.js +46 -227
  123. package/dist/memory/projectManager.js.map +1 -1
  124. package/dist/memory/projectRegistry.d.ts +62 -0
  125. package/dist/memory/projectRegistry.d.ts.map +1 -0
  126. package/dist/memory/projectRegistry.js +158 -0
  127. package/dist/memory/projectRegistry.js.map +1 -0
  128. package/dist/memory/recall.d.ts +3 -3
  129. package/dist/memory/recall.d.ts.map +1 -1
  130. package/dist/memory/recall.js +3 -3
  131. package/dist/memory/recall.js.map +1 -1
  132. package/dist/memory/sourceValidation.d.ts +49 -0
  133. package/dist/memory/sourceValidation.d.ts.map +1 -0
  134. package/dist/memory/sourceValidation.js +141 -0
  135. package/dist/memory/sourceValidation.js.map +1 -0
  136. package/dist/memory/store.d.ts.map +1 -1
  137. package/dist/memory/store.js +2 -1
  138. package/dist/memory/store.js.map +1 -1
  139. package/dist/memory/types.d.ts +0 -47
  140. package/dist/memory/types.d.ts.map +1 -1
  141. package/dist/memory/types.js +0 -138
  142. package/dist/memory/types.js.map +1 -1
  143. package/dist/memory/vectorStore.d.ts +82 -7
  144. package/dist/memory/vectorStore.d.ts.map +1 -1
  145. package/dist/memory/vectorStore.js +12 -8
  146. package/dist/memory/vectorStore.js.map +1 -1
  147. package/dist/persona/personaManager.d.ts +30 -4
  148. package/dist/persona/personaManager.d.ts.map +1 -1
  149. package/dist/persona/personaManager.js +47 -14
  150. package/dist/persona/personaManager.js.map +1 -1
  151. package/dist/security/pathGuard.d.ts.map +1 -1
  152. package/dist/security/pathGuard.js +3 -1
  153. package/dist/security/pathGuard.js.map +1 -1
  154. package/dist/skill/skillManager.d.ts.map +1 -1
  155. package/dist/skill/skillManager.js +2 -1
  156. package/dist/skill/skillManager.js.map +1 -1
  157. package/dist/utils/array.d.ts +24 -0
  158. package/dist/utils/array.d.ts.map +1 -0
  159. package/dist/utils/array.js +24 -0
  160. package/dist/utils/array.js.map +1 -0
  161. package/dist/utils/errors.d.ts +10 -8
  162. package/dist/utils/errors.d.ts.map +1 -1
  163. package/dist/utils/errors.js +12 -9
  164. package/dist/utils/errors.js.map +1 -1
  165. package/dist/utils/eventEmitter.d.ts +7 -0
  166. package/dist/utils/eventEmitter.d.ts.map +1 -1
  167. package/dist/utils/eventEmitter.js.map +1 -1
  168. package/dist/utils/objects.d.ts +17 -0
  169. package/dist/utils/objects.d.ts.map +1 -0
  170. package/dist/utils/objects.js +19 -0
  171. package/dist/utils/objects.js.map +1 -0
  172. package/dist/utils/segmenter.d.ts +17 -0
  173. package/dist/utils/segmenter.d.ts.map +1 -1
  174. package/dist/utils/segmenter.js +26 -0
  175. package/dist/utils/segmenter.js.map +1 -1
  176. package/dist/utils/strings.d.ts +22 -1
  177. package/dist/utils/strings.d.ts.map +1 -1
  178. package/dist/utils/strings.js +29 -1
  179. package/dist/utils/strings.js.map +1 -1
  180. package/dist/utils/time.d.ts +18 -3
  181. package/dist/utils/time.d.ts.map +1 -1
  182. package/dist/utils/time.js +24 -8
  183. package/dist/utils/time.js.map +1 -1
  184. package/dist/utils/toError.d.ts +8 -4
  185. package/dist/utils/toError.d.ts.map +1 -1
  186. package/dist/utils/toError.js +25 -5
  187. package/dist/utils/toError.js.map +1 -1
  188. package/package.json +11 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evalRunner.js","sourceRoot":"","sources":["../../src/eval/evalRunner.ts"],"names":[],"mappings":"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"}
@@ -62,14 +62,23 @@ export interface EvalExpectation {
62
62
  *
63
63
  * 验证召回管线是否排除了应排除的 source 类型。
64
64
  * 例如:{ 'rule': 0 } 表示不应召回 rule 类型的记忆
65
+ *
66
+ * 注意:当前 collectAgentChunks 只收集 recallCount(数量),
67
+ * 不收集 source 分布。此字段为未来扩展预留,当前 evaluateResult 不检查。
68
+ * 若需验证 source 分布,请在宿主层自行实现。
65
69
  */
66
70
  recallSources?: Record<string, number>;
67
71
  /**
68
- * 护栏阻断检查
72
+ * 期望的召回记忆数量范围
69
73
  *
70
- * 如果为 true,期望输入被护栏规则阻断
74
+ * 验证召回管线是否返回了预期数量的记忆。
75
+ * 例如:{ min: 1 } 表示应至少召回 1 条记忆;
76
+ * { max: 0 } 表示不应召回任何记忆(空召回降级场景)。
71
77
  */
72
- guardrailBlocked?: boolean;
78
+ recallCount?: {
79
+ min?: number;
80
+ max?: number;
81
+ };
73
82
  /**
74
83
  * 工具调用次数范围
75
84
  */
@@ -77,6 +86,27 @@ export interface EvalExpectation {
77
86
  min?: number;
78
87
  max?: number;
79
88
  };
89
+ /**
90
+ * 期望护栏是否阻断
91
+ *
92
+ * true 表示期望护栏触发阻断(输入或输出被 block);
93
+ * false 表示期望护栏不阻断;
94
+ * undefined 表示不检查(默认)。
95
+ *
96
+ * 与 collected.guardrailBlocked 比对,后者通过结构化标志
97
+ * AgentChunk.guardrailBlocked 收集,而非中文文案匹配。
98
+ */
99
+ guardrailBlocked?: boolean;
100
+ /**
101
+ * 期望对话是否正常完成
102
+ *
103
+ * true 表示期望对话正常完成(收到 done chunk);
104
+ * false 表示期望对话未正常完成(如被中断、出错);
105
+ * undefined 表示不检查(默认)。
106
+ *
107
+ * 与 collected.done 比对。
108
+ */
109
+ done?: boolean;
80
110
  }
81
111
  /**
82
112
  * 评估结果
@@ -1 +1 @@
1
- {"version":3,"file":"evalTypes.d.ts","sourceRoot":"","sources":["../../src/eval/evalTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,gBAAgB,CAAC,EAAE,KAAK,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH;;;;OAIG;IACH,MAAM,EAAE,eAAe,CAAC;CACzB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEvC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,aAAa,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,sBAAsB;IACtB,SAAS,EAAE;QACT,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,IAAI,EAAE,OAAO,CAAC;KACf,CAAC;IACF,kBAAkB;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,GAChD,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAgClC;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,EAClC,MAAM,EAAE,eAAe,GACtB,UAAU,CA+CZ"}
1
+ {"version":3,"file":"evalTypes.d.ts","sourceRoot":"","sources":["../../src/eval/evalTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,gBAAgB,CAAC,EAAE,KAAK,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH;;;;OAIG;IACH,MAAM,EAAE,eAAe,CAAC;CACzB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEvC;;;;;;OAMG;IACH,WAAW,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAE7C;;OAEG;IACH,aAAa,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAE/C;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,sBAAsB;IACtB,SAAS,EAAE;QACT,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,IAAI,EAAE,OAAO,CAAC;KACf,CAAC;IACF,kBAAkB;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,GAChD,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAiClC;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,EAClC,MAAM,EAAE,eAAe,GACtB,UAAU,CAgEZ"}
@@ -38,8 +38,9 @@ export async function collectAgentChunks(chunks) {
38
38
  }
39
39
  break;
40
40
  case 'text':
41
- // 检查护栏阻断/警告消息
42
- if (chunk.content.includes('输入被护栏规则') || chunk.content.includes('输出被护栏规则')) {
41
+ // 通过结构化标志判断护栏阻断(替代中文文案子串匹配)
42
+ // AgentChunk.text.guardrailBlocked 由 AgentLoop 在护栏 block 时显式置 true
43
+ if (chunk.guardrailBlocked) {
43
44
  collected.guardrailBlocked = true;
44
45
  }
45
46
  break;
@@ -86,12 +87,27 @@ export function evaluateResult(name, collected, expect) {
86
87
  failures.push(`工具调用次数 ${count} > 期望最大值 ${expect.toolCallCount.max}`);
87
88
  }
88
89
  }
90
+ // 检查召回数量
91
+ if (expect.recallCount) {
92
+ if (expect.recallCount.min !== undefined && collected.recallCount < expect.recallCount.min) {
93
+ failures.push(`召回数量 ${collected.recallCount} < 期望最小值 ${expect.recallCount.min}`);
94
+ }
95
+ if (expect.recallCount.max !== undefined && collected.recallCount > expect.recallCount.max) {
96
+ failures.push(`召回数量 ${collected.recallCount} > 期望最大值 ${expect.recallCount.max}`);
97
+ }
98
+ }
89
99
  // 检查护栏阻断
90
100
  if (expect.guardrailBlocked !== undefined) {
91
101
  if (expect.guardrailBlocked !== collected.guardrailBlocked) {
92
102
  failures.push(`期望护栏阻断=${expect.guardrailBlocked},实际=${collected.guardrailBlocked}`);
93
103
  }
94
104
  }
105
+ // 检查完成状态
106
+ if (expect.done !== undefined) {
107
+ if (expect.done !== collected.done) {
108
+ failures.push(`期望完成状态=${expect.done},实际=${collected.done}`);
109
+ }
110
+ }
95
111
  return {
96
112
  name,
97
113
  passed: failures.length === 0,
@@ -1 +1 @@
1
- {"version":3,"file":"evalTypes.js","sourceRoot":"","sources":["../../src/eval/evalTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evalTypes.js","sourceRoot":"","sources":["../../src/eval/evalTypes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Agent 行为评估场景库
3
+ *
4
+ * 定义标准 EvalScenario,用于 Agent 行为回归测试。
5
+ * 场景定义是"期望契约"——描述 Agent 在特定输入下应有的行为特征,
6
+ * 由 EvalRunner 负责构造条件(MockProvider 返回值 + guardrail 规则配置)执行验证。
7
+ *
8
+ * 设计原则:
9
+ * - 场景通用,不耦合任何领域逻辑
10
+ * - 每个场景聚焦一个验证维度,失败原因可定位
11
+ * - input 是真实用户输入风格,非人造测试桩
12
+ * - expect 至少定义一项检查
13
+ *
14
+ * 当前覆盖的 EvalExpectation 维度(8 个场景):
15
+ * - guardrailBlocked(场景 1, 5, 7)
16
+ * - toolsCalled + toolsNotCalled(场景 2, 5)
17
+ * - toolCallCount(场景 3)
18
+ * - recallCount(场景 4, 8)
19
+ * - done(场景 6, 7, 8)
20
+ * - recalledMemories 预设(场景 4)
21
+ *
22
+ * 未覆盖 recallSources:当前 evaluateResult 不检查该字段(见 evalTypes.ts 注释),
23
+ * 待宿主层按需扩展。
24
+ */
25
+ import type { EvalScenario } from './evalTypes.js';
26
+ /**
27
+ * 评估场景集(8 个场景)
28
+ *
29
+ * 覆盖护栏阻断 / 工具调用决策 / 调用次数范围 / 召回数量 / 完成状态 / 长输入处理六个维度。
30
+ * EvalRunner 实现后可在 CI 中运行这些场景作为回归基线。
31
+ */
32
+ export declare const EVAL_SCENARIOS: readonly EvalScenario[];
33
+ //# sourceMappingURL=scenarios.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenarios.d.ts","sourceRoot":"","sources":["../../src/eval/scenarios.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EA8EjD,CAAC"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Agent 行为评估场景库
3
+ *
4
+ * 定义标准 EvalScenario,用于 Agent 行为回归测试。
5
+ * 场景定义是"期望契约"——描述 Agent 在特定输入下应有的行为特征,
6
+ * 由 EvalRunner 负责构造条件(MockProvider 返回值 + guardrail 规则配置)执行验证。
7
+ *
8
+ * 设计原则:
9
+ * - 场景通用,不耦合任何领域逻辑
10
+ * - 每个场景聚焦一个验证维度,失败原因可定位
11
+ * - input 是真实用户输入风格,非人造测试桩
12
+ * - expect 至少定义一项检查
13
+ *
14
+ * 当前覆盖的 EvalExpectation 维度(8 个场景):
15
+ * - guardrailBlocked(场景 1, 5, 7)
16
+ * - toolsCalled + toolsNotCalled(场景 2, 5)
17
+ * - toolCallCount(场景 3)
18
+ * - recallCount(场景 4, 8)
19
+ * - done(场景 6, 7, 8)
20
+ * - recalledMemories 预设(场景 4)
21
+ *
22
+ * 未覆盖 recallSources:当前 evaluateResult 不检查该字段(见 evalTypes.ts 注释),
23
+ * 待宿主层按需扩展。
24
+ */
25
+ /**
26
+ * 评估场景集(8 个场景)
27
+ *
28
+ * 覆盖护栏阻断 / 工具调用决策 / 调用次数范围 / 召回数量 / 完成状态 / 长输入处理六个维度。
29
+ * EvalRunner 实现后可在 CI 中运行这些场景作为回归基线。
30
+ */
31
+ export const EVAL_SCENARIOS = [
32
+ {
33
+ name: 'empty-input-guardrail',
34
+ description: '空输入应被输入护栏阻断(需配置匹配空白输入的 guardrail 规则)',
35
+ input: '',
36
+ expect: {
37
+ guardrailBlocked: true,
38
+ },
39
+ },
40
+ {
41
+ name: 'read-file-tool-call',
42
+ description: '用户请求读取文件时,Agent 应调用 read_file 且不调用 write_file',
43
+ input: '请读取 README.md 文件',
44
+ expect: {
45
+ toolsCalled: ['read_file'],
46
+ toolsNotCalled: ['write_file'],
47
+ },
48
+ },
49
+ {
50
+ name: 'multi-tool-call-count',
51
+ description: '复合请求应触发多个工具调用(读取文件 + 搜索记忆)',
52
+ input: '读取项目配置并搜索相关记忆',
53
+ expect: {
54
+ toolCallCount: { min: 2 },
55
+ },
56
+ },
57
+ {
58
+ name: 'recall-memory-present',
59
+ description: '用户提问时应有记忆召回(需预写入匹配记忆到存储)',
60
+ input: '根据之前的记忆,帮我回忆上次讨论的架构设计内容',
61
+ recalledMemories: [
62
+ {
63
+ name: '架构设计讨论',
64
+ content: '上次讨论了分层架构和模块解耦方案',
65
+ source: 'insight',
66
+ },
67
+ ],
68
+ expect: {
69
+ recallCount: { min: 1 },
70
+ },
71
+ },
72
+ {
73
+ name: 'readonly-query-guardrail',
74
+ description: '只读查询场景不应调用 write_file(防止误写),且不被护栏阻断',
75
+ input: '查询当前项目的目录结构,列出所有文件',
76
+ expect: {
77
+ toolsNotCalled: ['write_file'],
78
+ guardrailBlocked: false,
79
+ },
80
+ },
81
+ {
82
+ name: 'normal-completion',
83
+ description: '正常对话应正常完成(收到 done 事件)',
84
+ input: '你好,请介绍一下自己',
85
+ expect: {
86
+ done: true,
87
+ },
88
+ },
89
+ {
90
+ name: 'long-input-handling',
91
+ description: '较长输入应被正常处理(不触发长度限制,不崩溃,正常完成)',
92
+ input: '请分析以下需求文档的可行性并给出技术方案建议:\n' +
93
+ '系统需要支持高并发、低延迟的实时数据处理,同时保证数据一致性。'.repeat(200),
94
+ expect: {
95
+ done: true,
96
+ guardrailBlocked: false,
97
+ },
98
+ },
99
+ {
100
+ name: 'empty-recall-degrade',
101
+ description: '无匹配记忆时不应崩溃,正常完成对话(空召回降级)',
102
+ input: 'asdfqwerty 无意义输入不匹配任何记忆',
103
+ expect: {
104
+ recallCount: { max: 0 },
105
+ done: true,
106
+ },
107
+ },
108
+ ];
109
+ //# sourceMappingURL=scenarios.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenarios.js","sourceRoot":"","sources":["../../src/eval/scenarios.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAA4B;IACrD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,sCAAsC;QACnD,KAAK,EAAE,EAAE;QACT,MAAM,EAAE;YACN,gBAAgB,EAAE,IAAI;SACvB;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,+CAA+C;QAC5D,KAAK,EAAE,kBAAkB;QACzB,MAAM,EAAE;YACN,WAAW,EAAE,CAAC,WAAW,CAAC;YAC1B,cAAc,EAAE,CAAC,YAAY,CAAC;SAC/B;KACF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,4BAA4B;QACzC,KAAK,EAAE,eAAe;QACtB,MAAM,EAAE;YACN,aAAa,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;SAC1B;KACF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,0BAA0B;QACvC,KAAK,EAAE,yBAAyB;QAChC,gBAAgB,EAAE;YAChB;gBACE,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,kBAAkB;gBAC3B,MAAM,EAAE,SAAS;aAClB;SACF;QACD,MAAM,EAAE;YACN,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;SACxB;KACF;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,qCAAqC;QAClD,KAAK,EAAE,oBAAoB;QAC3B,MAAM,EAAE;YACN,cAAc,EAAE,CAAC,YAAY,CAAC;YAC9B,gBAAgB,EAAE,KAAK;SACxB;KACF;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,uBAAuB;QACpC,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE;YACN,IAAI,EAAE,IAAI;SACX;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,8BAA8B;QAC3C,KAAK,EACH,2BAA2B;YAC3B,iCAAiC,CAAC,MAAM,CAAC,GAAG,CAAC;QAC/C,MAAM,EAAE;YACN,IAAI,EAAE,IAAI;YACV,gBAAgB,EAAE,KAAK;SACxB;KACF;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,0BAA0B;QACvC,KAAK,EAAE,yBAAyB;QAChC,MAAM,EAAE;YACN,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;YACvB,IAAI,EAAE,IAAI;SACX;KACF;CACF,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,25 +1,57 @@
1
1
  /**
2
2
  * Memora — 通用 Agent 架构(纯逻辑库)
3
3
  *
4
- * 零 native 依赖。宿主项目通过注入 IMemoryStorage 实现持久化。
4
+ * Node.js 专用纯逻辑库(零 native 编译依赖,详见 ADR-002 §定位澄清)。
5
+ * 宿主项目通过注入 IMemoryStorage 实现持久化。
5
6
  * CLI 由宿主项目提供(hosts/memora-sprite/)。
6
7
  *
7
8
  * 设计哲学:万物皆记忆(详见 architecture_philosophy_rules.md §1)
8
9
  * 决策追溯:详见 .trae/rules/decisions/ 下的 ADR
10
+ *
11
+ * ─── 类型依赖图 ────────────────────────────────────────────
12
+ *
13
+ * 各模块独立 types.ts,跨模块类型追踪可按以下依赖图定位:
14
+ *
15
+ * agent/types.ts ─┬─→ llm/provider.ts (LlmProvider, ChatOptions)
16
+ * ├─→ memory/vectorStore.ts (IVectorStore, EmbeddingService)
17
+ * ├─→ memory/storageInterface.ts (IMemoryStorage)
18
+ * ├─→ memory/relationStore.ts (IMemoryRelationStore)
19
+ * ├─→ memory/sessionStore.ts (ISessionStore, SessionMessage)
20
+ * ├─→ agent/tracer.ts (ITracer, ISpan, AgentMetrics)
21
+ * └─→ memory/projectManager.ts (AgentProjectEntry)
22
+ *
23
+ * memory/types.ts ──→ 纯类型定义(Memory, MemoryRelation, SOURCE_LABELS 等)
24
+ *
25
+ * llm/types.ts ─────→ 纯类型定义(LlmChunk)
26
+ *
27
+ * persona/types.ts ─→ 纯类型定义(Persona, PersonaMode)
28
+ *
29
+ * skill/types.ts ───→ 纯类型定义(SkillEntry, SkillMatch)
30
+ *
31
+ * eval/evalTypes.ts ─→ 纯类型定义(EvalScenario, EvalResult)
32
+ *
33
+ * security/pathGuard.ts ─→ AuditEvent 等安全类型(与 agent/types.ts 解耦)
34
+ *
35
+ * 依赖方向(单向):agent → memory → utils;agent → llm;agent → security
36
+ * 内核不反向依赖宿主,所有宿主交互通过接口注入(ADR-002 §三层架构)
9
37
  */
10
38
  export { Agent } from './agent/agent.js';
11
- export type { AgentChunk, ThinkingPhase, UIMessages, ArchiveMode } from './agent/types.js';
39
+ export type { AgentChunk, ThinkingPhase, UIMessages, ArchiveMode, RecalledMemorySummary, AgentOptions, AgentContext, AgentProjectEntry } from './agent/types.js';
12
40
  export { AGENT_CONSTANTS, LOOP_CONSTANTS } from './agent/constants.js';
13
- export type { AgentOptions, AgentContext, AgentProjectEntry, } from './agent/agent.js';
14
41
  export { type AgentForkResult } from './agent/managers/sessionManager.js';
15
42
  export type { ToolDefinition, ToolHandler, ToolContext, WriteExtensions } from './agent/toolExecutor.js';
16
43
  export type { PersonaMode, Persona } from './persona/types.js';
17
44
  export type { MemoryKeywords } from './agent/managers/insightExtractor.js';
18
- export type { MemorySnapshot, WorkingMemorySnapshot, BootstrapSnapshot, ArchiveSnapshot, AgentSearchHit, AgentStats, SuggestOptions, SuggestHit, SourceHealthStatus, SourceHealthEntry, SourceHealthReport, } from './agent/managers/memoryInspector.js';
45
+ export { RelationBuilder } from './agent/managers/relationBuilder.js';
46
+ export type { ConflictInfo } from './agent/managers/relationBuilder.js';
47
+ export type { MemorySnapshot, WorkingMemorySnapshot, BootstrapSnapshot, ArchiveSnapshot, AgentSearchHit, AgentStats, SuggestOptions, SuggestHit, SourceHealthStatus, SourceHealthEntry, SourceHealthReport, DedupPair, DedupVerdict, DedupVerdictSummary, DedupReport, } from './agent/managers/memoryInspector.js';
19
48
  export type { ConfigSuggestion, ConfigSuggestionHandler } from './agent/managers/configManager.js';
20
49
  export type { AutoConfigRefinerOptions } from './agent/managers/autoConfigRefiner.js';
21
50
  export type { SessionArchiveResult } from './agent/managers/sessionArchiver.js';
51
+ export type { TimelinessVerdict, TimelinessReport } from './agent/managers/memoryDecayScheduler.js';
52
+ export type { ConflictVerdict, ConflictReport } from './agent/managers/memoryAdvisor.js';
22
53
  export type { WorkProjectionEntry } from './agent/managers/workProjection.js';
54
+ export type { PolishResult } from './agent/managers/textPolishManager.js';
23
55
  export { loadConfig } from './config/loader.js';
24
56
  export { createLlmProvider, createProviderFromConfig } from './llm/factory.js';
25
57
  export type { ProviderConfig } from './llm/factory.js';
@@ -32,26 +64,33 @@ export { TypedEventEmitter } from './utils/eventEmitter.js';
32
64
  export type { AgentEventMap, AgentEventName, AgentEventHandler } from './utils/eventEmitter.js';
33
65
  export type { ITracer, ISpan, AgentMetrics } from './agent/tracer.js';
34
66
  export { NOOP_TRACER, TRACE_SPANS } from './agent/tracer.js';
35
- export { SOURCE_LABELS, inferSource, escapeLike, validateSource } from './memory/types.js';
36
- export type { Memory, SourceValidationSeverity } from './memory/types.js';
67
+ export { SOURCE_LABELS } from './memory/types.js';
68
+ export type { Memory } from './memory/types.js';
69
+ export { inferSource, escapeLike, validateSource } from './memory/sourceValidation.js';
70
+ export type { SourceValidationSeverity } from './memory/sourceValidation.js';
37
71
  export { RELATION_TYPES, RELATION_WEIGHTS } from './memory/types.js';
38
72
  export type { MemoryRelation, RelationDirection, RelationPath, RelationNeighbor } from './memory/types.js';
39
73
  export type { IMemoryStorage } from './memory/storageInterface.js';
40
74
  export { InMemoryStorage } from './memory/inMemoryStorage.js';
41
75
  export type { IMemoryRelationStore } from './memory/relationStore.js';
42
76
  export { InMemoryRelationStore } from './memory/inMemoryRelationStore.js';
77
+ export { ProjectRegistry } from './memory/projectRegistry.js';
78
+ export type { ProjectEntry } from './memory/projectRegistry.js';
79
+ export { LockManager } from './memory/lockManager.js';
43
80
  export type { UserProfileEntry, ProfileCategory, ExtractedFact } from './memory/userProfile.js';
44
- export { VectorStore } from './memory/vectorStore.js';
45
- export type { EmbeddingService } from './memory/vectorStore.js';
81
+ export { JsonVectorStore } from './memory/vectorStore.js';
82
+ export type { IVectorStore, EmbeddingService } from './memory/vectorStore.js';
46
83
  export { EmbeddingProvider } from './llm/embedding.js';
47
84
  export type { EmbeddingConfig, EmbeddingResult } from './llm/embedding.js';
85
+ export type { EmbeddingOptions } from './memory/vectorStore.js';
48
86
  export type { ISessionStore, SessionMessage } from './memory/sessionStore.js';
49
87
  export type { ForkResult } from './agent/messageHistory.js';
50
88
  export { recall, extractKeywords } from './memory/recall.js';
51
89
  export type { RecallOptions } from './memory/recall.js';
52
90
  export type { ILogger } from './logging/loggerInterface.js';
53
91
  export { setLogger, logger } from './logging/logger.js';
54
- export { segmentText } from './utils/segmenter.js';
92
+ export { segmentText, segmentLower } from './utils/segmenter.js';
93
+ export { isPlainObject } from './utils/objects.js';
55
94
  export { parseFrontmatter, serializeFrontmatter } from './utils/frontmatter.js';
56
95
  export { safeSetTimeout, safeSetInterval, clearSafeTimeout, clearSafeInterval } from './utils/safeTimer.js';
57
96
  export type { SkillEntry, SkillMatch } from './skill/types.js';
@@ -61,4 +100,7 @@ export { toError } from './utils/toError.js';
61
100
  export type { ToolErrorCodeValue } from './utils/errors.js';
62
101
  export type { EvalScenario, EvalExpectation, EvalResult } from './eval/evalTypes.js';
63
102
  export { collectAgentChunks, evaluateResult } from './eval/evalTypes.js';
103
+ export { EVAL_SCENARIOS } from './eval/scenarios.js';
104
+ export { EvalRunner } from './eval/evalRunner.js';
105
+ export type { EvalRunnerOptions, EvalSummary } from './eval/evalRunner.js';
64
106
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,15 +1,45 @@
1
1
  /**
2
2
  * Memora — 通用 Agent 架构(纯逻辑库)
3
3
  *
4
- * 零 native 依赖。宿主项目通过注入 IMemoryStorage 实现持久化。
4
+ * Node.js 专用纯逻辑库(零 native 编译依赖,详见 ADR-002 §定位澄清)。
5
+ * 宿主项目通过注入 IMemoryStorage 实现持久化。
5
6
  * CLI 由宿主项目提供(hosts/memora-sprite/)。
6
7
  *
7
8
  * 设计哲学:万物皆记忆(详见 architecture_philosophy_rules.md §1)
8
9
  * 决策追溯:详见 .trae/rules/decisions/ 下的 ADR
10
+ *
11
+ * ─── 类型依赖图 ────────────────────────────────────────────
12
+ *
13
+ * 各模块独立 types.ts,跨模块类型追踪可按以下依赖图定位:
14
+ *
15
+ * agent/types.ts ─┬─→ llm/provider.ts (LlmProvider, ChatOptions)
16
+ * ├─→ memory/vectorStore.ts (IVectorStore, EmbeddingService)
17
+ * ├─→ memory/storageInterface.ts (IMemoryStorage)
18
+ * ├─→ memory/relationStore.ts (IMemoryRelationStore)
19
+ * ├─→ memory/sessionStore.ts (ISessionStore, SessionMessage)
20
+ * ├─→ agent/tracer.ts (ITracer, ISpan, AgentMetrics)
21
+ * └─→ memory/projectManager.ts (AgentProjectEntry)
22
+ *
23
+ * memory/types.ts ──→ 纯类型定义(Memory, MemoryRelation, SOURCE_LABELS 等)
24
+ *
25
+ * llm/types.ts ─────→ 纯类型定义(LlmChunk)
26
+ *
27
+ * persona/types.ts ─→ 纯类型定义(Persona, PersonaMode)
28
+ *
29
+ * skill/types.ts ───→ 纯类型定义(SkillEntry, SkillMatch)
30
+ *
31
+ * eval/evalTypes.ts ─→ 纯类型定义(EvalScenario, EvalResult)
32
+ *
33
+ * security/pathGuard.ts ─→ AuditEvent 等安全类型(与 agent/types.ts 解耦)
34
+ *
35
+ * 依赖方向(单向):agent → memory → utils;agent → llm;agent → security
36
+ * 内核不反向依赖宿主,所有宿主交互通过接口注入(ADR-002 §三层架构)
9
37
  */
10
38
  // ─── 库导出:供宿主项目 import 接入 ──────────────────────
11
39
  export { Agent } from './agent/agent.js';
12
40
  export { AGENT_CONSTANTS, LOOP_CONSTANTS } from './agent/constants.js';
41
+ // RelationBuilder 从 InsightExtractor 提取,封装 ADR-014 关系构建逻辑
42
+ export { RelationBuilder } from './agent/managers/relationBuilder.js';
13
43
  export { loadConfig } from './config/loader.js';
14
44
  export { createLlmProvider, createProviderFromConfig } from './llm/factory.js';
15
45
  export { OpenAICompatibleProvider } from './llm/openaiCompatible.js';
@@ -17,13 +47,20 @@ export { OpenAICompatibleProvider } from './llm/openaiCompatible.js';
17
47
  export { TypedEventEmitter } from './utils/eventEmitter.js';
18
48
  export { NOOP_TRACER, TRACE_SPANS } from './agent/tracer.js';
19
49
  // ─── 记忆层导出 ──────────────────────────────────────────
20
- export { SOURCE_LABELS, inferSource, escapeLike, validateSource } from './memory/types.js';
50
+ export { SOURCE_LABELS } from './memory/types.js';
51
+ // Source 校验工具(从 types.ts 拆分到 sourceValidation.ts,公共 API 不变)
52
+ export { inferSource, escapeLike, validateSource } from './memory/sourceValidation.js';
21
53
  // 记忆关系图谱(ADR-014 侧车模型)
22
54
  export { RELATION_TYPES, RELATION_WEIGHTS } from './memory/types.js';
23
55
  export { InMemoryStorage } from './memory/inMemoryStorage.js';
24
56
  export { InMemoryRelationStore } from './memory/inMemoryRelationStore.js';
25
- // 向量存储:宿主注入 EmbeddingService 后创建 VectorStore,传入 AgentOptions 启用语义搜索
26
- export { VectorStore } from './memory/vectorStore.js';
57
+ // 项目注册表 + 锁文件管理(从 ProjectManager 提取)
58
+ // 宿主可直接使用 ProjectRegistry/LockManager 管理多项目,或通过 ProjectManager 间接委托
59
+ export { ProjectRegistry } from './memory/projectRegistry.js';
60
+ export { LockManager } from './memory/lockManager.js';
61
+ // 向量存储:宿主注入 EmbeddingService 后创建 JsonVectorStore,传入 AgentOptions 启用语义搜索
62
+ // 宿主也可实现 IVectorStore 接口注入自定义向量库(如 SqliteVectorStore / LanceDBVectorStore)
63
+ export { JsonVectorStore } from './memory/vectorStore.js';
27
64
  // Embedding Provider:OpenAI 兼容 /embeddings 端点实现(满足 EmbeddingService 接口)
28
65
  export { EmbeddingProvider } from './llm/embedding.js';
29
66
  // 召回函数:简化关键词搜索
@@ -31,8 +68,9 @@ export { recall, extractKeywords } from './memory/recall.js';
31
68
  export { setLogger, logger } from './logging/logger.js';
32
69
  // ─── 工具导出 ────────────────────────────────────────────
33
70
  // 分词工具:宿主项目(如 SqliteStorage)依赖
34
- // 工具导出
35
- export { segmentText } from './utils/segmenter.js';
71
+ export { segmentText, segmentLower } from './utils/segmenter.js';
72
+ // 对象类型守卫:宿主项目(如 spriteConfig)依赖,校验 JSON.parse 结果
73
+ export { isPlainObject } from './utils/objects.js';
36
74
  // Frontmatter 解析/序列化:宿主项目(如 skillInstaller)依赖
37
75
  export { parseFrontmatter, serializeFrontmatter } from './utils/frontmatter.js';
38
76
  // 安全定时器:宿主主进程统一使用 safeSetTimeout/safeSetInterval 跟踪清理
@@ -42,4 +80,6 @@ export { MemoraError, ToolErrorCode, isRetryableErrorCode } from './utils/errors
42
80
  // toError 独立导出,浏览器端可直接 import 而不引入 logging(pino)依赖
43
81
  export { toError } from './utils/toError.js';
44
82
  export { collectAgentChunks, evaluateResult } from './eval/evalTypes.js';
83
+ export { EVAL_SCENARIOS } from './eval/scenarios.js';
84
+ export { EvalRunner } from './eval/evalRunner.js';
45
85
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,iDAAiD;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AA8BvE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAI/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAGrE,OAAO;AACP,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAK5D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE7D,uDAAuD;AACvD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE3F,uBAAuB;AACvB,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAIrE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAG9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAG1E,oEAAoE;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,wEAAwE;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAMvD,eAAe;AACf,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAK7D,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAExD,wDAAwD;AACxD,+BAA+B;AAC/B,OAAO;AACP,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,8CAA8C;AAC9C,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAChF,sDAAsD;AACtD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAc5G,sDAAsD;AACtD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACrF,mDAAmD;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAK7C,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,iDAAiD;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAGzC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAMvE,0DAA0D;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAgCtE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAI/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAGrE,OAAO;AACP,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAK5D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE7D,uDAAuD;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,4DAA4D;AAC5D,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEvF,uBAAuB;AACvB,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAIrE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAG9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,qCAAqC;AACrC,oEAAoE;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGtD,wEAAwE;AACxE,2EAA2E;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,wEAAwE;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAQvD,eAAe;AACf,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAK7D,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAExD,wDAAwD;AACxD,+BAA+B;AAC/B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACjE,iDAAiD;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,8CAA8C;AAC9C,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAChF,sDAAsD;AACtD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAc5G,sDAAsD;AACtD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACrF,mDAAmD;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAO7C,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * AbortSignal 合并工具
3
+ *
4
+ * 从 openaiCompatible.ts 和 embedding.ts 提取的公共"外部信号 + 超时信号"合并逻辑
5
+ * (ADR-017 枝叶层 2 次提取原则,embedding.ts 原注释已自证"与 openaiCompatible.ts 同构")。
6
+ *
7
+ * 确保用户取消(optsSignal)和请求超时都能中断 fetch 和流读取。
8
+ */
9
+ /**
10
+ * 合并外部 AbortSignal + 超时 AbortSignal
11
+ *
12
+ * 创建内部 AbortController,将外部 optsSignal 和超时信号合并到其 signal 上。
13
+ * 返回 signal 供 fetch 使用,以及两个清理函数:
14
+ * - clearTimer:只清超时定时器(流式读取前调用,保留 optsSignal 监听用于 SSE 取消)
15
+ * - dispose:完整清理(清超时 + 移除 optsSignal 监听,最终清理时调用)
16
+ *
17
+ * @param optsSignal 外部传入的 AbortSignal(可选,用户取消信号)
18
+ * @param timeoutMs 超时毫秒数
19
+ * @param timeoutErrorName 超时错误名称(如 'LLM 请求超时' / 'Embedding 请求超时')
20
+ * @returns { signal, clearTimer, dispose } 合并后的 signal 和清理函数
21
+ */
22
+ export declare function mergeAbortSignals(optsSignal: AbortSignal | undefined, timeoutMs: number, timeoutErrorName: string): {
23
+ signal: AbortSignal;
24
+ clearTimer: () => void;
25
+ dispose: () => void;
26
+ };
27
+ //# sourceMappingURL=abortSignal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abortSignal.d.ts","sourceRoot":"","sources":["../../src/llm/abortSignal.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,WAAW,GAAG,SAAS,EACnC,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,GACvB;IACD,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAwBA"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * AbortSignal 合并工具
3
+ *
4
+ * 从 openaiCompatible.ts 和 embedding.ts 提取的公共"外部信号 + 超时信号"合并逻辑
5
+ * (ADR-017 枝叶层 2 次提取原则,embedding.ts 原注释已自证"与 openaiCompatible.ts 同构")。
6
+ *
7
+ * 确保用户取消(optsSignal)和请求超时都能中断 fetch 和流读取。
8
+ */
9
+ /**
10
+ * 合并外部 AbortSignal + 超时 AbortSignal
11
+ *
12
+ * 创建内部 AbortController,将外部 optsSignal 和超时信号合并到其 signal 上。
13
+ * 返回 signal 供 fetch 使用,以及两个清理函数:
14
+ * - clearTimer:只清超时定时器(流式读取前调用,保留 optsSignal 监听用于 SSE 取消)
15
+ * - dispose:完整清理(清超时 + 移除 optsSignal 监听,最终清理时调用)
16
+ *
17
+ * @param optsSignal 外部传入的 AbortSignal(可选,用户取消信号)
18
+ * @param timeoutMs 超时毫秒数
19
+ * @param timeoutErrorName 超时错误名称(如 'LLM 请求超时' / 'Embedding 请求超时')
20
+ * @returns { signal, clearTimer, dispose } 合并后的 signal 和清理函数
21
+ */
22
+ export function mergeAbortSignals(optsSignal, timeoutMs, timeoutErrorName) {
23
+ const abortController = new AbortController();
24
+ const timeoutId = setTimeout(() => abortController.abort(new DOMException(timeoutErrorName, 'TimeoutError')), timeoutMs);
25
+ const onOptsAbort = () => abortController.abort(optsSignal?.reason);
26
+ if (optsSignal) {
27
+ if (optsSignal.aborted) {
28
+ abortController.abort(optsSignal.reason);
29
+ }
30
+ else {
31
+ optsSignal.addEventListener('abort', onOptsAbort, { once: true });
32
+ }
33
+ }
34
+ // 只清超时定时器(流式读取前调用,保留 optsSignal 监听用于 SSE 阶段取消)
35
+ const clearTimer = () => clearTimeout(timeoutId);
36
+ // 完整清理:清超时 + 移除 optsSignal 监听(最终清理时调用,防止监听器常驻泄漏)
37
+ const dispose = () => {
38
+ clearTimeout(timeoutId);
39
+ if (optsSignal)
40
+ optsSignal.removeEventListener('abort', onOptsAbort);
41
+ };
42
+ return { signal: abortController.signal, clearTimer, dispose };
43
+ }
44
+ //# sourceMappingURL=abortSignal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abortSignal.js","sourceRoot":"","sources":["../../src/llm/abortSignal.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAAmC,EACnC,SAAiB,EACjB,gBAAwB;IAMxB,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAC9C,MAAM,SAAS,GAAG,UAAU,CAC1B,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC,EAC/E,SAAS,CACV,CAAC;IACF,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACpE,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,+CAA+C;IAC/C,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACjD,iDAAiD;IACjD,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,IAAI,UAAU;YAAE,UAAU,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACvE,CAAC,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACjE,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { EmbeddingOptions } from '../memory/vectorStore.js';
1
2
  /**
2
3
  * Embedding 配置(与 OpenAICompatibleConfig 共用 baseUrl/apiKey)
3
4
  */
@@ -25,6 +26,8 @@ export declare class EmbeddingProvider {
25
26
  private readonly config;
26
27
  /** 缓存最大条目数(LRU 上限,防止无界增长导致内存泄漏) */
27
28
  private static readonly CACHE_MAX_SIZE;
29
+ /** 默认请求超时:60 秒(embedding 无流式推理,比 chat 的 120s 更短) */
30
+ private static readonly DEFAULT_TIMEOUT_MS;
28
31
  /** 本地缓存:text → vector(LRU,Map 迭代顺序 = 最近访问顺序) */
29
32
  private readonly cache;
30
33
  constructor(config: EmbeddingConfig);
@@ -40,16 +43,18 @@ export declare class EmbeddingProvider {
40
43
  /**
41
44
  * 嵌入单条文本
42
45
  * @param text 待嵌入的文本
46
+ * @param options 调用选项(signal 外部取消 + timeoutMs 超时)
43
47
  * @returns 向量
44
48
  */
45
- embed(text: string): Promise<number[]>;
49
+ embed(text: string, options?: EmbeddingOptions): Promise<number[]>;
46
50
  /**
47
51
  * 批量嵌入多条文本
48
52
  * OpenAI 兼容 API 支持一次请求嵌入多条文本,减少 API 调用
49
53
  * @param texts 待嵌入的文本数组
54
+ * @param options 调用选项(signal 外部取消 + timeoutMs 超时)
50
55
  * @returns 嵌入结果数组(顺序与输入一致)
51
56
  */
52
- batchEmbed(texts: string[]): Promise<EmbeddingResult[]>;
57
+ batchEmbed(texts: string[], options?: EmbeddingOptions): Promise<EmbeddingResult[]>;
53
58
  /**
54
59
  * 获取缓存大小(调试用)
55
60
  */