0agent 1.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/README.md +164 -0
- package/bin/0agent.js +614 -0
- package/package.json +59 -0
- package/packages/core/dist/bootstrap/BootstrapProtocol.d.ts +37 -0
- package/packages/core/dist/bootstrap/BootstrapProtocol.d.ts.map +1 -0
- package/packages/core/dist/bootstrap/BootstrapProtocol.js +82 -0
- package/packages/core/dist/bootstrap/BootstrapProtocol.js.map +1 -0
- package/packages/core/dist/bootstrap/GraphConstructor.d.ts +44 -0
- package/packages/core/dist/bootstrap/GraphConstructor.d.ts.map +1 -0
- package/packages/core/dist/bootstrap/GraphConstructor.js +160 -0
- package/packages/core/dist/bootstrap/GraphConstructor.js.map +1 -0
- package/packages/core/dist/bootstrap/HypothesisManager.d.ts +50 -0
- package/packages/core/dist/bootstrap/HypothesisManager.d.ts.map +1 -0
- package/packages/core/dist/bootstrap/HypothesisManager.js +108 -0
- package/packages/core/dist/bootstrap/HypothesisManager.js.map +1 -0
- package/packages/core/dist/bootstrap/StagedMutations.d.ts +50 -0
- package/packages/core/dist/bootstrap/StagedMutations.d.ts.map +1 -0
- package/packages/core/dist/bootstrap/StagedMutations.js +80 -0
- package/packages/core/dist/bootstrap/StagedMutations.js.map +1 -0
- package/packages/core/dist/concurrency/EdgeWeightUpdater.d.ts +16 -0
- package/packages/core/dist/concurrency/EdgeWeightUpdater.d.ts.map +1 -0
- package/packages/core/dist/concurrency/EdgeWeightUpdater.js +57 -0
- package/packages/core/dist/concurrency/EdgeWeightUpdater.js.map +1 -0
- package/packages/core/dist/concurrency/SessionSnapshot.d.ts +63 -0
- package/packages/core/dist/concurrency/SessionSnapshot.d.ts.map +1 -0
- package/packages/core/dist/concurrency/SessionSnapshot.js +124 -0
- package/packages/core/dist/concurrency/SessionSnapshot.js.map +1 -0
- package/packages/core/dist/embedding/HNSWIndex.d.ts +37 -0
- package/packages/core/dist/embedding/HNSWIndex.d.ts.map +1 -0
- package/packages/core/dist/embedding/HNSWIndex.js +86 -0
- package/packages/core/dist/embedding/HNSWIndex.js.map +1 -0
- package/packages/core/dist/embedding/MultimodalEmbedder.d.ts +24 -0
- package/packages/core/dist/embedding/MultimodalEmbedder.d.ts.map +1 -0
- package/packages/core/dist/embedding/MultimodalEmbedder.js +75 -0
- package/packages/core/dist/embedding/MultimodalEmbedder.js.map +1 -0
- package/packages/core/dist/embedding/adapters/NomicAdapter.d.ts +7 -0
- package/packages/core/dist/embedding/adapters/NomicAdapter.d.ts.map +1 -0
- package/packages/core/dist/embedding/adapters/NomicAdapter.js +11 -0
- package/packages/core/dist/embedding/adapters/NomicAdapter.js.map +1 -0
- package/packages/core/dist/embedding/adapters/OllamaAdapter.d.ts +19 -0
- package/packages/core/dist/embedding/adapters/OllamaAdapter.d.ts.map +1 -0
- package/packages/core/dist/embedding/adapters/OllamaAdapter.js +27 -0
- package/packages/core/dist/embedding/adapters/OllamaAdapter.js.map +1 -0
- package/packages/core/dist/embedding/adapters/OpenAIAdapter.d.ts +14 -0
- package/packages/core/dist/embedding/adapters/OpenAIAdapter.d.ts.map +1 -0
- package/packages/core/dist/embedding/adapters/OpenAIAdapter.js +48 -0
- package/packages/core/dist/embedding/adapters/OpenAIAdapter.js.map +1 -0
- package/packages/core/dist/engine/CreditAttribution.d.ts +47 -0
- package/packages/core/dist/engine/CreditAttribution.d.ts.map +1 -0
- package/packages/core/dist/engine/CreditAttribution.js +196 -0
- package/packages/core/dist/engine/CreditAttribution.js.map +1 -0
- package/packages/core/dist/engine/DecayScheduler.d.ts +45 -0
- package/packages/core/dist/engine/DecayScheduler.d.ts.map +1 -0
- package/packages/core/dist/engine/DecayScheduler.js +115 -0
- package/packages/core/dist/engine/DecayScheduler.js.map +1 -0
- package/packages/core/dist/engine/InferenceEngine.d.ts +95 -0
- package/packages/core/dist/engine/InferenceEngine.d.ts.map +1 -0
- package/packages/core/dist/engine/InferenceEngine.js +242 -0
- package/packages/core/dist/engine/InferenceEngine.js.map +1 -0
- package/packages/core/dist/engine/SelectionPolicy.d.ts +29 -0
- package/packages/core/dist/engine/SelectionPolicy.d.ts.map +1 -0
- package/packages/core/dist/engine/SelectionPolicy.js +58 -0
- package/packages/core/dist/engine/SelectionPolicy.js.map +1 -0
- package/packages/core/dist/engine/SelfImprovementEngine.d.ts +58 -0
- package/packages/core/dist/engine/SelfImprovementEngine.d.ts.map +1 -0
- package/packages/core/dist/engine/SelfImprovementEngine.js +265 -0
- package/packages/core/dist/engine/SelfImprovementEngine.js.map +1 -0
- package/packages/core/dist/engine/SelfImprovementPrompt.d.ts +10 -0
- package/packages/core/dist/engine/SelfImprovementPrompt.d.ts.map +1 -0
- package/packages/core/dist/engine/SelfImprovementPrompt.js +193 -0
- package/packages/core/dist/engine/SelfImprovementPrompt.js.map +1 -0
- package/packages/core/dist/engine/WeightPropagation.d.ts +77 -0
- package/packages/core/dist/engine/WeightPropagation.d.ts.map +1 -0
- package/packages/core/dist/engine/WeightPropagation.js +101 -0
- package/packages/core/dist/engine/WeightPropagation.js.map +1 -0
- package/packages/core/dist/engine/WorkflowSuggestionEngine.d.ts +26 -0
- package/packages/core/dist/engine/WorkflowSuggestionEngine.d.ts.map +1 -0
- package/packages/core/dist/engine/WorkflowSuggestionEngine.js +54 -0
- package/packages/core/dist/engine/WorkflowSuggestionEngine.js.map +1 -0
- package/packages/core/dist/entity/AliasIndex.d.ts +39 -0
- package/packages/core/dist/entity/AliasIndex.d.ts.map +1 -0
- package/packages/core/dist/entity/AliasIndex.js +81 -0
- package/packages/core/dist/entity/AliasIndex.js.map +1 -0
- package/packages/core/dist/entity/ContextActivator.d.ts +53 -0
- package/packages/core/dist/entity/ContextActivator.d.ts.map +1 -0
- package/packages/core/dist/entity/ContextActivator.js +163 -0
- package/packages/core/dist/entity/ContextActivator.js.map +1 -0
- package/packages/core/dist/entity/EntityHierarchy.d.ts +48 -0
- package/packages/core/dist/entity/EntityHierarchy.d.ts.map +1 -0
- package/packages/core/dist/entity/EntityHierarchy.js +134 -0
- package/packages/core/dist/entity/EntityHierarchy.js.map +1 -0
- package/packages/core/dist/entity/EntityResolutionPipeline.d.ts +48 -0
- package/packages/core/dist/entity/EntityResolutionPipeline.d.ts.map +1 -0
- package/packages/core/dist/entity/EntityResolutionPipeline.js +221 -0
- package/packages/core/dist/entity/EntityResolutionPipeline.js.map +1 -0
- package/packages/core/dist/entity/MCPEnrichedResolver.d.ts +17 -0
- package/packages/core/dist/entity/MCPEnrichedResolver.d.ts.map +1 -0
- package/packages/core/dist/entity/MCPEnrichedResolver.js +19 -0
- package/packages/core/dist/entity/MCPEnrichedResolver.js.map +1 -0
- package/packages/core/dist/entity/NodeResolutionService.d.ts +46 -0
- package/packages/core/dist/entity/NodeResolutionService.d.ts.map +1 -0
- package/packages/core/dist/entity/NodeResolutionService.js +150 -0
- package/packages/core/dist/entity/NodeResolutionService.js.map +1 -0
- package/packages/core/dist/entity/PersonalityAccumulator.d.ts +41 -0
- package/packages/core/dist/entity/PersonalityAccumulator.d.ts.map +1 -0
- package/packages/core/dist/entity/PersonalityAccumulator.js +126 -0
- package/packages/core/dist/entity/PersonalityAccumulator.js.map +1 -0
- package/packages/core/dist/entity/PersonalityProfile.d.ts +31 -0
- package/packages/core/dist/entity/PersonalityProfile.d.ts.map +1 -0
- package/packages/core/dist/entity/PersonalityProfile.js +94 -0
- package/packages/core/dist/entity/PersonalityProfile.js.map +1 -0
- package/packages/core/dist/entity/index.d.ts +4 -0
- package/packages/core/dist/entity/index.d.ts.map +1 -0
- package/packages/core/dist/entity/index.js +4 -0
- package/packages/core/dist/entity/index.js.map +1 -0
- package/packages/core/dist/graph/GraphEdge.d.ts +37 -0
- package/packages/core/dist/graph/GraphEdge.d.ts.map +1 -0
- package/packages/core/dist/graph/GraphEdge.js +29 -0
- package/packages/core/dist/graph/GraphEdge.js.map +1 -0
- package/packages/core/dist/graph/GraphNode.d.ts +52 -0
- package/packages/core/dist/graph/GraphNode.d.ts.map +1 -0
- package/packages/core/dist/graph/GraphNode.js +41 -0
- package/packages/core/dist/graph/GraphNode.js.map +1 -0
- package/packages/core/dist/graph/GraphQuery.d.ts +46 -0
- package/packages/core/dist/graph/GraphQuery.d.ts.map +1 -0
- package/packages/core/dist/graph/GraphQuery.js +47 -0
- package/packages/core/dist/graph/GraphQuery.js.map +1 -0
- package/packages/core/dist/graph/KnowledgeGraph.d.ts +38 -0
- package/packages/core/dist/graph/KnowledgeGraph.d.ts.map +1 -0
- package/packages/core/dist/graph/KnowledgeGraph.js +345 -0
- package/packages/core/dist/graph/KnowledgeGraph.js.map +1 -0
- package/packages/core/dist/graph/SubGraph.d.ts +36 -0
- package/packages/core/dist/graph/SubGraph.d.ts.map +1 -0
- package/packages/core/dist/graph/SubGraph.js +86 -0
- package/packages/core/dist/graph/SubGraph.js.map +1 -0
- package/packages/core/dist/index.d.ts +54 -0
- package/packages/core/dist/index.d.ts.map +1 -0
- package/packages/core/dist/index.js +62 -0
- package/packages/core/dist/index.js.map +1 -0
- package/packages/core/dist/maintenance/CompactionOrchestrator.d.ts +22 -0
- package/packages/core/dist/maintenance/CompactionOrchestrator.d.ts.map +1 -0
- package/packages/core/dist/maintenance/CompactionOrchestrator.js +62 -0
- package/packages/core/dist/maintenance/CompactionOrchestrator.js.map +1 -0
- package/packages/core/dist/maintenance/EdgePruner.d.ts +20 -0
- package/packages/core/dist/maintenance/EdgePruner.d.ts.map +1 -0
- package/packages/core/dist/maintenance/EdgePruner.js +65 -0
- package/packages/core/dist/maintenance/EdgePruner.js.map +1 -0
- package/packages/core/dist/maintenance/GraphCheckpoint.d.ts +51 -0
- package/packages/core/dist/maintenance/GraphCheckpoint.d.ts.map +1 -0
- package/packages/core/dist/maintenance/GraphCheckpoint.js +81 -0
- package/packages/core/dist/maintenance/GraphCheckpoint.js.map +1 -0
- package/packages/core/dist/maintenance/GraphRollback.d.ts +36 -0
- package/packages/core/dist/maintenance/GraphRollback.d.ts.map +1 -0
- package/packages/core/dist/maintenance/GraphRollback.js +154 -0
- package/packages/core/dist/maintenance/GraphRollback.js.map +1 -0
- package/packages/core/dist/maintenance/NodeDeduplicator.d.ts +26 -0
- package/packages/core/dist/maintenance/NodeDeduplicator.d.ts.map +1 -0
- package/packages/core/dist/maintenance/NodeDeduplicator.js +171 -0
- package/packages/core/dist/maintenance/NodeDeduplicator.js.map +1 -0
- package/packages/core/dist/maintenance/SubgraphArchiver.d.ts +18 -0
- package/packages/core/dist/maintenance/SubgraphArchiver.d.ts.map +1 -0
- package/packages/core/dist/maintenance/SubgraphArchiver.js +180 -0
- package/packages/core/dist/maintenance/SubgraphArchiver.js.map +1 -0
- package/packages/core/dist/memory/ArchivalMemory.d.ts +28 -0
- package/packages/core/dist/memory/ArchivalMemory.d.ts.map +1 -0
- package/packages/core/dist/memory/ArchivalMemory.js +26 -0
- package/packages/core/dist/memory/ArchivalMemory.js.map +1 -0
- package/packages/core/dist/memory/BlinkingMemory.d.ts +34 -0
- package/packages/core/dist/memory/BlinkingMemory.d.ts.map +1 -0
- package/packages/core/dist/memory/BlinkingMemory.js +44 -0
- package/packages/core/dist/memory/BlinkingMemory.js.map +1 -0
- package/packages/core/dist/memory/WorkingMemory.d.ts +38 -0
- package/packages/core/dist/memory/WorkingMemory.d.ts.map +1 -0
- package/packages/core/dist/memory/WorkingMemory.js +70 -0
- package/packages/core/dist/memory/WorkingMemory.js.map +1 -0
- package/packages/core/dist/storage/ObjectStore.d.ts +24 -0
- package/packages/core/dist/storage/ObjectStore.d.ts.map +1 -0
- package/packages/core/dist/storage/ObjectStore.js +50 -0
- package/packages/core/dist/storage/ObjectStore.js.map +1 -0
- package/packages/core/dist/storage/TraceStore.d.ts +16 -0
- package/packages/core/dist/storage/TraceStore.d.ts.map +1 -0
- package/packages/core/dist/storage/TraceStore.js +19 -0
- package/packages/core/dist/storage/TraceStore.js.map +1 -0
- package/packages/core/dist/storage/WeightEventLog.d.ts +11 -0
- package/packages/core/dist/storage/WeightEventLog.d.ts.map +1 -0
- package/packages/core/dist/storage/WeightEventLog.js +16 -0
- package/packages/core/dist/storage/WeightEventLog.js.map +1 -0
- package/packages/core/dist/storage/adapters/SQLiteAdapter.d.ts +86 -0
- package/packages/core/dist/storage/adapters/SQLiteAdapter.d.ts.map +1 -0
- package/packages/core/dist/storage/adapters/SQLiteAdapter.js +514 -0
- package/packages/core/dist/storage/adapters/SQLiteAdapter.js.map +1 -0
- package/packages/core/dist/trace/DeferredTrace.d.ts +43 -0
- package/packages/core/dist/trace/DeferredTrace.d.ts.map +1 -0
- package/packages/core/dist/trace/DeferredTrace.js +44 -0
- package/packages/core/dist/trace/DeferredTrace.js.map +1 -0
- package/packages/core/dist/trace/OutcomeTrace.d.ts +38 -0
- package/packages/core/dist/trace/OutcomeTrace.d.ts.map +1 -0
- package/packages/core/dist/trace/OutcomeTrace.js +9 -0
- package/packages/core/dist/trace/OutcomeTrace.js.map +1 -0
- package/packages/core/dist/trace/SkillTraceDecorator.d.ts +25 -0
- package/packages/core/dist/trace/SkillTraceDecorator.d.ts.map +1 -0
- package/packages/core/dist/trace/SkillTraceDecorator.js +41 -0
- package/packages/core/dist/trace/SkillTraceDecorator.js.map +1 -0
- package/packages/core/dist/trace/TraceReplay.d.ts +25 -0
- package/packages/core/dist/trace/TraceReplay.d.ts.map +1 -0
- package/packages/core/dist/trace/TraceReplay.js +40 -0
- package/packages/core/dist/trace/TraceReplay.js.map +1 -0
- package/packages/core/dist/trace/TraversalLedger.d.ts +33 -0
- package/packages/core/dist/trace/TraversalLedger.d.ts.map +1 -0
- package/packages/core/dist/trace/TraversalLedger.js +61 -0
- package/packages/core/dist/trace/TraversalLedger.js.map +1 -0
- package/packages/core/dist/types/SelfImprovement.d.ts +174 -0
- package/packages/core/dist/types/SelfImprovement.d.ts.map +1 -0
- package/packages/core/dist/types/SelfImprovement.js +23 -0
- package/packages/core/dist/types/SelfImprovement.js.map +1 -0
- package/packages/core/dist/types/SkillDefinition.d.ts +68 -0
- package/packages/core/dist/types/SkillDefinition.d.ts.map +1 -0
- package/packages/core/dist/types/SkillDefinition.js +12 -0
- package/packages/core/dist/types/SkillDefinition.js.map +1 -0
- package/packages/daemon/dist/BackgroundWorkers.d.ts +55 -0
- package/packages/daemon/dist/BackgroundWorkers.d.ts.map +1 -0
- package/packages/daemon/dist/BackgroundWorkers.js +121 -0
- package/packages/daemon/dist/BackgroundWorkers.js.map +1 -0
- package/packages/daemon/dist/EntityScopedContext.d.ts +22 -0
- package/packages/daemon/dist/EntityScopedContext.d.ts.map +1 -0
- package/packages/daemon/dist/EntityScopedContext.js +85 -0
- package/packages/daemon/dist/EntityScopedContext.js.map +1 -0
- package/packages/daemon/dist/HTTPServer.d.ts +27 -0
- package/packages/daemon/dist/HTTPServer.d.ts.map +1 -0
- package/packages/daemon/dist/HTTPServer.js +62 -0
- package/packages/daemon/dist/HTTPServer.js.map +1 -0
- package/packages/daemon/dist/SessionManager.d.ts +95 -0
- package/packages/daemon/dist/SessionManager.d.ts.map +1 -0
- package/packages/daemon/dist/SessionManager.js +205 -0
- package/packages/daemon/dist/SessionManager.js.map +1 -0
- package/packages/daemon/dist/SkillRegistry.d.ts +34 -0
- package/packages/daemon/dist/SkillRegistry.d.ts.map +1 -0
- package/packages/daemon/dist/SkillRegistry.js +90 -0
- package/packages/daemon/dist/SkillRegistry.js.map +1 -0
- package/packages/daemon/dist/SkillVariableResolver.d.ts +24 -0
- package/packages/daemon/dist/SkillVariableResolver.d.ts.map +1 -0
- package/packages/daemon/dist/SkillVariableResolver.js +85 -0
- package/packages/daemon/dist/SkillVariableResolver.js.map +1 -0
- package/packages/daemon/dist/WebSocketEvents.d.ts +107 -0
- package/packages/daemon/dist/WebSocketEvents.d.ts.map +1 -0
- package/packages/daemon/dist/WebSocketEvents.js +111 -0
- package/packages/daemon/dist/WebSocketEvents.js.map +1 -0
- package/packages/daemon/dist/ZeroAgentDaemon.d.ts +39 -0
- package/packages/daemon/dist/ZeroAgentDaemon.d.ts.map +1 -0
- package/packages/daemon/dist/ZeroAgentDaemon.js +161 -0
- package/packages/daemon/dist/ZeroAgentDaemon.js.map +1 -0
- package/packages/daemon/dist/config/ConfigSchema.d.ts +631 -0
- package/packages/daemon/dist/config/ConfigSchema.d.ts.map +1 -0
- package/packages/daemon/dist/config/ConfigSchema.js +107 -0
- package/packages/daemon/dist/config/ConfigSchema.js.map +1 -0
- package/packages/daemon/dist/config/DaemonConfig.d.ts +10 -0
- package/packages/daemon/dist/config/DaemonConfig.d.ts.map +1 -0
- package/packages/daemon/dist/config/DaemonConfig.js +34 -0
- package/packages/daemon/dist/config/DaemonConfig.js.map +1 -0
- package/packages/daemon/dist/index.d.ts +10 -0
- package/packages/daemon/dist/index.d.ts.map +1 -0
- package/packages/daemon/dist/index.js +8 -0
- package/packages/daemon/dist/index.js.map +1 -0
- package/packages/daemon/dist/routes/entities.d.ts +6 -0
- package/packages/daemon/dist/routes/entities.d.ts.map +1 -0
- package/packages/daemon/dist/routes/entities.js +54 -0
- package/packages/daemon/dist/routes/entities.js.map +1 -0
- package/packages/daemon/dist/routes/graph.d.ts +6 -0
- package/packages/daemon/dist/routes/graph.d.ts.map +1 -0
- package/packages/daemon/dist/routes/graph.js +61 -0
- package/packages/daemon/dist/routes/graph.js.map +1 -0
- package/packages/daemon/dist/routes/health.d.ts +15 -0
- package/packages/daemon/dist/routes/health.d.ts.map +1 -0
- package/packages/daemon/dist/routes/health.js +11 -0
- package/packages/daemon/dist/routes/health.js.map +1 -0
- package/packages/daemon/dist/routes/sessions.d.ts +6 -0
- package/packages/daemon/dist/routes/sessions.d.ts.map +1 -0
- package/packages/daemon/dist/routes/sessions.js +43 -0
- package/packages/daemon/dist/routes/sessions.js.map +1 -0
- package/packages/daemon/dist/routes/skills.d.ts +6 -0
- package/packages/daemon/dist/routes/skills.d.ts.map +1 -0
- package/packages/daemon/dist/routes/skills.js +62 -0
- package/packages/daemon/dist/routes/skills.js.map +1 -0
- package/packages/daemon/dist/routes/subagents.d.ts +3 -0
- package/packages/daemon/dist/routes/subagents.d.ts.map +1 -0
- package/packages/daemon/dist/routes/subagents.js +14 -0
- package/packages/daemon/dist/routes/subagents.js.map +1 -0
- package/packages/daemon/dist/routes/traces.d.ts +6 -0
- package/packages/daemon/dist/routes/traces.d.ts.map +1 -0
- package/packages/daemon/dist/routes/traces.js +31 -0
- package/packages/daemon/dist/routes/traces.js.map +1 -0
- package/packages/daemon/dist/start.d.ts +7 -0
- package/packages/daemon/dist/start.d.ts.map +1 -0
- package/packages/daemon/dist/start.js +24 -0
- package/packages/daemon/dist/start.js.map +1 -0
- package/packages/mcp-hub/dist/FilteredProxy.d.ts +20 -0
- package/packages/mcp-hub/dist/FilteredProxy.d.ts.map +1 -0
- package/packages/mcp-hub/dist/FilteredProxy.js +43 -0
- package/packages/mcp-hub/dist/FilteredProxy.js.map +1 -0
- package/packages/mcp-hub/dist/MCPDiscovery.d.ts +18 -0
- package/packages/mcp-hub/dist/MCPDiscovery.d.ts.map +1 -0
- package/packages/mcp-hub/dist/MCPDiscovery.js +86 -0
- package/packages/mcp-hub/dist/MCPDiscovery.js.map +1 -0
- package/packages/mcp-hub/dist/MCPHub.d.ts +48 -0
- package/packages/mcp-hub/dist/MCPHub.d.ts.map +1 -0
- package/packages/mcp-hub/dist/MCPHub.js +100 -0
- package/packages/mcp-hub/dist/MCPHub.js.map +1 -0
- package/packages/mcp-hub/dist/builtin/BrowserMCP.d.ts +6 -0
- package/packages/mcp-hub/dist/builtin/BrowserMCP.d.ts.map +1 -0
- package/packages/mcp-hub/dist/builtin/BrowserMCP.js +69 -0
- package/packages/mcp-hub/dist/builtin/BrowserMCP.js.map +1 -0
- package/packages/mcp-hub/dist/builtin/FilesystemMCP.d.ts +11 -0
- package/packages/mcp-hub/dist/builtin/FilesystemMCP.d.ts.map +1 -0
- package/packages/mcp-hub/dist/builtin/FilesystemMCP.js +104 -0
- package/packages/mcp-hub/dist/builtin/FilesystemMCP.js.map +1 -0
- package/packages/mcp-hub/dist/builtin/MemoryMCP.d.ts +9 -0
- package/packages/mcp-hub/dist/builtin/MemoryMCP.d.ts.map +1 -0
- package/packages/mcp-hub/dist/builtin/MemoryMCP.js +185 -0
- package/packages/mcp-hub/dist/builtin/MemoryMCP.js.map +1 -0
- package/packages/mcp-hub/dist/builtin/ShellMCP.d.ts +8 -0
- package/packages/mcp-hub/dist/builtin/ShellMCP.d.ts.map +1 -0
- package/packages/mcp-hub/dist/builtin/ShellMCP.js +74 -0
- package/packages/mcp-hub/dist/builtin/ShellMCP.js.map +1 -0
- package/packages/mcp-hub/dist/index.d.ts +9 -0
- package/packages/mcp-hub/dist/index.d.ts.map +1 -0
- package/packages/mcp-hub/dist/index.js +8 -0
- package/packages/mcp-hub/dist/index.js.map +1 -0
- package/packages/mcp-hub/dist/types.d.ts +30 -0
- package/packages/mcp-hub/dist/types.d.ts.map +1 -0
- package/packages/mcp-hub/dist/types.js +2 -0
- package/packages/mcp-hub/dist/types.js.map +1 -0
- package/packages/subagent/dist/CapabilityToken.d.ts +66 -0
- package/packages/subagent/dist/CapabilityToken.d.ts.map +1 -0
- package/packages/subagent/dist/CapabilityToken.js +120 -0
- package/packages/subagent/dist/CapabilityToken.js.map +1 -0
- package/packages/subagent/dist/ResourceDefaults.d.ts +16 -0
- package/packages/subagent/dist/ResourceDefaults.d.ts.map +1 -0
- package/packages/subagent/dist/ResourceDefaults.js +68 -0
- package/packages/subagent/dist/ResourceDefaults.js.map +1 -0
- package/packages/subagent/dist/SkillInputResolver.d.ts +30 -0
- package/packages/subagent/dist/SkillInputResolver.d.ts.map +1 -0
- package/packages/subagent/dist/SkillInputResolver.js +59 -0
- package/packages/subagent/dist/SkillInputResolver.js.map +1 -0
- package/packages/subagent/dist/SkillInvoker.d.ts +33 -0
- package/packages/subagent/dist/SkillInvoker.d.ts.map +1 -0
- package/packages/subagent/dist/SkillInvoker.js +69 -0
- package/packages/subagent/dist/SkillInvoker.js.map +1 -0
- package/packages/subagent/dist/SubagentOrchestrator.d.ts +52 -0
- package/packages/subagent/dist/SubagentOrchestrator.d.ts.map +1 -0
- package/packages/subagent/dist/SubagentOrchestrator.js +198 -0
- package/packages/subagent/dist/SubagentOrchestrator.js.map +1 -0
- package/packages/subagent/dist/SubagentResult.d.ts +34 -0
- package/packages/subagent/dist/SubagentResult.d.ts.map +1 -0
- package/packages/subagent/dist/SubagentResult.js +21 -0
- package/packages/subagent/dist/SubagentResult.js.map +1 -0
- package/packages/subagent/dist/Watchdog.d.ts +23 -0
- package/packages/subagent/dist/Watchdog.d.ts.map +1 -0
- package/packages/subagent/dist/Watchdog.js +44 -0
- package/packages/subagent/dist/Watchdog.js.map +1 -0
- package/packages/subagent/dist/index.d.ts +15 -0
- package/packages/subagent/dist/index.d.ts.map +1 -0
- package/packages/subagent/dist/index.js +23 -0
- package/packages/subagent/dist/index.js.map +1 -0
- package/packages/subagent/dist/sandbox/BwrapBackend.d.ts +14 -0
- package/packages/subagent/dist/sandbox/BwrapBackend.d.ts.map +1 -0
- package/packages/subagent/dist/sandbox/BwrapBackend.js +171 -0
- package/packages/subagent/dist/sandbox/BwrapBackend.js.map +1 -0
- package/packages/subagent/dist/sandbox/CloudBackend.d.ts +28 -0
- package/packages/subagent/dist/sandbox/CloudBackend.d.ts.map +1 -0
- package/packages/subagent/dist/sandbox/CloudBackend.js +52 -0
- package/packages/subagent/dist/sandbox/CloudBackend.js.map +1 -0
- package/packages/subagent/dist/sandbox/DockerBackend.d.ts +14 -0
- package/packages/subagent/dist/sandbox/DockerBackend.d.ts.map +1 -0
- package/packages/subagent/dist/sandbox/DockerBackend.js +149 -0
- package/packages/subagent/dist/sandbox/DockerBackend.js.map +1 -0
- package/packages/subagent/dist/sandbox/FirecrackerBackend.d.ts +17 -0
- package/packages/subagent/dist/sandbox/FirecrackerBackend.d.ts.map +1 -0
- package/packages/subagent/dist/sandbox/FirecrackerBackend.js +54 -0
- package/packages/subagent/dist/sandbox/FirecrackerBackend.js.map +1 -0
- package/packages/subagent/dist/sandbox/PodmanBackend.d.ts +13 -0
- package/packages/subagent/dist/sandbox/PodmanBackend.d.ts.map +1 -0
- package/packages/subagent/dist/sandbox/PodmanBackend.js +144 -0
- package/packages/subagent/dist/sandbox/PodmanBackend.js.map +1 -0
- package/packages/subagent/dist/sandbox/ProcessBackend.d.ts +16 -0
- package/packages/subagent/dist/sandbox/ProcessBackend.d.ts.map +1 -0
- package/packages/subagent/dist/sandbox/ProcessBackend.js +152 -0
- package/packages/subagent/dist/sandbox/ProcessBackend.js.map +1 -0
- package/packages/subagent/dist/sandbox/SandboxManager.d.ts +17 -0
- package/packages/subagent/dist/sandbox/SandboxManager.d.ts.map +1 -0
- package/packages/subagent/dist/sandbox/SandboxManager.js +45 -0
- package/packages/subagent/dist/sandbox/SandboxManager.js.map +1 -0
- package/packages/subagent/dist/sandbox/types.d.ts +35 -0
- package/packages/subagent/dist/sandbox/types.d.ts.map +1 -0
- package/packages/subagent/dist/sandbox/types.js +5 -0
- package/packages/subagent/dist/sandbox/types.js.map +1 -0
- package/packages/subagent-runtime/dist/AgentLoop.d.ts +46 -0
- package/packages/subagent-runtime/dist/AgentLoop.d.ts.map +1 -0
- package/packages/subagent-runtime/dist/AgentLoop.js +85 -0
- package/packages/subagent-runtime/dist/AgentLoop.js.map +1 -0
- package/packages/subagent-runtime/dist/MCPProxy.d.ts +24 -0
- package/packages/subagent-runtime/dist/MCPProxy.d.ts.map +1 -0
- package/packages/subagent-runtime/dist/MCPProxy.js +31 -0
- package/packages/subagent-runtime/dist/MCPProxy.js.map +1 -0
- package/packages/subagent-runtime/dist/OutputChannel.d.ts +10 -0
- package/packages/subagent-runtime/dist/OutputChannel.d.ts.map +1 -0
- package/packages/subagent-runtime/dist/OutputChannel.js +14 -0
- package/packages/subagent-runtime/dist/OutputChannel.js.map +1 -0
- package/packages/subagent-runtime/dist/ResourceTracker.d.ts +29 -0
- package/packages/subagent-runtime/dist/ResourceTracker.d.ts.map +1 -0
- package/packages/subagent-runtime/dist/ResourceTracker.js +46 -0
- package/packages/subagent-runtime/dist/ResourceTracker.js.map +1 -0
- package/packages/subagent-runtime/dist/TokenValidator.d.ts +17 -0
- package/packages/subagent-runtime/dist/TokenValidator.d.ts.map +1 -0
- package/packages/subagent-runtime/dist/TokenValidator.js +29 -0
- package/packages/subagent-runtime/dist/TokenValidator.js.map +1 -0
- package/packages/subagent-runtime/dist/index.d.ts +6 -0
- package/packages/subagent-runtime/dist/index.d.ts.map +1 -0
- package/packages/subagent-runtime/dist/index.js +11 -0
- package/packages/subagent-runtime/dist/index.js.map +1 -0
- package/packages/subagent-runtime/dist/main.d.ts +2 -0
- package/packages/subagent-runtime/dist/main.d.ts.map +1 -0
- package/packages/subagent-runtime/dist/main.js +102 -0
- package/packages/subagent-runtime/dist/main.js.map +1 -0
- package/seeds/b2b-outbound/package.json +6 -0
- package/seeds/research/package.json +6 -0
- package/seeds/software-engineering/install.ts +78 -0
- package/seeds/software-engineering/package.json +6 -0
- package/seeds/software-engineering/sprint-workflow.json +102 -0
- package/skills/build.yaml +97 -0
- package/skills/debug.yaml +117 -0
- package/skills/design-review.yaml +119 -0
- package/skills/doc.yaml +107 -0
- package/skills/office-hours.yaml +76 -0
- package/skills/plan-ceo-review.yaml +84 -0
- package/skills/plan-eng-review.yaml +96 -0
- package/skills/qa.yaml +116 -0
- package/skills/refactor.yaml +125 -0
- package/skills/research.yaml +108 -0
- package/skills/retro.yaml +106 -0
- package/skills/review.yaml +101 -0
- package/skills/security-audit.yaml +114 -0
- package/skills/ship.yaml +108 -0
- package/skills/test-writer.yaml +131 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { SQLiteAdapter } from '../storage/adapters/SQLiteAdapter.js';
|
|
2
|
+
import type { WeightEventLog } from '../storage/WeightEventLog.js';
|
|
3
|
+
export declare class EdgeWeightUpdater {
|
|
4
|
+
private adapter;
|
|
5
|
+
private weightLog;
|
|
6
|
+
constructor(adapter: SQLiteAdapter, weightLog: WeightEventLog);
|
|
7
|
+
/**
|
|
8
|
+
* Update edge weight with optimistic concurrency control.
|
|
9
|
+
* Retries up to 3 times with exponential backoff (1ms, 2ms, 4ms).
|
|
10
|
+
* On 3rd failure: LWW (last-write-wins) fallback.
|
|
11
|
+
*/
|
|
12
|
+
update(edgeId: string, expectedWeight: number, newWeight: number, reason: string, traceId?: string): Promise<boolean>;
|
|
13
|
+
private logEvent;
|
|
14
|
+
private sleep;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=EdgeWeightUpdater.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EdgeWeightUpdater.d.ts","sourceRoot":"","sources":["../../src/concurrency/EdgeWeightUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,sCAAsC,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,SAAS;gBADT,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,cAAc;IAGnC;;;;OAIG;IACG,MAAM,CACV,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC;IA8BnB,OAAO,CAAC,QAAQ;IAoBhB,OAAO,CAAC,KAAK;CAGd"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export class EdgeWeightUpdater {
|
|
2
|
+
adapter;
|
|
3
|
+
weightLog;
|
|
4
|
+
constructor(adapter, weightLog) {
|
|
5
|
+
this.adapter = adapter;
|
|
6
|
+
this.weightLog = weightLog;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Update edge weight with optimistic concurrency control.
|
|
10
|
+
* Retries up to 3 times with exponential backoff (1ms, 2ms, 4ms).
|
|
11
|
+
* On 3rd failure: LWW (last-write-wins) fallback.
|
|
12
|
+
*/
|
|
13
|
+
async update(edgeId, expectedWeight, newWeight, reason, traceId) {
|
|
14
|
+
const delays = [1, 2, 4];
|
|
15
|
+
let currentExpected = expectedWeight;
|
|
16
|
+
for (let attempt = 0; attempt <= 2; attempt++) {
|
|
17
|
+
const success = this.adapter.updateEdgeWeight(edgeId, newWeight, currentExpected);
|
|
18
|
+
if (success) {
|
|
19
|
+
this.logEvent(edgeId, currentExpected, newWeight, reason, traceId);
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
// Re-read current weight for next attempt
|
|
23
|
+
const edge = this.adapter.getEdge(edgeId);
|
|
24
|
+
if (!edge)
|
|
25
|
+
return false;
|
|
26
|
+
currentExpected = edge.weight;
|
|
27
|
+
if (attempt < 2) {
|
|
28
|
+
await this.sleep(delays[attempt]);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// Emergency LWW fallback — all 3 OCC attempts failed
|
|
32
|
+
console.warn(`OCC conflict on edge ${edgeId} after 3 retries — LWW fallback`);
|
|
33
|
+
// NOTE: forceUpdateEdgeWeight must exist on SQLiteAdapter.
|
|
34
|
+
// It executes: UPDATE edges SET weight = ? WHERE id = ?
|
|
35
|
+
// without any OCC version/expected-weight check.
|
|
36
|
+
this.adapter.forceUpdateEdgeWeight(edgeId, newWeight);
|
|
37
|
+
this.logEvent(edgeId, currentExpected, newWeight, `${reason}:lww_fallback`, traceId);
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
logEvent(edgeId, oldWeight, newWeight, reason, traceId) {
|
|
41
|
+
const event = {
|
|
42
|
+
id: crypto.randomUUID(),
|
|
43
|
+
edge_id: edgeId,
|
|
44
|
+
old_weight: oldWeight,
|
|
45
|
+
new_weight: newWeight,
|
|
46
|
+
delta: newWeight - oldWeight,
|
|
47
|
+
reason,
|
|
48
|
+
trace_id: traceId ?? null,
|
|
49
|
+
created_at: Date.now(),
|
|
50
|
+
};
|
|
51
|
+
this.weightLog.append(event);
|
|
52
|
+
}
|
|
53
|
+
sleep(ms) {
|
|
54
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=EdgeWeightUpdater.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EdgeWeightUpdater.js","sourceRoot":"","sources":["../../src/concurrency/EdgeWeightUpdater.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,iBAAiB;IAElB;IACA;IAFV,YACU,OAAsB,EACtB,SAAyB;QADzB,YAAO,GAAP,OAAO,CAAe;QACtB,cAAS,GAAT,SAAS,CAAgB;IAChC,CAAC;IAEJ;;;;OAIG;IACH,KAAK,CAAC,MAAM,CACV,MAAc,EACd,cAAsB,EACtB,SAAiB,EACjB,MAAc,EACd,OAAgB;QAEhB,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,IAAI,eAAe,GAAG,cAAc,CAAC;QAErC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;YAClF,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBACnE,OAAO,IAAI,CAAC;YACd,CAAC;YACD,0CAA0C;YAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAC;YACxB,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC;YAE9B,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,qDAAqD;QACrD,OAAO,CAAC,IAAI,CAAC,wBAAwB,MAAM,iCAAiC,CAAC,CAAC;QAC9E,2DAA2D;QAC3D,wDAAwD;QACxD,iDAAiD;QACjD,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,MAAM,eAAe,EAAE,OAAO,CAAC,CAAC;QACrF,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,QAAQ,CACd,MAAc,EACd,SAAiB,EACjB,SAAiB,EACjB,MAAc,EACd,OAAgB;QAEhB,MAAM,KAAK,GAAgB;YACzB,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;YACvB,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,SAAS;YACrB,KAAK,EAAE,SAAS,GAAG,SAAS;YAC5B,MAAM;YACN,QAAQ,EAAE,OAAO,IAAI,IAAI;YACzB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;SACvB,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;CACF"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { SQLiteAdapter } from '../storage/adapters/SQLiteAdapter.js';
|
|
2
|
+
export interface SnapshotEntry {
|
|
3
|
+
edge_id: string;
|
|
4
|
+
weight_at_snapshot: number;
|
|
5
|
+
version: number;
|
|
6
|
+
}
|
|
7
|
+
export interface SessionSnapshotData {
|
|
8
|
+
session_id: string;
|
|
9
|
+
created_at: number;
|
|
10
|
+
edges: Map<string, SnapshotEntry>;
|
|
11
|
+
pending_updates: Map<string, number>;
|
|
12
|
+
}
|
|
13
|
+
export interface MergeResult {
|
|
14
|
+
applied: number;
|
|
15
|
+
conflicted: number;
|
|
16
|
+
skipped: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Optimistic Concurrency Control (OCC) snapshot isolation per session.
|
|
20
|
+
*
|
|
21
|
+
* Each session captures a snapshot of edge weights at the start, records
|
|
22
|
+
* pending updates during execution, and merges them back at the end.
|
|
23
|
+
* Conflicts are detected by comparing edge versions (number of weight events)
|
|
24
|
+
* at snapshot time vs merge time.
|
|
25
|
+
*/
|
|
26
|
+
export declare class SessionSnapshotManager {
|
|
27
|
+
private adapter;
|
|
28
|
+
private snapshots;
|
|
29
|
+
constructor(adapter: SQLiteAdapter);
|
|
30
|
+
/**
|
|
31
|
+
* Create a snapshot for a session, capturing current weight and version
|
|
32
|
+
* for each specified edge.
|
|
33
|
+
*/
|
|
34
|
+
createSnapshot(sessionId: string, edgeIds: string[]): SessionSnapshotData;
|
|
35
|
+
/**
|
|
36
|
+
* Record a pending weight update within an active session snapshot.
|
|
37
|
+
* The update is buffered and only applied on merge.
|
|
38
|
+
*/
|
|
39
|
+
recordUpdate(sessionId: string, edgeId: string, newWeight: number): void;
|
|
40
|
+
/**
|
|
41
|
+
* Merge a session's pending updates back into the live graph.
|
|
42
|
+
*
|
|
43
|
+
* Conflict resolution strategy:
|
|
44
|
+
* - If no version change since snapshot: apply via CAS (updateEdgeWeight).
|
|
45
|
+
* - If version changed AND session succeeded: session wins, force write.
|
|
46
|
+
* - If version changed AND session failed: skip the update.
|
|
47
|
+
* - If the edge no longer exists: skip.
|
|
48
|
+
*/
|
|
49
|
+
mergeSnapshot(sessionId: string, sessionSucceeded: boolean): MergeResult;
|
|
50
|
+
/**
|
|
51
|
+
* Retrieve the snapshot data for an active session.
|
|
52
|
+
*/
|
|
53
|
+
getSnapshot(sessionId: string): SessionSnapshotData | null;
|
|
54
|
+
/**
|
|
55
|
+
* Discard a session snapshot without merging.
|
|
56
|
+
*/
|
|
57
|
+
discardSnapshot(sessionId: string): void;
|
|
58
|
+
/**
|
|
59
|
+
* Derive an edge's version from the number of weight events recorded for it.
|
|
60
|
+
*/
|
|
61
|
+
private getEdgeVersion;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=SessionSnapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionSnapshot.d.ts","sourceRoot":"","sources":["../../src/concurrency/SessionSnapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAG1E,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAClC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,qBAAa,sBAAsB;IAGrB,OAAO,CAAC,OAAO;IAF3B,OAAO,CAAC,SAAS,CAA0C;gBAEvC,OAAO,EAAE,aAAa;IAE1C;;;OAGG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,mBAAmB;IAuBzE;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAOxE;;;;;;;;OAQG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,GAAG,WAAW;IAoDxE;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAI1D;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,OAAO,CAAC,cAAc;CAGvB"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Optimistic Concurrency Control (OCC) snapshot isolation per session.
|
|
3
|
+
*
|
|
4
|
+
* Each session captures a snapshot of edge weights at the start, records
|
|
5
|
+
* pending updates during execution, and merges them back at the end.
|
|
6
|
+
* Conflicts are detected by comparing edge versions (number of weight events)
|
|
7
|
+
* at snapshot time vs merge time.
|
|
8
|
+
*/
|
|
9
|
+
export class SessionSnapshotManager {
|
|
10
|
+
adapter;
|
|
11
|
+
snapshots = new Map();
|
|
12
|
+
constructor(adapter) {
|
|
13
|
+
this.adapter = adapter;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Create a snapshot for a session, capturing current weight and version
|
|
17
|
+
* for each specified edge.
|
|
18
|
+
*/
|
|
19
|
+
createSnapshot(sessionId, edgeIds) {
|
|
20
|
+
const snapshot = {
|
|
21
|
+
session_id: sessionId,
|
|
22
|
+
created_at: Date.now(),
|
|
23
|
+
edges: new Map(),
|
|
24
|
+
pending_updates: new Map(),
|
|
25
|
+
};
|
|
26
|
+
for (const edgeId of edgeIds) {
|
|
27
|
+
const edge = this.adapter.getEdge(edgeId);
|
|
28
|
+
if (edge) {
|
|
29
|
+
snapshot.edges.set(edgeId, {
|
|
30
|
+
edge_id: edgeId,
|
|
31
|
+
weight_at_snapshot: edge.weight,
|
|
32
|
+
version: this.getEdgeVersion(edgeId),
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
this.snapshots.set(sessionId, snapshot);
|
|
37
|
+
return snapshot;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Record a pending weight update within an active session snapshot.
|
|
41
|
+
* The update is buffered and only applied on merge.
|
|
42
|
+
*/
|
|
43
|
+
recordUpdate(sessionId, edgeId, newWeight) {
|
|
44
|
+
const snapshot = this.snapshots.get(sessionId);
|
|
45
|
+
if (snapshot) {
|
|
46
|
+
snapshot.pending_updates.set(edgeId, newWeight);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Merge a session's pending updates back into the live graph.
|
|
51
|
+
*
|
|
52
|
+
* Conflict resolution strategy:
|
|
53
|
+
* - If no version change since snapshot: apply via CAS (updateEdgeWeight).
|
|
54
|
+
* - If version changed AND session succeeded: session wins, force write.
|
|
55
|
+
* - If version changed AND session failed: skip the update.
|
|
56
|
+
* - If the edge no longer exists: skip.
|
|
57
|
+
*/
|
|
58
|
+
mergeSnapshot(sessionId, sessionSucceeded) {
|
|
59
|
+
const snapshot = this.snapshots.get(sessionId);
|
|
60
|
+
if (!snapshot) {
|
|
61
|
+
return { applied: 0, conflicted: 0, skipped: 0 };
|
|
62
|
+
}
|
|
63
|
+
const result = { applied: 0, conflicted: 0, skipped: 0 };
|
|
64
|
+
for (const [edgeId, pendingWeight] of snapshot.pending_updates) {
|
|
65
|
+
const current = this.adapter.getEdge(edgeId);
|
|
66
|
+
if (!current) {
|
|
67
|
+
result.skipped++;
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
const snapshotEntry = snapshot.edges.get(edgeId);
|
|
71
|
+
const currentVersion = this.getEdgeVersion(edgeId);
|
|
72
|
+
// Check if the edge has been modified since our snapshot
|
|
73
|
+
if (snapshotEntry && currentVersion > snapshotEntry.version) {
|
|
74
|
+
// Conflict detected: another session modified this edge
|
|
75
|
+
result.conflicted++;
|
|
76
|
+
if (sessionSucceeded) {
|
|
77
|
+
// Session wins -- force the write (last-writer-wins for successful sessions)
|
|
78
|
+
this.adapter.forceUpdateEdgeWeight(edgeId, pendingWeight);
|
|
79
|
+
result.applied++;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
result.skipped++;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
// No conflict -- attempt CAS update using expected weight
|
|
87
|
+
const expectedWeight = snapshotEntry
|
|
88
|
+
? snapshotEntry.weight_at_snapshot
|
|
89
|
+
: current.weight;
|
|
90
|
+
const success = this.adapter.updateEdgeWeight(edgeId, pendingWeight, expectedWeight);
|
|
91
|
+
if (success) {
|
|
92
|
+
result.applied++;
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
// CAS failed (weight changed between version check and CAS)
|
|
96
|
+
result.conflicted++;
|
|
97
|
+
result.skipped++;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// Clean up the snapshot after merge
|
|
102
|
+
this.snapshots.delete(sessionId);
|
|
103
|
+
return result;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Retrieve the snapshot data for an active session.
|
|
107
|
+
*/
|
|
108
|
+
getSnapshot(sessionId) {
|
|
109
|
+
return this.snapshots.get(sessionId) ?? null;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Discard a session snapshot without merging.
|
|
113
|
+
*/
|
|
114
|
+
discardSnapshot(sessionId) {
|
|
115
|
+
this.snapshots.delete(sessionId);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Derive an edge's version from the number of weight events recorded for it.
|
|
119
|
+
*/
|
|
120
|
+
getEdgeVersion(edgeId) {
|
|
121
|
+
return this.adapter.getWeightEvents(edgeId).length;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=SessionSnapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionSnapshot.js","sourceRoot":"","sources":["../../src/concurrency/SessionSnapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export interface HNSWSearchResult {
|
|
2
|
+
id: string;
|
|
3
|
+
distance: number;
|
|
4
|
+
similarity: number;
|
|
5
|
+
}
|
|
6
|
+
export interface HNSWConfig {
|
|
7
|
+
dimensions: number;
|
|
8
|
+
metric?: 'cos' | 'l2';
|
|
9
|
+
connectivity?: number;
|
|
10
|
+
ef_construction?: number;
|
|
11
|
+
}
|
|
12
|
+
export declare class HNSWIndex {
|
|
13
|
+
private config;
|
|
14
|
+
private vectors;
|
|
15
|
+
private usearchIndex;
|
|
16
|
+
constructor(config: HNSWConfig);
|
|
17
|
+
static open(path: string, config: HNSWConfig): Promise<HNSWIndex>;
|
|
18
|
+
add(id: string, vector: Float32Array): void;
|
|
19
|
+
remove(id: string): void;
|
|
20
|
+
search(query: Float32Array, limit?: number): HNSWSearchResult[];
|
|
21
|
+
private cosineSimilarity;
|
|
22
|
+
get size(): number;
|
|
23
|
+
get dimensions(): number;
|
|
24
|
+
toJSON(): {
|
|
25
|
+
entries: Array<{
|
|
26
|
+
id: string;
|
|
27
|
+
vector: number[];
|
|
28
|
+
}>;
|
|
29
|
+
};
|
|
30
|
+
static fromJSON(data: {
|
|
31
|
+
entries: Array<{
|
|
32
|
+
id: string;
|
|
33
|
+
vector: number[];
|
|
34
|
+
}>;
|
|
35
|
+
}, config: HNSWConfig): HNSWIndex;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=HNSWIndex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HNSWIndex.d.ts","sourceRoot":"","sources":["../../src/embedding/HNSWIndex.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAa;IAE3B,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,YAAY,CAAwB;gBAEhC,MAAM,EAAE,UAAU;WAUjB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IAgBvE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IAS3C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIxB,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,GAAE,MAAW,GAAG,gBAAgB,EAAE;IAanE,OAAO,CAAC,gBAAgB;IAaxB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAGD,MAAM,IAAI;QAAE,OAAO,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE;IAQ9D,MAAM,CAAC,QAAQ,CACb,IAAI,EAAE;QAAE,OAAO,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE,EAC1D,MAAM,EAAE,UAAU,GACjB,SAAS;CAOb"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export class HNSWIndex {
|
|
2
|
+
config;
|
|
3
|
+
// In-memory fallback: Map<id, Float32Array>
|
|
4
|
+
vectors;
|
|
5
|
+
usearchIndex = null;
|
|
6
|
+
constructor(config) {
|
|
7
|
+
this.config = {
|
|
8
|
+
dimensions: config.dimensions,
|
|
9
|
+
metric: config.metric ?? 'cos',
|
|
10
|
+
connectivity: config.connectivity ?? 16,
|
|
11
|
+
ef_construction: config.ef_construction ?? 200,
|
|
12
|
+
};
|
|
13
|
+
this.vectors = new Map();
|
|
14
|
+
}
|
|
15
|
+
static async open(path, config) {
|
|
16
|
+
const index = new HNSWIndex(config);
|
|
17
|
+
// Try to load usearch, fall back to brute-force
|
|
18
|
+
try {
|
|
19
|
+
// Dynamic import — may not be installed
|
|
20
|
+
// @ts-expect-error usearch may not be installed
|
|
21
|
+
const usearch = await import('usearch');
|
|
22
|
+
// TODO: initialize usearch index from path
|
|
23
|
+
void usearch;
|
|
24
|
+
void path;
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// Brute-force fallback — fine for <10K vectors
|
|
28
|
+
}
|
|
29
|
+
return index;
|
|
30
|
+
}
|
|
31
|
+
add(id, vector) {
|
|
32
|
+
if (vector.length !== this.config.dimensions) {
|
|
33
|
+
throw new Error(`Vector dimension mismatch: expected ${this.config.dimensions}, got ${vector.length}`);
|
|
34
|
+
}
|
|
35
|
+
this.vectors.set(id, vector);
|
|
36
|
+
}
|
|
37
|
+
remove(id) {
|
|
38
|
+
this.vectors.delete(id);
|
|
39
|
+
}
|
|
40
|
+
search(query, limit = 10) {
|
|
41
|
+
if (this.vectors.size === 0)
|
|
42
|
+
return [];
|
|
43
|
+
// Brute-force cosine similarity
|
|
44
|
+
const results = [];
|
|
45
|
+
for (const [id, vec] of this.vectors) {
|
|
46
|
+
const sim = this.cosineSimilarity(query, vec);
|
|
47
|
+
results.push({ id, distance: 1 - sim, similarity: sim });
|
|
48
|
+
}
|
|
49
|
+
results.sort((a, b) => b.similarity - a.similarity);
|
|
50
|
+
return results.slice(0, limit);
|
|
51
|
+
}
|
|
52
|
+
cosineSimilarity(a, b) {
|
|
53
|
+
let dot = 0;
|
|
54
|
+
let normA = 0;
|
|
55
|
+
let normB = 0;
|
|
56
|
+
for (let i = 0; i < a.length; i++) {
|
|
57
|
+
dot += a[i] * b[i];
|
|
58
|
+
normA += a[i] * a[i];
|
|
59
|
+
normB += b[i] * b[i];
|
|
60
|
+
}
|
|
61
|
+
const denom = Math.sqrt(normA) * Math.sqrt(normB);
|
|
62
|
+
return denom === 0 ? 0 : dot / denom;
|
|
63
|
+
}
|
|
64
|
+
get size() {
|
|
65
|
+
return this.vectors.size;
|
|
66
|
+
}
|
|
67
|
+
get dimensions() {
|
|
68
|
+
return this.config.dimensions;
|
|
69
|
+
}
|
|
70
|
+
// Serialize for snapshot injection into subagents
|
|
71
|
+
toJSON() {
|
|
72
|
+
const entries = [];
|
|
73
|
+
for (const [id, vec] of this.vectors) {
|
|
74
|
+
entries.push({ id, vector: Array.from(vec) });
|
|
75
|
+
}
|
|
76
|
+
return { entries };
|
|
77
|
+
}
|
|
78
|
+
static fromJSON(data, config) {
|
|
79
|
+
const index = new HNSWIndex(config);
|
|
80
|
+
for (const entry of data.entries) {
|
|
81
|
+
index.add(entry.id, new Float32Array(entry.vector));
|
|
82
|
+
}
|
|
83
|
+
return index;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=HNSWIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HNSWIndex.js","sourceRoot":"","sources":["../../src/embedding/HNSWIndex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { EmbeddingAdapter } from './adapters/OllamaAdapter.js';
|
|
2
|
+
import type { NodeContent } from '../graph/GraphNode.js';
|
|
3
|
+
export declare class MultimodalEmbedder {
|
|
4
|
+
private textAdapter;
|
|
5
|
+
private visionAdapter;
|
|
6
|
+
constructor(opts: {
|
|
7
|
+
textAdapter?: EmbeddingAdapter;
|
|
8
|
+
visionAdapter?: EmbeddingAdapter;
|
|
9
|
+
});
|
|
10
|
+
get dimensions(): number;
|
|
11
|
+
get isAvailable(): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Compute a fused embedding from a label + content items.
|
|
14
|
+
* Late fusion: average of per-modality embeddings.
|
|
15
|
+
* Returns null if no adapter is available.
|
|
16
|
+
*/
|
|
17
|
+
embed(label: string, content: NodeContent[]): Promise<Float32Array | null>;
|
|
18
|
+
/**
|
|
19
|
+
* Embed a single text string (convenience).
|
|
20
|
+
*/
|
|
21
|
+
embedText(text: string): Promise<Float32Array | null>;
|
|
22
|
+
private averageEmbeddings;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=MultimodalEmbedder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultimodalEmbedder.d.ts","sourceRoot":"","sources":["../../src/embedding/MultimodalEmbedder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,aAAa,CAA0B;gBAEnC,IAAI,EAAE;QAChB,WAAW,CAAC,EAAE,gBAAgB,CAAC;QAC/B,aAAa,CAAC,EAAE,gBAAgB,CAAC;KAClC;IAKD,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;;;OAIG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAwChF;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAK3D,OAAO,CAAC,iBAAiB;CAU1B"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { ContentType } from '../graph/GraphNode.js';
|
|
2
|
+
export class MultimodalEmbedder {
|
|
3
|
+
textAdapter;
|
|
4
|
+
visionAdapter;
|
|
5
|
+
constructor(opts) {
|
|
6
|
+
this.textAdapter = opts.textAdapter ?? null;
|
|
7
|
+
this.visionAdapter = opts.visionAdapter ?? null;
|
|
8
|
+
}
|
|
9
|
+
get dimensions() {
|
|
10
|
+
return this.textAdapter?.dimensions ?? this.visionAdapter?.dimensions ?? 0;
|
|
11
|
+
}
|
|
12
|
+
get isAvailable() {
|
|
13
|
+
return this.textAdapter !== null || this.visionAdapter !== null;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Compute a fused embedding from a label + content items.
|
|
17
|
+
* Late fusion: average of per-modality embeddings.
|
|
18
|
+
* Returns null if no adapter is available.
|
|
19
|
+
*/
|
|
20
|
+
async embed(label, content) {
|
|
21
|
+
if (!this.isAvailable)
|
|
22
|
+
return null;
|
|
23
|
+
const embeddings = [];
|
|
24
|
+
for (const item of content) {
|
|
25
|
+
switch (item.type) {
|
|
26
|
+
case ContentType.TEXT:
|
|
27
|
+
case ContentType.CODE:
|
|
28
|
+
case ContentType.STRUCTURED:
|
|
29
|
+
if (this.textAdapter) {
|
|
30
|
+
embeddings.push(await this.textAdapter.embed(item.data));
|
|
31
|
+
}
|
|
32
|
+
break;
|
|
33
|
+
case ContentType.IMAGE:
|
|
34
|
+
if (this.visionAdapter) {
|
|
35
|
+
embeddings.push(await this.visionAdapter.embed(item.data));
|
|
36
|
+
}
|
|
37
|
+
break;
|
|
38
|
+
case ContentType.AUDIO: {
|
|
39
|
+
// Use transcription if available
|
|
40
|
+
const transcription = item.metadata?.transcription;
|
|
41
|
+
if (transcription && this.textAdapter) {
|
|
42
|
+
embeddings.push(await this.textAdapter.embed(transcription));
|
|
43
|
+
}
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Always embed the label
|
|
49
|
+
if (this.textAdapter) {
|
|
50
|
+
embeddings.push(await this.textAdapter.embed(label));
|
|
51
|
+
}
|
|
52
|
+
if (embeddings.length === 0)
|
|
53
|
+
return null;
|
|
54
|
+
return this.averageEmbeddings(embeddings);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Embed a single text string (convenience).
|
|
58
|
+
*/
|
|
59
|
+
async embedText(text) {
|
|
60
|
+
if (!this.textAdapter)
|
|
61
|
+
return null;
|
|
62
|
+
return this.textAdapter.embed(text);
|
|
63
|
+
}
|
|
64
|
+
averageEmbeddings(embeddings) {
|
|
65
|
+
const dim = embeddings[0].length;
|
|
66
|
+
const result = new Float32Array(dim);
|
|
67
|
+
for (const emb of embeddings) {
|
|
68
|
+
for (let i = 0; i < dim; i++) {
|
|
69
|
+
result[i] += emb[i] / embeddings.length;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=MultimodalEmbedder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultimodalEmbedder.js","sourceRoot":"","sources":["../../src/embedding/MultimodalEmbedder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NomicAdapter.d.ts","sourceRoot":"","sources":["../../../src/embedding/adapters/NomicAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE1E,qBAAa,YAAa,SAAQ,aAAc,YAAW,gBAAgB;gBAC7D,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;CAOxC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { OllamaAdapter } from './OllamaAdapter.js';
|
|
2
|
+
export class NomicAdapter extends OllamaAdapter {
|
|
3
|
+
constructor(opts) {
|
|
4
|
+
super({
|
|
5
|
+
model: 'nomic-embed-text',
|
|
6
|
+
dimensions: 768,
|
|
7
|
+
baseUrl: opts?.baseUrl,
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=NomicAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NomicAdapter.js","sourceRoot":"","sources":["../../../src/embedding/adapters/NomicAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAyB,MAAM,oBAAoB,CAAC;AAE1E,MAAM,OAAO,YAAa,SAAQ,aAAa;IAC7C,YAAY,IAA2B;QACrC,KAAK,CAAC;YACJ,KAAK,EAAE,kBAAkB;YACzB,UAAU,EAAE,GAAG;YACf,OAAO,EAAE,IAAI,EAAE,OAAO;SACvB,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface EmbeddingAdapter {
|
|
2
|
+
embed(text: string): Promise<Float32Array>;
|
|
3
|
+
embedBatch(texts: string[]): Promise<Float32Array[]>;
|
|
4
|
+
readonly dimensions: number;
|
|
5
|
+
readonly modelName: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class OllamaAdapter implements EmbeddingAdapter {
|
|
8
|
+
readonly dimensions: number;
|
|
9
|
+
readonly modelName: string;
|
|
10
|
+
private baseUrl;
|
|
11
|
+
constructor(opts: {
|
|
12
|
+
model: string;
|
|
13
|
+
dimensions: number;
|
|
14
|
+
baseUrl?: string;
|
|
15
|
+
});
|
|
16
|
+
embed(text: string): Promise<Float32Array>;
|
|
17
|
+
embedBatch(texts: string[]): Promise<Float32Array[]>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=OllamaAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OllamaAdapter.d.ts","sourceRoot":"","sources":["../../../src/embedding/adapters/OllamaAdapter.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACrD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,aAAc,YAAW,gBAAgB;IACpD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,OAAO,CAAS;gBAEZ,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAMnE,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAa1C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAI3D"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export class OllamaAdapter {
|
|
2
|
+
dimensions;
|
|
3
|
+
modelName;
|
|
4
|
+
baseUrl;
|
|
5
|
+
constructor(opts) {
|
|
6
|
+
this.modelName = opts.model;
|
|
7
|
+
this.dimensions = opts.dimensions;
|
|
8
|
+
this.baseUrl = opts.baseUrl ?? 'http://localhost:11434';
|
|
9
|
+
}
|
|
10
|
+
async embed(text) {
|
|
11
|
+
const resp = await fetch(`${this.baseUrl}/api/embeddings`, {
|
|
12
|
+
method: 'POST',
|
|
13
|
+
headers: { 'Content-Type': 'application/json' },
|
|
14
|
+
body: JSON.stringify({ model: this.modelName, prompt: text }),
|
|
15
|
+
});
|
|
16
|
+
if (!resp.ok) {
|
|
17
|
+
throw new Error(`Ollama embedding failed: ${resp.status} ${await resp.text()}`);
|
|
18
|
+
}
|
|
19
|
+
const data = (await resp.json());
|
|
20
|
+
return new Float32Array(data.embedding);
|
|
21
|
+
}
|
|
22
|
+
async embedBatch(texts) {
|
|
23
|
+
// Ollama doesn't have a batch endpoint — run sequentially
|
|
24
|
+
return Promise.all(texts.map((t) => this.embed(t)));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=OllamaAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OllamaAdapter.js","sourceRoot":"","sources":["../../../src/embedding/adapters/OllamaAdapter.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,aAAa;IACf,UAAU,CAAS;IACnB,SAAS,CAAS;IACnB,OAAO,CAAS;IAExB,YAAY,IAA6D;QACvE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,wBAAwB,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,iBAAiB,EAAE;YACzD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SAC9D,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,MAAM,IAAI,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAA4B,CAAC;QAC5D,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAe;QAC9B,0DAA0D;QAC1D,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { EmbeddingAdapter } from './OllamaAdapter.js';
|
|
2
|
+
export declare class OpenAIAdapter implements EmbeddingAdapter {
|
|
3
|
+
readonly dimensions = 1536;
|
|
4
|
+
readonly modelName = "text-embedding-3-small";
|
|
5
|
+
private apiKey;
|
|
6
|
+
private baseUrl;
|
|
7
|
+
constructor(opts: {
|
|
8
|
+
apiKey: string;
|
|
9
|
+
baseUrl?: string;
|
|
10
|
+
});
|
|
11
|
+
embed(text: string): Promise<Float32Array>;
|
|
12
|
+
embedBatch(texts: string[]): Promise<Float32Array[]>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=OpenAIAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAIAdapter.d.ts","sourceRoot":"","sources":["../../../src/embedding/adapters/OpenAIAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,qBAAa,aAAc,YAAW,gBAAgB;IACpD,QAAQ,CAAC,UAAU,QAAQ;IAC3B,QAAQ,CAAC,SAAS,4BAA4B;IAC9C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;gBAEZ,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAKhD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAmB1C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAmB3D"}
|