@zooique/memora 2.0.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1028 -0
- package/README.en.md +305 -0
- package/README.md +303 -148
- package/config.example.json +43 -0
- package/dist/agent/agent.d.ts +438 -295
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +1368 -836
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/assembler.d.ts +117 -39
- package/dist/agent/assembler.d.ts.map +1 -1
- package/dist/agent/assembler.js +574 -71
- package/dist/agent/assembler.js.map +1 -1
- package/dist/agent/budget.d.ts +131 -0
- package/dist/agent/budget.d.ts.map +1 -0
- package/dist/agent/budget.js +128 -0
- package/dist/agent/budget.js.map +1 -0
- package/dist/agent/builtinToolHandlers.d.ts +229 -17
- package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
- package/dist/agent/builtinToolHandlers.js +758 -70
- package/dist/agent/builtinToolHandlers.js.map +1 -1
- package/dist/agent/builtinTools.d.ts +198 -7
- package/dist/agent/builtinTools.d.ts.map +1 -1
- package/dist/agent/builtinTools.js +646 -14
- package/dist/agent/builtinTools.js.map +1 -1
- package/dist/agent/compaction.d.ts +93 -0
- package/dist/agent/compaction.d.ts.map +1 -0
- package/dist/agent/compaction.js +192 -0
- package/dist/agent/compaction.js.map +1 -0
- package/dist/agent/constants.d.ts +139 -18
- package/dist/agent/constants.d.ts.map +1 -1
- package/dist/agent/constants.js +154 -18
- package/dist/agent/constants.js.map +1 -1
- package/dist/agent/contextManager.d.ts +126 -76
- package/dist/agent/contextManager.d.ts.map +1 -1
- package/dist/agent/contextManager.js +197 -135
- package/dist/agent/contextManager.js.map +1 -1
- package/dist/agent/contextPreparer.d.ts +78 -0
- package/dist/agent/contextPreparer.d.ts.map +1 -0
- package/dist/agent/contextPreparer.js +128 -0
- package/dist/agent/contextPreparer.js.map +1 -0
- package/dist/agent/duplicateInterceptor.d.ts +67 -0
- package/dist/agent/duplicateInterceptor.d.ts.map +1 -0
- package/dist/agent/duplicateInterceptor.js +82 -0
- package/dist/agent/duplicateInterceptor.js.map +1 -0
- package/dist/agent/guardRail.d.ts +166 -0
- package/dist/agent/guardRail.d.ts.map +1 -0
- package/dist/agent/guardRail.js +333 -0
- package/dist/agent/guardRail.js.map +1 -0
- package/dist/agent/loop.d.ts +718 -253
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +2215 -648
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/managers/archiveCoordinator.d.ts +21 -74
- package/dist/agent/managers/archiveCoordinator.d.ts.map +1 -1
- package/dist/agent/managers/archiveCoordinator.js +32 -105
- package/dist/agent/managers/archiveCoordinator.js.map +1 -1
- package/dist/agent/managers/chatLockManager.d.ts +20 -88
- package/dist/agent/managers/chatLockManager.d.ts.map +1 -1
- package/dist/agent/managers/chatLockManager.js +31 -103
- package/dist/agent/managers/chatLockManager.js.map +1 -1
- package/dist/agent/managers/dedupManager.d.ts +85 -0
- package/dist/agent/managers/dedupManager.d.ts.map +1 -0
- package/dist/agent/managers/dedupManager.js +248 -0
- package/dist/agent/managers/dedupManager.js.map +1 -0
- package/dist/agent/managers/goalConsistencyChecker.d.ts +42 -0
- package/dist/agent/managers/goalConsistencyChecker.d.ts.map +1 -0
- package/dist/agent/managers/goalConsistencyChecker.js +178 -0
- package/dist/agent/managers/goalConsistencyChecker.js.map +1 -0
- package/dist/agent/managers/llmCaller.d.ts +124 -0
- package/dist/agent/managers/llmCaller.d.ts.map +1 -0
- package/dist/agent/managers/llmCaller.js +417 -0
- package/dist/agent/managers/llmCaller.js.map +1 -0
- package/dist/agent/managers/llmJudgeHelper.d.ts +21 -0
- package/dist/agent/managers/llmJudgeHelper.d.ts.map +1 -0
- package/dist/agent/managers/llmJudgeHelper.js +32 -0
- package/dist/agent/managers/llmJudgeHelper.js.map +1 -0
- package/dist/agent/managers/loopMetrics.d.ts +58 -0
- package/dist/agent/managers/loopMetrics.d.ts.map +1 -0
- package/dist/agent/managers/loopMetrics.js +68 -0
- package/dist/agent/managers/loopMetrics.js.map +1 -0
- package/dist/agent/managers/memoryAdvisor.d.ts +27 -120
- package/dist/agent/managers/memoryAdvisor.d.ts.map +1 -1
- package/dist/agent/managers/memoryAdvisor.js +56 -192
- package/dist/agent/managers/memoryAdvisor.js.map +1 -1
- package/dist/agent/managers/memoryGovernance.d.ts +24 -0
- package/dist/agent/managers/memoryGovernance.d.ts.map +1 -0
- package/dist/agent/managers/memoryGovernance.js +46 -0
- package/dist/agent/managers/memoryGovernance.js.map +1 -0
- package/dist/agent/managers/memoryInspector.d.ts +59 -393
- package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
- package/dist/agent/managers/memoryInspector.js +92 -736
- package/dist/agent/managers/memoryInspector.js.map +1 -1
- package/dist/agent/managers/roundSummaryGenerator.d.ts +56 -0
- package/dist/agent/managers/roundSummaryGenerator.d.ts.map +1 -0
- package/dist/agent/managers/roundSummaryGenerator.js +201 -0
- package/dist/agent/managers/roundSummaryGenerator.js.map +1 -0
- package/dist/agent/managers/sessionArchiver.d.ts +19 -63
- package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
- package/dist/agent/managers/sessionArchiver.js +83 -157
- package/dist/agent/managers/sessionArchiver.js.map +1 -1
- package/dist/agent/managers/sessionManager.d.ts +286 -57
- package/dist/agent/managers/sessionManager.d.ts.map +1 -1
- package/dist/agent/managers/sessionManager.js +846 -85
- package/dist/agent/managers/sessionManager.js.map +1 -1
- package/dist/agent/managers/sessionNamer.d.ts +35 -0
- package/dist/agent/managers/sessionNamer.d.ts.map +1 -0
- package/dist/agent/managers/sessionNamer.js +104 -0
- package/dist/agent/managers/sessionNamer.js.map +1 -0
- package/dist/agent/managers/streamAccumulator.d.ts +20 -0
- package/dist/agent/managers/streamAccumulator.d.ts.map +1 -0
- package/dist/agent/managers/streamAccumulator.js +15 -0
- package/dist/agent/managers/streamAccumulator.js.map +1 -0
- package/dist/agent/managers/textPolishManager.d.ts +8 -44
- package/dist/agent/managers/textPolishManager.d.ts.map +1 -1
- package/dist/agent/managers/textPolishManager.js +12 -47
- package/dist/agent/managers/textPolishManager.js.map +1 -1
- package/dist/agent/managers/toolCallHelpers.d.ts +105 -0
- package/dist/agent/managers/toolCallHelpers.d.ts.map +1 -0
- package/dist/agent/managers/toolCallHelpers.js +161 -0
- package/dist/agent/managers/toolCallHelpers.js.map +1 -0
- package/dist/agent/managers/workProjection.d.ts +57 -87
- package/dist/agent/managers/workProjection.d.ts.map +1 -1
- package/dist/agent/managers/workProjection.js +166 -246
- package/dist/agent/managers/workProjection.js.map +1 -1
- package/dist/agent/messageHistory.d.ts +134 -84
- package/dist/agent/messageHistory.d.ts.map +1 -1
- package/dist/agent/messageHistory.js +419 -133
- package/dist/agent/messageHistory.js.map +1 -1
- package/dist/agent/needsPlanning.d.ts +28 -0
- package/dist/agent/needsPlanning.d.ts.map +1 -0
- package/dist/agent/needsPlanning.js +68 -0
- package/dist/agent/needsPlanning.js.map +1 -0
- package/dist/agent/seed/index.d.ts +11 -0
- package/dist/agent/seed/index.d.ts.map +1 -0
- package/dist/agent/seed/index.js +10 -0
- package/dist/agent/seed/index.js.map +1 -0
- package/dist/agent/seed/orchestrator.d.ts +83 -0
- package/dist/agent/seed/orchestrator.d.ts.map +1 -0
- package/dist/agent/seed/orchestrator.js +260 -0
- package/dist/agent/seed/orchestrator.js.map +1 -0
- package/dist/agent/seed/prepare.d.ts +49 -0
- package/dist/agent/seed/prepare.d.ts.map +1 -0
- package/dist/agent/seed/prepare.js +107 -0
- package/dist/agent/seed/prepare.js.map +1 -0
- package/dist/agent/seed/types.d.ts +115 -0
- package/dist/agent/seed/types.d.ts.map +1 -0
- package/dist/agent/seed/types.js +15 -0
- package/dist/agent/seed/types.js.map +1 -0
- package/dist/agent/sessionStateMachine.d.ts +78 -0
- package/dist/agent/sessionStateMachine.d.ts.map +1 -0
- package/dist/agent/sessionStateMachine.js +182 -0
- package/dist/agent/sessionStateMachine.js.map +1 -0
- package/dist/agent/taskTableRenderer.d.ts +51 -0
- package/dist/agent/taskTableRenderer.d.ts.map +1 -0
- package/dist/agent/taskTableRenderer.js +115 -0
- package/dist/agent/taskTableRenderer.js.map +1 -0
- package/dist/agent/toolExecutor.d.ts +255 -9
- package/dist/agent/toolExecutor.d.ts.map +1 -1
- package/dist/agent/toolExecutor.js +956 -20
- package/dist/agent/toolExecutor.js.map +1 -1
- package/dist/agent/toolLedger.d.ts +120 -0
- package/dist/agent/toolLedger.d.ts.map +1 -0
- package/dist/agent/toolLedger.js +149 -0
- package/dist/agent/toolLedger.js.map +1 -0
- package/dist/agent/toolResultCache.d.ts +134 -0
- package/dist/agent/toolResultCache.d.ts.map +1 -0
- package/dist/agent/toolResultCache.js +243 -0
- package/dist/agent/toolResultCache.js.map +1 -0
- package/dist/agent/toolResultOffload.d.ts +59 -0
- package/dist/agent/toolResultOffload.d.ts.map +1 -0
- package/dist/agent/toolResultOffload.js +70 -0
- package/dist/agent/toolResultOffload.js.map +1 -0
- package/dist/agent/toolRunner.d.ts +59 -0
- package/dist/agent/toolRunner.d.ts.map +1 -0
- package/dist/agent/toolRunner.js +147 -0
- package/dist/agent/toolRunner.js.map +1 -0
- package/dist/agent/tracer.d.ts +99 -107
- package/dist/agent/tracer.d.ts.map +1 -1
- package/dist/agent/tracer.js +24 -69
- package/dist/agent/tracer.js.map +1 -1
- package/dist/agent/types.d.ts +512 -162
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js +2 -51
- package/dist/agent/types.js.map +1 -1
- package/dist/code-exec/codeExecutionProvider.d.ts +16 -0
- package/dist/code-exec/codeExecutionProvider.d.ts.map +1 -0
- package/dist/code-exec/codeExecutionProvider.js +57 -0
- package/dist/code-exec/codeExecutionProvider.js.map +1 -0
- package/dist/code-exec/types.d.ts +37 -0
- package/dist/code-exec/types.d.ts.map +1 -0
- package/dist/code-exec/types.js +12 -0
- package/dist/code-exec/types.js.map +1 -0
- package/dist/config/expandEnvVars.d.ts +22 -0
- package/dist/config/expandEnvVars.d.ts.map +1 -0
- package/dist/config/expandEnvVars.js +38 -0
- package/dist/config/expandEnvVars.js.map +1 -0
- package/dist/config/loader.d.ts +59 -242
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +237 -194
- package/dist/config/loader.js.map +1 -1
- package/dist/index.d.ts +69 -74
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +93 -63
- package/dist/index.js.map +1 -1
- package/dist/llm/abortSignal.d.ts +2 -3
- package/dist/llm/abortSignal.d.ts.map +1 -1
- package/dist/llm/abortSignal.js +2 -3
- package/dist/llm/abortSignal.js.map +1 -1
- package/dist/llm/factory.d.ts +29 -25
- package/dist/llm/factory.d.ts.map +1 -1
- package/dist/llm/factory.js +34 -69
- package/dist/llm/factory.js.map +1 -1
- package/dist/llm/openaiCompatible.d.ts +25 -40
- package/dist/llm/openaiCompatible.d.ts.map +1 -1
- package/dist/llm/openaiCompatible.js +181 -129
- package/dist/llm/openaiCompatible.js.map +1 -1
- package/dist/llm/provider.d.ts +29 -42
- package/dist/llm/provider.d.ts.map +1 -1
- package/dist/llm/provider.js +11 -10
- package/dist/llm/provider.js.map +1 -1
- package/dist/llm/types.d.ts +54 -11
- package/dist/llm/types.d.ts.map +1 -1
- package/dist/llm/types.js +0 -5
- package/dist/llm/types.js.map +1 -1
- package/dist/logging/logger.d.ts +8 -29
- package/dist/logging/logger.d.ts.map +1 -1
- package/dist/logging/logger.js +43 -233
- package/dist/logging/logger.js.map +1 -1
- package/dist/logging/loggerInterface.d.ts +9 -8
- package/dist/logging/loggerInterface.d.ts.map +1 -1
- package/dist/memory/gcService.d.ts +164 -0
- package/dist/memory/gcService.d.ts.map +1 -0
- package/dist/memory/gcService.js +215 -0
- package/dist/memory/gcService.js.map +1 -0
- package/dist/memory/governance.d.ts +17 -0
- package/dist/memory/governance.d.ts.map +1 -0
- package/dist/memory/governance.js +17 -0
- package/dist/memory/governance.js.map +1 -0
- package/dist/memory/inMemoryRoundStore.d.ts +124 -0
- package/dist/memory/inMemoryRoundStore.d.ts.map +1 -0
- package/dist/memory/inMemoryRoundStore.js +216 -0
- package/dist/memory/inMemoryRoundStore.js.map +1 -0
- package/dist/memory/inMemorySessionStore.d.ts +92 -0
- package/dist/memory/inMemorySessionStore.d.ts.map +1 -0
- package/dist/memory/inMemorySessionStore.js +219 -0
- package/dist/memory/inMemorySessionStore.js.map +1 -0
- package/dist/memory/inMemorySessionViewLoader.d.ts +89 -0
- package/dist/memory/inMemorySessionViewLoader.d.ts.map +1 -0
- package/dist/memory/inMemorySessionViewLoader.js +183 -0
- package/dist/memory/inMemorySessionViewLoader.js.map +1 -0
- package/dist/memory/inMemoryStorage.d.ts +26 -141
- package/dist/memory/inMemoryStorage.d.ts.map +1 -1
- package/dist/memory/inMemoryStorage.js +48 -187
- package/dist/memory/inMemoryStorage.js.map +1 -1
- package/dist/memory/keywordsTouch.d.ts +20 -0
- package/dist/memory/keywordsTouch.d.ts.map +1 -0
- package/dist/memory/keywordsTouch.js +25 -0
- package/dist/memory/keywordsTouch.js.map +1 -0
- package/dist/memory/lockManager.d.ts +7 -2
- package/dist/memory/lockManager.d.ts.map +1 -1
- package/dist/memory/lockManager.js +35 -11
- package/dist/memory/lockManager.js.map +1 -1
- package/dist/memory/projectManager.d.ts +30 -128
- package/dist/memory/projectManager.d.ts.map +1 -1
- package/dist/memory/projectManager.js +39 -171
- package/dist/memory/projectManager.js.map +1 -1
- package/dist/memory/projectRegistry.d.ts +22 -37
- package/dist/memory/projectRegistry.d.ts.map +1 -1
- package/dist/memory/projectRegistry.js +78 -85
- package/dist/memory/projectRegistry.js.map +1 -1
- package/dist/memory/roundStore.d.ts +629 -0
- package/dist/memory/roundStore.d.ts.map +1 -0
- package/dist/memory/roundStore.js +116 -0
- package/dist/memory/roundStore.js.map +1 -0
- package/dist/memory/sessionStore.d.ts +70 -61
- package/dist/memory/sessionStore.d.ts.map +1 -1
- package/dist/memory/sessionStore.js +23 -1
- package/dist/memory/sessionStore.js.map +1 -1
- package/dist/memory/sessionViewLoader.d.ts +141 -0
- package/dist/memory/sessionViewLoader.d.ts.map +1 -0
- package/dist/memory/sessionViewLoader.js +65 -0
- package/dist/memory/sessionViewLoader.js.map +1 -0
- package/dist/memory/sourceValidation.d.ts +18 -9
- package/dist/memory/sourceValidation.d.ts.map +1 -1
- package/dist/memory/sourceValidation.js +35 -29
- package/dist/memory/sourceValidation.js.map +1 -1
- package/dist/memory/storageInterface.d.ts +45 -126
- package/dist/memory/storageInterface.d.ts.map +1 -1
- package/dist/memory/types.d.ts +82 -168
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/memory/types.js +116 -79
- package/dist/memory/types.js.map +1 -1
- package/dist/project-search/projectSearchProvider.d.ts +29 -0
- package/dist/project-search/projectSearchProvider.d.ts.map +1 -0
- package/dist/project-search/projectSearchProvider.js +57 -0
- package/dist/project-search/projectSearchProvider.js.map +1 -0
- package/dist/project-search/terms.d.ts +14 -0
- package/dist/project-search/terms.d.ts.map +1 -0
- package/dist/project-search/terms.js +68 -0
- package/dist/project-search/terms.js.map +1 -0
- package/dist/project-search/types.d.ts +139 -0
- package/dist/project-search/types.d.ts.map +1 -0
- package/dist/project-search/types.js +8 -0
- package/dist/project-search/types.js.map +1 -0
- package/dist/role-pack/capabilityMap.d.ts +28 -0
- package/dist/role-pack/capabilityMap.d.ts.map +1 -0
- package/dist/role-pack/capabilityMap.js +56 -0
- package/dist/role-pack/capabilityMap.js.map +1 -0
- package/dist/role-pack/constants.d.ts +21 -0
- package/dist/role-pack/constants.d.ts.map +1 -0
- package/dist/role-pack/constants.js +21 -0
- package/dist/role-pack/constants.js.map +1 -0
- package/dist/role-pack/rolePackManager.d.ts +269 -0
- package/dist/role-pack/rolePackManager.d.ts.map +1 -0
- package/dist/role-pack/rolePackManager.js +1082 -0
- package/dist/role-pack/rolePackManager.js.map +1 -0
- package/dist/role-pack/strategyKeys.d.ts +100 -0
- package/dist/role-pack/strategyKeys.d.ts.map +1 -0
- package/dist/role-pack/strategyKeys.js +184 -0
- package/dist/role-pack/strategyKeys.js.map +1 -0
- package/dist/role-pack/strategyResolver.d.ts +109 -0
- package/dist/role-pack/strategyResolver.d.ts.map +1 -0
- package/dist/role-pack/strategyResolver.js +304 -0
- package/dist/role-pack/strategyResolver.js.map +1 -0
- package/dist/role-pack/types.d.ts +237 -0
- package/dist/role-pack/types.d.ts.map +1 -0
- package/dist/role-pack/types.js +8 -0
- package/dist/role-pack/types.js.map +1 -0
- package/dist/role-pack/validator.d.ts +38 -0
- package/dist/role-pack/validator.d.ts.map +1 -0
- package/dist/role-pack/validator.js +436 -0
- package/dist/role-pack/validator.js.map +1 -0
- package/dist/security/pathGuard.d.ts +69 -72
- package/dist/security/pathGuard.d.ts.map +1 -1
- package/dist/security/pathGuard.js +151 -131
- package/dist/security/pathGuard.js.map +1 -1
- package/dist/skill/skillLayer3.d.ts +91 -0
- package/dist/skill/skillLayer3.d.ts.map +1 -0
- package/dist/skill/skillLayer3.js +104 -0
- package/dist/skill/skillLayer3.js.map +1 -0
- package/dist/skill/skillManager.d.ts +127 -56
- package/dist/skill/skillManager.d.ts.map +1 -1
- package/dist/skill/skillManager.js +318 -163
- package/dist/skill/skillManager.js.map +1 -1
- package/dist/skill/skillScriptRunner.d.ts +97 -0
- package/dist/skill/skillScriptRunner.d.ts.map +1 -0
- package/dist/skill/skillScriptRunner.js +271 -0
- package/dist/skill/skillScriptRunner.js.map +1 -0
- package/dist/skill/types.d.ts +73 -17
- package/dist/skill/types.d.ts.map +1 -1
- package/dist/skill/types.js +5 -1
- package/dist/skill/types.js.map +1 -1
- package/dist/utils/array.d.ts +5 -6
- package/dist/utils/array.d.ts.map +1 -1
- package/dist/utils/array.js +6 -6
- package/dist/utils/array.js.map +1 -1
- package/dist/utils/atomicWrite.d.ts +8 -0
- package/dist/utils/atomicWrite.d.ts.map +1 -0
- package/dist/utils/atomicWrite.js +31 -0
- package/dist/utils/atomicWrite.js.map +1 -0
- package/dist/utils/backgroundTask.d.ts +38 -0
- package/dist/utils/backgroundTask.d.ts.map +1 -0
- package/dist/utils/backgroundTask.js +117 -0
- package/dist/utils/backgroundTask.js.map +1 -0
- package/dist/utils/configResourceManager.d.ts +79 -0
- package/dist/utils/configResourceManager.d.ts.map +1 -0
- package/dist/utils/configResourceManager.js +150 -0
- package/dist/utils/configResourceManager.js.map +1 -0
- package/dist/utils/errors.d.ts +48 -56
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +60 -58
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/eventEmitter.d.ts +141 -63
- package/dist/utils/eventEmitter.d.ts.map +1 -1
- package/dist/utils/eventEmitter.js +50 -35
- package/dist/utils/eventEmitter.js.map +1 -1
- package/dist/utils/fileSafe.d.ts +20 -0
- package/dist/utils/fileSafe.d.ts.map +1 -0
- package/dist/utils/fileSafe.js +56 -0
- package/dist/utils/fileSafe.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +2 -3
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +6 -5
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/hash.d.ts +12 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +27 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/http.d.ts +17 -0
- package/dist/utils/http.d.ts.map +1 -0
- package/dist/utils/http.js +29 -0
- package/dist/utils/http.js.map +1 -0
- package/dist/utils/json.d.ts +1 -1
- package/dist/utils/json.js +1 -1
- package/dist/utils/math.d.ts +34 -1
- package/dist/utils/math.d.ts.map +1 -1
- package/dist/utils/math.js +47 -14
- package/dist/utils/math.js.map +1 -1
- package/dist/utils/objects.d.ts +2 -3
- package/dist/utils/objects.d.ts.map +1 -1
- package/dist/utils/objects.js +2 -3
- package/dist/utils/objects.js.map +1 -1
- package/dist/utils/recallDefaults.d.ts +16 -0
- package/dist/utils/recallDefaults.d.ts.map +1 -0
- package/dist/utils/recallDefaults.js +16 -0
- package/dist/utils/recallDefaults.js.map +1 -0
- package/dist/utils/safeTimer.d.ts +8 -36
- package/dist/utils/safeTimer.d.ts.map +1 -1
- package/dist/utils/safeTimer.js +9 -37
- package/dist/utils/safeTimer.js.map +1 -1
- package/dist/utils/scanner.d.ts +97 -17
- package/dist/utils/scanner.d.ts.map +1 -1
- package/dist/utils/scanner.js +269 -47
- package/dist/utils/scanner.js.map +1 -1
- package/dist/utils/segmenter.d.ts +20 -29
- package/dist/utils/segmenter.d.ts.map +1 -1
- package/dist/utils/segmenter.js +230 -88
- package/dist/utils/segmenter.js.map +1 -1
- package/dist/utils/strings.d.ts +15 -32
- package/dist/utils/strings.d.ts.map +1 -1
- package/dist/utils/strings.js +25 -44
- package/dist/utils/strings.js.map +1 -1
- package/dist/utils/time.d.ts +37 -0
- package/dist/utils/time.d.ts.map +1 -1
- package/dist/utils/time.js +56 -0
- package/dist/utils/time.js.map +1 -1
- package/dist/utils/toError.d.ts +13 -1
- package/dist/utils/toError.d.ts.map +1 -1
- package/dist/utils/toError.js +18 -1
- package/dist/utils/toError.js.map +1 -1
- package/dist/web-fetch/fetchWebFetchProvider.d.ts +14 -0
- package/dist/web-fetch/fetchWebFetchProvider.d.ts.map +1 -0
- package/dist/web-fetch/fetchWebFetchProvider.js +69 -0
- package/dist/web-fetch/fetchWebFetchProvider.js.map +1 -0
- package/dist/web-fetch/types.d.ts +30 -0
- package/dist/web-fetch/types.d.ts.map +1 -0
- package/dist/web-fetch/types.js +7 -0
- package/dist/web-fetch/types.js.map +1 -0
- package/dist/web-fetch/webFetchProvider.d.ts +10 -0
- package/dist/web-fetch/webFetchProvider.d.ts.map +1 -0
- package/dist/web-fetch/webFetchProvider.js +28 -0
- package/dist/web-fetch/webFetchProvider.js.map +1 -0
- package/dist/web-search/fetchWebSearchProvider.d.ts +27 -0
- package/dist/web-search/fetchWebSearchProvider.d.ts.map +1 -0
- package/dist/web-search/fetchWebSearchProvider.js +199 -0
- package/dist/web-search/fetchWebSearchProvider.js.map +1 -0
- package/dist/web-search/types.d.ts +46 -0
- package/dist/web-search/types.d.ts.map +1 -0
- package/dist/web-search/types.js +2 -0
- package/dist/{persona → web-search}/types.js.map +1 -1
- package/dist/web-search/webSearchProvider.d.ts +10 -0
- package/dist/web-search/webSearchProvider.d.ts.map +1 -0
- package/dist/web-search/webSearchProvider.js +30 -0
- package/dist/web-search/webSearchProvider.js.map +1 -0
- package/docs/architecture/role-pack-authoring-guide.md +243 -0
- package/docs/architecture/role-pack-spec.md +767 -0
- package/docs/memora-api-reference.md +1175 -0
- package/docs/memora-/346/216/245/345/205/245/346/214/207/345/215/227.md +843 -0
- package/docs/role-pack-/345/274/200/346/224/276/351/224/256/346/214/207/345/215/227.md +148 -0
- package/package.json +105 -83
- package/role-packs/README.md +41 -0
- package/role-packs/memora/345/212/251/346/211/213/manifest.json +12 -0
- package/role-packs/memora/345/212/251/346/211/213/persona.md +12 -0
- package/role-packs/memora/345/212/251/346/211/213/rules.md +4 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/manifest.json +44 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/persona.md +46 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/rules.md +15 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/character-sheet.md +34 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/core-extractor.md +37 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/craft-review.md +69 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/dialogue-craft.md +45 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/emotion-wave.md +46 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/empathy-craft.md +79 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/foreshadow.md +29 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/hotspot-mapping.md +121 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/idea-lever.md +42 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/logline-craft.md +47 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/longform-guard.md +64 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/need-finder.md +40 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/outline-expand.md +46 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/pacing-hook.md +34 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/polish-method.md +113 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/pov-discipline.md +79 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/project-init/SKILL.md +112 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/project-init/scripts/init-novel-project.mjs +441 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/relationship-web.md +47 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/scene-craft.md +46 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/story-bible.md +60 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/story-structure.md +36 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/style-weaver.md +109 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/three-layer-check.md +27 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/world-builder.md +41 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/manifest.json +48 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/persona.md +73 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/rules.md +19 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/api-doc-writer.md +40 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/doc-planner.md +42 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/nutrient-search.md +28 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/seed-finder.md +28 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/ssot-audit.md +34 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/style-guide.md +40 -0
- package/dist/agent/guardrail.d.ts +0 -47
- package/dist/agent/guardrail.d.ts.map +0 -1
- package/dist/agent/guardrail.js +0 -51
- package/dist/agent/guardrail.js.map +0 -1
- package/dist/agent/managers/autoConfigRefiner.d.ts +0 -39
- package/dist/agent/managers/autoConfigRefiner.d.ts.map +0 -1
- package/dist/agent/managers/autoConfigRefiner.js +0 -150
- package/dist/agent/managers/autoConfigRefiner.js.map +0 -1
- package/dist/agent/managers/configManager.d.ts +0 -125
- package/dist/agent/managers/configManager.d.ts.map +0 -1
- package/dist/agent/managers/configManager.js +0 -194
- package/dist/agent/managers/configManager.js.map +0 -1
- package/dist/agent/managers/insightExtractor.d.ts +0 -139
- package/dist/agent/managers/insightExtractor.d.ts.map +0 -1
- package/dist/agent/managers/insightExtractor.js +0 -401
- package/dist/agent/managers/insightExtractor.js.map +0 -1
- package/dist/agent/managers/memoryDecayScheduler.d.ts +0 -198
- package/dist/agent/managers/memoryDecayScheduler.d.ts.map +0 -1
- package/dist/agent/managers/memoryDecayScheduler.js +0 -349
- package/dist/agent/managers/memoryDecayScheduler.js.map +0 -1
- package/dist/agent/managers/relationBuilder.d.ts +0 -131
- package/dist/agent/managers/relationBuilder.d.ts.map +0 -1
- package/dist/agent/managers/relationBuilder.js +0 -192
- package/dist/agent/managers/relationBuilder.js.map +0 -1
- package/dist/agent/personaMatcher.d.ts +0 -29
- package/dist/agent/personaMatcher.d.ts.map +0 -1
- package/dist/agent/personaMatcher.js +0 -60
- package/dist/agent/personaMatcher.js.map +0 -1
- package/dist/agent/userFactExtractor.d.ts +0 -25
- package/dist/agent/userFactExtractor.d.ts.map +0 -1
- package/dist/agent/userFactExtractor.js +0 -81
- package/dist/agent/userFactExtractor.js.map +0 -1
- package/dist/eval/evalRunner.d.ts +0 -94
- package/dist/eval/evalRunner.d.ts.map +0 -1
- package/dist/eval/evalRunner.js +0 -141
- package/dist/eval/evalRunner.js.map +0 -1
- package/dist/eval/evalTypes.d.ts +0 -148
- package/dist/eval/evalTypes.d.ts.map +0 -1
- package/dist/eval/evalTypes.js +0 -118
- package/dist/eval/evalTypes.js.map +0 -1
- package/dist/eval/scenarios.d.ts +0 -33
- package/dist/eval/scenarios.d.ts.map +0 -1
- package/dist/eval/scenarios.js +0 -109
- package/dist/eval/scenarios.js.map +0 -1
- package/dist/llm/embedding.d.ts +0 -67
- package/dist/llm/embedding.d.ts.map +0 -1
- package/dist/llm/embedding.js +0 -184
- package/dist/llm/embedding.js.map +0 -1
- package/dist/memory/hybridMerge.d.ts +0 -54
- package/dist/memory/hybridMerge.d.ts.map +0 -1
- package/dist/memory/hybridMerge.js +0 -36
- package/dist/memory/hybridMerge.js.map +0 -1
- package/dist/memory/inMemoryRelationStore.d.ts +0 -51
- package/dist/memory/inMemoryRelationStore.d.ts.map +0 -1
- package/dist/memory/inMemoryRelationStore.js +0 -65
- package/dist/memory/inMemoryRelationStore.js.map +0 -1
- package/dist/memory/loader.d.ts +0 -49
- package/dist/memory/loader.d.ts.map +0 -1
- package/dist/memory/loader.js +0 -93
- package/dist/memory/loader.js.map +0 -1
- package/dist/memory/recall.d.ts +0 -66
- package/dist/memory/recall.d.ts.map +0 -1
- package/dist/memory/recall.js +0 -142
- package/dist/memory/recall.js.map +0 -1
- package/dist/memory/relationStore.d.ts +0 -78
- package/dist/memory/relationStore.d.ts.map +0 -1
- package/dist/memory/relationStore.js +0 -2
- package/dist/memory/relationStore.js.map +0 -1
- package/dist/memory/store.d.ts +0 -50
- package/dist/memory/store.d.ts.map +0 -1
- package/dist/memory/store.js +0 -161
- package/dist/memory/store.js.map +0 -1
- package/dist/memory/userProfile.d.ts +0 -156
- package/dist/memory/userProfile.d.ts.map +0 -1
- package/dist/memory/userProfile.js +0 -320
- package/dist/memory/userProfile.js.map +0 -1
- package/dist/memory/vectorStore.d.ts +0 -185
- package/dist/memory/vectorStore.d.ts.map +0 -1
- package/dist/memory/vectorStore.js +0 -257
- package/dist/memory/vectorStore.js.map +0 -1
- package/dist/persona/personaManager.d.ts +0 -160
- package/dist/persona/personaManager.d.ts.map +0 -1
- package/dist/persona/personaManager.js +0 -414
- package/dist/persona/personaManager.js.map +0 -1
- package/dist/persona/types.d.ts +0 -32
- package/dist/persona/types.d.ts.map +0 -1
- package/dist/persona/types.js +0 -5
|
@@ -1,155 +1,117 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* 技能管理器 —
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* - 启动时扫描 configDir/skills/ 目录
|
|
6
|
-
* - 通过关键词匹配选择技能(初期阶段一/二)
|
|
7
|
-
* - 写入 SQLite 索引(source: skill,遵循"万物皆记忆")
|
|
8
|
-
* - 后期触发条件(≥15个技能 / 关键词命中率 <80%)→ 切换为 LLM 自主选择
|
|
9
|
-
*
|
|
10
|
-
* 设计原则(ADR-004 万物皆记忆):
|
|
11
|
-
* - 技能遵循"万物皆记忆"——存入 SQLite 作为 skill 来源记忆
|
|
12
|
-
* - 单层目录:<configDir>/skills/(宿主负责汇总全局+项目级技能到 configDir)
|
|
13
|
-
* - 与 PersonaManager 存储策略一致:文件加载 → 内存缓存 + SQLite 索引
|
|
14
|
-
*
|
|
15
|
-
* 触发词说明:
|
|
16
|
-
* 每个 skill 文件的 frontmatter 声明 keywords(逗号分隔)和 trigger(触发正则,可选)。
|
|
17
|
-
* skill 文件命名规范:`<技能名>.md`(如"去AI味.md""审视角.md""写代码.md")。
|
|
2
|
+
* 技能管理器 — 继承 ConfigResourceManager。
|
|
3
|
+
* 单层目录 <configDir>/skills/(宿主负责汇总全局+项目级技能到 configDir)。
|
|
4
|
+
* 三级渐进披露:L1 元数据常驻 / L2 read_skill 按需 / L3 resources+scripts。
|
|
18
5
|
*/
|
|
19
|
-
import { scoreByKeywords } from '../utils/segmenter.js';
|
|
20
|
-
import { SOURCE_LABELS } from '../memory/types.js';
|
|
21
6
|
import { logger } from '../logging/logger.js';
|
|
22
|
-
import { byScoreDesc } from '../utils/array.js';
|
|
23
7
|
import { configError } from '../utils/errors.js';
|
|
24
|
-
import {
|
|
25
|
-
import { scanMarkdownDir
|
|
8
|
+
import { ConfigResourceManager } from '../utils/configResourceManager.js';
|
|
9
|
+
import { scanMarkdownDir } from '../utils/scanner.js';
|
|
10
|
+
import { parseFrontmatter } from '../utils/frontmatter.js';
|
|
11
|
+
import { discoverSkillLayer3, projectDiscoveredLayer3, resolveSkillDir, findLayer3Resource, resolveLayer3ResourcePath, resolveLayer3ScriptPath, } from '../skill/skillLayer3.js';
|
|
12
|
+
import { readFileCapped, existsSyncSafe } from '../utils/fileSafe.js';
|
|
13
|
+
/**
|
|
14
|
+
* L1 阈值保护:技能数超过此值时压缩 L1 描述为 20 字摘要。
|
|
15
|
+
* SSOT:全局技能(SkillManager)与角色包内嵌技能(RolePackManager)共用同一渐进披露阈值。
|
|
16
|
+
*/
|
|
17
|
+
export const L1_COMPRESSED_THRESHOLD = 30;
|
|
18
|
+
/** L1 阈值保护:技能数超过此值时切换为 list_skills 工具动态查询(SSOT 同一来源) */
|
|
19
|
+
export const L1_LIST_TOOL_THRESHOLD = 50;
|
|
20
|
+
/**
|
|
21
|
+
* 解析来源层(agent / project):SSOT 收口——仅接受合法枚举值,
|
|
22
|
+
* 非法/缺失回退 'project'(与历史默认一致,防御 frontmatter 手误导致契约外值透传宿主)。
|
|
23
|
+
*/
|
|
24
|
+
function resolveLayer(raw) {
|
|
25
|
+
return raw === 'agent' ? 'agent' : 'project';
|
|
26
|
+
}
|
|
26
27
|
/**
|
|
27
28
|
* 技能管理器
|
|
28
29
|
*/
|
|
29
|
-
export class SkillManager {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
export class SkillManager extends ConfigResourceManager {
|
|
31
|
+
/**
|
|
32
|
+
* 已被用户技能覆盖的内置技能名。
|
|
33
|
+
*
|
|
34
|
+
* 与基类 runtimeNames 记账互补:runtimeNames 说明「该项无内核扫描真理源」,
|
|
35
|
+
* 本集合说明「同名磁盘(内置)项被用户版覆盖」——reload 扫描回同名内置时
|
|
36
|
+
* 以用户版为准(基类 isUserOverride 钩子)。load()(纯内置重载)时一并清空。
|
|
37
|
+
*/
|
|
38
|
+
userOverrides = new Set();
|
|
39
|
+
/**
|
|
40
|
+
* 禁用的技能名集合:宿主配置形态启停。命中者
|
|
41
|
+
* get() 返回 null(read_skill/L3 全链路经 get 短路)+ buildSkillList 不枚举。
|
|
42
|
+
* list 快照保持完整——宿主 UI 依据同名设置标注「已禁用」徽章(对 LLM 静默)。
|
|
43
|
+
*
|
|
44
|
+
* **作用域 = 全局技能池(内置/用户)**:角色包内嵌技能由 RolePackManager 持有、
|
|
45
|
+
* 不经本管理器(其启用判据 = 角色是否激活),对本集**免疫**——角色包技能
|
|
46
|
+
* 「随角色启停、不可按名禁用」(见宿主 skillAggregation 定案声明)。
|
|
47
|
+
*/
|
|
48
|
+
disabledNames = new Set();
|
|
34
49
|
/**
|
|
35
50
|
* @param configDir 配置目录(技能文件在 <configDir>/skills/ 下)
|
|
36
|
-
* @param index SQLite 索引(用于写入 skill 记忆)
|
|
37
51
|
*/
|
|
38
|
-
constructor(configDir
|
|
39
|
-
|
|
40
|
-
this.index = index;
|
|
52
|
+
constructor(configDir) {
|
|
53
|
+
super(configDir, 'skills');
|
|
41
54
|
}
|
|
55
|
+
// ── 生命周期 ──────────────────────────────────────
|
|
42
56
|
/**
|
|
43
57
|
* 启动时加载:扫描技能目录
|
|
44
58
|
*
|
|
45
59
|
* @returns 加载的技能数量
|
|
46
60
|
*/
|
|
47
61
|
async load() {
|
|
48
|
-
|
|
49
|
-
logger.info({ count: this.skills.length, names: this.skills.map((s) => s.name) }, '技能加载完成');
|
|
50
|
-
// 写入 SQLite 索引(遵循"万物皆记忆"——与 PersonaManager 一致)
|
|
51
|
-
this.writeAllToIndex();
|
|
52
|
-
return this.skills.length;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* 根据用户输入匹配最合适的技能
|
|
56
|
-
*
|
|
57
|
-
* 匹配流程:
|
|
58
|
-
* 1. 先检查所有 trigger 正则,命中直接返回(最高优先级)
|
|
59
|
-
* 2. 再检查关键词匹配(TF 计分,得分排序)
|
|
60
|
-
* 3. 若匹配多项但得分相同 → 取第一个
|
|
61
|
-
* 4. 无任何匹配 → 返回 null
|
|
62
|
-
*
|
|
63
|
-
* @param userInput 用户输入文本
|
|
64
|
-
* @returns 匹配结果,无匹配返回 null
|
|
65
|
-
*/
|
|
66
|
-
match(userInput) {
|
|
67
|
-
if (this.skills.length === 0)
|
|
68
|
-
return null;
|
|
69
|
-
// 1. trigger 正则匹配(最高优先级)
|
|
70
|
-
for (const skill of this.skills) {
|
|
71
|
-
if (skill.trigger?.test(userInput)) {
|
|
72
|
-
logger.debug({ skill: skill.name, trigger: skill.trigger.source }, '技能触发器匹配');
|
|
73
|
-
return { skill, score: 1.0 };
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
const matches = [];
|
|
77
|
-
for (const skill of this.skills) {
|
|
78
|
-
if (skill.keywords.length === 0)
|
|
79
|
-
continue;
|
|
80
|
-
const score = scoreByKeywords(userInput, skill.keywords);
|
|
81
|
-
if (score > 0) {
|
|
82
|
-
matches.push({ skill, score });
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
if (matches.length === 0)
|
|
86
|
-
return null;
|
|
87
|
-
// 得分从高到低排序,取第一个
|
|
88
|
-
matches.sort(byScoreDesc);
|
|
89
|
-
const best = matches[0];
|
|
90
|
-
if (!best)
|
|
91
|
-
return null;
|
|
92
|
-
logger.debug({ matched: best.skill.name, score: best.score }, '技能关键词匹配');
|
|
93
|
-
return best;
|
|
62
|
+
return this.loadItems();
|
|
94
63
|
}
|
|
64
|
+
// ── 公共方法 ──────────────────────────────────────
|
|
95
65
|
/**
|
|
96
66
|
* 根据技能名获取技能
|
|
97
|
-
*
|
|
98
|
-
* @param name 技能名
|
|
99
|
-
* @returns 技能条目,不存在返回 null
|
|
100
67
|
*/
|
|
101
68
|
get(name) {
|
|
102
|
-
|
|
69
|
+
// 禁用技能对 LLM 不可见:get=null → read_skill 报未找到、L3 全链路短路
|
|
70
|
+
if (this.disabledNames.has(name))
|
|
71
|
+
return null;
|
|
72
|
+
return this.items.find((s) => s.name === name) ?? null;
|
|
103
73
|
}
|
|
104
74
|
/**
|
|
105
|
-
*
|
|
75
|
+
* 设置禁用技能清单(配置形态启停;装配期一次性注入,可由 reloadConfig 重设)
|
|
76
|
+
*
|
|
77
|
+
* @param names 禁用的技能名(命中者 L1/L2/L3 全不可用;对 LLM 语义 = 不存在)
|
|
106
78
|
*/
|
|
107
|
-
|
|
108
|
-
|
|
79
|
+
setDisabledSkills(names) {
|
|
80
|
+
this.disabledNames.clear();
|
|
81
|
+
for (const name of names)
|
|
82
|
+
this.disabledNames.add(name);
|
|
83
|
+
logger.info({ count: this.disabledNames.size }, '技能禁用集已设置');
|
|
109
84
|
}
|
|
110
85
|
/**
|
|
111
|
-
*
|
|
86
|
+
* 当前禁用技能名快照(只读)——宿主 UI 渲染「已禁用」徽章的真源。
|
|
112
87
|
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
88
|
+
* 为何由内核提供而非宿主自读一份配置:**实际生效的禁用集在内核**(`disabledNames` 是
|
|
89
|
+
* `get()` / `buildSkillList()` 的判据)。宿主若另读 workspace 配置,会出现「UI 标注的」
|
|
90
|
+
* 与「实际生效的」两源分叉(如 reloadConfig 重设后不同步)。
|
|
115
91
|
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
92
|
+
* ⚠️ 对 **LLM** 仍然静默:本 getter 仅供宿主 UI 对照显示,
|
|
93
|
+
* **不得**出现在工具返回、L1 清单或任何进入上下文的文本里(语义 = 技能不存在)。
|
|
118
94
|
*/
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
throw configError(`技能 "${skill.name}" 已存在,不能重复注册`, undefined, ['请使用不同的技能名称']);
|
|
122
|
-
}
|
|
123
|
-
this.skills.push(skill);
|
|
124
|
-
logger.info({ name: skill.name, keywords: skill.keywords.length }, '技能已注册(运行时注入)');
|
|
95
|
+
get disabledSkillNames() {
|
|
96
|
+
return [...this.disabledNames];
|
|
125
97
|
}
|
|
126
98
|
/**
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
* 事件驱动重载:installSkill 写入文件后或用户手动编辑 skills/ 目录后,
|
|
130
|
-
* 调用此方法使当前会话立即生效,无需重启 Agent。
|
|
99
|
+
* 注册运行时注入的技能(如 confirmConfigSuggestion 持久化技能);同名重复注册被拒绝。
|
|
131
100
|
*
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
* - reload() → 运行时增量重载(热更新),保留运行时 register() 注入的技能会被覆盖
|
|
135
|
-
*
|
|
136
|
-
* @returns 重载后的技能数量
|
|
101
|
+
* 必须走基类 registerRuntimeItem 登记——直接 push 进 items 会被 reload() 的磁盘扫描结果覆盖
|
|
102
|
+
* (运行时注入项无磁盘真理源,reload 保留依赖 runtimeNames 记账;设定记忆不写记忆库)。
|
|
137
103
|
*/
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
104
|
+
register(skill) {
|
|
105
|
+
if (this.items.some((s) => s.name === skill.name)) {
|
|
106
|
+
throw configError(`技能 "${skill.name}" 已存在,不能重复注册`, undefined, [
|
|
107
|
+
'请使用不同的技能名称',
|
|
108
|
+
]);
|
|
109
|
+
}
|
|
110
|
+
this.registerRuntimeItem(skill);
|
|
111
|
+
logger.info({ name: skill.name }, '技能已注册(运行时注入)');
|
|
144
112
|
}
|
|
145
113
|
/**
|
|
146
114
|
* 构建 system prompt 中的技能段
|
|
147
|
-
*
|
|
148
|
-
* 格式:
|
|
149
|
-
* 【当前技能】技能名
|
|
150
|
-
* 技能 prompt 正文...
|
|
151
|
-
*
|
|
152
|
-
* @param name 技能名(可选,不传返回空)
|
|
153
115
|
*/
|
|
154
116
|
buildSystemPrompt(name) {
|
|
155
117
|
if (!name)
|
|
@@ -159,63 +121,256 @@ export class SkillManager {
|
|
|
159
121
|
return '';
|
|
160
122
|
return `【当前技能】${skill.name}\n${skill.content}`;
|
|
161
123
|
}
|
|
162
|
-
// ── 私有方法 ──────────────────────────────────────
|
|
163
124
|
/**
|
|
164
|
-
*
|
|
125
|
+
* 格式化单个技能为 Prompt 字符串
|
|
165
126
|
*
|
|
166
|
-
*
|
|
127
|
+
* SSOT:所有技能展示(System Prompt、Tool 回调)必须走此方法保证格式统一。
|
|
128
|
+
* compress=true 时描述截断至 20 字(技能较多时的 token 节约)。
|
|
167
129
|
*/
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
130
|
+
static formatSkillForPrompt(skill, fallbackName, compress = false) {
|
|
131
|
+
const label = skill?.name || fallbackName || '';
|
|
132
|
+
if (!label)
|
|
133
|
+
return '';
|
|
134
|
+
let desc = '';
|
|
135
|
+
if (skill?.description) {
|
|
136
|
+
const descText = compress && skill.description.length > 20
|
|
137
|
+
? skill.description.slice(0, 20) + '…'
|
|
138
|
+
: skill.description;
|
|
139
|
+
desc = `:${descText}`;
|
|
173
140
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
141
|
+
const hasL3 = skill?.layer3 && (skill.layer3.resources.length > 0 || skill.layer3.scripts.length > 0);
|
|
142
|
+
const l3Tag = hasL3 ? '(含资源/脚本)' : '';
|
|
143
|
+
return `- ${label}${desc}${l3Tag}`;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* 对 **LLM 可见**的技能条目——渐进披露可用性判据的**唯一真理源**。
|
|
147
|
+
*
|
|
148
|
+
* 判据两条(缺一不可):
|
|
149
|
+
* ① 有 `description`(渐进披露的唯一依据:缺则模型不知何时激活);
|
|
150
|
+
* ② 未命中 `disabledNames`(启停:对模型语义 = 不存在)。
|
|
151
|
+
*
|
|
152
|
+
* ⚠️ **L1 枚举**(`buildSkillList`)与 **`list_skills` 工具侧**(assembler 注入回调)
|
|
153
|
+
* 必须共用本方法:两者同为 **LLM 消费**、是同一份清单的两个交付通道,
|
|
154
|
+
* 判据一旦分叉即「双轨镜像」(同一模型在两条路径看到不同技能集)。
|
|
155
|
+
* 教训:启停/可用性过滤须两侧同步——单侧漏改会让禁用技能在另一通道仍可见。
|
|
156
|
+
*
|
|
157
|
+
* 注:本方法**不**过滤 L3 归属,也不做排序——排序由调用方决定(两通道排序本就不同)。
|
|
158
|
+
*/
|
|
159
|
+
listAvailable() {
|
|
160
|
+
return this.items.filter((s) => s.description?.trim() && !this.disabledNames.has(s.name));
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* 构建全局技能清单块(渐进披露 L1),与角色包技能清单同格式。
|
|
164
|
+
* 两级技能同构:通用技能全局激活,角色包技能随角色激活;LLM 按需调 read_skill 读正文(L2)。
|
|
165
|
+
* 含 resources/scripts 的技能附加 "(含资源/脚本)" 标记。
|
|
166
|
+
*
|
|
167
|
+
* L1 阈值保护(与角色包 buildSystemPrompt 同构):
|
|
168
|
+
* ≤ 30 技能:完整 L1(name + full description)
|
|
169
|
+
* 31-50 技能:压缩 L1(name + 20 字摘要)
|
|
170
|
+
* > 50 技能:切换 list_skills 工具动态查询,不在 system prompt 枚举
|
|
171
|
+
*/
|
|
172
|
+
buildSkillList() {
|
|
173
|
+
// 可用性 + 禁用过滤**收口于 listAvailable**(LLM 可见集唯一真理源,
|
|
174
|
+
// 与 list_skills 工具侧共用;此处不再自写 filter,防两通道判据分叉)。
|
|
175
|
+
// 不进清单者由宿主 UI 显式标注而非静默隐藏:「未生效」= 健康徽章 / 禁用 = 「已禁用」徽章。
|
|
176
|
+
const candidates = this.listAvailable();
|
|
177
|
+
if (candidates.length === 0)
|
|
178
|
+
return '';
|
|
179
|
+
const skillCount = candidates.length;
|
|
180
|
+
// L1 阈值保护:超上限不枚举,提示用 list_skills 工具动态查询
|
|
181
|
+
if (skillCount > L1_LIST_TOOL_THRESHOLD) {
|
|
182
|
+
return `【通用技能(${skillCount} 个,数量较多,使用 list_skills 工具查询具体清单)】`;
|
|
183
|
+
}
|
|
184
|
+
const compressed = skillCount > L1_COMPRESSED_THRESHOLD;
|
|
185
|
+
const listed = candidates
|
|
186
|
+
.map((skill) => SkillManager.formatSkillForPrompt(skill, undefined, compressed))
|
|
187
|
+
.filter(Boolean);
|
|
188
|
+
if (listed.length === 0)
|
|
189
|
+
return '';
|
|
190
|
+
const modeNote = compressed
|
|
191
|
+
? '(技能较多,描述已压缩至 20 字,可用 read_skill 读取完整正文)'
|
|
192
|
+
: '(渐进披露 L1,按需调用 read_skill 读取正文)';
|
|
193
|
+
return `【通用技能${modeNote}】\n${listed.join('\n')}`;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* 校验单技能文件(写→验→用闭环,宿主 UI 校验入口)。
|
|
197
|
+
* 复用 parser frontmatter 解析做单一真理源,不重写解析;只做确定性结构检查,不做语义 schema。
|
|
198
|
+
* 判级(三点强化):
|
|
199
|
+
* - error:无 frontmatter / description 缺失/空(渐进披露唯一依据,缺则技能不可用)/ 正文空
|
|
200
|
+
* - warning:layer 非法(回退 project)
|
|
201
|
+
*/
|
|
202
|
+
async validateFile(filePath) {
|
|
203
|
+
const issues = [];
|
|
204
|
+
// 读取收口于 fileSafe.readFileCapped(统一长度上限保护,与角色包内容读取同级)
|
|
205
|
+
const raw = await readFileCapped(filePath);
|
|
206
|
+
if (raw === null) {
|
|
207
|
+
return {
|
|
208
|
+
ok: false,
|
|
209
|
+
issues: [{ level: 'error', field: 'file', message: '无法读取技能文件' }],
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
const { frontmatter, body } = parseFrontmatter(raw);
|
|
213
|
+
// 无 frontmatter 结构(fallback:整体落入 body 且无任何键值)→ 不被识别
|
|
214
|
+
if (Object.keys(frontmatter).length === 0 && body === raw) {
|
|
215
|
+
issues.push({
|
|
216
|
+
level: 'error',
|
|
217
|
+
field: 'frontmatter',
|
|
218
|
+
message: '缺少 frontmatter(文件需以 --- 开头声明 name/description)',
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
const desc = frontmatter['description'];
|
|
222
|
+
if (!desc || !desc.trim()) {
|
|
223
|
+
issues.push({
|
|
224
|
+
level: 'error',
|
|
225
|
+
field: 'description',
|
|
226
|
+
message: '缺少 description:渐进披露不暴露,模型不知何时激活此技能',
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
if (!body.trim()) {
|
|
230
|
+
issues.push({ level: 'error', field: 'body', message: '技能正文为空,无可执行指令' });
|
|
231
|
+
}
|
|
232
|
+
const layer = frontmatter['layer'];
|
|
233
|
+
if (layer && layer !== 'agent' && layer !== 'project') {
|
|
234
|
+
issues.push({
|
|
235
|
+
level: 'warning',
|
|
236
|
+
field: 'layer',
|
|
237
|
+
message: `layer 值「${layer}」非法,将回退为 project`,
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
return { ok: issues.every((i) => i.level !== 'error'), issues };
|
|
241
|
+
}
|
|
242
|
+
// ── L3 资源/脚本访问 ──────────────────────────────────
|
|
243
|
+
/**
|
|
244
|
+
* 读取技能的 L3 资源文件(渐进披露 L3);资源须在 layer3 中且路径不逃逸其来源子目录
|
|
245
|
+
* (resources/ 或 references/,兼容主流 references/ 辅助文档目录)
|
|
246
|
+
*/
|
|
247
|
+
async readResource(skillName, resourcePath) {
|
|
248
|
+
const skill = this.get(skillName);
|
|
249
|
+
if (!skill)
|
|
250
|
+
return null;
|
|
251
|
+
// 白名单前置:资源须已由扫描登记在 layer3 中(未登记 → 静默 null)
|
|
252
|
+
if (!findLayer3Resource(skill.layer3, resourcePath))
|
|
253
|
+
return null;
|
|
254
|
+
// 路径解析(按条目来源子目录选基目录 + 路径穿越防护)收口于 skillLayer3(SSOT)
|
|
255
|
+
const skillDir = resolveSkillDir(skill.filePath);
|
|
256
|
+
const resourceFullPath = resolveLayer3ResourcePath(skillDir, skill.layer3, resourcePath);
|
|
257
|
+
if (!resourceFullPath) {
|
|
258
|
+
logger.warn({ skill: skillName, resourcePath }, 'read_resource 路径穿越被阻止');
|
|
259
|
+
return null;
|
|
260
|
+
}
|
|
261
|
+
// 读取收口于 fileSafe.readFileCapped:长度上限保护与角色包内嵌技能同级(差异点取更全面形态)
|
|
262
|
+
const content = await readFileCapped(resourceFullPath);
|
|
263
|
+
if (content === null) {
|
|
264
|
+
logger.warn({ skill: skillName, resourcePath }, '读取 L3 资源失败');
|
|
265
|
+
return null;
|
|
266
|
+
}
|
|
267
|
+
return content;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* 列出技能的 L3 资源
|
|
271
|
+
*/
|
|
272
|
+
listResources(skillName) {
|
|
273
|
+
const skill = this.get(skillName);
|
|
274
|
+
return skill?.layer3?.resources ?? [];
|
|
193
275
|
}
|
|
194
276
|
/**
|
|
195
|
-
*
|
|
277
|
+
* 列出技能的 L3 脚本
|
|
278
|
+
*/
|
|
279
|
+
listScripts(skillName) {
|
|
280
|
+
const skill = this.get(skillName);
|
|
281
|
+
return skill?.layer3?.scripts ?? [];
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* 获取脚本的完整路径(须在 layer3 中且路径不逃逸 scripts/ 目录)
|
|
285
|
+
*/
|
|
286
|
+
getScriptPath(skillName, scriptPath) {
|
|
287
|
+
const skill = this.get(skillName);
|
|
288
|
+
if (!skill)
|
|
289
|
+
return null;
|
|
290
|
+
const skillDir = resolveSkillDir(skill.filePath);
|
|
291
|
+
const fullPath = resolveLayer3ScriptPath(skillDir, skill.layer3, scriptPath);
|
|
292
|
+
if (!fullPath)
|
|
293
|
+
return null;
|
|
294
|
+
// 存在性校验与角色包内嵌技能对齐(差异点取更全面形态):防止交出指向缺失脚本的路径
|
|
295
|
+
return existsSyncSafe(fullPath) ? fullPath : null;
|
|
296
|
+
}
|
|
297
|
+
// ── 基类抽象方法实现 ──────────────────────────────
|
|
298
|
+
/**
|
|
299
|
+
* 加载用户目录的技能(宿主调用,用于扩展内置技能池)
|
|
300
|
+
*
|
|
301
|
+
* 与 load() 的区别:
|
|
302
|
+
* - load() 从 configDir/skills/ 扫描内置技能(有磁盘真理源)
|
|
303
|
+
* - loadExtraDir() 从额外目录扫描用户技能(运行时注入,reload 时保留)
|
|
304
|
+
*
|
|
305
|
+
* 设计哲学:内核保持单一真理源(configDir/skills/),宿主负责扩展用户目录。
|
|
306
|
+
* 用户技能通过 registerRuntimeItem 注入,reload() 时会保留(同名冲突以磁盘为准)。
|
|
196
307
|
*
|
|
197
|
-
*
|
|
198
|
-
*
|
|
199
|
-
*/
|
|
200
|
-
async
|
|
201
|
-
const
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
308
|
+
* @param dir 用户技能目录(如 ~/.memora/skills/)
|
|
309
|
+
* @returns 加载的技能数量
|
|
310
|
+
*/
|
|
311
|
+
async loadExtraDir(dir) {
|
|
312
|
+
const entries = await scanMarkdownDir(dir);
|
|
313
|
+
let count = 0;
|
|
314
|
+
for (const entry of entries) {
|
|
315
|
+
// 已是用户覆盖项(本会话此前注入过):幂等跳过,避免同名双存重复注入
|
|
316
|
+
if (this.userOverrides.has(entry.name))
|
|
317
|
+
continue;
|
|
318
|
+
const existingIdx = this.items.findIndex((s) => s.name === entry.name);
|
|
319
|
+
const skill = await this.createEntry(entry);
|
|
320
|
+
if (!skill)
|
|
321
|
+
continue;
|
|
322
|
+
// 同名覆盖(对齐主流「用户可覆盖内置」):用户版生效——
|
|
323
|
+
// 移除内置版(磁盘真理源,reload 可重扫)、
|
|
324
|
+
// 登记 userOverrides 供 reload 保持用户版胜出(基类 isUserOverride 钩子);
|
|
325
|
+
// 不覆盖则用户同名技能会被静默丢弃。
|
|
326
|
+
if (existingIdx >= 0) {
|
|
327
|
+
this.items.splice(existingIdx, 1);
|
|
328
|
+
this.userOverrides.add(entry.name);
|
|
329
|
+
logger.info({ name: entry.name }, '用户技能覆盖内置技能');
|
|
216
330
|
}
|
|
331
|
+
this.registerRuntimeItem(skill);
|
|
332
|
+
count++;
|
|
217
333
|
}
|
|
218
|
-
|
|
334
|
+
logger.info({ count, dir }, '用户技能加载完成');
|
|
335
|
+
return count;
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* 用户覆盖声明:userOverrides 中记录的同名技能,reload 扫描回内置版时
|
|
339
|
+
* 用户版胜出、内置版剔除(基类 retainRuntimeItems 消费)。其余同名不声明——
|
|
340
|
+
* 保持基类默认「磁盘(内置)赢」语义(如 register() 运行时技能撞内置仍内置赢)。
|
|
341
|
+
*/
|
|
342
|
+
isUserOverride(name) {
|
|
343
|
+
return this.userOverrides.has(name);
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* load()(纯内置重载)后 userOverrides 一并清空——与基类 runtimeNames 同寿命:
|
|
347
|
+
* load() 整体替换 items、运行时注入全丢,账目须同步;否则残留名字会在未来
|
|
348
|
+
* loadExtraDir 同名时被幂等跳过(见其开头判定),用户技能静默丢失。
|
|
349
|
+
*/
|
|
350
|
+
onAfterLoad() {
|
|
351
|
+
this.userOverrides.clear();
|
|
352
|
+
}
|
|
353
|
+
async createEntry(entry) {
|
|
354
|
+
// L3 隔离纪律(对齐 Claude Code 主流):仅「文件夹形态」(入口为 SKILL.md)才发现
|
|
355
|
+
// resources/ scripts/。顶层裸 .md 单文件技能目录 = 技能池共享根,同级扫描会把别的技能的
|
|
356
|
+
// resources/scripts 误归给自己 → 污染。故裸 .md 为纯 L1/L2,需要 L3 资源/脚本必须用文件夹+SKILL.md。
|
|
357
|
+
//
|
|
358
|
+
// 该规则与角色包内嵌技能**逐字同构**;发现与投影均已收口于 skillLayer3
|
|
359
|
+
// (discoverSkillLayer3 + projectDiscoveredLayer3,SSOT)——两侧各写一遍投影,
|
|
360
|
+
// 改一处即静默漂移。
|
|
361
|
+
const discovered = await discoverSkillLayer3(entry.filePath);
|
|
362
|
+
const layer3 = projectDiscoveredLayer3(discovered);
|
|
363
|
+
return {
|
|
364
|
+
name: entry.name,
|
|
365
|
+
description: entry.frontmatter['description'],
|
|
366
|
+
content: entry.body.trim(),
|
|
367
|
+
filePath: entry.filePath,
|
|
368
|
+
// 来源层(agent / project):解析 frontmatter.layer,非法/缺失回退 project(与现状默认一致)。
|
|
369
|
+
// ⚠️ 展示语义不由本字段单独决定:宿主以 filePath 前缀为主判据,
|
|
370
|
+
// 本字段仅在无路径/未命中时兜底(project → 用户源,agent → 内置源)。
|
|
371
|
+
layer: resolveLayer(entry.frontmatter['layer']),
|
|
372
|
+
layer3,
|
|
373
|
+
};
|
|
219
374
|
}
|
|
220
375
|
}
|
|
221
376
|
//# sourceMappingURL=skillManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillManager.js","sourceRoot":"","sources":["../../src/skill/skillManager.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"skillManager.js","sourceRoot":"","sources":["../../src/skill/skillManager.ts"],"names":[],"mappings":"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"}
|