@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/llm/provider.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/llm/provider.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,UAAU,CAAC;QACjB,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/C,CAAC,CAAC;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,KAAK,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,UAAU,CAAC;QACjB,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM,CAAC;YACb,WAAW,EAAE,MAAM,CAAC;YACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACrC,CAAC;KACH,CAAC,CAAC;IACH;;;;;OAKG;IACH,eAAe,CAAC,EAAE;QAChB,IAAI,EAAE,aAAa,CAAC;QACpB,WAAW,EAAE;YACX,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,OAAO,CAAC;YAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACjC,CAAC;KACH,CAAC;IACF,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC7C,qDAAqD;IACrD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,0CAA0C;AAC1C,8BAAsB,WAAW;IAC/B,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAQ;IAE7C,yEAAyE;IACzE,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAS;IAEnD,qCAAqC;IACrC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC;CAChF"}
|
package/dist/llm/provider.js
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* LLM Provider 抽象类
|
|
3
|
-
* 实现类需实现 chat() 流式方法
|
|
4
|
-
*/
|
|
1
|
+
/** LLM Provider 抽象类:实现类需实现 chat() 流式方法 */
|
|
5
2
|
export class LlmProvider {
|
|
6
3
|
/**
|
|
7
|
-
*
|
|
4
|
+
* 是否支持原生工具调用(OpenAI Function Calling 的 tools 协议)。
|
|
8
5
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
6
|
+
* 与 supportsStructuredOutput 互斥(response_format 不能与 tools 同时使用,OpenAI 协议限制):
|
|
7
|
+
* - 支持 tools → loop 走原生工具通道(列工具 + 传 tools 参数)。
|
|
8
|
+
* - 支持 structured → loop 传 response_format(JSON mode 回落)。
|
|
9
|
+
* - 两者皆 false → 无工具能力,loop 收起工具清单并显式告知(可观测,不静默)。
|
|
12
10
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* 默认 **true**(存量行为):云 LLM 绝大多数支持原生 FC(有工具集就传 tools,与历史一致)。
|
|
12
|
+
* 本地运行时(Ollama/LM Studio 等)是否支持原生 FC 无法从 baseUrl 推断,须在宿主配置时
|
|
13
|
+
* 显式置 false(互斥双能力位)。
|
|
15
14
|
*/
|
|
15
|
+
supportsToolCalling = true;
|
|
16
|
+
/** 是否支持结构化输出(默认 false)。注意:response_format 不能与 tools 同时使用(OpenAI 协议限制) */
|
|
16
17
|
supportsStructuredOutput = false;
|
|
17
18
|
}
|
|
18
19
|
//# sourceMappingURL=provider.js.map
|
package/dist/llm/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/llm/provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/llm/provider.ts"],"names":[],"mappings":"AA0DA,0CAA0C;AAC1C,MAAM,OAAgB,WAAW;IAG/B;;;;;;;;;;;OAWG;IACM,mBAAmB,GAAY,IAAI,CAAC;IAE7C,yEAAyE;IAChE,wBAAwB,GAAY,KAAK,CAAC;CAIpD"}
|
package/dist/llm/types.d.ts
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* 详见 ADR-003 · LLM 适配层使用 OpenAI Chat Completions 兼容协议
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* 工具调用描述
|
|
8
|
-
*/
|
|
1
|
+
/** LLM 适配层类型定义(OpenAI Chat Completions 兼容协议) */
|
|
2
|
+
import type { LlmProvider } from '../llm/provider.js';
|
|
9
3
|
export interface ToolCall {
|
|
10
4
|
id: string;
|
|
11
5
|
type: 'function';
|
|
@@ -14,12 +8,61 @@ export interface ToolCall {
|
|
|
14
8
|
arguments: string;
|
|
15
9
|
};
|
|
16
10
|
}
|
|
17
|
-
/**
|
|
18
|
-
* LLM 响应块
|
|
19
|
-
*/
|
|
20
11
|
export interface LlmChunk {
|
|
21
12
|
content?: string;
|
|
22
13
|
toolCalls?: ToolCall[];
|
|
23
14
|
finishReason?: 'stop' | 'tool_calls' | 'length' | 'error';
|
|
15
|
+
/**
|
|
16
|
+
* 模型思考内容增量片段(对应协议 `delta.reasoning_content`,deepseek 等思考模型)。
|
|
17
|
+
* 与 content 同为增量语义(消费侧自行累积);仅供 UI 折叠展示,**不进正文/记忆**(CoT 防护)。
|
|
18
|
+
* 非思考模型恒 undefined,自然降级。命名用 thought 而非 reasoning/thinking:与多模型路由任务
|
|
19
|
+
* 类型 `TaskType='reasoning'` 语义分离,也避开 ProcessEvent 既有 `type:'thinking'` 相位事件。
|
|
20
|
+
*/
|
|
21
|
+
thought?: string;
|
|
22
|
+
/**
|
|
23
|
+
* 流式工具意图预告:tool_call 的 name 在流式 delta 中**成形即上报**,
|
|
24
|
+
* 无需等到 finish_reason='tool_calls'。写文件等大参数工具的参数生成段可能长达数十秒,
|
|
25
|
+
* 此字段让 UI 提前渲染「准备中」工具行,消除事件真空期。瞬态展示轨,不落盘。
|
|
26
|
+
* 非 tool_calls 流 / 非 OpenAI 兼容 provider 恒 undefined,自然降级。
|
|
27
|
+
*/
|
|
28
|
+
partialToolCall?: {
|
|
29
|
+
id: string;
|
|
30
|
+
name: string;
|
|
31
|
+
};
|
|
32
|
+
/** 实际 API 用量统计(仅在流结束时的最终 chunk 携带,部分 Provider 不支持) */
|
|
33
|
+
usage?: {
|
|
34
|
+
/** 输入 token 数(prompt_tokens) */
|
|
35
|
+
inputTokens: number;
|
|
36
|
+
/** 输出 token 数(completion_tokens) */
|
|
37
|
+
outputTokens: number;
|
|
38
|
+
/** 总 token 数(total_tokens) */
|
|
39
|
+
totalTokens?: number;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/** 单个 Provider 配置(providers 映射表的值);内核仅透传 provider 字段,不做路由决策 */
|
|
43
|
+
export interface ProviderEntryConfig {
|
|
44
|
+
/** 标识(仅用于日志,不影响路由) */
|
|
45
|
+
provider: string;
|
|
46
|
+
model: string;
|
|
47
|
+
/** API 基础 URL(可选——内核不做预设回退,缺失时工厂会报错) */
|
|
48
|
+
baseUrl?: string;
|
|
49
|
+
/** API 密钥(可选,从环境变量读取。本地 LLM 如 Ollama 可为空字符串) */
|
|
50
|
+
apiKey?: string;
|
|
51
|
+
/** temperature,未配置时回退到全局 llm.temperature */
|
|
52
|
+
temperature?: number;
|
|
53
|
+
/** 上下文窗口(token),未配置时回退到 memory.maxContextTokens */
|
|
54
|
+
contextWindow?: number;
|
|
55
|
+
/**
|
|
56
|
+
* 是否支持原生工具调用(OpenAI Function Calling tools 协议)。
|
|
57
|
+
* 本地运行时(Ollama/LM Studio 等)是否支持原生 FC 无法从 baseUrl 推断,搬到配置显式声明。
|
|
58
|
+
* 与 supportsStructuredOutput 互斥(response_format 不能与 tools 同用)。
|
|
59
|
+
*/
|
|
60
|
+
supportsToolCalling?: boolean;
|
|
61
|
+
/** 是否支持结构化输出(response_format / JSON mode) */
|
|
62
|
+
supportsStructuredOutput?: boolean;
|
|
24
63
|
}
|
|
64
|
+
/** LLM 任务类型:按任务复杂度路由到不同 Provider/模型(simple/reasoning/code/summary) */
|
|
65
|
+
export type TaskType = 'simple' | 'reasoning' | 'code' | 'summary';
|
|
66
|
+
/** Provider 路由选择器:按任务类型返回 Provider;不配置路由时所有任务类型复用同一 Provider */
|
|
67
|
+
export type ProviderRouter = (taskType: TaskType) => LlmProvider;
|
|
25
68
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/llm/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC1D;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,eAAe,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,sDAAsD;IACtD,KAAK,CAAC,EAAE;QACN,gCAAgC;QAChC,WAAW,EAAE,MAAM,CAAC;QACpB,oCAAoC;QACpC,YAAY,EAAE,MAAM,CAAC;QACrB,8BAA8B;QAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAID,+DAA+D;AAC/D,MAAM,WAAW,mBAAmB;IAClC,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,6CAA6C;IAC7C,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,sEAAsE;AACtE,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AAEnE,gEAAgE;AAChE,MAAM,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK,WAAW,CAAC"}
|
package/dist/llm/types.js
CHANGED
package/dist/llm/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":""}
|
package/dist/logging/logger.d.ts
CHANGED
|
@@ -1,42 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 结构化日志 — 全局单例 + 可替换 ILogger
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* - node:path/node:fs 是 Node.js 内置模块,静态 import(合法依赖)
|
|
6
|
-
* - pino 为可选 peerDependency,通过动态 import 加载(未安装时降级 console)
|
|
7
|
-
* 宿主可注入自定义 logger(setLogger),完全绕过 pino。
|
|
8
|
-
*
|
|
9
|
-
* 降级策略:
|
|
10
|
-
* 1. pino 可用 → 双流输出(stderr + 文件日志)
|
|
11
|
-
* 2. pino 不可用 → console 零依赖 fallback(仅 stderr)
|
|
12
|
-
* 3. 宿主注入 → 优先使用宿主实现
|
|
13
|
-
*
|
|
14
|
-
* 使用方式:
|
|
15
|
-
* import { logger } from '../logging/logger.js';
|
|
16
|
-
* logger.info({ key: val }, 'message');
|
|
17
|
-
*
|
|
18
|
-
* 注入自定义 logger:
|
|
19
|
-
* import { setLogger } from '../logging/logger.js';
|
|
20
|
-
* setLogger(myCustomLogger);
|
|
3
|
+
* 零第三方依赖、零 fs 副作用:默认 console fallback(写 stderr);宿主经 setLogger() 注入自定义实现。
|
|
4
|
+
* 内核只持有日志「接口」职责——不加载任何三方日志库,不决定日志落盘位置(通道/落盘归宿主)。
|
|
21
5
|
*/
|
|
22
6
|
import type { ILogger } from '../logging/loggerInterface.js';
|
|
23
7
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* 20+ 个内核模块统一通过此变量输出日志。
|
|
27
|
-
* 首次访问任一方法时懒触发 pino 升级(确保 import 零 fs 副作用)。
|
|
28
|
-
* 宿主注入自定义 logger 后,所有模块自动使用新实现。
|
|
8
|
+
* 全局日志访问器:20+ 内核模块统一经此输出;每个方法为对当前 `_logger` 的**普通委托闭包**,
|
|
9
|
+
* 宿主注入/复位后所有持有者自动切换到新实现(函数身份稳定,外部可将 `logger.info` 直接作回调传递)。
|
|
29
10
|
*/
|
|
30
11
|
export declare const logger: ILogger;
|
|
31
12
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* 注意:此函数修改全局状态。在单 Agent 模型下(ADR-011),
|
|
38
|
-
* 同一进程只有一个 Agent 实例,不会冲突。若同一进程创建多个
|
|
39
|
-
* Agent 实例并分别注入 logger,后者会覆盖前者——此时会输出警告。
|
|
13
|
+
* 替换全局日志实现:宿主在 Agent 初始化前调用注入自定义 logger;传入 undefined 恢复默认。
|
|
14
|
+
* 注入即成为内核**唯一**日志出口:同时桥接 utils 层(`loggerHolder`),
|
|
15
|
+
* 使 scanner / eventEmitter / rolePackManager 等 utils 侧模块也走注入实现(而非停留在 console fallback)。
|
|
16
|
+
* 修改全局状态:单 Agent 模型下不会冲突;若多处注入,后者覆盖前者并输出警告。
|
|
40
17
|
*/
|
|
41
18
|
export declare function setLogger(newLogger: ILogger | undefined): void;
|
|
42
19
|
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logging/logger.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logging/logger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,OAAO,EAAS,MAAM,8BAA8B,CAAC;AAoFnE;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,OAKpB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAgB9D"}
|
package/dist/logging/logger.js
CHANGED
|
@@ -1,37 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
// 桥接 utils 层 loggerHolder:utils 运行时不依赖 logging/,
|
|
3
|
-
// 由本模块在加载和 setLogger 时反向注入 logger 实例。
|
|
1
|
+
// 反向注入 utils 层 loggerHolder:utils 运行时不依赖 logging/,由本模块桥接 logger 实例
|
|
4
2
|
import { setLogger as setUtilsLogger } from '../utils/loggerHolder.js';
|
|
5
|
-
|
|
6
|
-
import { resolve } from 'node:path';
|
|
7
|
-
import { mkdirSync, createWriteStream, statSync, truncateSync } from 'node:fs';
|
|
8
|
-
import { expandHome } from '../utils/path.js';
|
|
9
|
-
/**
|
|
10
|
-
* 从 unknown 值提取错误消息(复用零依赖的 toError,避免类型断言)
|
|
11
|
-
*/
|
|
12
|
-
function errMsg(err) {
|
|
13
|
-
return toError(err).message;
|
|
14
|
-
}
|
|
15
|
-
/** 日志级别(从环境变量读取,默认 info) */
|
|
3
|
+
/** 日志级别(环境变量,默认 info) */
|
|
16
4
|
const level = process.env['MEMORA_LOG_LEVEL'] ?? 'info';
|
|
17
|
-
/**
|
|
5
|
+
/** 敏感键名匹配(命中时值被替换为 [REDACTED]) */
|
|
18
6
|
const SENSITIVE_KEY_PATTERN = /api[_-]?key|token|password|secret|authorization|credential/i;
|
|
19
7
|
/**
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* 支持嵌套对象脱敏:`*.apiKey` 匹配任意层级的 apiKey 字段
|
|
23
|
-
*/
|
|
24
|
-
const PINO_REDACT_PATHS = [
|
|
25
|
-
'apiKey', 'token', 'password', 'secret', 'authorization', 'credential',
|
|
26
|
-
'*.apiKey', '*.token', '*.password', '*.secret',
|
|
27
|
-
'*.authorization', '*.credential',
|
|
28
|
-
'*.*.apiKey', '*.*.token', '*.*.password', '*.*.secret',
|
|
29
|
-
];
|
|
30
|
-
/**
|
|
31
|
-
* 对象脱敏:深拷贝对象并将敏感键的值替换为 [REDACTED]
|
|
32
|
-
*
|
|
33
|
-
* 仅用于 console fallback logger 的 JSON.stringify 路径,
|
|
34
|
-
* 防止 API Key 等敏感数据泄漏到 stderr。
|
|
8
|
+
* 对象脱敏:深拷贝并将敏感键值替换为 [REDACTED]
|
|
9
|
+
* 单一脱敏实现:console fallback 输出对象前统一经此脱敏(任意嵌套层级 + 变体 + 大小写不敏感)。
|
|
35
10
|
*/
|
|
36
11
|
function redactSensitiveKeys(obj) {
|
|
37
12
|
const redacted = {};
|
|
@@ -48,11 +23,7 @@ function redactSensitiveKeys(obj) {
|
|
|
48
23
|
}
|
|
49
24
|
return redacted;
|
|
50
25
|
}
|
|
51
|
-
/**
|
|
52
|
-
const isProd = process.env['NODE_ENV'] === 'production';
|
|
53
|
-
/** 是否启用文件日志 */
|
|
54
|
-
const fileEnabled = process.env['MEMORA_LOG_FILE'] !== '0';
|
|
55
|
-
/** 日志级别优先级(用于 console fallback 的级别过滤) */
|
|
26
|
+
/** 日志级别优先级(console fallback 级别过滤用) */
|
|
56
27
|
const LEVEL_PRIORITY = {
|
|
57
28
|
trace: 0,
|
|
58
29
|
debug: 1,
|
|
@@ -66,12 +37,7 @@ const LEVEL_PRIORITY = {
|
|
|
66
37
|
function shouldLog(targetLevel) {
|
|
67
38
|
return (LEVEL_PRIORITY[targetLevel] ?? 2) >= (LEVEL_PRIORITY[level] ?? 2);
|
|
68
39
|
}
|
|
69
|
-
/**
|
|
70
|
-
* Console 零依赖 fallback logger
|
|
71
|
-
*
|
|
72
|
-
* pino 不可用时使用。仅输出到 stderr,不写文件。
|
|
73
|
-
* 满足 ILogger 接口,所有内核模块透明使用。
|
|
74
|
-
*/
|
|
40
|
+
/** Console 零依赖 fallback logger:仅 stderr,满足 ILogger 接口 */
|
|
75
41
|
function createConsoleLogger() {
|
|
76
42
|
return {
|
|
77
43
|
info: createConsoleLogFn('info'),
|
|
@@ -82,215 +48,62 @@ function createConsoleLogger() {
|
|
|
82
48
|
}
|
|
83
49
|
/**
|
|
84
50
|
* 创建 console fallback 单级别日志方法
|
|
85
|
-
*
|
|
86
|
-
* 消除 createConsoleLogger 内 4 处 info/warn/error/debug 方法的同构实现
|
|
87
|
-
* (ADR-017 枝叶层 2 次提取原则,4 次重复已超阈值)。
|
|
88
|
-
*
|
|
89
|
-
* 共享逻辑:
|
|
90
|
-
* 1. shouldLog 级别过滤
|
|
91
|
-
* 2. 提取 text(字符串直传,对象取 msg 参数)
|
|
92
|
-
* 3. 区分字符串/对象输出(对象路径调用 redactSensitiveKeys 脱敏)
|
|
93
|
-
*
|
|
94
|
-
* @param targetLevel 日志级别('info' | 'warn' | 'error' | 'debug')
|
|
95
|
-
* @returns LogFn 兼容的日志方法
|
|
51
|
+
* 消除 4 处 info/warn/error/debug 方法同构实现;共享:shouldLog 过滤、文本提取、对象路径脱敏。
|
|
96
52
|
*/
|
|
97
53
|
function createConsoleLogFn(targetLevel) {
|
|
98
|
-
// 级别前缀(与原实现保持一致,便于日志检索过滤)
|
|
99
54
|
const prefix = `[${targetLevel.toUpperCase()}]`;
|
|
100
55
|
return (objOrMsg, msg) => {
|
|
101
|
-
// 级别过滤:低于当前级别则静默返回
|
|
102
56
|
if (!shouldLog(targetLevel))
|
|
103
57
|
return;
|
|
104
|
-
|
|
105
|
-
const text = typeof objOrMsg === 'string' ? objOrMsg : msg ?? '';
|
|
58
|
+
const text = typeof objOrMsg === 'string' ? objOrMsg : (msg ?? '');
|
|
106
59
|
if (typeof objOrMsg === 'object') {
|
|
107
|
-
// 对象路径:脱敏后 JSON
|
|
60
|
+
// 对象路径:脱敏后 JSON 序列化,防敏感数据泄漏
|
|
108
61
|
console.error(`${prefix} ${text}`, JSON.stringify(redactSensitiveKeys(objOrMsg)));
|
|
109
62
|
}
|
|
110
63
|
else {
|
|
111
|
-
// 字符串路径:仅输出前缀 + 文本
|
|
112
64
|
console.error(`${prefix} ${text}`);
|
|
113
65
|
}
|
|
114
66
|
};
|
|
115
67
|
}
|
|
116
68
|
/**
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
* pino 通过动态 import 加载,实例类型未知。
|
|
120
|
-
* 包装器显式提取 4 个日志方法,避免 as unknown as ILogger 双重断言。
|
|
121
|
-
*
|
|
122
|
-
* @param pinoInst pino 实例(动态导入)
|
|
123
|
-
* @returns ILogger 兼容对象
|
|
124
|
-
*/
|
|
125
|
-
function wrapPinoAsLogger(pinoInst) {
|
|
126
|
-
return {
|
|
127
|
-
info: pinoInst.info.bind(pinoInst),
|
|
128
|
-
warn: pinoInst.warn.bind(pinoInst),
|
|
129
|
-
error: pinoInst.error.bind(pinoInst),
|
|
130
|
-
debug: pinoInst.debug.bind(pinoInst),
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* 尝试创建 Pino logger
|
|
135
|
-
*
|
|
136
|
-
* pino 为可选 peerDependency,通过动态 import 加载。
|
|
137
|
-
* 加载失败(宿主未安装 pino)则回退到 console logger。
|
|
138
|
-
*
|
|
139
|
-
* @returns Pino logger 实例,或 null(pino 不可用)
|
|
140
|
-
*/
|
|
141
|
-
async function tryCreatePinoLogger() {
|
|
142
|
-
try {
|
|
143
|
-
// pino 为可选 peerDependency,必须动态 import(未安装时降级 console)
|
|
144
|
-
// node:path/node:fs 已在文件顶部静态 import(ADR-002 v0.9:Node.js 内置模块是合法依赖)
|
|
145
|
-
const pino = (await import('pino')).default;
|
|
146
|
-
// 日志目录由宿主通过 MEMORA_DATA_DIR 环境变量注入;未设置时跳过文件日志
|
|
147
|
-
const dataDir = process.env['MEMORA_DATA_DIR'];
|
|
148
|
-
const resolvedDataDir = dataDir ? resolve(expandHome(dataDir)) : null;
|
|
149
|
-
// pino.StreamEntry 类型在 pino 未安装时不可用,用内联类型
|
|
150
|
-
const streams = [];
|
|
151
|
-
// stderr 流(开发环境友好显示)
|
|
152
|
-
if (!isProd) {
|
|
153
|
-
streams.push({ level: 'info', stream: process.stderr });
|
|
154
|
-
}
|
|
155
|
-
// 文件流(结构化 JSON,方便后续分析)
|
|
156
|
-
// 日志轮转保护——超过 10MB 时截断重写,防止长期运行生成巨大文件
|
|
157
|
-
if (fileEnabled && resolvedDataDir) {
|
|
158
|
-
try {
|
|
159
|
-
const logsDir = resolve(resolvedDataDir, 'logs');
|
|
160
|
-
mkdirSync(logsDir, { recursive: true });
|
|
161
|
-
const logFilePath = resolve(logsDir, 'memora.log');
|
|
162
|
-
// 检查文件大小,超过 10MB 时截断
|
|
163
|
-
const LOG_MAX_BYTES = 10 * 1024 * 1024; // 10MB
|
|
164
|
-
try {
|
|
165
|
-
const stat = statSync(logFilePath);
|
|
166
|
-
if (stat.size > LOG_MAX_BYTES) {
|
|
167
|
-
truncateSync(logFilePath, 0);
|
|
168
|
-
process.stderr.write(`[memora] 日志文件超过 10MB,已截断:${logFilePath}\n`);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
catch (err) {
|
|
172
|
-
// 文件不存在或无法 stat,正常——首次写入
|
|
173
|
-
if (process.env['MEMORA_DEBUG'])
|
|
174
|
-
process.stderr.write(`[memora] stat 日志文件失败:${errMsg(err)}\n`);
|
|
175
|
-
}
|
|
176
|
-
streams.push({
|
|
177
|
-
level: 'info',
|
|
178
|
-
stream: createWriteStream(logFilePath, { flags: 'a' }),
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
catch (err) {
|
|
182
|
-
process.stderr.write(`[memora] 日志文件创建失败:${errMsg(err)}\n`);
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
if (streams.length === 0) {
|
|
186
|
-
// 通过包装器适配 ILogger 接口,避免 as unknown as ILogger 双重断言
|
|
187
|
-
// SEC-AUDIT: 配置 redact 防止敏感信息写入日志文件
|
|
188
|
-
return wrapPinoAsLogger(pino({ level, redact: PINO_REDACT_PATHS }));
|
|
189
|
-
}
|
|
190
|
-
// 通过包装器适配 ILogger 接口
|
|
191
|
-
// SEC-AUDIT: 配置 redact 防止敏感信息写入日志文件
|
|
192
|
-
return wrapPinoAsLogger(pino({ level, redact: PINO_REDACT_PATHS }, pino.multistream(streams)));
|
|
193
|
-
}
|
|
194
|
-
catch (err) {
|
|
195
|
-
// pino 未安装,回退到 console logger
|
|
196
|
-
if (process.env['MEMORA_DEBUG'])
|
|
197
|
-
process.stderr.write(`[memora] pino 加载失败:${errMsg(err)}\n`);
|
|
198
|
-
return null;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* 全局日志单例
|
|
203
|
-
*
|
|
204
|
-
* 初始化为 console fallback(同步可用,零 fs 副作用)。
|
|
205
|
-
* 首次日志调用时懒触发 pino 升级(确保模块 import 零 fs 副作用)。
|
|
206
|
-
* 宿主通过 setLogger() 注入后自动替换,并跳过 pino 升级。
|
|
69
|
+
* 全局日志单例:初始为 console fallback(同步可用,零 fs 副作用)。
|
|
70
|
+
* 宿主经 setLogger() 注入后替换;未注入时保持 console fallback。
|
|
207
71
|
*/
|
|
208
72
|
let _logger = createConsoleLogger();
|
|
209
|
-
/**
|
|
73
|
+
/** 是否已被宿主注入(setLogger 覆盖告警判定) */
|
|
210
74
|
let _loggerInjected = false;
|
|
211
|
-
|
|
212
|
-
let _pinoUpgradeStarted = false;
|
|
213
|
-
// 同步初始化 utils 层 logger 桥接(确保 utils 在 pino 异步加载前就有 console fallback)
|
|
75
|
+
// 同步初始化 utils 层 logger 桥接(确保 utils 始终持有日志实现,默认即 console fallback)
|
|
214
76
|
setUtilsLogger(_logger);
|
|
215
77
|
/**
|
|
216
|
-
*
|
|
217
|
-
*
|
|
218
|
-
* 在首次日志调用时触发,确保模块 import 零 fs 副作用。
|
|
219
|
-
* - 宿主已注入 logger 时跳过升级(_loggerInjected 守卫)
|
|
220
|
-
* - 升级启动后不再重复触发(_pinoUpgradeStarted 守卫)
|
|
221
|
-
* - 竞态守卫:then 回调内再次检查 _loggerInjected,避免覆盖宿主在升级期间注入的 logger
|
|
222
|
-
*/
|
|
223
|
-
function maybeUpgradeToPino() {
|
|
224
|
-
if (_pinoUpgradeStarted || _loggerInjected)
|
|
225
|
-
return;
|
|
226
|
-
_pinoUpgradeStarted = true;
|
|
227
|
-
void tryCreatePinoLogger().then((pinoLogger) => {
|
|
228
|
-
// 守卫:升级期间宿主可能已通过 setLogger 注入自定义 logger
|
|
229
|
-
if (_loggerInjected) {
|
|
230
|
-
setUtilsLogger(_logger);
|
|
231
|
-
return;
|
|
232
|
-
}
|
|
233
|
-
if (pinoLogger) {
|
|
234
|
-
_logger = pinoLogger;
|
|
235
|
-
_logger.info({ level, prod: isProd, fileEnabled }, 'logger 启动(pino)');
|
|
236
|
-
}
|
|
237
|
-
else {
|
|
238
|
-
_logger.info({ level, prod: isProd }, 'logger 启动(console fallback,pino 未安装)');
|
|
239
|
-
}
|
|
240
|
-
// 桥接注入到 utils 层(utils 运行时不依赖 logging/)
|
|
241
|
-
setUtilsLogger(_logger);
|
|
242
|
-
});
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* 全局日志访问器
|
|
246
|
-
*
|
|
247
|
-
* 20+ 个内核模块统一通过此变量输出日志。
|
|
248
|
-
* 首次访问任一方法时懒触发 pino 升级(确保 import 零 fs 副作用)。
|
|
249
|
-
* 宿主注入自定义 logger 后,所有模块自动使用新实现。
|
|
78
|
+
* 全局日志访问器:20+ 内核模块统一经此输出;每个方法为对当前 `_logger` 的**普通委托闭包**,
|
|
79
|
+
* 宿主注入/复位后所有持有者自动切换到新实现(函数身份稳定,外部可将 `logger.info` 直接作回调传递)。
|
|
250
80
|
*/
|
|
251
81
|
export const logger = {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
get warn() {
|
|
257
|
-
maybeUpgradeToPino();
|
|
258
|
-
return _logger.warn.bind(_logger);
|
|
259
|
-
},
|
|
260
|
-
get error() {
|
|
261
|
-
maybeUpgradeToPino();
|
|
262
|
-
return _logger.error.bind(_logger);
|
|
263
|
-
},
|
|
264
|
-
get debug() {
|
|
265
|
-
maybeUpgradeToPino();
|
|
266
|
-
return _logger.debug.bind(_logger);
|
|
267
|
-
},
|
|
82
|
+
info: (...args) => _logger.info(...args),
|
|
83
|
+
warn: (...args) => _logger.warn(...args),
|
|
84
|
+
error: (...args) => _logger.error(...args),
|
|
85
|
+
debug: (...args) => _logger.debug(...args),
|
|
268
86
|
};
|
|
269
87
|
/**
|
|
270
|
-
*
|
|
271
|
-
*
|
|
272
|
-
*
|
|
273
|
-
*
|
|
274
|
-
*
|
|
275
|
-
* 注意:此函数修改全局状态。在单 Agent 模型下(ADR-011),
|
|
276
|
-
* 同一进程只有一个 Agent 实例,不会冲突。若同一进程创建多个
|
|
277
|
-
* Agent 实例并分别注入 logger,后者会覆盖前者——此时会输出警告。
|
|
88
|
+
* 替换全局日志实现:宿主在 Agent 初始化前调用注入自定义 logger;传入 undefined 恢复默认。
|
|
89
|
+
* 注入即成为内核**唯一**日志出口:同时桥接 utils 层(`loggerHolder`),
|
|
90
|
+
* 使 scanner / eventEmitter / rolePackManager 等 utils 侧模块也走注入实现(而非停留在 console fallback)。
|
|
91
|
+
* 修改全局状态:单 Agent 模型下不会冲突;若多处注入,后者覆盖前者并输出警告。
|
|
278
92
|
*/
|
|
279
93
|
export function setLogger(newLogger) {
|
|
280
94
|
if (newLogger) {
|
|
281
|
-
//
|
|
95
|
+
// 检测覆盖:当前已被宿主注入且新实例不同,说明有多处注入
|
|
282
96
|
if (_loggerInjected && _logger !== newLogger) {
|
|
283
97
|
_logger.warn('setLogger 覆盖了已有的自定义 logger(单 Agent 模型下不应出现此情况)');
|
|
284
98
|
}
|
|
285
99
|
_loggerInjected = true;
|
|
286
100
|
_logger = newLogger;
|
|
101
|
+
// 注入即唯一出口:同步桥接 utils 层,否则 utils 侧仍持有旧 console fallback
|
|
102
|
+
setUtilsLogger(_logger);
|
|
287
103
|
}
|
|
288
104
|
else {
|
|
289
|
-
//
|
|
290
|
-
// pino 升级不主动触发——等下次日志调用时由 maybeUpgradeToPino() 懒触发
|
|
291
|
-
// 这样 setLogger(undefined) 零 fs 副作用,与模块加载时一致
|
|
105
|
+
// 恢复默认:回到内置 console fallback,并重新桥接 utils 层
|
|
292
106
|
_loggerInjected = false;
|
|
293
|
-
_pinoUpgradeStarted = false; // 允许下次日志调用时重新触发升级
|
|
294
107
|
_logger = createConsoleLogger();
|
|
295
108
|
setUtilsLogger(_logger);
|
|
296
109
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logging/logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logging/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,27 +2,28 @@
|
|
|
2
2
|
* 日志接口 — Memora 内核与日志实现的解耦边界
|
|
3
3
|
*
|
|
4
4
|
* 设计目标:
|
|
5
|
-
* -
|
|
6
|
-
* -
|
|
7
|
-
* -
|
|
5
|
+
* - 宿主项目可注入自定义日志实现(如宿主日志框架实例 / console 包装 / 测试 mock)
|
|
6
|
+
* - 不注入时使用内核内置 console fallback(写 stderr,零配置、零第三方依赖)
|
|
7
|
+
* - 20+ 内核模块通过全局单例 `logger` 访问,无需每次传参
|
|
8
8
|
*
|
|
9
|
-
*
|
|
9
|
+
* 日志级别语义:
|
|
10
10
|
* - debug:调试信息(默认不输出)
|
|
11
11
|
* - info:正常运行信息
|
|
12
12
|
* - warn:非致命警告
|
|
13
13
|
* - error:错误(含堆栈信息)
|
|
14
14
|
*
|
|
15
|
-
*
|
|
15
|
+
* 双形态签名:支持 `logger.info('msg')` 和 `logger.info({ ctx }, 'msg')`
|
|
16
16
|
*/
|
|
17
17
|
export type LogFn = (objOrMsg: Record<string, unknown> | string, msg?: string) => void;
|
|
18
18
|
/**
|
|
19
19
|
* 日志接口
|
|
20
20
|
*
|
|
21
|
-
*
|
|
22
|
-
* -
|
|
21
|
+
* 接口只约定「首参对象 + 可选消息」的双形态签名,实现者可以是:
|
|
22
|
+
* - 宿主日志框架实例(经适配器包装)
|
|
23
23
|
* - console 包装
|
|
24
|
-
* - 自定义日志框架
|
|
25
24
|
* - 测试 mock
|
|
25
|
+
*
|
|
26
|
+
* 默认实现为内核内置 console fallback(写 stderr);内核不加载任何第三方日志库。
|
|
26
27
|
*/
|
|
27
28
|
export interface ILogger {
|
|
28
29
|
info: LogFn;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loggerInterface.d.ts","sourceRoot":"","sources":["../../src/logging/loggerInterface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,KAAK,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;AAEvF
|
|
1
|
+
{"version":3,"file":"loggerInterface.d.ts","sourceRoot":"","sources":["../../src/logging/loggerInterface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,KAAK,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;AAEvF;;;;;;;;;GASG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;CACd"}
|