@framers/agentos 0.1.120 → 0.1.122
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/README.md +21 -0
- package/dist/api/agency.d.ts.map +1 -1
- package/dist/api/agency.js +227 -84
- package/dist/api/agency.js.map +1 -1
- package/dist/api/analyzeVideo.d.ts +127 -0
- package/dist/api/analyzeVideo.d.ts.map +1 -0
- package/dist/api/analyzeVideo.js +136 -0
- package/dist/api/analyzeVideo.js.map +1 -0
- package/dist/api/detectScenes.d.ts +82 -0
- package/dist/api/detectScenes.d.ts.map +1 -0
- package/dist/api/detectScenes.js +67 -0
- package/dist/api/detectScenes.js.map +1 -0
- package/dist/api/generateImage.d.ts +7 -0
- package/dist/api/generateImage.d.ts.map +1 -1
- package/dist/api/generateImage.js +133 -9
- package/dist/api/generateImage.js.map +1 -1
- package/dist/api/generateMusic.d.ts +98 -0
- package/dist/api/generateMusic.d.ts.map +1 -0
- package/dist/api/generateMusic.js +319 -0
- package/dist/api/generateMusic.js.map +1 -0
- package/dist/api/generateSFX.d.ts +96 -0
- package/dist/api/generateSFX.d.ts.map +1 -0
- package/dist/api/generateSFX.js +317 -0
- package/dist/api/generateSFX.js.map +1 -0
- package/dist/api/generateVideo.d.ts +113 -0
- package/dist/api/generateVideo.d.ts.map +1 -0
- package/dist/api/generateVideo.js +342 -0
- package/dist/api/generateVideo.js.map +1 -0
- package/dist/api/model.d.ts.map +1 -1
- package/dist/api/model.js +8 -4
- package/dist/api/model.js.map +1 -1
- package/dist/api/performOCR.d.ts +169 -0
- package/dist/api/performOCR.d.ts.map +1 -0
- package/dist/api/performOCR.js +198 -0
- package/dist/api/performOCR.js.map +1 -0
- package/dist/api/provider-defaults.d.ts +7 -5
- package/dist/api/provider-defaults.d.ts.map +1 -1
- package/dist/api/provider-defaults.js +32 -10
- package/dist/api/provider-defaults.js.map +1 -1
- package/dist/api/strategies/debate.d.ts.map +1 -1
- package/dist/api/strategies/debate.js +1 -0
- package/dist/api/strategies/debate.js.map +1 -1
- package/dist/api/strategies/graph.d.ts.map +1 -1
- package/dist/api/strategies/graph.js +69 -13
- package/dist/api/strategies/graph.js.map +1 -1
- package/dist/api/strategies/hierarchical.d.ts.map +1 -1
- package/dist/api/strategies/hierarchical.js +1 -0
- package/dist/api/strategies/hierarchical.js.map +1 -1
- package/dist/api/strategies/parallel.d.ts.map +1 -1
- package/dist/api/strategies/parallel.js +1 -0
- package/dist/api/strategies/parallel.js.map +1 -1
- package/dist/api/strategies/review-loop.d.ts.map +1 -1
- package/dist/api/strategies/review-loop.js +1 -0
- package/dist/api/strategies/review-loop.js.map +1 -1
- package/dist/api/strategies/sequential.d.ts.map +1 -1
- package/dist/api/strategies/sequential.js +54 -48
- package/dist/api/strategies/sequential.js.map +1 -1
- package/dist/api/streamBuffer.d.ts +20 -0
- package/dist/api/streamBuffer.d.ts.map +1 -0
- package/dist/api/streamBuffer.js +81 -0
- package/dist/api/streamBuffer.js.map +1 -0
- package/dist/api/types.d.ts +145 -5
- package/dist/api/types.d.ts.map +1 -1
- package/dist/api/types.js.map +1 -1
- package/dist/channels/adapters/RedditChannelAdapter.js.map +1 -1
- package/dist/core/audio/AudioProcessor.d.ts.map +1 -1
- package/dist/core/audio/AudioProcessor.js +1 -0
- package/dist/core/audio/AudioProcessor.js.map +1 -1
- package/dist/core/audio/EnvironmentalCalibrator.d.ts.map +1 -1
- package/dist/core/audio/EnvironmentalCalibrator.js +1 -0
- package/dist/core/audio/EnvironmentalCalibrator.js.map +1 -1
- package/dist/core/audio/FallbackAudioProxy.d.ts +169 -0
- package/dist/core/audio/FallbackAudioProxy.d.ts.map +1 -0
- package/dist/core/audio/FallbackAudioProxy.js +236 -0
- package/dist/core/audio/FallbackAudioProxy.js.map +1 -0
- package/dist/core/audio/IAudioGenerator.d.ts +103 -0
- package/dist/core/audio/IAudioGenerator.d.ts.map +1 -0
- package/dist/core/audio/IAudioGenerator.js +24 -0
- package/dist/core/audio/IAudioGenerator.js.map +1 -0
- package/dist/core/audio/index.d.ts +54 -0
- package/dist/core/audio/index.d.ts.map +1 -1
- package/dist/core/audio/index.js +93 -0
- package/dist/core/audio/index.js.map +1 -1
- package/dist/core/audio/providers/AudioGenLocalProvider.d.ts +136 -0
- package/dist/core/audio/providers/AudioGenLocalProvider.d.ts.map +1 -0
- package/dist/core/audio/providers/AudioGenLocalProvider.js +235 -0
- package/dist/core/audio/providers/AudioGenLocalProvider.js.map +1 -0
- package/dist/core/audio/providers/ElevenLabsSFXProvider.d.ts +107 -0
- package/dist/core/audio/providers/ElevenLabsSFXProvider.d.ts.map +1 -0
- package/dist/core/audio/providers/ElevenLabsSFXProvider.js +154 -0
- package/dist/core/audio/providers/ElevenLabsSFXProvider.js.map +1 -0
- package/dist/core/audio/providers/FalAudioProvider.d.ts +207 -0
- package/dist/core/audio/providers/FalAudioProvider.d.ts.map +1 -0
- package/dist/core/audio/providers/FalAudioProvider.js +315 -0
- package/dist/core/audio/providers/FalAudioProvider.js.map +1 -0
- package/dist/core/audio/providers/MusicGenLocalProvider.d.ts +136 -0
- package/dist/core/audio/providers/MusicGenLocalProvider.d.ts.map +1 -0
- package/dist/core/audio/providers/MusicGenLocalProvider.js +235 -0
- package/dist/core/audio/providers/MusicGenLocalProvider.js.map +1 -0
- package/dist/core/audio/providers/ReplicateAudioProvider.d.ts +200 -0
- package/dist/core/audio/providers/ReplicateAudioProvider.d.ts.map +1 -0
- package/dist/core/audio/providers/ReplicateAudioProvider.js +346 -0
- package/dist/core/audio/providers/ReplicateAudioProvider.js.map +1 -0
- package/dist/core/audio/providers/StableAudioProvider.d.ts +138 -0
- package/dist/core/audio/providers/StableAudioProvider.d.ts.map +1 -0
- package/dist/core/audio/providers/StableAudioProvider.js +192 -0
- package/dist/core/audio/providers/StableAudioProvider.js.map +1 -0
- package/dist/core/audio/providers/SunoProvider.d.ts +182 -0
- package/dist/core/audio/providers/SunoProvider.d.ts.map +1 -0
- package/dist/core/audio/providers/SunoProvider.js +312 -0
- package/dist/core/audio/providers/SunoProvider.js.map +1 -0
- package/dist/core/audio/providers/UdioProvider.d.ts +177 -0
- package/dist/core/audio/providers/UdioProvider.d.ts.map +1 -0
- package/dist/core/audio/providers/UdioProvider.js +305 -0
- package/dist/core/audio/providers/UdioProvider.js.map +1 -0
- package/dist/core/audio/types.d.ts +257 -0
- package/dist/core/audio/types.d.ts.map +1 -0
- package/dist/core/audio/types.js +21 -0
- package/dist/core/audio/types.js.map +1 -0
- package/dist/core/images/FallbackImageProxy.d.ts +183 -0
- package/dist/core/images/FallbackImageProxy.d.ts.map +1 -0
- package/dist/core/images/FallbackImageProxy.js +283 -0
- package/dist/core/images/FallbackImageProxy.js.map +1 -0
- package/dist/core/images/IImageProvider.d.ts +1 -1
- package/dist/core/images/IImageProvider.d.ts.map +1 -1
- package/dist/core/images/index.d.ts +1 -0
- package/dist/core/images/index.d.ts.map +1 -1
- package/dist/core/images/index.js +1 -0
- package/dist/core/images/index.js.map +1 -1
- package/dist/core/llm/providers/AIModelProviderManager.d.ts +3 -1
- package/dist/core/llm/providers/AIModelProviderManager.d.ts.map +1 -1
- package/dist/core/llm/providers/AIModelProviderManager.js +8 -0
- package/dist/core/llm/providers/AIModelProviderManager.js.map +1 -1
- package/dist/core/llm/providers/errors/ClaudeCodeProviderError.d.ts +52 -0
- package/dist/core/llm/providers/errors/ClaudeCodeProviderError.d.ts.map +1 -0
- package/dist/core/llm/providers/errors/ClaudeCodeProviderError.js +36 -0
- package/dist/core/llm/providers/errors/ClaudeCodeProviderError.js.map +1 -0
- package/dist/core/llm/providers/errors/GeminiCLIProviderError.d.ts +32 -0
- package/dist/core/llm/providers/errors/GeminiCLIProviderError.d.ts.map +1 -0
- package/dist/core/llm/providers/errors/GeminiCLIProviderError.js +27 -0
- package/dist/core/llm/providers/errors/GeminiCLIProviderError.js.map +1 -0
- package/dist/core/llm/providers/implementations/ClaudeCodeCLIBridge.d.ts +38 -0
- package/dist/core/llm/providers/implementations/ClaudeCodeCLIBridge.d.ts.map +1 -0
- package/dist/core/llm/providers/implementations/ClaudeCodeCLIBridge.js +128 -0
- package/dist/core/llm/providers/implementations/ClaudeCodeCLIBridge.js.map +1 -0
- package/dist/core/llm/providers/implementations/ClaudeCodeProvider.d.ts +107 -0
- package/dist/core/llm/providers/implementations/ClaudeCodeProvider.d.ts.map +1 -0
- package/dist/core/llm/providers/implementations/ClaudeCodeProvider.js +504 -0
- package/dist/core/llm/providers/implementations/ClaudeCodeProvider.js.map +1 -0
- package/dist/core/llm/providers/implementations/GeminiCLIBridge.d.ts +60 -0
- package/dist/core/llm/providers/implementations/GeminiCLIBridge.d.ts.map +1 -0
- package/dist/core/llm/providers/implementations/GeminiCLIBridge.js +177 -0
- package/dist/core/llm/providers/implementations/GeminiCLIBridge.js.map +1 -0
- package/dist/core/llm/providers/implementations/GeminiCLIProvider.d.ts +55 -0
- package/dist/core/llm/providers/implementations/GeminiCLIProvider.d.ts.map +1 -0
- package/dist/core/llm/providers/implementations/GeminiCLIProvider.js +447 -0
- package/dist/core/llm/providers/implementations/GeminiCLIProvider.js.map +1 -0
- package/dist/core/media/ProviderPreferences.d.ts +158 -0
- package/dist/core/media/ProviderPreferences.d.ts.map +1 -0
- package/dist/core/media/ProviderPreferences.js +183 -0
- package/dist/core/media/ProviderPreferences.js.map +1 -0
- package/dist/core/subprocess/CLIRegistry.d.ts +71 -0
- package/dist/core/subprocess/CLIRegistry.d.ts.map +1 -0
- package/dist/core/subprocess/CLIRegistry.js +210 -0
- package/dist/core/subprocess/CLIRegistry.js.map +1 -0
- package/dist/core/subprocess/CLISubprocessBridge.d.ts +117 -0
- package/dist/core/subprocess/CLISubprocessBridge.d.ts.map +1 -0
- package/dist/core/subprocess/CLISubprocessBridge.js +199 -0
- package/dist/core/subprocess/CLISubprocessBridge.js.map +1 -0
- package/dist/core/subprocess/errors.d.ts +76 -0
- package/dist/core/subprocess/errors.d.ts.map +1 -0
- package/dist/core/subprocess/errors.js +75 -0
- package/dist/core/subprocess/errors.js.map +1 -0
- package/dist/core/subprocess/index.d.ts +11 -0
- package/dist/core/subprocess/index.d.ts.map +1 -0
- package/dist/core/subprocess/index.js +10 -0
- package/dist/core/subprocess/index.js.map +1 -0
- package/dist/core/subprocess/types.d.ts +100 -0
- package/dist/core/subprocess/types.d.ts.map +1 -0
- package/dist/core/subprocess/types.js +9 -0
- package/dist/core/subprocess/types.js.map +1 -0
- package/dist/core/video/FallbackVideoProxy.d.ts +166 -0
- package/dist/core/video/FallbackVideoProxy.d.ts.map +1 -0
- package/dist/core/video/FallbackVideoProxy.js +228 -0
- package/dist/core/video/FallbackVideoProxy.js.map +1 -0
- package/dist/core/video/IVideoAnalyzer.d.ts +29 -0
- package/dist/core/video/IVideoAnalyzer.d.ts.map +1 -0
- package/dist/core/video/IVideoAnalyzer.js +12 -0
- package/dist/core/video/IVideoAnalyzer.js.map +1 -0
- package/dist/core/video/IVideoGenerator.d.ts +76 -0
- package/dist/core/video/IVideoGenerator.d.ts.map +1 -0
- package/dist/core/video/IVideoGenerator.js +13 -0
- package/dist/core/video/IVideoGenerator.js.map +1 -0
- package/dist/core/video/VideoAnalyzer.d.ts +278 -0
- package/dist/core/video/VideoAnalyzer.d.ts.map +1 -0
- package/dist/core/video/VideoAnalyzer.js +648 -0
- package/dist/core/video/VideoAnalyzer.js.map +1 -0
- package/dist/core/video/index.d.ts +55 -0
- package/dist/core/video/index.d.ts.map +1 -0
- package/dist/core/video/index.js +78 -0
- package/dist/core/video/index.js.map +1 -0
- package/dist/core/video/providers/FalVideoProvider.d.ts +195 -0
- package/dist/core/video/providers/FalVideoProvider.d.ts.map +1 -0
- package/dist/core/video/providers/FalVideoProvider.js +322 -0
- package/dist/core/video/providers/FalVideoProvider.js.map +1 -0
- package/dist/core/video/providers/ReplicateVideoProvider.d.ts +194 -0
- package/dist/core/video/providers/ReplicateVideoProvider.d.ts.map +1 -0
- package/dist/core/video/providers/ReplicateVideoProvider.js +356 -0
- package/dist/core/video/providers/ReplicateVideoProvider.js.map +1 -0
- package/dist/core/video/providers/RunwayVideoProvider.d.ts +175 -0
- package/dist/core/video/providers/RunwayVideoProvider.d.ts.map +1 -0
- package/dist/core/video/providers/RunwayVideoProvider.js +293 -0
- package/dist/core/video/providers/RunwayVideoProvider.js.map +1 -0
- package/dist/core/video/types.d.ts +441 -0
- package/dist/core/video/types.d.ts.map +1 -0
- package/dist/core/video/types.js +10 -0
- package/dist/core/video/types.js.map +1 -0
- package/dist/core/vision/SceneDetector.d.ts +180 -0
- package/dist/core/vision/SceneDetector.d.ts.map +1 -0
- package/dist/core/vision/SceneDetector.js +366 -0
- package/dist/core/vision/SceneDetector.js.map +1 -0
- package/dist/core/vision/index.d.ts +2 -1
- package/dist/core/vision/index.d.ts.map +1 -1
- package/dist/core/vision/index.js +1 -0
- package/dist/core/vision/index.js.map +1 -1
- package/dist/core/vision/types.d.ts +125 -0
- package/dist/core/vision/types.d.ts.map +1 -1
- package/dist/discovery/CapabilityDiscoveryEngine.d.ts +32 -0
- package/dist/discovery/CapabilityDiscoveryEngine.d.ts.map +1 -1
- package/dist/discovery/CapabilityDiscoveryEngine.js +46 -0
- package/dist/discovery/CapabilityDiscoveryEngine.js.map +1 -1
- package/dist/emergent/AdaptPersonalityTool.d.ts +158 -0
- package/dist/emergent/AdaptPersonalityTool.d.ts.map +1 -0
- package/dist/emergent/AdaptPersonalityTool.js +190 -0
- package/dist/emergent/AdaptPersonalityTool.js.map +1 -0
- package/dist/emergent/CreateWorkflowTool.d.ts +181 -0
- package/dist/emergent/CreateWorkflowTool.d.ts.map +1 -0
- package/dist/emergent/CreateWorkflowTool.js +307 -0
- package/dist/emergent/CreateWorkflowTool.js.map +1 -0
- package/dist/emergent/ManageSkillsTool.d.ts +154 -0
- package/dist/emergent/ManageSkillsTool.d.ts.map +1 -0
- package/dist/emergent/ManageSkillsTool.js +241 -0
- package/dist/emergent/ManageSkillsTool.js.map +1 -0
- package/dist/emergent/PersonalityMutationStore.d.ts +183 -0
- package/dist/emergent/PersonalityMutationStore.d.ts.map +1 -0
- package/dist/emergent/PersonalityMutationStore.js +222 -0
- package/dist/emergent/PersonalityMutationStore.js.map +1 -0
- package/dist/emergent/SelfEvaluateTool.d.ts +189 -0
- package/dist/emergent/SelfEvaluateTool.d.ts.map +1 -0
- package/dist/emergent/SelfEvaluateTool.js +353 -0
- package/dist/emergent/SelfEvaluateTool.js.map +1 -0
- package/dist/emergent/SelfImprovementConfig.d.ts +166 -0
- package/dist/emergent/SelfImprovementConfig.d.ts.map +1 -0
- package/dist/emergent/SelfImprovementConfig.js +43 -0
- package/dist/emergent/SelfImprovementConfig.js.map +1 -0
- package/dist/emergent/index.d.ts +1 -0
- package/dist/emergent/index.d.ts.map +1 -1
- package/dist/emergent/index.js +1 -0
- package/dist/emergent/index.js.map +1 -1
- package/dist/emergent/types.d.ts +9 -0
- package/dist/emergent/types.d.ts.map +1 -1
- package/dist/emergent/types.js.map +1 -1
- package/dist/extensions/MultiRegistryLoader.js.map +1 -1
- package/dist/index.d.ts +17 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/memory/CognitiveMemoryManager.d.ts +40 -0
- package/dist/memory/CognitiveMemoryManager.d.ts.map +1 -1
- package/dist/memory/CognitiveMemoryManager.js +54 -1
- package/dist/memory/CognitiveMemoryManager.js.map +1 -1
- package/dist/memory/facade/Memory.d.ts +4 -0
- package/dist/memory/facade/Memory.d.ts.map +1 -1
- package/dist/memory/facade/Memory.js +140 -4
- package/dist/memory/facade/Memory.js.map +1 -1
- package/dist/memory/facade/types.d.ts +30 -2
- package/dist/memory/facade/types.d.ts.map +1 -1
- package/dist/memory/index.d.ts +1 -0
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +1 -0
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/types.d.ts +15 -0
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/query-router/QueryClassifier.d.ts +192 -21
- package/dist/query-router/QueryClassifier.d.ts.map +1 -1
- package/dist/query-router/QueryClassifier.js +604 -23
- package/dist/query-router/QueryClassifier.js.map +1 -1
- package/dist/query-router/QueryDispatcher.d.ts +106 -8
- package/dist/query-router/QueryDispatcher.d.ts.map +1 -1
- package/dist/query-router/QueryDispatcher.js +387 -8
- package/dist/query-router/QueryDispatcher.js.map +1 -1
- package/dist/query-router/QueryRouter.d.ts +198 -14
- package/dist/query-router/QueryRouter.d.ts.map +1 -1
- package/dist/query-router/QueryRouter.js +738 -50
- package/dist/query-router/QueryRouter.js.map +1 -1
- package/dist/query-router/index.d.ts +1 -1
- package/dist/query-router/index.d.ts.map +1 -1
- package/dist/query-router/index.js +1 -1
- package/dist/query-router/index.js.map +1 -1
- package/dist/query-router/types.d.ts +396 -3
- package/dist/query-router/types.d.ts.map +1 -1
- package/dist/query-router/types.js +35 -0
- package/dist/query-router/types.js.map +1 -1
- package/dist/rag/HydeRetriever.d.ts +108 -0
- package/dist/rag/HydeRetriever.d.ts.map +1 -1
- package/dist/rag/HydeRetriever.js +184 -0
- package/dist/rag/HydeRetriever.js.map +1 -1
- package/dist/rag/IRetrievalAugmentor.d.ts +15 -0
- package/dist/rag/IRetrievalAugmentor.d.ts.map +1 -1
- package/dist/rag/RetrievalAugmentor.d.ts +58 -0
- package/dist/rag/RetrievalAugmentor.d.ts.map +1 -1
- package/dist/rag/RetrievalAugmentor.js +200 -32
- package/dist/rag/RetrievalAugmentor.js.map +1 -1
- package/dist/rag/VectorStoreManager.js +1 -1
- package/dist/rag/audit/RAGAuditCollector.d.ts +7 -0
- package/dist/rag/audit/RAGAuditCollector.d.ts.map +1 -1
- package/dist/rag/audit/RAGAuditCollector.js +10 -0
- package/dist/rag/audit/RAGAuditCollector.js.map +1 -1
- package/dist/rag/audit/RAGAuditTypes.d.ts +10 -1
- package/dist/rag/audit/RAGAuditTypes.d.ts.map +1 -1
- package/dist/rag/chunking/SemanticChunker.d.ts +210 -0
- package/dist/rag/chunking/SemanticChunker.d.ts.map +1 -0
- package/dist/rag/chunking/SemanticChunker.js +460 -0
- package/dist/rag/chunking/SemanticChunker.js.map +1 -0
- package/dist/rag/chunking/index.d.ts +10 -0
- package/dist/rag/chunking/index.d.ts.map +1 -0
- package/dist/rag/chunking/index.js +10 -0
- package/dist/rag/chunking/index.js.map +1 -0
- package/dist/rag/implementations/vector_stores/PineconeVectorStore.d.ts +103 -0
- package/dist/rag/implementations/vector_stores/PineconeVectorStore.d.ts.map +1 -0
- package/dist/rag/implementations/vector_stores/PineconeVectorStore.js +315 -0
- package/dist/rag/implementations/vector_stores/PineconeVectorStore.js.map +1 -0
- package/dist/rag/implementations/vector_stores/PostgresVectorStore.d.ts +107 -0
- package/dist/rag/implementations/vector_stores/PostgresVectorStore.d.ts.map +1 -0
- package/dist/rag/implementations/vector_stores/PostgresVectorStore.js +438 -0
- package/dist/rag/implementations/vector_stores/PostgresVectorStore.js.map +1 -0
- package/dist/rag/index.d.ts +15 -1
- package/dist/rag/index.d.ts.map +1 -1
- package/dist/rag/index.js +32 -0
- package/dist/rag/index.js.map +1 -1
- package/dist/rag/migration/MigrationEngine.d.ts +47 -0
- package/dist/rag/migration/MigrationEngine.d.ts.map +1 -0
- package/dist/rag/migration/MigrationEngine.js +168 -0
- package/dist/rag/migration/MigrationEngine.js.map +1 -0
- package/dist/rag/migration/adapters/PineconeSourceAdapter.d.ts +23 -0
- package/dist/rag/migration/adapters/PineconeSourceAdapter.d.ts.map +1 -0
- package/dist/rag/migration/adapters/PineconeSourceAdapter.js +63 -0
- package/dist/rag/migration/adapters/PineconeSourceAdapter.js.map +1 -0
- package/dist/rag/migration/adapters/PostgresSourceAdapter.d.ts +30 -0
- package/dist/rag/migration/adapters/PostgresSourceAdapter.d.ts.map +1 -0
- package/dist/rag/migration/adapters/PostgresSourceAdapter.js +71 -0
- package/dist/rag/migration/adapters/PostgresSourceAdapter.js.map +1 -0
- package/dist/rag/migration/adapters/PostgresTargetAdapter.d.ts +38 -0
- package/dist/rag/migration/adapters/PostgresTargetAdapter.d.ts.map +1 -0
- package/dist/rag/migration/adapters/PostgresTargetAdapter.js +114 -0
- package/dist/rag/migration/adapters/PostgresTargetAdapter.js.map +1 -0
- package/dist/rag/migration/adapters/QdrantSourceAdapter.d.ts +36 -0
- package/dist/rag/migration/adapters/QdrantSourceAdapter.d.ts.map +1 -0
- package/dist/rag/migration/adapters/QdrantSourceAdapter.js +109 -0
- package/dist/rag/migration/adapters/QdrantSourceAdapter.js.map +1 -0
- package/dist/rag/migration/adapters/QdrantTargetAdapter.d.ts +35 -0
- package/dist/rag/migration/adapters/QdrantTargetAdapter.d.ts.map +1 -0
- package/dist/rag/migration/adapters/QdrantTargetAdapter.js +110 -0
- package/dist/rag/migration/adapters/QdrantTargetAdapter.js.map +1 -0
- package/dist/rag/migration/adapters/SqliteSourceAdapter.d.ts +37 -0
- package/dist/rag/migration/adapters/SqliteSourceAdapter.d.ts.map +1 -0
- package/dist/rag/migration/adapters/SqliteSourceAdapter.js +72 -0
- package/dist/rag/migration/adapters/SqliteSourceAdapter.js.map +1 -0
- package/dist/rag/migration/adapters/SqliteTargetAdapter.d.ts +47 -0
- package/dist/rag/migration/adapters/SqliteTargetAdapter.d.ts.map +1 -0
- package/dist/rag/migration/adapters/SqliteTargetAdapter.js +93 -0
- package/dist/rag/migration/adapters/SqliteTargetAdapter.js.map +1 -0
- package/dist/rag/migration/types.d.ts +108 -0
- package/dist/rag/migration/types.d.ts.map +1 -0
- package/dist/rag/migration/types.js +11 -0
- package/dist/rag/migration/types.js.map +1 -0
- package/dist/rag/multimodal/MultimodalIndexer.d.ts +35 -0
- package/dist/rag/multimodal/MultimodalIndexer.d.ts.map +1 -1
- package/dist/rag/multimodal/MultimodalIndexer.js +66 -1
- package/dist/rag/multimodal/MultimodalIndexer.js.map +1 -1
- package/dist/rag/multimodal/types.d.ts +24 -0
- package/dist/rag/multimodal/types.d.ts.map +1 -1
- package/dist/rag/raptor/RaptorTree.d.ts +268 -0
- package/dist/rag/raptor/RaptorTree.d.ts.map +1 -0
- package/dist/rag/raptor/RaptorTree.js +443 -0
- package/dist/rag/raptor/RaptorTree.js.map +1 -0
- package/dist/rag/raptor/index.d.ts +11 -0
- package/dist/rag/raptor/index.d.ts.map +1 -0
- package/dist/rag/raptor/index.js +11 -0
- package/dist/rag/raptor/index.js.map +1 -0
- package/dist/rag/reranking/providers/CohereReranker.js.map +1 -1
- package/dist/rag/search/BM25Index.d.ts +282 -0
- package/dist/rag/search/BM25Index.d.ts.map +1 -0
- package/dist/rag/search/BM25Index.js +344 -0
- package/dist/rag/search/BM25Index.js.map +1 -0
- package/dist/rag/search/HybridSearcher.d.ts +198 -0
- package/dist/rag/search/HybridSearcher.d.ts.map +1 -0
- package/dist/rag/search/HybridSearcher.js +316 -0
- package/dist/rag/search/HybridSearcher.js.map +1 -0
- package/dist/rag/search/index.d.ts +12 -0
- package/dist/rag/search/index.d.ts.map +1 -0
- package/dist/rag/search/index.js +12 -0
- package/dist/rag/search/index.js.map +1 -0
- package/dist/rag/setup/DockerDetector.d.ts +67 -0
- package/dist/rag/setup/DockerDetector.d.ts.map +1 -0
- package/dist/rag/setup/DockerDetector.js +125 -0
- package/dist/rag/setup/DockerDetector.js.map +1 -0
- package/dist/rag/setup/PostgresSetup.d.ts +20 -0
- package/dist/rag/setup/PostgresSetup.d.ts.map +1 -0
- package/dist/rag/setup/PostgresSetup.js +133 -0
- package/dist/rag/setup/PostgresSetup.js.map +1 -0
- package/dist/rag/setup/QdrantSetup.d.ts +26 -0
- package/dist/rag/setup/QdrantSetup.d.ts.map +1 -0
- package/dist/rag/setup/QdrantSetup.js +96 -0
- package/dist/rag/setup/QdrantSetup.js.map +1 -0
- package/dist/rag/setup/types.d.ts +55 -0
- package/dist/rag/setup/types.d.ts.map +1 -0
- package/dist/rag/setup/types.js +6 -0
- package/dist/rag/setup/types.js.map +1 -0
- package/dist/rag/unified/UnifiedRetriever.d.ts +472 -0
- package/dist/rag/unified/UnifiedRetriever.d.ts.map +1 -0
- package/dist/rag/unified/UnifiedRetriever.js +887 -0
- package/dist/rag/unified/UnifiedRetriever.js.map +1 -0
- package/dist/rag/unified/index.d.ts +24 -0
- package/dist/rag/unified/index.d.ts.map +1 -0
- package/dist/rag/unified/index.js +23 -0
- package/dist/rag/unified/index.js.map +1 -0
- package/dist/rag/unified/types.d.ts +546 -0
- package/dist/rag/unified/types.d.ts.map +1 -0
- package/dist/rag/unified/types.js +177 -0
- package/dist/rag/unified/types.js.map +1 -0
- package/dist/speech/providers/AssemblyAISTTProvider.js.map +1 -1
- package/dist/speech/providers/AzureSpeechSTTProvider.js.map +1 -1
- package/dist/speech/providers/BuiltInAdaptiveVadProvider.d.ts +1 -1
- package/dist/speech/providers/DeepgramBatchSTTProvider.js.map +1 -1
- package/package.json +5 -2
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview ManageSkillsTool — ITool implementation that enables agents to
|
|
3
|
+
* dynamically enable, disable, and search for skills at runtime.
|
|
4
|
+
*
|
|
5
|
+
* @module @framers/agentos/emergent/ManageSkillsTool
|
|
6
|
+
*
|
|
7
|
+
* Agents call `manage_skills` to self-modify their active skill set. The tool
|
|
8
|
+
* enforces an allowlist-based permission model:
|
|
9
|
+
* - Wildcard (`'*'`) allows all skills unconditionally.
|
|
10
|
+
* - Exact skill ID matches are always permitted.
|
|
11
|
+
* - Category-based allowlist entries (`'category:X'`) permit any skill in that category.
|
|
12
|
+
* - Same-category expansion: if any skill in category X is already active, other
|
|
13
|
+
* skills in X are also permitted without explicit allowlist entry.
|
|
14
|
+
* - New categories may require approval when `requireApprovalForNewCategories` is set.
|
|
15
|
+
*
|
|
16
|
+
* Locked skills cannot be disabled.
|
|
17
|
+
*/
|
|
18
|
+
// ============================================================================
|
|
19
|
+
// TOOL IMPLEMENTATION
|
|
20
|
+
// ============================================================================
|
|
21
|
+
/**
|
|
22
|
+
* ITool implementation enabling agents to dynamically manage their skill set
|
|
23
|
+
* at runtime, subject to allowlist and lock constraints.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* const tool = new ManageSkillsTool({
|
|
28
|
+
* config: { allowlist: ['*'], requireApprovalForNewCategories: false },
|
|
29
|
+
* getActiveSkills: () => agent.skills,
|
|
30
|
+
* getLockedSkills: () => ['core-reasoning'],
|
|
31
|
+
* loadSkill: (id) => skillRegistry.load(id),
|
|
32
|
+
* unloadSkill: (id) => skillRegistry.unload(id),
|
|
33
|
+
* searchSkills: (q) => skillRegistry.search(q),
|
|
34
|
+
* });
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export class ManageSkillsTool {
|
|
38
|
+
/**
|
|
39
|
+
* Create a new ManageSkillsTool.
|
|
40
|
+
*
|
|
41
|
+
* @param deps - Injected dependencies including config, skill accessors,
|
|
42
|
+
* and loader/unloader functions.
|
|
43
|
+
*/
|
|
44
|
+
constructor(deps) {
|
|
45
|
+
/** @inheritdoc */
|
|
46
|
+
this.id = 'com.framers.emergent.manage-skills';
|
|
47
|
+
/** @inheritdoc */
|
|
48
|
+
this.name = 'manage_skills';
|
|
49
|
+
/** @inheritdoc */
|
|
50
|
+
this.displayName = 'Manage Skills';
|
|
51
|
+
/** @inheritdoc */
|
|
52
|
+
this.description = 'Enable, disable, search, or list skills available to this agent. ' +
|
|
53
|
+
'Subject to allowlist and lock constraints.';
|
|
54
|
+
/** @inheritdoc */
|
|
55
|
+
this.category = 'emergent';
|
|
56
|
+
/** @inheritdoc */
|
|
57
|
+
this.hasSideEffects = true;
|
|
58
|
+
/** @inheritdoc */
|
|
59
|
+
this.inputSchema = {
|
|
60
|
+
type: 'object',
|
|
61
|
+
properties: {
|
|
62
|
+
action: {
|
|
63
|
+
type: 'string',
|
|
64
|
+
enum: ['enable', 'disable', 'search', 'list'],
|
|
65
|
+
description: 'The skill management action to perform.',
|
|
66
|
+
},
|
|
67
|
+
skillId: {
|
|
68
|
+
type: 'string',
|
|
69
|
+
description: 'Skill ID to enable or disable.',
|
|
70
|
+
},
|
|
71
|
+
query: {
|
|
72
|
+
type: 'string',
|
|
73
|
+
description: 'Search query for finding skills.',
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
required: ['action'],
|
|
77
|
+
};
|
|
78
|
+
this.deps = deps;
|
|
79
|
+
}
|
|
80
|
+
// --------------------------------------------------------------------------
|
|
81
|
+
// EXECUTE
|
|
82
|
+
// --------------------------------------------------------------------------
|
|
83
|
+
/**
|
|
84
|
+
* Execute the requested skill management action.
|
|
85
|
+
*
|
|
86
|
+
* @param args - Action type and associated parameters.
|
|
87
|
+
* @param _context - Tool execution context (unused but required by ITool).
|
|
88
|
+
* @returns A {@link ToolExecutionResult} wrapping the action outcome.
|
|
89
|
+
*/
|
|
90
|
+
async execute(args, _context) {
|
|
91
|
+
switch (args.action) {
|
|
92
|
+
case 'enable':
|
|
93
|
+
return this.handleEnable(args.skillId);
|
|
94
|
+
case 'disable':
|
|
95
|
+
return this.handleDisable(args.skillId);
|
|
96
|
+
case 'search':
|
|
97
|
+
return this.handleSearch(args.query);
|
|
98
|
+
case 'list':
|
|
99
|
+
return this.handleList();
|
|
100
|
+
default:
|
|
101
|
+
return {
|
|
102
|
+
success: false,
|
|
103
|
+
error: `Unknown action "${args.action}". Must be one of: enable, disable, search, list`,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// --------------------------------------------------------------------------
|
|
108
|
+
// ACTION HANDLERS
|
|
109
|
+
// --------------------------------------------------------------------------
|
|
110
|
+
/**
|
|
111
|
+
* Enable a skill after checking allowlist permissions.
|
|
112
|
+
*
|
|
113
|
+
* Allowlist resolution order:
|
|
114
|
+
* 1. `['*']` → always allowed
|
|
115
|
+
* 2. Exact skillId match → allowed
|
|
116
|
+
* 3. `'category:X'` in allowlist and skill.category === X → allowed
|
|
117
|
+
* 4. Skill's category already represented in active skills → allowed (same-category expansion)
|
|
118
|
+
* 5. Otherwise → `requires_approval` if requireApprovalForNewCategories, else `denied`
|
|
119
|
+
*/
|
|
120
|
+
async handleEnable(skillId) {
|
|
121
|
+
if (!skillId) {
|
|
122
|
+
return { success: false, error: 'skillId is required for the enable action' };
|
|
123
|
+
}
|
|
124
|
+
// Load the skill first to get its metadata
|
|
125
|
+
let skill;
|
|
126
|
+
try {
|
|
127
|
+
skill = await this.deps.loadSkill(skillId);
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
return {
|
|
131
|
+
success: false,
|
|
132
|
+
error: `Failed to load skill "${skillId}": ${err.message ?? String(err)}`,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
// Resolve allowlist permission
|
|
136
|
+
const permissionResult = this.resolvePermission(skill);
|
|
137
|
+
if (permissionResult === 'allowed') {
|
|
138
|
+
return {
|
|
139
|
+
success: true,
|
|
140
|
+
output: {
|
|
141
|
+
status: 'enabled',
|
|
142
|
+
skill: { skillId: skill.skillId, name: skill.name, category: skill.category },
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
// Not allowed — unload the skill we speculatively loaded
|
|
147
|
+
try {
|
|
148
|
+
this.deps.unloadSkill(skillId);
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
// Best-effort unload; skill may not have been fully registered
|
|
152
|
+
}
|
|
153
|
+
if (permissionResult === 'requires_approval') {
|
|
154
|
+
return {
|
|
155
|
+
success: true,
|
|
156
|
+
output: {
|
|
157
|
+
status: 'requires_approval',
|
|
158
|
+
skillId,
|
|
159
|
+
category: skill.category,
|
|
160
|
+
reason: `Skill category "${skill.category}" is new and requires approval.`,
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
return {
|
|
165
|
+
success: false,
|
|
166
|
+
error: `Skill "${skillId}" is not permitted by the allowlist.`,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Resolve whether a skill is permitted by the allowlist configuration.
|
|
171
|
+
*
|
|
172
|
+
* @returns `'allowed'`, `'requires_approval'`, or `'denied'`
|
|
173
|
+
*/
|
|
174
|
+
resolvePermission(skill) {
|
|
175
|
+
const { allowlist, requireApprovalForNewCategories } = this.deps.config;
|
|
176
|
+
// 1. Wildcard
|
|
177
|
+
if (allowlist.includes('*')) {
|
|
178
|
+
return 'allowed';
|
|
179
|
+
}
|
|
180
|
+
// 2. Exact skill ID match
|
|
181
|
+
if (allowlist.includes(skill.skillId)) {
|
|
182
|
+
return 'allowed';
|
|
183
|
+
}
|
|
184
|
+
// 3. Category-based allowlist entry
|
|
185
|
+
if (allowlist.includes(`category:${skill.category}`)) {
|
|
186
|
+
return 'allowed';
|
|
187
|
+
}
|
|
188
|
+
// 4. Same-category expansion: category already represented in active skills
|
|
189
|
+
const activeSkills = this.deps.getActiveSkills();
|
|
190
|
+
const activeCategories = new Set(activeSkills.map((s) => s.category));
|
|
191
|
+
if (activeCategories.has(skill.category)) {
|
|
192
|
+
return 'allowed';
|
|
193
|
+
}
|
|
194
|
+
// 5. Otherwise — requires approval or denied
|
|
195
|
+
return requireApprovalForNewCategories ? 'requires_approval' : 'denied';
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Disable a skill, rejecting if it is locked.
|
|
199
|
+
*/
|
|
200
|
+
async handleDisable(skillId) {
|
|
201
|
+
if (!skillId) {
|
|
202
|
+
return { success: false, error: 'skillId is required for the disable action' };
|
|
203
|
+
}
|
|
204
|
+
const lockedSkills = this.deps.getLockedSkills();
|
|
205
|
+
if (lockedSkills.includes(skillId)) {
|
|
206
|
+
return {
|
|
207
|
+
success: false,
|
|
208
|
+
error: `Skill "${skillId}" is locked and cannot be disabled.`,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
this.deps.unloadSkill(skillId);
|
|
212
|
+
return {
|
|
213
|
+
success: true,
|
|
214
|
+
output: { status: 'disabled', skillId },
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Search for available skills by query string.
|
|
219
|
+
*/
|
|
220
|
+
async handleSearch(query) {
|
|
221
|
+
if (!query) {
|
|
222
|
+
return { success: false, error: 'query is required for the search action' };
|
|
223
|
+
}
|
|
224
|
+
const results = this.deps.searchSkills(query);
|
|
225
|
+
return {
|
|
226
|
+
success: true,
|
|
227
|
+
output: { results },
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* List currently active skills.
|
|
232
|
+
*/
|
|
233
|
+
async handleList() {
|
|
234
|
+
const skills = this.deps.getActiveSkills();
|
|
235
|
+
return {
|
|
236
|
+
success: true,
|
|
237
|
+
output: { skills },
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=ManageSkillsTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ManageSkillsTool.js","sourceRoot":"","sources":["../../src/emergent/ManageSkillsTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview SQLite persistence for personality mutations with
|
|
3
|
+
* Ebbinghaus-style strength decay.
|
|
4
|
+
*
|
|
5
|
+
* Mutations persist across sessions and gradually fade toward baseline
|
|
6
|
+
* unless reinforced by repeated adaptation. The ConsolidationLoop calls
|
|
7
|
+
* {@link PersonalityMutationStore.decayAll} each cycle to reduce mutation
|
|
8
|
+
* strengths; mutations whose strength drops below the 0.1 threshold are
|
|
9
|
+
* pruned automatically.
|
|
10
|
+
*
|
|
11
|
+
* Uses the same {@link IStorageAdapter} interface as EmergentToolRegistry,
|
|
12
|
+
* keeping storage concerns decoupled from specific SQLite drivers.
|
|
13
|
+
*
|
|
14
|
+
* @module @framers/agentos/emergent/PersonalityMutationStore
|
|
15
|
+
*/
|
|
16
|
+
import type { IStorageAdapter } from './EmergentToolRegistry.js';
|
|
17
|
+
/**
|
|
18
|
+
* A single persisted personality mutation record.
|
|
19
|
+
*
|
|
20
|
+
* Represents a specific HEXACO trait adjustment made by the agent, along with
|
|
21
|
+
* its current strength (which decays over time) and the reasoning that
|
|
22
|
+
* motivated the change.
|
|
23
|
+
*/
|
|
24
|
+
export interface PersonalityMutation {
|
|
25
|
+
/** Unique mutation identifier (format: `pm_<timestamp>_<random>`). */
|
|
26
|
+
id: string;
|
|
27
|
+
/** The agent that made this mutation. */
|
|
28
|
+
agentId: string;
|
|
29
|
+
/** The HEXACO trait that was mutated (e.g., `'openness'`, `'conscientiousness'`). */
|
|
30
|
+
trait: string;
|
|
31
|
+
/** The signed delta applied to the trait value. Positive = increase, negative = decrease. */
|
|
32
|
+
delta: number;
|
|
33
|
+
/** Free-text reasoning explaining why the agent chose to mutate this trait. */
|
|
34
|
+
reasoning: string;
|
|
35
|
+
/** The trait value before this mutation was applied. */
|
|
36
|
+
baselineValue: number;
|
|
37
|
+
/** The trait value after this mutation was applied. */
|
|
38
|
+
mutatedValue: number;
|
|
39
|
+
/**
|
|
40
|
+
* Current strength of this mutation in the range (0, 1].
|
|
41
|
+
*
|
|
42
|
+
* Starts at 1.0 when recorded and decays each consolidation cycle.
|
|
43
|
+
* When strength drops to 0.1 or below, the mutation is pruned.
|
|
44
|
+
*/
|
|
45
|
+
strength: number;
|
|
46
|
+
/** Unix epoch millisecond timestamp of when this mutation was recorded. */
|
|
47
|
+
createdAt: number;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Input parameters for recording a new personality mutation.
|
|
51
|
+
*
|
|
52
|
+
* The `strength` and `createdAt` fields are set automatically by the store
|
|
53
|
+
* (1.0 and `Date.now()` respectively).
|
|
54
|
+
*/
|
|
55
|
+
export interface RecordMutationInput {
|
|
56
|
+
/** The agent making the mutation. */
|
|
57
|
+
agentId: string;
|
|
58
|
+
/** The HEXACO trait being mutated. */
|
|
59
|
+
trait: string;
|
|
60
|
+
/** The signed delta to apply. */
|
|
61
|
+
delta: number;
|
|
62
|
+
/** Free-text reasoning for the mutation. */
|
|
63
|
+
reasoning: string;
|
|
64
|
+
/** The trait value before mutation. */
|
|
65
|
+
baselineValue: number;
|
|
66
|
+
/** The trait value after mutation. */
|
|
67
|
+
mutatedValue: number;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Result of a decay cycle, reporting how many mutations were weakened
|
|
71
|
+
* and how many were pruned (deleted) for falling below the threshold.
|
|
72
|
+
*/
|
|
73
|
+
export interface DecayResult {
|
|
74
|
+
/** Number of mutations whose strength was reduced but still above threshold. */
|
|
75
|
+
decayed: number;
|
|
76
|
+
/** Number of mutations deleted for falling at or below the 0.1 threshold. */
|
|
77
|
+
pruned: number;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* SQLite-backed persistence layer for personality mutations with decay.
|
|
81
|
+
*
|
|
82
|
+
* Follows the same `ensureSchema()` pattern as {@link EmergentToolRegistry}:
|
|
83
|
+
* a cached promise guards against concurrent DDL execution, and all DML
|
|
84
|
+
* methods await schema readiness before proceeding.
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```ts
|
|
88
|
+
* const store = new PersonalityMutationStore(sqliteAdapter);
|
|
89
|
+
*
|
|
90
|
+
* // Record a mutation
|
|
91
|
+
* const id = await store.record({
|
|
92
|
+
* agentId: 'agent-42',
|
|
93
|
+
* trait: 'openness',
|
|
94
|
+
* delta: 0.1,
|
|
95
|
+
* reasoning: 'User prefers creative responses',
|
|
96
|
+
* baselineValue: 0.7,
|
|
97
|
+
* mutatedValue: 0.8,
|
|
98
|
+
* });
|
|
99
|
+
*
|
|
100
|
+
* // Get strength-weighted effective deltas
|
|
101
|
+
* const deltas = await store.getEffectiveDeltas('agent-42');
|
|
102
|
+
* // => { openness: 0.1 } (strength is 1.0 initially)
|
|
103
|
+
*
|
|
104
|
+
* // Decay all mutations by 5%
|
|
105
|
+
* const { decayed, pruned } = await store.decayAll(0.05);
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
export declare class PersonalityMutationStore {
|
|
109
|
+
/** The underlying SQLite storage adapter. */
|
|
110
|
+
private readonly db;
|
|
111
|
+
/**
|
|
112
|
+
* Cached schema initialization promise.
|
|
113
|
+
* Ensures DDL runs exactly once, even under concurrent access.
|
|
114
|
+
*/
|
|
115
|
+
private schemaReady;
|
|
116
|
+
/**
|
|
117
|
+
* Create a new PersonalityMutationStore.
|
|
118
|
+
*
|
|
119
|
+
* @param db - A storage adapter implementing the {@link IStorageAdapter}
|
|
120
|
+
* interface. The same adapter used by EmergentToolRegistry can be reused.
|
|
121
|
+
*/
|
|
122
|
+
constructor(db: IStorageAdapter);
|
|
123
|
+
/**
|
|
124
|
+
* Idempotent schema initialization.
|
|
125
|
+
*
|
|
126
|
+
* Creates the `personality_mutations` table and its agent/trait index if
|
|
127
|
+
* they don't already exist. Uses the adapter's `exec()` method when
|
|
128
|
+
* available (for multi-statement DDL), falling back to individual `run()`
|
|
129
|
+
* calls for adapters that don't support it.
|
|
130
|
+
*
|
|
131
|
+
* @returns A promise that resolves when the schema is ready.
|
|
132
|
+
*/
|
|
133
|
+
private ensureSchema;
|
|
134
|
+
/**
|
|
135
|
+
* Record a new personality mutation.
|
|
136
|
+
*
|
|
137
|
+
* Inserts a mutation record with initial strength of 1.0 and the current
|
|
138
|
+
* timestamp. The mutation ID is generated deterministically from the
|
|
139
|
+
* current time and a random suffix.
|
|
140
|
+
*
|
|
141
|
+
* @param input - The mutation parameters (agent, trait, delta, reasoning, values).
|
|
142
|
+
* @returns The generated mutation ID.
|
|
143
|
+
*/
|
|
144
|
+
record(input: RecordMutationInput): Promise<string>;
|
|
145
|
+
/**
|
|
146
|
+
* Load all active mutations for a given agent.
|
|
147
|
+
*
|
|
148
|
+
* Returns only mutations whose strength is above the 0.1 pruning threshold,
|
|
149
|
+
* ordered by creation time (newest first).
|
|
150
|
+
*
|
|
151
|
+
* @param agentId - The agent whose mutations to load.
|
|
152
|
+
* @returns An array of {@link PersonalityMutation} records.
|
|
153
|
+
*/
|
|
154
|
+
loadForAgent(agentId: string): Promise<PersonalityMutation[]>;
|
|
155
|
+
/**
|
|
156
|
+
* Compute the effective (strength-weighted) delta for each trait.
|
|
157
|
+
*
|
|
158
|
+
* For each active mutation, multiplies the raw delta by the mutation's
|
|
159
|
+
* current strength, then sums per trait. This gives a realistic picture
|
|
160
|
+
* of how much each trait has drifted from baseline, accounting for decay.
|
|
161
|
+
*
|
|
162
|
+
* @param agentId - The agent whose effective deltas to compute.
|
|
163
|
+
* @returns A map of trait name to effective delta (sum of `delta * strength`).
|
|
164
|
+
*/
|
|
165
|
+
getEffectiveDeltas(agentId: string): Promise<Record<string, number>>;
|
|
166
|
+
/**
|
|
167
|
+
* Decay all active mutations by the given rate and prune expired ones.
|
|
168
|
+
*
|
|
169
|
+
* For each mutation with strength above 0.1:
|
|
170
|
+
* - Subtracts `rate` from its strength.
|
|
171
|
+
* - If the new strength is at or below 0.1, the mutation is deleted (pruned).
|
|
172
|
+
* - Otherwise, the strength is updated in place.
|
|
173
|
+
*
|
|
174
|
+
* This implements Ebbinghaus-style forgetting: mutations that aren't
|
|
175
|
+
* reinforced by repeated adaptation gradually fade away.
|
|
176
|
+
*
|
|
177
|
+
* @param rate - The amount to subtract from each mutation's strength.
|
|
178
|
+
* Typically 0.05 (the default from SelfImprovementConfig).
|
|
179
|
+
* @returns A {@link DecayResult} with counts of decayed and pruned mutations.
|
|
180
|
+
*/
|
|
181
|
+
decayAll(rate: number): Promise<DecayResult>;
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=PersonalityMutationStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PersonalityMutationStore.d.ts","sourceRoot":"","sources":["../../src/emergent/PersonalityMutationStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAMjE;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,sEAAsE;IACtE,EAAE,EAAE,MAAM,CAAC;IAEX,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAEhB,qFAAqF;IACrF,KAAK,EAAE,MAAM,CAAC;IAEd,6FAA6F;IAC7F,KAAK,EAAE,MAAM,CAAC;IAEd,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAC;IAElB,wDAAwD;IACxD,aAAa,EAAE,MAAM,CAAC;IAEtB,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;IAErB;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAEhB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IAEd,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IAEd,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAElB,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;IAEtB,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,gFAAgF;IAChF,OAAO,EAAE,MAAM,CAAC;IAEhB,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,wBAAwB;IACnC,6CAA6C;IAC7C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAkB;IAErC;;;OAGG;IACH,OAAO,CAAC,WAAW,CAA8B;IAEjD;;;;;OAKG;gBACS,EAAE,EAAE,eAAe;IAQ/B;;;;;;;;;OASG;YACW,YAAY;IAoC1B;;;;;;;;;OASG;IACG,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IA4BzD;;;;;;;;OAQG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAyBnE;;;;;;;;;OASG;IACG,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAe1E;;;;;;;;;;;;;;OAcG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CA4BnD"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview SQLite persistence for personality mutations with
|
|
3
|
+
* Ebbinghaus-style strength decay.
|
|
4
|
+
*
|
|
5
|
+
* Mutations persist across sessions and gradually fade toward baseline
|
|
6
|
+
* unless reinforced by repeated adaptation. The ConsolidationLoop calls
|
|
7
|
+
* {@link PersonalityMutationStore.decayAll} each cycle to reduce mutation
|
|
8
|
+
* strengths; mutations whose strength drops below the 0.1 threshold are
|
|
9
|
+
* pruned automatically.
|
|
10
|
+
*
|
|
11
|
+
* Uses the same {@link IStorageAdapter} interface as EmergentToolRegistry,
|
|
12
|
+
* keeping storage concerns decoupled from specific SQLite drivers.
|
|
13
|
+
*
|
|
14
|
+
* @module @framers/agentos/emergent/PersonalityMutationStore
|
|
15
|
+
*/
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// STORE
|
|
18
|
+
// ============================================================================
|
|
19
|
+
/**
|
|
20
|
+
* SQLite-backed persistence layer for personality mutations with decay.
|
|
21
|
+
*
|
|
22
|
+
* Follows the same `ensureSchema()` pattern as {@link EmergentToolRegistry}:
|
|
23
|
+
* a cached promise guards against concurrent DDL execution, and all DML
|
|
24
|
+
* methods await schema readiness before proceeding.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* const store = new PersonalityMutationStore(sqliteAdapter);
|
|
29
|
+
*
|
|
30
|
+
* // Record a mutation
|
|
31
|
+
* const id = await store.record({
|
|
32
|
+
* agentId: 'agent-42',
|
|
33
|
+
* trait: 'openness',
|
|
34
|
+
* delta: 0.1,
|
|
35
|
+
* reasoning: 'User prefers creative responses',
|
|
36
|
+
* baselineValue: 0.7,
|
|
37
|
+
* mutatedValue: 0.8,
|
|
38
|
+
* });
|
|
39
|
+
*
|
|
40
|
+
* // Get strength-weighted effective deltas
|
|
41
|
+
* const deltas = await store.getEffectiveDeltas('agent-42');
|
|
42
|
+
* // => { openness: 0.1 } (strength is 1.0 initially)
|
|
43
|
+
*
|
|
44
|
+
* // Decay all mutations by 5%
|
|
45
|
+
* const { decayed, pruned } = await store.decayAll(0.05);
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export class PersonalityMutationStore {
|
|
49
|
+
/**
|
|
50
|
+
* Create a new PersonalityMutationStore.
|
|
51
|
+
*
|
|
52
|
+
* @param db - A storage adapter implementing the {@link IStorageAdapter}
|
|
53
|
+
* interface. The same adapter used by EmergentToolRegistry can be reused.
|
|
54
|
+
*/
|
|
55
|
+
constructor(db) {
|
|
56
|
+
/**
|
|
57
|
+
* Cached schema initialization promise.
|
|
58
|
+
* Ensures DDL runs exactly once, even under concurrent access.
|
|
59
|
+
*/
|
|
60
|
+
this.schemaReady = null;
|
|
61
|
+
this.db = db;
|
|
62
|
+
}
|
|
63
|
+
// --------------------------------------------------------------------------
|
|
64
|
+
// SCHEMA
|
|
65
|
+
// --------------------------------------------------------------------------
|
|
66
|
+
/**
|
|
67
|
+
* Idempotent schema initialization.
|
|
68
|
+
*
|
|
69
|
+
* Creates the `personality_mutations` table and its agent/trait index if
|
|
70
|
+
* they don't already exist. Uses the adapter's `exec()` method when
|
|
71
|
+
* available (for multi-statement DDL), falling back to individual `run()`
|
|
72
|
+
* calls for adapters that don't support it.
|
|
73
|
+
*
|
|
74
|
+
* @returns A promise that resolves when the schema is ready.
|
|
75
|
+
*/
|
|
76
|
+
async ensureSchema() {
|
|
77
|
+
if (!this.schemaReady) {
|
|
78
|
+
this.schemaReady = (async () => {
|
|
79
|
+
const ddl = `
|
|
80
|
+
CREATE TABLE IF NOT EXISTS personality_mutations (
|
|
81
|
+
id TEXT PRIMARY KEY,
|
|
82
|
+
agent_id TEXT NOT NULL,
|
|
83
|
+
trait TEXT NOT NULL,
|
|
84
|
+
delta REAL NOT NULL,
|
|
85
|
+
reasoning TEXT NOT NULL,
|
|
86
|
+
baseline_value REAL NOT NULL,
|
|
87
|
+
mutated_value REAL NOT NULL,
|
|
88
|
+
strength REAL NOT NULL DEFAULT 1.0,
|
|
89
|
+
created_at BIGINT NOT NULL
|
|
90
|
+
);
|
|
91
|
+
CREATE INDEX IF NOT EXISTS idx_personality_mutations_agent
|
|
92
|
+
ON personality_mutations(agent_id, trait);
|
|
93
|
+
`;
|
|
94
|
+
if (this.db.exec) {
|
|
95
|
+
await this.db.exec(ddl);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
// Split on semicolons and execute each non-empty statement individually.
|
|
99
|
+
for (const stmt of ddl.split(';').filter((s) => s.trim())) {
|
|
100
|
+
await this.db.run(stmt);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
})();
|
|
104
|
+
}
|
|
105
|
+
return this.schemaReady;
|
|
106
|
+
}
|
|
107
|
+
// --------------------------------------------------------------------------
|
|
108
|
+
// RECORD
|
|
109
|
+
// --------------------------------------------------------------------------
|
|
110
|
+
/**
|
|
111
|
+
* Record a new personality mutation.
|
|
112
|
+
*
|
|
113
|
+
* Inserts a mutation record with initial strength of 1.0 and the current
|
|
114
|
+
* timestamp. The mutation ID is generated deterministically from the
|
|
115
|
+
* current time and a random suffix.
|
|
116
|
+
*
|
|
117
|
+
* @param input - The mutation parameters (agent, trait, delta, reasoning, values).
|
|
118
|
+
* @returns The generated mutation ID.
|
|
119
|
+
*/
|
|
120
|
+
async record(input) {
|
|
121
|
+
await this.ensureSchema();
|
|
122
|
+
const id = `pm_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
|
|
123
|
+
await this.db.run(`INSERT INTO personality_mutations
|
|
124
|
+
(id, agent_id, trait, delta, reasoning, baseline_value, mutated_value, strength, created_at)
|
|
125
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, 1.0, ?)`, [
|
|
126
|
+
id,
|
|
127
|
+
input.agentId,
|
|
128
|
+
input.trait,
|
|
129
|
+
input.delta,
|
|
130
|
+
input.reasoning,
|
|
131
|
+
input.baselineValue,
|
|
132
|
+
input.mutatedValue,
|
|
133
|
+
Date.now(),
|
|
134
|
+
]);
|
|
135
|
+
return id;
|
|
136
|
+
}
|
|
137
|
+
// --------------------------------------------------------------------------
|
|
138
|
+
// LOAD
|
|
139
|
+
// --------------------------------------------------------------------------
|
|
140
|
+
/**
|
|
141
|
+
* Load all active mutations for a given agent.
|
|
142
|
+
*
|
|
143
|
+
* Returns only mutations whose strength is above the 0.1 pruning threshold,
|
|
144
|
+
* ordered by creation time (newest first).
|
|
145
|
+
*
|
|
146
|
+
* @param agentId - The agent whose mutations to load.
|
|
147
|
+
* @returns An array of {@link PersonalityMutation} records.
|
|
148
|
+
*/
|
|
149
|
+
async loadForAgent(agentId) {
|
|
150
|
+
await this.ensureSchema();
|
|
151
|
+
const rows = await this.db.all('SELECT * FROM personality_mutations WHERE agent_id = ? AND strength > 0.1 ORDER BY created_at DESC', [agentId]);
|
|
152
|
+
return rows.map((r) => ({
|
|
153
|
+
id: r.id,
|
|
154
|
+
agentId: r.agent_id,
|
|
155
|
+
trait: r.trait,
|
|
156
|
+
delta: r.delta,
|
|
157
|
+
reasoning: r.reasoning,
|
|
158
|
+
baselineValue: r.baseline_value,
|
|
159
|
+
mutatedValue: r.mutated_value,
|
|
160
|
+
strength: r.strength,
|
|
161
|
+
createdAt: r.created_at,
|
|
162
|
+
}));
|
|
163
|
+
}
|
|
164
|
+
// --------------------------------------------------------------------------
|
|
165
|
+
// EFFECTIVE DELTAS
|
|
166
|
+
// --------------------------------------------------------------------------
|
|
167
|
+
/**
|
|
168
|
+
* Compute the effective (strength-weighted) delta for each trait.
|
|
169
|
+
*
|
|
170
|
+
* For each active mutation, multiplies the raw delta by the mutation's
|
|
171
|
+
* current strength, then sums per trait. This gives a realistic picture
|
|
172
|
+
* of how much each trait has drifted from baseline, accounting for decay.
|
|
173
|
+
*
|
|
174
|
+
* @param agentId - The agent whose effective deltas to compute.
|
|
175
|
+
* @returns A map of trait name to effective delta (sum of `delta * strength`).
|
|
176
|
+
*/
|
|
177
|
+
async getEffectiveDeltas(agentId) {
|
|
178
|
+
const mutations = await this.loadForAgent(agentId);
|
|
179
|
+
const deltas = {};
|
|
180
|
+
for (const m of mutations) {
|
|
181
|
+
deltas[m.trait] = (deltas[m.trait] ?? 0) + m.delta * m.strength;
|
|
182
|
+
}
|
|
183
|
+
return deltas;
|
|
184
|
+
}
|
|
185
|
+
// --------------------------------------------------------------------------
|
|
186
|
+
// DECAY
|
|
187
|
+
// --------------------------------------------------------------------------
|
|
188
|
+
/**
|
|
189
|
+
* Decay all active mutations by the given rate and prune expired ones.
|
|
190
|
+
*
|
|
191
|
+
* For each mutation with strength above 0.1:
|
|
192
|
+
* - Subtracts `rate` from its strength.
|
|
193
|
+
* - If the new strength is at or below 0.1, the mutation is deleted (pruned).
|
|
194
|
+
* - Otherwise, the strength is updated in place.
|
|
195
|
+
*
|
|
196
|
+
* This implements Ebbinghaus-style forgetting: mutations that aren't
|
|
197
|
+
* reinforced by repeated adaptation gradually fade away.
|
|
198
|
+
*
|
|
199
|
+
* @param rate - The amount to subtract from each mutation's strength.
|
|
200
|
+
* Typically 0.05 (the default from SelfImprovementConfig).
|
|
201
|
+
* @returns A {@link DecayResult} with counts of decayed and pruned mutations.
|
|
202
|
+
*/
|
|
203
|
+
async decayAll(rate) {
|
|
204
|
+
await this.ensureSchema();
|
|
205
|
+
const all = await this.db.all('SELECT id, strength FROM personality_mutations WHERE strength > 0.1', []);
|
|
206
|
+
let decayed = 0;
|
|
207
|
+
let pruned = 0;
|
|
208
|
+
for (const row of all) {
|
|
209
|
+
const newStrength = row.strength - rate;
|
|
210
|
+
if (newStrength <= 0.1) {
|
|
211
|
+
await this.db.run('DELETE FROM personality_mutations WHERE id = ?', [row.id]);
|
|
212
|
+
pruned++;
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
await this.db.run('UPDATE personality_mutations SET strength = ? WHERE id = ?', [newStrength, row.id]);
|
|
216
|
+
decayed++;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return { decayed, pruned };
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=PersonalityMutationStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PersonalityMutationStore.js","sourceRoot":"","sources":["../../src/emergent/PersonalityMutationStore.ts"],"names":[],"mappings":"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"}
|