@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
|
@@ -0,0 +1,629 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 问答闭环(Round)存储接口 —— Memora 会话管理的 SSOT
|
|
3
|
+
*
|
|
4
|
+
* 设计理念:
|
|
5
|
+
* - 问答闭环(Round)是独立的、全局唯一的实体
|
|
6
|
+
* - 会话(Session)只是问答闭环 ID 的有序列表
|
|
7
|
+
* - 分叉只是复制 ID 列表(指针复制),不复制数据
|
|
8
|
+
*
|
|
9
|
+
* 核心优势:
|
|
10
|
+
* 1. 保持记忆系统的真理源设定(每个 roundId 对应唯一摘要)
|
|
11
|
+
* 2. 保持会话的独立性(所有会话在存储层平等)
|
|
12
|
+
* 3. 简洁的分叉实现(只需操作 ID 列表)
|
|
13
|
+
*/
|
|
14
|
+
import type { MessageRole } from '../memory/types.js';
|
|
15
|
+
import type { AbortStopReason, LlmErrorCategory } from '../agent/types.js';
|
|
16
|
+
/**
|
|
17
|
+
* 问答闭环消息:与 LLM Message 兼容,包含持久化所需的时间戳信息
|
|
18
|
+
*
|
|
19
|
+
* 对齐现有结构:
|
|
20
|
+
* - Message.role('user' | 'assistant' | 'tool' | 'system')
|
|
21
|
+
* - Message.content(消息内容)
|
|
22
|
+
* - Message.roundId(轮次标识,此处由 Round 本身承载)
|
|
23
|
+
*/
|
|
24
|
+
export interface RoundMessage {
|
|
25
|
+
/** 消息唯一标识(格式:msg-{uuid}) */
|
|
26
|
+
id: string;
|
|
27
|
+
/** 消息角色 */
|
|
28
|
+
role: MessageRole;
|
|
29
|
+
/** 消息内容 */
|
|
30
|
+
content: string;
|
|
31
|
+
/** 时间戳(ISO 8601,持久化用) */
|
|
32
|
+
timestamp: string;
|
|
33
|
+
/** 消息来源名称(可选,对齐 LLM Message.name) */
|
|
34
|
+
name?: string;
|
|
35
|
+
/** Token 用量统计(可选) */
|
|
36
|
+
tokenUsage?: {
|
|
37
|
+
/** 输入 token 数 */
|
|
38
|
+
input: number;
|
|
39
|
+
/** 输出 token 数 */
|
|
40
|
+
output: number;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 交互输入类型(问答闭环内交互输入归属)
|
|
45
|
+
*
|
|
46
|
+
* 一次外部输入(Trigger)= 一个问答闭环。执行中的三类用户交互输入
|
|
47
|
+
* (LLM 主动提问回答 / 流式中补充 / 暂停后续跑补充)均归属当前问答闭环,
|
|
48
|
+
* 不分裂新轮——类型只影响 UI 折叠块文案,不参与 round 归属判定。
|
|
49
|
+
*
|
|
50
|
+
* - question-answer:LLM 主动提问(ask_user 工具)的用户回答(宿主 handleResume 路由)
|
|
51
|
+
* - supplement:用户中途补充(插话 interject / 暂停后主输入框补充)
|
|
52
|
+
* - timeout:ask_user 提问超时未答(宿主计时超时 → cancelAsk 注入
|
|
53
|
+
* [ASK_ABORTED] 占位 + resumeExecution('timeout') 自动续跑,LLM 自决;记录带
|
|
54
|
+
* question/options 供重放渲染「问 + 未回答」行)
|
|
55
|
+
*/
|
|
56
|
+
export type InteractiveInputKind = 'question-answer' | 'supplement' | 'timeout';
|
|
57
|
+
/**
|
|
58
|
+
* 问答闭环内交互输入(Round.interactiveInputs 元素)
|
|
59
|
+
*
|
|
60
|
+
* 附加在闭环节点轮上,按时间序追加;重放时宿主据此渲染折叠的「用户提问/用户补充」块。
|
|
61
|
+
*/
|
|
62
|
+
export interface RoundInteractiveInput extends RoundMessage {
|
|
63
|
+
/** 唯一标识(格式:msg-{roundId}-input-{序号}) */
|
|
64
|
+
id: string;
|
|
65
|
+
/** 恒为 user(与 RoundMessage.role 对齐,供统一迭代) */
|
|
66
|
+
role: 'user';
|
|
67
|
+
/** 交互输入类型(UI 折叠块文案与路由语义,不参与归属判定) */
|
|
68
|
+
kind: InteractiveInputKind;
|
|
69
|
+
/**
|
|
70
|
+
* LLM 提问原文(仅 question-answer 携带)
|
|
71
|
+
*
|
|
72
|
+
* 该回答所对的 ask_user 提问文本——回答落盘时随交互输入一并持久化,
|
|
73
|
+
* 供回放还原「当时 LLM 问了什么 + 用户为什么这么选」上下文。
|
|
74
|
+
* supplement / 旧数据(无此字段)为缺省,回放退化为现状(仅「你答」内联行)。
|
|
75
|
+
*/
|
|
76
|
+
question?: string;
|
|
77
|
+
/** LLM 提问候选选项(question-answer 且 LLM 提供时;静态文本,供回放展示) */
|
|
78
|
+
options?: string[];
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* 问答闭环状态机
|
|
82
|
+
*
|
|
83
|
+
* 状态流转(**实测口径**):
|
|
84
|
+
* - pending → complete:AI 回复生成完成(真实路径)
|
|
85
|
+
* - pending → interrupted:被用户中断/运行失败(appendInterrupted 收场,不伪 complete)
|
|
86
|
+
* - error:**预留态,当前无写点**(明示收起)
|
|
87
|
+
*
|
|
88
|
+
* ⚠️ 关于 `interrupted`(防「假性 complete 吞现场」):
|
|
89
|
+
* - **中断/失败轮落盘为 `interrupted`,不标 `complete`**。中断轮若伪装成正常完成轮,
|
|
90
|
+
* 重放时会因缺 assistant 正文块丢失过程(思考/工具/中断标记)。interrupted 轮保留
|
|
91
|
+
* `processEvents` 原始现场、状态诚实区分。
|
|
92
|
+
* - **实现落点**:`seed/orchestrator.act()`(中断 aborted / 失败 failed 收口到同一尾处理)
|
|
93
|
+
* → `history.appendInterrupted` 写 `status:'interrupted'`。
|
|
94
|
+
* - **打捞关系**:`listInterruptedRecent`(内核 + 宿主两端)打捞条件仍为 `pending || error`,
|
|
95
|
+
* **不含 interrupted**——因为运行期收场已即时标 interrupted 且 refCount 0→1,不再符合
|
|
96
|
+
* `refCount===0 && pending` 的崩溃孤儿条件;interrupted 轮是"已收场的停 turn",不属崩溃残留。
|
|
97
|
+
*
|
|
98
|
+
* ⚠️ 关于 `error`(防未来误判):
|
|
99
|
+
* - **不存在** `pending → error` 的流转——全仓 grep 零写点(生产代码);运行时失败走
|
|
100
|
+
* `yield { type:'error' }` 事件流上报,**不翻 Round 状态机**,并与中断并轨为 `interrupted`,
|
|
101
|
+
* 因为「中断/停顿」对用户是可理解的、而「出错」目前无独立产品语义(并入 interrupted)。
|
|
102
|
+
* - **它不是死代码**:`listInterruptedRecent` 打捞条件为 `pending || error`,error 是组成。
|
|
103
|
+
* - **纪律**:勿因「grep 到零写点」而删此成员或改窄打捞条件;若未来出现「整轮失败且
|
|
104
|
+
* 需与中断区分展示」的真实需求,再补写点,签名无需变更。
|
|
105
|
+
*/
|
|
106
|
+
export type RoundStatus = 'pending' | 'complete' | 'error' | 'interrupted';
|
|
107
|
+
/**
|
|
108
|
+
* 轮是否「已收场」(终态)——**判据单一收口点(SSOT)**。
|
|
109
|
+
*
|
|
110
|
+
* - `complete`:正常问答闭环完成(appendAssistant 收场)。
|
|
111
|
+
* - `interrupted`:中断/失败收场(appendInterrupted 收场)。语义定案——中断轮 = 等同用户点「停止」的
|
|
112
|
+
* 正常 turn:**可删、入会话 roundIds、作后续上下文**,不是半成品草稿/孤儿。
|
|
113
|
+
*
|
|
114
|
+
* **为什么必须收口**:v3.0.0 把中断轮从「伪 complete」改为 `interrupted` 后,凡以
|
|
115
|
+
* `status === 'complete'` 判「该轮是否已闭合」的读取方都会被静默改行为——中断轮的
|
|
116
|
+
* assistantMessage 会被排除出会话视图与 LLM 历史(`ISessionStore.loadMessages` 是
|
|
117
|
+
* `restoreHistory` 的唯一上游),违背上述定案。故凡「是否计入会话视图 / LLM 历史」
|
|
118
|
+
* 「是否已登记会话引用」的判据**一律调用本函数**,禁止各处自写 `status === 'complete'`。
|
|
119
|
+
*
|
|
120
|
+
* ⚠️ **勿与渲染分流混用**:`status === 'interrupted'` 只用于「中断轮独立平铺渲染 + 中断标记」,
|
|
121
|
+
* 回答的是「怎么画」,不是「是否已收场」。两者常在同一函数相邻出现,勿互替。
|
|
122
|
+
*
|
|
123
|
+
* @param status - 轮状态
|
|
124
|
+
* @returns 该轮是否已进入终态(可作后续上下文)
|
|
125
|
+
*/
|
|
126
|
+
export declare function isRoundSettled(status: RoundStatus): boolean;
|
|
127
|
+
/**
|
|
128
|
+
* 思考阶段值(与 agent ThinkingPhase 同值的本地字面量,解耦依赖方向)
|
|
129
|
+
*
|
|
130
|
+
* 阶段与 Agent turn 对应:assembling=上下文装配(对齐 assembleContext 命名)/
|
|
131
|
+
* llm_calling=调用模型 / processing=处理 / archiving=归档。枚举只保留有生产发射点的活值。
|
|
132
|
+
*/
|
|
133
|
+
export type ProcessThinkingPhase = 'assembling' | 'processing' | 'archiving' | 'llm_calling';
|
|
134
|
+
/** meta 事件载荷:该轮回答身份(角色/模型均为显示名,重放不依赖 ProviderStore/RolePackManager)
|
|
135
|
+
* + 关键调用参数包(取证用:真机异常轮自带参数面,免截图/口问即可离线破案)。参数面四字段均选填(旧数据缺省)。 */
|
|
136
|
+
export interface ProcessMetaPayload {
|
|
137
|
+
/** 角色显示名(displayName ?? name) */
|
|
138
|
+
role: string;
|
|
139
|
+
/** 模型显示名(displayName ?? name) */
|
|
140
|
+
llm: string;
|
|
141
|
+
/** 上下文窗口(token,`resolveContextWindow` 生效值);旧数据缺省 */
|
|
142
|
+
contextWindow?: number;
|
|
143
|
+
/** 输出上限(token,本轮**实际生效**的请求体 max_tokens)—— 由内核 buildChatOptions 裁决
|
|
144
|
+
* (per-LLM 配置与角色包 act.outputLimit 取更小值、单侧缺位取另一侧);undefined = 未传,回服务端默认。
|
|
145
|
+
* ⚠️ 旧数据语义为用户配置值(配置面快照),与生效值可能不等——以本字段口径重读历史数据时注意 */
|
|
146
|
+
maxTokens?: number;
|
|
147
|
+
/** 随请求发送的 reasoning_effort('low');未发送缺省——派生自策略键 `multiStepReasoning='manual'`
|
|
148
|
+
* (流首**配置面**快照:截断换策略的运行时置入不在本字段,以 `truncationRecoveryCount` 佐证) */
|
|
149
|
+
reasoningEffort?: string;
|
|
150
|
+
/** Provider 适配器形态(当前唯一形态 'openai-compatible';前向字段——异构适配器落地时区分协议语义) */
|
|
151
|
+
providerKind?: string;
|
|
152
|
+
}
|
|
153
|
+
/** metrics 事件载荷:每轮执行汇总(流结束后写一条) */
|
|
154
|
+
export interface ProcessMetricsPayload {
|
|
155
|
+
/** 本轮耗时(毫秒) */
|
|
156
|
+
durationMs: number;
|
|
157
|
+
/** 输入 token 用量(估算口径:每次 LLM 调用请求消息 `estimateTokens` 的**全程累计**,非服务端 usage 实测值;实测值在 actualInputTokens,宿主取证面未消费) */
|
|
158
|
+
tokenIn: number;
|
|
159
|
+
/** 输出 token 用量(估算口径:各次 LLM 调用**正文**(fullContent)估算的全程累计——**不含 thinking、不含工具轮叙述**(二者不拼入 fullContent,见 llmCaller),推理模型下远小于真实输出预算消耗,勿据它判断「截断是否该发生」;判断输出压力用 maxTokens(生效值)+ truncationRecoveryCount + thinkingChars 佐证) */
|
|
160
|
+
tokenOut: number;
|
|
161
|
+
/** 工具调用失败次数 */
|
|
162
|
+
toolFailureCount: number;
|
|
163
|
+
/**
|
|
164
|
+
* 本轮是否正常收尾(false = 中断/暂停)。
|
|
165
|
+
* 语义是「这段流程跑完了没有」,不是「任务达成了没有」——
|
|
166
|
+
* 任务达成与否由 unparsedToolIntentCount / toolFailureCount 等信号承载,勿混淆。
|
|
167
|
+
*/
|
|
168
|
+
success: boolean;
|
|
169
|
+
/**
|
|
170
|
+
* 本轮未解析文本工具意图数(选填,旧数据缺省)
|
|
171
|
+
* 「想调用工具却未走原生协议」的诚实信号;>0 时宿主不应显示为成功收尾。
|
|
172
|
+
*/
|
|
173
|
+
unparsedToolIntentCount?: number;
|
|
174
|
+
/**
|
|
175
|
+
* 本轮空响应兜底命中数(选填,旧数据缺省)
|
|
176
|
+
* >0 = 末段正文是兜底文案而非模型产出。与 unparsedToolIntentCount 同族「诚实信号」:
|
|
177
|
+
* 不改 success(其语义是「流程跑完没有」,空响应轮流程正常跑完),展示层据此
|
|
178
|
+
* 合成「不算成功收尾」——避免把「流程未完」与「产出不合格」两种语义压进一个布尔。
|
|
179
|
+
*/
|
|
180
|
+
emptyResponseCount?: number;
|
|
181
|
+
/**
|
|
182
|
+
* 本轮截断救回次数(选填,旧数据缺省)
|
|
183
|
+
* >0 = 本轮曾出现截断型空响应(思考吃满输出预算)但被换策略重试救回,正文是真实模型产出。
|
|
184
|
+
* 与 emptyResponseCount 互补(后者 = 最终仍空的失败收场):救回轮不算失败,但「曾发生截断」
|
|
185
|
+
* 只在本字段留痕——真机验证换策略重试效力的观测面(无它则救回成功轮不可辨识)。
|
|
186
|
+
*/
|
|
187
|
+
truncationRecoveryCount?: number;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* 过程事件(过程轨最小信息,Round 内顺序存储)
|
|
191
|
+
*
|
|
192
|
+
* 由宿主在 consumeFlow 旁路从 AgentChunk / 主机事件派生,流结束时附到 Round.processEvents
|
|
193
|
+
* 一次性落盘;重放时按 seq 有序重建 UI(运行时与重放共用同一渲染数据源)。
|
|
194
|
+
*
|
|
195
|
+
* 事件类型全量:
|
|
196
|
+
* - meta:每轮首条,该轮回答身份
|
|
197
|
+
* - thinking / memory_added / tool_start / tool_result:过程明细
|
|
198
|
+
* - self_review / text_self_review:自审查过程与输出
|
|
199
|
+
* - aborted:中断标记
|
|
200
|
+
* - metrics:每轮末条,执行汇总
|
|
201
|
+
*/
|
|
202
|
+
export type ProcessEvent = {
|
|
203
|
+
type: 'meta';
|
|
204
|
+
seq: number;
|
|
205
|
+
ts: string;
|
|
206
|
+
payload: ProcessMetaPayload;
|
|
207
|
+
} | {
|
|
208
|
+
type: 'thinking';
|
|
209
|
+
seq: number;
|
|
210
|
+
ts: string;
|
|
211
|
+
payload: {
|
|
212
|
+
phase: ProcessThinkingPhase;
|
|
213
|
+
};
|
|
214
|
+
} | {
|
|
215
|
+
type: 'memory_added';
|
|
216
|
+
seq: number;
|
|
217
|
+
ts: string;
|
|
218
|
+
payload: {
|
|
219
|
+
id: string;
|
|
220
|
+
name: string;
|
|
221
|
+
source: string;
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* 工具调用开始。payload.stepIndex = 所属 step 的轮内序号(内核 loop 单点打标、与 thought.stepIndex
|
|
226
|
+
* 同构,缺省 = 无归属);tool_result 不重复携带——经 payload.toolCallId 归属本条(事实单点)。
|
|
227
|
+
*/
|
|
228
|
+
| {
|
|
229
|
+
type: 'tool_start';
|
|
230
|
+
seq: number;
|
|
231
|
+
ts: string;
|
|
232
|
+
payload: {
|
|
233
|
+
toolCallId: string;
|
|
234
|
+
name: string;
|
|
235
|
+
args?: string;
|
|
236
|
+
stepIndex?: number;
|
|
237
|
+
};
|
|
238
|
+
} | {
|
|
239
|
+
type: 'tool_result';
|
|
240
|
+
seq: number;
|
|
241
|
+
ts: string;
|
|
242
|
+
payload: {
|
|
243
|
+
toolCallId: string;
|
|
244
|
+
name: string;
|
|
245
|
+
ok: boolean;
|
|
246
|
+
summary?: string;
|
|
247
|
+
/** 策略拦截:ok=false + blocked=true = 被确定性拒绝未执行(如搜索达硬上限) */
|
|
248
|
+
blocked?: boolean;
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* 自审查(单次终审):无有效载荷。
|
|
253
|
+
* 已落盘的历史数据可能仍带 `round`(该值恒为 1,从未承载过 >1),
|
|
254
|
+
* 反序列化后作为多余键忽略,不影响读取,无需迁移。
|
|
255
|
+
*/
|
|
256
|
+
| {
|
|
257
|
+
type: 'self_review';
|
|
258
|
+
seq: number;
|
|
259
|
+
ts: string;
|
|
260
|
+
payload: Record<string, never>;
|
|
261
|
+
} | {
|
|
262
|
+
type: 'text_self_review';
|
|
263
|
+
seq: number;
|
|
264
|
+
ts: string;
|
|
265
|
+
payload: {
|
|
266
|
+
content: string;
|
|
267
|
+
};
|
|
268
|
+
} | {
|
|
269
|
+
type: 'narrate';
|
|
270
|
+
seq: number;
|
|
271
|
+
ts: string;
|
|
272
|
+
payload: {
|
|
273
|
+
content: string;
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* 模型思考内容流:reasoning_content 增量累积结果。
|
|
278
|
+
* 仅供重放重建「思考」折叠块;展示轨承载,正文轨/记忆轨不消费(CoT 防护)。命名用 thought——
|
|
279
|
+
* 区别于上方既有 `type:'thinking'`(phase 相位事件)与多模型路由任务 `TaskType='reasoning'`,
|
|
280
|
+
* 三者语义分离,避免同 union 判别式重复与跨层双义。
|
|
281
|
+
* payload.content 超长由宿主落盘前截断(MAX_THOUGHT_PAYLOAD_LENGTH,SSOT 常量单点定义于 chatPanel)。
|
|
282
|
+
* payload.stepIndex = 本条思考所属 step(一次 LLM 调用 + 可选工具执行)的轮内序号
|
|
283
|
+
* (内核 loop 打标、随内容同源落盘),「一个 step 一个思考折叠块」的归桶键;
|
|
284
|
+
* 缺省(旧数据)由展示层回落整轮单桶。
|
|
285
|
+
*/
|
|
286
|
+
| {
|
|
287
|
+
type: 'thought';
|
|
288
|
+
seq: number;
|
|
289
|
+
ts: string;
|
|
290
|
+
payload: {
|
|
291
|
+
content: string;
|
|
292
|
+
stepIndex?: number;
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* 任务项级折叠边界:active 任务项推进时由 loop 产,
|
|
297
|
+
* 宿主落盘此事件把后续 narrate/tool/问答归到对应任务项分组。无任务表不产。
|
|
298
|
+
*/
|
|
299
|
+
| {
|
|
300
|
+
type: 'plan_item_boundary';
|
|
301
|
+
seq: number;
|
|
302
|
+
ts: string;
|
|
303
|
+
payload: {
|
|
304
|
+
planItemId?: string;
|
|
305
|
+
title?: string;
|
|
306
|
+
};
|
|
307
|
+
} | {
|
|
308
|
+
type: 'aborted';
|
|
309
|
+
seq: number;
|
|
310
|
+
ts: string;
|
|
311
|
+
payload: {
|
|
312
|
+
reason: string;
|
|
313
|
+
stopReason?: AbortStopReason;
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* 流式错误(重放可见性):失败轮在**实时流**里已有 `AgentChunk.error`(宿主据此即时弹
|
|
318
|
+
* 提示条),但该 chunk **不落 processEvents** → 回看历史时原因丢失、只剩 generic「对话已中断」,
|
|
319
|
+
* 用户无法回答「这轮为什么没答完」。本变体把 error 落进重放轨,宿主桥接点 =
|
|
320
|
+
* `chatPanel.consumeFlow` 的 `error` 分支。
|
|
321
|
+
*
|
|
322
|
+
* 与 `aborted` 的分工(**禁互相承载**,见 `agent/types.ts` 的 `AbortStopReason` 注释):`aborted`
|
|
323
|
+
* 由 AbortSignal 触因产生(用户停止 / 锁超时),答「谁让它停的」;本变体答「出了什么错」。
|
|
324
|
+
* 二者在 failed 路径互斥(`signal.aborted === false` 才抛错),故不构成同轮双写。
|
|
325
|
+
* `category` 与 `AgentChunk.error.category` **同源**(`LlmErrorCategory`)——展示面文案映射共用一份。
|
|
326
|
+
*/
|
|
327
|
+
| {
|
|
328
|
+
type: 'error';
|
|
329
|
+
seq: number;
|
|
330
|
+
ts: string;
|
|
331
|
+
payload: {
|
|
332
|
+
message: string;
|
|
333
|
+
category?: LlmErrorCategory;
|
|
334
|
+
};
|
|
335
|
+
} | {
|
|
336
|
+
type: 'metrics';
|
|
337
|
+
seq: number;
|
|
338
|
+
ts: string;
|
|
339
|
+
payload: ProcessMetricsPayload;
|
|
340
|
+
};
|
|
341
|
+
/**
|
|
342
|
+
* 裁决证据事件(悬案取证轨,Round.evidence 元素)
|
|
343
|
+
*
|
|
344
|
+
* 定位:给「带伤悬案」提供跨会话可回溯的个案证据(回显命中 = 模型规避还是防重误拦、
|
|
345
|
+
* 空响应是否偏爱会议轮),消费方是人工/抽样裁决,不是 UI 重放——
|
|
346
|
+
* 故不进 processEvents(宿主 UI 过程轨),由内核单点追加到在途 Round,
|
|
347
|
+
* 宿主整对象 JSON 持久化天然携带。
|
|
348
|
+
*
|
|
349
|
+
* 「会议轮」操作化判据(唯一实现在 loop 写点 isMeetingRound):
|
|
350
|
+
* 任务表 active 任务项声明 rolePack(= 会议逐项切换生效中)。
|
|
351
|
+
*/
|
|
352
|
+
export type RoundEvidenceEvent = {
|
|
353
|
+
/** LLM 空响应兜底命中(200 但无文本无工具调用) */
|
|
354
|
+
type: 'empty_response';
|
|
355
|
+
/** 事件时刻(ISO 8601) */
|
|
356
|
+
ts: string;
|
|
357
|
+
/** 事件时刻是否会议轮(判据见类型注释) */
|
|
358
|
+
meetingRound: boolean;
|
|
359
|
+
payload: {
|
|
360
|
+
/** 轮内第几次 LLM 迭代(定位空响应发生在闭环什么位置) */
|
|
361
|
+
iteration: number;
|
|
362
|
+
/**
|
|
363
|
+
* 末次 chat 尝试回传的 finish_reason(诊断分型证据):'length' = 输出预算截断
|
|
364
|
+
* (截断型,思考/生成吃满上限);中转不回传则缺省 = 按瞬态型降级裁决。
|
|
365
|
+
* 开放 string(LLM 服务端枚举可扩,消费侧只认 'length',其余按瞬态型)
|
|
366
|
+
*/
|
|
367
|
+
finishReason?: string;
|
|
368
|
+
/** 末次 chat 尝试的 thinking 字符数(reasoning_content 累计;无思考模型恒 0) */
|
|
369
|
+
thinkingChars: number;
|
|
370
|
+
/** 空响应结论前的 chat 尝试总数(1 = 首试即空;含空响应重试,重试属同一步内多次尝试) */
|
|
371
|
+
attempts: number;
|
|
372
|
+
};
|
|
373
|
+
} | {
|
|
374
|
+
/** read_file 台账替身回显命中(摘要顶替整读,防重拦截) */
|
|
375
|
+
type: 'ledger_stub_echo';
|
|
376
|
+
/** 事件时刻(ISO 8601) */
|
|
377
|
+
ts: string;
|
|
378
|
+
/** 事件时刻是否会议轮(判据见类型注释) */
|
|
379
|
+
meetingRound: boolean;
|
|
380
|
+
payload: {
|
|
381
|
+
/** 被读文件路径(去重主体规范化前的原样路径) */
|
|
382
|
+
path: string;
|
|
383
|
+
/** 该文件已覆盖区间(裁决「误拦合法重读」vs「拦下规避性重读」的关键证据) */
|
|
384
|
+
coverage: {
|
|
385
|
+
coverStart: number;
|
|
386
|
+
coverEnd: number;
|
|
387
|
+
totalLines: number;
|
|
388
|
+
};
|
|
389
|
+
/** 本次请求区间(offset/limit 缺省语义与 read_file handler 一致) */
|
|
390
|
+
request: {
|
|
391
|
+
offset?: number;
|
|
392
|
+
limit?: number;
|
|
393
|
+
};
|
|
394
|
+
};
|
|
395
|
+
} | {
|
|
396
|
+
/** read_dedup 护栏硬拦命中(同主体重复获取且结果仍在上下文;L2 精确判重兜底观测) */
|
|
397
|
+
type: 'read_dedup_block';
|
|
398
|
+
/** 事件时刻(ISO 8601) */
|
|
399
|
+
ts: string;
|
|
400
|
+
/** 事件时刻是否会议轮(判据见类型注释) */
|
|
401
|
+
meetingRound: boolean;
|
|
402
|
+
payload: {
|
|
403
|
+
/** 被拦的工具名(read_file / list_dir / web_search / web_fetch / trace_summary / search_memories) */
|
|
404
|
+
toolName: string;
|
|
405
|
+
/**
|
|
406
|
+
* 去重主体字段(存在才带):定位 + read_file 区间,逐案裁决用。
|
|
407
|
+
*
|
|
408
|
+
* 字段形状真源 = **生产侧** `DedupSubject`(agent 层 toolResultCache)——本层**不镜像其清单**:
|
|
409
|
+
* `memory → agent` 类型禁向(见 `backend_layers_rules.md`)使本层无法 import 该类型,故以开放式
|
|
410
|
+
* 索引签名承载,由 loop 侧整体 spread 透传。`DedupSubject` 增字段随透传自动落盘,本层零同步。
|
|
411
|
+
*
|
|
412
|
+
* 零同步的两条代价(本层边界,改动上述透传写法时须一并考虑):
|
|
413
|
+
* - **键名拼写无编译保护**:索引签名接受任意 string 键,拼错(如 `toolname`)仍编译通过,
|
|
414
|
+
* 落盘静默少一个字段;故消费侧按键名取值时须以生产侧 `DedupSubject` 为准。
|
|
415
|
+
* - **透传 spread 顺序**:生产侧写法为 `{ toolName, ...subject }`,spread 在后——若 `DedupSubject`
|
|
416
|
+
* 将来新增 `toolName` 字段,会**静默覆盖**这里的 `toolName`;增该字段时须同步调整透传顺序。
|
|
417
|
+
*/
|
|
418
|
+
[dedupField: string]: string | number | undefined;
|
|
419
|
+
};
|
|
420
|
+
};
|
|
421
|
+
/**
|
|
422
|
+
* 问答闭环(Round)
|
|
423
|
+
*
|
|
424
|
+
* 设计约束:
|
|
425
|
+
* 1. 全局唯一 ID:一个 roundId 在物理存储中只对应一个问答闭环
|
|
426
|
+
* 2. 包含一轮完整的 User + AI 对话
|
|
427
|
+
* 3. 独立于会话存储,可被多个会话引用(分叉场景)
|
|
428
|
+
* 4. Append-only 设计:完成后不可修改,如需"修改"则创建新 Round
|
|
429
|
+
*/
|
|
430
|
+
export interface Round {
|
|
431
|
+
/**
|
|
432
|
+
* 全局唯一 ID(格式:round-{uuid})
|
|
433
|
+
*
|
|
434
|
+
* 唯一性保证:
|
|
435
|
+
* - 物理存储层唯一标识
|
|
436
|
+
* - 记忆溯源的唯一锚点(Memory.roundId 指向此字段)
|
|
437
|
+
* - 分叉操作的唯一引用
|
|
438
|
+
*/
|
|
439
|
+
id: string;
|
|
440
|
+
/** 用户消息 */
|
|
441
|
+
userMessage: RoundMessage;
|
|
442
|
+
/** AI 消息(pending 状态时可能为空) */
|
|
443
|
+
assistantMessage?: RoundMessage;
|
|
444
|
+
/**
|
|
445
|
+
* 问答闭环内交互输入
|
|
446
|
+
*
|
|
447
|
+
* LLM 主动提问回答 / 用户中途补充(插话 / 暂停续跑输入)按时间序追加于此处,
|
|
448
|
+
* 不因交互输入分裂出新问答闭环。assistantMessage 恒为闭环节点的最终回答;
|
|
449
|
+
* 此数组仅承载用户侧交互输入,供重放渲染折叠的「用户提问 / 用户补充」块。
|
|
450
|
+
*/
|
|
451
|
+
interactiveInputs?: RoundInteractiveInput[];
|
|
452
|
+
/**
|
|
453
|
+
* 裁决证据(悬案取证轨)
|
|
454
|
+
*
|
|
455
|
+
* 空响应兜底 / 台账替身回显等「需事后裁决」的个案证据按时间序追加于此,
|
|
456
|
+
* 供跨会话人工/抽样裁决(消费方非 UI 重放,不进 processEvents)。
|
|
457
|
+
* 随 Round 整对象持久化;无证据的轮无此字段(零冗余)。
|
|
458
|
+
*/
|
|
459
|
+
evidence?: RoundEvidenceEvent[];
|
|
460
|
+
/**
|
|
461
|
+
* 问答闭环内多段 assistant
|
|
462
|
+
*
|
|
463
|
+
* 闭环节点跨暂停-续跑时,前序 assistant 段(如主动提问、中断半截)
|
|
464
|
+
* 入此数组,assistantMessage 恒为末段(最终回答)。普通单段问答轮无此字段
|
|
465
|
+
* (零冗余:仅在 appendAssistant 重写已存在 assistantMessage 时产生)。
|
|
466
|
+
*/
|
|
467
|
+
assistantLog?: RoundMessage[];
|
|
468
|
+
/** 问答闭环状态 */
|
|
469
|
+
status: RoundStatus;
|
|
470
|
+
/** 创建时间(ISO 8601) */
|
|
471
|
+
createdAt: string;
|
|
472
|
+
/** 完成时间(ISO 8601,仅 complete 状态有值) */
|
|
473
|
+
completedAt?: string;
|
|
474
|
+
/**
|
|
475
|
+
* 引用计数(被多少个会话引用)
|
|
476
|
+
*
|
|
477
|
+
* 用途:
|
|
478
|
+
* - 分叉时增加引用(新会话引用同一个 Round)
|
|
479
|
+
* - 删除会话时减少引用
|
|
480
|
+
* - 引用计数为 0 时可被 GC 清理
|
|
481
|
+
*/
|
|
482
|
+
refCount: number;
|
|
483
|
+
/**
|
|
484
|
+
* 过程事件(每轮 UI 状态重建真相源,可选)
|
|
485
|
+
*
|
|
486
|
+
* 与 assistantMessage 同在闭环完成时刻定型(Write-once),存储于同一 Round 文件——
|
|
487
|
+
* 删 round 即删事件、分叉即共享、截断即覆盖(v1.5 单文件内聚,见
|
|
488
|
+
* process-event-log-replay-design.md §3.4)。缺省仅因 pending/error 轮无过程数据。
|
|
489
|
+
*/
|
|
490
|
+
processEvents?: ProcessEvent[];
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* 问答闭环存储接口 —— 宿主注入的 Round 持久化能力
|
|
494
|
+
*
|
|
495
|
+
* 设计原则:
|
|
496
|
+
* 1. 同步语义(对齐 IMemoryStorage)
|
|
497
|
+
* 2. 宿主实现:生产由宿主注入持久化存储(当前 vscode 宿主为 JSON 文件落地),测试用内存实现
|
|
498
|
+
* 3. 可选方法:部分方法可由宿主选择性实现
|
|
499
|
+
*/
|
|
500
|
+
export interface IRoundStore {
|
|
501
|
+
/**
|
|
502
|
+
* 存储问答闭环(新增或更新)
|
|
503
|
+
*
|
|
504
|
+
* 原子性保证:
|
|
505
|
+
* - pending → complete 的状态转换必须是原子操作
|
|
506
|
+
* - 写入失败时不部分更新
|
|
507
|
+
*/
|
|
508
|
+
save(round: Round): void;
|
|
509
|
+
/**
|
|
510
|
+
* 按 ID 获取问答闭环
|
|
511
|
+
*
|
|
512
|
+
* @param roundId - 全局唯一 Round ID
|
|
513
|
+
* @returns Round 对象,不存在返回 null
|
|
514
|
+
*/
|
|
515
|
+
getById(roundId: string): Round | null;
|
|
516
|
+
/**
|
|
517
|
+
* 批量获取问答闭环(按 ID 列表)
|
|
518
|
+
*
|
|
519
|
+
* 用途:会话加载时批量获取 Round,避免 N+1 查询
|
|
520
|
+
*
|
|
521
|
+
* @param roundIds - Round ID 数组
|
|
522
|
+
* @returns Round 对象数组(按输入顺序)
|
|
523
|
+
*/
|
|
524
|
+
getByIds(roundIds: string[]): Round[];
|
|
525
|
+
/**
|
|
526
|
+
* 列出所有问答闭环(用于调试和 GC)
|
|
527
|
+
*
|
|
528
|
+
* ⚠️ 生产环境慎用:全量遍历可能性能开销大
|
|
529
|
+
*/
|
|
530
|
+
listAll(): Round[];
|
|
531
|
+
/**
|
|
532
|
+
* 增加引用计数(分叉时调用)
|
|
533
|
+
*
|
|
534
|
+
* @param roundId - 需要增加引用的 Round ID
|
|
535
|
+
*/
|
|
536
|
+
incrementRef(roundId: string): void;
|
|
537
|
+
/**
|
|
538
|
+
* 减少引用计数(删除会话时调用)
|
|
539
|
+
*
|
|
540
|
+
* @param roundId - 需要减少引用的 Round ID
|
|
541
|
+
*/
|
|
542
|
+
decrementRef(roundId: string): void;
|
|
543
|
+
/**
|
|
544
|
+
* 删除问答闭环(物理删除,不可恢复)
|
|
545
|
+
*
|
|
546
|
+
* 前置条件:
|
|
547
|
+
* - refCount === 0(无其他会话引用)
|
|
548
|
+
* - 一般由 GC 服务调用
|
|
549
|
+
*
|
|
550
|
+
* @param roundId - 要删除的 Round ID
|
|
551
|
+
* @returns 是否删除成功
|
|
552
|
+
*/
|
|
553
|
+
delete(roundId: string): boolean;
|
|
554
|
+
/**
|
|
555
|
+
* 按状态列出问答闭环(用于 GC 和监控)
|
|
556
|
+
*
|
|
557
|
+
* @param status - Round 状态筛选
|
|
558
|
+
* @returns 符合条件的 Round 数组
|
|
559
|
+
*/
|
|
560
|
+
listByStatus?(status: RoundStatus): Round[];
|
|
561
|
+
/**
|
|
562
|
+
* 获取孤立的问答闭环列表(refCount === 0)
|
|
563
|
+
*
|
|
564
|
+
* 用于 GC 服务批量清理
|
|
565
|
+
*
|
|
566
|
+
* @param minAgeMs - 最小存活时间(毫秒),避免清理正在使用的 Round
|
|
567
|
+
* @returns 孤立 Round 数组
|
|
568
|
+
*/
|
|
569
|
+
listOrphaned?(minAgeMs?: number): Round[];
|
|
570
|
+
/**
|
|
571
|
+
* 列出指定日期最近未完成(pending/error)的崩溃残留轮(step 原子落盘)。
|
|
572
|
+
*
|
|
573
|
+
* 用途:崩溃残留轮升级前的**只读中转**——崩溃发生在 appendAssistant 完成前时,该轮
|
|
574
|
+
* refCount=0、未登记进会话 roundIds,宿主无法从会话列表发现;但其过程已由 step 原子
|
|
575
|
+
* 检查点落盘到 pending Round。宿主重启后经此口查回,「找到」后由宿主调用收场方法
|
|
576
|
+
* (MessageHistory.appendInterrupted)**升级为正常 stop turn** 并登记入会话。
|
|
577
|
+
*
|
|
578
|
+
* 语义约束(SSOT):
|
|
579
|
+
* - **只读查询**,不登记会话、不改写 Round、不改变 appendAssistant 完成语义;
|
|
580
|
+
* 升级登记是独立的「收场」动作(§一·五:中断轮 = 正常 stop turn,非半成品草稿)。
|
|
581
|
+
* - **不污染正式会话 roundIds**——升级登记完成(complete + refCount>0)前,中断轮
|
|
582
|
+
* 仍是无引用中间态,本接口只处理该短暂窗口的「找到」。
|
|
583
|
+
* - 中断轮超龄后仍由 GC sweepOrphans 正常回收(refCount=0 孤儿),本接口不改变其生命周期;
|
|
584
|
+
* 打捞窗口落在启动后的升级动作内(早于 24h 存活保护),不构成误回收。
|
|
585
|
+
*
|
|
586
|
+
* @param date - YYYY-MM-DD,按 createdAt 的前缀匹配(ISO 日期头 10 位)
|
|
587
|
+
* @param limit - 最多返回条数,按 createdAt 降序(最新在前);缺省不截断
|
|
588
|
+
* @returns 中断残留 Round 数组(按 createdAt 倒序)
|
|
589
|
+
*/
|
|
590
|
+
listInterruptedRecent?(date: string, limit?: number): Round[];
|
|
591
|
+
}
|
|
592
|
+
/**
|
|
593
|
+
* 生成 Round ID(格式:round-{uuid})
|
|
594
|
+
*
|
|
595
|
+
* 使用 crypto.randomUUID() 保证全局唯一性
|
|
596
|
+
*/
|
|
597
|
+
export declare function generateRoundId(): string;
|
|
598
|
+
/**
|
|
599
|
+
* 生成消息 ID(格式:msg-{uuid})
|
|
600
|
+
*/
|
|
601
|
+
export declare function generateMessageId(): string;
|
|
602
|
+
/**
|
|
603
|
+
* 创建 pending 状态的 Round
|
|
604
|
+
*
|
|
605
|
+
* 辅助函数:快速创建新问答闭环的骨架
|
|
606
|
+
*
|
|
607
|
+
* @param userMessage - 用户消息内容
|
|
608
|
+
* @returns 新创建的 pending Round
|
|
609
|
+
*/
|
|
610
|
+
export declare function createPendingRound(userMessage: string): Round;
|
|
611
|
+
/**
|
|
612
|
+
* 完成 Round(设置 AI 消息)
|
|
613
|
+
*
|
|
614
|
+
* 辅助函数:将 pending Round 转换为 complete 状态
|
|
615
|
+
*
|
|
616
|
+
* ⚠️ 注意:本函数**不设置任何摘要关联字段**——摘要记忆的 ID 由 roundSummaryGenerator
|
|
617
|
+
* 按 `round-summary:{sessionName}:{roundId}` 独立构造并按 roundId 溯源,
|
|
618
|
+
* Round 侧不持有反向指针(GC 清理走 roundId 派生寻址,见 gcService)。
|
|
619
|
+
*
|
|
620
|
+
* @param round - 要完成的 Round(必须是 pending 状态)
|
|
621
|
+
* @param assistantContent - AI 回复内容
|
|
622
|
+
* @param tokenUsage - Token 用量统计
|
|
623
|
+
* @returns 更新后的 complete Round
|
|
624
|
+
*/
|
|
625
|
+
export declare function completeRound(round: Round, assistantContent: string, tokenUsage?: {
|
|
626
|
+
input: number;
|
|
627
|
+
output: number;
|
|
628
|
+
}): Round;
|
|
629
|
+
//# sourceMappingURL=roundStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roundStore.d.ts","sourceRoot":"","sources":["../../src/memory/roundStore.ts"],"names":[],"mappings":"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"}
|