@zooique/memora 2.0.3 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1037 -0
- package/README.en.md +305 -272
- package/README.md +303 -260
- package/config.example.json +43 -0
- package/dist/agent/agent.d.ts +376 -408
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +1166 -926
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/assembler.d.ts +105 -43
- package/dist/agent/assembler.d.ts.map +1 -1
- package/dist/agent/assembler.js +543 -75
- 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 +225 -38
- package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
- package/dist/agent/builtinToolHandlers.js +748 -132
- 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 +137 -20
- package/dist/agent/constants.d.ts.map +1 -1
- package/dist/agent/constants.js +152 -20
- package/dist/agent/constants.js.map +1 -1
- package/dist/agent/contextManager.d.ts +119 -77
- package/dist/agent/contextManager.d.ts.map +1 -1
- package/dist/agent/contextManager.js +192 -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 +716 -295
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +2178 -664
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/managers/archiveCoordinator.d.ts +14 -171
- package/dist/agent/managers/archiveCoordinator.d.ts.map +1 -1
- package/dist/agent/managers/archiveCoordinator.js +19 -287
- 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 +31 -115
- package/dist/agent/managers/dedupManager.d.ts.map +1 -1
- package/dist/agent/managers/dedupManager.js +48 -136
- package/dist/agent/managers/dedupManager.js.map +1 -1
- 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 +8 -25
- package/dist/agent/managers/llmJudgeHelper.d.ts.map +1 -1
- package/dist/agent/managers/llmJudgeHelper.js +7 -24
- package/dist/agent/managers/llmJudgeHelper.js.map +1 -1
- 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 +85 -207
- package/dist/agent/managers/memoryAdvisor.js.map +1 -1
- package/dist/agent/managers/memoryGovernance.d.ts +10 -42
- package/dist/agent/managers/memoryGovernance.d.ts.map +1 -1
- package/dist/agent/managers/memoryGovernance.js +19 -36
- package/dist/agent/managers/memoryGovernance.js.map +1 -1
- package/dist/agent/managers/memoryInspector.d.ts +59 -268
- package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
- package/dist/agent/managers/memoryInspector.js +91 -442
- 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 -68
- package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
- package/dist/agent/managers/sessionArchiver.js +76 -147
- 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 +8 -33
- package/dist/agent/managers/streamAccumulator.d.ts.map +1 -1
- package/dist/agent/managers/streamAccumulator.js +4 -29
- package/dist/agent/managers/streamAccumulator.js.map +1 -1
- 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 +9 -41
- 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 +55 -100
- package/dist/agent/managers/workProjection.d.ts.map +1 -1
- package/dist/agent/managers/workProjection.js +164 -268
- 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 +236 -10
- package/dist/agent/toolExecutor.d.ts.map +1 -1
- package/dist/agent/toolExecutor.js +932 -21
- 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 +510 -169
- 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 +27 -98
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +110 -223
- package/dist/config/loader.js.map +1 -1
- package/dist/index.d.ts +67 -77
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +90 -69
- 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 +22 -32
- package/dist/llm/factory.d.ts.map +1 -1
- package/dist/llm/factory.js +29 -46
- 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 +179 -120
- 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 -31
- package/dist/logging/logger.d.ts.map +1 -1
- package/dist/logging/logger.js +28 -215
- 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 +11 -44
- package/dist/memory/governance.d.ts.map +1 -1
- package/dist/memory/governance.js +11 -64
- package/dist/memory/governance.js.map +1 -1
- 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 +25 -175
- package/dist/memory/inMemoryStorage.d.ts.map +1 -1
- package/dist/memory/inMemoryStorage.js +32 -221
- 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 +2 -2
- package/dist/memory/lockManager.d.ts.map +1 -1
- package/dist/memory/lockManager.js +6 -8
- package/dist/memory/lockManager.js.map +1 -1
- package/dist/memory/projectManager.d.ts +30 -129
- package/dist/memory/projectManager.d.ts.map +1 -1
- package/dist/memory/projectManager.js +39 -189
- package/dist/memory/projectManager.js.map +1 -1
- package/dist/memory/projectRegistry.d.ts +14 -62
- package/dist/memory/projectRegistry.d.ts.map +1 -1
- package/dist/memory/projectRegistry.js +27 -111
- 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 +10 -12
- package/dist/memory/sourceValidation.d.ts.map +1 -1
- package/dist/memory/sourceValidation.js +16 -32
- package/dist/memory/sourceValidation.js.map +1 -1
- package/dist/memory/storageInterface.d.ts +44 -150
- package/dist/memory/storageInterface.d.ts.map +1 -1
- package/dist/memory/types.d.ts +65 -164
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/memory/types.js +81 -83
- 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 +136 -19
- package/dist/skill/skillManager.d.ts.map +1 -1
- package/dist/skill/skillManager.js +312 -61
- 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 -16
- 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 +40 -72
- package/dist/utils/configResourceManager.d.ts.map +1 -1
- package/dist/utils/configResourceManager.js +78 -76
- package/dist/utils/configResourceManager.js.map +1 -1
- package/dist/utils/errors.d.ts +44 -69
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +54 -71
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/eventEmitter.d.ts +104 -103
- package/dist/utils/eventEmitter.d.ts.map +1 -1
- package/dist/utils/eventEmitter.js +37 -45
- 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 +2 -3
- 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 +25 -3
- package/dist/utils/math.d.ts.map +1 -1
- package/dist/utils/math.js +32 -16
- 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 -19
- package/dist/utils/segmenter.d.ts.map +1 -1
- package/dist/utils/segmenter.js +230 -97
- 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 +416 -476
- package/docs/memora-/346/216/245/345/205/245/346/214/207/345/215/227.md +841 -806
- 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 -100
- 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 -49
- package/dist/agent/guardrail.d.ts.map +0 -1
- package/dist/agent/guardrail.js +0 -59
- 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 -146
- package/dist/agent/managers/autoConfigRefiner.js.map +0 -1
- package/dist/agent/managers/configManager.d.ts +0 -209
- package/dist/agent/managers/configManager.d.ts.map +0 -1
- package/dist/agent/managers/configManager.js +0 -331
- 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 -239
- package/dist/agent/managers/memoryDecayScheduler.d.ts.map +0 -1
- package/dist/agent/managers/memoryDecayScheduler.js +0 -413
- 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 -88
- 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 -79
- 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 -50
- package/dist/memory/hybridMerge.d.ts.map +0 -1
- package/dist/memory/hybridMerge.js +0 -51
- package/dist/memory/hybridMerge.js.map +0 -1
- package/dist/memory/inMemoryRelationStore.d.ts +0 -58
- package/dist/memory/inMemoryRelationStore.d.ts.map +0 -1
- package/dist/memory/inMemoryRelationStore.js +0 -80
- package/dist/memory/inMemoryRelationStore.js.map +0 -1
- package/dist/memory/loader.d.ts +0 -51
- package/dist/memory/loader.d.ts.map +0 -1
- package/dist/memory/loader.js +0 -100
- package/dist/memory/loader.js.map +0 -1
- package/dist/memory/recall.d.ts +0 -82
- package/dist/memory/recall.d.ts.map +0 -1
- package/dist/memory/recall.js +0 -157
- package/dist/memory/recall.js.map +0 -1
- package/dist/memory/relationStore.d.ts +0 -95
- 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 -71
- package/dist/memory/store.d.ts.map +0 -1
- package/dist/memory/store.js +0 -199
- package/dist/memory/store.js.map +0 -1
- package/dist/memory/userProfile.d.ts +0 -180
- package/dist/memory/userProfile.d.ts.map +0 -1
- package/dist/memory/userProfile.js +0 -381
- package/dist/memory/userProfile.js.map +0 -1
- package/dist/memory/vectorStore.d.ts +0 -179
- package/dist/memory/vectorStore.d.ts.map +0 -1
- package/dist/memory/vectorStore.js +0 -284
- package/dist/memory/vectorStore.js.map +0 -1
- package/dist/persona/personaManager.d.ts +0 -109
- package/dist/persona/personaManager.d.ts.map +0 -1
- package/dist/persona/personaManager.js +0 -315
- 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
package/README.en.md
CHANGED
|
@@ -1,272 +1,305 @@
|
|
|
1
|
-
# Memora
|
|
2
|
-
|
|
3
|
-
>
|
|
4
|
-
|
|
5
|
-
[](https://www.npmjs.com/package/@zooique/memora)
|
|
6
|
-
[](https://nodejs.org)
|
|
7
|
-
[](https://www.typescriptlang.org)
|
|
8
|
-
[](package.json)
|
|
11
|
-
[](LICENSE)
|
|
12
|
-
|
|
13
|
-
**中文** → [README.md](./README.md)
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## What
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
│
|
|
184
|
-
|
|
185
|
-
│
|
|
186
|
-
│
|
|
187
|
-
│
|
|
188
|
-
│
|
|
189
|
-
│
|
|
190
|
-
│
|
|
191
|
-
│
|
|
192
|
-
│
|
|
193
|
-
│
|
|
194
|
-
|
|
195
|
-
│
|
|
196
|
-
│
|
|
197
|
-
│
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
|
258
|
-
|
|
259
|
-
|
|
|
260
|
-
|
|
|
261
|
-
|
|
|
262
|
-
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
1
|
+
# Memora
|
|
2
|
+
|
|
3
|
+
> **Agent Memory Kernel with Governance** — Local-first, Private, Zero-dep. Not a framework, a kernel.
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@zooique/memora)
|
|
6
|
+
[](https://nodejs.org)
|
|
7
|
+
[](https://www.typescriptlang.org)
|
|
8
|
+
[](https://vitest.dev)
|
|
9
|
+
[](https://vitest.dev)
|
|
10
|
+
[](package.json)
|
|
11
|
+
[](LICENSE)
|
|
12
|
+
|
|
13
|
+
**中文** → [README.md](./README.md)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## What problem are you facing?
|
|
18
|
+
|
|
19
|
+
- **LLM forgets everything between sessions** — Your users remember what they said, your agent doesn't
|
|
20
|
+
- **Existing memory solutions are either too heavy (framework-bound) or too shallow (CRUD only)** — No dedup, conflict detection, or write-time supersede
|
|
21
|
+
- **Memory and persona are tangled** — Switch personas and lose your history
|
|
22
|
+
- **You don't want to send data to the cloud** — Need a local, private memory layer with zero external dependencies
|
|
23
|
+
|
|
24
|
+
## How Memora solves this
|
|
25
|
+
|
|
26
|
+
Memora is an **Agent memory kernel** — framework-agnostic, cloud-independent, focused on one thing: **giving your agent cross-session, cross-topic long-term memory that stays clean.**
|
|
27
|
+
|
|
28
|
+
"Clean" means: semantic deduplication, conflict detection, write-time supersede, and last-used refresh (accessedAt, used for ordering) — no importance weighting, and not just stuffing history into the context window.
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
import { Agent, createProviderFromConfig } from '@zooique/memora';
|
|
32
|
+
|
|
33
|
+
const agent = new Agent({
|
|
34
|
+
projectPath: '/your/project',
|
|
35
|
+
dataDir: '/your/project/.memora-data', // memory data directory (required)
|
|
36
|
+
provider: createProviderFromConfig('primary', {
|
|
37
|
+
provider: 'openaiCompatible',
|
|
38
|
+
apiKey: process.env.LLM_API_KEY!,
|
|
39
|
+
baseUrl: 'https://api.openai.com/v1',
|
|
40
|
+
model: 'gpt-4o',
|
|
41
|
+
}),
|
|
42
|
+
});
|
|
43
|
+
await agent.init();
|
|
44
|
+
|
|
45
|
+
// Chat — memories persist automatically
|
|
46
|
+
for await (const chunk of agent.chat('I love TypeScript')) {
|
|
47
|
+
process.stdout.write(chunk.content);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Next session — the LLM can call search_memories to retrieve this memory
|
|
51
|
+
const reply = await agent.chatSync('What language do I like?');
|
|
52
|
+
|
|
53
|
+
// Memory governance — dedup / conflict detection / source health
|
|
54
|
+
await agent.governance.deduplicate();
|
|
55
|
+
await agent.governance.detectConflicts();
|
|
56
|
+
const health = agent.governance.sourceHealth();
|
|
57
|
+
|
|
58
|
+
await agent.close();
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
> **Boundary**: Memora is a **non-standalone pure logic kernel** — persistence, sandbox, observability, CLI/UI are all injected by the host. The kernel guarantees **interface contracts + unit-tested logic correctness**; agent-level behavior evaluation is the host's responsibility.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Why Memora?
|
|
66
|
+
|
|
67
|
+
| | Memora | Vector memory libs (agent-memory, MemStack) | Framework-builtin memory (Mastra, LangGraph) |
|
|
68
|
+
|---|---|---|---|
|
|
69
|
+
| **Memory governance** | ✅ Dedup+conflict+write-time supersede | ⚠️ Decay only or none | ⚠️ Partial |
|
|
70
|
+
| **Framework lock-in** | ✅ Zero — pure kernel | ✅ Standalone | ❌ Tied to framework |
|
|
71
|
+
| **Data privacy** | ✅ 100% local | ✅ Local | ⚠️ Partially cloud |
|
|
72
|
+
| **Runtime deps** | ✅ Zero (node:* only) | ❌ SQLite / better-sqlite3 | ❌ Heavy |
|
|
73
|
+
| **Persona/memory separation** | ✅ Role-pack boundary discipline | ❌ No persona concept | ⚠️ Simple prompt |
|
|
74
|
+
| **Embeddable** | ✅ Any Node.js host | ✅ Standalone lib | ❌ Framework-internal |
|
|
75
|
+
|
|
76
|
+
**One-line positioning**: If you want a **framework-agnostic, governance-capable, zero-dependency** memory layer, Memora is currently the only option on npm.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Design Philosophy
|
|
81
|
+
|
|
82
|
+
> **Memory-as-Summary.**
|
|
83
|
+
>
|
|
84
|
+
> Conversation is the raw material: after each turn, an asynchronous round-summary is generated as the sole memory unit; the original conversation records are stored separately and traceable via source links. Persona, rules, and skills live in the role-pack, not the memory store.
|
|
85
|
+
|
|
86
|
+
Memora is a **brain kernel that cannot run standalone** — it has interfaces but no "form." A CLI, WebUI, desktop sprite, or novel generator can be its "host." The host gives it a body (UI), blood vessels (Provider), and neural circuits (event loops).
|
|
87
|
+
|
|
88
|
+
> **Version positioning (v3.0.0)**: **Node.js-only · Zero third-party runtime deps Agent kernel**. v3.0.0 is the first stable baseline after architecture convergence.
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Core Capabilities
|
|
93
|
+
|
|
94
|
+
| Capability | Description |
|
|
95
|
+
|-----------|-------------|
|
|
96
|
+
| **Long-term Memory** | Cross-session, cross-topic memory persistence with tool-based recall (`search_memories`; no automatic injection) |
|
|
97
|
+
| **Memory Search Tool** | Keyword-only retrieval (`search_memories`), refreshes `accessedAt` on hit (semantic vector channel removed via B0, 2026-09-18) |
|
|
98
|
+
| **Memory Governance** | Write-time supersede + last-used refresh (`accessedAt` used for ordering; no importance weighting) + semantic dedup + conflict detection via `agent.governance` facade (dedup / conflict judged by LLM) |
|
|
99
|
+
| **Agent-Persona Separation** | Agent is a pure memory engine; persona is a personality vessel. Switch personas without losing memories |
|
|
100
|
+
| **Unified Memory Model** | Everything is a "Memory" primitive, distinguished by open-string `source` — no closed enums |
|
|
101
|
+
| **Domain-agnostic** | Same architecture, different memory configs → different domains |
|
|
102
|
+
| **Zero third-party runtime deps** | Depends on Node built-ins (`node:*`); persistence injected by host via interfaces |
|
|
103
|
+
| **Observability** | ITracer interface + structured spans, plug into any APM |
|
|
104
|
+
| **External tools** | Conditionally exposed `web_search` / `web_fetch` / `run_code` — enabled only when host injects the corresponding provider |
|
|
105
|
+
|
|
106
|
+
## Quick Start
|
|
107
|
+
|
|
108
|
+
### Install
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
npm install @zooique/memora
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Create an Agent
|
|
115
|
+
|
|
116
|
+
```typescript
|
|
117
|
+
import { Agent, createProviderFromConfig } from '@zooique/memora';
|
|
118
|
+
|
|
119
|
+
// Host responsibility: create an LLM Provider
|
|
120
|
+
// Works with any OpenAI Chat Completions-compatible service
|
|
121
|
+
// createProviderFromConfig is the canonical entry (baseUrl+model+apiKey → validated creation; provider
|
|
122
|
+
// selection is the host's responsibility). createLlmProvider(loadConfig()) is only a config-file convenience
|
|
123
|
+
// (active selection resolved inside the kernel) when you delegate the whole Config to it.
|
|
124
|
+
const provider = createProviderFromConfig('primary', {
|
|
125
|
+
provider: 'openaiCompatible',
|
|
126
|
+
apiKey: process.env.LLM_API_KEY!,
|
|
127
|
+
baseUrl: 'https://api.xiaomimimo.com/v1',
|
|
128
|
+
model: 'deepseek-chat',
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
// Create Agent
|
|
132
|
+
const agent = new Agent({
|
|
133
|
+
projectPath: '/path/to/project',
|
|
134
|
+
provider,
|
|
135
|
+
configDir: '/path/to/agent-config', // role-packs / skills
|
|
136
|
+
dataDir: '/path/to/project/.memora-data', // memory data directory (required; prefer absolute)
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
await agent.init();
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Chat (Streaming)
|
|
143
|
+
|
|
144
|
+
```typescript
|
|
145
|
+
for await (const chunk of agent.chat('Hi, remember that I love TypeScript')) {
|
|
146
|
+
if (chunk.type === 'text') {
|
|
147
|
+
process.stdout.write(chunk.content);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// Next session — the LLM can call search_memories to retrieve "loves TypeScript"
|
|
152
|
+
const reply = await agent.chatSync('What language do I like?');
|
|
153
|
+
// → Answers based on the memories the LLM retrieved
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Memory Management
|
|
157
|
+
|
|
158
|
+
```typescript
|
|
159
|
+
// Search memories (keyword-only; semantic vector channel removed via B0, 2026-09-18), limit is a number
|
|
160
|
+
const hits = await agent.memory.searchByKeyword('TypeScript preference', 5);
|
|
161
|
+
|
|
162
|
+
// Governance (exposed via agent.governance facade, LLM-judged)
|
|
163
|
+
const report = await agent.governance.deduplicate();
|
|
164
|
+
console.log(`Deduplicated ${report.deduplicatedCount} memories`);
|
|
165
|
+
|
|
166
|
+
const conflicts = await agent.governance.detectConflicts();
|
|
167
|
+
|
|
168
|
+
// Source health diagnosis (pure computation, no LLM): per-source count / days since last access (score retired → factual observation only)
|
|
169
|
+
const health = agent.governance.sourceHealth();
|
|
170
|
+
console.log(health?.sources);
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Cleanup
|
|
174
|
+
|
|
175
|
+
```typescript
|
|
176
|
+
await agent.close();
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
## Architecture
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
┌────────────────────────────────────────────────────────────┐
|
|
183
|
+
│ Host Application (CLI / Desktop Sprite / WebUI / Game) │
|
|
184
|
+
│ ┌─────────────────┐ ┌──────────────────┐ │
|
|
185
|
+
│ │ LLM Provider │◄───│ API Key / baseUrl │ ← Host job │
|
|
186
|
+
│ └────────┬────────┘ └──────────────────┘ │
|
|
187
|
+
│ │ inject │
|
|
188
|
+
│ ▼ │
|
|
189
|
+
│ ┌──────────────────────────────────────────┐ │
|
|
190
|
+
│ │ Memora Kernel (Agent) │ │
|
|
191
|
+
│ │ - chat(input) → streaming response │ │
|
|
192
|
+
│ │ - Keyword-only search (semantic vector channel removed via B0)│ │
|
|
193
|
+
│ │ - Memory governance (dedup/conflict/supersede) │ │
|
|
194
|
+
│ │ - Role pack matching / Skill matching │ │
|
|
195
|
+
│ │ - Tool registration / execution │ │
|
|
196
|
+
│ │ - Session archive / round persistence │ │
|
|
197
|
+
│ └──────────────────────────────────────────┘ │
|
|
198
|
+
└────────────────────────────────────────────────────────────┘
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### Five Injectable Interfaces
|
|
202
|
+
|
|
203
|
+
The kernel interacts with the outside world through interfaces. Hosts inject implementations as needed:
|
|
204
|
+
|
|
205
|
+
| Interface | Responsibility | Built-in Implementation |
|
|
206
|
+
|-----------|---------------|------------------------|
|
|
207
|
+
| `IMemoryStorage` | Memory CRUD + search + query by source | `InMemoryStorage` |
|
|
208
|
+
| `ISessionStore` | Session history persistence | None (host implements) |
|
|
209
|
+
| `ILogger` | Logging output | console fallback |
|
|
210
|
+
| `ITracer` | Observability spans | `NOOP_TRACER` |
|
|
211
|
+
|
|
212
|
+
## Project Structure
|
|
213
|
+
|
|
214
|
+
```
|
|
215
|
+
src/
|
|
216
|
+
├── index.ts # Library exports (types + interfaces + functions + classes, no CLI)
|
|
217
|
+
├── agent/ # Agent facade + AgentLoop + seed/ (single-turn execution loop)
|
|
218
|
+
│ ├── agent.ts # Facade class (single entry point for hosts)
|
|
219
|
+
│ ├── loop.ts # Core loop (reason → tool call → reflection retry)
|
|
220
|
+
│ ├── assembler.ts # Component assembler (pure factory)
|
|
221
|
+
│ ├── contextManager.ts / contextPreparer.ts / toolExecutor.ts / toolRunner.ts ···
|
|
222
|
+
│ ├── seed/ # Minimal execution loop (prepare → act/difficulty → reflect, incl. external task outer loop)
|
|
223
|
+
│ └── managers/ # 16 specialized Managers/service classes (memoryInspector / memoryGovernance / roundSummaryGenerator / sessionManager / sessionArchiver / archiveCoordinator / workProjection / textPolishManager / chatLockManager, etc.)
|
|
224
|
+
├── memory/ # Memory engine (IMemoryStorage + InMemoryStorage + keyword recall / fusion ranking / governance constants)
|
|
225
|
+
├── role-pack/ # Role packs (manifest parsing + validator + strategyResolver + capability mapping)
|
|
226
|
+
├── skill/ # Skill management (global pool + role-pack binding, progressive disclosure + skillScriptRunner)
|
|
227
|
+
├── llm/ # LLM adapter layer (provider + openaiCompatible + factory)
|
|
228
|
+
├── security/ # Security (path guard / write confirmation)
|
|
229
|
+
├── config/ # Config loading
|
|
230
|
+
├── code-exec/ # Generic code execution abstraction (conditionally exposed)
|
|
231
|
+
├── web-search/ # Web search abstraction (conditionally exposed)
|
|
232
|
+
├── web-fetch/ # Web fetch abstraction (conditionally exposed)
|
|
233
|
+
├── logging/ # Logging (ILogger interface + console fallback)
|
|
234
|
+
└── utils/ # Utilities (scanner / segmenter / event system / atomic write)
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
## Tech Stack
|
|
238
|
+
|
|
239
|
+
| Category | Choice | Rationale |
|
|
240
|
+
|----------|--------|-----------|
|
|
241
|
+
| Runtime | Node.js ≥ 22 LTS + TypeScript 5 strict + ESM | ADR-001 |
|
|
242
|
+
| Data Layer | IMemoryStorage interface (host injects persistence) | ADR-002 |
|
|
243
|
+
| LLM Protocol | OpenAI Chat Completions compatible (streaming SSE + Tool Calling) | ADR-003 |
|
|
244
|
+
| Memory Model | Memory-as-summary: round-summary single track, traceable to source; source open-string primitive | ADR-004 · memory-as-summary.md |
|
|
245
|
+
| Conflict Resolution | Memory conflicts resolved via supersededBy boolean flag | ADR-021 |
|
|
246
|
+
| Form Factor | Pure logic library (zero native deps, CLI/UI provided by host) | ADR-002 |
|
|
247
|
+
| Security | Two-level permissions + path whitelist + audit log | ADR-006 |
|
|
248
|
+
| Testing | Vitest + MSW Mock LLM + InMemoryStorage | ADR-007 |
|
|
249
|
+
|
|
250
|
+
## Engineering Quality
|
|
251
|
+
|
|
252
|
+
| Metric | Value |
|
|
253
|
+
|--------|-------|
|
|
254
|
+
| Source | 117 production files (src/, zero third-party runtime deps) |
|
|
255
|
+
| Tests | Dual vitest suites (kernel + host), run by the root vitest config (100+ files) |
|
|
256
|
+
| Tests Passing | 2700+ passed / 1 skipped |
|
|
257
|
+
| Statement Coverage | 90.65% |
|
|
258
|
+
| Branch Coverage | 84.83% |
|
|
259
|
+
| Function Coverage | 92.41% |
|
|
260
|
+
| Line Coverage | 91.79% |
|
|
261
|
+
| Runtime Dependencies | **0** |
|
|
262
|
+
| Architecture Decision Records | 26 ADRs |
|
|
263
|
+
|
|
264
|
+
## Development
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
npm test # Run tests
|
|
268
|
+
npm run test:cov # Run tests + coverage
|
|
269
|
+
npm run typecheck # TypeScript type checking
|
|
270
|
+
npm run lint # ESLint
|
|
271
|
+
npm run build # Compile to dist/
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
## Documentation
|
|
275
|
+
|
|
276
|
+
- [Integration Guide](docs/memora-接入指南.md) — Complete host developer onboarding manual (Chinese)
|
|
277
|
+
- [API Reference](docs/memora-api-reference.md) — Public API quick reference (Chinese)
|
|
278
|
+
- [Config Example](config.example.json) — LLM / Security config template
|
|
279
|
+
|
|
280
|
+
## Host Project
|
|
281
|
+
|
|
282
|
+
[memora-vscode](https://github.com/zooique/memora/tree/main/hosts/memora-vscode) — The VS Code extension host (primary host), demonstrating a complete Memora integration: JSON file persistence (`.memora/memories.json`), keyword-only search, role pack management, and memory views.
|
|
283
|
+
|
|
284
|
+
## Why Memora?
|
|
285
|
+
|
|
286
|
+
| | Memora | Cloud memory services | Framework memory modules |
|
|
287
|
+
|---|---|---|---|
|
|
288
|
+
| Data privacy | ✅ 100% local | ❌ Cloud-dependent | ⚠️ Varies |
|
|
289
|
+
| Runtime deps | ✅ Zero | N/A (SaaS) | ❌ Heavy |
|
|
290
|
+
| Memory lifecycle | ✅ Full (dedup/conflict/supersede) | ⚠️ Partial | ❌ CRUD only |
|
|
291
|
+
| Domain-agnostic | ✅ Open-string source | ⚠️ Opinionated | ⚠️ Framework-locked |
|
|
292
|
+
| Embeddable | ✅ Any Node.js host | ❌ API calls only | ⚠️ Framework-bound |
|
|
293
|
+
| Relation graph | ✅ Built-in sidecar | ❌ Rare | ❌ Rare |
|
|
294
|
+
|
|
295
|
+
## Feedback
|
|
296
|
+
|
|
297
|
+
Found a bug or have a suggestion? Please open an issue at [GitHub Issues](https://github.com/zooique/memora/issues) (primary repository); Gitee Issues (https://gitee.com/zooique/memora/issues) is a synced mirror for users in mainland China, checked less frequently.
|
|
298
|
+
|
|
299
|
+
## Contributing
|
|
300
|
+
|
|
301
|
+
This project follows the "Big Tree Model" engineering philosophy. Architecture Decision Records (ADRs) are in the repository [.trae/decisions/](https://github.com/zooique/memora/tree/main/.trae/decisions).
|
|
302
|
+
|
|
303
|
+
## License
|
|
304
|
+
|
|
305
|
+
[MIT](LICENSE)
|