@zooique/memora 2.0.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1028 -0
- package/README.en.md +305 -0
- package/README.md +303 -148
- package/config.example.json +43 -0
- package/dist/agent/agent.d.ts +438 -295
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +1368 -836
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/assembler.d.ts +117 -39
- package/dist/agent/assembler.d.ts.map +1 -1
- package/dist/agent/assembler.js +574 -71
- package/dist/agent/assembler.js.map +1 -1
- package/dist/agent/budget.d.ts +131 -0
- package/dist/agent/budget.d.ts.map +1 -0
- package/dist/agent/budget.js +128 -0
- package/dist/agent/budget.js.map +1 -0
- package/dist/agent/builtinToolHandlers.d.ts +229 -17
- package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
- package/dist/agent/builtinToolHandlers.js +758 -70
- package/dist/agent/builtinToolHandlers.js.map +1 -1
- package/dist/agent/builtinTools.d.ts +198 -7
- package/dist/agent/builtinTools.d.ts.map +1 -1
- package/dist/agent/builtinTools.js +646 -14
- package/dist/agent/builtinTools.js.map +1 -1
- package/dist/agent/compaction.d.ts +93 -0
- package/dist/agent/compaction.d.ts.map +1 -0
- package/dist/agent/compaction.js +192 -0
- package/dist/agent/compaction.js.map +1 -0
- package/dist/agent/constants.d.ts +139 -18
- package/dist/agent/constants.d.ts.map +1 -1
- package/dist/agent/constants.js +154 -18
- package/dist/agent/constants.js.map +1 -1
- package/dist/agent/contextManager.d.ts +126 -76
- package/dist/agent/contextManager.d.ts.map +1 -1
- package/dist/agent/contextManager.js +197 -135
- package/dist/agent/contextManager.js.map +1 -1
- package/dist/agent/contextPreparer.d.ts +78 -0
- package/dist/agent/contextPreparer.d.ts.map +1 -0
- package/dist/agent/contextPreparer.js +128 -0
- package/dist/agent/contextPreparer.js.map +1 -0
- package/dist/agent/duplicateInterceptor.d.ts +67 -0
- package/dist/agent/duplicateInterceptor.d.ts.map +1 -0
- package/dist/agent/duplicateInterceptor.js +82 -0
- package/dist/agent/duplicateInterceptor.js.map +1 -0
- package/dist/agent/guardRail.d.ts +166 -0
- package/dist/agent/guardRail.d.ts.map +1 -0
- package/dist/agent/guardRail.js +333 -0
- package/dist/agent/guardRail.js.map +1 -0
- package/dist/agent/loop.d.ts +718 -253
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +2215 -648
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/managers/archiveCoordinator.d.ts +21 -74
- package/dist/agent/managers/archiveCoordinator.d.ts.map +1 -1
- package/dist/agent/managers/archiveCoordinator.js +32 -105
- package/dist/agent/managers/archiveCoordinator.js.map +1 -1
- package/dist/agent/managers/chatLockManager.d.ts +20 -88
- package/dist/agent/managers/chatLockManager.d.ts.map +1 -1
- package/dist/agent/managers/chatLockManager.js +31 -103
- package/dist/agent/managers/chatLockManager.js.map +1 -1
- package/dist/agent/managers/dedupManager.d.ts +85 -0
- package/dist/agent/managers/dedupManager.d.ts.map +1 -0
- package/dist/agent/managers/dedupManager.js +248 -0
- package/dist/agent/managers/dedupManager.js.map +1 -0
- package/dist/agent/managers/goalConsistencyChecker.d.ts +42 -0
- package/dist/agent/managers/goalConsistencyChecker.d.ts.map +1 -0
- package/dist/agent/managers/goalConsistencyChecker.js +178 -0
- package/dist/agent/managers/goalConsistencyChecker.js.map +1 -0
- package/dist/agent/managers/llmCaller.d.ts +124 -0
- package/dist/agent/managers/llmCaller.d.ts.map +1 -0
- package/dist/agent/managers/llmCaller.js +417 -0
- package/dist/agent/managers/llmCaller.js.map +1 -0
- package/dist/agent/managers/llmJudgeHelper.d.ts +21 -0
- package/dist/agent/managers/llmJudgeHelper.d.ts.map +1 -0
- package/dist/agent/managers/llmJudgeHelper.js +32 -0
- package/dist/agent/managers/llmJudgeHelper.js.map +1 -0
- package/dist/agent/managers/loopMetrics.d.ts +58 -0
- package/dist/agent/managers/loopMetrics.d.ts.map +1 -0
- package/dist/agent/managers/loopMetrics.js +68 -0
- package/dist/agent/managers/loopMetrics.js.map +1 -0
- package/dist/agent/managers/memoryAdvisor.d.ts +27 -120
- package/dist/agent/managers/memoryAdvisor.d.ts.map +1 -1
- package/dist/agent/managers/memoryAdvisor.js +56 -192
- package/dist/agent/managers/memoryAdvisor.js.map +1 -1
- package/dist/agent/managers/memoryGovernance.d.ts +24 -0
- package/dist/agent/managers/memoryGovernance.d.ts.map +1 -0
- package/dist/agent/managers/memoryGovernance.js +46 -0
- package/dist/agent/managers/memoryGovernance.js.map +1 -0
- package/dist/agent/managers/memoryInspector.d.ts +59 -393
- package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
- package/dist/agent/managers/memoryInspector.js +92 -736
- package/dist/agent/managers/memoryInspector.js.map +1 -1
- package/dist/agent/managers/roundSummaryGenerator.d.ts +56 -0
- package/dist/agent/managers/roundSummaryGenerator.d.ts.map +1 -0
- package/dist/agent/managers/roundSummaryGenerator.js +201 -0
- package/dist/agent/managers/roundSummaryGenerator.js.map +1 -0
- package/dist/agent/managers/sessionArchiver.d.ts +19 -63
- package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
- package/dist/agent/managers/sessionArchiver.js +83 -157
- package/dist/agent/managers/sessionArchiver.js.map +1 -1
- package/dist/agent/managers/sessionManager.d.ts +286 -57
- package/dist/agent/managers/sessionManager.d.ts.map +1 -1
- package/dist/agent/managers/sessionManager.js +846 -85
- package/dist/agent/managers/sessionManager.js.map +1 -1
- package/dist/agent/managers/sessionNamer.d.ts +35 -0
- package/dist/agent/managers/sessionNamer.d.ts.map +1 -0
- package/dist/agent/managers/sessionNamer.js +104 -0
- package/dist/agent/managers/sessionNamer.js.map +1 -0
- package/dist/agent/managers/streamAccumulator.d.ts +20 -0
- package/dist/agent/managers/streamAccumulator.d.ts.map +1 -0
- package/dist/agent/managers/streamAccumulator.js +15 -0
- package/dist/agent/managers/streamAccumulator.js.map +1 -0
- package/dist/agent/managers/textPolishManager.d.ts +8 -44
- package/dist/agent/managers/textPolishManager.d.ts.map +1 -1
- package/dist/agent/managers/textPolishManager.js +12 -47
- package/dist/agent/managers/textPolishManager.js.map +1 -1
- package/dist/agent/managers/toolCallHelpers.d.ts +105 -0
- package/dist/agent/managers/toolCallHelpers.d.ts.map +1 -0
- package/dist/agent/managers/toolCallHelpers.js +161 -0
- package/dist/agent/managers/toolCallHelpers.js.map +1 -0
- package/dist/agent/managers/workProjection.d.ts +57 -87
- package/dist/agent/managers/workProjection.d.ts.map +1 -1
- package/dist/agent/managers/workProjection.js +166 -246
- package/dist/agent/managers/workProjection.js.map +1 -1
- package/dist/agent/messageHistory.d.ts +134 -84
- package/dist/agent/messageHistory.d.ts.map +1 -1
- package/dist/agent/messageHistory.js +419 -133
- package/dist/agent/messageHistory.js.map +1 -1
- package/dist/agent/needsPlanning.d.ts +28 -0
- package/dist/agent/needsPlanning.d.ts.map +1 -0
- package/dist/agent/needsPlanning.js +68 -0
- package/dist/agent/needsPlanning.js.map +1 -0
- package/dist/agent/seed/index.d.ts +11 -0
- package/dist/agent/seed/index.d.ts.map +1 -0
- package/dist/agent/seed/index.js +10 -0
- package/dist/agent/seed/index.js.map +1 -0
- package/dist/agent/seed/orchestrator.d.ts +83 -0
- package/dist/agent/seed/orchestrator.d.ts.map +1 -0
- package/dist/agent/seed/orchestrator.js +260 -0
- package/dist/agent/seed/orchestrator.js.map +1 -0
- package/dist/agent/seed/prepare.d.ts +49 -0
- package/dist/agent/seed/prepare.d.ts.map +1 -0
- package/dist/agent/seed/prepare.js +107 -0
- package/dist/agent/seed/prepare.js.map +1 -0
- package/dist/agent/seed/types.d.ts +115 -0
- package/dist/agent/seed/types.d.ts.map +1 -0
- package/dist/agent/seed/types.js +15 -0
- package/dist/agent/seed/types.js.map +1 -0
- package/dist/agent/sessionStateMachine.d.ts +78 -0
- package/dist/agent/sessionStateMachine.d.ts.map +1 -0
- package/dist/agent/sessionStateMachine.js +182 -0
- package/dist/agent/sessionStateMachine.js.map +1 -0
- package/dist/agent/taskTableRenderer.d.ts +51 -0
- package/dist/agent/taskTableRenderer.d.ts.map +1 -0
- package/dist/agent/taskTableRenderer.js +115 -0
- package/dist/agent/taskTableRenderer.js.map +1 -0
- package/dist/agent/toolExecutor.d.ts +255 -9
- package/dist/agent/toolExecutor.d.ts.map +1 -1
- package/dist/agent/toolExecutor.js +956 -20
- package/dist/agent/toolExecutor.js.map +1 -1
- package/dist/agent/toolLedger.d.ts +120 -0
- package/dist/agent/toolLedger.d.ts.map +1 -0
- package/dist/agent/toolLedger.js +149 -0
- package/dist/agent/toolLedger.js.map +1 -0
- package/dist/agent/toolResultCache.d.ts +134 -0
- package/dist/agent/toolResultCache.d.ts.map +1 -0
- package/dist/agent/toolResultCache.js +243 -0
- package/dist/agent/toolResultCache.js.map +1 -0
- package/dist/agent/toolResultOffload.d.ts +59 -0
- package/dist/agent/toolResultOffload.d.ts.map +1 -0
- package/dist/agent/toolResultOffload.js +70 -0
- package/dist/agent/toolResultOffload.js.map +1 -0
- package/dist/agent/toolRunner.d.ts +59 -0
- package/dist/agent/toolRunner.d.ts.map +1 -0
- package/dist/agent/toolRunner.js +147 -0
- package/dist/agent/toolRunner.js.map +1 -0
- package/dist/agent/tracer.d.ts +99 -107
- package/dist/agent/tracer.d.ts.map +1 -1
- package/dist/agent/tracer.js +24 -69
- package/dist/agent/tracer.js.map +1 -1
- package/dist/agent/types.d.ts +512 -162
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js +2 -51
- package/dist/agent/types.js.map +1 -1
- package/dist/code-exec/codeExecutionProvider.d.ts +16 -0
- package/dist/code-exec/codeExecutionProvider.d.ts.map +1 -0
- package/dist/code-exec/codeExecutionProvider.js +57 -0
- package/dist/code-exec/codeExecutionProvider.js.map +1 -0
- package/dist/code-exec/types.d.ts +37 -0
- package/dist/code-exec/types.d.ts.map +1 -0
- package/dist/code-exec/types.js +12 -0
- package/dist/code-exec/types.js.map +1 -0
- package/dist/config/expandEnvVars.d.ts +22 -0
- package/dist/config/expandEnvVars.d.ts.map +1 -0
- package/dist/config/expandEnvVars.js +38 -0
- package/dist/config/expandEnvVars.js.map +1 -0
- package/dist/config/loader.d.ts +59 -242
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +237 -194
- package/dist/config/loader.js.map +1 -1
- package/dist/index.d.ts +69 -74
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +93 -63
- package/dist/index.js.map +1 -1
- package/dist/llm/abortSignal.d.ts +2 -3
- package/dist/llm/abortSignal.d.ts.map +1 -1
- package/dist/llm/abortSignal.js +2 -3
- package/dist/llm/abortSignal.js.map +1 -1
- package/dist/llm/factory.d.ts +29 -25
- package/dist/llm/factory.d.ts.map +1 -1
- package/dist/llm/factory.js +34 -69
- package/dist/llm/factory.js.map +1 -1
- package/dist/llm/openaiCompatible.d.ts +25 -40
- package/dist/llm/openaiCompatible.d.ts.map +1 -1
- package/dist/llm/openaiCompatible.js +181 -129
- package/dist/llm/openaiCompatible.js.map +1 -1
- package/dist/llm/provider.d.ts +29 -42
- package/dist/llm/provider.d.ts.map +1 -1
- package/dist/llm/provider.js +11 -10
- package/dist/llm/provider.js.map +1 -1
- package/dist/llm/types.d.ts +54 -11
- package/dist/llm/types.d.ts.map +1 -1
- package/dist/llm/types.js +0 -5
- package/dist/llm/types.js.map +1 -1
- package/dist/logging/logger.d.ts +8 -29
- package/dist/logging/logger.d.ts.map +1 -1
- package/dist/logging/logger.js +43 -233
- package/dist/logging/logger.js.map +1 -1
- package/dist/logging/loggerInterface.d.ts +9 -8
- package/dist/logging/loggerInterface.d.ts.map +1 -1
- package/dist/memory/gcService.d.ts +164 -0
- package/dist/memory/gcService.d.ts.map +1 -0
- package/dist/memory/gcService.js +215 -0
- package/dist/memory/gcService.js.map +1 -0
- package/dist/memory/governance.d.ts +17 -0
- package/dist/memory/governance.d.ts.map +1 -0
- package/dist/memory/governance.js +17 -0
- package/dist/memory/governance.js.map +1 -0
- package/dist/memory/inMemoryRoundStore.d.ts +124 -0
- package/dist/memory/inMemoryRoundStore.d.ts.map +1 -0
- package/dist/memory/inMemoryRoundStore.js +216 -0
- package/dist/memory/inMemoryRoundStore.js.map +1 -0
- package/dist/memory/inMemorySessionStore.d.ts +92 -0
- package/dist/memory/inMemorySessionStore.d.ts.map +1 -0
- package/dist/memory/inMemorySessionStore.js +219 -0
- package/dist/memory/inMemorySessionStore.js.map +1 -0
- package/dist/memory/inMemorySessionViewLoader.d.ts +89 -0
- package/dist/memory/inMemorySessionViewLoader.d.ts.map +1 -0
- package/dist/memory/inMemorySessionViewLoader.js +183 -0
- package/dist/memory/inMemorySessionViewLoader.js.map +1 -0
- package/dist/memory/inMemoryStorage.d.ts +26 -141
- package/dist/memory/inMemoryStorage.d.ts.map +1 -1
- package/dist/memory/inMemoryStorage.js +48 -187
- package/dist/memory/inMemoryStorage.js.map +1 -1
- package/dist/memory/keywordsTouch.d.ts +20 -0
- package/dist/memory/keywordsTouch.d.ts.map +1 -0
- package/dist/memory/keywordsTouch.js +25 -0
- package/dist/memory/keywordsTouch.js.map +1 -0
- package/dist/memory/lockManager.d.ts +7 -2
- package/dist/memory/lockManager.d.ts.map +1 -1
- package/dist/memory/lockManager.js +35 -11
- package/dist/memory/lockManager.js.map +1 -1
- package/dist/memory/projectManager.d.ts +30 -128
- package/dist/memory/projectManager.d.ts.map +1 -1
- package/dist/memory/projectManager.js +39 -171
- package/dist/memory/projectManager.js.map +1 -1
- package/dist/memory/projectRegistry.d.ts +22 -37
- package/dist/memory/projectRegistry.d.ts.map +1 -1
- package/dist/memory/projectRegistry.js +78 -85
- package/dist/memory/projectRegistry.js.map +1 -1
- package/dist/memory/roundStore.d.ts +629 -0
- package/dist/memory/roundStore.d.ts.map +1 -0
- package/dist/memory/roundStore.js +116 -0
- package/dist/memory/roundStore.js.map +1 -0
- package/dist/memory/sessionStore.d.ts +70 -61
- package/dist/memory/sessionStore.d.ts.map +1 -1
- package/dist/memory/sessionStore.js +23 -1
- package/dist/memory/sessionStore.js.map +1 -1
- package/dist/memory/sessionViewLoader.d.ts +141 -0
- package/dist/memory/sessionViewLoader.d.ts.map +1 -0
- package/dist/memory/sessionViewLoader.js +65 -0
- package/dist/memory/sessionViewLoader.js.map +1 -0
- package/dist/memory/sourceValidation.d.ts +18 -9
- package/dist/memory/sourceValidation.d.ts.map +1 -1
- package/dist/memory/sourceValidation.js +35 -29
- package/dist/memory/sourceValidation.js.map +1 -1
- package/dist/memory/storageInterface.d.ts +45 -126
- package/dist/memory/storageInterface.d.ts.map +1 -1
- package/dist/memory/types.d.ts +82 -168
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/memory/types.js +116 -79
- package/dist/memory/types.js.map +1 -1
- package/dist/project-search/projectSearchProvider.d.ts +29 -0
- package/dist/project-search/projectSearchProvider.d.ts.map +1 -0
- package/dist/project-search/projectSearchProvider.js +57 -0
- package/dist/project-search/projectSearchProvider.js.map +1 -0
- package/dist/project-search/terms.d.ts +14 -0
- package/dist/project-search/terms.d.ts.map +1 -0
- package/dist/project-search/terms.js +68 -0
- package/dist/project-search/terms.js.map +1 -0
- package/dist/project-search/types.d.ts +139 -0
- package/dist/project-search/types.d.ts.map +1 -0
- package/dist/project-search/types.js +8 -0
- package/dist/project-search/types.js.map +1 -0
- package/dist/role-pack/capabilityMap.d.ts +28 -0
- package/dist/role-pack/capabilityMap.d.ts.map +1 -0
- package/dist/role-pack/capabilityMap.js +56 -0
- package/dist/role-pack/capabilityMap.js.map +1 -0
- package/dist/role-pack/constants.d.ts +21 -0
- package/dist/role-pack/constants.d.ts.map +1 -0
- package/dist/role-pack/constants.js +21 -0
- package/dist/role-pack/constants.js.map +1 -0
- package/dist/role-pack/rolePackManager.d.ts +269 -0
- package/dist/role-pack/rolePackManager.d.ts.map +1 -0
- package/dist/role-pack/rolePackManager.js +1082 -0
- package/dist/role-pack/rolePackManager.js.map +1 -0
- package/dist/role-pack/strategyKeys.d.ts +100 -0
- package/dist/role-pack/strategyKeys.d.ts.map +1 -0
- package/dist/role-pack/strategyKeys.js +184 -0
- package/dist/role-pack/strategyKeys.js.map +1 -0
- package/dist/role-pack/strategyResolver.d.ts +109 -0
- package/dist/role-pack/strategyResolver.d.ts.map +1 -0
- package/dist/role-pack/strategyResolver.js +304 -0
- package/dist/role-pack/strategyResolver.js.map +1 -0
- package/dist/role-pack/types.d.ts +237 -0
- package/dist/role-pack/types.d.ts.map +1 -0
- package/dist/role-pack/types.js +8 -0
- package/dist/role-pack/types.js.map +1 -0
- package/dist/role-pack/validator.d.ts +38 -0
- package/dist/role-pack/validator.d.ts.map +1 -0
- package/dist/role-pack/validator.js +436 -0
- package/dist/role-pack/validator.js.map +1 -0
- package/dist/security/pathGuard.d.ts +69 -72
- package/dist/security/pathGuard.d.ts.map +1 -1
- package/dist/security/pathGuard.js +151 -131
- package/dist/security/pathGuard.js.map +1 -1
- package/dist/skill/skillLayer3.d.ts +91 -0
- package/dist/skill/skillLayer3.d.ts.map +1 -0
- package/dist/skill/skillLayer3.js +104 -0
- package/dist/skill/skillLayer3.js.map +1 -0
- package/dist/skill/skillManager.d.ts +127 -56
- package/dist/skill/skillManager.d.ts.map +1 -1
- package/dist/skill/skillManager.js +318 -163
- package/dist/skill/skillManager.js.map +1 -1
- package/dist/skill/skillScriptRunner.d.ts +97 -0
- package/dist/skill/skillScriptRunner.d.ts.map +1 -0
- package/dist/skill/skillScriptRunner.js +271 -0
- package/dist/skill/skillScriptRunner.js.map +1 -0
- package/dist/skill/types.d.ts +73 -17
- package/dist/skill/types.d.ts.map +1 -1
- package/dist/skill/types.js +5 -1
- package/dist/skill/types.js.map +1 -1
- package/dist/utils/array.d.ts +5 -6
- package/dist/utils/array.d.ts.map +1 -1
- package/dist/utils/array.js +6 -6
- package/dist/utils/array.js.map +1 -1
- package/dist/utils/atomicWrite.d.ts +8 -0
- package/dist/utils/atomicWrite.d.ts.map +1 -0
- package/dist/utils/atomicWrite.js +31 -0
- package/dist/utils/atomicWrite.js.map +1 -0
- package/dist/utils/backgroundTask.d.ts +38 -0
- package/dist/utils/backgroundTask.d.ts.map +1 -0
- package/dist/utils/backgroundTask.js +117 -0
- package/dist/utils/backgroundTask.js.map +1 -0
- package/dist/utils/configResourceManager.d.ts +79 -0
- package/dist/utils/configResourceManager.d.ts.map +1 -0
- package/dist/utils/configResourceManager.js +150 -0
- package/dist/utils/configResourceManager.js.map +1 -0
- package/dist/utils/errors.d.ts +48 -56
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +60 -58
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/eventEmitter.d.ts +141 -63
- package/dist/utils/eventEmitter.d.ts.map +1 -1
- package/dist/utils/eventEmitter.js +50 -35
- package/dist/utils/eventEmitter.js.map +1 -1
- package/dist/utils/fileSafe.d.ts +20 -0
- package/dist/utils/fileSafe.d.ts.map +1 -0
- package/dist/utils/fileSafe.js +56 -0
- package/dist/utils/fileSafe.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +2 -3
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +6 -5
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/hash.d.ts +12 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +27 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/http.d.ts +17 -0
- package/dist/utils/http.d.ts.map +1 -0
- package/dist/utils/http.js +29 -0
- package/dist/utils/http.js.map +1 -0
- package/dist/utils/json.d.ts +1 -1
- package/dist/utils/json.js +1 -1
- package/dist/utils/math.d.ts +34 -1
- package/dist/utils/math.d.ts.map +1 -1
- package/dist/utils/math.js +47 -14
- package/dist/utils/math.js.map +1 -1
- package/dist/utils/objects.d.ts +2 -3
- package/dist/utils/objects.d.ts.map +1 -1
- package/dist/utils/objects.js +2 -3
- package/dist/utils/objects.js.map +1 -1
- package/dist/utils/recallDefaults.d.ts +16 -0
- package/dist/utils/recallDefaults.d.ts.map +1 -0
- package/dist/utils/recallDefaults.js +16 -0
- package/dist/utils/recallDefaults.js.map +1 -0
- package/dist/utils/safeTimer.d.ts +8 -36
- package/dist/utils/safeTimer.d.ts.map +1 -1
- package/dist/utils/safeTimer.js +9 -37
- package/dist/utils/safeTimer.js.map +1 -1
- package/dist/utils/scanner.d.ts +97 -17
- package/dist/utils/scanner.d.ts.map +1 -1
- package/dist/utils/scanner.js +269 -47
- package/dist/utils/scanner.js.map +1 -1
- package/dist/utils/segmenter.d.ts +20 -29
- package/dist/utils/segmenter.d.ts.map +1 -1
- package/dist/utils/segmenter.js +230 -88
- package/dist/utils/segmenter.js.map +1 -1
- package/dist/utils/strings.d.ts +15 -32
- package/dist/utils/strings.d.ts.map +1 -1
- package/dist/utils/strings.js +25 -44
- package/dist/utils/strings.js.map +1 -1
- package/dist/utils/time.d.ts +37 -0
- package/dist/utils/time.d.ts.map +1 -1
- package/dist/utils/time.js +56 -0
- package/dist/utils/time.js.map +1 -1
- package/dist/utils/toError.d.ts +13 -1
- package/dist/utils/toError.d.ts.map +1 -1
- package/dist/utils/toError.js +18 -1
- package/dist/utils/toError.js.map +1 -1
- package/dist/web-fetch/fetchWebFetchProvider.d.ts +14 -0
- package/dist/web-fetch/fetchWebFetchProvider.d.ts.map +1 -0
- package/dist/web-fetch/fetchWebFetchProvider.js +69 -0
- package/dist/web-fetch/fetchWebFetchProvider.js.map +1 -0
- package/dist/web-fetch/types.d.ts +30 -0
- package/dist/web-fetch/types.d.ts.map +1 -0
- package/dist/web-fetch/types.js +7 -0
- package/dist/web-fetch/types.js.map +1 -0
- package/dist/web-fetch/webFetchProvider.d.ts +10 -0
- package/dist/web-fetch/webFetchProvider.d.ts.map +1 -0
- package/dist/web-fetch/webFetchProvider.js +28 -0
- package/dist/web-fetch/webFetchProvider.js.map +1 -0
- package/dist/web-search/fetchWebSearchProvider.d.ts +27 -0
- package/dist/web-search/fetchWebSearchProvider.d.ts.map +1 -0
- package/dist/web-search/fetchWebSearchProvider.js +199 -0
- package/dist/web-search/fetchWebSearchProvider.js.map +1 -0
- package/dist/web-search/types.d.ts +46 -0
- package/dist/web-search/types.d.ts.map +1 -0
- package/dist/web-search/types.js +2 -0
- package/dist/{persona → web-search}/types.js.map +1 -1
- package/dist/web-search/webSearchProvider.d.ts +10 -0
- package/dist/web-search/webSearchProvider.d.ts.map +1 -0
- package/dist/web-search/webSearchProvider.js +30 -0
- package/dist/web-search/webSearchProvider.js.map +1 -0
- package/docs/architecture/role-pack-authoring-guide.md +243 -0
- package/docs/architecture/role-pack-spec.md +767 -0
- package/docs/memora-api-reference.md +1175 -0
- package/docs/memora-/346/216/245/345/205/245/346/214/207/345/215/227.md +843 -0
- package/docs/role-pack-/345/274/200/346/224/276/351/224/256/346/214/207/345/215/227.md +148 -0
- package/package.json +105 -83
- package/role-packs/README.md +41 -0
- package/role-packs/memora/345/212/251/346/211/213/manifest.json +12 -0
- package/role-packs/memora/345/212/251/346/211/213/persona.md +12 -0
- package/role-packs/memora/345/212/251/346/211/213/rules.md +4 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/manifest.json +44 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/persona.md +46 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/rules.md +15 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/character-sheet.md +34 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/core-extractor.md +37 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/craft-review.md +69 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/dialogue-craft.md +45 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/emotion-wave.md +46 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/empathy-craft.md +79 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/foreshadow.md +29 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/hotspot-mapping.md +121 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/idea-lever.md +42 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/logline-craft.md +47 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/longform-guard.md +64 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/need-finder.md +40 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/outline-expand.md +46 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/pacing-hook.md +34 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/polish-method.md +113 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/pov-discipline.md +79 -0
- 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
- 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
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/relationship-web.md +47 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/scene-craft.md +46 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/story-bible.md +60 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/story-structure.md +36 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/style-weaver.md +109 -0
- 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
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/world-builder.md +41 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/dist/agent/guardrail.d.ts +0 -47
- package/dist/agent/guardrail.d.ts.map +0 -1
- package/dist/agent/guardrail.js +0 -51
- package/dist/agent/guardrail.js.map +0 -1
- package/dist/agent/managers/autoConfigRefiner.d.ts +0 -39
- package/dist/agent/managers/autoConfigRefiner.d.ts.map +0 -1
- package/dist/agent/managers/autoConfigRefiner.js +0 -150
- package/dist/agent/managers/autoConfigRefiner.js.map +0 -1
- package/dist/agent/managers/configManager.d.ts +0 -125
- package/dist/agent/managers/configManager.d.ts.map +0 -1
- package/dist/agent/managers/configManager.js +0 -194
- package/dist/agent/managers/configManager.js.map +0 -1
- package/dist/agent/managers/insightExtractor.d.ts +0 -139
- package/dist/agent/managers/insightExtractor.d.ts.map +0 -1
- package/dist/agent/managers/insightExtractor.js +0 -401
- package/dist/agent/managers/insightExtractor.js.map +0 -1
- package/dist/agent/managers/memoryDecayScheduler.d.ts +0 -198
- package/dist/agent/managers/memoryDecayScheduler.d.ts.map +0 -1
- package/dist/agent/managers/memoryDecayScheduler.js +0 -349
- package/dist/agent/managers/memoryDecayScheduler.js.map +0 -1
- package/dist/agent/managers/relationBuilder.d.ts +0 -131
- package/dist/agent/managers/relationBuilder.d.ts.map +0 -1
- package/dist/agent/managers/relationBuilder.js +0 -192
- package/dist/agent/managers/relationBuilder.js.map +0 -1
- package/dist/agent/personaMatcher.d.ts +0 -29
- package/dist/agent/personaMatcher.d.ts.map +0 -1
- package/dist/agent/personaMatcher.js +0 -60
- package/dist/agent/personaMatcher.js.map +0 -1
- package/dist/agent/userFactExtractor.d.ts +0 -25
- package/dist/agent/userFactExtractor.d.ts.map +0 -1
- package/dist/agent/userFactExtractor.js +0 -81
- package/dist/agent/userFactExtractor.js.map +0 -1
- package/dist/eval/evalRunner.d.ts +0 -94
- package/dist/eval/evalRunner.d.ts.map +0 -1
- package/dist/eval/evalRunner.js +0 -141
- package/dist/eval/evalRunner.js.map +0 -1
- package/dist/eval/evalTypes.d.ts +0 -148
- package/dist/eval/evalTypes.d.ts.map +0 -1
- package/dist/eval/evalTypes.js +0 -118
- package/dist/eval/evalTypes.js.map +0 -1
- package/dist/eval/scenarios.d.ts +0 -33
- package/dist/eval/scenarios.d.ts.map +0 -1
- package/dist/eval/scenarios.js +0 -109
- package/dist/eval/scenarios.js.map +0 -1
- package/dist/llm/embedding.d.ts +0 -67
- package/dist/llm/embedding.d.ts.map +0 -1
- package/dist/llm/embedding.js +0 -184
- package/dist/llm/embedding.js.map +0 -1
- package/dist/memory/hybridMerge.d.ts +0 -54
- package/dist/memory/hybridMerge.d.ts.map +0 -1
- package/dist/memory/hybridMerge.js +0 -36
- package/dist/memory/hybridMerge.js.map +0 -1
- package/dist/memory/inMemoryRelationStore.d.ts +0 -51
- package/dist/memory/inMemoryRelationStore.d.ts.map +0 -1
- package/dist/memory/inMemoryRelationStore.js +0 -65
- package/dist/memory/inMemoryRelationStore.js.map +0 -1
- package/dist/memory/loader.d.ts +0 -49
- package/dist/memory/loader.d.ts.map +0 -1
- package/dist/memory/loader.js +0 -93
- package/dist/memory/loader.js.map +0 -1
- package/dist/memory/recall.d.ts +0 -66
- package/dist/memory/recall.d.ts.map +0 -1
- package/dist/memory/recall.js +0 -142
- package/dist/memory/recall.js.map +0 -1
- package/dist/memory/relationStore.d.ts +0 -78
- package/dist/memory/relationStore.d.ts.map +0 -1
- package/dist/memory/relationStore.js +0 -2
- package/dist/memory/relationStore.js.map +0 -1
- package/dist/memory/store.d.ts +0 -50
- package/dist/memory/store.d.ts.map +0 -1
- package/dist/memory/store.js +0 -161
- package/dist/memory/store.js.map +0 -1
- package/dist/memory/userProfile.d.ts +0 -156
- package/dist/memory/userProfile.d.ts.map +0 -1
- package/dist/memory/userProfile.js +0 -320
- package/dist/memory/userProfile.js.map +0 -1
- package/dist/memory/vectorStore.d.ts +0 -185
- package/dist/memory/vectorStore.d.ts.map +0 -1
- package/dist/memory/vectorStore.js +0 -257
- package/dist/memory/vectorStore.js.map +0 -1
- package/dist/persona/personaManager.d.ts +0 -160
- package/dist/persona/personaManager.d.ts.map +0 -1
- package/dist/persona/personaManager.js +0 -414
- package/dist/persona/personaManager.js.map +0 -1
- package/dist/persona/types.d.ts +0 -32
- package/dist/persona/types.d.ts.map +0 -1
- package/dist/persona/types.js +0 -5
|
@@ -2,12 +2,11 @@
|
|
|
2
2
|
* Source 校验工具 — 从 memory/types.ts 提取的运行时函数
|
|
3
3
|
*
|
|
4
4
|
* 职责:
|
|
5
|
-
* -
|
|
6
|
-
* - escapeLike:转义 SQL LIKE 通配符
|
|
5
|
+
* - escapeLike:转义 SQL LIKE 通配符(须配套 SQL 的 `ESCAPE '\'` 子句,否则转义失效)
|
|
7
6
|
* - validateSource:校验 source 字段安全性和拼写
|
|
8
|
-
* - levenshtein
|
|
7
|
+
* - levenshtein:简单编辑距离计算(输入限短字符串;本文件 :121 用于标签 typo 检测,另导出供 DedupManager 名称相似度复用)
|
|
9
8
|
*
|
|
10
|
-
*
|
|
9
|
+
* 设计原则:
|
|
11
10
|
* - source 是开放字符串,新增来源无需改代码
|
|
12
11
|
* - 校验仅做 typo 检测,不阻止写入(保持开放性)
|
|
13
12
|
* - 安全边界(路径遍历、null 字节)必须拒绝
|
|
@@ -21,28 +20,12 @@ import { SOURCE_LABELS } from '../memory/types.js';
|
|
|
21
20
|
*/
|
|
22
21
|
const KNOWN_SOURCES = new Set(Object.values(SOURCE_LABELS));
|
|
23
22
|
/**
|
|
24
|
-
*
|
|
23
|
+
* 转义 LIKE 通配符(`%` → `\%`、`_` → `\_`)
|
|
25
24
|
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
|
|
30
|
-
export function inferSource(filePath, frontmatterSource) {
|
|
31
|
-
// 优先:frontmatter 中显式声明的 source
|
|
32
|
-
if (frontmatterSource)
|
|
33
|
-
return frontmatterSource;
|
|
34
|
-
// 回退:目录路径映射(使用路径分隔符匹配,避免 'other-personas/' 误匹配)
|
|
35
|
-
if (/[\\/]personas[\\/]/.test(filePath))
|
|
36
|
-
return SOURCE_LABELS.PERSONA;
|
|
37
|
-
if (/[\\/]rules[\\/]/.test(filePath))
|
|
38
|
-
return SOURCE_LABELS.RULE;
|
|
39
|
-
if (/[\\/]skills[\\/]/.test(filePath))
|
|
40
|
-
return SOURCE_LABELS.SKILL;
|
|
41
|
-
// 默认
|
|
42
|
-
return 'unknown';
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* 转义 LIKE 通配符,防止注入
|
|
25
|
+
* ⚠️ 必须与 SQL 的 `ESCAPE '\'` 配套使用,即 `LIKE ? ESCAPE '\'`:
|
|
26
|
+
* 未写 ESCAPE 子句时反斜杠被当作普通字符,转义后的模式匹配不到任何含 `%`/`_` 的字面值,
|
|
27
|
+
* 查询静默返回空——比不转义更隐蔽(不转义是过度召回,漏转义是零召回)。
|
|
28
|
+
* 参数本身仍须用 `?` 占位绑定,转义只解决语义、不解决注入。
|
|
46
29
|
*
|
|
47
30
|
* @param str - 原始字符串
|
|
48
31
|
* @returns 转义后的字符串
|
|
@@ -50,6 +33,20 @@ export function inferSource(filePath, frontmatterSource) {
|
|
|
50
33
|
export function escapeLike(str) {
|
|
51
34
|
return str.replace(/[%_]/g, '\\$&');
|
|
52
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* 截取字符串前 maxLen 字符后转义 LIKE 通配符
|
|
38
|
+
*
|
|
39
|
+
* 用于将用户输入 / round-summary 记忆文本作为关键词搜索 SQL LIKE 查询的输入。
|
|
40
|
+
* 截断避免超长输入导致 LIKE 解析性能问题,转义防止通配符被当作模式符。
|
|
41
|
+
* 同 `escapeLike`:SQL 侧必须写 `LIKE ? ESCAPE '\'`,否则转义后的模式查不到字面值。
|
|
42
|
+
*
|
|
43
|
+
* @param text - 原始文本(用户输入 / round-summary 内容)
|
|
44
|
+
* @param maxLen - 最大截取长度,默认 50
|
|
45
|
+
* @returns 截断 + 转义后的字符串
|
|
46
|
+
*/
|
|
47
|
+
export function escapeLikeSnippet(text, maxLen = 50) {
|
|
48
|
+
return escapeLike(text.slice(0, maxLen));
|
|
49
|
+
}
|
|
53
50
|
/**
|
|
54
51
|
* 校验 source 字段是否为已知标签
|
|
55
52
|
*
|
|
@@ -86,6 +83,15 @@ export function validateSource(source) {
|
|
|
86
83
|
warning: `source 不能包含路径遍历序列:"${source}"`,
|
|
87
84
|
};
|
|
88
85
|
}
|
|
86
|
+
// 路径分隔符(/ 或 \)同样构成目录穿越:source="rules/secret" 可落入保留的
|
|
87
|
+
// rules/ 目录子树,污染命名空间。source 是扁平标签,必须拒绝分隔符。
|
|
88
|
+
if (source.includes('/') || source.includes('\\')) {
|
|
89
|
+
return {
|
|
90
|
+
valid: false,
|
|
91
|
+
severity: 'block',
|
|
92
|
+
warning: `source 不能包含路径分隔符(/ 或 \\):"${source}"`,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
89
95
|
if (source.includes('\0')) {
|
|
90
96
|
return {
|
|
91
97
|
valid: false,
|
|
@@ -109,7 +115,7 @@ export function validateSource(source) {
|
|
|
109
115
|
/**
|
|
110
116
|
* 简单 Levenshtein 距离计算(仅用于短字符串,不做优化)
|
|
111
117
|
*
|
|
112
|
-
*
|
|
118
|
+
* 同文件 :121 用于标签 typo 检测;另导出供 DedupManager(语义去重场景的名称相似度)复用。
|
|
113
119
|
*/
|
|
114
120
|
export function levenshtein(a, b) {
|
|
115
121
|
if (a.length === 0)
|
|
@@ -119,13 +125,13 @@ export function levenshtein(a, b) {
|
|
|
119
125
|
const matrix = [];
|
|
120
126
|
for (let i = 0; i <= b.length; i++)
|
|
121
127
|
matrix[i] = [i];
|
|
122
|
-
//
|
|
128
|
+
// 移除非空断言:提取局部变量并 null 检查
|
|
123
129
|
const row0 = matrix[0];
|
|
124
130
|
if (row0)
|
|
125
131
|
for (let j = 0; j <= a.length; j++)
|
|
126
132
|
row0[j] = j;
|
|
127
133
|
for (let i = 1; i <= b.length; i++) {
|
|
128
|
-
//
|
|
134
|
+
// 移除非空断言:提取局部变量,用 ?? 0 兜底(初始化保证值存在)
|
|
129
135
|
const rowI = matrix[i];
|
|
130
136
|
const rowPrev = matrix[i - 1];
|
|
131
137
|
if (!rowI || !rowPrev)
|
|
@@ -135,7 +141,7 @@ export function levenshtein(a, b) {
|
|
|
135
141
|
rowI[j] = Math.min((rowPrev[j] ?? 0) + 1, (rowI[j - 1] ?? 0) + 1, (rowPrev[j - 1] ?? 0) + cost);
|
|
136
142
|
}
|
|
137
143
|
}
|
|
138
|
-
//
|
|
144
|
+
// 移除非空断言:使用可选链 + 空值合并兜底
|
|
139
145
|
return matrix[b.length]?.[a.length] ?? 0;
|
|
140
146
|
}
|
|
141
147
|
//# sourceMappingURL=sourceValidation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sourceValidation.js","sourceRoot":"","sources":["../../src/memory/sourceValidation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"sourceValidation.js","sourceRoot":"","sources":["../../src/memory/sourceValidation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,173 +1,92 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 记忆存储接口 — Memora 内核与具体数据库实现的解耦边界
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* 分层约束(ADR-002 v0.7):
|
|
11
|
-
* 泊文宿主 → 持有 better-sqlite3,实现 IMemoryStorage,注入 Agent
|
|
12
|
-
* Memora 内核 → 纯业务逻辑,仅依赖此接口(零 native 依赖)
|
|
13
|
-
*
|
|
14
|
-
* 方法签名保持同步语义(与 better-sqlite3 一致),
|
|
15
|
-
* 调用方已有的 `await` 调用仍然安全(await 同步值 = 立即返回)。
|
|
16
|
-
*
|
|
17
|
-
* 软删除语义:
|
|
18
|
-
* - delete(id) 为软删除,写入 deletedAt,不物理移除
|
|
19
|
-
* - 所有查询方法(getById/getBySource/search/count/countBySource/decayScores/getAllSources)
|
|
20
|
-
* 自动过滤 deletedAt != undefined 的记忆
|
|
21
|
-
* - restore(id) 恢复软删除记忆,purge(id) 物理删除
|
|
22
|
-
* - listDeleted(limit) 列出回收站,purgeExpired(before) 清理过期回收站
|
|
23
|
-
* - 详见 ADR-004 v2.1 软删除扩展
|
|
4
|
+
* 内核(agent/ + memory/ + persona/ + skill/)不依赖具体数据库:宿主(如泊文 Electron
|
|
5
|
+
* 主进程)持有 better-sqlite3 实例并实现此接口注入 Agent;测试用 InMemoryStorage;不注入时
|
|
6
|
+
* Agent 内部用 InMemoryStorage 作 fallback(重启后数据丢失)。方法保持同步语义,调用方已有
|
|
7
|
+
* await 调用仍安全。软删除语义:delete 写入 deletedAt,查询类方法自动过滤已删除记忆,
|
|
8
|
+
* restore 恢复,purge 物理删,listDeleted/purgeExpired 管理回收站。
|
|
24
9
|
*/
|
|
25
10
|
import type { Memory } from '../memory/types.js';
|
|
26
11
|
/**
|
|
27
|
-
* 记忆存储接口
|
|
12
|
+
* 记忆存储接口 — 所有方法同步(对齐 better-sqlite3),可后续新增 IAsyncMemoryStorage 支持异步后端。
|
|
28
13
|
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
14
|
+
* ⚠️ 契约隐含假设(宿主实现须知):同步语义要求单次调用低延迟。JSON 文件落地实现(如 vscode 宿主
|
|
15
|
+
* workspaceStorage)在记忆量增长时,upsert 等写路径会触发全量 `JSON.stringify` 重写,
|
|
16
|
+
* 1 万条规模即达 MB 级单次同步 I/O,会阻塞事件循环。因此:**生产由宿主注入持久化实现**——当前
|
|
17
|
+
* vscode 宿主为 JSON 文件(WorkspaceStorage,小规模够用);记忆量增长时建议宿主评估更优存储
|
|
18
|
+
* (如 better-sqlite3,同步语义与本接口对齐);InMemoryStorage 仅用于测试与未注入时 fallback。
|
|
32
19
|
*/
|
|
33
20
|
export interface IMemoryStorage {
|
|
34
21
|
/**
|
|
35
|
-
*
|
|
36
|
-
|
|
37
|
-
*
|
|
22
|
+
* 插入或更新记忆;source 为开放字符串可自定义,但写入须经 validateSource 统一校验
|
|
23
|
+
*(内核 inMemoryStorage 与宿主 workspaceStorage 均接入 block/warn 分级拦截)。
|
|
24
|
+
* 契约:整对象覆盖、无 CAS 乐观锁——单 Agent 设计假设;
|
|
25
|
+
* 多 Agent 并发写同会话需扩展版本字段/条件更新,内核当前不承诺并发一致性。
|
|
38
26
|
*/
|
|
39
27
|
upsert(memory: Memory): void;
|
|
40
28
|
/**
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
* 语义为"移入回收站":写入 deletedAt 时间戳,不物理移除。
|
|
44
|
-
* - 召回/搜索/列表/统计自动过滤已软删除的记忆
|
|
45
|
-
* - 可通过 restore(id) 恢复
|
|
46
|
-
* - 回收站保留期过后由 purgeExpired(before) 物理清理
|
|
47
|
-
*
|
|
48
|
-
* 对已软删除的记忆调用为 no-op。
|
|
49
|
-
*
|
|
50
|
-
* @param id - 记忆 ID
|
|
29
|
+
* 软删除(移入回收站):写入 deletedAt,不物理移除;对已软删除的记忆为 no-op。
|
|
30
|
+
* 召回/搜索/列表/统计自动过滤,可 restore 恢复,回收站保留期满由 purgeExpired 物理清理
|
|
51
31
|
*/
|
|
52
32
|
delete(id: string): void;
|
|
53
|
-
/**
|
|
54
|
-
* 恢复软删除的记忆
|
|
55
|
-
*
|
|
56
|
-
* 将 deletedAt 字段清除,使记忆重新出现在召回/搜索/列表中。
|
|
57
|
-
* 对活跃记忆调用为 no-op。
|
|
58
|
-
*
|
|
59
|
-
* @param id - 记忆 ID
|
|
60
|
-
*/
|
|
33
|
+
/** 恢复软删除记忆(清除 deletedAt);对活跃记忆为 no-op */
|
|
61
34
|
restore(id: string): void;
|
|
62
|
-
/**
|
|
63
|
-
* 物理删除记忆
|
|
64
|
-
*
|
|
65
|
-
* 从存储中彻底移除,不可恢复。
|
|
66
|
-
* 用于回收站的"彻底删除"操作,或测试环境的强制清理。
|
|
67
|
-
*
|
|
68
|
-
* @param id - 记忆 ID
|
|
69
|
-
*/
|
|
35
|
+
/** 物理删除,不可恢复;用于回收站彻底删除或测试强制清理 */
|
|
70
36
|
purge(id: string): void;
|
|
71
37
|
/**
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
* 按 deletedAt 降序(最近删除的在前),便于回收站 UI 展示。
|
|
75
|
-
*
|
|
76
|
-
* @param limit - 返回数量上限(默认 50)
|
|
38
|
+
* 列出回收站软删除记忆,按 deletedAt 降序(最近删除在前)
|
|
39
|
+
* @param limit - 上限;<=0 或 undefined 表示全部,正整数 N 表示最近 N 条
|
|
77
40
|
* @returns 软删除记忆列表(浅拷贝)
|
|
78
41
|
*/
|
|
79
42
|
listDeleted(limit?: number): Memory[];
|
|
80
43
|
/**
|
|
81
|
-
* 按 ID
|
|
82
|
-
*
|
|
83
|
-
* 用于 restore/purge 操作前的存在性校验,避免 listDeleted() 默认 50 上限
|
|
84
|
-
* 导致回收站超量时第 51 条之后的记忆无法 restore/purge。
|
|
85
|
-
*
|
|
86
|
-
* @param id - 记忆 ID
|
|
44
|
+
* 按 ID 获取单条软删除记忆;用于 restore/purge 前的存在性校验,
|
|
45
|
+
* 单条精确查询,免去拉取整个回收站列表做 O(n) 扫描
|
|
87
46
|
* @returns 软删除记忆(浅拷贝),不存在或未软删除时返回 null
|
|
88
47
|
*/
|
|
89
48
|
getDeletedById(id: string): Memory | null;
|
|
90
49
|
/**
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
* 由宿主项目的定时器调用(默认 30 天保留期)。
|
|
95
|
-
*
|
|
96
|
-
* @param before - 时间阈值,deletedAt 早于此值的记忆将被物理删除
|
|
50
|
+
* 物理删除所有 deletedAt 早于 before 的记忆;由宿主治理入口显式调用
|
|
51
|
+
* (命令 memora.cleanupMemories / 设置面板「清理过期」)。内核不持定时器,
|
|
52
|
+
* 回收站保留期策略(天数)归宿主决定
|
|
97
53
|
* @returns 被清理的记忆数量
|
|
98
54
|
*/
|
|
99
55
|
purgeExpired(before: Date): number;
|
|
100
|
-
/**
|
|
101
|
-
* 按 ID 获取单条活跃记忆
|
|
102
|
-
*
|
|
103
|
-
* 已软删除的记忆(deletedAt != undefined)返回 null。
|
|
104
|
-
* 如需获取软删除记忆,请使用 listDeleted()。
|
|
105
|
-
*/
|
|
56
|
+
/** 按 ID 获取单条活跃记忆;已软删除的返回 null(软删除记忆用 listDeleted) */
|
|
106
57
|
getById(id: string): Memory | null;
|
|
107
|
-
/**
|
|
108
|
-
* 按来源标签获取活跃记忆(自动过滤已软删除的)
|
|
109
|
-
*
|
|
110
|
-
* @param source - 来源标签(如 'persona'、'rule'、'insight')
|
|
111
|
-
* @returns 该来源的所有活跃记忆
|
|
112
|
-
*/
|
|
58
|
+
/** 按来源标签获取活跃记忆(自动过滤已软删除的) */
|
|
113
59
|
getBySource(source: string): Memory[];
|
|
114
60
|
/**
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
* 4. 返回 top N 结果
|
|
122
|
-
*
|
|
123
|
-
* InMemoryStorage 使用 segmentText() 规范分词 + includes 匹配(与 SqliteStorage 行为一致)。
|
|
124
|
-
*
|
|
125
|
-
* @param query - 搜索查询文本
|
|
126
|
-
* @param limit - 返回数量上限(默认 10)
|
|
127
|
-
* @returns 匹配的活跃记忆列表
|
|
61
|
+
* 关键词搜索活跃记忆。宿主实现:Intl.Segmenter 分词 + 停用词过滤,
|
|
62
|
+
* LIKE 匹配 content/name,按 accessedAt 降序(最近使用优先)返回 top N。
|
|
63
|
+
* SQL 后端配合 `escapeLike()` 转义后,必须写成 `LIKE ? ESCAPE '\'`——
|
|
64
|
+
* 缺 ESCAPE 子句则转义后的模式匹配不到含 `%`/`_` 的字面值,查询静默返回空。
|
|
65
|
+
* InMemoryStorage 用 segmentText() 分词 + includes 匹配(无 SQL 转义语义)
|
|
66
|
+
* @param limit - 返回上限(默认 10)
|
|
128
67
|
*/
|
|
129
68
|
search(query: string, limit?: number): Memory[];
|
|
130
69
|
/**
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
* 比 search('', largeLimit).length 更高效,避免全量加载数据。
|
|
134
|
-
* 宿主实现应使用 COUNT(*) WHERE deleted_at IS NULL。
|
|
70
|
+
* 统计活跃记忆总数;比 search('', largeLimit).length 高效,宿主用 COUNT(*) WHERE deleted_at IS NULL
|
|
135
71
|
*/
|
|
136
72
|
count(): number;
|
|
137
|
-
/**
|
|
138
|
-
* 按来源标签统计活跃记忆数量(不含已软删除的)
|
|
139
|
-
*
|
|
140
|
-
* 比 getBySource(source).length 更高效,避免全量加载对象。
|
|
141
|
-
* 宿主实现应使用 COUNT(*) WHERE source = ? AND deleted_at IS NULL。
|
|
142
|
-
*/
|
|
73
|
+
/** 按来源统计活跃记忆数量(高效版,宿主用 COUNT(*) GROUP BY) */
|
|
143
74
|
countBySource(source: string): number;
|
|
144
75
|
/**
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
* 宿主实现(SqliteStorage)可用一条 SQL UPDATE 批量完成,
|
|
149
|
-
* 避免内核逐条全量加载。
|
|
150
|
-
*
|
|
151
|
-
* @param sources - 要衰减的来源标签列表(如 ['insight', 'profile'])
|
|
152
|
-
* @param now - 当前时间
|
|
153
|
-
* @returns 受影响的记忆数量
|
|
76
|
+
* 刷新记忆 accessedAt(使用轨迹唯一写位)。
|
|
77
|
+
* 召回命中 / 工具命中经此「被想起即刷新」;toSetting 不 +score/delta,无 clamp 语义。
|
|
78
|
+
* @returns 记忆不存在/软删除时返回 false,成功返回 true
|
|
154
79
|
*/
|
|
155
|
-
|
|
80
|
+
touch(id: string, now: string): boolean;
|
|
156
81
|
/**
|
|
157
|
-
* 获取所有 source
|
|
158
|
-
*
|
|
159
|
-
* 优化:替代 stats()/sourceHealth() 中的全量 search + 逐条遍历,
|
|
160
|
-
* 宿主实现应使用 SQL `SELECT source, COUNT(*) FROM memories WHERE deleted_at IS NULL GROUP BY source`,
|
|
161
|
-
* InMemoryStorage 维护增量更新的 source→count 缓存。
|
|
162
|
-
*
|
|
163
|
-
* @returns source 标签到数量的映射(如 { persona: 3, insight: 12, ... })
|
|
82
|
+
* 获取所有 source 标签及活跃记忆数量;替代 stats()/sourceHealth() 的全量遍历,
|
|
83
|
+
* 宿主用 SQL GROUP BY source,InMemoryStorage 维护增量 source→count 缓存
|
|
164
84
|
*/
|
|
165
85
|
getAllSources(): Map<string, number>;
|
|
166
86
|
/**
|
|
167
|
-
*
|
|
168
|
-
*
|
|
169
|
-
*
|
|
170
|
-
* 所以此方法是可选的。
|
|
87
|
+
* 可选:终结操作,调用后本实例不得再读写。落盘实现断开连接但数据保留;
|
|
88
|
+
* InMemoryStorage 则丢弃全部记忆(内存即存储介质,不释放就是泄漏)。
|
|
89
|
+
* 不可当作可逆的「暂停」——会话暂停/检查点恢复不得触碰,否则连带清空资源层记忆
|
|
171
90
|
*/
|
|
172
91
|
close?(): void;
|
|
173
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storageInterface.d.ts","sourceRoot":"","sources":["../../src/memory/storageInterface.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"storageInterface.d.ts","sourceRoot":"","sources":["../../src/memory/storageInterface.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB,yCAAyC;IACzC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B,iCAAiC;IACjC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;;;OAIG;IACH,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEtC;;;;OAIG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAE1C;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC;IAEnC,qDAAqD;IACrD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAEnC,6BAA6B;IAC7B,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEtC;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEhD;;OAEG;IACH,KAAK,IAAI,MAAM,CAAC;IAEhB,6CAA6C;IAC7C,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAEtC;;;;OAIG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAExC;;;OAGG;IACH,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErC;;;;OAIG;IACH,KAAK,CAAC,IAAI,IAAI,CAAC;CAChB"}
|
package/dist/memory/types.d.ts
CHANGED
|
@@ -1,192 +1,106 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* 记忆类型定义 —
|
|
3
|
-
*
|
|
4
|
-
* 设计哲学:万物皆是记忆,用 source 开放字符串替代封闭枚举
|
|
5
|
-
* 详见 ADR-004 · 记忆统一模型
|
|
2
|
+
* 记忆类型定义 — 基元驱动模型:记忆即轮次摘要(memory-as-summary),source 以开放字符串承载溯源标签(替代封闭枚举)
|
|
6
3
|
*/
|
|
7
|
-
import { z } from 'zod';
|
|
8
4
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* 8 个核心字段(v2.1 软删除扩展),无封闭枚举
|
|
12
|
-
* - 7 个基础字段:id/content/source/name/createdAt/accessedAt/score
|
|
13
|
-
* - 1 个可选字段:deletedAt(软删除时间,undefined 表示活跃记忆)
|
|
5
|
+
* 消息角色:统一 agent/types.ts 的 ChatMessage 与 sessionStore.ts 的 SessionMessage
|
|
6
|
+
* 含 tool 角色,用于 LLM 工具调用消息的持久化
|
|
14
7
|
*/
|
|
15
|
-
export
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
name: z.ZodString;
|
|
24
|
-
/** 创建时间(ISO 8601) */
|
|
25
|
-
createdAt: z.ZodString;
|
|
26
|
-
/** 最后访问时间(每次召回时刷新) */
|
|
27
|
-
accessedAt: z.ZodString;
|
|
28
|
-
/** 权重(0-1,召回时用于排序) */
|
|
29
|
-
score: z.ZodDefault<z.ZodNumber>;
|
|
30
|
-
/** 软删除时间(ISO 8601,可选;非 undefined 表示已软删除,回收站保留 30 天后自动物理清理) */
|
|
31
|
-
deletedAt: z.ZodOptional<z.ZodString>;
|
|
32
|
-
}, "strip", z.ZodTypeAny, {
|
|
33
|
-
id: string;
|
|
34
|
-
content: string;
|
|
35
|
-
source: string;
|
|
36
|
-
name: string;
|
|
37
|
-
createdAt: string;
|
|
38
|
-
accessedAt: string;
|
|
39
|
-
score: number;
|
|
40
|
-
deletedAt?: string | undefined;
|
|
41
|
-
}, {
|
|
8
|
+
export type MessageRole = 'system' | 'user' | 'assistant' | 'tool';
|
|
9
|
+
/**
|
|
10
|
+
* 记忆基元接口:id/content/source/name/createdAt/accessedAt 6 个基础字段
|
|
11
|
+
* + deletedAt 可选(软删除)
|
|
12
|
+
* 检索为纯关键词单通道,无持久化排序分字段,使用轨迹唯一事实源为 accessedAt
|
|
13
|
+
*/
|
|
14
|
+
export interface Memory {
|
|
15
|
+
/** 唯一标识,格式 source:name,如 'rule:core'、'round-summary:session:r1' */
|
|
42
16
|
id: string;
|
|
17
|
+
/** 记忆内容(Markdown 文本) */
|
|
43
18
|
content: string;
|
|
19
|
+
/** 来源标签(开放字符串,非枚举) */
|
|
44
20
|
source: string;
|
|
21
|
+
/** 可读名称(文件名或摘要标题) */
|
|
45
22
|
name: string;
|
|
46
|
-
createdAt: string;
|
|
47
|
-
accessedAt: string;
|
|
48
|
-
score?: number | undefined;
|
|
49
|
-
deletedAt?: string | undefined;
|
|
50
|
-
}>;
|
|
51
|
-
export type Memory = z.infer<typeof MemorySchema>;
|
|
52
|
-
/**
|
|
53
|
-
* 泊文当前使用的 source 标签约定
|
|
54
|
-
*
|
|
55
|
-
* 注意:source 是开放字符串,新增来源无需改代码
|
|
56
|
-
* 只需在存储时指定 source 字符串即可
|
|
57
|
-
*/
|
|
58
|
-
export declare const SOURCE_LABELS: {
|
|
59
|
-
/** 角色人格(agent-config/personas/*.md) */
|
|
60
|
-
readonly PERSONA: "persona";
|
|
61
|
-
/** 创作规则(agent-config/rules/*.md + .memora/rules/*.md) */
|
|
62
|
-
readonly RULE: "rule";
|
|
63
|
-
/** 技能定义(agent-config/skills/*.md) */
|
|
64
|
-
readonly SKILL: "skill";
|
|
65
|
-
/** 对话洞察(每轮问答结束后 LLM 提取) */
|
|
66
|
-
readonly INSIGHT: "insight";
|
|
67
|
-
/** 用户画像(每轮问答中 LLM 实时提取) */
|
|
68
|
-
readonly PROFILE: "profile";
|
|
69
|
-
/** 作品投影(Agent 读取用户作品时生成的概要) */
|
|
70
|
-
readonly WORK_PROJECTION: "work-projection";
|
|
71
|
-
/** 内容护栏规则(configDir/rules/guardrails/ 下的规则文件) */
|
|
72
|
-
readonly GUARDRAIL: "guardrail";
|
|
73
|
-
};
|
|
74
|
-
/**
|
|
75
|
-
* 记忆关系基元 — 独立于 Memory 7 字段的侧车数据结构
|
|
76
|
-
*
|
|
77
|
-
* 设计原则(ADR-014):
|
|
78
|
-
* - 不侵入 Memory 类型,与 Memory 平行存在
|
|
79
|
-
* - 关系类型是开放字符串(非枚举),宿主可自由扩展
|
|
80
|
-
* - 存储有向(sourceId → targetId),查询时按 direction 参数过滤
|
|
81
|
-
*
|
|
82
|
-
* 预设关系类型建议值(非强制):
|
|
83
|
-
* - 'contradicts':矛盾(双向对称)
|
|
84
|
-
* - 'supports':支持(有向)
|
|
85
|
-
* - 'follows':时间先后(有向)
|
|
86
|
-
* - 'refines':细化/演化(有向)
|
|
87
|
-
* - 'caused':因果(有向)
|
|
88
|
-
* - 'related':泛相关(双向对称)
|
|
89
|
-
*/
|
|
90
|
-
export interface MemoryRelation {
|
|
91
|
-
/** 关系起点(Memory.id) */
|
|
92
|
-
sourceId: string;
|
|
93
|
-
/** 关系终点(Memory.id) */
|
|
94
|
-
targetId: string;
|
|
95
|
-
/** 关系类型(开放字符串,非枚举) */
|
|
96
|
-
type: string;
|
|
97
|
-
/** 关系强度 0-1(LLM 四档:0.0/0.3/0.7/1.0,代码默认 0.5 兜底) */
|
|
98
|
-
weight: number;
|
|
99
23
|
/** 创建时间(ISO 8601) */
|
|
100
24
|
createdAt: string;
|
|
25
|
+
/** 最后访问时间(每次召回时刷新) */
|
|
26
|
+
accessedAt: string;
|
|
27
|
+
/** 软删除时间;非 undefined 表示已删除,回收站保留 30 天后物理清理 */
|
|
28
|
+
deletedAt?: string;
|
|
29
|
+
/**
|
|
30
|
+
* 额外的键值对元数据(可选透传字段,内核侧无生产写入方)。
|
|
31
|
+
* ⚠️ 不承载 round-summary 的溯源/分类字段——summaryType/sessionName/roundId 已提升为顶层
|
|
32
|
+
* 持久化字段(metadata 不在存储契约的保证范围内,而分层分轨/会话优先须跨会话生效,见 supersededBy 同款先例)。
|
|
33
|
+
*/
|
|
34
|
+
metadata?: Record<string, string>;
|
|
35
|
+
/**
|
|
36
|
+
* round-summary 摘要类型(preference/fact/decision/intent/general)。
|
|
37
|
+
* 顶层持久化字段:metadata 不在存储契约的保证范围内,
|
|
38
|
+
* 而分轨召回须跨会话可靠读取,故提升为顶层列。仅 round-summary 有意义。
|
|
39
|
+
*/
|
|
40
|
+
summaryType?: SummaryType;
|
|
41
|
+
/** round-summary 归属会话标识(${date}-${session})。顶层持久化字段,供会话内/外分层召回。仅 round-summary 有意义 */
|
|
42
|
+
sessionName?: string;
|
|
43
|
+
/** round-summary 归属轮次标识。顶层持久化字段,供互斥轮次排除与 traceSummary 回溯。仅 round-summary 有意义 */
|
|
44
|
+
roundId?: string;
|
|
45
|
+
/** 摘要是否已被人工修改,可能与原始对话不一致;仅 round-summary 有意义 */
|
|
46
|
+
isModified?: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* 写路径取代标记:非 undefined 表示已被更新的摘要覆盖,召回时确定性过滤;
|
|
49
|
+
* 值为取代它的新摘要 id,本条保留以便 traceSummary 回溯。设计为顶层持久化字段而非
|
|
50
|
+
* metadata(宿主不持久化 metadata,而 superseded 须跨会话生效)
|
|
51
|
+
*/
|
|
52
|
+
supersededBy?: string;
|
|
101
53
|
}
|
|
102
54
|
/**
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
* - 'both':合并两个方向并去重(可视化/召回增强用,默认)
|
|
55
|
+
* round-summary 摘要类型取值集合(单一真源:运行时校验与类型声明均从此派生)。
|
|
56
|
+
* 新增取值只改此处——若类型与运行时校验集双写,类型扩展会静默漏掉校验集,
|
|
57
|
+
* 导致新类型摘要被兜底为 'general'(行为漂移无编译报错)。
|
|
107
58
|
*/
|
|
108
|
-
export
|
|
59
|
+
export declare const SUMMARY_TYPES: readonly ["preference", "fact", "decision", "intent", "general"];
|
|
109
60
|
/**
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
* 设计理由(ADR-014 §4):
|
|
113
|
-
* - 离散值比连续浮点稳定,LLM 输出可预测
|
|
114
|
-
* - 0.5 兜底避免 LLM 失败时关系数据缺失
|
|
61
|
+
* round-summary 记忆的摘要类型,摘要生成时由 LLM 自动判断,无独立分类器
|
|
115
62
|
*/
|
|
116
|
-
export
|
|
117
|
-
/** 几乎无关(LLM 明确判断无关系) */
|
|
118
|
-
readonly NONE: 0;
|
|
119
|
-
/** 弱相关(关系存在但强度低) */
|
|
120
|
-
readonly WEAK: 0.3;
|
|
121
|
-
/** 未判断(代码默认兜底,LLM 失败或未输出时) */
|
|
122
|
-
readonly UNDEFINED: 0.5;
|
|
123
|
-
/** 强相关(关系明确且强度高) */
|
|
124
|
-
readonly STRONG: 0.7;
|
|
125
|
-
/** 确定关系(矛盾/等价等强关系) */
|
|
126
|
-
readonly CERTAIN: 1;
|
|
127
|
-
};
|
|
63
|
+
export type SummaryType = (typeof SUMMARY_TYPES)[number];
|
|
128
64
|
/**
|
|
129
|
-
*
|
|
65
|
+
* 记忆解析器 — 验证原始数据并转换为 Memory
|
|
66
|
+
* 校验:非空对象、字段类型、ISO 8601 日期
|
|
130
67
|
*
|
|
131
|
-
*
|
|
132
|
-
*
|
|
68
|
+
* **白名单构造**:返回值只含 Memory 接口声明的字段,源对象上的任何未知字段(如旧档残留的
|
|
69
|
+
* `score`)一律剥离——宿主读旧档经此函数即完成数据层清洗,无需另写迁移脚本。
|
|
70
|
+
*
|
|
71
|
+
* @param raw - 原始数据(通常来自 JSON 解析或数据库查询)
|
|
72
|
+
* @returns 验证通过的 Memory 对象(仅白名单字段,未知字段已剥离)
|
|
73
|
+
* @throws Error 当数据不符合 Memory 接口定义时
|
|
133
74
|
*/
|
|
134
|
-
export declare
|
|
135
|
-
/** 矛盾(双向对称) */
|
|
136
|
-
readonly CONTRADICTS: "contradicts";
|
|
137
|
-
/** 支持(有向) */
|
|
138
|
-
readonly SUPPORTS: "supports";
|
|
139
|
-
/** 时间先后(有向) */
|
|
140
|
-
readonly FOLLOWS: "follows";
|
|
141
|
-
/** 细化/演化(有向) */
|
|
142
|
-
readonly REFINES: "refines";
|
|
143
|
-
/** 因果(有向) */
|
|
144
|
-
readonly CAUSED: "caused";
|
|
145
|
-
/** 泛相关(双向对称) */
|
|
146
|
-
readonly RELATED: "related";
|
|
147
|
-
};
|
|
75
|
+
export declare function parseMemory(raw: unknown): Memory;
|
|
148
76
|
/**
|
|
149
|
-
*
|
|
150
|
-
*
|
|
151
|
-
* 独立于 Memory 和 MemoryRelation,仅作为查询结果投影类型存在。
|
|
152
|
-
* 不侵入 Memory 7 字段基元(ADR-004),不扩展 MemoryRelation 侧车结构(ADR-014)。
|
|
77
|
+
* 当前使用的 source 标签约定;source 是开放字符串,新增来源无需改代码,存储时指定即可
|
|
153
78
|
*
|
|
154
|
-
*
|
|
79
|
+
* persona / rule / skill / work-projection 为残留兼容标签:对应内容不归记忆库管理
|
|
80
|
+
* (角色包内容由角色包管理,作品投影落项目目录 projections/),标签保留用于
|
|
81
|
+
* typo 检测(sourceValidation.ts:KNOWN_SOURCES 集合)与存量行/外部导入识别;
|
|
82
|
+
* 它们不出现在 GOVERNANCE_SOURCES 中(治理系统只治理实际写入记忆库的 source)。
|
|
155
83
|
*/
|
|
156
|
-
export
|
|
157
|
-
/**
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
|
|
169
|
-
}
|
|
84
|
+
export declare const SOURCE_LABELS: {
|
|
85
|
+
/** 角色人格(角色包 content/persona.md)— 残留兼容标签,不写入记忆库 */
|
|
86
|
+
readonly PERSONA: "persona";
|
|
87
|
+
/** 创作规则(角色包 content/rules.md + .memora/rules/*.md)— 残留兼容标签,不写入记忆库 */
|
|
88
|
+
readonly RULE: "rule";
|
|
89
|
+
/** 技能定义(角色包 skills/ 目录)— 残留兼容标签,不写入记忆库 */
|
|
90
|
+
readonly SKILL: "skill";
|
|
91
|
+
/** 作品投影(读取用户作品时生成的概要)— 残留兼容标签,作品落项目目录 projections/ */
|
|
92
|
+
readonly WORK_PROJECTION: "work-projection";
|
|
93
|
+
/** 轮次摘要(每轮对话后生成的溯源式摘要,记忆即摘要) */
|
|
94
|
+
readonly ROUND_SUMMARY: "round-summary";
|
|
95
|
+
/** 未知来源(未被已知标签覆盖时的兜底值) */
|
|
96
|
+
readonly UNKNOWN: "unknown";
|
|
97
|
+
};
|
|
170
98
|
/**
|
|
171
|
-
*
|
|
172
|
-
*
|
|
173
|
-
*
|
|
174
|
-
* 用于宿主 UI 展示某记忆的直接关联记忆(如冲突记忆、支持记忆、后续记忆等)
|
|
99
|
+
* round-summary 记忆的规范 ID:`{source}:{sessionName}:{roundId}`。
|
|
100
|
+
* 读写/过滤侧一律经本函数构造,禁止散落 `round-summary:` 字面量——
|
|
101
|
+
* 溯源标签变更只需同步 SOURCE_LABELS,此处自动跟随。
|
|
175
102
|
*/
|
|
176
|
-
export
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
/** 邻居记忆名称 */
|
|
180
|
-
memoryName: string;
|
|
181
|
-
/** 邻居记忆来源标签 */
|
|
182
|
-
memorySource: string;
|
|
183
|
-
/** 邻居记忆权重(0-1,用于 UI 节点大小) */
|
|
184
|
-
memoryScore: number;
|
|
185
|
-
/** 关系类型 */
|
|
186
|
-
relationType: string;
|
|
187
|
-
/** 关系权重 */
|
|
188
|
-
relationWeight: number;
|
|
189
|
-
/** 关系方向:'incoming'(邻居是 sourceId)或 'outgoing'(邻居是 targetId) */
|
|
190
|
-
direction: 'incoming' | 'outgoing';
|
|
191
|
-
}
|
|
103
|
+
export declare function roundSummaryMemoryId(sessionName: string, roundId: string): string;
|
|
104
|
+
/** 会话级前缀(定位某会话的全部摘要记忆),与 roundSummaryMemoryId 同源 */
|
|
105
|
+
export declare function roundSummarySessionPrefix(sessionName: string): string;
|
|
192
106
|
//# sourceMappingURL=types.d.ts.map
|