@zooique/memora 2.0.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1028 -0
- package/README.en.md +305 -0
- package/README.md +303 -148
- package/config.example.json +43 -0
- package/dist/agent/agent.d.ts +438 -295
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +1368 -836
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/assembler.d.ts +117 -39
- package/dist/agent/assembler.d.ts.map +1 -1
- package/dist/agent/assembler.js +574 -71
- package/dist/agent/assembler.js.map +1 -1
- package/dist/agent/budget.d.ts +131 -0
- package/dist/agent/budget.d.ts.map +1 -0
- package/dist/agent/budget.js +128 -0
- package/dist/agent/budget.js.map +1 -0
- package/dist/agent/builtinToolHandlers.d.ts +229 -17
- package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
- package/dist/agent/builtinToolHandlers.js +758 -70
- package/dist/agent/builtinToolHandlers.js.map +1 -1
- package/dist/agent/builtinTools.d.ts +198 -7
- package/dist/agent/builtinTools.d.ts.map +1 -1
- package/dist/agent/builtinTools.js +646 -14
- package/dist/agent/builtinTools.js.map +1 -1
- package/dist/agent/compaction.d.ts +93 -0
- package/dist/agent/compaction.d.ts.map +1 -0
- package/dist/agent/compaction.js +192 -0
- package/dist/agent/compaction.js.map +1 -0
- package/dist/agent/constants.d.ts +139 -18
- package/dist/agent/constants.d.ts.map +1 -1
- package/dist/agent/constants.js +154 -18
- package/dist/agent/constants.js.map +1 -1
- package/dist/agent/contextManager.d.ts +126 -76
- package/dist/agent/contextManager.d.ts.map +1 -1
- package/dist/agent/contextManager.js +197 -135
- package/dist/agent/contextManager.js.map +1 -1
- package/dist/agent/contextPreparer.d.ts +78 -0
- package/dist/agent/contextPreparer.d.ts.map +1 -0
- package/dist/agent/contextPreparer.js +128 -0
- package/dist/agent/contextPreparer.js.map +1 -0
- package/dist/agent/duplicateInterceptor.d.ts +67 -0
- package/dist/agent/duplicateInterceptor.d.ts.map +1 -0
- package/dist/agent/duplicateInterceptor.js +82 -0
- package/dist/agent/duplicateInterceptor.js.map +1 -0
- package/dist/agent/guardRail.d.ts +166 -0
- package/dist/agent/guardRail.d.ts.map +1 -0
- package/dist/agent/guardRail.js +333 -0
- package/dist/agent/guardRail.js.map +1 -0
- package/dist/agent/loop.d.ts +718 -253
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +2215 -648
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/managers/archiveCoordinator.d.ts +21 -74
- package/dist/agent/managers/archiveCoordinator.d.ts.map +1 -1
- package/dist/agent/managers/archiveCoordinator.js +32 -105
- package/dist/agent/managers/archiveCoordinator.js.map +1 -1
- package/dist/agent/managers/chatLockManager.d.ts +20 -88
- package/dist/agent/managers/chatLockManager.d.ts.map +1 -1
- package/dist/agent/managers/chatLockManager.js +31 -103
- package/dist/agent/managers/chatLockManager.js.map +1 -1
- package/dist/agent/managers/dedupManager.d.ts +85 -0
- package/dist/agent/managers/dedupManager.d.ts.map +1 -0
- package/dist/agent/managers/dedupManager.js +248 -0
- package/dist/agent/managers/dedupManager.js.map +1 -0
- package/dist/agent/managers/goalConsistencyChecker.d.ts +42 -0
- package/dist/agent/managers/goalConsistencyChecker.d.ts.map +1 -0
- package/dist/agent/managers/goalConsistencyChecker.js +178 -0
- package/dist/agent/managers/goalConsistencyChecker.js.map +1 -0
- package/dist/agent/managers/llmCaller.d.ts +124 -0
- package/dist/agent/managers/llmCaller.d.ts.map +1 -0
- package/dist/agent/managers/llmCaller.js +417 -0
- package/dist/agent/managers/llmCaller.js.map +1 -0
- package/dist/agent/managers/llmJudgeHelper.d.ts +21 -0
- package/dist/agent/managers/llmJudgeHelper.d.ts.map +1 -0
- package/dist/agent/managers/llmJudgeHelper.js +32 -0
- package/dist/agent/managers/llmJudgeHelper.js.map +1 -0
- package/dist/agent/managers/loopMetrics.d.ts +58 -0
- package/dist/agent/managers/loopMetrics.d.ts.map +1 -0
- package/dist/agent/managers/loopMetrics.js +68 -0
- package/dist/agent/managers/loopMetrics.js.map +1 -0
- package/dist/agent/managers/memoryAdvisor.d.ts +27 -120
- package/dist/agent/managers/memoryAdvisor.d.ts.map +1 -1
- package/dist/agent/managers/memoryAdvisor.js +56 -192
- package/dist/agent/managers/memoryAdvisor.js.map +1 -1
- package/dist/agent/managers/memoryGovernance.d.ts +24 -0
- package/dist/agent/managers/memoryGovernance.d.ts.map +1 -0
- package/dist/agent/managers/memoryGovernance.js +46 -0
- package/dist/agent/managers/memoryGovernance.js.map +1 -0
- package/dist/agent/managers/memoryInspector.d.ts +59 -393
- package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
- package/dist/agent/managers/memoryInspector.js +92 -736
- package/dist/agent/managers/memoryInspector.js.map +1 -1
- package/dist/agent/managers/roundSummaryGenerator.d.ts +56 -0
- package/dist/agent/managers/roundSummaryGenerator.d.ts.map +1 -0
- package/dist/agent/managers/roundSummaryGenerator.js +201 -0
- package/dist/agent/managers/roundSummaryGenerator.js.map +1 -0
- package/dist/agent/managers/sessionArchiver.d.ts +19 -63
- package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
- package/dist/agent/managers/sessionArchiver.js +83 -157
- package/dist/agent/managers/sessionArchiver.js.map +1 -1
- package/dist/agent/managers/sessionManager.d.ts +286 -57
- package/dist/agent/managers/sessionManager.d.ts.map +1 -1
- package/dist/agent/managers/sessionManager.js +846 -85
- package/dist/agent/managers/sessionManager.js.map +1 -1
- package/dist/agent/managers/sessionNamer.d.ts +35 -0
- package/dist/agent/managers/sessionNamer.d.ts.map +1 -0
- package/dist/agent/managers/sessionNamer.js +104 -0
- package/dist/agent/managers/sessionNamer.js.map +1 -0
- package/dist/agent/managers/streamAccumulator.d.ts +20 -0
- package/dist/agent/managers/streamAccumulator.d.ts.map +1 -0
- package/dist/agent/managers/streamAccumulator.js +15 -0
- package/dist/agent/managers/streamAccumulator.js.map +1 -0
- package/dist/agent/managers/textPolishManager.d.ts +8 -44
- package/dist/agent/managers/textPolishManager.d.ts.map +1 -1
- package/dist/agent/managers/textPolishManager.js +12 -47
- package/dist/agent/managers/textPolishManager.js.map +1 -1
- package/dist/agent/managers/toolCallHelpers.d.ts +105 -0
- package/dist/agent/managers/toolCallHelpers.d.ts.map +1 -0
- package/dist/agent/managers/toolCallHelpers.js +161 -0
- package/dist/agent/managers/toolCallHelpers.js.map +1 -0
- package/dist/agent/managers/workProjection.d.ts +57 -87
- package/dist/agent/managers/workProjection.d.ts.map +1 -1
- package/dist/agent/managers/workProjection.js +166 -246
- package/dist/agent/managers/workProjection.js.map +1 -1
- package/dist/agent/messageHistory.d.ts +134 -84
- package/dist/agent/messageHistory.d.ts.map +1 -1
- package/dist/agent/messageHistory.js +419 -133
- package/dist/agent/messageHistory.js.map +1 -1
- package/dist/agent/needsPlanning.d.ts +28 -0
- package/dist/agent/needsPlanning.d.ts.map +1 -0
- package/dist/agent/needsPlanning.js +68 -0
- package/dist/agent/needsPlanning.js.map +1 -0
- package/dist/agent/seed/index.d.ts +11 -0
- package/dist/agent/seed/index.d.ts.map +1 -0
- package/dist/agent/seed/index.js +10 -0
- package/dist/agent/seed/index.js.map +1 -0
- package/dist/agent/seed/orchestrator.d.ts +83 -0
- package/dist/agent/seed/orchestrator.d.ts.map +1 -0
- package/dist/agent/seed/orchestrator.js +260 -0
- package/dist/agent/seed/orchestrator.js.map +1 -0
- package/dist/agent/seed/prepare.d.ts +49 -0
- package/dist/agent/seed/prepare.d.ts.map +1 -0
- package/dist/agent/seed/prepare.js +107 -0
- package/dist/agent/seed/prepare.js.map +1 -0
- package/dist/agent/seed/types.d.ts +115 -0
- package/dist/agent/seed/types.d.ts.map +1 -0
- package/dist/agent/seed/types.js +15 -0
- package/dist/agent/seed/types.js.map +1 -0
- package/dist/agent/sessionStateMachine.d.ts +78 -0
- package/dist/agent/sessionStateMachine.d.ts.map +1 -0
- package/dist/agent/sessionStateMachine.js +182 -0
- package/dist/agent/sessionStateMachine.js.map +1 -0
- package/dist/agent/taskTableRenderer.d.ts +51 -0
- package/dist/agent/taskTableRenderer.d.ts.map +1 -0
- package/dist/agent/taskTableRenderer.js +115 -0
- package/dist/agent/taskTableRenderer.js.map +1 -0
- package/dist/agent/toolExecutor.d.ts +255 -9
- package/dist/agent/toolExecutor.d.ts.map +1 -1
- package/dist/agent/toolExecutor.js +956 -20
- package/dist/agent/toolExecutor.js.map +1 -1
- package/dist/agent/toolLedger.d.ts +120 -0
- package/dist/agent/toolLedger.d.ts.map +1 -0
- package/dist/agent/toolLedger.js +149 -0
- package/dist/agent/toolLedger.js.map +1 -0
- package/dist/agent/toolResultCache.d.ts +134 -0
- package/dist/agent/toolResultCache.d.ts.map +1 -0
- package/dist/agent/toolResultCache.js +243 -0
- package/dist/agent/toolResultCache.js.map +1 -0
- package/dist/agent/toolResultOffload.d.ts +59 -0
- package/dist/agent/toolResultOffload.d.ts.map +1 -0
- package/dist/agent/toolResultOffload.js +70 -0
- package/dist/agent/toolResultOffload.js.map +1 -0
- package/dist/agent/toolRunner.d.ts +59 -0
- package/dist/agent/toolRunner.d.ts.map +1 -0
- package/dist/agent/toolRunner.js +147 -0
- package/dist/agent/toolRunner.js.map +1 -0
- package/dist/agent/tracer.d.ts +99 -107
- package/dist/agent/tracer.d.ts.map +1 -1
- package/dist/agent/tracer.js +24 -69
- package/dist/agent/tracer.js.map +1 -1
- package/dist/agent/types.d.ts +512 -162
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js +2 -51
- package/dist/agent/types.js.map +1 -1
- package/dist/code-exec/codeExecutionProvider.d.ts +16 -0
- package/dist/code-exec/codeExecutionProvider.d.ts.map +1 -0
- package/dist/code-exec/codeExecutionProvider.js +57 -0
- package/dist/code-exec/codeExecutionProvider.js.map +1 -0
- package/dist/code-exec/types.d.ts +37 -0
- package/dist/code-exec/types.d.ts.map +1 -0
- package/dist/code-exec/types.js +12 -0
- package/dist/code-exec/types.js.map +1 -0
- package/dist/config/expandEnvVars.d.ts +22 -0
- package/dist/config/expandEnvVars.d.ts.map +1 -0
- package/dist/config/expandEnvVars.js +38 -0
- package/dist/config/expandEnvVars.js.map +1 -0
- package/dist/config/loader.d.ts +59 -242
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +237 -194
- package/dist/config/loader.js.map +1 -1
- package/dist/index.d.ts +69 -74
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +93 -63
- package/dist/index.js.map +1 -1
- package/dist/llm/abortSignal.d.ts +2 -3
- package/dist/llm/abortSignal.d.ts.map +1 -1
- package/dist/llm/abortSignal.js +2 -3
- package/dist/llm/abortSignal.js.map +1 -1
- package/dist/llm/factory.d.ts +29 -25
- package/dist/llm/factory.d.ts.map +1 -1
- package/dist/llm/factory.js +34 -69
- package/dist/llm/factory.js.map +1 -1
- package/dist/llm/openaiCompatible.d.ts +25 -40
- package/dist/llm/openaiCompatible.d.ts.map +1 -1
- package/dist/llm/openaiCompatible.js +181 -129
- package/dist/llm/openaiCompatible.js.map +1 -1
- package/dist/llm/provider.d.ts +29 -42
- package/dist/llm/provider.d.ts.map +1 -1
- package/dist/llm/provider.js +11 -10
- package/dist/llm/provider.js.map +1 -1
- package/dist/llm/types.d.ts +54 -11
- package/dist/llm/types.d.ts.map +1 -1
- package/dist/llm/types.js +0 -5
- package/dist/llm/types.js.map +1 -1
- package/dist/logging/logger.d.ts +8 -29
- package/dist/logging/logger.d.ts.map +1 -1
- package/dist/logging/logger.js +43 -233
- package/dist/logging/logger.js.map +1 -1
- package/dist/logging/loggerInterface.d.ts +9 -8
- package/dist/logging/loggerInterface.d.ts.map +1 -1
- package/dist/memory/gcService.d.ts +164 -0
- package/dist/memory/gcService.d.ts.map +1 -0
- package/dist/memory/gcService.js +215 -0
- package/dist/memory/gcService.js.map +1 -0
- package/dist/memory/governance.d.ts +17 -0
- package/dist/memory/governance.d.ts.map +1 -0
- package/dist/memory/governance.js +17 -0
- package/dist/memory/governance.js.map +1 -0
- package/dist/memory/inMemoryRoundStore.d.ts +124 -0
- package/dist/memory/inMemoryRoundStore.d.ts.map +1 -0
- package/dist/memory/inMemoryRoundStore.js +216 -0
- package/dist/memory/inMemoryRoundStore.js.map +1 -0
- package/dist/memory/inMemorySessionStore.d.ts +92 -0
- package/dist/memory/inMemorySessionStore.d.ts.map +1 -0
- package/dist/memory/inMemorySessionStore.js +219 -0
- package/dist/memory/inMemorySessionStore.js.map +1 -0
- package/dist/memory/inMemorySessionViewLoader.d.ts +89 -0
- package/dist/memory/inMemorySessionViewLoader.d.ts.map +1 -0
- package/dist/memory/inMemorySessionViewLoader.js +183 -0
- package/dist/memory/inMemorySessionViewLoader.js.map +1 -0
- package/dist/memory/inMemoryStorage.d.ts +26 -141
- package/dist/memory/inMemoryStorage.d.ts.map +1 -1
- package/dist/memory/inMemoryStorage.js +48 -187
- package/dist/memory/inMemoryStorage.js.map +1 -1
- package/dist/memory/keywordsTouch.d.ts +20 -0
- package/dist/memory/keywordsTouch.d.ts.map +1 -0
- package/dist/memory/keywordsTouch.js +25 -0
- package/dist/memory/keywordsTouch.js.map +1 -0
- package/dist/memory/lockManager.d.ts +7 -2
- package/dist/memory/lockManager.d.ts.map +1 -1
- package/dist/memory/lockManager.js +35 -11
- package/dist/memory/lockManager.js.map +1 -1
- package/dist/memory/projectManager.d.ts +30 -128
- package/dist/memory/projectManager.d.ts.map +1 -1
- package/dist/memory/projectManager.js +39 -171
- package/dist/memory/projectManager.js.map +1 -1
- package/dist/memory/projectRegistry.d.ts +22 -37
- package/dist/memory/projectRegistry.d.ts.map +1 -1
- package/dist/memory/projectRegistry.js +78 -85
- package/dist/memory/projectRegistry.js.map +1 -1
- package/dist/memory/roundStore.d.ts +629 -0
- package/dist/memory/roundStore.d.ts.map +1 -0
- package/dist/memory/roundStore.js +116 -0
- package/dist/memory/roundStore.js.map +1 -0
- package/dist/memory/sessionStore.d.ts +70 -61
- package/dist/memory/sessionStore.d.ts.map +1 -1
- package/dist/memory/sessionStore.js +23 -1
- package/dist/memory/sessionStore.js.map +1 -1
- package/dist/memory/sessionViewLoader.d.ts +141 -0
- package/dist/memory/sessionViewLoader.d.ts.map +1 -0
- package/dist/memory/sessionViewLoader.js +65 -0
- package/dist/memory/sessionViewLoader.js.map +1 -0
- package/dist/memory/sourceValidation.d.ts +18 -9
- package/dist/memory/sourceValidation.d.ts.map +1 -1
- package/dist/memory/sourceValidation.js +35 -29
- package/dist/memory/sourceValidation.js.map +1 -1
- package/dist/memory/storageInterface.d.ts +45 -126
- package/dist/memory/storageInterface.d.ts.map +1 -1
- package/dist/memory/types.d.ts +82 -168
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/memory/types.js +116 -79
- package/dist/memory/types.js.map +1 -1
- package/dist/project-search/projectSearchProvider.d.ts +29 -0
- package/dist/project-search/projectSearchProvider.d.ts.map +1 -0
- package/dist/project-search/projectSearchProvider.js +57 -0
- package/dist/project-search/projectSearchProvider.js.map +1 -0
- package/dist/project-search/terms.d.ts +14 -0
- package/dist/project-search/terms.d.ts.map +1 -0
- package/dist/project-search/terms.js +68 -0
- package/dist/project-search/terms.js.map +1 -0
- package/dist/project-search/types.d.ts +139 -0
- package/dist/project-search/types.d.ts.map +1 -0
- package/dist/project-search/types.js +8 -0
- package/dist/project-search/types.js.map +1 -0
- package/dist/role-pack/capabilityMap.d.ts +28 -0
- package/dist/role-pack/capabilityMap.d.ts.map +1 -0
- package/dist/role-pack/capabilityMap.js +56 -0
- package/dist/role-pack/capabilityMap.js.map +1 -0
- package/dist/role-pack/constants.d.ts +21 -0
- package/dist/role-pack/constants.d.ts.map +1 -0
- package/dist/role-pack/constants.js +21 -0
- package/dist/role-pack/constants.js.map +1 -0
- package/dist/role-pack/rolePackManager.d.ts +269 -0
- package/dist/role-pack/rolePackManager.d.ts.map +1 -0
- package/dist/role-pack/rolePackManager.js +1082 -0
- package/dist/role-pack/rolePackManager.js.map +1 -0
- package/dist/role-pack/strategyKeys.d.ts +100 -0
- package/dist/role-pack/strategyKeys.d.ts.map +1 -0
- package/dist/role-pack/strategyKeys.js +184 -0
- package/dist/role-pack/strategyKeys.js.map +1 -0
- package/dist/role-pack/strategyResolver.d.ts +109 -0
- package/dist/role-pack/strategyResolver.d.ts.map +1 -0
- package/dist/role-pack/strategyResolver.js +304 -0
- package/dist/role-pack/strategyResolver.js.map +1 -0
- package/dist/role-pack/types.d.ts +237 -0
- package/dist/role-pack/types.d.ts.map +1 -0
- package/dist/role-pack/types.js +8 -0
- package/dist/role-pack/types.js.map +1 -0
- package/dist/role-pack/validator.d.ts +38 -0
- package/dist/role-pack/validator.d.ts.map +1 -0
- package/dist/role-pack/validator.js +436 -0
- package/dist/role-pack/validator.js.map +1 -0
- package/dist/security/pathGuard.d.ts +69 -72
- package/dist/security/pathGuard.d.ts.map +1 -1
- package/dist/security/pathGuard.js +151 -131
- package/dist/security/pathGuard.js.map +1 -1
- package/dist/skill/skillLayer3.d.ts +91 -0
- package/dist/skill/skillLayer3.d.ts.map +1 -0
- package/dist/skill/skillLayer3.js +104 -0
- package/dist/skill/skillLayer3.js.map +1 -0
- package/dist/skill/skillManager.d.ts +127 -56
- package/dist/skill/skillManager.d.ts.map +1 -1
- package/dist/skill/skillManager.js +318 -163
- package/dist/skill/skillManager.js.map +1 -1
- package/dist/skill/skillScriptRunner.d.ts +97 -0
- package/dist/skill/skillScriptRunner.d.ts.map +1 -0
- package/dist/skill/skillScriptRunner.js +271 -0
- package/dist/skill/skillScriptRunner.js.map +1 -0
- package/dist/skill/types.d.ts +73 -17
- package/dist/skill/types.d.ts.map +1 -1
- package/dist/skill/types.js +5 -1
- package/dist/skill/types.js.map +1 -1
- package/dist/utils/array.d.ts +5 -6
- package/dist/utils/array.d.ts.map +1 -1
- package/dist/utils/array.js +6 -6
- package/dist/utils/array.js.map +1 -1
- package/dist/utils/atomicWrite.d.ts +8 -0
- package/dist/utils/atomicWrite.d.ts.map +1 -0
- package/dist/utils/atomicWrite.js +31 -0
- package/dist/utils/atomicWrite.js.map +1 -0
- package/dist/utils/backgroundTask.d.ts +38 -0
- package/dist/utils/backgroundTask.d.ts.map +1 -0
- package/dist/utils/backgroundTask.js +117 -0
- package/dist/utils/backgroundTask.js.map +1 -0
- package/dist/utils/configResourceManager.d.ts +79 -0
- package/dist/utils/configResourceManager.d.ts.map +1 -0
- package/dist/utils/configResourceManager.js +150 -0
- package/dist/utils/configResourceManager.js.map +1 -0
- package/dist/utils/errors.d.ts +48 -56
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +60 -58
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/eventEmitter.d.ts +141 -63
- package/dist/utils/eventEmitter.d.ts.map +1 -1
- package/dist/utils/eventEmitter.js +50 -35
- package/dist/utils/eventEmitter.js.map +1 -1
- package/dist/utils/fileSafe.d.ts +20 -0
- package/dist/utils/fileSafe.d.ts.map +1 -0
- package/dist/utils/fileSafe.js +56 -0
- package/dist/utils/fileSafe.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +2 -3
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +6 -5
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/hash.d.ts +12 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +27 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/http.d.ts +17 -0
- package/dist/utils/http.d.ts.map +1 -0
- package/dist/utils/http.js +29 -0
- package/dist/utils/http.js.map +1 -0
- package/dist/utils/json.d.ts +1 -1
- package/dist/utils/json.js +1 -1
- package/dist/utils/math.d.ts +34 -1
- package/dist/utils/math.d.ts.map +1 -1
- package/dist/utils/math.js +47 -14
- package/dist/utils/math.js.map +1 -1
- package/dist/utils/objects.d.ts +2 -3
- package/dist/utils/objects.d.ts.map +1 -1
- package/dist/utils/objects.js +2 -3
- package/dist/utils/objects.js.map +1 -1
- package/dist/utils/recallDefaults.d.ts +16 -0
- package/dist/utils/recallDefaults.d.ts.map +1 -0
- package/dist/utils/recallDefaults.js +16 -0
- package/dist/utils/recallDefaults.js.map +1 -0
- package/dist/utils/safeTimer.d.ts +8 -36
- package/dist/utils/safeTimer.d.ts.map +1 -1
- package/dist/utils/safeTimer.js +9 -37
- package/dist/utils/safeTimer.js.map +1 -1
- package/dist/utils/scanner.d.ts +97 -17
- package/dist/utils/scanner.d.ts.map +1 -1
- package/dist/utils/scanner.js +269 -47
- package/dist/utils/scanner.js.map +1 -1
- package/dist/utils/segmenter.d.ts +20 -29
- package/dist/utils/segmenter.d.ts.map +1 -1
- package/dist/utils/segmenter.js +230 -88
- package/dist/utils/segmenter.js.map +1 -1
- package/dist/utils/strings.d.ts +15 -32
- package/dist/utils/strings.d.ts.map +1 -1
- package/dist/utils/strings.js +25 -44
- package/dist/utils/strings.js.map +1 -1
- package/dist/utils/time.d.ts +37 -0
- package/dist/utils/time.d.ts.map +1 -1
- package/dist/utils/time.js +56 -0
- package/dist/utils/time.js.map +1 -1
- package/dist/utils/toError.d.ts +13 -1
- package/dist/utils/toError.d.ts.map +1 -1
- package/dist/utils/toError.js +18 -1
- package/dist/utils/toError.js.map +1 -1
- package/dist/web-fetch/fetchWebFetchProvider.d.ts +14 -0
- package/dist/web-fetch/fetchWebFetchProvider.d.ts.map +1 -0
- package/dist/web-fetch/fetchWebFetchProvider.js +69 -0
- package/dist/web-fetch/fetchWebFetchProvider.js.map +1 -0
- package/dist/web-fetch/types.d.ts +30 -0
- package/dist/web-fetch/types.d.ts.map +1 -0
- package/dist/web-fetch/types.js +7 -0
- package/dist/web-fetch/types.js.map +1 -0
- package/dist/web-fetch/webFetchProvider.d.ts +10 -0
- package/dist/web-fetch/webFetchProvider.d.ts.map +1 -0
- package/dist/web-fetch/webFetchProvider.js +28 -0
- package/dist/web-fetch/webFetchProvider.js.map +1 -0
- package/dist/web-search/fetchWebSearchProvider.d.ts +27 -0
- package/dist/web-search/fetchWebSearchProvider.d.ts.map +1 -0
- package/dist/web-search/fetchWebSearchProvider.js +199 -0
- package/dist/web-search/fetchWebSearchProvider.js.map +1 -0
- package/dist/web-search/types.d.ts +46 -0
- package/dist/web-search/types.d.ts.map +1 -0
- package/dist/web-search/types.js +2 -0
- package/dist/{persona → web-search}/types.js.map +1 -1
- package/dist/web-search/webSearchProvider.d.ts +10 -0
- package/dist/web-search/webSearchProvider.d.ts.map +1 -0
- package/dist/web-search/webSearchProvider.js +30 -0
- package/dist/web-search/webSearchProvider.js.map +1 -0
- package/docs/architecture/role-pack-authoring-guide.md +243 -0
- package/docs/architecture/role-pack-spec.md +767 -0
- package/docs/memora-api-reference.md +1175 -0
- package/docs/memora-/346/216/245/345/205/245/346/214/207/345/215/227.md +843 -0
- package/docs/role-pack-/345/274/200/346/224/276/351/224/256/346/214/207/345/215/227.md +148 -0
- package/package.json +105 -83
- package/role-packs/README.md +41 -0
- package/role-packs/memora/345/212/251/346/211/213/manifest.json +12 -0
- package/role-packs/memora/345/212/251/346/211/213/persona.md +12 -0
- package/role-packs/memora/345/212/251/346/211/213/rules.md +4 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/manifest.json +44 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/persona.md +46 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/rules.md +15 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/character-sheet.md +34 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/core-extractor.md +37 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/craft-review.md +69 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/dialogue-craft.md +45 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/emotion-wave.md +46 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/empathy-craft.md +79 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/foreshadow.md +29 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/hotspot-mapping.md +121 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/idea-lever.md +42 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/logline-craft.md +47 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/longform-guard.md +64 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/need-finder.md +40 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/outline-expand.md +46 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/pacing-hook.md +34 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/polish-method.md +113 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/pov-discipline.md +79 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/project-init/SKILL.md +112 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/project-init/scripts/init-novel-project.mjs +441 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/relationship-web.md +47 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/scene-craft.md +46 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/story-bible.md +60 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/story-structure.md +36 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/style-weaver.md +109 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/three-layer-check.md +27 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/world-builder.md +41 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/manifest.json +48 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/persona.md +73 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/rules.md +19 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/api-doc-writer.md +40 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/doc-planner.md +42 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/nutrient-search.md +28 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/seed-finder.md +28 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/ssot-audit.md +34 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/style-guide.md +40 -0
- package/dist/agent/guardrail.d.ts +0 -47
- package/dist/agent/guardrail.d.ts.map +0 -1
- package/dist/agent/guardrail.js +0 -51
- package/dist/agent/guardrail.js.map +0 -1
- package/dist/agent/managers/autoConfigRefiner.d.ts +0 -39
- package/dist/agent/managers/autoConfigRefiner.d.ts.map +0 -1
- package/dist/agent/managers/autoConfigRefiner.js +0 -150
- package/dist/agent/managers/autoConfigRefiner.js.map +0 -1
- package/dist/agent/managers/configManager.d.ts +0 -125
- package/dist/agent/managers/configManager.d.ts.map +0 -1
- package/dist/agent/managers/configManager.js +0 -194
- package/dist/agent/managers/configManager.js.map +0 -1
- package/dist/agent/managers/insightExtractor.d.ts +0 -139
- package/dist/agent/managers/insightExtractor.d.ts.map +0 -1
- package/dist/agent/managers/insightExtractor.js +0 -401
- package/dist/agent/managers/insightExtractor.js.map +0 -1
- package/dist/agent/managers/memoryDecayScheduler.d.ts +0 -198
- package/dist/agent/managers/memoryDecayScheduler.d.ts.map +0 -1
- package/dist/agent/managers/memoryDecayScheduler.js +0 -349
- package/dist/agent/managers/memoryDecayScheduler.js.map +0 -1
- package/dist/agent/managers/relationBuilder.d.ts +0 -131
- package/dist/agent/managers/relationBuilder.d.ts.map +0 -1
- package/dist/agent/managers/relationBuilder.js +0 -192
- package/dist/agent/managers/relationBuilder.js.map +0 -1
- package/dist/agent/personaMatcher.d.ts +0 -29
- package/dist/agent/personaMatcher.d.ts.map +0 -1
- package/dist/agent/personaMatcher.js +0 -60
- package/dist/agent/personaMatcher.js.map +0 -1
- package/dist/agent/userFactExtractor.d.ts +0 -25
- package/dist/agent/userFactExtractor.d.ts.map +0 -1
- package/dist/agent/userFactExtractor.js +0 -81
- package/dist/agent/userFactExtractor.js.map +0 -1
- package/dist/eval/evalRunner.d.ts +0 -94
- package/dist/eval/evalRunner.d.ts.map +0 -1
- package/dist/eval/evalRunner.js +0 -141
- package/dist/eval/evalRunner.js.map +0 -1
- package/dist/eval/evalTypes.d.ts +0 -148
- package/dist/eval/evalTypes.d.ts.map +0 -1
- package/dist/eval/evalTypes.js +0 -118
- package/dist/eval/evalTypes.js.map +0 -1
- package/dist/eval/scenarios.d.ts +0 -33
- package/dist/eval/scenarios.d.ts.map +0 -1
- package/dist/eval/scenarios.js +0 -109
- package/dist/eval/scenarios.js.map +0 -1
- package/dist/llm/embedding.d.ts +0 -67
- package/dist/llm/embedding.d.ts.map +0 -1
- package/dist/llm/embedding.js +0 -184
- package/dist/llm/embedding.js.map +0 -1
- package/dist/memory/hybridMerge.d.ts +0 -54
- package/dist/memory/hybridMerge.d.ts.map +0 -1
- package/dist/memory/hybridMerge.js +0 -36
- package/dist/memory/hybridMerge.js.map +0 -1
- package/dist/memory/inMemoryRelationStore.d.ts +0 -51
- package/dist/memory/inMemoryRelationStore.d.ts.map +0 -1
- package/dist/memory/inMemoryRelationStore.js +0 -65
- package/dist/memory/inMemoryRelationStore.js.map +0 -1
- package/dist/memory/loader.d.ts +0 -49
- package/dist/memory/loader.d.ts.map +0 -1
- package/dist/memory/loader.js +0 -93
- package/dist/memory/loader.js.map +0 -1
- package/dist/memory/recall.d.ts +0 -66
- package/dist/memory/recall.d.ts.map +0 -1
- package/dist/memory/recall.js +0 -142
- package/dist/memory/recall.js.map +0 -1
- package/dist/memory/relationStore.d.ts +0 -78
- package/dist/memory/relationStore.d.ts.map +0 -1
- package/dist/memory/relationStore.js +0 -2
- package/dist/memory/relationStore.js.map +0 -1
- package/dist/memory/store.d.ts +0 -50
- package/dist/memory/store.d.ts.map +0 -1
- package/dist/memory/store.js +0 -161
- package/dist/memory/store.js.map +0 -1
- package/dist/memory/userProfile.d.ts +0 -156
- package/dist/memory/userProfile.d.ts.map +0 -1
- package/dist/memory/userProfile.js +0 -320
- package/dist/memory/userProfile.js.map +0 -1
- package/dist/memory/vectorStore.d.ts +0 -185
- package/dist/memory/vectorStore.d.ts.map +0 -1
- package/dist/memory/vectorStore.js +0 -257
- package/dist/memory/vectorStore.js.map +0 -1
- package/dist/persona/personaManager.d.ts +0 -160
- package/dist/persona/personaManager.d.ts.map +0 -1
- package/dist/persona/personaManager.js +0 -414
- package/dist/persona/personaManager.js.map +0 -1
- package/dist/persona/types.d.ts +0 -32
- package/dist/persona/types.d.ts.map +0 -1
- package/dist/persona/types.js +0 -5
|
@@ -1,181 +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
|
-
* 项目上下文:打开一个项目后产出的一组组件
|
|
10
|
-
* 与 DomainContext 类似,但增加了项目级别的信息
|
|
11
|
-
*/
|
|
5
|
+
/** 项目上下文:打开一个项目后产出的一组组件(含项目级信息) */
|
|
12
6
|
export interface ProjectContext {
|
|
13
7
|
/** 项目根目录的绝对路径 */
|
|
14
8
|
projectPath: string;
|
|
15
|
-
/**
|
|
9
|
+
/** 项目名称(注册表读取或取目录名) */
|
|
16
10
|
projectName: string;
|
|
17
11
|
/** .memora/ 目录的绝对路径 */
|
|
18
12
|
memoraDir: string;
|
|
19
|
-
/**
|
|
20
|
-
dbPath: string;
|
|
21
|
-
/** 文件存储 */
|
|
22
|
-
fileStore: FileStore;
|
|
23
|
-
/** SQLite 索引(通过 IMemoryStorage 接口访问) */
|
|
13
|
+
/** 记忆存储(经 IMemoryStorage 接口访问) */
|
|
24
14
|
index: IMemoryStorage;
|
|
25
|
-
/** 安全守卫(可空,由 Agent
|
|
15
|
+
/** 安全守卫(可空,由 Agent 层注入工厂创建) */
|
|
26
16
|
security: SecurityGuard | null;
|
|
27
|
-
/**
|
|
17
|
+
/** 启动必召记忆(设定记忆唯一归角色包内容层,恒为空数组) */
|
|
28
18
|
bootstrapMemories: Memory[];
|
|
29
|
-
/** 加载结果 */
|
|
30
|
-
loadResult: LoadResult;
|
|
31
19
|
}
|
|
32
|
-
/**
|
|
33
|
-
* ProjectManager 构造选项
|
|
34
|
-
*/
|
|
20
|
+
/** ProjectManager 构造选项 */
|
|
35
21
|
export interface ProjectManagerOptions {
|
|
36
|
-
/** Agent
|
|
22
|
+
/** Agent 级数据目录(宿主传入;内核不假设其下的文件形态) */
|
|
37
23
|
dataDir: string;
|
|
38
|
-
/**
|
|
24
|
+
/** 外部注入存储实例(可选,不传则内部 InMemoryStorage 兜底) */
|
|
39
25
|
storage?: IMemoryStorage;
|
|
40
|
-
/**
|
|
26
|
+
/** 注册表目录(可选,缺省同 dataDir;跨项目按名解析需要多项目共用一份注册表) */
|
|
41
27
|
registryDir?: string;
|
|
42
28
|
/**
|
|
43
|
-
* SecurityGuard
|
|
44
|
-
*
|
|
45
|
-
* 在项目切换时调用,传入项目路径、.memora/ 目录、Agent 级配置目录和数据目录,
|
|
46
|
-
* 返回一个配置好的 SecurityGuard 实例。
|
|
47
|
-
* 不提供时 ProjectContext.security 为 null(宿主需自行处理安全校验)。
|
|
29
|
+
* SecurityGuard 工厂函数(Agent 层注入,解除 memory→security 反向依赖)。
|
|
30
|
+
* 项目切换时调用;不提供则 ProjectContext.security 为 null。
|
|
48
31
|
*/
|
|
49
32
|
createSecurityGuard?: (projectPath: string, memoraDir: string, configDir?: string, agentDataDir?: string) => SecurityGuard;
|
|
50
33
|
}
|
|
51
34
|
/**
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
* 管理多项目的生命周期:
|
|
55
|
-
* 1. 初始化当前项目(加锁 + 加载两层配置)
|
|
56
|
-
* 2. /project <name> 切换到新项目(解锁旧项目 + 加锁新项目)
|
|
57
|
-
* 3. 退出时清理锁文件
|
|
58
|
-
*
|
|
59
|
-
* 注册表/锁文件实现委托给 ProjectRegistry / LockManager,
|
|
60
|
-
* 本类聚焦生命周期编排。
|
|
35
|
+
* 项目管理器:管理多项目生命周期——初始化当前项目(加锁+加载两层配置)、
|
|
36
|
+
* 切换到新项目(解锁旧+锁新)、退出清理锁文件。注册表/锁文件委托专职模块,本类聚焦编排。
|
|
61
37
|
*/
|
|
62
38
|
export declare class ProjectManager {
|
|
63
|
-
/** Agent
|
|
39
|
+
/** Agent 级数据目录(宿主传入;内核不假设其下的文件形态) */
|
|
64
40
|
private readonly agentDataDir;
|
|
65
41
|
/** Agent 级存储实例(全局共享,不随项目切换重建) */
|
|
66
42
|
private agentIndex;
|
|
67
43
|
/** 当前打开的项目路径 */
|
|
68
44
|
private currentProjectPath;
|
|
69
|
-
/**
|
|
45
|
+
/** 外部注入存储实例(不传则内部 InMemoryStorage 兜底) */
|
|
70
46
|
private externalStorage;
|
|
71
|
-
/** SecurityGuard
|
|
47
|
+
/** SecurityGuard 工厂函数(Agent 层注入) */
|
|
72
48
|
private readonly createSecurityGuard?;
|
|
73
|
-
/**
|
|
49
|
+
/** 项目注册表(专职 projects.json) */
|
|
74
50
|
private readonly registry;
|
|
75
|
-
/**
|
|
51
|
+
/** 锁文件管理器(专职 .memora/.lock) */
|
|
76
52
|
private readonly lockManager;
|
|
77
53
|
constructor(options: ProjectManagerOptions);
|
|
78
54
|
/**
|
|
79
|
-
* 确保 Agent
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
* 如果构造时注入了外部存储实例,直接使用;
|
|
83
|
-
* 否则内部创建 InMemoryStorage(非持久化兜底,仅开发/测试用)。
|
|
55
|
+
* 确保 Agent 级资源(存储实例)已初始化,生命周期内共享不随项目切换重建。
|
|
56
|
+
* 构造注入的外部实例直接用,否则内部 InMemoryStorage(非持久化,仅开发/测试)。
|
|
84
57
|
*/
|
|
85
58
|
private ensureAgentResources;
|
|
86
59
|
/**
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
* 两层记忆加载:
|
|
90
|
-
* 1) 项目级:扫描 projectPath/.memora/rules/ + skills/
|
|
91
|
-
* 2) Agent 级:扫描 configDir 下的所有配置(rules/skills/personas/tools)
|
|
92
|
-
*
|
|
93
|
-
* 全局规则不再由内核硬编码路径,宿主可通过 configDir 统一管理。
|
|
94
|
-
*
|
|
95
|
-
* memora.db 是 Agent 级共享资源,不随项目切换重建。
|
|
96
|
-
*
|
|
97
|
-
* 主体编排(关闭旧项目 + 锁 + 错误回滚)+ loadAllResources(两层加载)
|
|
98
|
-
* + buildProjectContext(上下文构建)三个子方法分工。
|
|
99
|
-
*
|
|
100
|
-
* @param projectPath 项目根目录
|
|
101
|
-
* @param projectName 项目名称(可选,默认取目录名)
|
|
102
|
-
* @param configDir Agent 级配置目录(personas/rules/skills/tools)
|
|
60
|
+
* 初始化项目:关闭旧项目→取项目级锁→确保共享存储→构建上下文。
|
|
61
|
+
* 任一步失败释放锁并重置状态,防锁文件残留导致下次启动检测失败。
|
|
103
62
|
*/
|
|
104
63
|
initProject(projectPath: string, projectName?: string, configDir?: string): Promise<ProjectContext>;
|
|
105
64
|
/**
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
* 职责:确保 Agent 级存储 + 扫描项目级 + 扫描 Agent 级配置,合并加载结果。
|
|
109
|
-
*
|
|
110
|
-
* @param memoraDir 项目 .memora/ 目录
|
|
111
|
-
* @param configDir Agent 级配置目录(可选)
|
|
112
|
-
* @returns index 存储实例 + loadResult 合并加载结果 + projectFileStore 项目级 FileStore
|
|
113
|
-
*/
|
|
114
|
-
private loadAllResources;
|
|
115
|
-
/**
|
|
116
|
-
* 构建项目上下文
|
|
117
|
-
*
|
|
118
|
-
* 职责:bootstrap 过滤 + 安全守卫创建 + 项目注册 + 日志 + 返回上下文。
|
|
119
|
-
*
|
|
120
|
-
* @param projectPath 项目根目录
|
|
121
|
-
* @param projectName 项目名称(可选,默认取目录名)
|
|
122
|
-
* @param memoraDir 项目 .memora/ 目录
|
|
123
|
-
* @param index 存储实例
|
|
124
|
-
* @param projectFileStore 项目级 FileStore
|
|
125
|
-
* @param loadResult 加载结果
|
|
126
|
-
* @param configDir Agent 级配置目录(用于安全守卫创建)
|
|
127
|
-
* @returns 完整的项目上下文
|
|
65
|
+
* 构建项目上下文:bootstrap 过滤(恒为空,设定记忆归角色包层)+ 安全守卫创建 + 项目注册 + 日志。
|
|
128
66
|
*/
|
|
129
67
|
private buildProjectContext;
|
|
130
|
-
/**
|
|
131
|
-
* 关闭当前项目
|
|
132
|
-
* 释放锁文件,但不关闭 Agent 级数据库(memora.db 是共享的)
|
|
133
|
-
*/
|
|
68
|
+
/** 关闭当前项目:释放锁/清状态,但不关 Agent 级 DB(共享,Agent 生命周期内持久存在) */
|
|
134
69
|
closeProject(): Promise<void>;
|
|
135
|
-
/**
|
|
136
|
-
* 完全关闭:释放项目锁 + 关闭 Agent 级数据库
|
|
137
|
-
* 应在 Agent 整体关闭时调用(而非项目切换时)
|
|
138
|
-
*/
|
|
70
|
+
/** 完全关闭:释放项目锁 + 关闭 Agent 级数据库(应在 Agent 整体关闭而非项目切换时调用) */
|
|
139
71
|
shutdown(): Promise<void>;
|
|
140
|
-
/**
|
|
141
|
-
* 列出已注册的项目(IX-02:统一为 getter 风格,与 persona/skill 一致)
|
|
142
|
-
*
|
|
143
|
-
* 委托给 ProjectRegistry。
|
|
144
|
-
*/
|
|
72
|
+
/** 列出已注册项目(委托 ProjectRegistry) */
|
|
145
73
|
get list(): ProjectEntry[];
|
|
146
|
-
/**
|
|
147
|
-
* 列出已注册的项目
|
|
148
|
-
*
|
|
149
|
-
* v1.0 公共 API(CHANGELOG 迁移路径:`agent.listProjects()` → `agent.projects.listProjects()`)。
|
|
150
|
-
* 与 `.list` getter 等价,保留方法形式以兼容 0.3 迁移路径。
|
|
151
|
-
*/
|
|
152
|
-
listProjects(): ProjectEntry[];
|
|
153
|
-
/**
|
|
154
|
-
* 注册项目到注册表
|
|
155
|
-
*
|
|
156
|
-
* 委托给 ProjectRegistry。
|
|
157
|
-
*
|
|
158
|
-
* @param projectPath 项目根目录
|
|
159
|
-
* @param name 项目名称
|
|
160
|
-
*/
|
|
74
|
+
/** 注册项目(委托 ProjectRegistry) */
|
|
161
75
|
registerProject(projectPath: string, name: string): void;
|
|
162
|
-
/**
|
|
163
|
-
* 从注册表移除项目
|
|
164
|
-
*
|
|
165
|
-
* 委托给 ProjectRegistry。
|
|
166
|
-
*
|
|
167
|
-
* @param projectPath 项目根目录
|
|
168
|
-
*/
|
|
76
|
+
/** 移除项目(委托 ProjectRegistry) */
|
|
169
77
|
unregisterProject(projectPath: string): void;
|
|
170
|
-
/**
|
|
171
|
-
* 获取当前项目路径
|
|
172
|
-
*/
|
|
78
|
+
/** 当前项目路径 */
|
|
173
79
|
get currentProject(): string | null;
|
|
174
|
-
/**
|
|
175
|
-
* 解析项目的 .memora/ 目录路径
|
|
176
|
-
* 每个项目有独立的 .memora/ 目录(在项目根目录下)
|
|
177
|
-
* 这与 config.memory.dataDir(用户级默认目录)不同
|
|
178
|
-
*/
|
|
80
|
+
/** 解析项目 .memora/ 目录(项目根目录下,区别于用户级 dataDir) */
|
|
179
81
|
private resolveMemoraDir;
|
|
180
82
|
}
|
|
181
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,91 +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
35
|
constructor(options) {
|
|
59
36
|
const { dataDir, storage, registryDir, createSecurityGuard } = options;
|
|
60
37
|
const memoraHome = resolve(expandHome(dataDir));
|
|
61
38
|
this.agentDataDir = memoraHome;
|
|
62
|
-
//
|
|
39
|
+
// 注册表目录:显式指定时用之(典型为用户级路径,使注册表跨项目共享);
|
|
40
|
+
// 缺省随 dataDir——此时注册表能否跨项目取决于调用方传的 dataDir 是共享还是项目级,
|
|
41
|
+
// 内核不做假设:项目级 dataDir 下每个项目只注册自身,按名切换不成立(switchProject 已加守卫)。
|
|
63
42
|
const registryHome = registryDir ? resolve(expandHome(registryDir)) : memoraHome;
|
|
64
|
-
// 保存外部注入的存储实例(宿主项目注入时使用)
|
|
65
43
|
this.externalStorage = storage ?? null;
|
|
66
|
-
// 保存 SecurityGuard 工厂函数
|
|
67
44
|
this.createSecurityGuard = createSecurityGuard;
|
|
68
|
-
//
|
|
45
|
+
// 注册表/锁文件委托专职模块
|
|
69
46
|
this.registry = new ProjectRegistry(join(registryHome, 'projects.json'));
|
|
70
47
|
this.lockManager = new LockManager();
|
|
71
48
|
}
|
|
72
49
|
/**
|
|
73
|
-
* 确保 Agent
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
* 如果构造时注入了外部存储实例,直接使用;
|
|
77
|
-
* 否则内部创建 InMemoryStorage(非持久化兜底,仅开发/测试用)。
|
|
50
|
+
* 确保 Agent 级资源(存储实例)已初始化,生命周期内共享不随项目切换重建。
|
|
51
|
+
* 构造注入的外部实例直接用,否则内部 InMemoryStorage(非持久化,仅开发/测试)。
|
|
78
52
|
*/
|
|
79
53
|
async ensureAgentResources() {
|
|
80
54
|
if (!this.agentIndex) {
|
|
81
55
|
await mkdir(this.agentDataDir, { recursive: true });
|
|
82
|
-
// 优先使用外部注入的存储实例
|
|
83
56
|
if (this.externalStorage) {
|
|
84
57
|
this.agentIndex = this.externalStorage;
|
|
85
58
|
}
|
|
86
59
|
else {
|
|
87
|
-
// 兜底:InMemoryStorage(非持久化,不依赖 native 模块)
|
|
88
|
-
// 生产环境应由宿主注入持久化实现(如 SqliteStorage)
|
|
89
60
|
logger.warn({ hasStorage: false }, '未注入持久化存储实现,Agent 将使用 InMemoryStorage(数据重启后丢失)');
|
|
90
61
|
this.agentIndex = new InMemoryStorage();
|
|
91
62
|
}
|
|
@@ -93,42 +64,27 @@ export class ProjectManager {
|
|
|
93
64
|
return { index: this.agentIndex };
|
|
94
65
|
}
|
|
95
66
|
/**
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
* 两层记忆加载:
|
|
99
|
-
* 1) 项目级:扫描 projectPath/.memora/rules/ + skills/
|
|
100
|
-
* 2) Agent 级:扫描 configDir 下的所有配置(rules/skills/personas/tools)
|
|
101
|
-
*
|
|
102
|
-
* 全局规则不再由内核硬编码路径,宿主可通过 configDir 统一管理。
|
|
103
|
-
*
|
|
104
|
-
* memora.db 是 Agent 级共享资源,不随项目切换重建。
|
|
105
|
-
*
|
|
106
|
-
* 主体编排(关闭旧项目 + 锁 + 错误回滚)+ loadAllResources(两层加载)
|
|
107
|
-
* + buildProjectContext(上下文构建)三个子方法分工。
|
|
108
|
-
*
|
|
109
|
-
* @param projectPath 项目根目录
|
|
110
|
-
* @param projectName 项目名称(可选,默认取目录名)
|
|
111
|
-
* @param configDir Agent 级配置目录(personas/rules/skills/tools)
|
|
67
|
+
* 初始化项目:关闭旧项目→取项目级锁→确保共享存储→构建上下文。
|
|
68
|
+
* 任一步失败释放锁并重置状态,防锁文件残留导致下次启动检测失败。
|
|
112
69
|
*/
|
|
113
70
|
async initProject(projectPath, projectName, configDir) {
|
|
114
|
-
// 1)
|
|
71
|
+
// 1) 关闭旧项目(释放旧锁,不关 Agent 级 DB)
|
|
115
72
|
if (this.currentProjectPath) {
|
|
116
73
|
await this.closeProject();
|
|
117
74
|
}
|
|
118
|
-
// 2) 解析 memoraDir +
|
|
75
|
+
// 2) 解析 memoraDir + 获取项目级锁(委托 LockManager)
|
|
119
76
|
const memoraDir = this.resolveMemoraDir(projectPath);
|
|
120
77
|
await this.lockManager.acquire(memoraDir);
|
|
121
78
|
this.currentProjectPath = projectPath;
|
|
122
|
-
// 后续步骤失败时释放锁并重置状态,避免锁文件残留导致下次启动检测失败
|
|
123
79
|
try {
|
|
124
|
-
// 3) 确保项目目录 +
|
|
80
|
+
// 3) 确保项目目录 + Agent 级共享存储
|
|
125
81
|
await mkdir(memoraDir, { recursive: true });
|
|
126
|
-
const { index
|
|
82
|
+
const { index } = await this.ensureAgentResources();
|
|
127
83
|
// 4) 构建并返回项目上下文
|
|
128
|
-
return this.buildProjectContext(projectPath, projectName, memoraDir, index,
|
|
84
|
+
return this.buildProjectContext(projectPath, projectName, memoraDir, index, configDir);
|
|
129
85
|
}
|
|
130
86
|
catch (err) {
|
|
131
|
-
//
|
|
87
|
+
// 失败时释放锁并重置状态,防锁文件残留
|
|
132
88
|
await this.lockManager.release().catch((releaseErr) => {
|
|
133
89
|
logger.warn({ err: releaseErr }, '释放项目锁失败');
|
|
134
90
|
});
|
|
@@ -137,95 +93,39 @@ export class ProjectManager {
|
|
|
137
93
|
}
|
|
138
94
|
}
|
|
139
95
|
/**
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
* 职责:确保 Agent 级存储 + 扫描项目级 + 扫描 Agent 级配置,合并加载结果。
|
|
143
|
-
*
|
|
144
|
-
* @param memoraDir 项目 .memora/ 目录
|
|
145
|
-
* @param configDir Agent 级配置目录(可选)
|
|
146
|
-
* @returns index 存储实例 + loadResult 合并加载结果 + projectFileStore 项目级 FileStore
|
|
96
|
+
* 构建项目上下文:bootstrap 过滤(恒为空,设定记忆归角色包层)+ 安全守卫创建 + 项目注册 + 日志。
|
|
147
97
|
*/
|
|
148
|
-
|
|
149
|
-
//
|
|
150
|
-
const
|
|
151
|
-
//
|
|
152
|
-
const loadResult = { loaded: 0, skipped: 0, errors: [] };
|
|
153
|
-
// 1) 项目级 FileStore:扫描 projectPath/.memora/ 下的 rules/ + skills/
|
|
154
|
-
const projectFileStore = new FileStore(memoraDir);
|
|
155
|
-
const projectLoader = new MemoryLoader(projectFileStore, index);
|
|
156
|
-
const projectResult = await projectLoader.loadAllToIndex();
|
|
157
|
-
loadResult.loaded += projectResult.loaded;
|
|
158
|
-
loadResult.skipped += projectResult.skipped;
|
|
159
|
-
loadResult.errors.push(...projectResult.errors);
|
|
160
|
-
// 2) Agent 级 FileStore:扫描 configDir 下的所有配置(rules/skills/personas/tools)
|
|
161
|
-
if (configDir) {
|
|
162
|
-
const configFileStore = new FileStore(configDir);
|
|
163
|
-
const configLoader = new MemoryLoader(configFileStore, index);
|
|
164
|
-
const configResult = await configLoader.loadAllToIndex();
|
|
165
|
-
loadResult.loaded += configResult.loaded;
|
|
166
|
-
loadResult.skipped += configResult.skipped;
|
|
167
|
-
loadResult.errors.push(...configResult.errors);
|
|
168
|
-
}
|
|
169
|
-
return { index, loadResult, projectFileStore };
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* 构建项目上下文
|
|
173
|
-
*
|
|
174
|
-
* 职责:bootstrap 过滤 + 安全守卫创建 + 项目注册 + 日志 + 返回上下文。
|
|
175
|
-
*
|
|
176
|
-
* @param projectPath 项目根目录
|
|
177
|
-
* @param projectName 项目名称(可选,默认取目录名)
|
|
178
|
-
* @param memoraDir 项目 .memora/ 目录
|
|
179
|
-
* @param index 存储实例
|
|
180
|
-
* @param projectFileStore 项目级 FileStore
|
|
181
|
-
* @param loadResult 加载结果
|
|
182
|
-
* @param configDir Agent 级配置目录(用于安全守卫创建)
|
|
183
|
-
* @returns 完整的项目上下文
|
|
184
|
-
*/
|
|
185
|
-
buildProjectContext(projectPath, projectName, memoraDir, index, projectFileStore, loadResult, configDir) {
|
|
186
|
-
// bootstrap 过滤:按 source 获取 rule + skill 必召记忆(跳过 persona,由 PersonaManager 管理)
|
|
187
|
-
const rules = index.getBySource(SOURCE_LABELS.RULE);
|
|
188
|
-
const skills = index.getBySource(SOURCE_LABELS.SKILL);
|
|
189
|
-
const bootstrapMemories = [...rules, ...skills];
|
|
190
|
-
// 安全守卫由 Agent 层注入的工厂函数创建,解除 memory→security 反向依赖
|
|
98
|
+
buildProjectContext(projectPath, projectName, memoraDir, index, configDir) {
|
|
99
|
+
// 设定记忆唯一归角色包内容层,由 assembler 角色包路径接管,恒为空数组
|
|
100
|
+
const bootstrapMemories = [];
|
|
101
|
+
// 安全守卫由 Agent 层注入工厂创建,解除 memory→security 反向依赖
|
|
191
102
|
const security = this.createSecurityGuard
|
|
192
103
|
? this.createSecurityGuard(projectPath, memoraDir, configDir, this.agentDataDir)
|
|
193
104
|
: null;
|
|
194
|
-
//
|
|
105
|
+
// 注册到项目表(委托 ProjectRegistry)
|
|
195
106
|
const name = projectName || ProjectRegistry.inferProjectName(projectPath);
|
|
196
107
|
this.registry.register(projectPath, name);
|
|
197
108
|
logger.info({
|
|
198
109
|
projectPath,
|
|
199
110
|
projectName: name,
|
|
200
111
|
memoraDir,
|
|
201
|
-
loaded: loadResult.loaded,
|
|
202
112
|
bootstrapCount: bootstrapMemories.length,
|
|
203
113
|
}, '项目初始化完成');
|
|
204
114
|
return {
|
|
205
115
|
projectPath,
|
|
206
116
|
projectName: name,
|
|
207
117
|
memoraDir,
|
|
208
|
-
dbPath: join(this.agentDataDir, 'memora.db'),
|
|
209
|
-
fileStore: projectFileStore,
|
|
210
118
|
index,
|
|
211
119
|
security,
|
|
212
120
|
bootstrapMemories,
|
|
213
|
-
loadResult,
|
|
214
121
|
};
|
|
215
122
|
}
|
|
216
|
-
/**
|
|
217
|
-
* 关闭当前项目
|
|
218
|
-
* 释放锁文件,但不关闭 Agent 级数据库(memora.db 是共享的)
|
|
219
|
-
*/
|
|
123
|
+
/** 关闭当前项目:释放锁/清状态,但不关 Agent 级 DB(共享,Agent 生命周期内持久存在) */
|
|
220
124
|
async closeProject() {
|
|
221
|
-
// Agent 级 index/sessionStore 不关闭——它们是共享的,在整个 Agent 生命周期内持久存在
|
|
222
125
|
await this.lockManager.release();
|
|
223
126
|
this.currentProjectPath = null;
|
|
224
127
|
}
|
|
225
|
-
/**
|
|
226
|
-
* 完全关闭:释放项目锁 + 关闭 Agent 级数据库
|
|
227
|
-
* 应在 Agent 整体关闭时调用(而非项目切换时)
|
|
228
|
-
*/
|
|
128
|
+
/** 完全关闭:释放项目锁 + 关闭 Agent 级数据库(应在 Agent 整体关闭而非项目切换时调用) */
|
|
229
129
|
async shutdown() {
|
|
230
130
|
if (this.currentProjectPath) {
|
|
231
131
|
await this.closeProject();
|
|
@@ -240,55 +140,23 @@ export class ProjectManager {
|
|
|
240
140
|
this.agentIndex = null;
|
|
241
141
|
}
|
|
242
142
|
}
|
|
243
|
-
/**
|
|
244
|
-
* 列出已注册的项目(IX-02:统一为 getter 风格,与 persona/skill 一致)
|
|
245
|
-
*
|
|
246
|
-
* 委托给 ProjectRegistry。
|
|
247
|
-
*/
|
|
143
|
+
/** 列出已注册项目(委托 ProjectRegistry) */
|
|
248
144
|
get list() {
|
|
249
145
|
return this.registry.list;
|
|
250
146
|
}
|
|
251
|
-
/**
|
|
252
|
-
* 列出已注册的项目
|
|
253
|
-
*
|
|
254
|
-
* v1.0 公共 API(CHANGELOG 迁移路径:`agent.listProjects()` → `agent.projects.listProjects()`)。
|
|
255
|
-
* 与 `.list` getter 等价,保留方法形式以兼容 0.3 迁移路径。
|
|
256
|
-
*/
|
|
257
|
-
listProjects() {
|
|
258
|
-
return this.registry.list;
|
|
259
|
-
}
|
|
260
|
-
/**
|
|
261
|
-
* 注册项目到注册表
|
|
262
|
-
*
|
|
263
|
-
* 委托给 ProjectRegistry。
|
|
264
|
-
*
|
|
265
|
-
* @param projectPath 项目根目录
|
|
266
|
-
* @param name 项目名称
|
|
267
|
-
*/
|
|
147
|
+
/** 注册项目(委托 ProjectRegistry) */
|
|
268
148
|
registerProject(projectPath, name) {
|
|
269
149
|
this.registry.register(projectPath, name);
|
|
270
150
|
}
|
|
271
|
-
/**
|
|
272
|
-
* 从注册表移除项目
|
|
273
|
-
*
|
|
274
|
-
* 委托给 ProjectRegistry。
|
|
275
|
-
*
|
|
276
|
-
* @param projectPath 项目根目录
|
|
277
|
-
*/
|
|
151
|
+
/** 移除项目(委托 ProjectRegistry) */
|
|
278
152
|
unregisterProject(projectPath) {
|
|
279
153
|
this.registry.unregister(projectPath);
|
|
280
154
|
}
|
|
281
|
-
/**
|
|
282
|
-
* 获取当前项目路径
|
|
283
|
-
*/
|
|
155
|
+
/** 当前项目路径 */
|
|
284
156
|
get currentProject() {
|
|
285
157
|
return this.currentProjectPath;
|
|
286
158
|
}
|
|
287
|
-
/**
|
|
288
|
-
* 解析项目的 .memora/ 目录路径
|
|
289
|
-
* 每个项目有独立的 .memora/ 目录(在项目根目录下)
|
|
290
|
-
* 这与 config.memory.dataDir(用户级默认目录)不同
|
|
291
|
-
*/
|
|
159
|
+
/** 解析项目 .memora/ 目录(项目根目录下,区别于用户级 dataDir) */
|
|
292
160
|
resolveMemoraDir(projectPath) {
|
|
293
161
|
return resolve(projectPath, '.memora');
|
|
294
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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"}
|