@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.
- package/README.md +8 -8
- package/dist/agent/agent.d.ts +69 -92
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +267 -197
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/assembler.d.ts +3 -0
- package/dist/agent/assembler.d.ts.map +1 -1
- package/dist/agent/assembler.js +14 -4
- package/dist/agent/assembler.js.map +1 -1
- package/dist/agent/builtinToolHandlers.d.ts +1 -1
- package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
- package/dist/agent/builtinToolHandlers.js +5 -4
- package/dist/agent/builtinToolHandlers.js.map +1 -1
- package/dist/agent/guardrail.d.ts +47 -0
- package/dist/agent/guardrail.d.ts.map +1 -0
- package/dist/agent/guardrail.js +51 -0
- package/dist/agent/guardrail.js.map +1 -0
- package/dist/agent/loop.d.ts +79 -18
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +317 -231
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/managers/chatLockManager.d.ts +116 -0
- package/dist/agent/managers/chatLockManager.d.ts.map +1 -0
- package/dist/agent/managers/chatLockManager.js +191 -0
- package/dist/agent/managers/chatLockManager.js.map +1 -0
- package/dist/agent/managers/insightExtractor.d.ts +34 -69
- package/dist/agent/managers/insightExtractor.d.ts.map +1 -1
- package/dist/agent/managers/insightExtractor.js +133 -189
- package/dist/agent/managers/insightExtractor.js.map +1 -1
- package/dist/agent/managers/memoryAdvisor.d.ts +102 -2
- package/dist/agent/managers/memoryAdvisor.d.ts.map +1 -1
- package/dist/agent/managers/memoryAdvisor.js +262 -4
- package/dist/agent/managers/memoryAdvisor.js.map +1 -1
- package/dist/agent/managers/memoryDecayScheduler.d.ts +85 -0
- package/dist/agent/managers/memoryDecayScheduler.d.ts.map +1 -1
- package/dist/agent/managers/memoryDecayScheduler.js +215 -0
- package/dist/agent/managers/memoryDecayScheduler.js.map +1 -1
- package/dist/agent/managers/memoryInspector.d.ts +230 -64
- package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
- package/dist/agent/managers/memoryInspector.js +439 -81
- package/dist/agent/managers/memoryInspector.js.map +1 -1
- package/dist/agent/managers/relationBuilder.d.ts +131 -0
- package/dist/agent/managers/relationBuilder.d.ts.map +1 -0
- package/dist/agent/managers/relationBuilder.js +192 -0
- package/dist/agent/managers/relationBuilder.js.map +1 -0
- package/dist/agent/managers/sessionArchiver.d.ts +6 -0
- package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
- package/dist/agent/managers/sessionArchiver.js +68 -8
- package/dist/agent/managers/sessionArchiver.js.map +1 -1
- package/dist/agent/managers/sessionManager.d.ts.map +1 -1
- package/dist/agent/managers/sessionManager.js +9 -17
- package/dist/agent/managers/sessionManager.js.map +1 -1
- package/dist/agent/managers/textPolishManager.d.ts +62 -0
- package/dist/agent/managers/textPolishManager.d.ts.map +1 -0
- package/dist/agent/managers/textPolishManager.js +99 -0
- package/dist/agent/managers/textPolishManager.js.map +1 -0
- package/dist/agent/personaMatcher.d.ts +29 -0
- package/dist/agent/personaMatcher.d.ts.map +1 -0
- package/dist/agent/personaMatcher.js +60 -0
- package/dist/agent/personaMatcher.js.map +1 -0
- package/dist/agent/toolExecutor.d.ts +2 -2
- package/dist/agent/toolExecutor.d.ts.map +1 -1
- package/dist/agent/toolExecutor.js +2 -1
- package/dist/agent/toolExecutor.js.map +1 -1
- package/dist/agent/tracer.d.ts +31 -0
- package/dist/agent/tracer.d.ts.map +1 -1
- package/dist/agent/tracer.js +31 -0
- package/dist/agent/tracer.js.map +1 -1
- package/dist/agent/types.d.ts +132 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js +38 -0
- package/dist/agent/types.js.map +1 -1
- package/dist/config/loader.d.ts +52 -40
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +52 -32
- package/dist/config/loader.js.map +1 -1
- package/dist/eval/evalRunner.d.ts +94 -0
- package/dist/eval/evalRunner.d.ts.map +1 -0
- package/dist/eval/evalRunner.js +141 -0
- package/dist/eval/evalRunner.js.map +1 -0
- package/dist/eval/evalTypes.d.ts +33 -3
- package/dist/eval/evalTypes.d.ts.map +1 -1
- package/dist/eval/evalTypes.js +18 -2
- package/dist/eval/evalTypes.js.map +1 -1
- package/dist/eval/scenarios.d.ts +33 -0
- package/dist/eval/scenarios.d.ts.map +1 -0
- package/dist/eval/scenarios.js +109 -0
- package/dist/eval/scenarios.js.map +1 -0
- package/dist/index.d.ts +51 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -6
- package/dist/index.js.map +1 -1
- package/dist/llm/abortSignal.d.ts +27 -0
- package/dist/llm/abortSignal.d.ts.map +1 -0
- package/dist/llm/abortSignal.js +44 -0
- package/dist/llm/abortSignal.js.map +1 -0
- package/dist/llm/embedding.d.ts +7 -2
- package/dist/llm/embedding.d.ts.map +1 -1
- package/dist/llm/embedding.js +66 -46
- package/dist/llm/embedding.js.map +1 -1
- package/dist/llm/factory.js +1 -1
- package/dist/llm/factory.js.map +1 -1
- package/dist/llm/openaiCompatible.d.ts.map +1 -1
- package/dist/llm/openaiCompatible.js +26 -27
- package/dist/llm/openaiCompatible.js.map +1 -1
- package/dist/llm/provider.d.ts +0 -14
- package/dist/llm/provider.d.ts.map +1 -1
- package/dist/llm/provider.js.map +1 -1
- package/dist/logging/logger.d.ts +1 -0
- package/dist/logging/logger.d.ts.map +1 -1
- package/dist/logging/logger.js +43 -37
- package/dist/logging/logger.js.map +1 -1
- package/dist/memory/inMemoryStorage.d.ts.map +1 -1
- package/dist/memory/inMemoryStorage.js +8 -7
- package/dist/memory/inMemoryStorage.js.map +1 -1
- package/dist/memory/lockManager.d.ts +48 -0
- package/dist/memory/lockManager.d.ts.map +1 -0
- package/dist/memory/lockManager.js +159 -0
- package/dist/memory/lockManager.js.map +1 -0
- package/dist/memory/projectManager.d.ts +23 -53
- package/dist/memory/projectManager.d.ts.map +1 -1
- package/dist/memory/projectManager.js +46 -227
- package/dist/memory/projectManager.js.map +1 -1
- package/dist/memory/projectRegistry.d.ts +62 -0
- package/dist/memory/projectRegistry.d.ts.map +1 -0
- package/dist/memory/projectRegistry.js +158 -0
- package/dist/memory/projectRegistry.js.map +1 -0
- package/dist/memory/recall.d.ts +3 -3
- package/dist/memory/recall.d.ts.map +1 -1
- package/dist/memory/recall.js +3 -3
- package/dist/memory/recall.js.map +1 -1
- package/dist/memory/sourceValidation.d.ts +49 -0
- package/dist/memory/sourceValidation.d.ts.map +1 -0
- package/dist/memory/sourceValidation.js +141 -0
- package/dist/memory/sourceValidation.js.map +1 -0
- package/dist/memory/store.d.ts.map +1 -1
- package/dist/memory/store.js +2 -1
- package/dist/memory/store.js.map +1 -1
- package/dist/memory/types.d.ts +0 -47
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/memory/types.js +0 -138
- package/dist/memory/types.js.map +1 -1
- package/dist/memory/vectorStore.d.ts +82 -7
- package/dist/memory/vectorStore.d.ts.map +1 -1
- package/dist/memory/vectorStore.js +12 -8
- package/dist/memory/vectorStore.js.map +1 -1
- package/dist/persona/personaManager.d.ts +30 -4
- package/dist/persona/personaManager.d.ts.map +1 -1
- package/dist/persona/personaManager.js +47 -14
- package/dist/persona/personaManager.js.map +1 -1
- package/dist/security/pathGuard.d.ts.map +1 -1
- package/dist/security/pathGuard.js +3 -1
- package/dist/security/pathGuard.js.map +1 -1
- package/dist/skill/skillManager.d.ts.map +1 -1
- package/dist/skill/skillManager.js +2 -1
- package/dist/skill/skillManager.js.map +1 -1
- package/dist/utils/array.d.ts +24 -0
- package/dist/utils/array.d.ts.map +1 -0
- package/dist/utils/array.js +24 -0
- package/dist/utils/array.js.map +1 -0
- package/dist/utils/errors.d.ts +10 -8
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +12 -9
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/eventEmitter.d.ts +7 -0
- package/dist/utils/eventEmitter.d.ts.map +1 -1
- package/dist/utils/eventEmitter.js.map +1 -1
- package/dist/utils/objects.d.ts +17 -0
- package/dist/utils/objects.d.ts.map +1 -0
- package/dist/utils/objects.js +19 -0
- package/dist/utils/objects.js.map +1 -0
- package/dist/utils/segmenter.d.ts +17 -0
- package/dist/utils/segmenter.d.ts.map +1 -1
- package/dist/utils/segmenter.js +26 -0
- package/dist/utils/segmenter.js.map +1 -1
- package/dist/utils/strings.d.ts +22 -1
- package/dist/utils/strings.d.ts.map +1 -1
- package/dist/utils/strings.js +29 -1
- package/dist/utils/strings.js.map +1 -1
- package/dist/utils/time.d.ts +18 -3
- package/dist/utils/time.d.ts.map +1 -1
- package/dist/utils/time.js +24 -8
- package/dist/utils/time.js.map +1 -1
- package/dist/utils/toError.d.ts +8 -4
- package/dist/utils/toError.d.ts.map +1 -1
- package/dist/utils/toError.js +25 -5
- package/dist/utils/toError.js.map +1 -1
- 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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"}
|
package/dist/eval/evalTypes.d.ts
CHANGED
|
@@ -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
|
-
*
|
|
74
|
+
* 验证召回管线是否返回了预期数量的记忆。
|
|
75
|
+
* 例如:{ min: 1 } 表示应至少召回 1 条记忆;
|
|
76
|
+
* { max: 0 } 表示不应召回任何记忆(空召回降级场景)。
|
|
71
77
|
*/
|
|
72
|
-
|
|
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
|
|
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"}
|
package/dist/eval/evalTypes.js
CHANGED
|
@@ -38,8 +38,9 @@ export async function collectAgentChunks(chunks) {
|
|
|
38
38
|
}
|
|
39
39
|
break;
|
|
40
40
|
case 'text':
|
|
41
|
-
//
|
|
42
|
-
|
|
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":"AAAA;;;;;;;;;;;GAWG;
|
|
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
|
-
*
|
|
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
|
|
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
|
|
36
|
-
export type { Memory
|
|
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 {
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
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
|
-
*
|
|
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
|
|
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
|
-
//
|
|
26
|
-
|
|
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
|
-
|
|
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
|
|
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"}
|
package/dist/llm/embedding.d.ts
CHANGED
|
@@ -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
|
*/
|