@zooique/memora 2.0.3 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1037 -0
- package/README.en.md +305 -272
- package/README.md +303 -260
- package/config.example.json +43 -0
- package/dist/agent/agent.d.ts +376 -408
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +1166 -926
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/assembler.d.ts +105 -43
- package/dist/agent/assembler.d.ts.map +1 -1
- package/dist/agent/assembler.js +543 -75
- package/dist/agent/assembler.js.map +1 -1
- package/dist/agent/budget.d.ts +131 -0
- package/dist/agent/budget.d.ts.map +1 -0
- package/dist/agent/budget.js +128 -0
- package/dist/agent/budget.js.map +1 -0
- package/dist/agent/builtinToolHandlers.d.ts +225 -38
- package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
- package/dist/agent/builtinToolHandlers.js +748 -132
- package/dist/agent/builtinToolHandlers.js.map +1 -1
- package/dist/agent/builtinTools.d.ts +198 -7
- package/dist/agent/builtinTools.d.ts.map +1 -1
- package/dist/agent/builtinTools.js +646 -14
- package/dist/agent/builtinTools.js.map +1 -1
- package/dist/agent/compaction.d.ts +93 -0
- package/dist/agent/compaction.d.ts.map +1 -0
- package/dist/agent/compaction.js +192 -0
- package/dist/agent/compaction.js.map +1 -0
- package/dist/agent/constants.d.ts +137 -20
- package/dist/agent/constants.d.ts.map +1 -1
- package/dist/agent/constants.js +152 -20
- package/dist/agent/constants.js.map +1 -1
- package/dist/agent/contextManager.d.ts +119 -77
- package/dist/agent/contextManager.d.ts.map +1 -1
- package/dist/agent/contextManager.js +192 -135
- package/dist/agent/contextManager.js.map +1 -1
- package/dist/agent/contextPreparer.d.ts +78 -0
- package/dist/agent/contextPreparer.d.ts.map +1 -0
- package/dist/agent/contextPreparer.js +128 -0
- package/dist/agent/contextPreparer.js.map +1 -0
- package/dist/agent/duplicateInterceptor.d.ts +67 -0
- package/dist/agent/duplicateInterceptor.d.ts.map +1 -0
- package/dist/agent/duplicateInterceptor.js +82 -0
- package/dist/agent/duplicateInterceptor.js.map +1 -0
- package/dist/agent/guardRail.d.ts +166 -0
- package/dist/agent/guardRail.d.ts.map +1 -0
- package/dist/agent/guardRail.js +333 -0
- package/dist/agent/guardRail.js.map +1 -0
- package/dist/agent/loop.d.ts +716 -295
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +2178 -664
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/managers/archiveCoordinator.d.ts +14 -171
- package/dist/agent/managers/archiveCoordinator.d.ts.map +1 -1
- package/dist/agent/managers/archiveCoordinator.js +19 -287
- package/dist/agent/managers/archiveCoordinator.js.map +1 -1
- package/dist/agent/managers/chatLockManager.d.ts +20 -88
- package/dist/agent/managers/chatLockManager.d.ts.map +1 -1
- package/dist/agent/managers/chatLockManager.js +31 -103
- package/dist/agent/managers/chatLockManager.js.map +1 -1
- package/dist/agent/managers/dedupManager.d.ts +31 -115
- package/dist/agent/managers/dedupManager.d.ts.map +1 -1
- package/dist/agent/managers/dedupManager.js +48 -136
- package/dist/agent/managers/dedupManager.js.map +1 -1
- package/dist/agent/managers/goalConsistencyChecker.d.ts +42 -0
- package/dist/agent/managers/goalConsistencyChecker.d.ts.map +1 -0
- package/dist/agent/managers/goalConsistencyChecker.js +178 -0
- package/dist/agent/managers/goalConsistencyChecker.js.map +1 -0
- package/dist/agent/managers/llmCaller.d.ts +124 -0
- package/dist/agent/managers/llmCaller.d.ts.map +1 -0
- package/dist/agent/managers/llmCaller.js +417 -0
- package/dist/agent/managers/llmCaller.js.map +1 -0
- package/dist/agent/managers/llmJudgeHelper.d.ts +8 -25
- package/dist/agent/managers/llmJudgeHelper.d.ts.map +1 -1
- package/dist/agent/managers/llmJudgeHelper.js +7 -24
- package/dist/agent/managers/llmJudgeHelper.js.map +1 -1
- package/dist/agent/managers/loopMetrics.d.ts +58 -0
- package/dist/agent/managers/loopMetrics.d.ts.map +1 -0
- package/dist/agent/managers/loopMetrics.js +68 -0
- package/dist/agent/managers/loopMetrics.js.map +1 -0
- package/dist/agent/managers/memoryAdvisor.d.ts +27 -120
- package/dist/agent/managers/memoryAdvisor.d.ts.map +1 -1
- package/dist/agent/managers/memoryAdvisor.js +85 -207
- package/dist/agent/managers/memoryAdvisor.js.map +1 -1
- package/dist/agent/managers/memoryGovernance.d.ts +10 -42
- package/dist/agent/managers/memoryGovernance.d.ts.map +1 -1
- package/dist/agent/managers/memoryGovernance.js +19 -36
- package/dist/agent/managers/memoryGovernance.js.map +1 -1
- package/dist/agent/managers/memoryInspector.d.ts +59 -268
- package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
- package/dist/agent/managers/memoryInspector.js +91 -442
- package/dist/agent/managers/memoryInspector.js.map +1 -1
- package/dist/agent/managers/roundSummaryGenerator.d.ts +56 -0
- package/dist/agent/managers/roundSummaryGenerator.d.ts.map +1 -0
- package/dist/agent/managers/roundSummaryGenerator.js +201 -0
- package/dist/agent/managers/roundSummaryGenerator.js.map +1 -0
- package/dist/agent/managers/sessionArchiver.d.ts +19 -68
- package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
- package/dist/agent/managers/sessionArchiver.js +76 -147
- package/dist/agent/managers/sessionArchiver.js.map +1 -1
- package/dist/agent/managers/sessionManager.d.ts +286 -57
- package/dist/agent/managers/sessionManager.d.ts.map +1 -1
- package/dist/agent/managers/sessionManager.js +846 -85
- package/dist/agent/managers/sessionManager.js.map +1 -1
- package/dist/agent/managers/sessionNamer.d.ts +35 -0
- package/dist/agent/managers/sessionNamer.d.ts.map +1 -0
- package/dist/agent/managers/sessionNamer.js +104 -0
- package/dist/agent/managers/sessionNamer.js.map +1 -0
- package/dist/agent/managers/streamAccumulator.d.ts +8 -33
- package/dist/agent/managers/streamAccumulator.d.ts.map +1 -1
- package/dist/agent/managers/streamAccumulator.js +4 -29
- package/dist/agent/managers/streamAccumulator.js.map +1 -1
- package/dist/agent/managers/textPolishManager.d.ts +8 -44
- package/dist/agent/managers/textPolishManager.d.ts.map +1 -1
- package/dist/agent/managers/textPolishManager.js +9 -41
- package/dist/agent/managers/textPolishManager.js.map +1 -1
- package/dist/agent/managers/toolCallHelpers.d.ts +105 -0
- package/dist/agent/managers/toolCallHelpers.d.ts.map +1 -0
- package/dist/agent/managers/toolCallHelpers.js +161 -0
- package/dist/agent/managers/toolCallHelpers.js.map +1 -0
- package/dist/agent/managers/workProjection.d.ts +55 -100
- package/dist/agent/managers/workProjection.d.ts.map +1 -1
- package/dist/agent/managers/workProjection.js +164 -268
- package/dist/agent/managers/workProjection.js.map +1 -1
- package/dist/agent/messageHistory.d.ts +134 -84
- package/dist/agent/messageHistory.d.ts.map +1 -1
- package/dist/agent/messageHistory.js +419 -133
- package/dist/agent/messageHistory.js.map +1 -1
- package/dist/agent/needsPlanning.d.ts +28 -0
- package/dist/agent/needsPlanning.d.ts.map +1 -0
- package/dist/agent/needsPlanning.js +68 -0
- package/dist/agent/needsPlanning.js.map +1 -0
- package/dist/agent/seed/index.d.ts +11 -0
- package/dist/agent/seed/index.d.ts.map +1 -0
- package/dist/agent/seed/index.js +10 -0
- package/dist/agent/seed/index.js.map +1 -0
- package/dist/agent/seed/orchestrator.d.ts +83 -0
- package/dist/agent/seed/orchestrator.d.ts.map +1 -0
- package/dist/agent/seed/orchestrator.js +260 -0
- package/dist/agent/seed/orchestrator.js.map +1 -0
- package/dist/agent/seed/prepare.d.ts +49 -0
- package/dist/agent/seed/prepare.d.ts.map +1 -0
- package/dist/agent/seed/prepare.js +107 -0
- package/dist/agent/seed/prepare.js.map +1 -0
- package/dist/agent/seed/types.d.ts +115 -0
- package/dist/agent/seed/types.d.ts.map +1 -0
- package/dist/agent/seed/types.js +15 -0
- package/dist/agent/seed/types.js.map +1 -0
- package/dist/agent/sessionStateMachine.d.ts +78 -0
- package/dist/agent/sessionStateMachine.d.ts.map +1 -0
- package/dist/agent/sessionStateMachine.js +182 -0
- package/dist/agent/sessionStateMachine.js.map +1 -0
- package/dist/agent/taskTableRenderer.d.ts +51 -0
- package/dist/agent/taskTableRenderer.d.ts.map +1 -0
- package/dist/agent/taskTableRenderer.js +115 -0
- package/dist/agent/taskTableRenderer.js.map +1 -0
- package/dist/agent/toolExecutor.d.ts +236 -10
- package/dist/agent/toolExecutor.d.ts.map +1 -1
- package/dist/agent/toolExecutor.js +932 -21
- package/dist/agent/toolExecutor.js.map +1 -1
- package/dist/agent/toolLedger.d.ts +120 -0
- package/dist/agent/toolLedger.d.ts.map +1 -0
- package/dist/agent/toolLedger.js +149 -0
- package/dist/agent/toolLedger.js.map +1 -0
- package/dist/agent/toolResultCache.d.ts +134 -0
- package/dist/agent/toolResultCache.d.ts.map +1 -0
- package/dist/agent/toolResultCache.js +243 -0
- package/dist/agent/toolResultCache.js.map +1 -0
- package/dist/agent/toolResultOffload.d.ts +59 -0
- package/dist/agent/toolResultOffload.d.ts.map +1 -0
- package/dist/agent/toolResultOffload.js +70 -0
- package/dist/agent/toolResultOffload.js.map +1 -0
- package/dist/agent/toolRunner.d.ts +59 -0
- package/dist/agent/toolRunner.d.ts.map +1 -0
- package/dist/agent/toolRunner.js +147 -0
- package/dist/agent/toolRunner.js.map +1 -0
- package/dist/agent/tracer.d.ts +99 -107
- package/dist/agent/tracer.d.ts.map +1 -1
- package/dist/agent/tracer.js +24 -69
- package/dist/agent/tracer.js.map +1 -1
- package/dist/agent/types.d.ts +510 -169
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js +2 -51
- package/dist/agent/types.js.map +1 -1
- package/dist/code-exec/codeExecutionProvider.d.ts +16 -0
- package/dist/code-exec/codeExecutionProvider.d.ts.map +1 -0
- package/dist/code-exec/codeExecutionProvider.js +57 -0
- package/dist/code-exec/codeExecutionProvider.js.map +1 -0
- package/dist/code-exec/types.d.ts +37 -0
- package/dist/code-exec/types.d.ts.map +1 -0
- package/dist/code-exec/types.js +12 -0
- package/dist/code-exec/types.js.map +1 -0
- package/dist/config/expandEnvVars.d.ts +22 -0
- package/dist/config/expandEnvVars.d.ts.map +1 -0
- package/dist/config/expandEnvVars.js +38 -0
- package/dist/config/expandEnvVars.js.map +1 -0
- package/dist/config/loader.d.ts +27 -98
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +110 -223
- package/dist/config/loader.js.map +1 -1
- package/dist/index.d.ts +67 -77
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +90 -69
- package/dist/index.js.map +1 -1
- package/dist/llm/abortSignal.d.ts +2 -3
- package/dist/llm/abortSignal.d.ts.map +1 -1
- package/dist/llm/abortSignal.js +2 -3
- package/dist/llm/abortSignal.js.map +1 -1
- package/dist/llm/factory.d.ts +22 -32
- package/dist/llm/factory.d.ts.map +1 -1
- package/dist/llm/factory.js +29 -46
- package/dist/llm/factory.js.map +1 -1
- package/dist/llm/openaiCompatible.d.ts +25 -40
- package/dist/llm/openaiCompatible.d.ts.map +1 -1
- package/dist/llm/openaiCompatible.js +179 -120
- package/dist/llm/openaiCompatible.js.map +1 -1
- package/dist/llm/provider.d.ts +29 -42
- package/dist/llm/provider.d.ts.map +1 -1
- package/dist/llm/provider.js +11 -10
- package/dist/llm/provider.js.map +1 -1
- package/dist/llm/types.d.ts +54 -11
- package/dist/llm/types.d.ts.map +1 -1
- package/dist/llm/types.js +0 -5
- package/dist/llm/types.js.map +1 -1
- package/dist/logging/logger.d.ts +8 -31
- package/dist/logging/logger.d.ts.map +1 -1
- package/dist/logging/logger.js +28 -215
- package/dist/logging/logger.js.map +1 -1
- package/dist/logging/loggerInterface.d.ts +9 -8
- package/dist/logging/loggerInterface.d.ts.map +1 -1
- package/dist/memory/gcService.d.ts +164 -0
- package/dist/memory/gcService.d.ts.map +1 -0
- package/dist/memory/gcService.js +215 -0
- package/dist/memory/gcService.js.map +1 -0
- package/dist/memory/governance.d.ts +11 -44
- package/dist/memory/governance.d.ts.map +1 -1
- package/dist/memory/governance.js +11 -64
- package/dist/memory/governance.js.map +1 -1
- package/dist/memory/inMemoryRoundStore.d.ts +124 -0
- package/dist/memory/inMemoryRoundStore.d.ts.map +1 -0
- package/dist/memory/inMemoryRoundStore.js +216 -0
- package/dist/memory/inMemoryRoundStore.js.map +1 -0
- package/dist/memory/inMemorySessionStore.d.ts +92 -0
- package/dist/memory/inMemorySessionStore.d.ts.map +1 -0
- package/dist/memory/inMemorySessionStore.js +219 -0
- package/dist/memory/inMemorySessionStore.js.map +1 -0
- package/dist/memory/inMemorySessionViewLoader.d.ts +89 -0
- package/dist/memory/inMemorySessionViewLoader.d.ts.map +1 -0
- package/dist/memory/inMemorySessionViewLoader.js +183 -0
- package/dist/memory/inMemorySessionViewLoader.js.map +1 -0
- package/dist/memory/inMemoryStorage.d.ts +25 -175
- package/dist/memory/inMemoryStorage.d.ts.map +1 -1
- package/dist/memory/inMemoryStorage.js +32 -221
- package/dist/memory/inMemoryStorage.js.map +1 -1
- package/dist/memory/keywordsTouch.d.ts +20 -0
- package/dist/memory/keywordsTouch.d.ts.map +1 -0
- package/dist/memory/keywordsTouch.js +25 -0
- package/dist/memory/keywordsTouch.js.map +1 -0
- package/dist/memory/lockManager.d.ts +2 -2
- package/dist/memory/lockManager.d.ts.map +1 -1
- package/dist/memory/lockManager.js +6 -8
- package/dist/memory/lockManager.js.map +1 -1
- package/dist/memory/projectManager.d.ts +30 -129
- package/dist/memory/projectManager.d.ts.map +1 -1
- package/dist/memory/projectManager.js +39 -189
- package/dist/memory/projectManager.js.map +1 -1
- package/dist/memory/projectRegistry.d.ts +14 -62
- package/dist/memory/projectRegistry.d.ts.map +1 -1
- package/dist/memory/projectRegistry.js +27 -111
- package/dist/memory/projectRegistry.js.map +1 -1
- package/dist/memory/roundStore.d.ts +629 -0
- package/dist/memory/roundStore.d.ts.map +1 -0
- package/dist/memory/roundStore.js +116 -0
- package/dist/memory/roundStore.js.map +1 -0
- package/dist/memory/sessionStore.d.ts +70 -61
- package/dist/memory/sessionStore.d.ts.map +1 -1
- package/dist/memory/sessionStore.js +23 -1
- package/dist/memory/sessionStore.js.map +1 -1
- package/dist/memory/sessionViewLoader.d.ts +141 -0
- package/dist/memory/sessionViewLoader.d.ts.map +1 -0
- package/dist/memory/sessionViewLoader.js +65 -0
- package/dist/memory/sessionViewLoader.js.map +1 -0
- package/dist/memory/sourceValidation.d.ts +10 -12
- package/dist/memory/sourceValidation.d.ts.map +1 -1
- package/dist/memory/sourceValidation.js +16 -32
- package/dist/memory/sourceValidation.js.map +1 -1
- package/dist/memory/storageInterface.d.ts +44 -150
- package/dist/memory/storageInterface.d.ts.map +1 -1
- package/dist/memory/types.d.ts +65 -164
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/memory/types.js +81 -83
- package/dist/memory/types.js.map +1 -1
- package/dist/project-search/projectSearchProvider.d.ts +29 -0
- package/dist/project-search/projectSearchProvider.d.ts.map +1 -0
- package/dist/project-search/projectSearchProvider.js +57 -0
- package/dist/project-search/projectSearchProvider.js.map +1 -0
- package/dist/project-search/terms.d.ts +14 -0
- package/dist/project-search/terms.d.ts.map +1 -0
- package/dist/project-search/terms.js +68 -0
- package/dist/project-search/terms.js.map +1 -0
- package/dist/project-search/types.d.ts +139 -0
- package/dist/project-search/types.d.ts.map +1 -0
- package/dist/project-search/types.js +8 -0
- package/dist/project-search/types.js.map +1 -0
- package/dist/role-pack/capabilityMap.d.ts +28 -0
- package/dist/role-pack/capabilityMap.d.ts.map +1 -0
- package/dist/role-pack/capabilityMap.js +56 -0
- package/dist/role-pack/capabilityMap.js.map +1 -0
- package/dist/role-pack/constants.d.ts +21 -0
- package/dist/role-pack/constants.d.ts.map +1 -0
- package/dist/role-pack/constants.js +21 -0
- package/dist/role-pack/constants.js.map +1 -0
- package/dist/role-pack/rolePackManager.d.ts +269 -0
- package/dist/role-pack/rolePackManager.d.ts.map +1 -0
- package/dist/role-pack/rolePackManager.js +1082 -0
- package/dist/role-pack/rolePackManager.js.map +1 -0
- package/dist/role-pack/strategyKeys.d.ts +100 -0
- package/dist/role-pack/strategyKeys.d.ts.map +1 -0
- package/dist/role-pack/strategyKeys.js +184 -0
- package/dist/role-pack/strategyKeys.js.map +1 -0
- package/dist/role-pack/strategyResolver.d.ts +109 -0
- package/dist/role-pack/strategyResolver.d.ts.map +1 -0
- package/dist/role-pack/strategyResolver.js +304 -0
- package/dist/role-pack/strategyResolver.js.map +1 -0
- package/dist/role-pack/types.d.ts +237 -0
- package/dist/role-pack/types.d.ts.map +1 -0
- package/dist/role-pack/types.js +8 -0
- package/dist/role-pack/types.js.map +1 -0
- package/dist/role-pack/validator.d.ts +38 -0
- package/dist/role-pack/validator.d.ts.map +1 -0
- package/dist/role-pack/validator.js +436 -0
- package/dist/role-pack/validator.js.map +1 -0
- package/dist/security/pathGuard.d.ts +69 -72
- package/dist/security/pathGuard.d.ts.map +1 -1
- package/dist/security/pathGuard.js +151 -131
- package/dist/security/pathGuard.js.map +1 -1
- package/dist/skill/skillLayer3.d.ts +91 -0
- package/dist/skill/skillLayer3.d.ts.map +1 -0
- package/dist/skill/skillLayer3.js +104 -0
- package/dist/skill/skillLayer3.js.map +1 -0
- package/dist/skill/skillManager.d.ts +136 -19
- package/dist/skill/skillManager.d.ts.map +1 -1
- package/dist/skill/skillManager.js +312 -61
- package/dist/skill/skillManager.js.map +1 -1
- package/dist/skill/skillScriptRunner.d.ts +97 -0
- package/dist/skill/skillScriptRunner.d.ts.map +1 -0
- package/dist/skill/skillScriptRunner.js +271 -0
- package/dist/skill/skillScriptRunner.js.map +1 -0
- package/dist/skill/types.d.ts +73 -16
- package/dist/skill/types.d.ts.map +1 -1
- package/dist/skill/types.js +5 -1
- package/dist/skill/types.js.map +1 -1
- package/dist/utils/array.d.ts +5 -6
- package/dist/utils/array.d.ts.map +1 -1
- package/dist/utils/array.js +6 -6
- package/dist/utils/array.js.map +1 -1
- package/dist/utils/atomicWrite.d.ts +8 -0
- package/dist/utils/atomicWrite.d.ts.map +1 -0
- package/dist/utils/atomicWrite.js +31 -0
- package/dist/utils/atomicWrite.js.map +1 -0
- package/dist/utils/backgroundTask.d.ts +38 -0
- package/dist/utils/backgroundTask.d.ts.map +1 -0
- package/dist/utils/backgroundTask.js +117 -0
- package/dist/utils/backgroundTask.js.map +1 -0
- package/dist/utils/configResourceManager.d.ts +40 -72
- package/dist/utils/configResourceManager.d.ts.map +1 -1
- package/dist/utils/configResourceManager.js +78 -76
- package/dist/utils/configResourceManager.js.map +1 -1
- package/dist/utils/errors.d.ts +44 -69
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +54 -71
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/eventEmitter.d.ts +104 -103
- package/dist/utils/eventEmitter.d.ts.map +1 -1
- package/dist/utils/eventEmitter.js +37 -45
- package/dist/utils/eventEmitter.js.map +1 -1
- package/dist/utils/fileSafe.d.ts +20 -0
- package/dist/utils/fileSafe.d.ts.map +1 -0
- package/dist/utils/fileSafe.js +56 -0
- package/dist/utils/fileSafe.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +2 -3
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +2 -3
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/hash.d.ts +12 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +27 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/http.d.ts +17 -0
- package/dist/utils/http.d.ts.map +1 -0
- package/dist/utils/http.js +29 -0
- package/dist/utils/http.js.map +1 -0
- package/dist/utils/json.d.ts +1 -1
- package/dist/utils/json.js +1 -1
- package/dist/utils/math.d.ts +25 -3
- package/dist/utils/math.d.ts.map +1 -1
- package/dist/utils/math.js +32 -16
- package/dist/utils/math.js.map +1 -1
- package/dist/utils/objects.d.ts +2 -3
- package/dist/utils/objects.d.ts.map +1 -1
- package/dist/utils/objects.js +2 -3
- package/dist/utils/objects.js.map +1 -1
- package/dist/utils/recallDefaults.d.ts +16 -0
- package/dist/utils/recallDefaults.d.ts.map +1 -0
- package/dist/utils/recallDefaults.js +16 -0
- package/dist/utils/recallDefaults.js.map +1 -0
- package/dist/utils/safeTimer.d.ts +8 -36
- package/dist/utils/safeTimer.d.ts.map +1 -1
- package/dist/utils/safeTimer.js +9 -37
- package/dist/utils/safeTimer.js.map +1 -1
- package/dist/utils/scanner.d.ts +97 -17
- package/dist/utils/scanner.d.ts.map +1 -1
- package/dist/utils/scanner.js +269 -47
- package/dist/utils/scanner.js.map +1 -1
- package/dist/utils/segmenter.d.ts +20 -19
- package/dist/utils/segmenter.d.ts.map +1 -1
- package/dist/utils/segmenter.js +230 -97
- package/dist/utils/segmenter.js.map +1 -1
- package/dist/utils/strings.d.ts +15 -32
- package/dist/utils/strings.d.ts.map +1 -1
- package/dist/utils/strings.js +25 -44
- package/dist/utils/strings.js.map +1 -1
- package/dist/utils/time.d.ts +37 -0
- package/dist/utils/time.d.ts.map +1 -1
- package/dist/utils/time.js +56 -0
- package/dist/utils/time.js.map +1 -1
- package/dist/utils/toError.d.ts +13 -1
- package/dist/utils/toError.d.ts.map +1 -1
- package/dist/utils/toError.js +18 -1
- package/dist/utils/toError.js.map +1 -1
- package/dist/web-fetch/fetchWebFetchProvider.d.ts +14 -0
- package/dist/web-fetch/fetchWebFetchProvider.d.ts.map +1 -0
- package/dist/web-fetch/fetchWebFetchProvider.js +69 -0
- package/dist/web-fetch/fetchWebFetchProvider.js.map +1 -0
- package/dist/web-fetch/types.d.ts +30 -0
- package/dist/web-fetch/types.d.ts.map +1 -0
- package/dist/web-fetch/types.js +7 -0
- package/dist/web-fetch/types.js.map +1 -0
- package/dist/web-fetch/webFetchProvider.d.ts +10 -0
- package/dist/web-fetch/webFetchProvider.d.ts.map +1 -0
- package/dist/web-fetch/webFetchProvider.js +28 -0
- package/dist/web-fetch/webFetchProvider.js.map +1 -0
- package/dist/web-search/fetchWebSearchProvider.d.ts +27 -0
- package/dist/web-search/fetchWebSearchProvider.d.ts.map +1 -0
- package/dist/web-search/fetchWebSearchProvider.js +199 -0
- package/dist/web-search/fetchWebSearchProvider.js.map +1 -0
- package/dist/web-search/types.d.ts +46 -0
- package/dist/web-search/types.d.ts.map +1 -0
- package/dist/web-search/types.js +2 -0
- package/dist/{persona → web-search}/types.js.map +1 -1
- package/dist/web-search/webSearchProvider.d.ts +10 -0
- package/dist/web-search/webSearchProvider.d.ts.map +1 -0
- package/dist/web-search/webSearchProvider.js +30 -0
- package/dist/web-search/webSearchProvider.js.map +1 -0
- package/docs/architecture/role-pack-authoring-guide.md +243 -0
- package/docs/architecture/role-pack-spec.md +767 -0
- package/docs/memora-api-reference.md +416 -476
- package/docs/memora-/346/216/245/345/205/245/346/214/207/345/215/227.md +841 -806
- package/docs/role-pack-/345/274/200/346/224/276/351/224/256/346/214/207/345/215/227.md +148 -0
- package/package.json +105 -100
- package/role-packs/README.md +41 -0
- package/role-packs/memora/345/212/251/346/211/213/manifest.json +12 -0
- package/role-packs/memora/345/212/251/346/211/213/persona.md +12 -0
- package/role-packs/memora/345/212/251/346/211/213/rules.md +4 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/manifest.json +44 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/persona.md +46 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/rules.md +15 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/character-sheet.md +34 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/core-extractor.md +37 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/craft-review.md +69 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/dialogue-craft.md +45 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/emotion-wave.md +46 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/empathy-craft.md +79 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/foreshadow.md +29 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/hotspot-mapping.md +121 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/idea-lever.md +42 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/logline-craft.md +47 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/longform-guard.md +64 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/need-finder.md +40 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/outline-expand.md +46 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/pacing-hook.md +34 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/polish-method.md +113 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/pov-discipline.md +79 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/project-init/SKILL.md +112 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/project-init/scripts/init-novel-project.mjs +441 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/relationship-web.md +47 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/scene-craft.md +46 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/story-bible.md +60 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/story-structure.md +36 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/style-weaver.md +109 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/three-layer-check.md +27 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/world-builder.md +41 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/manifest.json +48 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/persona.md +73 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/rules.md +19 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/api-doc-writer.md +40 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/doc-planner.md +42 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/nutrient-search.md +28 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/seed-finder.md +28 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/ssot-audit.md +34 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/style-guide.md +40 -0
- package/dist/agent/guardrail.d.ts +0 -49
- package/dist/agent/guardrail.d.ts.map +0 -1
- package/dist/agent/guardrail.js +0 -59
- package/dist/agent/guardrail.js.map +0 -1
- package/dist/agent/managers/autoConfigRefiner.d.ts +0 -39
- package/dist/agent/managers/autoConfigRefiner.d.ts.map +0 -1
- package/dist/agent/managers/autoConfigRefiner.js +0 -146
- package/dist/agent/managers/autoConfigRefiner.js.map +0 -1
- package/dist/agent/managers/configManager.d.ts +0 -209
- package/dist/agent/managers/configManager.d.ts.map +0 -1
- package/dist/agent/managers/configManager.js +0 -331
- package/dist/agent/managers/configManager.js.map +0 -1
- package/dist/agent/managers/insightExtractor.d.ts +0 -139
- package/dist/agent/managers/insightExtractor.d.ts.map +0 -1
- package/dist/agent/managers/insightExtractor.js +0 -401
- package/dist/agent/managers/insightExtractor.js.map +0 -1
- package/dist/agent/managers/memoryDecayScheduler.d.ts +0 -239
- package/dist/agent/managers/memoryDecayScheduler.d.ts.map +0 -1
- package/dist/agent/managers/memoryDecayScheduler.js +0 -413
- package/dist/agent/managers/memoryDecayScheduler.js.map +0 -1
- package/dist/agent/managers/relationBuilder.d.ts +0 -131
- package/dist/agent/managers/relationBuilder.d.ts.map +0 -1
- package/dist/agent/managers/relationBuilder.js +0 -192
- package/dist/agent/managers/relationBuilder.js.map +0 -1
- package/dist/agent/personaMatcher.d.ts +0 -29
- package/dist/agent/personaMatcher.d.ts.map +0 -1
- package/dist/agent/personaMatcher.js +0 -60
- package/dist/agent/personaMatcher.js.map +0 -1
- package/dist/agent/userFactExtractor.d.ts +0 -25
- package/dist/agent/userFactExtractor.d.ts.map +0 -1
- package/dist/agent/userFactExtractor.js +0 -88
- package/dist/agent/userFactExtractor.js.map +0 -1
- package/dist/eval/evalRunner.d.ts +0 -94
- package/dist/eval/evalRunner.d.ts.map +0 -1
- package/dist/eval/evalRunner.js +0 -141
- package/dist/eval/evalRunner.js.map +0 -1
- package/dist/eval/evalTypes.d.ts +0 -148
- package/dist/eval/evalTypes.d.ts.map +0 -1
- package/dist/eval/evalTypes.js +0 -118
- package/dist/eval/evalTypes.js.map +0 -1
- package/dist/eval/scenarios.d.ts +0 -33
- package/dist/eval/scenarios.d.ts.map +0 -1
- package/dist/eval/scenarios.js +0 -109
- package/dist/eval/scenarios.js.map +0 -1
- package/dist/llm/embedding.d.ts +0 -79
- package/dist/llm/embedding.d.ts.map +0 -1
- package/dist/llm/embedding.js +0 -184
- package/dist/llm/embedding.js.map +0 -1
- package/dist/memory/hybridMerge.d.ts +0 -50
- package/dist/memory/hybridMerge.d.ts.map +0 -1
- package/dist/memory/hybridMerge.js +0 -51
- package/dist/memory/hybridMerge.js.map +0 -1
- package/dist/memory/inMemoryRelationStore.d.ts +0 -58
- package/dist/memory/inMemoryRelationStore.d.ts.map +0 -1
- package/dist/memory/inMemoryRelationStore.js +0 -80
- package/dist/memory/inMemoryRelationStore.js.map +0 -1
- package/dist/memory/loader.d.ts +0 -51
- package/dist/memory/loader.d.ts.map +0 -1
- package/dist/memory/loader.js +0 -100
- package/dist/memory/loader.js.map +0 -1
- package/dist/memory/recall.d.ts +0 -82
- package/dist/memory/recall.d.ts.map +0 -1
- package/dist/memory/recall.js +0 -157
- package/dist/memory/recall.js.map +0 -1
- package/dist/memory/relationStore.d.ts +0 -95
- package/dist/memory/relationStore.d.ts.map +0 -1
- package/dist/memory/relationStore.js +0 -2
- package/dist/memory/relationStore.js.map +0 -1
- package/dist/memory/store.d.ts +0 -71
- package/dist/memory/store.d.ts.map +0 -1
- package/dist/memory/store.js +0 -199
- package/dist/memory/store.js.map +0 -1
- package/dist/memory/userProfile.d.ts +0 -180
- package/dist/memory/userProfile.d.ts.map +0 -1
- package/dist/memory/userProfile.js +0 -381
- package/dist/memory/userProfile.js.map +0 -1
- package/dist/memory/vectorStore.d.ts +0 -179
- package/dist/memory/vectorStore.d.ts.map +0 -1
- package/dist/memory/vectorStore.js +0 -284
- package/dist/memory/vectorStore.js.map +0 -1
- package/dist/persona/personaManager.d.ts +0 -109
- package/dist/persona/personaManager.d.ts.map +0 -1
- package/dist/persona/personaManager.js +0 -315
- package/dist/persona/personaManager.js.map +0 -1
- package/dist/persona/types.d.ts +0 -32
- package/dist/persona/types.d.ts.map +0 -1
- package/dist/persona/types.js +0 -5
package/dist/config/loader.js
CHANGED
|
@@ -1,44 +1,55 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 配置加载
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* 3. 内置默认值(仅提供机制,不预设厂商/路径策略——ADR-002 + ADR-003)
|
|
8
|
-
*
|
|
9
|
-
* API Key 从环境变量读取(不写入配置文件)
|
|
10
|
-
*
|
|
11
|
-
* 多 Provider 管理(v1.2):
|
|
12
|
-
* - providers:命名 Provider 映射表,key 为别名(如 "deepseek"、"openai")
|
|
13
|
-
* - active:当前激活的 Provider 别名
|
|
14
|
-
* - 不配置 providers 时,回退到旧的单 provider 扁平字段(向后兼容)
|
|
4
|
+
* 查找顺序:显式 configPath → 项目级 .memora/config.json → 内置默认值。
|
|
5
|
+
* 内核只提供机制,不预设厂商/路径策略;API Key 从环境变量读取,不写文件。
|
|
6
|
+
* 多 Provider(唯一格式):providers 映射表 + active 激活别名。
|
|
15
7
|
*/
|
|
16
8
|
import { readFile } from 'node:fs/promises';
|
|
17
9
|
import { resolve } from 'node:path';
|
|
18
10
|
import { configError } from '../utils/errors.js';
|
|
19
|
-
import { toError } from '../utils/toError.js';
|
|
11
|
+
import { toError, isNodeErrorCode } from '../utils/toError.js';
|
|
20
12
|
import { logger } from '../logging/logger.js';
|
|
13
|
+
import { expandEnvVars } from '../config/expandEnvVars.js';
|
|
21
14
|
/**
|
|
22
|
-
* 默认上下文 token 数(120K
|
|
23
|
-
*
|
|
24
|
-
* 模块级常量,消除 schema default 与 DEFAULT_CONFIG 的重复硬编码。
|
|
25
|
-
* 注意:与 agent/constants.ts 的 AGENT_CONSTANTS.DEFAULT_MAX_CONTEXT_TOKENS 保持一致,
|
|
26
|
-
* 但不跨层引用(config/ 不能反向依赖 agent/,详见 backend_layers_rules.md 依赖方向)。
|
|
27
|
-
* 修改时需同步两处。
|
|
15
|
+
* 默认上下文 token 数(120K)。与 agent/constants.ts 的 DEFAULT_MAX_CONTEXT_TOKENS 保持一致,
|
|
16
|
+
* 但不跨层引用(config/ 不能反向依赖 agent/),修改需同步两处。
|
|
28
17
|
*/
|
|
29
18
|
const DEFAULT_MAX_CONTEXT_TOKENS = 120_000;
|
|
30
|
-
//
|
|
31
|
-
//
|
|
32
|
-
//
|
|
19
|
+
// ════════════════════════════════════════════════════════════
|
|
20
|
+
// 配置边界常量(SSOT:config 层唯一来源,防无条件填写导致资源失控)
|
|
21
|
+
// ════════════════════════════════════════════════════════════
|
|
22
|
+
/** maxContextTokens 下限:低于此无法承载最小上下文装配 */
|
|
23
|
+
const MIN_MAX_CONTEXT_TOKENS = 1000;
|
|
24
|
+
/** maxContextTokens 上限:2_000_000 覆盖 2M 上下文窗口(与 MAX_CONTEXT_WINDOW 同量级,对齐 Gemini/MiMo 等旗舰模型) */
|
|
25
|
+
const MAX_MAX_CONTEXT_TOKENS = 2_000_000;
|
|
26
|
+
/**
|
|
27
|
+
* contextWindow 的**告警参考上界**:2M(当前主流旗舰模型窗口量级)。
|
|
28
|
+
*
|
|
29
|
+
* ⚠️ **这不是裁决上界**:内核**不做区间裁决** —— 超出此值仅 `logger.warn`(观测),
|
|
30
|
+
* 值仍**原样生效**。理由:「模型能吃多大」是只有 provider/API 知道的事实,内核替用户猜会造成
|
|
31
|
+
* 「UI 显示值 ≠ 真实生效值」的静默失真(坑:填 3M → 静默丢弃 → 兜底 120K,全程无提示);
|
|
32
|
+
* 预算口径定:用户配置的 contextWindow 是预算唯一来源。超模型能力时由 **API 报错**(真实层可见失败)。
|
|
33
|
+
* 若将来必须恢复拦截,**只允许显式报错,不得回到静默**。
|
|
34
|
+
*
|
|
35
|
+
* ⚠️ 与 `src/role-pack/strategyKeys.ts` 的 `MAX_CONTEXT_LIMIT`(角色包 contextLimit 声明上界)**同值对齐,改一处须同步另一处**;
|
|
36
|
+
* 两者语义不同(provider 声明的告警参考 vs 角色包声明上界),故按本仓对 `DEFAULT_MAX_CONTEXT_TOKENS` 的既有做法
|
|
37
|
+
* 「重复 + 双向注释对冲」处理,**不跨层 import**(config 层不依赖 role-pack)。
|
|
38
|
+
* 导出仅供跨模块护栏测试断言同值(constants.test.ts),非 API 承诺。
|
|
39
|
+
*/
|
|
40
|
+
export const MAX_CONTEXT_WINDOW = 2_000_000;
|
|
41
|
+
/** allowedPaths 最大条数:路径白名单防膨胀 */
|
|
42
|
+
const MAX_ALLOWED_PATHS = 50;
|
|
43
|
+
// 单一真理源:所有默认值只由 DEFAULT_CONFIG 声明,parseConfig({}) 即得完整默认配置。
|
|
44
|
+
// 嵌套对象(llm/memory/security)必须有完整默认值,否则对象缺失时无法落到内部字段默认值。
|
|
33
45
|
const DEFAULT_CONFIG = {
|
|
34
46
|
llm: {
|
|
35
|
-
provider: 'mock'
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
temperature: 0.7,
|
|
47
|
+
// 无默认 provider:mock 由 factory 在显式配置 provider: 'mock' 时创建
|
|
48
|
+
providers: undefined,
|
|
49
|
+
active: undefined,
|
|
39
50
|
},
|
|
40
51
|
memory: {
|
|
41
|
-
// dataDir
|
|
52
|
+
// dataDir 由宿主显式注入,内核不硬编码具体目录路径
|
|
42
53
|
dataDir: '',
|
|
43
54
|
maxContextTokens: DEFAULT_MAX_CONTEXT_TOKENS,
|
|
44
55
|
},
|
|
@@ -49,83 +60,51 @@ const DEFAULT_CONFIG = {
|
|
|
49
60
|
allowedPaths: [],
|
|
50
61
|
};
|
|
51
62
|
/**
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
* 将原始 JSON 解析结果转换为完整的 Config 对象,
|
|
55
|
-
* 验证类型并应用默认值。
|
|
63
|
+
* 解析并验证配置:将原始 JSON 转为完整 Config,验证类型并应用默认值
|
|
56
64
|
*
|
|
57
|
-
* @param raw 原始 JSON 解析结果(unknown 类型)
|
|
58
|
-
* @returns 完整的 Config 对象
|
|
59
65
|
* @throws 当类型不匹配时抛出错误
|
|
60
66
|
*/
|
|
61
|
-
function parseConfig(raw) {
|
|
62
|
-
//
|
|
67
|
+
export function parseConfig(raw) {
|
|
68
|
+
// 若 raw 非对象则视为空对象(守卫+断言合一)
|
|
63
69
|
const input = asRecordIfObject(raw);
|
|
64
|
-
// 解析 llm 配置
|
|
65
70
|
const llmInput = asRecordIfObject(input.llm);
|
|
66
71
|
const llm = {
|
|
67
|
-
provider: typeof llmInput.provider === 'string' ? llmInput.provider : DEFAULT_CONFIG.llm.provider,
|
|
68
|
-
model: typeof llmInput.model === 'string' ? llmInput.model : DEFAULT_CONFIG.llm.model,
|
|
69
|
-
// 过滤空字符串:空字符串视为未配置,避免旧格式分支中 resolvedBaseUrl = '' 触发误报
|
|
70
|
-
baseUrl: typeof llmInput.baseUrl === 'string' && llmInput.baseUrl ? llmInput.baseUrl : undefined,
|
|
71
|
-
apiKey: typeof llmInput.apiKey === 'string' && llmInput.apiKey ? llmInput.apiKey : undefined,
|
|
72
|
-
temperature: validateTemperature(llmInput.temperature, DEFAULT_CONFIG.llm.temperature),
|
|
73
72
|
providers: parseProviders(llmInput.providers),
|
|
74
73
|
active: typeof llmInput.active === 'string' ? llmInput.active : undefined,
|
|
75
|
-
background: parseBackground(llmInput.background),
|
|
76
74
|
};
|
|
77
|
-
// 解析 memory 配置
|
|
78
75
|
const memoryInput = asRecordIfObject(input.memory);
|
|
79
76
|
const memory = {
|
|
80
77
|
dataDir: typeof memoryInput.dataDir === 'string' ? memoryInput.dataDir : DEFAULT_CONFIG.memory.dataDir,
|
|
81
|
-
maxContextTokens: (
|
|
82
|
-
? memoryInput.maxContextTokens
|
|
83
|
-
: DEFAULT_CONFIG.memory.maxContextTokens,
|
|
78
|
+
maxContextTokens: validateMaxContextTokens(memoryInput.maxContextTokens, DEFAULT_CONFIG.memory.maxContextTokens),
|
|
84
79
|
};
|
|
85
|
-
// 解析 security 配置
|
|
86
80
|
const securityInput = asRecordIfObject(input.security);
|
|
87
81
|
const security = {
|
|
88
82
|
permission: validatePermission(securityInput.permission),
|
|
89
|
-
confirmWrites: typeof securityInput.confirmWrites === 'boolean'
|
|
83
|
+
confirmWrites: typeof securityInput.confirmWrites === 'boolean'
|
|
84
|
+
? securityInput.confirmWrites
|
|
85
|
+
: DEFAULT_CONFIG.security.confirmWrites,
|
|
90
86
|
};
|
|
91
|
-
// 解析 allowedPaths
|
|
92
87
|
const allowedPaths = validateAllowedPaths(input.allowedPaths);
|
|
93
|
-
// 解析 persona
|
|
94
|
-
const persona = typeof input.persona === 'string' ? input.persona : undefined;
|
|
95
|
-
// 解析 embedding 配置
|
|
96
|
-
const embedding = parseEmbedding(input.embedding);
|
|
97
88
|
return {
|
|
98
89
|
llm,
|
|
99
90
|
memory,
|
|
100
91
|
security,
|
|
101
92
|
allowedPaths,
|
|
102
|
-
persona,
|
|
103
|
-
embedding,
|
|
104
93
|
};
|
|
105
94
|
}
|
|
106
95
|
/**
|
|
107
|
-
* 类型守卫辅助:非空对象 → Record,否则 →
|
|
108
|
-
*
|
|
109
|
-
* 收紧 MIND-C2 的 8 处 `as Record<string, unknown>` 隐式断言:
|
|
110
|
-
* 守卫与断言合一,避免守卫变更时编译器不报警的类型安全风险。
|
|
111
|
-
*
|
|
112
|
-
* @param value 待收窄的值
|
|
113
|
-
* @returns 非空对象返回 value as Record;否则返回空对象 {}
|
|
96
|
+
* 类型守卫辅助:非空对象 → Record,否则 → 空对象。
|
|
97
|
+
* 守卫与断言合一,避免守卫变更时编译器不报类型安全风险。
|
|
114
98
|
*/
|
|
115
99
|
function asRecordIfObject(value) {
|
|
116
|
-
return
|
|
100
|
+
return value && typeof value === 'object' && !Array.isArray(value)
|
|
117
101
|
? value
|
|
118
102
|
: {};
|
|
119
103
|
}
|
|
120
104
|
/**
|
|
121
105
|
* 断言值为字符串,否则抛出 configError
|
|
122
106
|
*
|
|
123
|
-
* 消除 loader
|
|
124
|
-
*
|
|
125
|
-
* @param value 待校验的值
|
|
126
|
-
* @param field 字段名(用于错误信息,如 "providers.openai.model")
|
|
127
|
-
* @returns 类型收窄后的字符串
|
|
128
|
-
* @throws MemoraError(category: 'config')当值不是字符串时
|
|
107
|
+
* 消除 loader 中重复的 "typeof x !== 'string' → throw"(枝叶层 2 次提取,收敛 6 处重复)。
|
|
129
108
|
*/
|
|
130
109
|
function assertString(value, field) {
|
|
131
110
|
if (typeof value !== 'string') {
|
|
@@ -137,29 +116,56 @@ function assertString(value, field) {
|
|
|
137
116
|
return value;
|
|
138
117
|
}
|
|
139
118
|
/**
|
|
140
|
-
* 验证 temperature
|
|
141
|
-
*
|
|
142
|
-
* @param value 待验证的值
|
|
143
|
-
* @param defaultValue 默认值
|
|
144
|
-
* @returns 有效的 temperature 值
|
|
145
|
-
* @throws MemoraError 当值超出范围时抛出
|
|
119
|
+
* 验证 temperature(0-2),非法类型取默认值,超出范围抛错
|
|
146
120
|
*/
|
|
147
121
|
function validateTemperature(value, defaultValue) {
|
|
148
|
-
// Number.isFinite 同时排除 NaN/Infinity(对齐 zod z.number()
|
|
122
|
+
// Number.isFinite 同时排除 NaN/Infinity(对齐 zod z.number())
|
|
149
123
|
if (typeof value === 'number' && Number.isFinite(value)) {
|
|
150
124
|
if (value < 0 || value > 2) {
|
|
151
|
-
throw configError('temperature 配置项超出范围', `当前值: ${value}(合法范围 0-2)`, [
|
|
125
|
+
throw configError('temperature 配置项超出范围', `当前值: ${value}(合法范围 0-2)`, [
|
|
126
|
+
'将 temperature 调整为 0-2 之间的数字',
|
|
127
|
+
]);
|
|
128
|
+
}
|
|
129
|
+
return value;
|
|
130
|
+
}
|
|
131
|
+
return defaultValue;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* 验证 maxContextTokens(上下限内),非法类型取默认值,超出范围抛错。
|
|
135
|
+
* 上下限防配置成 0/负数(上下文预算异常)或超大值(资源失控)。
|
|
136
|
+
*/
|
|
137
|
+
function validateMaxContextTokens(value, defaultValue) {
|
|
138
|
+
// Number.isFinite 同时排除 NaN/Infinity
|
|
139
|
+
if (typeof value === 'number' && Number.isFinite(value)) {
|
|
140
|
+
if (value < MIN_MAX_CONTEXT_TOKENS || value > MAX_MAX_CONTEXT_TOKENS) {
|
|
141
|
+
throw configError('maxContextTokens 配置项超出范围', `当前值: ${value}(合法范围 ${MIN_MAX_CONTEXT_TOKENS}-${MAX_MAX_CONTEXT_TOKENS})`, [
|
|
142
|
+
`将 maxContextTokens 调整为 ${MIN_MAX_CONTEXT_TOKENS}-${MAX_MAX_CONTEXT_TOKENS} 之间的数字`,
|
|
143
|
+
]);
|
|
152
144
|
}
|
|
153
145
|
return value;
|
|
154
146
|
}
|
|
155
147
|
return defaultValue;
|
|
156
148
|
}
|
|
157
149
|
/**
|
|
158
|
-
* 验证
|
|
150
|
+
* 验证 contextWindow(可选,provider 上下文窗口声明)。
|
|
159
151
|
*
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
*
|
|
152
|
+
* **只做自身防御**(类型非法 / 非有限数 / 非正数 → undefined = 未声明),**不做区间裁决**:
|
|
153
|
+
* 「模型能吃多大」是只有 provider/API 知道的事实,内核替用户裁决会造成「UI 显示值 ≠ 真实生效值」
|
|
154
|
+
* 的静默失真(填 3M 被静默丢弃、兜底 120K,全程无提示)。值**原样生效**,
|
|
155
|
+
* 超模型能力时由 **API 报错**(真实层可见失败);超出常规量级仅 `warn` 作**观测**、**不改变行为**。
|
|
156
|
+
*/
|
|
157
|
+
function validateContextWindow(value) {
|
|
158
|
+
if (typeof value !== 'number' || !Number.isFinite(value))
|
|
159
|
+
return undefined;
|
|
160
|
+
if (value <= 0)
|
|
161
|
+
return undefined;
|
|
162
|
+
if (value > MAX_CONTEXT_WINDOW) {
|
|
163
|
+
logger.warn({ contextWindow: value, warnAbove: MAX_CONTEXT_WINDOW }, 'contextWindow 超出常规模型窗口量级:内核不裁决,按原值生效;若模型不支持将由 API 报错');
|
|
164
|
+
}
|
|
165
|
+
return value;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* 验证 permission(仅 owner/guest),空值取默认,非法抛错
|
|
163
169
|
*/
|
|
164
170
|
function validatePermission(value) {
|
|
165
171
|
if (value === undefined || value === null) {
|
|
@@ -171,28 +177,22 @@ function validatePermission(value) {
|
|
|
171
177
|
throw configError('security.permission 配置项无效', `当前值: ${JSON.stringify(value)}(仅允许 "owner" 或 "guest")`, ['将 security.permission 修改为 "owner" 或 "guest"']);
|
|
172
178
|
}
|
|
173
179
|
/**
|
|
174
|
-
* 验证 allowedPaths
|
|
175
|
-
*
|
|
176
|
-
* @param value 待验证的值
|
|
177
|
-
* @returns 有效的路径数组
|
|
178
|
-
* @throws MemoraError 当数组元素类型不匹配时抛出
|
|
180
|
+
* 验证 allowedPaths 数组,元素非字符串抛错;超过最大条数截断(防白名单膨胀)
|
|
179
181
|
*/
|
|
180
182
|
function validateAllowedPaths(value) {
|
|
181
183
|
if (!Array.isArray(value)) {
|
|
182
184
|
return DEFAULT_CONFIG.allowedPaths;
|
|
183
185
|
}
|
|
184
|
-
// 验证每个元素都是字符串(断言失败抛 configError)
|
|
185
186
|
for (let i = 0; i < value.length; i++) {
|
|
186
187
|
assertString(value[i], `allowedPaths[${i}]`);
|
|
187
188
|
}
|
|
188
|
-
|
|
189
|
+
// 数量上限:路径白名单防膨胀(超过则截断保留前 MAX_ALLOWED_PATHS 条)
|
|
190
|
+
return value.length > MAX_ALLOWED_PATHS
|
|
191
|
+
? value.slice(0, MAX_ALLOWED_PATHS)
|
|
192
|
+
: value;
|
|
189
193
|
}
|
|
190
194
|
/**
|
|
191
195
|
* 解析 Provider 配置映射表
|
|
192
|
-
*
|
|
193
|
-
* @param value 待解析的值
|
|
194
|
-
* @returns 有效的 Provider 配置映射表或 undefined
|
|
195
|
-
* @throws MemoraError 当 Provider 配置无效时抛出
|
|
196
196
|
*/
|
|
197
197
|
function parseProviders(value) {
|
|
198
198
|
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
@@ -205,7 +205,6 @@ function parseProviders(value) {
|
|
|
205
205
|
throw configError(`配置项 providers.${key} 必须是对象`, `当前类型: ${providerValue === null ? 'null' : Array.isArray(providerValue) ? 'array' : typeof providerValue}`, [`将 providers.${key} 配置为包含 provider/model 等字段的对象`]);
|
|
206
206
|
}
|
|
207
207
|
const p = providerValue;
|
|
208
|
-
// 验证必需字段(断言失败抛 configError,返回值类型收窄为 string)
|
|
209
208
|
const providerName = assertString(p.provider, `providers.${key}.provider`);
|
|
210
209
|
const modelName = assertString(p.model, `providers.${key}.model`);
|
|
211
210
|
providers[key] = {
|
|
@@ -215,81 +214,36 @@ function parseProviders(value) {
|
|
|
215
214
|
baseUrl: typeof p.baseUrl === 'string' && p.baseUrl ? p.baseUrl : undefined,
|
|
216
215
|
apiKey: typeof p.apiKey === 'string' && p.apiKey ? p.apiKey : undefined,
|
|
217
216
|
temperature: p.temperature !== undefined ? validateTemperature(p.temperature, 0) : undefined,
|
|
218
|
-
contextWindow: (
|
|
217
|
+
contextWindow: validateContextWindow(p.contextWindow),
|
|
218
|
+
// 能力位(互斥双能力位):三态保真透传——显式 true/false 如实保留,
|
|
219
|
+
// 仅未配置(undefined)才由下游 Provider 内回落默认(toolCalling 默认 true、structured 默认 false)。
|
|
220
|
+
supportsToolCalling: typeof p.supportsToolCalling === 'boolean' ? p.supportsToolCalling : undefined,
|
|
221
|
+
supportsStructuredOutput: typeof p.supportsStructuredOutput === 'boolean' ? p.supportsStructuredOutput : undefined,
|
|
219
222
|
};
|
|
220
223
|
}
|
|
221
224
|
return Object.keys(providers).length > 0 ? providers : undefined;
|
|
222
225
|
}
|
|
223
226
|
/**
|
|
224
|
-
*
|
|
225
|
-
*
|
|
226
|
-
*
|
|
227
|
-
*
|
|
228
|
-
* @throws MemoraError 当配置无效时抛出
|
|
229
|
-
*/
|
|
230
|
-
function parseBackground(value) {
|
|
231
|
-
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
232
|
-
return undefined;
|
|
233
|
-
}
|
|
234
|
-
const bg = value;
|
|
235
|
-
// 验证必需字段(断言失败抛 configError,返回值类型收窄为 string)
|
|
236
|
-
const bgProvider = assertString(bg.provider, 'background.provider');
|
|
237
|
-
const bgModel = assertString(bg.model, 'background.model');
|
|
238
|
-
return {
|
|
239
|
-
provider: bgProvider,
|
|
240
|
-
model: bgModel,
|
|
241
|
-
baseUrl: typeof bg.baseUrl === 'string' ? bg.baseUrl : undefined,
|
|
242
|
-
apiKey: typeof bg.apiKey === 'string' ? bg.apiKey : undefined,
|
|
243
|
-
temperature: bg.temperature !== undefined ? validateTemperature(bg.temperature, 0.5) : 0.5,
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* 解析 Embedding 配置
|
|
248
|
-
*
|
|
249
|
-
* @param value 待解析的值
|
|
250
|
-
* @returns 有效的 Embedding 配置或 undefined
|
|
251
|
-
* @throws MemoraError 当配置无效时抛出
|
|
252
|
-
*/
|
|
253
|
-
function parseEmbedding(value) {
|
|
254
|
-
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
255
|
-
return undefined;
|
|
256
|
-
}
|
|
257
|
-
const emb = value;
|
|
258
|
-
// 验证必需字段(断言失败抛 configError,返回值类型收窄为 string)
|
|
259
|
-
const embModel = assertString(emb.model, 'embedding.model');
|
|
260
|
-
return {
|
|
261
|
-
model: embModel,
|
|
262
|
-
baseUrl: typeof emb.baseUrl === 'string' ? emb.baseUrl : undefined,
|
|
263
|
-
apiKey: typeof emb.apiKey === 'string' ? emb.apiKey : undefined,
|
|
264
|
-
};
|
|
265
|
-
}
|
|
266
|
-
/**
|
|
267
|
-
* 加载配置
|
|
268
|
-
*
|
|
269
|
-
* 单一真理源:所有默认值由 DEFAULT_CONFIG 声明,
|
|
270
|
-
* 不再维护独立的 schema(避免两处真理源打架)。
|
|
271
|
-
*
|
|
272
|
-
* 查找顺序:显式 configPath → 项目级 .memora/config.json → 内置默认值。
|
|
273
|
-
* 用户级配置路径由宿主通过 configPath 显式传入。
|
|
274
|
-
*
|
|
275
|
-
* @param configPath 显式指定的配置文件路径
|
|
227
|
+
* 加载配置。
|
|
228
|
+
* 单一真理源:所有默认值由 DEFAULT_CONFIG 声明,不维护独立 schema。
|
|
229
|
+
* 查找顺序:显式 configPath → 项目级 .memora/config.json → 内置默认值(apply env 展开)。
|
|
230
|
+
* 默认值合并走 parseConfig(不 spread DEFAULT_CONFIG,避免覆盖 schema 默认)。
|
|
276
231
|
*/
|
|
277
232
|
export async function loadConfig(configPath) {
|
|
278
233
|
// 1. 显式指定
|
|
279
234
|
if (configPath) {
|
|
280
235
|
const config = await readJsonFile(configPath);
|
|
281
|
-
return expandEnvVars(
|
|
236
|
+
return expandEnvVars(parseConfig(config));
|
|
282
237
|
}
|
|
283
238
|
// 2. 项目级
|
|
284
239
|
const projectPath = resolve(process.cwd(), '.memora/config.json');
|
|
285
240
|
try {
|
|
286
241
|
const config = await readJsonFile(projectPath);
|
|
287
|
-
return expandEnvVars(
|
|
242
|
+
return expandEnvVars(parseConfig(config));
|
|
288
243
|
}
|
|
289
244
|
catch (err) {
|
|
290
|
-
//
|
|
291
|
-
|
|
292
|
-
if (!isEnoent(err)) {
|
|
245
|
+
// 项目级不可用(不存在/损坏/权限)时用默认值;排除 ENOENT(正常),其他错误暴露根因
|
|
246
|
+
if (!isNodeErrorCode(err, 'ENOENT')) {
|
|
293
247
|
logger.warn({ path: projectPath, err: toError(err) }, '项目级配置加载失败,使用默认值');
|
|
294
248
|
}
|
|
295
249
|
}
|
|
@@ -297,10 +251,8 @@ export async function loadConfig(configPath) {
|
|
|
297
251
|
return expandEnvVars(parseConfig({}));
|
|
298
252
|
}
|
|
299
253
|
/**
|
|
300
|
-
* 读取并解析 JSON
|
|
301
|
-
*
|
|
302
|
-
* 将 JSON.parse 的 SyntaxError 包装为 configError,
|
|
303
|
-
* 防止裸 Error 通过显式 --config 路径传播。
|
|
254
|
+
* 读取并解析 JSON 文件,将 JSON.parse 的 SyntaxError 包装为 configError
|
|
255
|
+
* (防止裸 Error 通过显式 --config 路径传播)
|
|
304
256
|
*/
|
|
305
257
|
async function readJsonFile(path) {
|
|
306
258
|
const content = await readFile(path, 'utf-8');
|
|
@@ -308,74 +260,9 @@ async function readJsonFile(path) {
|
|
|
308
260
|
return JSON.parse(content);
|
|
309
261
|
}
|
|
310
262
|
catch (err) {
|
|
311
|
-
throw configError(`配置文件 JSON 格式错误: ${path}`, toError(err).message, [
|
|
263
|
+
throw configError(`配置文件 JSON 格式错误: ${path}`, toError(err).message, [
|
|
264
|
+
'检查配置文件语法(逗号、引号配对、尾随逗号)',
|
|
265
|
+
]);
|
|
312
266
|
}
|
|
313
267
|
}
|
|
314
|
-
/**
|
|
315
|
-
* 判断错误是否为 ENOENT(文件不存在)
|
|
316
|
-
*/
|
|
317
|
-
function isEnoent(err) {
|
|
318
|
-
return err instanceof Object && 'code' in err && err.code === 'ENOENT';
|
|
319
|
-
}
|
|
320
|
-
/**
|
|
321
|
-
* 合并用户配置与默认值
|
|
322
|
-
*
|
|
323
|
-
* 直接用 parseConfig(userConfig),让默认值填充缺失字段。
|
|
324
|
-
* 不再 spread DEFAULT_CONFIG,避免覆盖 schema default。
|
|
325
|
-
*/
|
|
326
|
-
function mergeWithDefaults(userConfig) {
|
|
327
|
-
return parseConfig(userConfig);
|
|
328
|
-
}
|
|
329
|
-
/**
|
|
330
|
-
* 展开 ${ENV_VAR} 占位符
|
|
331
|
-
* 配置文件可写 "apiKey": "${MEMORA_LLM_API_KEY}"
|
|
332
|
-
* 实际读取时展开为环境变量值
|
|
333
|
-
*
|
|
334
|
-
* 展开范围覆盖所有可能包含敏感信息的通道:
|
|
335
|
-
* - llm(前台主通道):apiKey / baseUrl
|
|
336
|
-
* - llm.providers(多 Provider 映射表):每个 Provider 的 apiKey / baseUrl
|
|
337
|
-
* - llm.background(后台通道):apiKey / baseUrl
|
|
338
|
-
* - embedding(向量嵌入通道):apiKey / baseUrl
|
|
339
|
-
*/
|
|
340
|
-
function expandEnvVars(config) {
|
|
341
|
-
const expand = (val) => {
|
|
342
|
-
if (!val)
|
|
343
|
-
return val;
|
|
344
|
-
return val.replace(/\$\{([A-Z_][A-Z0-9_]*)\}/g, (_, name) => process.env[name] ?? '');
|
|
345
|
-
};
|
|
346
|
-
// 展开 providers 映射表中的环境变量
|
|
347
|
-
const expandedProviders = config.llm.providers
|
|
348
|
-
? Object.fromEntries(Object.entries(config.llm.providers).map(([key, p]) => [
|
|
349
|
-
key,
|
|
350
|
-
{ ...p, apiKey: expand(p.apiKey), baseUrl: expand(p.baseUrl) },
|
|
351
|
-
]))
|
|
352
|
-
: undefined;
|
|
353
|
-
// 展开 background 后台通道的环境变量(与前台 llm 通道同模式)
|
|
354
|
-
const expandedBackground = config.llm.background
|
|
355
|
-
? {
|
|
356
|
-
...config.llm.background,
|
|
357
|
-
apiKey: expand(config.llm.background.apiKey),
|
|
358
|
-
baseUrl: expand(config.llm.background.baseUrl),
|
|
359
|
-
}
|
|
360
|
-
: undefined;
|
|
361
|
-
// 展开 embedding 向量嵌入通道的环境变量
|
|
362
|
-
const expandedEmbedding = config.embedding
|
|
363
|
-
? {
|
|
364
|
-
...config.embedding,
|
|
365
|
-
apiKey: expand(config.embedding.apiKey),
|
|
366
|
-
baseUrl: expand(config.embedding.baseUrl),
|
|
367
|
-
}
|
|
368
|
-
: undefined;
|
|
369
|
-
return {
|
|
370
|
-
...config,
|
|
371
|
-
llm: {
|
|
372
|
-
...config.llm,
|
|
373
|
-
apiKey: expand(config.llm.apiKey),
|
|
374
|
-
baseUrl: expand(config.llm.baseUrl),
|
|
375
|
-
providers: expandedProviders,
|
|
376
|
-
background: expandedBackground,
|
|
377
|
-
},
|
|
378
|
-
embedding: expandedEmbedding,
|
|
379
|
-
};
|
|
380
|
-
}
|
|
381
268
|
//# sourceMappingURL=loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|