@zooique/memora 2.0.3 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1028 -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
|
@@ -1,182 +1,83 @@
|
|
|
1
|
-
import { FileStore } from '../memory/store.js';
|
|
2
1
|
import type { IMemoryStorage } from '../memory/storageInterface.js';
|
|
3
|
-
import type { LoadResult } from '../memory/loader.js';
|
|
4
2
|
import type { SecurityGuard } from '../security/pathGuard.js';
|
|
5
3
|
import { type Memory } from '../memory/types.js';
|
|
6
4
|
import { type ProjectEntry } from '../memory/projectRegistry.js';
|
|
7
|
-
/**
|
|
8
|
-
* 项目上下文:打开一个项目后产出的一组组件
|
|
9
|
-
* 与 DomainContext 类似,但增加了项目级别的信息
|
|
10
|
-
*/
|
|
5
|
+
/** 项目上下文:打开一个项目后产出的一组组件(含项目级信息) */
|
|
11
6
|
export interface ProjectContext {
|
|
12
7
|
/** 项目根目录的绝对路径 */
|
|
13
8
|
projectPath: string;
|
|
14
|
-
/**
|
|
9
|
+
/** 项目名称(注册表读取或取目录名) */
|
|
15
10
|
projectName: string;
|
|
16
11
|
/** .memora/ 目录的绝对路径 */
|
|
17
12
|
memoraDir: string;
|
|
18
|
-
/**
|
|
19
|
-
dbPath: string;
|
|
20
|
-
/** 文件存储 */
|
|
21
|
-
fileStore: FileStore;
|
|
22
|
-
/** SQLite 索引(通过 IMemoryStorage 接口访问) */
|
|
13
|
+
/** 记忆存储(经 IMemoryStorage 接口访问) */
|
|
23
14
|
index: IMemoryStorage;
|
|
24
|
-
/** 安全守卫(可空,由 Agent
|
|
15
|
+
/** 安全守卫(可空,由 Agent 层注入工厂创建) */
|
|
25
16
|
security: SecurityGuard | null;
|
|
26
|
-
/**
|
|
17
|
+
/** 启动必召记忆(设定记忆唯一归角色包内容层,恒为空数组) */
|
|
27
18
|
bootstrapMemories: Memory[];
|
|
28
|
-
/** 加载结果 */
|
|
29
|
-
loadResult: LoadResult;
|
|
30
19
|
}
|
|
31
|
-
/**
|
|
32
|
-
* ProjectManager 构造选项
|
|
33
|
-
*/
|
|
20
|
+
/** ProjectManager 构造选项 */
|
|
34
21
|
export interface ProjectManagerOptions {
|
|
35
|
-
/** Agent
|
|
22
|
+
/** Agent 级数据目录(宿主传入;内核不假设其下的文件形态) */
|
|
36
23
|
dataDir: string;
|
|
37
|
-
/**
|
|
24
|
+
/** 外部注入存储实例(可选,不传则内部 InMemoryStorage 兜底) */
|
|
38
25
|
storage?: IMemoryStorage;
|
|
39
|
-
/**
|
|
26
|
+
/** 注册表目录(可选,缺省同 dataDir;跨项目按名解析需要多项目共用一份注册表) */
|
|
40
27
|
registryDir?: string;
|
|
41
28
|
/**
|
|
42
|
-
* SecurityGuard
|
|
43
|
-
*
|
|
44
|
-
* 在项目切换时调用,传入项目路径、.memora/ 目录、Agent 级配置目录和数据目录,
|
|
45
|
-
* 返回一个配置好的 SecurityGuard 实例。
|
|
46
|
-
* 不提供时 ProjectContext.security 为 null(宿主需自行处理安全校验)。
|
|
29
|
+
* SecurityGuard 工厂函数(Agent 层注入,解除 memory→security 反向依赖)。
|
|
30
|
+
* 项目切换时调用;不提供则 ProjectContext.security 为 null。
|
|
47
31
|
*/
|
|
48
32
|
createSecurityGuard?: (projectPath: string, memoraDir: string, configDir?: string, agentDataDir?: string) => SecurityGuard;
|
|
49
33
|
}
|
|
50
34
|
/**
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
* 管理多项目的生命周期:
|
|
54
|
-
* 1. 初始化当前项目(加锁 + 加载两层配置)
|
|
55
|
-
* 2. /project <name> 切换到新项目(解锁旧项目 + 加锁新项目)
|
|
56
|
-
* 3. 退出时清理锁文件
|
|
57
|
-
*
|
|
58
|
-
* 注册表/锁文件实现委托给 ProjectRegistry / LockManager,
|
|
59
|
-
* 本类聚焦生命周期编排。
|
|
35
|
+
* 项目管理器:管理多项目生命周期——初始化当前项目(加锁+加载两层配置)、
|
|
36
|
+
* 切换到新项目(解锁旧+锁新)、退出清理锁文件。注册表/锁文件委托专职模块,本类聚焦编排。
|
|
60
37
|
*/
|
|
61
38
|
export declare class ProjectManager {
|
|
62
|
-
/** Agent
|
|
39
|
+
/** Agent 级数据目录(宿主传入;内核不假设其下的文件形态) */
|
|
63
40
|
private readonly agentDataDir;
|
|
64
41
|
/** Agent 级存储实例(全局共享,不随项目切换重建) */
|
|
65
42
|
private agentIndex;
|
|
66
43
|
/** 当前打开的项目路径 */
|
|
67
44
|
private currentProjectPath;
|
|
68
|
-
/**
|
|
45
|
+
/** 外部注入存储实例(不传则内部 InMemoryStorage 兜底) */
|
|
69
46
|
private externalStorage;
|
|
70
|
-
/** SecurityGuard
|
|
47
|
+
/** SecurityGuard 工厂函数(Agent 层注入) */
|
|
71
48
|
private readonly createSecurityGuard?;
|
|
72
|
-
/**
|
|
49
|
+
/** 项目注册表(专职 projects.json) */
|
|
73
50
|
private readonly registry;
|
|
74
|
-
/**
|
|
51
|
+
/** 锁文件管理器(专职 .memora/.lock) */
|
|
75
52
|
private readonly lockManager;
|
|
76
|
-
/** 当前项目级记忆在共享 index 中的 ID 集合(closeProject 时撤销,修复跨项目隔离泄漏) */
|
|
77
|
-
private currentProjectMemoryIds;
|
|
78
53
|
constructor(options: ProjectManagerOptions);
|
|
79
54
|
/**
|
|
80
|
-
* 确保 Agent
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
* 如果构造时注入了外部存储实例,直接使用;
|
|
84
|
-
* 否则内部创建 InMemoryStorage(非持久化兜底,仅开发/测试用)。
|
|
55
|
+
* 确保 Agent 级资源(存储实例)已初始化,生命周期内共享不随项目切换重建。
|
|
56
|
+
* 构造注入的外部实例直接用,否则内部 InMemoryStorage(非持久化,仅开发/测试)。
|
|
85
57
|
*/
|
|
86
58
|
private ensureAgentResources;
|
|
87
59
|
/**
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
* 两层记忆加载:
|
|
91
|
-
* 1) 项目级:扫描 projectPath/.memora/rules/ + skills/
|
|
92
|
-
* 2) Agent 级:扫描 configDir 下的所有配置(rules/skills/personas/tools)
|
|
93
|
-
*
|
|
94
|
-
* 全局规则不再由内核硬编码路径,宿主可通过 configDir 统一管理。
|
|
95
|
-
*
|
|
96
|
-
* memora.db 是 Agent 级共享资源,不随项目切换重建。
|
|
97
|
-
*
|
|
98
|
-
* 主体编排(关闭旧项目 + 锁 + 错误回滚)+ loadAllResources(两层加载)
|
|
99
|
-
* + buildProjectContext(上下文构建)三个子方法分工。
|
|
100
|
-
*
|
|
101
|
-
* @param projectPath 项目根目录
|
|
102
|
-
* @param projectName 项目名称(可选,默认取目录名)
|
|
103
|
-
* @param configDir Agent 级配置目录(personas/rules/skills/tools)
|
|
60
|
+
* 初始化项目:关闭旧项目→取项目级锁→确保共享存储→构建上下文。
|
|
61
|
+
* 任一步失败释放锁并重置状态,防锁文件残留导致下次启动检测失败。
|
|
104
62
|
*/
|
|
105
63
|
initProject(projectPath: string, projectName?: string, configDir?: string): Promise<ProjectContext>;
|
|
106
64
|
/**
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
* 职责:确保 Agent 级存储 + 扫描项目级 + 扫描 Agent 级配置,合并加载结果。
|
|
110
|
-
*
|
|
111
|
-
* @param memoraDir 项目 .memora/ 目录
|
|
112
|
-
* @param configDir Agent 级配置目录(可选)
|
|
113
|
-
* @returns index 存储实例 + loadResult 合并加载结果 + projectFileStore 项目级 FileStore
|
|
114
|
-
*/
|
|
115
|
-
private loadAllResources;
|
|
116
|
-
/**
|
|
117
|
-
* 构建项目上下文
|
|
118
|
-
*
|
|
119
|
-
* 职责:bootstrap 过滤 + 安全守卫创建 + 项目注册 + 日志 + 返回上下文。
|
|
120
|
-
*
|
|
121
|
-
* @param projectPath 项目根目录
|
|
122
|
-
* @param projectName 项目名称(可选,默认取目录名)
|
|
123
|
-
* @param memoraDir 项目 .memora/ 目录
|
|
124
|
-
* @param index 存储实例
|
|
125
|
-
* @param projectFileStore 项目级 FileStore
|
|
126
|
-
* @param loadResult 加载结果
|
|
127
|
-
* @param configDir Agent 级配置目录(用于安全守卫创建)
|
|
128
|
-
* @returns 完整的项目上下文
|
|
65
|
+
* 构建项目上下文:bootstrap 过滤(恒为空,设定记忆归角色包层)+ 安全守卫创建 + 项目注册 + 日志。
|
|
129
66
|
*/
|
|
130
67
|
private buildProjectContext;
|
|
131
|
-
/**
|
|
132
|
-
* 关闭当前项目
|
|
133
|
-
* 释放锁文件,但不关闭 Agent 级数据库(memora.db 是共享的)
|
|
134
|
-
*/
|
|
68
|
+
/** 关闭当前项目:释放锁/清状态,但不关 Agent 级 DB(共享,Agent 生命周期内持久存在) */
|
|
135
69
|
closeProject(): Promise<void>;
|
|
136
|
-
/**
|
|
137
|
-
* 完全关闭:释放项目锁 + 关闭 Agent 级数据库
|
|
138
|
-
* 应在 Agent 整体关闭时调用(而非项目切换时)
|
|
139
|
-
*/
|
|
70
|
+
/** 完全关闭:释放项目锁 + 关闭 Agent 级数据库(应在 Agent 整体关闭而非项目切换时调用) */
|
|
140
71
|
shutdown(): Promise<void>;
|
|
141
|
-
/**
|
|
142
|
-
* 列出已注册的项目(IX-02:统一为 getter 风格,与 persona/skill 一致)
|
|
143
|
-
*
|
|
144
|
-
* 委托给 ProjectRegistry。
|
|
145
|
-
*/
|
|
72
|
+
/** 列出已注册项目(委托 ProjectRegistry) */
|
|
146
73
|
get list(): ProjectEntry[];
|
|
147
|
-
/**
|
|
148
|
-
* 列出已注册的项目
|
|
149
|
-
*
|
|
150
|
-
* v1.0 公共 API(CHANGELOG 迁移路径:`agent.listProjects()` → `agent.projects.listProjects()`)。
|
|
151
|
-
* 与 `.list` getter 等价,保留方法形式以兼容 0.3 迁移路径。
|
|
152
|
-
*/
|
|
153
|
-
listProjects(): ProjectEntry[];
|
|
154
|
-
/**
|
|
155
|
-
* 注册项目到注册表
|
|
156
|
-
*
|
|
157
|
-
* 委托给 ProjectRegistry。
|
|
158
|
-
*
|
|
159
|
-
* @param projectPath 项目根目录
|
|
160
|
-
* @param name 项目名称
|
|
161
|
-
*/
|
|
74
|
+
/** 注册项目(委托 ProjectRegistry) */
|
|
162
75
|
registerProject(projectPath: string, name: string): void;
|
|
163
|
-
/**
|
|
164
|
-
* 从注册表移除项目
|
|
165
|
-
*
|
|
166
|
-
* 委托给 ProjectRegistry。
|
|
167
|
-
*
|
|
168
|
-
* @param projectPath 项目根目录
|
|
169
|
-
*/
|
|
76
|
+
/** 移除项目(委托 ProjectRegistry) */
|
|
170
77
|
unregisterProject(projectPath: string): void;
|
|
171
|
-
/**
|
|
172
|
-
* 获取当前项目路径
|
|
173
|
-
*/
|
|
78
|
+
/** 当前项目路径 */
|
|
174
79
|
get currentProject(): string | null;
|
|
175
|
-
/**
|
|
176
|
-
* 解析项目的 .memora/ 目录路径
|
|
177
|
-
* 每个项目有独立的 .memora/ 目录(在项目根目录下)
|
|
178
|
-
* 这与 config.memory.dataDir(用户级默认目录)不同
|
|
179
|
-
*/
|
|
80
|
+
/** 解析项目 .memora/ 目录(项目根目录下,区别于用户级 dataDir) */
|
|
180
81
|
private resolveMemoraDir;
|
|
181
82
|
}
|
|
182
83
|
//# sourceMappingURL=projectManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectManager.d.ts","sourceRoot":"","sources":["../../src/memory/projectManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"projectManager.d.ts","sourceRoot":"","sources":["../../src/memory/projectManager.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAKjF,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,iBAAiB;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,KAAK,EAAE,cAAc,CAAC;IACtB,+BAA+B;IAC/B,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,kCAAkC;IAClC,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,0BAA0B;AAC1B,MAAM,WAAW,qBAAqB;IACpC,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,CACpB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,KAClB,aAAa,CAAC;CACpB;AAID;;;GAGG;AACH,qBAAa,cAAc;IACzB,qCAAqC;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,iCAAiC;IACjC,OAAO,CAAC,UAAU,CAA+B;IACjD,gBAAgB;IAChB,OAAO,CAAC,kBAAkB,CAAuB;IACjD,yCAAyC;IACzC,OAAO,CAAC,eAAe,CAAwB;IAC/C,oCAAoC;IACpC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAKlB;IACnB,8BAA8B;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,+BAA+B;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;gBAE9B,OAAO,EAAE,qBAAqB;IAe1C;;;OAGG;YACW,oBAAoB;IAiBlC;;;OAGG;IACG,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,CAAC;IA0B1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuC3B,wDAAwD;IAClD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC,yDAAyD;IACnD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAc/B,kCAAkC;IAClC,IAAI,IAAI,IAAI,YAAY,EAAE,CAEzB;IAED,+BAA+B;IAC/B,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxD,+BAA+B;IAC/B,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAI5C,aAAa;IACb,IAAI,cAAc,IAAI,MAAM,GAAG,IAAI,CAElC;IAED,8CAA8C;IAC9C,OAAO,CAAC,gBAAgB;CAGzB"}
|
|
@@ -1,93 +1,62 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* 项目管理器 —
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* - 两层记忆加载:项目级(projectPath/.memora/)→ Agent 级(configDir)
|
|
8
|
-
* - 项目切换(只更新 projectPath + security + 重新加载项目 rules/skills)
|
|
9
|
-
*
|
|
10
|
-
* 已拆分至专职模块(1.0 接口稳定化):
|
|
11
|
-
* - ProjectRegistry(src/memory/projectRegistry.ts):注册表读写 + 条目管理
|
|
12
|
-
* - LockManager(src/memory/lockManager.ts):锁文件获取/释放 + 残留锁检测
|
|
13
|
-
*
|
|
14
|
-
* 设计原则(单 Agent 模型):
|
|
15
|
-
* - memora.db 只有一个(Agent 级),所有项目共享同一记忆数据库
|
|
16
|
-
* - 项目切换不重建数据库,只更新安全守卫 + 重新扫描项目规则
|
|
17
|
-
* - 项目级 .memora/ 仅存放 rules/ 和 skills/(无 memora.db)
|
|
18
|
-
*
|
|
19
|
-
* 详见 ADR-008 · 目录结构按"职责分层"
|
|
2
|
+
* 项目管理器 — 多项目生命周期编排(单 Agent 模型)。
|
|
3
|
+
* 职责:项目初始化编排(关旧项目→加锁→加载资源→构建上下文)、Agent 级资源管理
|
|
4
|
+
* (memora.db 全局共享不随切换重建)、两层记忆加载。注册表/锁文件委托专职模块 ProjectRegistry / LockManager。
|
|
5
|
+
* 原则:memora.db 只有一个(Agent 级);项目切换不重建库,只更新安全守卫+重扫项目规则;
|
|
6
|
+
* 项目级 .memora/ 仅存放 rules 与 skills(无 memora.db)。
|
|
20
7
|
*/
|
|
21
8
|
import { resolve, join } from 'node:path';
|
|
22
9
|
import { mkdir } from 'node:fs/promises';
|
|
23
|
-
import { FileStore } from '../memory/store.js';
|
|
24
10
|
import { InMemoryStorage } from '../memory/inMemoryStorage.js';
|
|
25
|
-
import { MemoryLoader } from '../memory/loader.js';
|
|
26
11
|
import { logger } from '../logging/logger.js';
|
|
27
12
|
import { expandHome } from '../utils/path.js';
|
|
28
|
-
import { SOURCE_LABELS } from '../memory/types.js';
|
|
29
13
|
import { ProjectRegistry } from '../memory/projectRegistry.js';
|
|
30
14
|
import { LockManager } from '../memory/lockManager.js';
|
|
31
15
|
// ─── 类 ──────────────────────────────────────────────────
|
|
32
16
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* 管理多项目的生命周期:
|
|
36
|
-
* 1. 初始化当前项目(加锁 + 加载两层配置)
|
|
37
|
-
* 2. /project <name> 切换到新项目(解锁旧项目 + 加锁新项目)
|
|
38
|
-
* 3. 退出时清理锁文件
|
|
39
|
-
*
|
|
40
|
-
* 注册表/锁文件实现委托给 ProjectRegistry / LockManager,
|
|
41
|
-
* 本类聚焦生命周期编排。
|
|
17
|
+
* 项目管理器:管理多项目生命周期——初始化当前项目(加锁+加载两层配置)、
|
|
18
|
+
* 切换到新项目(解锁旧+锁新)、退出清理锁文件。注册表/锁文件委托专职模块,本类聚焦编排。
|
|
42
19
|
*/
|
|
43
20
|
export class ProjectManager {
|
|
44
|
-
/** Agent
|
|
21
|
+
/** Agent 级数据目录(宿主传入;内核不假设其下的文件形态) */
|
|
45
22
|
agentDataDir;
|
|
46
23
|
/** Agent 级存储实例(全局共享,不随项目切换重建) */
|
|
47
24
|
agentIndex = null;
|
|
48
25
|
/** 当前打开的项目路径 */
|
|
49
26
|
currentProjectPath = null;
|
|
50
|
-
/**
|
|
27
|
+
/** 外部注入存储实例(不传则内部 InMemoryStorage 兜底) */
|
|
51
28
|
externalStorage;
|
|
52
|
-
/** SecurityGuard
|
|
29
|
+
/** SecurityGuard 工厂函数(Agent 层注入) */
|
|
53
30
|
createSecurityGuard;
|
|
54
|
-
/**
|
|
31
|
+
/** 项目注册表(专职 projects.json) */
|
|
55
32
|
registry;
|
|
56
|
-
/**
|
|
33
|
+
/** 锁文件管理器(专职 .memora/.lock) */
|
|
57
34
|
lockManager;
|
|
58
|
-
/** 当前项目级记忆在共享 index 中的 ID 集合(closeProject 时撤销,修复跨项目隔离泄漏) */
|
|
59
|
-
currentProjectMemoryIds = new Set();
|
|
60
35
|
constructor(options) {
|
|
61
36
|
const { dataDir, storage, registryDir, createSecurityGuard } = options;
|
|
62
37
|
const memoraHome = resolve(expandHome(dataDir));
|
|
63
38
|
this.agentDataDir = memoraHome;
|
|
64
|
-
//
|
|
39
|
+
// 注册表目录:显式指定时用之(典型为用户级路径,使注册表跨项目共享);
|
|
40
|
+
// 缺省随 dataDir——此时注册表能否跨项目取决于调用方传的 dataDir 是共享还是项目级,
|
|
41
|
+
// 内核不做假设:项目级 dataDir 下每个项目只注册自身,按名切换不成立(switchProject 已加守卫)。
|
|
65
42
|
const registryHome = registryDir ? resolve(expandHome(registryDir)) : memoraHome;
|
|
66
|
-
// 保存外部注入的存储实例(宿主项目注入时使用)
|
|
67
43
|
this.externalStorage = storage ?? null;
|
|
68
|
-
// 保存 SecurityGuard 工厂函数
|
|
69
44
|
this.createSecurityGuard = createSecurityGuard;
|
|
70
|
-
//
|
|
45
|
+
// 注册表/锁文件委托专职模块
|
|
71
46
|
this.registry = new ProjectRegistry(join(registryHome, 'projects.json'));
|
|
72
47
|
this.lockManager = new LockManager();
|
|
73
48
|
}
|
|
74
49
|
/**
|
|
75
|
-
* 确保 Agent
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
* 如果构造时注入了外部存储实例,直接使用;
|
|
79
|
-
* 否则内部创建 InMemoryStorage(非持久化兜底,仅开发/测试用)。
|
|
50
|
+
* 确保 Agent 级资源(存储实例)已初始化,生命周期内共享不随项目切换重建。
|
|
51
|
+
* 构造注入的外部实例直接用,否则内部 InMemoryStorage(非持久化,仅开发/测试)。
|
|
80
52
|
*/
|
|
81
53
|
async ensureAgentResources() {
|
|
82
54
|
if (!this.agentIndex) {
|
|
83
55
|
await mkdir(this.agentDataDir, { recursive: true });
|
|
84
|
-
// 优先使用外部注入的存储实例
|
|
85
56
|
if (this.externalStorage) {
|
|
86
57
|
this.agentIndex = this.externalStorage;
|
|
87
58
|
}
|
|
88
59
|
else {
|
|
89
|
-
// 兜底:InMemoryStorage(非持久化,不依赖 native 模块)
|
|
90
|
-
// 生产环境应由宿主注入持久化实现(如 SqliteStorage)
|
|
91
60
|
logger.warn({ hasStorage: false }, '未注入持久化存储实现,Agent 将使用 InMemoryStorage(数据重启后丢失)');
|
|
92
61
|
this.agentIndex = new InMemoryStorage();
|
|
93
62
|
}
|
|
@@ -95,42 +64,27 @@ export class ProjectManager {
|
|
|
95
64
|
return { index: this.agentIndex };
|
|
96
65
|
}
|
|
97
66
|
/**
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
* 两层记忆加载:
|
|
101
|
-
* 1) 项目级:扫描 projectPath/.memora/rules/ + skills/
|
|
102
|
-
* 2) Agent 级:扫描 configDir 下的所有配置(rules/skills/personas/tools)
|
|
103
|
-
*
|
|
104
|
-
* 全局规则不再由内核硬编码路径,宿主可通过 configDir 统一管理。
|
|
105
|
-
*
|
|
106
|
-
* memora.db 是 Agent 级共享资源,不随项目切换重建。
|
|
107
|
-
*
|
|
108
|
-
* 主体编排(关闭旧项目 + 锁 + 错误回滚)+ loadAllResources(两层加载)
|
|
109
|
-
* + buildProjectContext(上下文构建)三个子方法分工。
|
|
110
|
-
*
|
|
111
|
-
* @param projectPath 项目根目录
|
|
112
|
-
* @param projectName 项目名称(可选,默认取目录名)
|
|
113
|
-
* @param configDir Agent 级配置目录(personas/rules/skills/tools)
|
|
67
|
+
* 初始化项目:关闭旧项目→取项目级锁→确保共享存储→构建上下文。
|
|
68
|
+
* 任一步失败释放锁并重置状态,防锁文件残留导致下次启动检测失败。
|
|
114
69
|
*/
|
|
115
70
|
async initProject(projectPath, projectName, configDir) {
|
|
116
|
-
// 1)
|
|
71
|
+
// 1) 关闭旧项目(释放旧锁,不关 Agent 级 DB)
|
|
117
72
|
if (this.currentProjectPath) {
|
|
118
73
|
await this.closeProject();
|
|
119
74
|
}
|
|
120
|
-
// 2) 解析 memoraDir +
|
|
75
|
+
// 2) 解析 memoraDir + 获取项目级锁(委托 LockManager)
|
|
121
76
|
const memoraDir = this.resolveMemoraDir(projectPath);
|
|
122
77
|
await this.lockManager.acquire(memoraDir);
|
|
123
78
|
this.currentProjectPath = projectPath;
|
|
124
|
-
// 后续步骤失败时释放锁并重置状态,避免锁文件残留导致下次启动检测失败
|
|
125
79
|
try {
|
|
126
|
-
// 3) 确保项目目录 +
|
|
80
|
+
// 3) 确保项目目录 + Agent 级共享存储
|
|
127
81
|
await mkdir(memoraDir, { recursive: true });
|
|
128
|
-
const { index
|
|
82
|
+
const { index } = await this.ensureAgentResources();
|
|
129
83
|
// 4) 构建并返回项目上下文
|
|
130
|
-
return this.buildProjectContext(projectPath, projectName, memoraDir, index,
|
|
84
|
+
return this.buildProjectContext(projectPath, projectName, memoraDir, index, configDir);
|
|
131
85
|
}
|
|
132
86
|
catch (err) {
|
|
133
|
-
//
|
|
87
|
+
// 失败时释放锁并重置状态,防锁文件残留
|
|
134
88
|
await this.lockManager.release().catch((releaseErr) => {
|
|
135
89
|
logger.warn({ err: releaseErr }, '释放项目锁失败');
|
|
136
90
|
});
|
|
@@ -139,111 +93,39 @@ export class ProjectManager {
|
|
|
139
93
|
}
|
|
140
94
|
}
|
|
141
95
|
/**
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
* 职责:确保 Agent 级存储 + 扫描项目级 + 扫描 Agent 级配置,合并加载结果。
|
|
145
|
-
*
|
|
146
|
-
* @param memoraDir 项目 .memora/ 目录
|
|
147
|
-
* @param configDir Agent 级配置目录(可选)
|
|
148
|
-
* @returns index 存储实例 + loadResult 合并加载结果 + projectFileStore 项目级 FileStore
|
|
96
|
+
* 构建项目上下文:bootstrap 过滤(恒为空,设定记忆归角色包层)+ 安全守卫创建 + 项目注册 + 日志。
|
|
149
97
|
*/
|
|
150
|
-
|
|
151
|
-
//
|
|
152
|
-
const
|
|
153
|
-
//
|
|
154
|
-
const loadResult = { loaded: 0, skipped: 0, errors: [] };
|
|
155
|
-
// 1) 项目级 FileStore:扫描 projectPath/.memora/ 下的 rules/ + skills/
|
|
156
|
-
const projectFileStore = new FileStore(memoraDir);
|
|
157
|
-
const projectLoader = new MemoryLoader(projectFileStore, index);
|
|
158
|
-
const projectResult = await projectLoader.loadAllToIndex();
|
|
159
|
-
loadResult.loaded += projectResult.loaded;
|
|
160
|
-
loadResult.skipped += projectResult.skipped;
|
|
161
|
-
loadResult.errors.push(...projectResult.errors);
|
|
162
|
-
// 记录本项目级记忆 ID,供 closeProject 撤销(修复跨项目隔离泄漏)
|
|
163
|
-
this.currentProjectMemoryIds = new Set(projectResult.loadedIds ?? []);
|
|
164
|
-
// 2) Agent 级 FileStore:扫描 configDir 下的所有配置(rules/skills/personas/tools)
|
|
165
|
-
if (configDir) {
|
|
166
|
-
const configFileStore = new FileStore(configDir);
|
|
167
|
-
const configLoader = new MemoryLoader(configFileStore, index);
|
|
168
|
-
const configResult = await configLoader.loadAllToIndex();
|
|
169
|
-
loadResult.loaded += configResult.loaded;
|
|
170
|
-
loadResult.skipped += configResult.skipped;
|
|
171
|
-
loadResult.errors.push(...configResult.errors);
|
|
172
|
-
}
|
|
173
|
-
return { index, loadResult, projectFileStore };
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* 构建项目上下文
|
|
177
|
-
*
|
|
178
|
-
* 职责:bootstrap 过滤 + 安全守卫创建 + 项目注册 + 日志 + 返回上下文。
|
|
179
|
-
*
|
|
180
|
-
* @param projectPath 项目根目录
|
|
181
|
-
* @param projectName 项目名称(可选,默认取目录名)
|
|
182
|
-
* @param memoraDir 项目 .memora/ 目录
|
|
183
|
-
* @param index 存储实例
|
|
184
|
-
* @param projectFileStore 项目级 FileStore
|
|
185
|
-
* @param loadResult 加载结果
|
|
186
|
-
* @param configDir Agent 级配置目录(用于安全守卫创建)
|
|
187
|
-
* @returns 完整的项目上下文
|
|
188
|
-
*/
|
|
189
|
-
buildProjectContext(projectPath, projectName, memoraDir, index, projectFileStore, loadResult, configDir) {
|
|
190
|
-
// bootstrap 过滤:仅 Rule(跳过 Persona 由 PersonaManager 管理,跳过 Skill 由 matchAndInjectSkill 动态注入)
|
|
191
|
-
const rules = index.getBySource(SOURCE_LABELS.RULE);
|
|
192
|
-
const bootstrapMemories = [...rules];
|
|
193
|
-
// 安全守卫由 Agent 层注入的工厂函数创建,解除 memory→security 反向依赖
|
|
98
|
+
buildProjectContext(projectPath, projectName, memoraDir, index, configDir) {
|
|
99
|
+
// 设定记忆唯一归角色包内容层,由 assembler 角色包路径接管,恒为空数组
|
|
100
|
+
const bootstrapMemories = [];
|
|
101
|
+
// 安全守卫由 Agent 层注入工厂创建,解除 memory→security 反向依赖
|
|
194
102
|
const security = this.createSecurityGuard
|
|
195
103
|
? this.createSecurityGuard(projectPath, memoraDir, configDir, this.agentDataDir)
|
|
196
104
|
: null;
|
|
197
|
-
//
|
|
105
|
+
// 注册到项目表(委托 ProjectRegistry)
|
|
198
106
|
const name = projectName || ProjectRegistry.inferProjectName(projectPath);
|
|
199
107
|
this.registry.register(projectPath, name);
|
|
200
108
|
logger.info({
|
|
201
109
|
projectPath,
|
|
202
110
|
projectName: name,
|
|
203
111
|
memoraDir,
|
|
204
|
-
loaded: loadResult.loaded,
|
|
205
112
|
bootstrapCount: bootstrapMemories.length,
|
|
206
113
|
}, '项目初始化完成');
|
|
207
114
|
return {
|
|
208
115
|
projectPath,
|
|
209
116
|
projectName: name,
|
|
210
117
|
memoraDir,
|
|
211
|
-
dbPath: join(this.agentDataDir, 'memora.db'),
|
|
212
|
-
fileStore: projectFileStore,
|
|
213
118
|
index,
|
|
214
119
|
security,
|
|
215
120
|
bootstrapMemories,
|
|
216
|
-
loadResult,
|
|
217
121
|
};
|
|
218
122
|
}
|
|
219
|
-
/**
|
|
220
|
-
* 关闭当前项目
|
|
221
|
-
* 释放锁文件,但不关闭 Agent 级数据库(memora.db 是共享的)
|
|
222
|
-
*/
|
|
123
|
+
/** 关闭当前项目:释放锁/清状态,但不关 Agent 级 DB(共享,Agent 生命周期内持久存在) */
|
|
223
124
|
async closeProject() {
|
|
224
|
-
// S2 修复:撤销当前项目级记忆,防止跨项目隔离泄漏。
|
|
225
|
-
// 项目级 rules/skills/personas 由 loadAllResources 写入共享 index(只 add 不 evict),
|
|
226
|
-
// 若不撤销,切换项目后旧项目规则仍注入新项目 system prompt 与召回结果。
|
|
227
|
-
// 项目文件仍在磁盘,重新打开同一项目时会重新 upsert 恢复(软删除不影响文件本体)。
|
|
228
|
-
if (this.agentIndex) {
|
|
229
|
-
for (const id of this.currentProjectMemoryIds) {
|
|
230
|
-
try {
|
|
231
|
-
this.agentIndex.delete(id);
|
|
232
|
-
}
|
|
233
|
-
catch (err) {
|
|
234
|
-
logger.warn({ err, id }, '撤销项目级记忆失败(软删除)');
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
this.currentProjectMemoryIds.clear();
|
|
239
|
-
// Agent 级 index/sessionStore 不关闭——它们是共享的,在整个 Agent 生命周期内持久存在
|
|
240
125
|
await this.lockManager.release();
|
|
241
126
|
this.currentProjectPath = null;
|
|
242
127
|
}
|
|
243
|
-
/**
|
|
244
|
-
* 完全关闭:释放项目锁 + 关闭 Agent 级数据库
|
|
245
|
-
* 应在 Agent 整体关闭时调用(而非项目切换时)
|
|
246
|
-
*/
|
|
128
|
+
/** 完全关闭:释放项目锁 + 关闭 Agent 级数据库(应在 Agent 整体关闭而非项目切换时调用) */
|
|
247
129
|
async shutdown() {
|
|
248
130
|
if (this.currentProjectPath) {
|
|
249
131
|
await this.closeProject();
|
|
@@ -258,55 +140,23 @@ export class ProjectManager {
|
|
|
258
140
|
this.agentIndex = null;
|
|
259
141
|
}
|
|
260
142
|
}
|
|
261
|
-
/**
|
|
262
|
-
* 列出已注册的项目(IX-02:统一为 getter 风格,与 persona/skill 一致)
|
|
263
|
-
*
|
|
264
|
-
* 委托给 ProjectRegistry。
|
|
265
|
-
*/
|
|
143
|
+
/** 列出已注册项目(委托 ProjectRegistry) */
|
|
266
144
|
get list() {
|
|
267
145
|
return this.registry.list;
|
|
268
146
|
}
|
|
269
|
-
/**
|
|
270
|
-
* 列出已注册的项目
|
|
271
|
-
*
|
|
272
|
-
* v1.0 公共 API(CHANGELOG 迁移路径:`agent.listProjects()` → `agent.projects.listProjects()`)。
|
|
273
|
-
* 与 `.list` getter 等价,保留方法形式以兼容 0.3 迁移路径。
|
|
274
|
-
*/
|
|
275
|
-
listProjects() {
|
|
276
|
-
return this.registry.list;
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* 注册项目到注册表
|
|
280
|
-
*
|
|
281
|
-
* 委托给 ProjectRegistry。
|
|
282
|
-
*
|
|
283
|
-
* @param projectPath 项目根目录
|
|
284
|
-
* @param name 项目名称
|
|
285
|
-
*/
|
|
147
|
+
/** 注册项目(委托 ProjectRegistry) */
|
|
286
148
|
registerProject(projectPath, name) {
|
|
287
149
|
this.registry.register(projectPath, name);
|
|
288
150
|
}
|
|
289
|
-
/**
|
|
290
|
-
* 从注册表移除项目
|
|
291
|
-
*
|
|
292
|
-
* 委托给 ProjectRegistry。
|
|
293
|
-
*
|
|
294
|
-
* @param projectPath 项目根目录
|
|
295
|
-
*/
|
|
151
|
+
/** 移除项目(委托 ProjectRegistry) */
|
|
296
152
|
unregisterProject(projectPath) {
|
|
297
153
|
this.registry.unregister(projectPath);
|
|
298
154
|
}
|
|
299
|
-
/**
|
|
300
|
-
* 获取当前项目路径
|
|
301
|
-
*/
|
|
155
|
+
/** 当前项目路径 */
|
|
302
156
|
get currentProject() {
|
|
303
157
|
return this.currentProjectPath;
|
|
304
158
|
}
|
|
305
|
-
/**
|
|
306
|
-
* 解析项目的 .memora/ 目录路径
|
|
307
|
-
* 每个项目有独立的 .memora/ 目录(在项目根目录下)
|
|
308
|
-
* 这与 config.memory.dataDir(用户级默认目录)不同
|
|
309
|
-
*/
|
|
159
|
+
/** 解析项目 .memora/ 目录(项目根目录下,区别于用户级 dataDir) */
|
|
310
160
|
resolveMemoraDir(projectPath) {
|
|
311
161
|
return resolve(projectPath, '.memora');
|
|
312
162
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectManager.js","sourceRoot":"","sources":["../../src/memory/projectManager.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"projectManager.js","sourceRoot":"","sources":["../../src/memory/projectManager.ts"],"names":[],"mappings":"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"}
|