@zooique/memora 2.0.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1028 -0
- package/README.en.md +305 -0
- package/README.md +303 -148
- package/config.example.json +43 -0
- package/dist/agent/agent.d.ts +438 -295
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +1368 -836
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/assembler.d.ts +117 -39
- package/dist/agent/assembler.d.ts.map +1 -1
- package/dist/agent/assembler.js +574 -71
- package/dist/agent/assembler.js.map +1 -1
- package/dist/agent/budget.d.ts +131 -0
- package/dist/agent/budget.d.ts.map +1 -0
- package/dist/agent/budget.js +128 -0
- package/dist/agent/budget.js.map +1 -0
- package/dist/agent/builtinToolHandlers.d.ts +229 -17
- package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
- package/dist/agent/builtinToolHandlers.js +758 -70
- package/dist/agent/builtinToolHandlers.js.map +1 -1
- package/dist/agent/builtinTools.d.ts +198 -7
- package/dist/agent/builtinTools.d.ts.map +1 -1
- package/dist/agent/builtinTools.js +646 -14
- package/dist/agent/builtinTools.js.map +1 -1
- package/dist/agent/compaction.d.ts +93 -0
- package/dist/agent/compaction.d.ts.map +1 -0
- package/dist/agent/compaction.js +192 -0
- package/dist/agent/compaction.js.map +1 -0
- package/dist/agent/constants.d.ts +139 -18
- package/dist/agent/constants.d.ts.map +1 -1
- package/dist/agent/constants.js +154 -18
- package/dist/agent/constants.js.map +1 -1
- package/dist/agent/contextManager.d.ts +126 -76
- package/dist/agent/contextManager.d.ts.map +1 -1
- package/dist/agent/contextManager.js +197 -135
- package/dist/agent/contextManager.js.map +1 -1
- package/dist/agent/contextPreparer.d.ts +78 -0
- package/dist/agent/contextPreparer.d.ts.map +1 -0
- package/dist/agent/contextPreparer.js +128 -0
- package/dist/agent/contextPreparer.js.map +1 -0
- package/dist/agent/duplicateInterceptor.d.ts +67 -0
- package/dist/agent/duplicateInterceptor.d.ts.map +1 -0
- package/dist/agent/duplicateInterceptor.js +82 -0
- package/dist/agent/duplicateInterceptor.js.map +1 -0
- package/dist/agent/guardRail.d.ts +166 -0
- package/dist/agent/guardRail.d.ts.map +1 -0
- package/dist/agent/guardRail.js +333 -0
- package/dist/agent/guardRail.js.map +1 -0
- package/dist/agent/loop.d.ts +718 -253
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +2215 -648
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/managers/archiveCoordinator.d.ts +21 -74
- package/dist/agent/managers/archiveCoordinator.d.ts.map +1 -1
- package/dist/agent/managers/archiveCoordinator.js +32 -105
- package/dist/agent/managers/archiveCoordinator.js.map +1 -1
- package/dist/agent/managers/chatLockManager.d.ts +20 -88
- package/dist/agent/managers/chatLockManager.d.ts.map +1 -1
- package/dist/agent/managers/chatLockManager.js +31 -103
- package/dist/agent/managers/chatLockManager.js.map +1 -1
- package/dist/agent/managers/dedupManager.d.ts +85 -0
- package/dist/agent/managers/dedupManager.d.ts.map +1 -0
- package/dist/agent/managers/dedupManager.js +248 -0
- package/dist/agent/managers/dedupManager.js.map +1 -0
- package/dist/agent/managers/goalConsistencyChecker.d.ts +42 -0
- package/dist/agent/managers/goalConsistencyChecker.d.ts.map +1 -0
- package/dist/agent/managers/goalConsistencyChecker.js +178 -0
- package/dist/agent/managers/goalConsistencyChecker.js.map +1 -0
- package/dist/agent/managers/llmCaller.d.ts +124 -0
- package/dist/agent/managers/llmCaller.d.ts.map +1 -0
- package/dist/agent/managers/llmCaller.js +417 -0
- package/dist/agent/managers/llmCaller.js.map +1 -0
- package/dist/agent/managers/llmJudgeHelper.d.ts +21 -0
- package/dist/agent/managers/llmJudgeHelper.d.ts.map +1 -0
- package/dist/agent/managers/llmJudgeHelper.js +32 -0
- package/dist/agent/managers/llmJudgeHelper.js.map +1 -0
- package/dist/agent/managers/loopMetrics.d.ts +58 -0
- package/dist/agent/managers/loopMetrics.d.ts.map +1 -0
- package/dist/agent/managers/loopMetrics.js +68 -0
- package/dist/agent/managers/loopMetrics.js.map +1 -0
- package/dist/agent/managers/memoryAdvisor.d.ts +27 -120
- package/dist/agent/managers/memoryAdvisor.d.ts.map +1 -1
- package/dist/agent/managers/memoryAdvisor.js +56 -192
- package/dist/agent/managers/memoryAdvisor.js.map +1 -1
- package/dist/agent/managers/memoryGovernance.d.ts +24 -0
- package/dist/agent/managers/memoryGovernance.d.ts.map +1 -0
- package/dist/agent/managers/memoryGovernance.js +46 -0
- package/dist/agent/managers/memoryGovernance.js.map +1 -0
- package/dist/agent/managers/memoryInspector.d.ts +59 -393
- package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
- package/dist/agent/managers/memoryInspector.js +92 -736
- package/dist/agent/managers/memoryInspector.js.map +1 -1
- package/dist/agent/managers/roundSummaryGenerator.d.ts +56 -0
- package/dist/agent/managers/roundSummaryGenerator.d.ts.map +1 -0
- package/dist/agent/managers/roundSummaryGenerator.js +201 -0
- package/dist/agent/managers/roundSummaryGenerator.js.map +1 -0
- package/dist/agent/managers/sessionArchiver.d.ts +19 -63
- package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
- package/dist/agent/managers/sessionArchiver.js +83 -157
- package/dist/agent/managers/sessionArchiver.js.map +1 -1
- package/dist/agent/managers/sessionManager.d.ts +286 -57
- package/dist/agent/managers/sessionManager.d.ts.map +1 -1
- package/dist/agent/managers/sessionManager.js +846 -85
- package/dist/agent/managers/sessionManager.js.map +1 -1
- package/dist/agent/managers/sessionNamer.d.ts +35 -0
- package/dist/agent/managers/sessionNamer.d.ts.map +1 -0
- package/dist/agent/managers/sessionNamer.js +104 -0
- package/dist/agent/managers/sessionNamer.js.map +1 -0
- package/dist/agent/managers/streamAccumulator.d.ts +20 -0
- package/dist/agent/managers/streamAccumulator.d.ts.map +1 -0
- package/dist/agent/managers/streamAccumulator.js +15 -0
- package/dist/agent/managers/streamAccumulator.js.map +1 -0
- package/dist/agent/managers/textPolishManager.d.ts +8 -44
- package/dist/agent/managers/textPolishManager.d.ts.map +1 -1
- package/dist/agent/managers/textPolishManager.js +12 -47
- package/dist/agent/managers/textPolishManager.js.map +1 -1
- package/dist/agent/managers/toolCallHelpers.d.ts +105 -0
- package/dist/agent/managers/toolCallHelpers.d.ts.map +1 -0
- package/dist/agent/managers/toolCallHelpers.js +161 -0
- package/dist/agent/managers/toolCallHelpers.js.map +1 -0
- package/dist/agent/managers/workProjection.d.ts +57 -87
- package/dist/agent/managers/workProjection.d.ts.map +1 -1
- package/dist/agent/managers/workProjection.js +166 -246
- package/dist/agent/managers/workProjection.js.map +1 -1
- package/dist/agent/messageHistory.d.ts +134 -84
- package/dist/agent/messageHistory.d.ts.map +1 -1
- package/dist/agent/messageHistory.js +419 -133
- package/dist/agent/messageHistory.js.map +1 -1
- package/dist/agent/needsPlanning.d.ts +28 -0
- package/dist/agent/needsPlanning.d.ts.map +1 -0
- package/dist/agent/needsPlanning.js +68 -0
- package/dist/agent/needsPlanning.js.map +1 -0
- package/dist/agent/seed/index.d.ts +11 -0
- package/dist/agent/seed/index.d.ts.map +1 -0
- package/dist/agent/seed/index.js +10 -0
- package/dist/agent/seed/index.js.map +1 -0
- package/dist/agent/seed/orchestrator.d.ts +83 -0
- package/dist/agent/seed/orchestrator.d.ts.map +1 -0
- package/dist/agent/seed/orchestrator.js +260 -0
- package/dist/agent/seed/orchestrator.js.map +1 -0
- package/dist/agent/seed/prepare.d.ts +49 -0
- package/dist/agent/seed/prepare.d.ts.map +1 -0
- package/dist/agent/seed/prepare.js +107 -0
- package/dist/agent/seed/prepare.js.map +1 -0
- package/dist/agent/seed/types.d.ts +115 -0
- package/dist/agent/seed/types.d.ts.map +1 -0
- package/dist/agent/seed/types.js +15 -0
- package/dist/agent/seed/types.js.map +1 -0
- package/dist/agent/sessionStateMachine.d.ts +78 -0
- package/dist/agent/sessionStateMachine.d.ts.map +1 -0
- package/dist/agent/sessionStateMachine.js +182 -0
- package/dist/agent/sessionStateMachine.js.map +1 -0
- package/dist/agent/taskTableRenderer.d.ts +51 -0
- package/dist/agent/taskTableRenderer.d.ts.map +1 -0
- package/dist/agent/taskTableRenderer.js +115 -0
- package/dist/agent/taskTableRenderer.js.map +1 -0
- package/dist/agent/toolExecutor.d.ts +255 -9
- package/dist/agent/toolExecutor.d.ts.map +1 -1
- package/dist/agent/toolExecutor.js +956 -20
- package/dist/agent/toolExecutor.js.map +1 -1
- package/dist/agent/toolLedger.d.ts +120 -0
- package/dist/agent/toolLedger.d.ts.map +1 -0
- package/dist/agent/toolLedger.js +149 -0
- package/dist/agent/toolLedger.js.map +1 -0
- package/dist/agent/toolResultCache.d.ts +134 -0
- package/dist/agent/toolResultCache.d.ts.map +1 -0
- package/dist/agent/toolResultCache.js +243 -0
- package/dist/agent/toolResultCache.js.map +1 -0
- package/dist/agent/toolResultOffload.d.ts +59 -0
- package/dist/agent/toolResultOffload.d.ts.map +1 -0
- package/dist/agent/toolResultOffload.js +70 -0
- package/dist/agent/toolResultOffload.js.map +1 -0
- package/dist/agent/toolRunner.d.ts +59 -0
- package/dist/agent/toolRunner.d.ts.map +1 -0
- package/dist/agent/toolRunner.js +147 -0
- package/dist/agent/toolRunner.js.map +1 -0
- package/dist/agent/tracer.d.ts +99 -107
- package/dist/agent/tracer.d.ts.map +1 -1
- package/dist/agent/tracer.js +24 -69
- package/dist/agent/tracer.js.map +1 -1
- package/dist/agent/types.d.ts +512 -162
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js +2 -51
- package/dist/agent/types.js.map +1 -1
- package/dist/code-exec/codeExecutionProvider.d.ts +16 -0
- package/dist/code-exec/codeExecutionProvider.d.ts.map +1 -0
- package/dist/code-exec/codeExecutionProvider.js +57 -0
- package/dist/code-exec/codeExecutionProvider.js.map +1 -0
- package/dist/code-exec/types.d.ts +37 -0
- package/dist/code-exec/types.d.ts.map +1 -0
- package/dist/code-exec/types.js +12 -0
- package/dist/code-exec/types.js.map +1 -0
- package/dist/config/expandEnvVars.d.ts +22 -0
- package/dist/config/expandEnvVars.d.ts.map +1 -0
- package/dist/config/expandEnvVars.js +38 -0
- package/dist/config/expandEnvVars.js.map +1 -0
- package/dist/config/loader.d.ts +59 -242
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +237 -194
- package/dist/config/loader.js.map +1 -1
- package/dist/index.d.ts +69 -74
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +93 -63
- package/dist/index.js.map +1 -1
- package/dist/llm/abortSignal.d.ts +2 -3
- package/dist/llm/abortSignal.d.ts.map +1 -1
- package/dist/llm/abortSignal.js +2 -3
- package/dist/llm/abortSignal.js.map +1 -1
- package/dist/llm/factory.d.ts +29 -25
- package/dist/llm/factory.d.ts.map +1 -1
- package/dist/llm/factory.js +34 -69
- package/dist/llm/factory.js.map +1 -1
- package/dist/llm/openaiCompatible.d.ts +25 -40
- package/dist/llm/openaiCompatible.d.ts.map +1 -1
- package/dist/llm/openaiCompatible.js +181 -129
- package/dist/llm/openaiCompatible.js.map +1 -1
- package/dist/llm/provider.d.ts +29 -42
- package/dist/llm/provider.d.ts.map +1 -1
- package/dist/llm/provider.js +11 -10
- package/dist/llm/provider.js.map +1 -1
- package/dist/llm/types.d.ts +54 -11
- package/dist/llm/types.d.ts.map +1 -1
- package/dist/llm/types.js +0 -5
- package/dist/llm/types.js.map +1 -1
- package/dist/logging/logger.d.ts +8 -29
- package/dist/logging/logger.d.ts.map +1 -1
- package/dist/logging/logger.js +43 -233
- package/dist/logging/logger.js.map +1 -1
- package/dist/logging/loggerInterface.d.ts +9 -8
- package/dist/logging/loggerInterface.d.ts.map +1 -1
- package/dist/memory/gcService.d.ts +164 -0
- package/dist/memory/gcService.d.ts.map +1 -0
- package/dist/memory/gcService.js +215 -0
- package/dist/memory/gcService.js.map +1 -0
- package/dist/memory/governance.d.ts +17 -0
- package/dist/memory/governance.d.ts.map +1 -0
- package/dist/memory/governance.js +17 -0
- package/dist/memory/governance.js.map +1 -0
- package/dist/memory/inMemoryRoundStore.d.ts +124 -0
- package/dist/memory/inMemoryRoundStore.d.ts.map +1 -0
- package/dist/memory/inMemoryRoundStore.js +216 -0
- package/dist/memory/inMemoryRoundStore.js.map +1 -0
- package/dist/memory/inMemorySessionStore.d.ts +92 -0
- package/dist/memory/inMemorySessionStore.d.ts.map +1 -0
- package/dist/memory/inMemorySessionStore.js +219 -0
- package/dist/memory/inMemorySessionStore.js.map +1 -0
- package/dist/memory/inMemorySessionViewLoader.d.ts +89 -0
- package/dist/memory/inMemorySessionViewLoader.d.ts.map +1 -0
- package/dist/memory/inMemorySessionViewLoader.js +183 -0
- package/dist/memory/inMemorySessionViewLoader.js.map +1 -0
- package/dist/memory/inMemoryStorage.d.ts +26 -141
- package/dist/memory/inMemoryStorage.d.ts.map +1 -1
- package/dist/memory/inMemoryStorage.js +48 -187
- package/dist/memory/inMemoryStorage.js.map +1 -1
- package/dist/memory/keywordsTouch.d.ts +20 -0
- package/dist/memory/keywordsTouch.d.ts.map +1 -0
- package/dist/memory/keywordsTouch.js +25 -0
- package/dist/memory/keywordsTouch.js.map +1 -0
- package/dist/memory/lockManager.d.ts +7 -2
- package/dist/memory/lockManager.d.ts.map +1 -1
- package/dist/memory/lockManager.js +35 -11
- package/dist/memory/lockManager.js.map +1 -1
- package/dist/memory/projectManager.d.ts +30 -128
- package/dist/memory/projectManager.d.ts.map +1 -1
- package/dist/memory/projectManager.js +39 -171
- package/dist/memory/projectManager.js.map +1 -1
- package/dist/memory/projectRegistry.d.ts +22 -37
- package/dist/memory/projectRegistry.d.ts.map +1 -1
- package/dist/memory/projectRegistry.js +78 -85
- package/dist/memory/projectRegistry.js.map +1 -1
- package/dist/memory/roundStore.d.ts +629 -0
- package/dist/memory/roundStore.d.ts.map +1 -0
- package/dist/memory/roundStore.js +116 -0
- package/dist/memory/roundStore.js.map +1 -0
- package/dist/memory/sessionStore.d.ts +70 -61
- package/dist/memory/sessionStore.d.ts.map +1 -1
- package/dist/memory/sessionStore.js +23 -1
- package/dist/memory/sessionStore.js.map +1 -1
- package/dist/memory/sessionViewLoader.d.ts +141 -0
- package/dist/memory/sessionViewLoader.d.ts.map +1 -0
- package/dist/memory/sessionViewLoader.js +65 -0
- package/dist/memory/sessionViewLoader.js.map +1 -0
- package/dist/memory/sourceValidation.d.ts +18 -9
- package/dist/memory/sourceValidation.d.ts.map +1 -1
- package/dist/memory/sourceValidation.js +35 -29
- package/dist/memory/sourceValidation.js.map +1 -1
- package/dist/memory/storageInterface.d.ts +45 -126
- package/dist/memory/storageInterface.d.ts.map +1 -1
- package/dist/memory/types.d.ts +82 -168
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/memory/types.js +116 -79
- package/dist/memory/types.js.map +1 -1
- package/dist/project-search/projectSearchProvider.d.ts +29 -0
- package/dist/project-search/projectSearchProvider.d.ts.map +1 -0
- package/dist/project-search/projectSearchProvider.js +57 -0
- package/dist/project-search/projectSearchProvider.js.map +1 -0
- package/dist/project-search/terms.d.ts +14 -0
- package/dist/project-search/terms.d.ts.map +1 -0
- package/dist/project-search/terms.js +68 -0
- package/dist/project-search/terms.js.map +1 -0
- package/dist/project-search/types.d.ts +139 -0
- package/dist/project-search/types.d.ts.map +1 -0
- package/dist/project-search/types.js +8 -0
- package/dist/project-search/types.js.map +1 -0
- package/dist/role-pack/capabilityMap.d.ts +28 -0
- package/dist/role-pack/capabilityMap.d.ts.map +1 -0
- package/dist/role-pack/capabilityMap.js +56 -0
- package/dist/role-pack/capabilityMap.js.map +1 -0
- package/dist/role-pack/constants.d.ts +21 -0
- package/dist/role-pack/constants.d.ts.map +1 -0
- package/dist/role-pack/constants.js +21 -0
- package/dist/role-pack/constants.js.map +1 -0
- package/dist/role-pack/rolePackManager.d.ts +269 -0
- package/dist/role-pack/rolePackManager.d.ts.map +1 -0
- package/dist/role-pack/rolePackManager.js +1082 -0
- package/dist/role-pack/rolePackManager.js.map +1 -0
- package/dist/role-pack/strategyKeys.d.ts +100 -0
- package/dist/role-pack/strategyKeys.d.ts.map +1 -0
- package/dist/role-pack/strategyKeys.js +184 -0
- package/dist/role-pack/strategyKeys.js.map +1 -0
- package/dist/role-pack/strategyResolver.d.ts +109 -0
- package/dist/role-pack/strategyResolver.d.ts.map +1 -0
- package/dist/role-pack/strategyResolver.js +304 -0
- package/dist/role-pack/strategyResolver.js.map +1 -0
- package/dist/role-pack/types.d.ts +237 -0
- package/dist/role-pack/types.d.ts.map +1 -0
- package/dist/role-pack/types.js +8 -0
- package/dist/role-pack/types.js.map +1 -0
- package/dist/role-pack/validator.d.ts +38 -0
- package/dist/role-pack/validator.d.ts.map +1 -0
- package/dist/role-pack/validator.js +436 -0
- package/dist/role-pack/validator.js.map +1 -0
- package/dist/security/pathGuard.d.ts +69 -72
- package/dist/security/pathGuard.d.ts.map +1 -1
- package/dist/security/pathGuard.js +151 -131
- package/dist/security/pathGuard.js.map +1 -1
- package/dist/skill/skillLayer3.d.ts +91 -0
- package/dist/skill/skillLayer3.d.ts.map +1 -0
- package/dist/skill/skillLayer3.js +104 -0
- package/dist/skill/skillLayer3.js.map +1 -0
- package/dist/skill/skillManager.d.ts +127 -56
- package/dist/skill/skillManager.d.ts.map +1 -1
- package/dist/skill/skillManager.js +318 -163
- package/dist/skill/skillManager.js.map +1 -1
- package/dist/skill/skillScriptRunner.d.ts +97 -0
- package/dist/skill/skillScriptRunner.d.ts.map +1 -0
- package/dist/skill/skillScriptRunner.js +271 -0
- package/dist/skill/skillScriptRunner.js.map +1 -0
- package/dist/skill/types.d.ts +73 -17
- package/dist/skill/types.d.ts.map +1 -1
- package/dist/skill/types.js +5 -1
- package/dist/skill/types.js.map +1 -1
- package/dist/utils/array.d.ts +5 -6
- package/dist/utils/array.d.ts.map +1 -1
- package/dist/utils/array.js +6 -6
- package/dist/utils/array.js.map +1 -1
- package/dist/utils/atomicWrite.d.ts +8 -0
- package/dist/utils/atomicWrite.d.ts.map +1 -0
- package/dist/utils/atomicWrite.js +31 -0
- package/dist/utils/atomicWrite.js.map +1 -0
- package/dist/utils/backgroundTask.d.ts +38 -0
- package/dist/utils/backgroundTask.d.ts.map +1 -0
- package/dist/utils/backgroundTask.js +117 -0
- package/dist/utils/backgroundTask.js.map +1 -0
- package/dist/utils/configResourceManager.d.ts +79 -0
- package/dist/utils/configResourceManager.d.ts.map +1 -0
- package/dist/utils/configResourceManager.js +150 -0
- package/dist/utils/configResourceManager.js.map +1 -0
- package/dist/utils/errors.d.ts +48 -56
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +60 -58
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/eventEmitter.d.ts +141 -63
- package/dist/utils/eventEmitter.d.ts.map +1 -1
- package/dist/utils/eventEmitter.js +50 -35
- package/dist/utils/eventEmitter.js.map +1 -1
- package/dist/utils/fileSafe.d.ts +20 -0
- package/dist/utils/fileSafe.d.ts.map +1 -0
- package/dist/utils/fileSafe.js +56 -0
- package/dist/utils/fileSafe.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +2 -3
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +6 -5
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/hash.d.ts +12 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +27 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/http.d.ts +17 -0
- package/dist/utils/http.d.ts.map +1 -0
- package/dist/utils/http.js +29 -0
- package/dist/utils/http.js.map +1 -0
- package/dist/utils/json.d.ts +1 -1
- package/dist/utils/json.js +1 -1
- package/dist/utils/math.d.ts +34 -1
- package/dist/utils/math.d.ts.map +1 -1
- package/dist/utils/math.js +47 -14
- package/dist/utils/math.js.map +1 -1
- package/dist/utils/objects.d.ts +2 -3
- package/dist/utils/objects.d.ts.map +1 -1
- package/dist/utils/objects.js +2 -3
- package/dist/utils/objects.js.map +1 -1
- package/dist/utils/recallDefaults.d.ts +16 -0
- package/dist/utils/recallDefaults.d.ts.map +1 -0
- package/dist/utils/recallDefaults.js +16 -0
- package/dist/utils/recallDefaults.js.map +1 -0
- package/dist/utils/safeTimer.d.ts +8 -36
- package/dist/utils/safeTimer.d.ts.map +1 -1
- package/dist/utils/safeTimer.js +9 -37
- package/dist/utils/safeTimer.js.map +1 -1
- package/dist/utils/scanner.d.ts +97 -17
- package/dist/utils/scanner.d.ts.map +1 -1
- package/dist/utils/scanner.js +269 -47
- package/dist/utils/scanner.js.map +1 -1
- package/dist/utils/segmenter.d.ts +20 -29
- package/dist/utils/segmenter.d.ts.map +1 -1
- package/dist/utils/segmenter.js +230 -88
- package/dist/utils/segmenter.js.map +1 -1
- package/dist/utils/strings.d.ts +15 -32
- package/dist/utils/strings.d.ts.map +1 -1
- package/dist/utils/strings.js +25 -44
- package/dist/utils/strings.js.map +1 -1
- package/dist/utils/time.d.ts +37 -0
- package/dist/utils/time.d.ts.map +1 -1
- package/dist/utils/time.js +56 -0
- package/dist/utils/time.js.map +1 -1
- package/dist/utils/toError.d.ts +13 -1
- package/dist/utils/toError.d.ts.map +1 -1
- package/dist/utils/toError.js +18 -1
- package/dist/utils/toError.js.map +1 -1
- package/dist/web-fetch/fetchWebFetchProvider.d.ts +14 -0
- package/dist/web-fetch/fetchWebFetchProvider.d.ts.map +1 -0
- package/dist/web-fetch/fetchWebFetchProvider.js +69 -0
- package/dist/web-fetch/fetchWebFetchProvider.js.map +1 -0
- package/dist/web-fetch/types.d.ts +30 -0
- package/dist/web-fetch/types.d.ts.map +1 -0
- package/dist/web-fetch/types.js +7 -0
- package/dist/web-fetch/types.js.map +1 -0
- package/dist/web-fetch/webFetchProvider.d.ts +10 -0
- package/dist/web-fetch/webFetchProvider.d.ts.map +1 -0
- package/dist/web-fetch/webFetchProvider.js +28 -0
- package/dist/web-fetch/webFetchProvider.js.map +1 -0
- package/dist/web-search/fetchWebSearchProvider.d.ts +27 -0
- package/dist/web-search/fetchWebSearchProvider.d.ts.map +1 -0
- package/dist/web-search/fetchWebSearchProvider.js +199 -0
- package/dist/web-search/fetchWebSearchProvider.js.map +1 -0
- package/dist/web-search/types.d.ts +46 -0
- package/dist/web-search/types.d.ts.map +1 -0
- package/dist/web-search/types.js +2 -0
- package/dist/{persona → web-search}/types.js.map +1 -1
- package/dist/web-search/webSearchProvider.d.ts +10 -0
- package/dist/web-search/webSearchProvider.d.ts.map +1 -0
- package/dist/web-search/webSearchProvider.js +30 -0
- package/dist/web-search/webSearchProvider.js.map +1 -0
- package/docs/architecture/role-pack-authoring-guide.md +243 -0
- package/docs/architecture/role-pack-spec.md +767 -0
- package/docs/memora-api-reference.md +1175 -0
- package/docs/memora-/346/216/245/345/205/245/346/214/207/345/215/227.md +843 -0
- package/docs/role-pack-/345/274/200/346/224/276/351/224/256/346/214/207/345/215/227.md +148 -0
- package/package.json +105 -83
- package/role-packs/README.md +41 -0
- package/role-packs/memora/345/212/251/346/211/213/manifest.json +12 -0
- package/role-packs/memora/345/212/251/346/211/213/persona.md +12 -0
- package/role-packs/memora/345/212/251/346/211/213/rules.md +4 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/manifest.json +44 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/persona.md +46 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/rules.md +15 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/character-sheet.md +34 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/core-extractor.md +37 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/craft-review.md +69 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/dialogue-craft.md +45 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/emotion-wave.md +46 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/empathy-craft.md +79 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/foreshadow.md +29 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/hotspot-mapping.md +121 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/idea-lever.md +42 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/logline-craft.md +47 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/longform-guard.md +64 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/need-finder.md +40 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/outline-expand.md +46 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/pacing-hook.md +34 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/polish-method.md +113 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/pov-discipline.md +79 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/project-init/SKILL.md +112 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/project-init/scripts/init-novel-project.mjs +441 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/relationship-web.md +47 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/scene-craft.md +46 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/story-bible.md +60 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/story-structure.md +36 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/style-weaver.md +109 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/three-layer-check.md +27 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/world-builder.md +41 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/manifest.json +48 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/persona.md +73 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/rules.md +19 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/api-doc-writer.md +40 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/doc-planner.md +42 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/nutrient-search.md +28 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/seed-finder.md +28 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/ssot-audit.md +34 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/style-guide.md +40 -0
- package/dist/agent/guardrail.d.ts +0 -47
- package/dist/agent/guardrail.d.ts.map +0 -1
- package/dist/agent/guardrail.js +0 -51
- package/dist/agent/guardrail.js.map +0 -1
- package/dist/agent/managers/autoConfigRefiner.d.ts +0 -39
- package/dist/agent/managers/autoConfigRefiner.d.ts.map +0 -1
- package/dist/agent/managers/autoConfigRefiner.js +0 -150
- package/dist/agent/managers/autoConfigRefiner.js.map +0 -1
- package/dist/agent/managers/configManager.d.ts +0 -125
- package/dist/agent/managers/configManager.d.ts.map +0 -1
- package/dist/agent/managers/configManager.js +0 -194
- package/dist/agent/managers/configManager.js.map +0 -1
- package/dist/agent/managers/insightExtractor.d.ts +0 -139
- package/dist/agent/managers/insightExtractor.d.ts.map +0 -1
- package/dist/agent/managers/insightExtractor.js +0 -401
- package/dist/agent/managers/insightExtractor.js.map +0 -1
- package/dist/agent/managers/memoryDecayScheduler.d.ts +0 -198
- package/dist/agent/managers/memoryDecayScheduler.d.ts.map +0 -1
- package/dist/agent/managers/memoryDecayScheduler.js +0 -349
- package/dist/agent/managers/memoryDecayScheduler.js.map +0 -1
- package/dist/agent/managers/relationBuilder.d.ts +0 -131
- package/dist/agent/managers/relationBuilder.d.ts.map +0 -1
- package/dist/agent/managers/relationBuilder.js +0 -192
- package/dist/agent/managers/relationBuilder.js.map +0 -1
- package/dist/agent/personaMatcher.d.ts +0 -29
- package/dist/agent/personaMatcher.d.ts.map +0 -1
- package/dist/agent/personaMatcher.js +0 -60
- package/dist/agent/personaMatcher.js.map +0 -1
- package/dist/agent/userFactExtractor.d.ts +0 -25
- package/dist/agent/userFactExtractor.d.ts.map +0 -1
- package/dist/agent/userFactExtractor.js +0 -81
- package/dist/agent/userFactExtractor.js.map +0 -1
- package/dist/eval/evalRunner.d.ts +0 -94
- package/dist/eval/evalRunner.d.ts.map +0 -1
- package/dist/eval/evalRunner.js +0 -141
- package/dist/eval/evalRunner.js.map +0 -1
- package/dist/eval/evalTypes.d.ts +0 -148
- package/dist/eval/evalTypes.d.ts.map +0 -1
- package/dist/eval/evalTypes.js +0 -118
- package/dist/eval/evalTypes.js.map +0 -1
- package/dist/eval/scenarios.d.ts +0 -33
- package/dist/eval/scenarios.d.ts.map +0 -1
- package/dist/eval/scenarios.js +0 -109
- package/dist/eval/scenarios.js.map +0 -1
- package/dist/llm/embedding.d.ts +0 -67
- package/dist/llm/embedding.d.ts.map +0 -1
- package/dist/llm/embedding.js +0 -184
- package/dist/llm/embedding.js.map +0 -1
- package/dist/memory/hybridMerge.d.ts +0 -54
- package/dist/memory/hybridMerge.d.ts.map +0 -1
- package/dist/memory/hybridMerge.js +0 -36
- package/dist/memory/hybridMerge.js.map +0 -1
- package/dist/memory/inMemoryRelationStore.d.ts +0 -51
- package/dist/memory/inMemoryRelationStore.d.ts.map +0 -1
- package/dist/memory/inMemoryRelationStore.js +0 -65
- package/dist/memory/inMemoryRelationStore.js.map +0 -1
- package/dist/memory/loader.d.ts +0 -49
- package/dist/memory/loader.d.ts.map +0 -1
- package/dist/memory/loader.js +0 -93
- package/dist/memory/loader.js.map +0 -1
- package/dist/memory/recall.d.ts +0 -66
- package/dist/memory/recall.d.ts.map +0 -1
- package/dist/memory/recall.js +0 -142
- package/dist/memory/recall.js.map +0 -1
- package/dist/memory/relationStore.d.ts +0 -78
- package/dist/memory/relationStore.d.ts.map +0 -1
- package/dist/memory/relationStore.js +0 -2
- package/dist/memory/relationStore.js.map +0 -1
- package/dist/memory/store.d.ts +0 -50
- package/dist/memory/store.d.ts.map +0 -1
- package/dist/memory/store.js +0 -161
- package/dist/memory/store.js.map +0 -1
- package/dist/memory/userProfile.d.ts +0 -156
- package/dist/memory/userProfile.d.ts.map +0 -1
- package/dist/memory/userProfile.js +0 -320
- package/dist/memory/userProfile.js.map +0 -1
- package/dist/memory/vectorStore.d.ts +0 -185
- package/dist/memory/vectorStore.d.ts.map +0 -1
- package/dist/memory/vectorStore.js +0 -257
- package/dist/memory/vectorStore.js.map +0 -1
- package/dist/persona/personaManager.d.ts +0 -160
- package/dist/persona/personaManager.d.ts.map +0 -1
- package/dist/persona/personaManager.js +0 -414
- package/dist/persona/personaManager.js.map +0 -1
- package/dist/persona/types.d.ts +0 -32
- package/dist/persona/types.d.ts.map +0 -1
- package/dist/persona/types.js +0 -5
package/dist/utils/errors.js
CHANGED
|
@@ -1,53 +1,44 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* 统一错误类型——把"系统 Error + 英文 stack"包装成"分类清晰 + 中文友好 + 有下一步建议"。
|
|
3
|
+
* 展示:标题(一眼看出问题)+ 详情(排查用)+ 建议(怎么修复)。
|
|
3
4
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
5
|
+
* **形态**:错误类只有 `MemoraError` 一个(承载 title/detail/suggestions/category);
|
|
6
|
+
* 分类不靠子类,靠 `category` 字段 —— 工厂函数按分类建实例:
|
|
7
|
+
* `configError` / `networkError` / `llmError` / `toolError` / `securityError`,
|
|
8
|
+
* 另有统一文案模板 `chatBusyError`(对话繁忙,内部走 configError)。
|
|
9
|
+
* ⚠️ 旧注释曾写「4 大类 ConfigError/NetworkError/…」——**本文件不存在这些 PascalCase 类名**
|
|
10
|
+
* (既非类也非工厂名),且实为 **6 个 category 值**:`security` 由 securityError 产出、
|
|
11
|
+
* 被 security/pathGuard 生产消费 4 处;`unknown` 为兜底值(当前无工厂产出,供直接构造保留)。
|
|
12
|
+
* 勿按旧注释去改分类集合。
|
|
6
13
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* - NetworkError 网络错误(连接超时、DNS 失败、限流等)
|
|
10
|
-
* - LlmError LLM 错误(4xx/5xx、返回异常 JSON)
|
|
11
|
-
* - ToolError 工具错误(路径越界、参数无效等)
|
|
12
|
-
*
|
|
13
|
-
* 错误展示原则:
|
|
14
|
-
* 1. 标题(中文)—— 一眼看出什么问题
|
|
15
|
-
* 2. 详情(原文)—— 排查用
|
|
16
|
-
* 3. 建议(下一步)—— 怎么修复
|
|
14
|
+
* ⚠️ 与宿主 `LlmErrorCategory`('connection'|'timeout'|'unknown')**不是同一个联合**:
|
|
15
|
+
* 后者是**流式 error chunk** 的分类(见 hosts shared/protocol.ts),本文件只管 MemoraError。
|
|
17
16
|
*/
|
|
18
|
-
// re-export toError 供混合 import 场景使用(如 import { securityError, toError })
|
|
19
|
-
// 单独需要零 logger 依赖的 toError 时应直接 import from '../utils/toError.js'(浏览器友好)。
|
|
20
|
-
export { toError } from '../utils/toError.js';
|
|
21
17
|
/**
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* 每个错误码关联一个 retryable 标记:
|
|
25
|
-
* - retryable:LLM 可以调整参数后重试(如文件路径错误、参数类型错误)
|
|
26
|
-
* - non-retryable:重试无意义(如权限拒绝、用户拒绝写入)
|
|
18
|
+
* 工具错误码——供 AgentLoop 的 Reflection(自修正)判断是否可重试:
|
|
19
|
+
* retryable 表示 LLM 调整参数后可重试;non-retryable 重试无意义。
|
|
27
20
|
*/
|
|
28
21
|
export const ToolErrorCode = {
|
|
29
22
|
/** 路径不在白名单内(不可重试) */
|
|
30
23
|
PATH_NOT_ALLOWED: 'PATH_NOT_ALLOWED',
|
|
31
|
-
/**
|
|
24
|
+
/** 文件不存在(可重试) */
|
|
32
25
|
FILE_NOT_FOUND: 'FILE_NOT_FOUND',
|
|
33
26
|
/** 权限不足(不可重试) */
|
|
34
27
|
PERMISSION_DENIED: 'PERMISSION_DENIED',
|
|
35
|
-
/**
|
|
28
|
+
/** 参数错误(可重试) */
|
|
36
29
|
ARGUMENT_ERROR: 'ARGUMENT_ERROR',
|
|
37
30
|
/** 用户拒绝写入(不可重试) */
|
|
38
31
|
WRITE_REJECTED: 'WRITE_REJECTED',
|
|
39
|
-
/**
|
|
32
|
+
/** 目录不存在(可重试) */
|
|
40
33
|
DIR_NOT_FOUND: 'DIR_NOT_FOUND',
|
|
41
|
-
/**
|
|
34
|
+
/** 未知工具(不可重试) */
|
|
42
35
|
UNKNOWN_TOOL: 'UNKNOWN_TOOL',
|
|
43
36
|
/** 自定义工具执行失败(可重试) */
|
|
44
37
|
CUSTOM_TOOL_FAILED: 'CUSTOM_TOOL_FAILED',
|
|
45
38
|
/** 通用错误(不可重试) */
|
|
46
39
|
UNKNOWN: 'UNKNOWN',
|
|
47
40
|
};
|
|
48
|
-
/**
|
|
49
|
-
* 判断错误码是否可重试
|
|
50
|
-
*/
|
|
41
|
+
/** 可重试错误码集合 */
|
|
51
42
|
const RETRYABLE_ERROR_CODES = new Set([
|
|
52
43
|
ToolErrorCode.FILE_NOT_FOUND,
|
|
53
44
|
ToolErrorCode.ARGUMENT_ERROR,
|
|
@@ -62,7 +53,6 @@ export class MemoraError extends Error {
|
|
|
62
53
|
detail;
|
|
63
54
|
suggestions;
|
|
64
55
|
category;
|
|
65
|
-
/** 工具错误码(用于 AgentLoop 反思判断是否可重试) */
|
|
66
56
|
errorCode;
|
|
67
57
|
cause;
|
|
68
58
|
constructor(opts) {
|
|
@@ -75,9 +65,7 @@ export class MemoraError extends Error {
|
|
|
75
65
|
this.errorCode = opts.errorCode;
|
|
76
66
|
this.cause = opts.cause;
|
|
77
67
|
}
|
|
78
|
-
/**
|
|
79
|
-
* 格式化为用户可读的展示字符串
|
|
80
|
-
*/
|
|
68
|
+
/** 格式化为用户可读的展示字符串 */
|
|
81
69
|
format() {
|
|
82
70
|
const lines = [];
|
|
83
71
|
lines.push(`❌ ${this.title}`);
|
|
@@ -92,47 +80,61 @@ export class MemoraError extends Error {
|
|
|
92
80
|
return lines.join('\n');
|
|
93
81
|
}
|
|
94
82
|
}
|
|
95
|
-
/**
|
|
96
|
-
* 工厂:配置错误
|
|
97
|
-
*/
|
|
83
|
+
/** 工厂:配置错误 */
|
|
98
84
|
export function configError(title, detail, suggestions, cause) {
|
|
99
85
|
return new MemoraError({ title, detail, suggestions, category: 'config', cause });
|
|
100
86
|
}
|
|
101
|
-
/**
|
|
102
|
-
* 工厂:对话繁忙错误
|
|
103
|
-
*
|
|
104
|
-
* 用于 chat() 进行中时拒绝其他需要独占 Agent 的操作(切换项目/Provider/会话/重载配置等)。
|
|
105
|
-
* 12 处调用点统一使用此工厂,消除 `configError('对话繁忙', ...)` 的重复模板(ADR-017 枝叶层 2 次提取)。
|
|
106
|
-
*
|
|
107
|
-
* @param action 被拒绝的操作描述(如"切换项目"),拼接到"请等待其结束后再"之后
|
|
108
|
-
* @returns MemoraError(config 类别)
|
|
109
|
-
*/
|
|
87
|
+
/** 工厂:对话繁忙错误——chat() 进行中拒绝其他需独占 Agent 的操作,统一模板用此工厂 */
|
|
110
88
|
export function chatBusyError(action) {
|
|
111
|
-
return configError('对话繁忙', `上一轮对话尚未完成,请等待其结束后再${action}`, [
|
|
89
|
+
return configError('对话繁忙', `上一轮对话尚未完成,请等待其结束后再${action}`, [
|
|
90
|
+
'等待当前对话完成后重试',
|
|
91
|
+
]);
|
|
112
92
|
}
|
|
113
|
-
/**
|
|
114
|
-
* 工厂:网络错误
|
|
115
|
-
*/
|
|
93
|
+
/** 工厂:网络错误 */
|
|
116
94
|
export function networkError(title, detail, suggestions, cause) {
|
|
117
95
|
return new MemoraError({ title, detail, suggestions, category: 'network', cause });
|
|
118
96
|
}
|
|
119
|
-
/**
|
|
120
|
-
* 工厂:LLM 错误
|
|
121
|
-
*/
|
|
97
|
+
/** 工厂:LLM 错误 */
|
|
122
98
|
export function llmError(title, detail, suggestions, cause) {
|
|
123
99
|
return new MemoraError({ title, detail, suggestions, category: 'llm', cause });
|
|
124
100
|
}
|
|
125
|
-
/**
|
|
126
|
-
* 工厂:工具错误
|
|
127
|
-
*/
|
|
101
|
+
/** 工厂:工具错误 */
|
|
128
102
|
export function toolError(title, detail, suggestions, cause, errorCode) {
|
|
129
103
|
return new MemoraError({ title, detail, suggestions, category: 'tool', cause, errorCode });
|
|
130
104
|
}
|
|
131
|
-
/**
|
|
132
|
-
* 工厂:安全错误(路径越界、黑名单命中、权限不足等)
|
|
133
|
-
*/
|
|
105
|
+
/** 工厂:安全错误(路径越界、黑名单命中、权限不足等) */
|
|
134
106
|
export function securityError(title, detail, suggestions, cause) {
|
|
135
107
|
return new MemoraError({ title, detail, suggestions, category: 'security', cause });
|
|
136
108
|
}
|
|
137
|
-
|
|
109
|
+
/** 判断是否为 AbortError(用户主动取消或超时中断)——统一基于 err.name === 'AbortError',
|
|
110
|
+
* 兼容原生 DOMException / 普通 Error 子类 / toError() 规范化后对象。 */
|
|
111
|
+
export function isAbortError(err) {
|
|
112
|
+
return err instanceof Error && err.name === 'AbortError';
|
|
113
|
+
}
|
|
114
|
+
/** 判断 AbortSignal 是否为「超时中断」(chat 锁超时 / LLM 无响应超时统一以 TimeoutError reason 标识)。
|
|
115
|
+
* 与用户取消(abort() 无 reason / AbortError reason)区分——锁超时中断不能谎报成用户取消。 */
|
|
116
|
+
export function isTimeoutAbortSignal(signal) {
|
|
117
|
+
return (signal?.aborted === true &&
|
|
118
|
+
signal.reason instanceof DOMException &&
|
|
119
|
+
signal.reason.name === 'TimeoutError');
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* 判断**抛出的错误**是否为「超时」(非 abort 路径的载体)。
|
|
123
|
+
*
|
|
124
|
+
* 与 `isTimeoutAbortSignal` 是**同一语义的两种载体**(同判 `name === 'TimeoutError'`):
|
|
125
|
+
* 前者看 `signal.reason`(signal 被 abort 的路径),本函数看**被抛出的错误对象**——
|
|
126
|
+
* 典型场景 = `openaiCompatible.parseSseStream` 的 SSE 停摆看门狗(`Promise.race` 竞速闸
|
|
127
|
+
* reject `DOMException('…','TimeoutError')`),它不经过 abort signal,故被归类为「失败」
|
|
128
|
+
* 而非「中断」,最终由 `consumeExecutionStream` 的通用 catch 收口。
|
|
129
|
+
*
|
|
130
|
+
* **用途(否则宿主文案不可达)**:把超时归入 `error.category = 'timeout'`,让宿主
|
|
131
|
+
* `chatPanel` 的 `friendlyByCategory.timeout`(「对话处理超时,请稍后重试」)真正生效;
|
|
132
|
+
* 缺该分类时宿主只能回退**原始技术文案**(DOMException message),用户读到的是侦探材料。
|
|
133
|
+
*
|
|
134
|
+
* 注:`toError()` 对 Error 实例原样返回(实测 `DOMException instanceof Error === true`),
|
|
135
|
+
* 故经 `llmCaller` 的 `toError(err)` 再 rethrow 后 `name` 不丢,本判据在链路末端依然成立。
|
|
136
|
+
*/
|
|
137
|
+
export function isTimeoutError(err) {
|
|
138
|
+
return err instanceof Error && err.name === 'TimeoutError';
|
|
139
|
+
}
|
|
138
140
|
//# sourceMappingURL=errors.js.map
|
package/dist/utils/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,qBAAqB;IACrB,gBAAgB,EAAE,kBAAkB;IACpC,iBAAiB;IACjB,cAAc,EAAE,gBAAgB;IAChC,iBAAiB;IACjB,iBAAiB,EAAE,mBAAmB;IACtC,gBAAgB;IAChB,cAAc,EAAE,gBAAgB;IAChC,mBAAmB;IACnB,cAAc,EAAE,gBAAgB;IAChC,iBAAiB;IACjB,aAAa,EAAE,eAAe;IAC9B,iBAAiB;IACjB,YAAY,EAAE,cAAc;IAC5B,qBAAqB;IACrB,kBAAkB,EAAE,oBAAoB;IACxC,iBAAiB;IACjB,OAAO,EAAE,SAAS;CACV,CAAC;AAIX,eAAe;AACf,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAqB;IACxD,aAAa,CAAC,cAAc;IAC5B,aAAa,CAAC,cAAc;IAC5B,aAAa,CAAC,aAAa;IAC3B,aAAa,CAAC,kBAAkB;CACjC,CAAC,CAAC;AAEH,MAAM,UAAU,oBAAoB,CAAC,IAAwB;IAC3D,OAAO,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAWD,MAAM,OAAO,WAAY,SAAQ,KAAK;IAC3B,KAAK,CAAS;IACd,MAAM,CAAqB;IAC3B,WAAW,CAAoB;IAC/B,QAAQ,CAAgB;IACxB,SAAS,CAAiC;IAC1C,KAAK,CAAoB;IAElC,YAAY,IAA0B;QACpC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,qBAAqB;IACrB,MAAM;QACJ,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF;AAED,cAAc;AACd,MAAM,UAAU,WAAW,CACzB,KAAa,EACb,MAA0B,EAC1B,WAAqB,EACrB,KAAa;IAEb,OAAO,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AACpF,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,OAAO,WAAW,CAAC,MAAM,EAAE,qBAAqB,MAAM,EAAE,EAAE;QACxD,aAAa;KACd,CAAC,CAAC;AACL,CAAC;AAED,cAAc;AACd,MAAM,UAAU,YAAY,CAC1B,KAAa,EACb,MAA0B,EAC1B,WAAqB,EACrB,KAAa;IAEb,OAAO,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACrF,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,QAAQ,CACtB,KAAa,EACb,MAA0B,EAC1B,WAAqB,EACrB,KAAa;IAEb,OAAO,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AACjF,CAAC;AAED,cAAc;AACd,MAAM,UAAU,SAAS,CACvB,KAAa,EACb,MAA0B,EAC1B,WAAqB,EACrB,KAAa,EACb,SAA8B;IAE9B,OAAO,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,aAAa,CAC3B,KAAa,EACb,MAA0B,EAC1B,WAAqB,EACrB,KAAa;IAEb,OAAO,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;AACtF,CAAC;AAED;0DAC0D;AAC1D,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,OAAO,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC;AAC3D,CAAC;AAED;qEACqE;AACrE,MAAM,UAAU,oBAAoB,CAAC,MAA+B;IAClE,OAAO,CACL,MAAM,EAAE,OAAO,KAAK,IAAI;QACxB,MAAM,CAAC,MAAM,YAAY,YAAY;QACrC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CACtC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,OAAO,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC;AAC7D,CAAC"}
|
|
@@ -1,101 +1,179 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import type { AskQuestion } from '../agent/types.js';
|
|
2
|
+
/** Agent 事件名常量(运行时真理源,与 AgentEventMap 键集一致) */
|
|
3
|
+
export declare const AGENT_EVENTS: {
|
|
4
|
+
readonly memoryAdded: "memoryAdded";
|
|
5
|
+
readonly rolePackSwitched: "rolePackSwitched";
|
|
6
|
+
readonly memoryRecalled: "memoryRecalled";
|
|
7
|
+
readonly sessionForked: "sessionForked";
|
|
8
|
+
readonly projectSwitched: "projectSwitched";
|
|
9
|
+
readonly archiveFailed: "archiveFailed";
|
|
10
|
+
readonly contextTruncated: "contextTruncated";
|
|
11
|
+
/** LLM 主动压缩完成(第二级压缩,与 contextTruncated 的内核自动截断区分) */
|
|
12
|
+
readonly contextCompressed: "contextCompressed";
|
|
13
|
+
readonly configReloaded: "configReloaded";
|
|
14
|
+
readonly archiveModeChanged: "archiveModeChanged";
|
|
15
|
+
readonly rolePackSwitchLocked: "rolePackSwitchLocked";
|
|
16
|
+
readonly workProjectionGenerated: "workProjectionGenerated";
|
|
17
|
+
readonly dedupCompleted: "dedupCompleted";
|
|
18
|
+
readonly sessionPauseTimedOut: "sessionPauseTimedOut";
|
|
19
|
+
readonly sessionResumeBlocked: "sessionResumeBlocked";
|
|
20
|
+
/** 订阅时宿主据此判断重要事件并 toast 提示 */
|
|
21
|
+
readonly sessionResumeFailed: "sessionResumeFailed";
|
|
22
|
+
/** 装配前判负(洞 3):触发输入过大,剩余预算无法支撑至少一轮正文——与软上限不同失败原因 */
|
|
23
|
+
readonly inputTooLarge: "inputTooLarge";
|
|
24
|
+
/** 回答中 LLM 调 ask_user 工具主动提问(唯一「提问后暂停」通道) */
|
|
25
|
+
readonly questionPending: "questionPending";
|
|
26
|
+
readonly goalDriftDetected: "goalDriftDetected";
|
|
27
|
+
readonly sessionPaused: "sessionPaused";
|
|
28
|
+
readonly sessionResumed: "sessionResumed";
|
|
29
|
+
readonly sessionError: "sessionError";
|
|
30
|
+
readonly sessionRecovered: "sessionRecovered";
|
|
31
|
+
/** 会话标题被 LLM 自动更新(SessionNamer 完成后触发,宿主据此刷新 UI) */
|
|
32
|
+
readonly sessionTitleUpdated: "sessionTitleUpdated";
|
|
33
|
+
/**
|
|
34
|
+
* 轮次摘要生成完成(round-summary fire-and-forget 后台任务收口信号)。
|
|
35
|
+
* 宿主据此解锁「问答闭环完整结束」的 UI 状态(删除/分叉按钮解禁)——
|
|
36
|
+
* 避免 done 后立即删除导致孤儿 round-summary(摘要还在生成就删了源)。
|
|
37
|
+
* 一次 chat() 只触发一次,载荷带 roundId 溯源。
|
|
38
|
+
*/
|
|
39
|
+
readonly roundSummaryGenerated: "roundSummaryGenerated";
|
|
40
|
+
};
|
|
41
|
+
/** 事件名联合类型(由 AGENT_EVENTS 推导,新增事件只需在此加一项) */
|
|
42
|
+
export type AgentEventName = keyof typeof AGENT_EVENTS;
|
|
43
|
+
/** 运行时校验用集合(由 AGENT_EVENTS 派生) */
|
|
44
|
+
export declare const AGENT_EVENT_SET: ReadonlySet<string>;
|
|
45
|
+
/** 事件名 → 载荷类型映射(键集受 AgentEventName 约束) */
|
|
46
|
+
export interface AgentEventMap extends Record<AgentEventName, unknown> {
|
|
4
47
|
memoryAdded: {
|
|
5
48
|
id: string;
|
|
6
49
|
source: string;
|
|
7
50
|
name: string;
|
|
8
51
|
};
|
|
9
|
-
|
|
10
|
-
personaSwitched: {
|
|
52
|
+
rolePackSwitched: {
|
|
11
53
|
from: string | null;
|
|
12
54
|
to: string;
|
|
13
55
|
};
|
|
14
|
-
/** 记忆衰减完成 */
|
|
15
|
-
decayCompleted: {
|
|
16
|
-
decayedCount: number;
|
|
17
|
-
};
|
|
18
|
-
/** 记忆被召回(用于宿主 UI 展示"想起 X 条记忆") */
|
|
19
56
|
memoryRecalled: {
|
|
20
57
|
count: number;
|
|
21
58
|
query: string;
|
|
22
59
|
};
|
|
23
|
-
/** 会话被分叉 */
|
|
24
60
|
sessionForked: {
|
|
25
61
|
from: string;
|
|
26
62
|
to: string;
|
|
27
|
-
|
|
28
|
-
};
|
|
29
|
-
/** 洞察被提取 */
|
|
30
|
-
insightExtracted: {
|
|
31
|
-
source: string;
|
|
32
|
-
insight: string;
|
|
63
|
+
roundCount: number;
|
|
33
64
|
};
|
|
34
|
-
/** 记忆冲突被检测到(contradicts 关系写入时触发,宿主可通知用户) */
|
|
35
|
-
conflictDetected: {
|
|
36
|
-
newMemoryId: string;
|
|
37
|
-
newInsight: string;
|
|
38
|
-
targetId: string;
|
|
39
|
-
targetContent: string;
|
|
40
|
-
};
|
|
41
|
-
/** 项目被切换(宿主 UI 可据此刷新项目相关界面) */
|
|
42
65
|
projectSwitched: {
|
|
43
66
|
from: string | null;
|
|
44
67
|
to: string;
|
|
45
68
|
projectName: string;
|
|
46
69
|
};
|
|
47
|
-
/** 技能被匹配(宿主 UI 可据此展示当前激活技能) */
|
|
48
|
-
skillMatched: {
|
|
49
|
-
skill: string;
|
|
50
|
-
score: number;
|
|
51
|
-
};
|
|
52
|
-
/** 归档操作失败(fire-and-forget catch 分支发射,宿主可通知用户) */
|
|
53
70
|
archiveFailed: {
|
|
54
|
-
|
|
55
|
-
stage: 'profile' | 'insight';
|
|
56
|
-
/** 失败原因摘要(error.message,截断 200 字符避免 payload 过大) */
|
|
71
|
+
stage: 'session';
|
|
57
72
|
message: string;
|
|
58
73
|
};
|
|
74
|
+
contextTruncated: {
|
|
75
|
+
skippedCount: number;
|
|
76
|
+
keptCount: number;
|
|
77
|
+
};
|
|
78
|
+
/** LLM 主动压缩完成载荷:压缩目标 + 被替换消息数 + 摘要长度 */
|
|
79
|
+
contextCompressed: {
|
|
80
|
+
target: 'earliest_round' | 'largest_tool_result';
|
|
81
|
+
replacedCount: number;
|
|
82
|
+
summaryLength: number;
|
|
83
|
+
};
|
|
84
|
+
configReloaded: {
|
|
85
|
+
source: string;
|
|
86
|
+
};
|
|
87
|
+
archiveModeChanged: {
|
|
88
|
+
from: string;
|
|
89
|
+
to: string;
|
|
90
|
+
};
|
|
91
|
+
rolePackSwitchLocked: {
|
|
92
|
+
reason: string;
|
|
93
|
+
lockedSeconds: number;
|
|
94
|
+
};
|
|
95
|
+
workProjectionGenerated: {
|
|
96
|
+
sourcePath: string;
|
|
97
|
+
summary: string;
|
|
98
|
+
};
|
|
99
|
+
dedupCompleted: {
|
|
100
|
+
deduplicatedCount: number;
|
|
101
|
+
demotedIds: string[];
|
|
102
|
+
};
|
|
103
|
+
sessionPauseTimedOut: {
|
|
104
|
+
sessionId: string;
|
|
105
|
+
pauseDuration: number;
|
|
106
|
+
date?: string;
|
|
107
|
+
session?: string;
|
|
108
|
+
};
|
|
109
|
+
sessionResumeBlocked: {
|
|
110
|
+
sessionId: string;
|
|
111
|
+
reason: string;
|
|
112
|
+
};
|
|
113
|
+
sessionResumeFailed: {
|
|
114
|
+
sessionId?: string;
|
|
115
|
+
reason: string;
|
|
116
|
+
};
|
|
117
|
+
/** 装配前判负载荷:剩余预算详情 + 给宿主的降级提示(建议放文件用 read_file 读) */
|
|
118
|
+
inputTooLarge: {
|
|
119
|
+
inputLength: number;
|
|
120
|
+
remainingTokens: number;
|
|
121
|
+
hint: string;
|
|
122
|
+
};
|
|
123
|
+
questionPending: AskQuestion[];
|
|
124
|
+
goalDriftDetected: {
|
|
125
|
+
sessionId: string;
|
|
126
|
+
mainGoal: string;
|
|
127
|
+
newGoal: string;
|
|
128
|
+
similarity: number;
|
|
129
|
+
level: 'same' | 'confirm' | 'drift';
|
|
130
|
+
constraints: string[];
|
|
131
|
+
/** 原名 goalVersion,仅载荷不承担校验 */
|
|
132
|
+
goalChangeSeq: number;
|
|
133
|
+
};
|
|
134
|
+
sessionPaused: {
|
|
135
|
+
reason: string;
|
|
136
|
+
source: string;
|
|
137
|
+
sessionId?: string;
|
|
138
|
+
};
|
|
139
|
+
sessionResumed: {
|
|
140
|
+
sessionId?: string;
|
|
141
|
+
};
|
|
142
|
+
sessionError: {
|
|
143
|
+
cause: string;
|
|
144
|
+
sessionId?: string;
|
|
145
|
+
};
|
|
146
|
+
sessionRecovered: {
|
|
147
|
+
sessionId?: string;
|
|
148
|
+
};
|
|
149
|
+
/** 会话标题更新载荷:会话 ID + 新标题 */
|
|
150
|
+
sessionTitleUpdated: {
|
|
151
|
+
sessionId: string;
|
|
152
|
+
title: string;
|
|
153
|
+
};
|
|
154
|
+
/** 轮次摘要生成完成载荷:本轮 roundId(溯源)+ 成功/失败(失败时宿主仍需兜底解锁) */
|
|
155
|
+
roundSummaryGenerated: {
|
|
156
|
+
roundId: string;
|
|
157
|
+
success: boolean;
|
|
158
|
+
};
|
|
59
159
|
}
|
|
60
|
-
/** 事件名联合类型 */
|
|
61
|
-
export type AgentEventName = keyof AgentEventMap;
|
|
62
160
|
/** 事件处理器类型 */
|
|
63
161
|
export type AgentEventHandler<T> = (event: T) => void;
|
|
64
162
|
/**
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
* 泛型参数 EventMap 约束了合法的事件名和对应的载荷类型,
|
|
68
|
-
* 调用方在编译期就能获得类型检查和自动补全。
|
|
163
|
+
* 类型安全事件发射器——泛型 EventMap 约束合法事件名与载荷类型,
|
|
164
|
+
* 调用方在编译期获得类型检查和自动补全。
|
|
69
165
|
*/
|
|
70
166
|
export declare class TypedEventEmitter<EventMap extends object> {
|
|
71
167
|
private readonly listeners;
|
|
72
|
-
/**
|
|
73
|
-
* 订阅事件
|
|
74
|
-
* @param event - 事件名
|
|
75
|
-
* @param handler - 事件处理器
|
|
76
|
-
*/
|
|
168
|
+
/** 订阅事件(同一 handler 引用加入 Set,天然避免重复监听) */
|
|
77
169
|
on<K extends keyof EventMap & string>(event: K, handler: (event: EventMap[K]) => void): void;
|
|
78
|
-
/**
|
|
79
|
-
* 取消订阅
|
|
80
|
-
* @param event - 事件名
|
|
81
|
-
* @param handler - 要移除的处理器(必须是同一个引用)
|
|
82
|
-
*/
|
|
170
|
+
/** 取消订阅(必须是与 on 相同的引用) */
|
|
83
171
|
off<K extends keyof EventMap & string>(event: K, handler: (event: EventMap[K]) => void): void;
|
|
84
|
-
/**
|
|
85
|
-
* 订阅事件(仅触发一次,触发后自动移除)
|
|
86
|
-
* @param event - 事件名
|
|
87
|
-
* @param handler - 事件处理器
|
|
88
|
-
*/
|
|
172
|
+
/** 一次性订阅:触发后自动移除,再转发给 handler(防泄漏) */
|
|
89
173
|
once<K extends keyof EventMap & string>(event: K, handler: (event: EventMap[K]) => void): void;
|
|
90
|
-
/**
|
|
91
|
-
* 发射事件
|
|
92
|
-
* @param event - 事件名
|
|
93
|
-
* @param payload - 事件载荷
|
|
94
|
-
*/
|
|
174
|
+
/** 发射事件;单处理器异常不阻断其余监听器 */
|
|
95
175
|
protected emit<K extends keyof EventMap & string>(event: K, payload: EventMap[K]): void;
|
|
96
|
-
/**
|
|
97
|
-
* 移除所有监听器(用于 close() 清理)
|
|
98
|
-
*/
|
|
176
|
+
/** 移除所有监听器(用于 close() 清理) */
|
|
99
177
|
protected removeAllListeners(): void;
|
|
100
178
|
}
|
|
101
179
|
//# sourceMappingURL=eventEmitter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventEmitter.d.ts","sourceRoot":"","sources":["../../src/utils/eventEmitter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"eventEmitter.d.ts","sourceRoot":"","sources":["../../src/utils/eventEmitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +1,57 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* 供 Agent 向宿主项目广播对话外事件(记忆变更、角色切换、衰减完成等)。
|
|
5
|
-
* 不依赖 Node.js EventEmitter,保持"零 native 依赖内核"约束。
|
|
6
|
-
*
|
|
7
|
-
* 使用方式:
|
|
8
|
-
* agent.on('memoryAdded', (e) => console.log(e.source, e.name));
|
|
9
|
-
* agent.off('memoryAdded', handler);
|
|
2
|
+
* 轻量类型事件发射器(零 native 依赖)——Agent 向宿主广播外层事件:
|
|
3
|
+
* agent.on('memoryAdded', (e) => ...);off 解绑。
|
|
10
4
|
*/
|
|
11
5
|
import { getLogger } from '../utils/loggerHolder.js';
|
|
12
6
|
import { toError } from '../utils/toError.js';
|
|
7
|
+
/** Agent 事件名常量(运行时真理源,与 AgentEventMap 键集一致) */
|
|
8
|
+
export const AGENT_EVENTS = {
|
|
9
|
+
memoryAdded: 'memoryAdded',
|
|
10
|
+
rolePackSwitched: 'rolePackSwitched',
|
|
11
|
+
memoryRecalled: 'memoryRecalled',
|
|
12
|
+
sessionForked: 'sessionForked',
|
|
13
|
+
projectSwitched: 'projectSwitched',
|
|
14
|
+
archiveFailed: 'archiveFailed',
|
|
15
|
+
contextTruncated: 'contextTruncated',
|
|
16
|
+
/** LLM 主动压缩完成(第二级压缩,与 contextTruncated 的内核自动截断区分) */
|
|
17
|
+
contextCompressed: 'contextCompressed',
|
|
18
|
+
configReloaded: 'configReloaded',
|
|
19
|
+
archiveModeChanged: 'archiveModeChanged',
|
|
20
|
+
rolePackSwitchLocked: 'rolePackSwitchLocked',
|
|
21
|
+
workProjectionGenerated: 'workProjectionGenerated',
|
|
22
|
+
dedupCompleted: 'dedupCompleted',
|
|
23
|
+
sessionPauseTimedOut: 'sessionPauseTimedOut',
|
|
24
|
+
sessionResumeBlocked: 'sessionResumeBlocked',
|
|
25
|
+
/** 订阅时宿主据此判断重要事件并 toast 提示 */
|
|
26
|
+
sessionResumeFailed: 'sessionResumeFailed',
|
|
27
|
+
/** 装配前判负(洞 3):触发输入过大,剩余预算无法支撑至少一轮正文——与软上限不同失败原因 */
|
|
28
|
+
inputTooLarge: 'inputTooLarge',
|
|
29
|
+
/** 回答中 LLM 调 ask_user 工具主动提问(唯一「提问后暂停」通道) */
|
|
30
|
+
questionPending: 'questionPending',
|
|
31
|
+
goalDriftDetected: 'goalDriftDetected',
|
|
32
|
+
sessionPaused: 'sessionPaused',
|
|
33
|
+
sessionResumed: 'sessionResumed',
|
|
34
|
+
sessionError: 'sessionError',
|
|
35
|
+
sessionRecovered: 'sessionRecovered',
|
|
36
|
+
/** 会话标题被 LLM 自动更新(SessionNamer 完成后触发,宿主据此刷新 UI) */
|
|
37
|
+
sessionTitleUpdated: 'sessionTitleUpdated',
|
|
38
|
+
/**
|
|
39
|
+
* 轮次摘要生成完成(round-summary fire-and-forget 后台任务收口信号)。
|
|
40
|
+
* 宿主据此解锁「问答闭环完整结束」的 UI 状态(删除/分叉按钮解禁)——
|
|
41
|
+
* 避免 done 后立即删除导致孤儿 round-summary(摘要还在生成就删了源)。
|
|
42
|
+
* 一次 chat() 只触发一次,载荷带 roundId 溯源。
|
|
43
|
+
*/
|
|
44
|
+
roundSummaryGenerated: 'roundSummaryGenerated',
|
|
45
|
+
};
|
|
46
|
+
/** 运行时校验用集合(由 AGENT_EVENTS 派生) */
|
|
47
|
+
export const AGENT_EVENT_SET = new Set(Object.values(AGENT_EVENTS));
|
|
13
48
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* 泛型参数 EventMap 约束了合法的事件名和对应的载荷类型,
|
|
17
|
-
* 调用方在编译期就能获得类型检查和自动补全。
|
|
49
|
+
* 类型安全事件发射器——泛型 EventMap 约束合法事件名与载荷类型,
|
|
50
|
+
* 调用方在编译期获得类型检查和自动补全。
|
|
18
51
|
*/
|
|
19
52
|
export class TypedEventEmitter {
|
|
20
53
|
listeners = new Map();
|
|
21
|
-
/**
|
|
22
|
-
* 订阅事件
|
|
23
|
-
* @param event - 事件名
|
|
24
|
-
* @param handler - 事件处理器
|
|
25
|
-
*/
|
|
54
|
+
/** 订阅事件(同一 handler 引用加入 Set,天然避免重复监听) */
|
|
26
55
|
on(event, handler) {
|
|
27
56
|
let set = this.listeners.get(event);
|
|
28
57
|
if (!set) {
|
|
@@ -31,19 +60,11 @@ export class TypedEventEmitter {
|
|
|
31
60
|
}
|
|
32
61
|
set.add(handler);
|
|
33
62
|
}
|
|
34
|
-
/**
|
|
35
|
-
* 取消订阅
|
|
36
|
-
* @param event - 事件名
|
|
37
|
-
* @param handler - 要移除的处理器(必须是同一个引用)
|
|
38
|
-
*/
|
|
63
|
+
/** 取消订阅(必须是与 on 相同的引用) */
|
|
39
64
|
off(event, handler) {
|
|
40
65
|
this.listeners.get(event)?.delete(handler);
|
|
41
66
|
}
|
|
42
|
-
/**
|
|
43
|
-
* 订阅事件(仅触发一次,触发后自动移除)
|
|
44
|
-
* @param event - 事件名
|
|
45
|
-
* @param handler - 事件处理器
|
|
46
|
-
*/
|
|
67
|
+
/** 一次性订阅:触发后自动移除,再转发给 handler(防泄漏) */
|
|
47
68
|
once(event, handler) {
|
|
48
69
|
const wrapper = ((data) => {
|
|
49
70
|
this.off(event, wrapper);
|
|
@@ -51,11 +72,7 @@ export class TypedEventEmitter {
|
|
|
51
72
|
});
|
|
52
73
|
this.on(event, wrapper);
|
|
53
74
|
}
|
|
54
|
-
/**
|
|
55
|
-
* 发射事件
|
|
56
|
-
* @param event - 事件名
|
|
57
|
-
* @param payload - 事件载荷
|
|
58
|
-
*/
|
|
75
|
+
/** 发射事件;单处理器异常不阻断其余监听器 */
|
|
59
76
|
emit(event, payload) {
|
|
60
77
|
const set = this.listeners.get(event);
|
|
61
78
|
if (!set || set.size === 0)
|
|
@@ -69,9 +86,7 @@ export class TypedEventEmitter {
|
|
|
69
86
|
}
|
|
70
87
|
}
|
|
71
88
|
}
|
|
72
|
-
/**
|
|
73
|
-
* 移除所有监听器(用于 close() 清理)
|
|
74
|
-
*/
|
|
89
|
+
/** 移除所有监听器(用于 close() 清理) */
|
|
75
90
|
removeAllListeners() {
|
|
76
91
|
this.listeners.clear();
|
|
77
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventEmitter.js","sourceRoot":"","sources":["../../src/utils/eventEmitter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"eventEmitter.js","sourceRoot":"","sources":["../../src/utils/eventEmitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type Stats } from 'node:fs';
|
|
2
|
+
/**
|
|
3
|
+
* 内容文件读取长度上限(字符)——防超大文件撑爆上下文
|
|
4
|
+
*
|
|
5
|
+
* SSOT 说明:角色包侧原以 `MAX_CONTENT_FILE_LEN` 使用本值;提升为共享原语后,
|
|
6
|
+
* 全局技能读取 L3 资源与 validateFile 也获得同等级保护。
|
|
7
|
+
*/
|
|
8
|
+
export declare const DEFAULT_MAX_CONTENT_LEN = 200000;
|
|
9
|
+
/**
|
|
10
|
+
* 读取文本文件内容,超限截断;失败返回 null(不告警,由调用方决定语义)。
|
|
11
|
+
*
|
|
12
|
+
* @param filePath 文件绝对路径
|
|
13
|
+
* @param maxLen 最大长度(字符),超限截断
|
|
14
|
+
*/
|
|
15
|
+
export declare function readFileCapped(filePath: string, maxLen?: number): Promise<string | null>;
|
|
16
|
+
/** 安全的 stat 同步调用:不可访问返回 null,不抛异常(返回完整 `Stats`,调用方按需取字段) */
|
|
17
|
+
export declare function statSyncSafe(path: string): Stats | null;
|
|
18
|
+
/** 安全的存在性同步调用:不可访问按不存在处理,不抛异常(实现即 `existsSync`,名字与之一致) */
|
|
19
|
+
export declare function existsSyncSafe(path: string): boolean;
|
|
20
|
+
//# sourceMappingURL=fileSafe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileSafe.d.ts","sourceRoot":"","sources":["../../src/utils/fileSafe.ts"],"names":[],"mappings":"AAcA,OAAO,EAAwB,KAAK,KAAK,EAAE,MAAM,SAAS,CAAC;AAE3D;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,SAAU,CAAC;AAE/C;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,MAAgC,GACvC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxB;AAED,4DAA4D;AAC5D,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAMvD;AAED,0DAA0D;AAC1D,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMpD"}
|