@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,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 回答前(Prepare)— 种子闭环第一阶段
|
|
3
|
+
*
|
|
4
|
+
* 编排骨架:策略装配 → 角色 → 上下文装配 → roundId
|
|
5
|
+
* → appendUser → 会话命名。会议机制:任务项表层装配视角经本模块读取并驱动前缀刷新。
|
|
6
|
+
*
|
|
7
|
+
* 设计原则:
|
|
8
|
+
* - 叶子逻辑(assembleContext → 上下文装配:预算派生 + 对话层注入 + 占用快照)在
|
|
9
|
+
* ContextPreparer 唯一实现,本模块只保留编排骨架(与 ContextPreparer 文档一致)。
|
|
10
|
+
*/
|
|
11
|
+
import { backgroundTask } from '../../utils/backgroundTask.js';
|
|
12
|
+
import { resolveL2Strategy, resolveActiveStrategy } from '../../role-pack/strategyResolver.js';
|
|
13
|
+
/**
|
|
14
|
+
* 回答前阶段执行器
|
|
15
|
+
*
|
|
16
|
+
* 一次输入 → 装配上下文(角色 + 技能 + 用户消息入史),供回答中消费。
|
|
17
|
+
* @remarks 异步生成器:运行期 yield AgentChunk(thinking 各阶段),返回 SeedPrepareResult。
|
|
18
|
+
*/
|
|
19
|
+
export class SeedPrepare {
|
|
20
|
+
/** 依赖注入(门面稳定能力窄面) */
|
|
21
|
+
deps;
|
|
22
|
+
constructor(deps) {
|
|
23
|
+
this.deps = deps;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 执行回答前:策略装配 → 角色 → 上下文装配 → 技能注入 → roundId → 用户消息入史 → 会话命名。
|
|
27
|
+
*
|
|
28
|
+
* @param input 用户输入
|
|
29
|
+
* @param signal 中止信号(回答前中断则在技能注入前返回 aborted)
|
|
30
|
+
* @returns 回答前结果(input + aborted;round 归属见 SeedPrepareResult)
|
|
31
|
+
*/
|
|
32
|
+
async *run(input, signal) {
|
|
33
|
+
const { loop, history, sessionManager, rolePackManager, contextPreparer, sessionNamer } = this.deps.getParts();
|
|
34
|
+
// 每次回答前先清临时 system 消息(技能/最近对话 prompt 是当轮注入,不跨轮累积)
|
|
35
|
+
loop.cleanTemporarySystemMessages();
|
|
36
|
+
// 会议机制:读取当前 active 任务项声明的 rolePack,按本轮表层装配刷新前缀(范围校验 + 回落)
|
|
37
|
+
const checkpoint = sessionManager?.getCheckpoint();
|
|
38
|
+
const activePlanItem = checkpoint?.plan.find((s) => s.status === 'active');
|
|
39
|
+
refreshAssemblyForRolePack(this.deps, activePlanItem?.rolePack);
|
|
40
|
+
// 会议机制实施前提②:组/成员清单暴露给 LLM(防编造角色名)——仅当 activePack 是某组组长时注入
|
|
41
|
+
const teamContext = rolePackManager?.buildTeamContextBlock() ?? '';
|
|
42
|
+
if (teamContext) {
|
|
43
|
+
loop.injectSystemMessage(teamContext);
|
|
44
|
+
}
|
|
45
|
+
// 会议机制骨架预置(「最小受控起点」)。
|
|
46
|
+
// 与 buildTeamContextBlock 文案互补:骨架补首轮确定性(顶部任务板可见 + PlanItem.rolePack 装配钩子),
|
|
47
|
+
// 文案约束 LLM 后续推进走 task_table 单通道。守卫语义:
|
|
48
|
+
// 已有未完成计划(pending/active 存在)→ 跳过骨架预置 = 续会语义:第二轮「继续小组会议」等输入
|
|
49
|
+
// 交给 LLM 按既有任务表推进,不再重开/叠加会议任务项;无在途计划时的「小组会议」输入 = 新会议 → overwrite 预置。
|
|
50
|
+
// 重开已推进会议需显式手段(宿主清空任务表 / LLM task_table_write),非自然语言自动触发。
|
|
51
|
+
// 在途判定经 SessionManager.hasInflightPlan 单点(SSOT):与 loop 侧「已有在途任务表则跳过
|
|
52
|
+
// nudge」共用同一命题口径,禁此处再内联谓词另起一份判定。
|
|
53
|
+
const hasInflightPlan = sessionManager?.hasInflightPlan() ?? false;
|
|
54
|
+
const meetingPlanItems = hasInflightPlan
|
|
55
|
+
? null
|
|
56
|
+
: (rolePackManager?.tryBuildMeetingPlan?.(input) ?? null);
|
|
57
|
+
if (meetingPlanItems && sessionManager) {
|
|
58
|
+
// 骨架预置:overwrite = 真重写,新会议替换一切旧计划
|
|
59
|
+
sessionManager.writePlan('overwrite', meetingPlanItems);
|
|
60
|
+
}
|
|
61
|
+
const strategy = resolveActiveStrategy(rolePackManager, this.deps.strategyOverride);
|
|
62
|
+
// 单一 setStrategy 聚合 L2 策略(工具权限/步数/错误处理/路由/预算/推理/只读/审批/自审查)
|
|
63
|
+
loop.setStrategy(resolveL2Strategy(strategy));
|
|
64
|
+
// 换角色 → 按激活角色包的 capabilities 应用工具暴露面(toolMode=block 全禁与此正交)
|
|
65
|
+
// 会议机制:工具面恒为 activePack(组员只"说"不执行,需完整能力应手动切换)——此处不走 roundAssemblyRole
|
|
66
|
+
this.deps.applyRolePackToolExposure();
|
|
67
|
+
yield { type: 'thinking', phase: 'assembling' };
|
|
68
|
+
// 上下文装配(无自动记忆召回,仅细则预算 + 对话层注入,见 memory-tool-recall-design §4)
|
|
69
|
+
await contextPreparer.assembleContext(input);
|
|
70
|
+
if (signal.aborted) {
|
|
71
|
+
return { input, aborted: true };
|
|
72
|
+
}
|
|
73
|
+
// 技能按渐进披露 L1 清单常驻 system prompt,正文由模型按需 read_skill,回答前不预注入
|
|
74
|
+
yield { type: 'thinking', phase: 'processing' };
|
|
75
|
+
const roundId = loop.allocRoundId();
|
|
76
|
+
loop.setCurrentRoundId(roundId);
|
|
77
|
+
await history.appendUser(input, roundId);
|
|
78
|
+
// 会话标题自动命名(fire-and-forget):仅新建会话首次问答触发(以"会话无标题"判定,不覆盖手动改名)
|
|
79
|
+
if (sessionNamer) {
|
|
80
|
+
backgroundTask('session-title', () => sessionNamer.ensureSessionTitle(history.currentDateValue, history.currentSessionValue, input));
|
|
81
|
+
}
|
|
82
|
+
return { input, aborted: false };
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* 会议机制:按给定任务项 rolePack 刷新本轮表层装配视角。
|
|
87
|
+
*
|
|
88
|
+
* 装配逻辑单一真理源。两个调用入口共用本函数,避免双写:
|
|
89
|
+
* - prepare.run(turn 开头:按首个 active 任务项的 rolePack 设一次)
|
|
90
|
+
* - 任务表每轮注入(assembler.getTaskTable → hooks.applyActivePlanItemAssembly → agent.applyActivePlanItemAssemblyIfChanged,
|
|
91
|
+
* 随 active 任务项推进逐项换角色,防重见 agent 实现)
|
|
92
|
+
* 内部动作:
|
|
93
|
+
* - resolveRoundAssemblyRole:范围校验(∈ 组长∪组员,越界/缺员→null+warning,防 LLM 幻觉角色名)
|
|
94
|
+
* - setRoundAssemblyRole:skills 加载跟随装配视角
|
|
95
|
+
* - refreshRolePackPrefixForRound:重建 loop 前缀(persona/rules/skills 换,键恒 activePack)
|
|
96
|
+
* rolePack 未声明/越界/缺员 → null → 回落 activePack 前缀(组长视角,工具面不变)。
|
|
97
|
+
*
|
|
98
|
+
* @param deps 种子依赖(取 rolePackManager + 刷新前缀能力)
|
|
99
|
+
* @param rolePack 任务项声明的角色包(无声明 = 非会议,回落 activePack)
|
|
100
|
+
*/
|
|
101
|
+
export function refreshAssemblyForRolePack(deps, rolePack) {
|
|
102
|
+
const rolePackManager = deps.getParts().rolePackManager;
|
|
103
|
+
const assembly = rolePackManager?.resolveRoundAssemblyRole(rolePack) ?? null;
|
|
104
|
+
rolePackManager?.setRoundAssemblyRole(assembly);
|
|
105
|
+
deps.refreshRolePackPrefixForRound?.(assembly);
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=prepare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../../src/agent/seed/prepare.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAG3F;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IACtB,qBAAqB;IACJ,IAAI,CAAW;IAEhC,YAAY,IAAc;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,CAAC,GAAG,CACR,KAAa,EACb,MAAmB;QAEnB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,GACrF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAe,CAAC;QAEpC,kDAAkD;QAClD,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAEpC,0DAA0D;QAC1D,MAAM,UAAU,GAAG,cAAc,EAAE,aAAa,EAAE,CAAC;QACnD,MAAM,cAAc,GAAG,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;QAC3E,0BAA0B,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;QAEhE,0DAA0D;QAC1D,MAAM,WAAW,GAAG,eAAe,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC;QACnE,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC;QAED,sBAAsB;QACtB,2EAA2E;QAC3E,sCAAsC;QACtC,6DAA6D;QAC7D,uEAAuE;QACvE,4DAA4D;QAC5D,oEAAoE;QACpE,iCAAiC;QACjC,MAAM,eAAe,GAAG,cAAc,EAAE,eAAe,EAAE,IAAI,KAAK,CAAC;QACnE,MAAM,gBAAgB,GAAG,eAAe;YACtC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,CAAC,eAAe,EAAE,mBAAmB,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;QAC5D,IAAI,gBAAgB,IAAI,cAAc,EAAE,CAAC;YACvC,kCAAkC;YAClC,cAAc,CAAC,SAAS,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,QAAQ,GAAG,qBAAqB,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACpF,2DAA2D;QAC3D,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE9C,4DAA4D;QAC5D,sEAAsE;QACtE,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAEtC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;QAChD,8DAA8D;QAC9D,MAAM,eAAe,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAA8B,CAAC;QAC9D,CAAC;QAED,2DAA2D;QAC3D,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;QAEhD,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACpC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAEzC,4DAA4D;QAC5D,IAAI,YAAY,EAAE,CAAC;YACjB,cAAc,CAAC,eAAe,EAAE,GAAG,EAAE,CACnC,YAAY,CAAC,kBAAkB,CAC7B,OAAO,CAAC,gBAAgB,EACxB,OAAO,CAAC,mBAAmB,EAC3B,KAAK,CACN,CACF,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAA8B,CAAC;IAC/D,CAAC;CACF;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,0BAA0B,CAAC,IAAc,EAAE,QAA4B;IACrF,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC;IACxD,MAAM,QAAQ,GAAG,eAAe,EAAE,wBAAwB,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;IAC7E,eAAe,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,CAAC,6BAA6B,EAAE,CAAC,QAAQ,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 种子 turn 契约类型 — turn(问答闭环,含回答前/中/后)的类型定义
|
|
3
|
+
*
|
|
4
|
+
* 种子哲学(turn = 最小单元,单一真理源):一次触发 → 回答前 → 回答中 → 回答后。
|
|
5
|
+
* 本文件定义这三阶段的输入/输出契约,以及 seed 模块所需的依赖接口。
|
|
6
|
+
*
|
|
7
|
+
* 设计纪律:
|
|
8
|
+
* - getParts() 以「快照 getter」形式提供当前组件引用——switchProject/rebuildComponents
|
|
9
|
+
* 会更换 loop/history/sessionManager,seed 每次运行经 getParts() 取最新引用,
|
|
10
|
+
* 否则 rebuild 后 seed 将残留陈旧组件引用(关键正确性约束)。
|
|
11
|
+
* - consumeExecutionStream 是「统一流收口协议」,物理实现仍在门面(Agent),
|
|
12
|
+
* 本处仅声明类型,回答中阶段经依赖注入消费(方案的流收口协议归门面)。
|
|
13
|
+
*/
|
|
14
|
+
import type { AgentLoop } from '../../agent/loop.js';
|
|
15
|
+
import type { MessageHistory } from '../../agent/messageHistory.js';
|
|
16
|
+
import type { AgentChunk, ArchiveMode, UIMessages } from '../../agent/types.js';
|
|
17
|
+
import type { ContextPreparer } from '../../agent/contextPreparer.js';
|
|
18
|
+
import type { SessionManager } from '../../agent/managers/sessionManager.js';
|
|
19
|
+
import type { RoundSummaryGenerator } from '../../agent/managers/roundSummaryGenerator.js';
|
|
20
|
+
import type { SessionNamer } from '../../agent/managers/sessionNamer.js';
|
|
21
|
+
import type { RolePackManager } from '../../role-pack/rolePackManager.js';
|
|
22
|
+
import type { LlmProvider } from '../../llm/provider.js';
|
|
23
|
+
import type { ITracer } from '../../agent/tracer.js';
|
|
24
|
+
import type { BehaviorStrategy } from '../../role-pack/types.js';
|
|
25
|
+
/**
|
|
26
|
+
* 流消费结果(consumeExecutionStream 的返回约定)
|
|
27
|
+
*
|
|
28
|
+
* content = 累积的文本;aborted = 是否被中断(用户取消/超时);paused = 是否在 step 边界
|
|
29
|
+
* 软暂停挂起(回合未完成,摘要应推迟到续跑最终轮,保摘要 1:1);failed = 是否执行出错
|
|
30
|
+
* (错误 chunk 已 yield 给调用方)。
|
|
31
|
+
*
|
|
32
|
+
* aborted 与 failed **同属「本轮未正常完成」**:act() 对二者走同一收尾收口
|
|
33
|
+
* (appendInterrupted → Round 落 complete),差异仅在返回值里保留各自的布尔位,
|
|
34
|
+
* 供调用方决定后续动作(如是否触发续跑)。见 orchestrator.act 的 SSOT 收口注释。
|
|
35
|
+
*/
|
|
36
|
+
export interface StreamConsumeResult {
|
|
37
|
+
content: string;
|
|
38
|
+
aborted: boolean;
|
|
39
|
+
paused: boolean;
|
|
40
|
+
failed: boolean;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 种子三阶段运行所需的组件快照(getParts 的返回值)
|
|
44
|
+
*
|
|
45
|
+
* 各 field 对应门面当前持有的组件实例;null 表示尚未创建(如 sessionNamer 在
|
|
46
|
+
* createPostInitComponents 才创建)。seed 只读不持有,全部由门面提供。
|
|
47
|
+
*/
|
|
48
|
+
export interface SeedParts {
|
|
49
|
+
loop: AgentLoop;
|
|
50
|
+
history: MessageHistory;
|
|
51
|
+
sessionManager: SessionManager | null;
|
|
52
|
+
rolePackManager: RolePackManager | null;
|
|
53
|
+
contextPreparer: ContextPreparer;
|
|
54
|
+
sessionNamer: SessionNamer | null;
|
|
55
|
+
roundSummaryGenerator: RoundSummaryGenerator | null;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* 种子模块的依赖注入接口(门面稳定能力的窄面)
|
|
59
|
+
*
|
|
60
|
+
* 与 ContextPreparerDeps / AgentHooks 同构:只传稳定能力,不传可变私有状态。
|
|
61
|
+
* getParts() 惰性取当前组件(见文件头设计纪律);applyRolePackToolExposure 与
|
|
62
|
+
* consumeExecutionStream 是门面私有能力,经回调注入 seed(物理实现仍在门面)。
|
|
63
|
+
*/
|
|
64
|
+
export interface SeedDeps {
|
|
65
|
+
/** 取当前组件快照(rebuild 后仍为最新引用) */
|
|
66
|
+
getParts(): SeedParts;
|
|
67
|
+
/** 可观测性 Tracer(缺省 Noop,reflect 阶段 span 用) */
|
|
68
|
+
tracer: ITracer | null;
|
|
69
|
+
/** 归档模式(reflect 阶段 span 标注用) */
|
|
70
|
+
archiveMode: ArchiveMode;
|
|
71
|
+
/** 界面文案(中断标记 / 用户中断提示,缺省用内置默认) */
|
|
72
|
+
messages?: UIMessages;
|
|
73
|
+
/** 门面能力:应用当前角色包的工具暴露面(回答前换角色后工具集切换) */
|
|
74
|
+
applyRolePackToolExposure(): void;
|
|
75
|
+
/**
|
|
76
|
+
* 门面能力:按本轮表层装配视角刷新 loop 前缀(会议机制)。
|
|
77
|
+
* roundRole=null(日常态)→ 回落 activePack 前缀;roundRole 为任务项角色 → 该角色 persona/rules/skills。
|
|
78
|
+
* 键(strategy/ChatOptions)恒为 activePack,不随视角变。缺省 no-op(纯工厂单测)。
|
|
79
|
+
*/
|
|
80
|
+
refreshRolePackPrefixForRound?(roundRole: string | null): void;
|
|
81
|
+
/** 门面能力:统一流收口协议(消费 loop 执行流 → AgentChunk;物理实现在 Agent)。
|
|
82
|
+
* signal 透传:consumeExecutionStream 据此区分「宿主/插话真取消」(signal.aborted)
|
|
83
|
+
* 与「provider/网络内部中断」(signal 未 abort 却抛 AbortError)——避免连接中断谎报为用户取消 */
|
|
84
|
+
consumeExecutionStream(source: AsyncGenerator<AgentChunk, void, unknown>, signal?: AbortSignal): AsyncGenerator<AgentChunk, StreamConsumeResult, unknown>;
|
|
85
|
+
/**
|
|
86
|
+
* 后台 Provider(难度分级等「回答前视图」轻量判定用;运行时可变,故取函数式);
|
|
87
|
+
* 为 null 表示后台不可用 → 判定降级为 unknown,不影响主回答。
|
|
88
|
+
*/
|
|
89
|
+
getBackgroundProvider(): LlmProvider | null;
|
|
90
|
+
/**
|
|
91
|
+
* 宿主装配级策略覆盖(可选):经 resolveActiveStrategy 压过角色包声明,表达宿主产品能力边界。
|
|
92
|
+
*(v0.13 后无内置示例键;机制保留供宿主能力边界使用)
|
|
93
|
+
*/
|
|
94
|
+
strategyOverride?: Partial<BehaviorStrategy>;
|
|
95
|
+
/**
|
|
96
|
+
* 门面事件发射回调(可选,默认 no-op)。种子编排器在摘要生成完成后触发 roundSummaryGenerated,
|
|
97
|
+
* 让宿主感知后台任务收口、解锁 UI 生命周期(删除/分叉按钮解禁)。
|
|
98
|
+
* 接口设计同 assembler 的 AgentHooks.emit——门面层桥接 TypedEventEmitter。
|
|
99
|
+
*/
|
|
100
|
+
emit?: (event: string, payload: unknown) => void;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* 回答前(Prepare)运行结果
|
|
104
|
+
*
|
|
105
|
+
* input = 原始输入;aborted = 回答前阶段已中断(调用方应 yield aborted chunk 并返回,不进回答中);
|
|
106
|
+
* roundId 不在此结果中——round 归属以 loop 的 currentRoundId 为单一真理源。
|
|
107
|
+
*
|
|
108
|
+
* 注:不设 recalledMemories 之类恒空占位字段(占位符的存在本身即在宣称一件不存在的事)。
|
|
109
|
+
* 记忆检索唯一入口 = LLM 经 `search_memories` 工具主动触发(见 memory-tool-recall-design §3/§4)。
|
|
110
|
+
*/
|
|
111
|
+
export interface SeedPrepareResult {
|
|
112
|
+
input: string;
|
|
113
|
+
aborted: boolean;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/agent/seed/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D;;;;;;;;;;GAUG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,cAAc,CAAC;IACxB,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,eAAe,EAAE,eAAe,CAAC;IACjC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,qBAAqB,EAAE,qBAAqB,GAAG,IAAI,CAAC;CACrD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACvB,+BAA+B;IAC/B,QAAQ,IAAI,SAAS,CAAC;IACtB,6CAA6C;IAC7C,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACvB,gCAAgC;IAChC,WAAW,EAAE,WAAW,CAAC;IACzB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,uCAAuC;IACvC,yBAAyB,IAAI,IAAI,CAAC;IAClC;;;;OAIG;IACH,6BAA6B,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC/D;;0EAEsE;IACtE,sBAAsB,CACpB,MAAM,EAAE,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,EACjD,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,UAAU,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC;IAC5D;;;OAGG;IACH,qBAAqB,IAAI,WAAW,GAAG,IAAI,CAAC;IAC5C;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7C;;;;OAIG;IACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAClD;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 种子 turn 契约类型 — turn(问答闭环,含回答前/中/后)的类型定义
|
|
3
|
+
*
|
|
4
|
+
* 种子哲学(turn = 最小单元,单一真理源):一次触发 → 回答前 → 回答中 → 回答后。
|
|
5
|
+
* 本文件定义这三阶段的输入/输出契约,以及 seed 模块所需的依赖接口。
|
|
6
|
+
*
|
|
7
|
+
* 设计纪律:
|
|
8
|
+
* - getParts() 以「快照 getter」形式提供当前组件引用——switchProject/rebuildComponents
|
|
9
|
+
* 会更换 loop/history/sessionManager,seed 每次运行经 getParts() 取最新引用,
|
|
10
|
+
* 否则 rebuild 后 seed 将残留陈旧组件引用(关键正确性约束)。
|
|
11
|
+
* - consumeExecutionStream 是「统一流收口协议」,物理实现仍在门面(Agent),
|
|
12
|
+
* 本处仅声明类型,回答中阶段经依赖注入消费(方案的流收口协议归门面)。
|
|
13
|
+
*/
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/agent/seed/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 会话状态机 —— 不中断工作模型的核心状态流转。
|
|
3
|
+
* 三态迁移契约:
|
|
4
|
+
* RUNNING→PAUSED(用户/Agent/系统双向暂停);PAUSED→RUNNING(恢复,无阻塞条件时);
|
|
5
|
+
* RUNNING→ERROR(异常:LLM 超时/工具失败/连接断开);ERROR→RUNNING(恢复:须 error.recovered===true 且 cause 已解除)。
|
|
6
|
+
* 非法转换:PAUSED→ERROR、ERROR→PAUSED 均不允许。
|
|
7
|
+
* 设计意图:ERROR 态语义 =「崩溃残留 → 恢复前强制校验」。
|
|
8
|
+
* ⚠ 当前产品流中 ERROR 态无自动产生者:重启一律以 running 起(否则宿主无 recover()
|
|
9
|
+
* 入口会把用户钉死在 error 态),运行时失败也不翻状态机。ERROR 保留为公开 API
|
|
10
|
+
* triggerError() 可达的预留态,待与 `Round.error` 无真实产生路径合并评估。
|
|
11
|
+
* 生产运行时异常走 `yield { type:'error' }` 事件流(agent.ts),不翻状态机。若要让运行时异常自动翻状态机,需在 yield error 处接线 triggerError(行为变更,需产品决策)。
|
|
12
|
+
* 单实例事件队列串行处理,无并发写路径。
|
|
13
|
+
*/
|
|
14
|
+
import type { SessionCheckpoint, StatusTransition, SessionStatus, PauseSource } from '../agent/types.js';
|
|
15
|
+
/**
|
|
16
|
+
* 会话状态机:管理三态流转确保转换合法且可追溯,实例绑定单会话由 SessionManager 持有。
|
|
17
|
+
* PauseSource 定义于 agent/types.ts(PauseMeta.source 同源共用,类型级单一真源)。
|
|
18
|
+
*/
|
|
19
|
+
export declare class SessionStateMachine {
|
|
20
|
+
/** 当前状态 */
|
|
21
|
+
private currentStatus;
|
|
22
|
+
/** 暂停原因(仅 PAUSED 有效) */
|
|
23
|
+
private pauseReason;
|
|
24
|
+
/** 暂停来源(仅 PAUSED 有效) */
|
|
25
|
+
private pauseSource;
|
|
26
|
+
/** 异常原因(仅 ERROR 有效) */
|
|
27
|
+
private errorCause;
|
|
28
|
+
/** 待处理暂停原因(软暂停申请,loop 边界挂起后消费;由状态机唯一持有) */
|
|
29
|
+
private pendingPauseReason?;
|
|
30
|
+
/** 待处理暂停来源(仅 pendingPauseReason 有值时有效) */
|
|
31
|
+
private pendingPauseSource;
|
|
32
|
+
/** @param initialStatus 初始状态,默认 'running' */
|
|
33
|
+
constructor(initialStatus?: SessionStatus);
|
|
34
|
+
/** 当前状态 */
|
|
35
|
+
get status(): SessionStatus;
|
|
36
|
+
/** 暂停原因/来源(仅 PAUSED 有效,否则 null) */
|
|
37
|
+
get pauseInfo(): {
|
|
38
|
+
reason: string;
|
|
39
|
+
source: PauseSource;
|
|
40
|
+
} | null;
|
|
41
|
+
/** 异常原因(仅 ERROR 有效,否则 null) */
|
|
42
|
+
get errorInfo(): string | null;
|
|
43
|
+
/** 暂停会话(用户/Agent/系统双向触发);仅 RUNNING 可暂停 */
|
|
44
|
+
pause(reason: string, source?: PauseSource): StatusTransition;
|
|
45
|
+
/** 恢复会话;仅 PAUSED 可恢复,恢复前确认无阻塞条件(如无未完成工具调用) */
|
|
46
|
+
resume(): StatusTransition;
|
|
47
|
+
/** 触发异常;仅 RUNNING 可触发。PAUSED 不允许产生新异常,ERROR 不允许叠加(保留第一个 cause) */
|
|
48
|
+
triggerError(cause: string): StatusTransition;
|
|
49
|
+
/** 从异常恢复;仅 ERROR 可恢复,须 error.recovered===true 且 cause 已解除(外部条件由调用方恢复前确认) */
|
|
50
|
+
recover(checkpoint: SessionCheckpoint): StatusTransition;
|
|
51
|
+
/** 当前是否可暂停(仅 RUNNING) */
|
|
52
|
+
canPause(): boolean;
|
|
53
|
+
/** 当前是否可恢复(仅 PAUSED) */
|
|
54
|
+
canResume(): boolean;
|
|
55
|
+
/** 当前是否处于异常状态 */
|
|
56
|
+
isError(): boolean;
|
|
57
|
+
/** 强制重置到 running(跳过所有转换校验,用于暂停超时等强制清理;正常应走 pause/resume/triggerError/recover) */
|
|
58
|
+
resetToRunning(): void;
|
|
59
|
+
/** 「是否存在在途暂停申请」唯一判据;requestPause 与 isPausePending 共用,保证同一命题单一套判定(不因 error 态等场景出现两套判据) */
|
|
60
|
+
private hasPendingPause;
|
|
61
|
+
/** 待处理暂停信息(只读不消费);供 close() 清理残留暂停 / 暂停收口核对原因来源时读取 */
|
|
62
|
+
get pendingPauseInfo(): {
|
|
63
|
+
reason: string;
|
|
64
|
+
source: PauseSource;
|
|
65
|
+
} | null;
|
|
66
|
+
/** 请求软暂停(仅 RUNNING);暂存暂停数据,待 loop 边界真正挂起时 consume 消费。true=已注册,false=不接受(非 RUNNING 或已有在途申请) */
|
|
67
|
+
requestPause(reason: string, source?: PauseSource): boolean;
|
|
68
|
+
/** 消费待处理暂停请求(loop 边界真正挂起时调用);返回并清除,与 cancelPendingPause 互斥 */
|
|
69
|
+
consumePendingPause(): {
|
|
70
|
+
reason: string;
|
|
71
|
+
source: PauseSource;
|
|
72
|
+
} | null;
|
|
73
|
+
/** 取消待处理暂停请求(用户主动取消暂停时调用);清除 pending,与 consumePendingPause 互斥 */
|
|
74
|
+
cancelPendingPause(): void;
|
|
75
|
+
/** 是否存在在途暂停申请(状态机仍 running 且未真正挂起);供宿主三态按钮判断 */
|
|
76
|
+
isPausePending(): boolean;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=sessionStateMachine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionStateMachine.d.ts","sourceRoot":"","sources":["../../src/agent/sessionStateMachine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAE1B;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,WAAW;IACX,OAAO,CAAC,aAAa,CAAgB;IACrC,wBAAwB;IACxB,OAAO,CAAC,WAAW,CAAuB;IAC1C,wBAAwB;IACxB,OAAO,CAAC,WAAW,CAA4B;IAC/C,uBAAuB;IACvB,OAAO,CAAC,UAAU,CAAuB;IACzC,2CAA2C;IAC3C,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,0CAA0C;IAC1C,OAAO,CAAC,kBAAkB,CAAuB;IAEjD,6CAA6C;gBACjC,aAAa,GAAE,aAAyB;IAIpD,WAAW;IACX,IAAI,MAAM,IAAI,aAAa,CAE1B;IAED,mCAAmC;IACnC,IAAI,SAAS,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAA;KAAE,GAAG,IAAI,CAG9D;IAED,+BAA+B;IAC/B,IAAI,SAAS,IAAI,MAAM,GAAG,IAAI,CAE7B;IAED,0CAA0C;IAC1C,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,WAAoB,GAAG,gBAAgB;IAgBrE,8CAA8C;IAC9C,MAAM,IAAI,gBAAgB;IAgB1B,kEAAkE;IAClE,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB;IAe7C,4EAA4E;IAC5E,OAAO,CAAC,UAAU,EAAE,iBAAiB,GAAG,gBAAgB;IAoCxD,yBAAyB;IACzB,QAAQ,IAAI,OAAO;IAInB,wBAAwB;IACxB,SAAS,IAAI,OAAO;IAIpB,iBAAiB;IACjB,OAAO,IAAI,OAAO;IAIlB,iFAAiF;IACjF,cAAc,IAAI,IAAI;IAatB,yFAAyF;IACzF,OAAO,CAAC,eAAe;IAIvB,sDAAsD;IACtD,IAAI,gBAAgB,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAA;KAAE,GAAG,IAAI,CAGrE;IAED,8FAA8F;IAC9F,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,WAAoB,GAAG,OAAO;IAQnE,8DAA8D;IAC9D,mBAAmB,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAA;KAAE,GAAG,IAAI;IAQrE,iEAAiE;IACjE,kBAAkB,IAAI,IAAI;IAK1B,gDAAgD;IAChD,cAAc,IAAI,OAAO;CAG1B"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 会话状态机:管理三态流转确保转换合法且可追溯,实例绑定单会话由 SessionManager 持有。
|
|
3
|
+
* PauseSource 定义于 agent/types.ts(PauseMeta.source 同源共用,类型级单一真源)。
|
|
4
|
+
*/
|
|
5
|
+
export class SessionStateMachine {
|
|
6
|
+
/** 当前状态 */
|
|
7
|
+
currentStatus;
|
|
8
|
+
/** 暂停原因(仅 PAUSED 有效) */
|
|
9
|
+
pauseReason = null;
|
|
10
|
+
/** 暂停来源(仅 PAUSED 有效) */
|
|
11
|
+
pauseSource = null;
|
|
12
|
+
/** 异常原因(仅 ERROR 有效) */
|
|
13
|
+
errorCause = null;
|
|
14
|
+
/** 待处理暂停原因(软暂停申请,loop 边界挂起后消费;由状态机唯一持有) */
|
|
15
|
+
pendingPauseReason;
|
|
16
|
+
/** 待处理暂停来源(仅 pendingPauseReason 有值时有效) */
|
|
17
|
+
pendingPauseSource = 'user';
|
|
18
|
+
/** @param initialStatus 初始状态,默认 'running' */
|
|
19
|
+
constructor(initialStatus = 'running') {
|
|
20
|
+
this.currentStatus = initialStatus;
|
|
21
|
+
}
|
|
22
|
+
/** 当前状态 */
|
|
23
|
+
get status() {
|
|
24
|
+
return this.currentStatus;
|
|
25
|
+
}
|
|
26
|
+
/** 暂停原因/来源(仅 PAUSED 有效,否则 null) */
|
|
27
|
+
get pauseInfo() {
|
|
28
|
+
if (this.currentStatus !== 'paused')
|
|
29
|
+
return null;
|
|
30
|
+
return { reason: this.pauseReason, source: this.pauseSource };
|
|
31
|
+
}
|
|
32
|
+
/** 异常原因(仅 ERROR 有效,否则 null) */
|
|
33
|
+
get errorInfo() {
|
|
34
|
+
return this.currentStatus === 'error' ? this.errorCause : null;
|
|
35
|
+
}
|
|
36
|
+
/** 暂停会话(用户/Agent/系统双向触发);仅 RUNNING 可暂停 */
|
|
37
|
+
pause(reason, source = 'user') {
|
|
38
|
+
const from = this.currentStatus;
|
|
39
|
+
if (from !== 'running') {
|
|
40
|
+
return {
|
|
41
|
+
from,
|
|
42
|
+
to: 'paused',
|
|
43
|
+
reason: `无法暂停:当前状态为 ${from},仅 RUNNING 状态可暂停`,
|
|
44
|
+
allowed: false,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
this.currentStatus = 'paused';
|
|
48
|
+
this.pauseReason = reason;
|
|
49
|
+
this.pauseSource = source;
|
|
50
|
+
return { from: 'running', to: 'paused', reason: `${source} 暂停:${reason}`, allowed: true };
|
|
51
|
+
}
|
|
52
|
+
/** 恢复会话;仅 PAUSED 可恢复,恢复前确认无阻塞条件(如无未完成工具调用) */
|
|
53
|
+
resume() {
|
|
54
|
+
const from = this.currentStatus;
|
|
55
|
+
if (from !== 'paused') {
|
|
56
|
+
return {
|
|
57
|
+
from,
|
|
58
|
+
to: 'running',
|
|
59
|
+
reason: `无法恢复:当前状态为 ${from},仅 PAUSED 状态可恢复`,
|
|
60
|
+
allowed: false,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
this.currentStatus = 'running';
|
|
64
|
+
this.pauseReason = null;
|
|
65
|
+
this.pauseSource = null;
|
|
66
|
+
return { from: 'paused', to: 'running', reason: '恢复会话', allowed: true };
|
|
67
|
+
}
|
|
68
|
+
/** 触发异常;仅 RUNNING 可触发。PAUSED 不允许产生新异常,ERROR 不允许叠加(保留第一个 cause) */
|
|
69
|
+
triggerError(cause) {
|
|
70
|
+
const from = this.currentStatus;
|
|
71
|
+
if (from !== 'running') {
|
|
72
|
+
return {
|
|
73
|
+
from,
|
|
74
|
+
to: 'error',
|
|
75
|
+
reason: `无法触发异常:当前状态为 ${from},仅 RUNNING 状态可触发异常`,
|
|
76
|
+
allowed: false,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
this.currentStatus = 'error';
|
|
80
|
+
this.errorCause = cause;
|
|
81
|
+
return { from: 'running', to: 'error', reason: `异常:${cause}`, allowed: true };
|
|
82
|
+
}
|
|
83
|
+
/** 从异常恢复;仅 ERROR 可恢复,须 error.recovered===true 且 cause 已解除(外部条件由调用方恢复前确认) */
|
|
84
|
+
recover(checkpoint) {
|
|
85
|
+
const from = this.currentStatus;
|
|
86
|
+
if (from !== 'error') {
|
|
87
|
+
return {
|
|
88
|
+
from,
|
|
89
|
+
to: 'running',
|
|
90
|
+
reason: `无法恢复:当前状态为 ${from},仅 ERROR 状态可恢复`,
|
|
91
|
+
allowed: false,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
if (!checkpoint.error?.recovered) {
|
|
95
|
+
return {
|
|
96
|
+
from: 'error',
|
|
97
|
+
to: 'running',
|
|
98
|
+
reason: `无法恢复:异常尚未标记为已恢复(error.recovered !== true),异常原因:${checkpoint.error?.cause ?? '未知'}`,
|
|
99
|
+
allowed: false,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
if (!checkpoint.error.cause) {
|
|
103
|
+
return {
|
|
104
|
+
from: 'error',
|
|
105
|
+
to: 'running',
|
|
106
|
+
reason: '无法恢复:异常原因缺失,无法确认 cause 已解除',
|
|
107
|
+
allowed: false,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
this.currentStatus = 'running';
|
|
111
|
+
this.errorCause = null;
|
|
112
|
+
return {
|
|
113
|
+
from: 'error',
|
|
114
|
+
to: 'running',
|
|
115
|
+
reason: `恢复完成:异常原因 "${checkpoint.error.cause}" 已解除`,
|
|
116
|
+
allowed: true,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
/** 当前是否可暂停(仅 RUNNING) */
|
|
120
|
+
canPause() {
|
|
121
|
+
return this.currentStatus === 'running';
|
|
122
|
+
}
|
|
123
|
+
/** 当前是否可恢复(仅 PAUSED) */
|
|
124
|
+
canResume() {
|
|
125
|
+
return this.currentStatus === 'paused';
|
|
126
|
+
}
|
|
127
|
+
/** 当前是否处于异常状态 */
|
|
128
|
+
isError() {
|
|
129
|
+
return this.currentStatus === 'error';
|
|
130
|
+
}
|
|
131
|
+
/** 强制重置到 running(跳过所有转换校验,用于暂停超时等强制清理;正常应走 pause/resume/triggerError/recover) */
|
|
132
|
+
resetToRunning() {
|
|
133
|
+
this.currentStatus = 'running';
|
|
134
|
+
this.pauseReason = null;
|
|
135
|
+
this.pauseSource = null;
|
|
136
|
+
this.errorCause = null;
|
|
137
|
+
// 强制重置同时清在途暂停申请:残留会让 hasPendingPause() 恒 true、requestPause 幂等检查
|
|
138
|
+
// 永久拒绝后续暂停(暂停按钮全失效)。清理由本方法收口,调用方无需再配对 cancelPendingPause。
|
|
139
|
+
this.pendingPauseReason = undefined;
|
|
140
|
+
this.pendingPauseSource = 'user';
|
|
141
|
+
}
|
|
142
|
+
// ─── pending 暂停请求管理(SSOT 收口) ────────────────
|
|
143
|
+
/** 「是否存在在途暂停申请」唯一判据;requestPause 与 isPausePending 共用,保证同一命题单一套判定(不因 error 态等场景出现两套判据) */
|
|
144
|
+
hasPendingPause() {
|
|
145
|
+
return this.pendingPauseReason !== undefined;
|
|
146
|
+
}
|
|
147
|
+
/** 待处理暂停信息(只读不消费);供 close() 清理残留暂停 / 暂停收口核对原因来源时读取 */
|
|
148
|
+
get pendingPauseInfo() {
|
|
149
|
+
if (this.pendingPauseReason === undefined)
|
|
150
|
+
return null;
|
|
151
|
+
return { reason: this.pendingPauseReason, source: this.pendingPauseSource };
|
|
152
|
+
}
|
|
153
|
+
/** 请求软暂停(仅 RUNNING);暂存暂停数据,待 loop 边界真正挂起时 consume 消费。true=已注册,false=不接受(非 RUNNING 或已有在途申请) */
|
|
154
|
+
requestPause(reason, source = 'user') {
|
|
155
|
+
if (this.currentStatus !== 'running')
|
|
156
|
+
return false;
|
|
157
|
+
if (this.hasPendingPause())
|
|
158
|
+
return false; // 幂等:已有在途申请
|
|
159
|
+
this.pendingPauseReason = reason;
|
|
160
|
+
this.pendingPauseSource = source;
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
/** 消费待处理暂停请求(loop 边界真正挂起时调用);返回并清除,与 cancelPendingPause 互斥 */
|
|
164
|
+
consumePendingPause() {
|
|
165
|
+
if (this.pendingPauseReason === undefined)
|
|
166
|
+
return null;
|
|
167
|
+
const result = { reason: this.pendingPauseReason, source: this.pendingPauseSource };
|
|
168
|
+
this.pendingPauseReason = undefined;
|
|
169
|
+
this.pendingPauseSource = 'user';
|
|
170
|
+
return result;
|
|
171
|
+
}
|
|
172
|
+
/** 取消待处理暂停请求(用户主动取消暂停时调用);清除 pending,与 consumePendingPause 互斥 */
|
|
173
|
+
cancelPendingPause() {
|
|
174
|
+
this.pendingPauseReason = undefined;
|
|
175
|
+
this.pendingPauseSource = 'user';
|
|
176
|
+
}
|
|
177
|
+
/** 是否存在在途暂停申请(状态机仍 running 且未真正挂起);供宿主三态按钮判断 */
|
|
178
|
+
isPausePending() {
|
|
179
|
+
return this.hasPendingPause() && this.currentStatus !== 'paused';
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=sessionStateMachine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionStateMachine.js","sourceRoot":"","sources":["../../src/agent/sessionStateMachine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 任务表渲染器(渲染函数)
|
|
3
|
+
*
|
|
4
|
+
* 纯函数,将计划任务项列表和任务项推进日志渲染为 LLM 可读的格式化文本。
|
|
5
|
+
* 输出标「以下为状态/历史信息,非当前指令」防 LLM 误执行。
|
|
6
|
+
*
|
|
7
|
+
* 排版:无装饰列表。本函数唯一读者是 LLM(装配点 assembler.ts 注入上下文;宿主零消费、
|
|
8
|
+
* 不解析本文本);ASCII 方框类装饰字符对 LLM 零语义价值却占近半 tokens,且硬编码列宽
|
|
9
|
+
* 在 CJK 描述下从不齐——无装饰列表省 token 且根除对齐缺陷(无需列宽计算)。
|
|
10
|
+
*
|
|
11
|
+
* 契约(不可变):首行恒为 `[任务进度: ...]` —— loop 替换式注入靠该前缀移除上一份任务表
|
|
12
|
+
* (见 loop.ts「特征前缀 [任务进度:」),任何在其前加内容的改动都会让上下文堆积多份任务表。
|
|
13
|
+
*
|
|
14
|
+
* @module taskTableRenderer
|
|
15
|
+
*/
|
|
16
|
+
import type { PlanItem, PlanItemOutcome } from './types.js';
|
|
17
|
+
/**
|
|
18
|
+
* 任务项描述最大字符数(超出截断为「前 PLAN_ITEM_DESC_MAX_CHARS-3 字符 + '...'」)。
|
|
19
|
+
* 作用 = 防超长描述撑爆上下文;与渲染列宽无关,勿据列宽回改。
|
|
20
|
+
*/
|
|
21
|
+
export declare const PLAN_ITEM_DESC_MAX_CHARS = 38;
|
|
22
|
+
/**
|
|
23
|
+
* 渲染任务表(含进度行)
|
|
24
|
+
*
|
|
25
|
+
* 渲染为无装饰列表,供注入 LLM 上下文(格式抉择与「为什么没有方框」见模块头)。
|
|
26
|
+
* 输出以「非当前指令」标记开头,防止 LLM 将状态信息误认为指令。
|
|
27
|
+
*
|
|
28
|
+
* @param plan - 计划任务项列表
|
|
29
|
+
* @param planItemLog - 可选任务项推进日志(截断不在本函数:真源见 SessionManager.appendPlanItemLog
|
|
30
|
+
* 的「每任务项上限 3 条」(completePlanItem / logPlanItemBoundary 共用,按 planItemId
|
|
31
|
+
* 截断而非全局 FIFO)
|
|
32
|
+
* @returns 格式化后的任务表文本(空计划返回空字符串)
|
|
33
|
+
*/
|
|
34
|
+
export declare function renderTaskTable(plan: PlanItem[], planItemLog?: PlanItemOutcome[]): string;
|
|
35
|
+
/**
|
|
36
|
+
* 收尾验证提示(Claude Code TodoWrite nudge 同款)
|
|
37
|
+
*
|
|
38
|
+
* LLM 把任务表全部任务项标记 done(宣称任务完成)但列表里没有任何执行性验证任务项时,
|
|
39
|
+
* 返回一段提示文案引导它补一个验证任务项(task_table_write append),再收尾。
|
|
40
|
+
*
|
|
41
|
+
* 触发条件全部确定性:① 计划 ≥3 个任务项(太短不值得打断);② 全部 done(刚被宣称完成);
|
|
42
|
+
* ③ 无执行性验证任务项。命中返回提示文本,否则返回 null(零打扰)。
|
|
43
|
+
*
|
|
44
|
+
* 挂载点:task_table_update 把最后一个任务项标 done 的成功路径(assembler.updatePlanItem 回调),
|
|
45
|
+
* 作为工具结果附文返回——LLM 必读工具结果,nudge 有生效窗口(它可 append 验证任务项再执行)。
|
|
46
|
+
*
|
|
47
|
+
* @param plan 更新后的计划任务项列表
|
|
48
|
+
* @returns 命中返回提示文案(含换行前导,便于追加到工具结果);未命中返回 null
|
|
49
|
+
*/
|
|
50
|
+
export declare function buildCompletionVerifyNudge(plan: PlanItem[]): string | null;
|
|
51
|
+
//# sourceMappingURL=taskTableRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taskTableRenderer.d.ts","sourceRoot":"","sources":["../../src/agent/taskTableRenderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,WAAW,CAAC,EAAE,eAAe,EAAE,GAAG,MAAM,CAqCzF;AA2BD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,GAAG,IAAI,CAS1E"}
|