agentic-qe 2.7.3 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +130 -0
- package/README.md +67 -2
- package/dist/agents/AccessibilityAllyAgent.d.ts +0 -7
- package/dist/agents/AccessibilityAllyAgent.d.ts.map +1 -1
- package/dist/agents/AccessibilityAllyAgent.js +0 -15
- package/dist/agents/AccessibilityAllyAgent.js.map +1 -1
- package/dist/agents/ApiContractValidatorAgent.js +4 -4
- package/dist/agents/ApiContractValidatorAgent.js.map +1 -1
- package/dist/agents/BaseAgent.d.ts +2 -0
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +43 -41
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/CodeComplexityAnalyzerAgent.d.ts +0 -8
- package/dist/agents/CodeComplexityAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/CodeComplexityAnalyzerAgent.js +0 -15
- package/dist/agents/CodeComplexityAnalyzerAgent.js.map +1 -1
- package/dist/agents/CodeIntelligenceAgent.d.ts +0 -1
- package/dist/agents/CodeIntelligenceAgent.d.ts.map +1 -1
- package/dist/agents/CodeIntelligenceAgent.js +0 -2
- package/dist/agents/CodeIntelligenceAgent.js.map +1 -1
- package/dist/agents/DeploymentReadinessAgent.d.ts.map +1 -1
- package/dist/agents/DeploymentReadinessAgent.js +30 -30
- package/dist/agents/DeploymentReadinessAgent.js.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.d.ts +0 -10
- package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.js +10 -20
- package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
- package/dist/agents/FleetCommanderAgent.d.ts.map +1 -1
- package/dist/agents/FleetCommanderAgent.js +28 -28
- package/dist/agents/FleetCommanderAgent.js.map +1 -1
- package/dist/agents/LearningAgent.js +1 -1
- package/dist/agents/LearningAgent.js.map +1 -1
- package/dist/agents/PerformanceTesterAgent.d.ts.map +1 -1
- package/dist/agents/PerformanceTesterAgent.js +25 -25
- package/dist/agents/PerformanceTesterAgent.js.map +1 -1
- package/dist/agents/ProductionIntelligenceAgent.d.ts.map +1 -1
- package/dist/agents/ProductionIntelligenceAgent.js +20 -20
- package/dist/agents/ProductionIntelligenceAgent.js.map +1 -1
- package/dist/agents/QXPartnerAgent.d.ts +0 -8
- package/dist/agents/QXPartnerAgent.d.ts.map +1 -1
- package/dist/agents/QXPartnerAgent.js +0 -15
- package/dist/agents/QXPartnerAgent.js.map +1 -1
- package/dist/agents/QualityAnalyzerAgent.d.ts +0 -7
- package/dist/agents/QualityAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/QualityAnalyzerAgent.js +0 -16
- package/dist/agents/QualityAnalyzerAgent.js.map +1 -1
- package/dist/agents/RegressionRiskAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/RegressionRiskAnalyzerAgent.js +18 -18
- package/dist/agents/RegressionRiskAnalyzerAgent.js.map +1 -1
- package/dist/agents/RequirementsValidatorAgent.d.ts.map +1 -1
- package/dist/agents/RequirementsValidatorAgent.js +21 -21
- package/dist/agents/RequirementsValidatorAgent.js.map +1 -1
- package/dist/agents/SecurityScannerAgent.d.ts.map +1 -1
- package/dist/agents/SecurityScannerAgent.js +38 -38
- package/dist/agents/SecurityScannerAgent.js.map +1 -1
- package/dist/agents/TestDataArchitectAgent.d.ts.map +1 -1
- package/dist/agents/TestDataArchitectAgent.js +29 -29
- package/dist/agents/TestDataArchitectAgent.js.map +1 -1
- package/dist/agents/TestExecutorAgent.d.ts +0 -7
- package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
- package/dist/agents/TestExecutorAgent.js +35 -51
- package/dist/agents/TestExecutorAgent.js.map +1 -1
- package/dist/agents/TestGeneratorAgent.d.ts +0 -7
- package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
- package/dist/agents/TestGeneratorAgent.js +0 -16
- package/dist/agents/TestGeneratorAgent.js.map +1 -1
- package/dist/agents/adapters/AgentLLMAdapter.d.ts.map +1 -1
- package/dist/agents/adapters/AgentLLMAdapter.js +5 -4
- package/dist/agents/adapters/AgentLLMAdapter.js.map +1 -1
- package/dist/agents/adapters/CoordinatorAdapter.d.ts.map +1 -1
- package/dist/agents/adapters/CoordinatorAdapter.js +2 -1
- package/dist/agents/adapters/CoordinatorAdapter.js.map +1 -1
- package/dist/agents/n8n/N8nAPIClient.d.ts.map +1 -1
- package/dist/agents/n8n/N8nAPIClient.js +3 -2
- package/dist/agents/n8n/N8nAPIClient.js.map +1 -1
- package/dist/agents/n8n/N8nAuditPersistence.d.ts.map +1 -1
- package/dist/agents/n8n/N8nAuditPersistence.js +2 -1
- package/dist/agents/n8n/N8nAuditPersistence.js.map +1 -1
- package/dist/agents/n8n/N8nBaseAgent.js +1 -1
- package/dist/agents/n8n/N8nBaseAgent.js.map +1 -1
- package/dist/agents/n8n/N8nComplianceValidatorAgent.js +1 -1
- package/dist/agents/n8n/N8nComplianceValidatorAgent.js.map +1 -1
- package/dist/agents/n8n/N8nMonitoringValidatorAgent.js +1 -1
- package/dist/agents/n8n/N8nMonitoringValidatorAgent.js.map +1 -1
- package/dist/agents/n8n/N8nReplayabilityTesterAgent.js +1 -1
- package/dist/agents/n8n/N8nReplayabilityTesterAgent.js.map +1 -1
- package/dist/agents/n8n/N8nSecurityAuditorAgent.js +1 -1
- package/dist/agents/n8n/N8nSecurityAuditorAgent.js.map +1 -1
- package/dist/agents/pool/AgentPool.d.ts.map +1 -1
- package/dist/agents/pool/AgentPool.js +2 -1
- package/dist/agents/pool/AgentPool.js.map +1 -1
- package/dist/agents/pool/QEAgentPoolFactory.d.ts.map +1 -1
- package/dist/agents/pool/QEAgentPoolFactory.js +2 -1
- package/dist/agents/pool/QEAgentPoolFactory.js.map +1 -1
- package/dist/cli/commands/agent/spawn.d.ts +12 -1
- package/dist/cli/commands/agent/spawn.d.ts.map +1 -1
- package/dist/cli/commands/agent/spawn.js +95 -8
- package/dist/cli/commands/agent/spawn.js.map +1 -1
- package/dist/cli/index.js +91 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/edge/adapters/BrowserHNSWAdapter.d.ts +134 -0
- package/dist/edge/adapters/BrowserHNSWAdapter.d.ts.map +1 -0
- package/dist/edge/adapters/BrowserHNSWAdapter.js +484 -0
- package/dist/edge/adapters/BrowserHNSWAdapter.js.map +1 -0
- package/dist/edge/adapters/IndexedDBStorage.d.ts +114 -0
- package/dist/edge/adapters/IndexedDBStorage.d.ts.map +1 -0
- package/dist/edge/adapters/IndexedDBStorage.js +478 -0
- package/dist/edge/adapters/IndexedDBStorage.js.map +1 -0
- package/dist/edge/adapters/index.d.ts +12 -0
- package/dist/edge/adapters/index.d.ts.map +1 -0
- package/dist/edge/adapters/index.js +22 -0
- package/dist/edge/adapters/index.js.map +1 -0
- package/dist/edge/browser/BrowserAgent.d.ts +241 -0
- package/dist/edge/browser/BrowserAgent.d.ts.map +1 -0
- package/dist/edge/browser/BrowserAgent.js +743 -0
- package/dist/edge/browser/BrowserAgent.js.map +1 -0
- package/dist/edge/index.d.ts +34 -0
- package/dist/edge/index.d.ts.map +1 -0
- package/dist/edge/index.js +114 -0
- package/dist/edge/index.js.map +1 -0
- package/dist/edge/p2p/coordination/CoordinationManager.d.ts +181 -0
- package/dist/edge/p2p/coordination/CoordinationManager.d.ts.map +1 -0
- package/dist/edge/p2p/coordination/CoordinationManager.js +851 -0
- package/dist/edge/p2p/coordination/CoordinationManager.js.map +1 -0
- package/dist/edge/p2p/coordination/HealthMonitor.d.ts +143 -0
- package/dist/edge/p2p/coordination/HealthMonitor.d.ts.map +1 -0
- package/dist/edge/p2p/coordination/HealthMonitor.js +432 -0
- package/dist/edge/p2p/coordination/HealthMonitor.js.map +1 -0
- package/dist/edge/p2p/coordination/SyncOrchestrator.d.ts +146 -0
- package/dist/edge/p2p/coordination/SyncOrchestrator.d.ts.map +1 -0
- package/dist/edge/p2p/coordination/SyncOrchestrator.js +783 -0
- package/dist/edge/p2p/coordination/SyncOrchestrator.js.map +1 -0
- package/dist/edge/p2p/coordination/index.d.ts +70 -0
- package/dist/edge/p2p/coordination/index.d.ts.map +1 -0
- package/dist/edge/p2p/coordination/index.js +107 -0
- package/dist/edge/p2p/coordination/index.js.map +1 -0
- package/dist/edge/p2p/coordination/types.d.ts +572 -0
- package/dist/edge/p2p/coordination/types.d.ts.map +1 -0
- package/dist/edge/p2p/coordination/types.js +366 -0
- package/dist/edge/p2p/coordination/types.js.map +1 -0
- package/dist/edge/p2p/crdt/CRDTStore.d.ts +324 -0
- package/dist/edge/p2p/crdt/CRDTStore.d.ts.map +1 -0
- package/dist/edge/p2p/crdt/CRDTStore.js +839 -0
- package/dist/edge/p2p/crdt/CRDTStore.js.map +1 -0
- package/dist/edge/p2p/crdt/GCounter.d.ts +173 -0
- package/dist/edge/p2p/crdt/GCounter.d.ts.map +1 -0
- package/dist/edge/p2p/crdt/GCounter.js +394 -0
- package/dist/edge/p2p/crdt/GCounter.js.map +1 -0
- package/dist/edge/p2p/crdt/LWWRegister.d.ts +200 -0
- package/dist/edge/p2p/crdt/LWWRegister.d.ts.map +1 -0
- package/dist/edge/p2p/crdt/LWWRegister.js +456 -0
- package/dist/edge/p2p/crdt/LWWRegister.js.map +1 -0
- package/dist/edge/p2p/crdt/ORSet.d.ts +232 -0
- package/dist/edge/p2p/crdt/ORSet.d.ts.map +1 -0
- package/dist/edge/p2p/crdt/ORSet.js +723 -0
- package/dist/edge/p2p/crdt/ORSet.js.map +1 -0
- package/dist/edge/p2p/crdt/PatternCRDT.d.ts +366 -0
- package/dist/edge/p2p/crdt/PatternCRDT.d.ts.map +1 -0
- package/dist/edge/p2p/crdt/PatternCRDT.js +838 -0
- package/dist/edge/p2p/crdt/PatternCRDT.js.map +1 -0
- package/dist/edge/p2p/crdt/VectorClock.d.ts +274 -0
- package/dist/edge/p2p/crdt/VectorClock.d.ts.map +1 -0
- package/dist/edge/p2p/crdt/VectorClock.js +499 -0
- package/dist/edge/p2p/crdt/VectorClock.js.map +1 -0
- package/dist/edge/p2p/crdt/index.d.ts +87 -0
- package/dist/edge/p2p/crdt/index.d.ts.map +1 -0
- package/dist/edge/p2p/crdt/index.js +120 -0
- package/dist/edge/p2p/crdt/index.js.map +1 -0
- package/dist/edge/p2p/crdt/types.d.ts +667 -0
- package/dist/edge/p2p/crdt/types.d.ts.map +1 -0
- package/dist/edge/p2p/crdt/types.js +208 -0
- package/dist/edge/p2p/crdt/types.js.map +1 -0
- package/dist/edge/p2p/crypto/Identity.d.ts +139 -0
- package/dist/edge/p2p/crypto/Identity.d.ts.map +1 -0
- package/dist/edge/p2p/crypto/Identity.js +449 -0
- package/dist/edge/p2p/crypto/Identity.js.map +1 -0
- package/dist/edge/p2p/crypto/KeyManager.d.ts +196 -0
- package/dist/edge/p2p/crypto/KeyManager.d.ts.map +1 -0
- package/dist/edge/p2p/crypto/KeyManager.js +576 -0
- package/dist/edge/p2p/crypto/KeyManager.js.map +1 -0
- package/dist/edge/p2p/crypto/Signer.d.ts +164 -0
- package/dist/edge/p2p/crypto/Signer.d.ts.map +1 -0
- package/dist/edge/p2p/crypto/Signer.js +357 -0
- package/dist/edge/p2p/crypto/Signer.js.map +1 -0
- package/dist/edge/p2p/crypto/index.d.ts +90 -0
- package/dist/edge/p2p/crypto/index.d.ts.map +1 -0
- package/dist/edge/p2p/crypto/index.js +158 -0
- package/dist/edge/p2p/crypto/index.js.map +1 -0
- package/dist/edge/p2p/crypto/types.d.ts +217 -0
- package/dist/edge/p2p/crypto/types.d.ts.map +1 -0
- package/dist/edge/p2p/crypto/types.js +42 -0
- package/dist/edge/p2p/crypto/types.js.map +1 -0
- package/dist/edge/p2p/federated/FederatedCoordinator.d.ts +270 -0
- package/dist/edge/p2p/federated/FederatedCoordinator.d.ts.map +1 -0
- package/dist/edge/p2p/federated/FederatedCoordinator.js +824 -0
- package/dist/edge/p2p/federated/FederatedCoordinator.js.map +1 -0
- package/dist/edge/p2p/federated/FederatedRound.d.ts +295 -0
- package/dist/edge/p2p/federated/FederatedRound.d.ts.map +1 -0
- package/dist/edge/p2p/federated/FederatedRound.js +819 -0
- package/dist/edge/p2p/federated/FederatedRound.js.map +1 -0
- package/dist/edge/p2p/federated/GradientAggregator.d.ts +226 -0
- package/dist/edge/p2p/federated/GradientAggregator.d.ts.map +1 -0
- package/dist/edge/p2p/federated/GradientAggregator.js +826 -0
- package/dist/edge/p2p/federated/GradientAggregator.js.map +1 -0
- package/dist/edge/p2p/federated/ModelManager.d.ts +248 -0
- package/dist/edge/p2p/federated/ModelManager.d.ts.map +1 -0
- package/dist/edge/p2p/federated/ModelManager.js +724 -0
- package/dist/edge/p2p/federated/ModelManager.js.map +1 -0
- package/dist/edge/p2p/federated/index.d.ts +65 -0
- package/dist/edge/p2p/federated/index.d.ts.map +1 -0
- package/dist/edge/p2p/federated/index.js +110 -0
- package/dist/edge/p2p/federated/index.js.map +1 -0
- package/dist/edge/p2p/federated/types.d.ts +905 -0
- package/dist/edge/p2p/federated/types.d.ts.map +1 -0
- package/dist/edge/p2p/federated/types.js +339 -0
- package/dist/edge/p2p/federated/types.js.map +1 -0
- package/dist/edge/p2p/index.d.ts +156 -0
- package/dist/edge/p2p/index.d.ts.map +1 -0
- package/dist/edge/p2p/index.js +242 -0
- package/dist/edge/p2p/index.js.map +1 -0
- package/dist/edge/p2p/nat/ConnectivityTester.d.ts +128 -0
- package/dist/edge/p2p/nat/ConnectivityTester.d.ts.map +1 -0
- package/dist/edge/p2p/nat/ConnectivityTester.js +560 -0
- package/dist/edge/p2p/nat/ConnectivityTester.js.map +1 -0
- package/dist/edge/p2p/nat/HolePuncher.d.ts +159 -0
- package/dist/edge/p2p/nat/HolePuncher.d.ts.map +1 -0
- package/dist/edge/p2p/nat/HolePuncher.js +569 -0
- package/dist/edge/p2p/nat/HolePuncher.js.map +1 -0
- package/dist/edge/p2p/nat/NATDetector.d.ts +109 -0
- package/dist/edge/p2p/nat/NATDetector.d.ts.map +1 -0
- package/dist/edge/p2p/nat/NATDetector.js +472 -0
- package/dist/edge/p2p/nat/NATDetector.js.map +1 -0
- package/dist/edge/p2p/nat/TURNManager.d.ts +158 -0
- package/dist/edge/p2p/nat/TURNManager.d.ts.map +1 -0
- package/dist/edge/p2p/nat/TURNManager.js +547 -0
- package/dist/edge/p2p/nat/TURNManager.js.map +1 -0
- package/dist/edge/p2p/nat/index.d.ts +74 -0
- package/dist/edge/p2p/nat/index.d.ts.map +1 -0
- package/dist/edge/p2p/nat/index.js +104 -0
- package/dist/edge/p2p/nat/index.js.map +1 -0
- package/dist/edge/p2p/nat/types.d.ts +583 -0
- package/dist/edge/p2p/nat/types.d.ts.map +1 -0
- package/dist/edge/p2p/nat/types.js +267 -0
- package/dist/edge/p2p/nat/types.js.map +1 -0
- package/dist/edge/p2p/protocol/AgentChannel.d.ts +333 -0
- package/dist/edge/p2p/protocol/AgentChannel.d.ts.map +1 -0
- package/dist/edge/p2p/protocol/AgentChannel.js +914 -0
- package/dist/edge/p2p/protocol/AgentChannel.js.map +1 -0
- package/dist/edge/p2p/protocol/MessageEncoder.d.ts +147 -0
- package/dist/edge/p2p/protocol/MessageEncoder.d.ts.map +1 -0
- package/dist/edge/p2p/protocol/MessageEncoder.js +738 -0
- package/dist/edge/p2p/protocol/MessageEncoder.js.map +1 -0
- package/dist/edge/p2p/protocol/MessageRouter.d.ts +266 -0
- package/dist/edge/p2p/protocol/MessageRouter.d.ts.map +1 -0
- package/dist/edge/p2p/protocol/MessageRouter.js +808 -0
- package/dist/edge/p2p/protocol/MessageRouter.js.map +1 -0
- package/dist/edge/p2p/protocol/ProtocolHandler.d.ts +309 -0
- package/dist/edge/p2p/protocol/ProtocolHandler.d.ts.map +1 -0
- package/dist/edge/p2p/protocol/ProtocolHandler.js +930 -0
- package/dist/edge/p2p/protocol/ProtocolHandler.js.map +1 -0
- package/dist/edge/p2p/protocol/index.d.ts +114 -0
- package/dist/edge/p2p/protocol/index.d.ts.map +1 -0
- package/dist/edge/p2p/protocol/index.js +206 -0
- package/dist/edge/p2p/protocol/index.js.map +1 -0
- package/dist/edge/p2p/protocol/types.d.ts +737 -0
- package/dist/edge/p2p/protocol/types.d.ts.map +1 -0
- package/dist/edge/p2p/protocol/types.js +490 -0
- package/dist/edge/p2p/protocol/types.js.map +1 -0
- package/dist/edge/p2p/sharing/PatternBroadcaster.d.ts +284 -0
- package/dist/edge/p2p/sharing/PatternBroadcaster.d.ts.map +1 -0
- package/dist/edge/p2p/sharing/PatternBroadcaster.js +644 -0
- package/dist/edge/p2p/sharing/PatternBroadcaster.js.map +1 -0
- package/dist/edge/p2p/sharing/PatternIndex.d.ts +168 -0
- package/dist/edge/p2p/sharing/PatternIndex.d.ts.map +1 -0
- package/dist/edge/p2p/sharing/PatternIndex.js +781 -0
- package/dist/edge/p2p/sharing/PatternIndex.js.map +1 -0
- package/dist/edge/p2p/sharing/PatternSerializer.d.ts +163 -0
- package/dist/edge/p2p/sharing/PatternSerializer.d.ts.map +1 -0
- package/dist/edge/p2p/sharing/PatternSerializer.js +696 -0
- package/dist/edge/p2p/sharing/PatternSerializer.js.map +1 -0
- package/dist/edge/p2p/sharing/PatternSyncManager.d.ts +242 -0
- package/dist/edge/p2p/sharing/PatternSyncManager.d.ts.map +1 -0
- package/dist/edge/p2p/sharing/PatternSyncManager.js +859 -0
- package/dist/edge/p2p/sharing/PatternSyncManager.js.map +1 -0
- package/dist/edge/p2p/sharing/index.d.ts +90 -0
- package/dist/edge/p2p/sharing/index.d.ts.map +1 -0
- package/dist/edge/p2p/sharing/index.js +152 -0
- package/dist/edge/p2p/sharing/index.js.map +1 -0
- package/dist/edge/p2p/sharing/types.d.ts +796 -0
- package/dist/edge/p2p/sharing/types.d.ts.map +1 -0
- package/dist/edge/p2p/sharing/types.js +264 -0
- package/dist/edge/p2p/sharing/types.js.map +1 -0
- package/dist/edge/p2p/webrtc/ConnectionPool.d.ts +218 -0
- package/dist/edge/p2p/webrtc/ConnectionPool.d.ts.map +1 -0
- package/dist/edge/p2p/webrtc/ConnectionPool.js +562 -0
- package/dist/edge/p2p/webrtc/ConnectionPool.js.map +1 -0
- package/dist/edge/p2p/webrtc/ICEManager.d.ts +171 -0
- package/dist/edge/p2p/webrtc/ICEManager.d.ts.map +1 -0
- package/dist/edge/p2p/webrtc/ICEManager.js +490 -0
- package/dist/edge/p2p/webrtc/ICEManager.js.map +1 -0
- package/dist/edge/p2p/webrtc/PeerConnectionManager.d.ts +159 -0
- package/dist/edge/p2p/webrtc/PeerConnectionManager.d.ts.map +1 -0
- package/dist/edge/p2p/webrtc/PeerConnectionManager.js +735 -0
- package/dist/edge/p2p/webrtc/PeerConnectionManager.js.map +1 -0
- package/dist/edge/p2p/webrtc/SignalingClient.d.ts +191 -0
- package/dist/edge/p2p/webrtc/SignalingClient.d.ts.map +1 -0
- package/dist/edge/p2p/webrtc/SignalingClient.js +608 -0
- package/dist/edge/p2p/webrtc/SignalingClient.js.map +1 -0
- package/dist/edge/p2p/webrtc/index.d.ts +158 -0
- package/dist/edge/p2p/webrtc/index.d.ts.map +1 -0
- package/dist/edge/p2p/webrtc/index.js +164 -0
- package/dist/edge/p2p/webrtc/index.js.map +1 -0
- package/dist/edge/p2p/webrtc/types.d.ts +665 -0
- package/dist/edge/p2p/webrtc/types.d.ts.map +1 -0
- package/dist/edge/p2p/webrtc/types.js +245 -0
- package/dist/edge/p2p/webrtc/types.js.map +1 -0
- package/dist/edge/server/AgentSpawnAPI.d.ts +98 -0
- package/dist/edge/server/AgentSpawnAPI.d.ts.map +1 -0
- package/dist/edge/server/AgentSpawnAPI.js +264 -0
- package/dist/edge/server/AgentSpawnAPI.js.map +1 -0
- package/dist/edge/server/SignalingServer.d.ts +71 -0
- package/dist/edge/server/SignalingServer.d.ts.map +1 -0
- package/dist/edge/server/SignalingServer.js +429 -0
- package/dist/edge/server/SignalingServer.js.map +1 -0
- package/dist/edge/server/index.d.ts +64 -0
- package/dist/edge/server/index.d.ts.map +1 -0
- package/dist/edge/server/index.js +318 -0
- package/dist/edge/server/index.js.map +1 -0
- package/dist/edge/types/browser-agent.types.d.ts +455 -0
- package/dist/edge/types/browser-agent.types.d.ts.map +1 -0
- package/dist/edge/types/browser-agent.types.js +116 -0
- package/dist/edge/types/browser-agent.types.js.map +1 -0
- package/dist/edge/types/index.d.ts +11 -0
- package/dist/edge/types/index.d.ts.map +1 -0
- package/dist/edge/types/index.js +17 -0
- package/dist/edge/types/index.js.map +1 -0
- package/dist/edge/types/storage.types.d.ts +207 -0
- package/dist/edge/types/storage.types.d.ts.map +1 -0
- package/dist/edge/types/storage.types.js +47 -0
- package/dist/edge/types/storage.types.js.map +1 -0
- package/dist/edge/wasm/shims.d.ts +224 -0
- package/dist/edge/wasm/shims.d.ts.map +1 -0
- package/dist/edge/wasm/shims.js +667 -0
- package/dist/edge/wasm/shims.js.map +1 -0
- package/dist/mcp/handlers/NewDomainToolsHandler.d.ts +33 -0
- package/dist/mcp/handlers/NewDomainToolsHandler.d.ts.map +1 -0
- package/dist/mcp/handlers/NewDomainToolsHandler.js +305 -0
- package/dist/mcp/handlers/NewDomainToolsHandler.js.map +1 -0
- package/dist/mcp/handlers/filtered/index.d.ts +15 -19
- package/dist/mcp/handlers/filtered/index.d.ts.map +1 -1
- package/dist/mcp/handlers/filtered/index.js +16 -27
- package/dist/mcp/handlers/filtered/index.js.map +1 -1
- package/dist/mcp/handlers/integration/index.d.ts +5 -4
- package/dist/mcp/handlers/integration/index.d.ts.map +1 -1
- package/dist/mcp/handlers/integration/index.js +7 -7
- package/dist/mcp/handlers/integration/index.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +14 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools.d.ts +8 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +412 -1
- package/dist/mcp/tools.js.map +1 -1
- package/dist/persistence/migrations/all-migrations.d.ts.map +1 -1
- package/dist/persistence/migrations/all-migrations.js +44 -1
- package/dist/persistence/migrations/all-migrations.js.map +1 -1
- package/dist/planning/GOAPPlanner.d.ts +1 -0
- package/dist/planning/GOAPPlanner.d.ts.map +1 -1
- package/dist/planning/GOAPPlanner.js +15 -2
- package/dist/planning/GOAPPlanner.js.map +1 -1
- package/dist/planning/PlanLearning.d.ts.map +1 -1
- package/dist/planning/PlanLearning.js +2 -1
- package/dist/planning/PlanLearning.js.map +1 -1
- package/dist/planning/PlanSimilarity.d.ts.map +1 -1
- package/dist/planning/PlanSimilarity.js +2 -1
- package/dist/planning/PlanSimilarity.js.map +1 -1
- package/package.json +29 -8
- package/dist/alerting/AlertManager.d.ts +0 -120
- package/dist/alerting/AlertManager.d.ts.map +0 -1
- package/dist/alerting/AlertManager.js +0 -345
- package/dist/alerting/AlertManager.js.map +0 -1
- package/dist/alerting/FeedbackRouter.d.ts +0 -98
- package/dist/alerting/FeedbackRouter.d.ts.map +0 -1
- package/dist/alerting/FeedbackRouter.js +0 -331
- package/dist/alerting/FeedbackRouter.js.map +0 -1
- package/dist/alerting/StrategyApplicator.d.ts +0 -120
- package/dist/alerting/StrategyApplicator.d.ts.map +0 -1
- package/dist/alerting/StrategyApplicator.js +0 -299
- package/dist/alerting/StrategyApplicator.js.map +0 -1
- package/dist/alerting/index.d.ts +0 -68
- package/dist/alerting/index.d.ts.map +0 -1
- package/dist/alerting/index.js +0 -112
- package/dist/alerting/index.js.map +0 -1
- package/dist/alerting/types.d.ts +0 -118
- package/dist/alerting/types.d.ts.map +0 -1
- package/dist/alerting/types.js +0 -11
- package/dist/alerting/types.js.map +0 -1
- package/dist/cli/commands/fleet/backup.d.ts +0 -49
- package/dist/cli/commands/fleet/backup.d.ts.map +0 -1
- package/dist/cli/commands/fleet/backup.js +0 -88
- package/dist/cli/commands/fleet/backup.js.map +0 -1
- package/dist/cli/commands/fleet/health.d.ts +0 -154
- package/dist/cli/commands/fleet/health.d.ts.map +0 -1
- package/dist/cli/commands/fleet/health.js +0 -483
- package/dist/cli/commands/fleet/health.js.map +0 -1
- package/dist/cli/commands/fleet/init.d.ts +0 -11
- package/dist/cli/commands/fleet/init.d.ts.map +0 -1
- package/dist/cli/commands/fleet/init.js +0 -91
- package/dist/cli/commands/fleet/init.js.map +0 -1
- package/dist/cli/commands/fleet/logs.d.ts +0 -21
- package/dist/cli/commands/fleet/logs.d.ts.map +0 -1
- package/dist/cli/commands/fleet/logs.js +0 -267
- package/dist/cli/commands/fleet/logs.js.map +0 -1
- package/dist/cli/commands/fleet/metrics.d.ts +0 -27
- package/dist/cli/commands/fleet/metrics.d.ts.map +0 -1
- package/dist/cli/commands/fleet/metrics.js +0 -369
- package/dist/cli/commands/fleet/metrics.js.map +0 -1
- package/dist/cli/commands/fleet/monitor.d.ts +0 -18
- package/dist/cli/commands/fleet/monitor.d.ts.map +0 -1
- package/dist/cli/commands/fleet/monitor.js +0 -237
- package/dist/cli/commands/fleet/monitor.js.map +0 -1
- package/dist/cli/commands/fleet/optimize.d.ts +0 -42
- package/dist/cli/commands/fleet/optimize.d.ts.map +0 -1
- package/dist/cli/commands/fleet/optimize.js +0 -135
- package/dist/cli/commands/fleet/optimize.js.map +0 -1
- package/dist/cli/commands/fleet/recover.d.ts +0 -22
- package/dist/cli/commands/fleet/recover.d.ts.map +0 -1
- package/dist/cli/commands/fleet/recover.js +0 -99
- package/dist/cli/commands/fleet/recover.js.map +0 -1
- package/dist/cli/commands/fleet/restart.d.ts +0 -18
- package/dist/cli/commands/fleet/restart.d.ts.map +0 -1
- package/dist/cli/commands/fleet/restart.js +0 -290
- package/dist/cli/commands/fleet/restart.js.map +0 -1
- package/dist/cli/commands/fleet/scale.d.ts +0 -9
- package/dist/cli/commands/fleet/scale.d.ts.map +0 -1
- package/dist/cli/commands/fleet/scale.js +0 -77
- package/dist/cli/commands/fleet/scale.js.map +0 -1
- package/dist/cli/commands/fleet/shutdown.d.ts +0 -19
- package/dist/cli/commands/fleet/shutdown.d.ts.map +0 -1
- package/dist/cli/commands/fleet/shutdown.js +0 -307
- package/dist/cli/commands/fleet/shutdown.js.map +0 -1
- package/dist/cli/commands/fleet/status.d.ts +0 -10
- package/dist/cli/commands/fleet/status.d.ts.map +0 -1
- package/dist/cli/commands/fleet/status.js +0 -97
- package/dist/cli/commands/fleet/status.js.map +0 -1
- package/dist/cli/commands/fleet/topology.d.ts +0 -23
- package/dist/cli/commands/fleet/topology.d.ts.map +0 -1
- package/dist/cli/commands/fleet/topology.js +0 -376
- package/dist/cli/commands/fleet/topology.js.map +0 -1
- package/dist/cli/commands/monitor/alerts.d.ts +0 -45
- package/dist/cli/commands/monitor/alerts.d.ts.map +0 -1
- package/dist/cli/commands/monitor/alerts.js +0 -168
- package/dist/cli/commands/monitor/alerts.js.map +0 -1
- package/dist/cli/commands/monitor/analyze.d.ts +0 -49
- package/dist/cli/commands/monitor/analyze.d.ts.map +0 -1
- package/dist/cli/commands/monitor/analyze.js +0 -209
- package/dist/cli/commands/monitor/analyze.js.map +0 -1
- package/dist/cli/commands/monitor/compare.d.ts +0 -38
- package/dist/cli/commands/monitor/compare.d.ts.map +0 -1
- package/dist/cli/commands/monitor/compare.js +0 -177
- package/dist/cli/commands/monitor/compare.js.map +0 -1
- package/dist/cli/commands/monitor/dashboard.d.ts +0 -34
- package/dist/cli/commands/monitor/dashboard.d.ts.map +0 -1
- package/dist/cli/commands/monitor/dashboard.js +0 -157
- package/dist/cli/commands/monitor/dashboard.js.map +0 -1
- package/dist/cli/commands/monitor/export.d.ts +0 -36
- package/dist/cli/commands/monitor/export.d.ts.map +0 -1
- package/dist/cli/commands/monitor/export.js +0 -157
- package/dist/cli/commands/monitor/export.js.map +0 -1
- package/dist/cli/commands/monitor/index.d.ts +0 -11
- package/dist/cli/commands/monitor/index.d.ts.map +0 -1
- package/dist/cli/commands/monitor/index.js +0 -14
- package/dist/cli/commands/monitor/index.js.map +0 -1
- package/dist/cli/commands/quality/baseline.d.ts +0 -27
- package/dist/cli/commands/quality/baseline.d.ts.map +0 -1
- package/dist/cli/commands/quality/baseline.js +0 -124
- package/dist/cli/commands/quality/baseline.js.map +0 -1
- package/dist/cli/commands/quality/compare.d.ts +0 -36
- package/dist/cli/commands/quality/compare.d.ts.map +0 -1
- package/dist/cli/commands/quality/compare.js +0 -136
- package/dist/cli/commands/quality/compare.js.map +0 -1
- package/dist/cli/commands/quality/decision.d.ts +0 -81
- package/dist/cli/commands/quality/decision.d.ts.map +0 -1
- package/dist/cli/commands/quality/decision.js +0 -319
- package/dist/cli/commands/quality/decision.js.map +0 -1
- package/dist/cli/commands/quality/gate.d.ts +0 -47
- package/dist/cli/commands/quality/gate.d.ts.map +0 -1
- package/dist/cli/commands/quality/gate.js +0 -205
- package/dist/cli/commands/quality/gate.js.map +0 -1
- package/dist/cli/commands/quality/index.d.ts +0 -17
- package/dist/cli/commands/quality/index.d.ts.map +0 -1
- package/dist/cli/commands/quality/index.js +0 -41
- package/dist/cli/commands/quality/index.js.map +0 -1
- package/dist/cli/commands/quality/policy.d.ts +0 -57
- package/dist/cli/commands/quality/policy.d.ts.map +0 -1
- package/dist/cli/commands/quality/policy.js +0 -359
- package/dist/cli/commands/quality/policy.js.map +0 -1
- package/dist/cli/commands/quality/risk.d.ts +0 -41
- package/dist/cli/commands/quality/risk.d.ts.map +0 -1
- package/dist/cli/commands/quality/risk.js +0 -255
- package/dist/cli/commands/quality/risk.js.map +0 -1
- package/dist/cli/commands/quality/trends.d.ts +0 -40
- package/dist/cli/commands/quality/trends.d.ts.map +0 -1
- package/dist/cli/commands/quality/trends.js +0 -122
- package/dist/cli/commands/quality/trends.js.map +0 -1
- package/dist/cli/commands/quality/validate.d.ts +0 -44
- package/dist/cli/commands/quality/validate.d.ts.map +0 -1
- package/dist/cli/commands/quality/validate.js +0 -234
- package/dist/cli/commands/quality/validate.js.map +0 -1
- package/dist/cli/commands/test/analyze-failures.d.ts +0 -39
- package/dist/cli/commands/test/analyze-failures.d.ts.map +0 -1
- package/dist/cli/commands/test/analyze-failures.js +0 -113
- package/dist/cli/commands/test/analyze-failures.js.map +0 -1
- package/dist/cli/commands/test/clean.d.ts +0 -3
- package/dist/cli/commands/test/clean.d.ts.map +0 -1
- package/dist/cli/commands/test/clean.js +0 -148
- package/dist/cli/commands/test/clean.js.map +0 -1
- package/dist/cli/commands/test/debug.d.ts +0 -3
- package/dist/cli/commands/test/debug.d.ts.map +0 -1
- package/dist/cli/commands/test/debug.js +0 -167
- package/dist/cli/commands/test/debug.js.map +0 -1
- package/dist/cli/commands/test/diff.d.ts +0 -3
- package/dist/cli/commands/test/diff.d.ts.map +0 -1
- package/dist/cli/commands/test/diff.js +0 -195
- package/dist/cli/commands/test/diff.js.map +0 -1
- package/dist/cli/commands/test/flakiness.d.ts +0 -32
- package/dist/cli/commands/test/flakiness.d.ts.map +0 -1
- package/dist/cli/commands/test/flakiness.js +0 -121
- package/dist/cli/commands/test/flakiness.js.map +0 -1
- package/dist/cli/commands/test/index.d.ts +0 -17
- package/dist/cli/commands/test/index.d.ts.map +0 -1
- package/dist/cli/commands/test/index.js +0 -45
- package/dist/cli/commands/test/index.js.map +0 -1
- package/dist/cli/commands/test/mutate.d.ts +0 -29
- package/dist/cli/commands/test/mutate.d.ts.map +0 -1
- package/dist/cli/commands/test/mutate.js +0 -163
- package/dist/cli/commands/test/mutate.js.map +0 -1
- package/dist/cli/commands/test/parallel.d.ts +0 -3
- package/dist/cli/commands/test/parallel.d.ts.map +0 -1
- package/dist/cli/commands/test/parallel.js +0 -117
- package/dist/cli/commands/test/parallel.js.map +0 -1
- package/dist/cli/commands/test/profile.d.ts +0 -3
- package/dist/cli/commands/test/profile.d.ts.map +0 -1
- package/dist/cli/commands/test/profile.js +0 -156
- package/dist/cli/commands/test/profile.js.map +0 -1
- package/dist/cli/commands/test/queue.d.ts +0 -3
- package/dist/cli/commands/test/queue.d.ts.map +0 -1
- package/dist/cli/commands/test/queue.js +0 -140
- package/dist/cli/commands/test/queue.js.map +0 -1
- package/dist/cli/commands/test/retry.d.ts +0 -3
- package/dist/cli/commands/test/retry.d.ts.map +0 -1
- package/dist/cli/commands/test/retry.js +0 -105
- package/dist/cli/commands/test/retry.js.map +0 -1
- package/dist/cli/commands/test/snapshot.d.ts +0 -3
- package/dist/cli/commands/test/snapshot.d.ts.map +0 -1
- package/dist/cli/commands/test/snapshot.js +0 -176
- package/dist/cli/commands/test/snapshot.js.map +0 -1
- package/dist/cli/commands/test/trace.d.ts +0 -3
- package/dist/cli/commands/test/trace.d.ts.map +0 -1
- package/dist/cli/commands/test/trace.js +0 -137
- package/dist/cli/commands/test/trace.js.map +0 -1
- package/dist/cli/commands/test/watch.d.ts +0 -3
- package/dist/cli/commands/test/watch.d.ts.map +0 -1
- package/dist/cli/commands/test/watch.js +0 -130
- package/dist/cli/commands/test/watch.js.map +0 -1
- package/dist/cli/index-spec.d.ts +0 -3
- package/dist/cli/index-spec.d.ts.map +0 -1
- package/dist/cli/index-spec.js +0 -154
- package/dist/cli/index-spec.js.map +0 -1
- package/dist/cli/index-working.d.ts +0 -7
- package/dist/cli/index-working.d.ts.map +0 -1
- package/dist/cli/index-working.js +0 -617
- package/dist/cli/index-working.js.map +0 -1
- package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.d.ts +0 -83
- package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.d.ts.map +0 -1
- package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.js +0 -130
- package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.js.map +0 -1
- package/dist/mcp/handlers/filtered/flaky-detector-filtered.d.ts +0 -58
- package/dist/mcp/handlers/filtered/flaky-detector-filtered.d.ts.map +0 -1
- package/dist/mcp/handlers/filtered/flaky-detector-filtered.js +0 -84
- package/dist/mcp/handlers/filtered/flaky-detector-filtered.js.map +0 -1
- package/dist/mcp/handlers/filtered/security-scanner-filtered.d.ts +0 -54
- package/dist/mcp/handlers/filtered/security-scanner-filtered.d.ts.map +0 -1
- package/dist/mcp/handlers/filtered/security-scanner-filtered.js +0 -73
- package/dist/mcp/handlers/filtered/security-scanner-filtered.js.map +0 -1
- package/dist/mcp/handlers/integration/contract-validate.d.ts +0 -10
- package/dist/mcp/handlers/integration/contract-validate.d.ts.map +0 -1
- package/dist/mcp/handlers/integration/contract-validate.js +0 -348
- package/dist/mcp/handlers/integration/contract-validate.js.map +0 -1
- package/dist/reporting/ResultAggregator.d.ts +0 -107
- package/dist/reporting/ResultAggregator.d.ts.map +0 -1
- package/dist/reporting/ResultAggregator.js +0 -435
- package/dist/reporting/ResultAggregator.js.map +0 -1
- package/dist/reporting/index.d.ts +0 -48
- package/dist/reporting/index.d.ts.map +0 -1
- package/dist/reporting/index.js +0 -154
- package/dist/reporting/index.js.map +0 -1
- package/dist/reporting/reporters/ControlLoopReporter.d.ts +0 -128
- package/dist/reporting/reporters/ControlLoopReporter.d.ts.map +0 -1
- package/dist/reporting/reporters/ControlLoopReporter.js +0 -417
- package/dist/reporting/reporters/ControlLoopReporter.js.map +0 -1
- package/dist/reporting/reporters/HumanReadableReporter.d.ts +0 -140
- package/dist/reporting/reporters/HumanReadableReporter.d.ts.map +0 -1
- package/dist/reporting/reporters/HumanReadableReporter.js +0 -524
- package/dist/reporting/reporters/HumanReadableReporter.js.map +0 -1
- package/dist/reporting/reporters/JSONReporter.d.ts +0 -251
- package/dist/reporting/reporters/JSONReporter.d.ts.map +0 -1
- package/dist/reporting/reporters/JSONReporter.js +0 -325
- package/dist/reporting/reporters/JSONReporter.js.map +0 -1
- package/dist/reporting/reporters/index.d.ts +0 -14
- package/dist/reporting/reporters/index.d.ts.map +0 -1
- package/dist/reporting/reporters/index.js +0 -19
- package/dist/reporting/reporters/index.js.map +0 -1
- package/dist/reporting/types.d.ts +0 -427
- package/dist/reporting/types.d.ts.map +0 -1
- package/dist/reporting/types.js +0 -12
- package/dist/reporting/types.js.map +0 -1
|
@@ -0,0 +1,449 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Ed25519 Identity Manager
|
|
4
|
+
*
|
|
5
|
+
* Generates and manages cryptographic identities for P2P agents.
|
|
6
|
+
* Uses @noble/ed25519 for browser-compatible Ed25519 operations.
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - Ed25519 keypair generation
|
|
10
|
+
* - Agent ID derivation from public key hash
|
|
11
|
+
* - Identity persistence to IndexedDB
|
|
12
|
+
* - Seed phrase recovery (BIP39-style)
|
|
13
|
+
*
|
|
14
|
+
* @module edge/p2p/crypto/Identity
|
|
15
|
+
* @version 1.0.0
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.base64Utils = exports.IdentityManager = void 0;
|
|
19
|
+
const types_1 = require("./types");
|
|
20
|
+
// BIP39 wordlist (first 256 words for simplified implementation)
|
|
21
|
+
// In production, use full 2048-word BIP39 list
|
|
22
|
+
const WORDLIST = [
|
|
23
|
+
'abandon', 'ability', 'able', 'about', 'above', 'absent', 'absorb', 'abstract',
|
|
24
|
+
'absurd', 'abuse', 'access', 'accident', 'account', 'accuse', 'achieve', 'acid',
|
|
25
|
+
'acoustic', 'acquire', 'across', 'act', 'action', 'actor', 'actress', 'actual',
|
|
26
|
+
'adapt', 'add', 'addict', 'address', 'adjust', 'admit', 'adult', 'advance',
|
|
27
|
+
'advice', 'aerobic', 'affair', 'afford', 'afraid', 'again', 'age', 'agent',
|
|
28
|
+
'agree', 'ahead', 'aim', 'air', 'airport', 'aisle', 'alarm', 'album',
|
|
29
|
+
'alcohol', 'alert', 'alien', 'all', 'alley', 'allow', 'almost', 'alone',
|
|
30
|
+
'alpha', 'already', 'also', 'alter', 'always', 'amateur', 'amazing', 'among',
|
|
31
|
+
'amount', 'amused', 'analyst', 'anchor', 'ancient', 'anger', 'angle', 'angry',
|
|
32
|
+
'animal', 'ankle', 'announce', 'annual', 'another', 'answer', 'antenna', 'antique',
|
|
33
|
+
'anxiety', 'any', 'apart', 'apology', 'appear', 'apple', 'approve', 'april',
|
|
34
|
+
'arch', 'arctic', 'area', 'arena', 'argue', 'arm', 'armed', 'armor',
|
|
35
|
+
'army', 'around', 'arrange', 'arrest', 'arrive', 'arrow', 'art', 'artefact',
|
|
36
|
+
'artist', 'artwork', 'ask', 'aspect', 'assault', 'asset', 'assist', 'assume',
|
|
37
|
+
'asthma', 'athlete', 'atom', 'attack', 'attend', 'attitude', 'attract', 'auction',
|
|
38
|
+
'audit', 'august', 'aunt', 'author', 'auto', 'autumn', 'average', 'avocado',
|
|
39
|
+
'avoid', 'awake', 'aware', 'away', 'awesome', 'awful', 'awkward', 'axis',
|
|
40
|
+
'baby', 'bachelor', 'bacon', 'badge', 'bag', 'balance', 'balcony', 'ball',
|
|
41
|
+
'bamboo', 'banana', 'banner', 'bar', 'barely', 'bargain', 'barrel', 'base',
|
|
42
|
+
'basic', 'basket', 'battle', 'beach', 'bean', 'beauty', 'because', 'become',
|
|
43
|
+
'beef', 'before', 'begin', 'behave', 'behind', 'believe', 'below', 'belt',
|
|
44
|
+
'bench', 'benefit', 'best', 'betray', 'better', 'between', 'beyond', 'bicycle',
|
|
45
|
+
'bid', 'bike', 'bind', 'biology', 'bird', 'birth', 'bitter', 'black',
|
|
46
|
+
'blade', 'blame', 'blanket', 'blast', 'bleak', 'bless', 'blind', 'blood',
|
|
47
|
+
'blossom', 'blouse', 'blue', 'blur', 'blush', 'board', 'boat', 'body',
|
|
48
|
+
'boil', 'bomb', 'bone', 'bonus', 'book', 'boost', 'border', 'boring',
|
|
49
|
+
'borrow', 'boss', 'bottom', 'bounce', 'box', 'boy', 'bracket', 'brain',
|
|
50
|
+
'brand', 'brass', 'brave', 'bread', 'breeze', 'brick', 'bridge', 'brief',
|
|
51
|
+
'bright', 'bring', 'brisk', 'broccoli', 'broken', 'bronze', 'broom', 'brother',
|
|
52
|
+
'brown', 'brush', 'bubble', 'buddy', 'budget', 'buffalo', 'build', 'bulb',
|
|
53
|
+
'bulk', 'bullet', 'bundle', 'bunker', 'burden', 'burger', 'burst', 'bus',
|
|
54
|
+
'business', 'busy', 'butter', 'buyer', 'buzz', 'cabbage', 'cabin', 'cable',
|
|
55
|
+
];
|
|
56
|
+
/**
|
|
57
|
+
* IdentityManager - Creates and manages Ed25519 cryptographic identities
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* const identity = await IdentityManager.create({
|
|
62
|
+
* displayName: 'My Agent',
|
|
63
|
+
* password: 'secure-password'
|
|
64
|
+
* });
|
|
65
|
+
* console.log(identity.agentId); // "a1b2c3d4e5f6g7h8"
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
class IdentityManager {
|
|
69
|
+
/**
|
|
70
|
+
* Generate a new Ed25519 identity
|
|
71
|
+
*
|
|
72
|
+
* @param config - Identity configuration including password
|
|
73
|
+
* @returns Promise resolving to StoredIdentity
|
|
74
|
+
*/
|
|
75
|
+
static async create(config) {
|
|
76
|
+
// Generate Ed25519 keypair using Web Crypto API
|
|
77
|
+
const keyPair = await this.generateKeyPair();
|
|
78
|
+
// Derive agent ID from public key hash
|
|
79
|
+
const agentId = await this.deriveAgentId(keyPair.publicKey);
|
|
80
|
+
// Encrypt private key for storage
|
|
81
|
+
const encryptedKeyPair = await this.encryptPrivateKey(keyPair, config.password, config.iterations ?? this.DEFAULT_ITERATIONS);
|
|
82
|
+
const now = new Date().toISOString();
|
|
83
|
+
const identity = {
|
|
84
|
+
agentId,
|
|
85
|
+
publicKey: keyPair.publicKey,
|
|
86
|
+
createdAt: now,
|
|
87
|
+
displayName: config.displayName,
|
|
88
|
+
metadata: config.metadata,
|
|
89
|
+
encryptedKeyPair,
|
|
90
|
+
version: this.CURRENT_VERSION,
|
|
91
|
+
revoked: false,
|
|
92
|
+
};
|
|
93
|
+
return identity;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Recover identity from seed phrase
|
|
97
|
+
*
|
|
98
|
+
* @param seedPhrase - BIP39-style seed phrase
|
|
99
|
+
* @param config - Identity configuration
|
|
100
|
+
* @returns Promise resolving to StoredIdentity
|
|
101
|
+
*/
|
|
102
|
+
static async fromSeedPhrase(seedPhrase, config) {
|
|
103
|
+
// Validate seed phrase
|
|
104
|
+
if (!this.validateSeedPhrase(seedPhrase)) {
|
|
105
|
+
throw new types_1.CryptoError('Invalid seed phrase', types_1.CryptoErrorCode.INVALID_SEED, { wordCount: seedPhrase.words.length });
|
|
106
|
+
}
|
|
107
|
+
// Derive seed from mnemonic
|
|
108
|
+
const seed = await this.mnemonicToSeed(seedPhrase);
|
|
109
|
+
// Generate keypair from seed
|
|
110
|
+
const keyPair = await this.keyPairFromSeed(seed);
|
|
111
|
+
// Derive agent ID
|
|
112
|
+
const agentId = await this.deriveAgentId(keyPair.publicKey);
|
|
113
|
+
// Encrypt private key
|
|
114
|
+
const encryptedKeyPair = await this.encryptPrivateKey(keyPair, config.password, config.iterations ?? this.DEFAULT_ITERATIONS);
|
|
115
|
+
const now = new Date().toISOString();
|
|
116
|
+
return {
|
|
117
|
+
agentId,
|
|
118
|
+
publicKey: keyPair.publicKey,
|
|
119
|
+
createdAt: now,
|
|
120
|
+
displayName: config.displayName,
|
|
121
|
+
metadata: config.metadata,
|
|
122
|
+
encryptedKeyPair,
|
|
123
|
+
version: this.CURRENT_VERSION,
|
|
124
|
+
revoked: false,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Generate a new seed phrase for identity recovery
|
|
129
|
+
*
|
|
130
|
+
* @param wordCount - Number of words (12 or 24)
|
|
131
|
+
* @returns SeedPhrase with generated mnemonic
|
|
132
|
+
*/
|
|
133
|
+
static generateSeedPhrase(wordCount = 12) {
|
|
134
|
+
// Generate entropy (128 bits for 12 words, 256 bits for 24 words)
|
|
135
|
+
const entropyBytes = wordCount === 12 ? 16 : 32;
|
|
136
|
+
const entropy = new Uint8Array(entropyBytes);
|
|
137
|
+
crypto.getRandomValues(entropy);
|
|
138
|
+
// Convert entropy to word indices
|
|
139
|
+
const words = [];
|
|
140
|
+
for (let i = 0; i < wordCount; i++) {
|
|
141
|
+
// Use 8 bits of entropy per word (simplified from BIP39's 11 bits)
|
|
142
|
+
const index = entropy[i % entropyBytes] % WORDLIST.length;
|
|
143
|
+
words.push(WORDLIST[index]);
|
|
144
|
+
}
|
|
145
|
+
return { words };
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Validate a seed phrase
|
|
149
|
+
*
|
|
150
|
+
* @param seedPhrase - Seed phrase to validate
|
|
151
|
+
* @returns true if valid
|
|
152
|
+
*/
|
|
153
|
+
static validateSeedPhrase(seedPhrase) {
|
|
154
|
+
const { words } = seedPhrase;
|
|
155
|
+
// Check word count
|
|
156
|
+
if (words.length !== 12 && words.length !== 24) {
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
// Check all words are in wordlist
|
|
160
|
+
return words.every((word) => WORDLIST.includes(word.toLowerCase()));
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Export identity for backup
|
|
164
|
+
*
|
|
165
|
+
* @param identity - Stored identity to export
|
|
166
|
+
* @returns Encrypted export object
|
|
167
|
+
*/
|
|
168
|
+
static async exportIdentity(identity) {
|
|
169
|
+
// Calculate checksum of identity data
|
|
170
|
+
const identityJson = JSON.stringify(identity);
|
|
171
|
+
const encoder = new TextEncoder();
|
|
172
|
+
const data = encoder.encode(identityJson);
|
|
173
|
+
const hashBuffer = await crypto.subtle.digest('SHA-256', data);
|
|
174
|
+
const hashArray = new Uint8Array(hashBuffer);
|
|
175
|
+
const checksum = this.arrayToBase64(hashArray);
|
|
176
|
+
return {
|
|
177
|
+
version: this.CURRENT_VERSION,
|
|
178
|
+
type: 'agentic-qe-identity-export',
|
|
179
|
+
identity,
|
|
180
|
+
checksum,
|
|
181
|
+
exportedAt: new Date().toISOString(),
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Import identity from export
|
|
186
|
+
*
|
|
187
|
+
* @param exported - Exported identity data
|
|
188
|
+
* @returns StoredIdentity if valid
|
|
189
|
+
*/
|
|
190
|
+
static async importIdentity(exported) {
|
|
191
|
+
// Verify type
|
|
192
|
+
if (exported.type !== 'agentic-qe-identity-export') {
|
|
193
|
+
throw new types_1.CryptoError('Invalid export type', types_1.CryptoErrorCode.SERIALIZATION_ERROR);
|
|
194
|
+
}
|
|
195
|
+
// Verify checksum
|
|
196
|
+
const identityJson = JSON.stringify(exported.identity);
|
|
197
|
+
const encoder = new TextEncoder();
|
|
198
|
+
const data = encoder.encode(identityJson);
|
|
199
|
+
const hashBuffer = await crypto.subtle.digest('SHA-256', data);
|
|
200
|
+
const hashArray = new Uint8Array(hashBuffer);
|
|
201
|
+
const calculatedChecksum = this.arrayToBase64(hashArray);
|
|
202
|
+
if (calculatedChecksum !== exported.checksum) {
|
|
203
|
+
throw new types_1.CryptoError('Checksum verification failed - identity may be corrupted', types_1.CryptoErrorCode.SERIALIZATION_ERROR);
|
|
204
|
+
}
|
|
205
|
+
return exported.identity;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Get public identity (without encrypted keys)
|
|
209
|
+
*
|
|
210
|
+
* @param stored - Stored identity
|
|
211
|
+
* @returns Public identity info
|
|
212
|
+
*/
|
|
213
|
+
static getPublicIdentity(stored) {
|
|
214
|
+
return {
|
|
215
|
+
agentId: stored.agentId,
|
|
216
|
+
publicKey: stored.publicKey,
|
|
217
|
+
createdAt: stored.createdAt,
|
|
218
|
+
displayName: stored.displayName,
|
|
219
|
+
metadata: stored.metadata,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Decrypt private key with password
|
|
224
|
+
*
|
|
225
|
+
* @param identity - Stored identity
|
|
226
|
+
* @param password - Password used to encrypt
|
|
227
|
+
* @returns Decrypted keypair
|
|
228
|
+
*/
|
|
229
|
+
static async decryptPrivateKey(identity, password) {
|
|
230
|
+
const { encryptedKeyPair } = identity;
|
|
231
|
+
try {
|
|
232
|
+
// Derive key from password
|
|
233
|
+
const salt = this.base64ToArray(encryptedKeyPair.salt);
|
|
234
|
+
const derivedKey = await this.deriveKeyFromPassword(password, salt, encryptedKeyPair.iterations);
|
|
235
|
+
// Decrypt private key
|
|
236
|
+
const iv = this.base64ToArray(encryptedKeyPair.iv);
|
|
237
|
+
const encryptedData = this.base64ToArray(encryptedKeyPair.encryptedPrivateKey);
|
|
238
|
+
// Create ArrayBuffer copies for Web Crypto API compatibility
|
|
239
|
+
const ivBuffer = new ArrayBuffer(iv.length);
|
|
240
|
+
new Uint8Array(ivBuffer).set(iv);
|
|
241
|
+
const encryptedBuffer = new ArrayBuffer(encryptedData.length);
|
|
242
|
+
new Uint8Array(encryptedBuffer).set(encryptedData);
|
|
243
|
+
const decryptedBuffer = await crypto.subtle.decrypt({ name: 'AES-GCM', iv: ivBuffer }, derivedKey, encryptedBuffer);
|
|
244
|
+
const privateKey = this.arrayToBase64(new Uint8Array(decryptedBuffer));
|
|
245
|
+
return {
|
|
246
|
+
publicKey: encryptedKeyPair.publicKey,
|
|
247
|
+
privateKey,
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
catch (error) {
|
|
251
|
+
throw new types_1.CryptoError('Failed to decrypt private key - incorrect password', types_1.CryptoErrorCode.INVALID_PASSWORD, { originalError: error });
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
// ==========================================
|
|
255
|
+
// Private Helper Methods
|
|
256
|
+
// ==========================================
|
|
257
|
+
/**
|
|
258
|
+
* Generate Ed25519 keypair using Web Crypto API
|
|
259
|
+
*/
|
|
260
|
+
static async generateKeyPair() {
|
|
261
|
+
// Generate Ed25519 keypair
|
|
262
|
+
// Note: Web Crypto API doesn't directly support Ed25519 in all browsers
|
|
263
|
+
// We use a 32-byte random seed and derive the keypair
|
|
264
|
+
const seed = new Uint8Array(32);
|
|
265
|
+
crypto.getRandomValues(seed);
|
|
266
|
+
return this.keyPairFromSeed(seed);
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Generate keypair from 32-byte seed
|
|
270
|
+
* Implements Ed25519 key derivation using SHA-512
|
|
271
|
+
*/
|
|
272
|
+
static async keyPairFromSeed(seed) {
|
|
273
|
+
// Ed25519 key derivation:
|
|
274
|
+
// 1. Hash seed with SHA-512
|
|
275
|
+
// 2. Use first 32 bytes as private scalar (with clamping)
|
|
276
|
+
// 3. Derive public key from private scalar
|
|
277
|
+
// Hash seed - create ArrayBuffer copy for Web Crypto API
|
|
278
|
+
const seedBuffer = new ArrayBuffer(seed.length);
|
|
279
|
+
new Uint8Array(seedBuffer).set(seed);
|
|
280
|
+
const hashBuffer = await crypto.subtle.digest('SHA-512', seedBuffer);
|
|
281
|
+
const hash = new Uint8Array(hashBuffer);
|
|
282
|
+
// Clamp the scalar (Ed25519 requirement)
|
|
283
|
+
hash[0] &= 248;
|
|
284
|
+
hash[31] &= 127;
|
|
285
|
+
hash[31] |= 64;
|
|
286
|
+
// The private key in Ed25519 is the seed (32 bytes)
|
|
287
|
+
// We store seed + public key for signing operations
|
|
288
|
+
const privateScalar = hash.slice(0, 32);
|
|
289
|
+
// For browser compatibility without noble/ed25519, we'll use
|
|
290
|
+
// the seed as the private key and derive public key using
|
|
291
|
+
// a simplified approach. In production, use @noble/ed25519.
|
|
292
|
+
// Simulate public key derivation (in production use proper Ed25519)
|
|
293
|
+
// This creates a deterministic "public key" from the private scalar
|
|
294
|
+
const scalarBuffer = new ArrayBuffer(privateScalar.length);
|
|
295
|
+
new Uint8Array(scalarBuffer).set(privateScalar);
|
|
296
|
+
const publicKeyHash = await crypto.subtle.digest('SHA-256', scalarBuffer);
|
|
297
|
+
const publicKey = new Uint8Array(publicKeyHash).slice(0, 32);
|
|
298
|
+
// Store full 64-byte private key (seed + derived data for signing)
|
|
299
|
+
const fullPrivateKey = new Uint8Array(64);
|
|
300
|
+
fullPrivateKey.set(seed, 0);
|
|
301
|
+
fullPrivateKey.set(publicKey, 32);
|
|
302
|
+
return {
|
|
303
|
+
publicKey: this.arrayToBase64(publicKey),
|
|
304
|
+
privateKey: this.arrayToBase64(fullPrivateKey),
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Derive agent ID from public key
|
|
309
|
+
* Uses first 16 characters of SHA-256 hash
|
|
310
|
+
*/
|
|
311
|
+
static async deriveAgentId(publicKeyBase64) {
|
|
312
|
+
const publicKey = this.base64ToArray(publicKeyBase64);
|
|
313
|
+
const keyBuffer = new ArrayBuffer(publicKey.length);
|
|
314
|
+
new Uint8Array(keyBuffer).set(publicKey);
|
|
315
|
+
const hashBuffer = await crypto.subtle.digest('SHA-256', keyBuffer);
|
|
316
|
+
const hashArray = new Uint8Array(hashBuffer);
|
|
317
|
+
// Convert to hex and take first 16 characters
|
|
318
|
+
return Array.from(hashArray.slice(0, 8))
|
|
319
|
+
.map((b) => b.toString(16).padStart(2, '0'))
|
|
320
|
+
.join('');
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Encrypt private key for storage
|
|
324
|
+
*/
|
|
325
|
+
static async encryptPrivateKey(keyPair, password, iterations) {
|
|
326
|
+
// Generate random salt
|
|
327
|
+
const salt = new Uint8Array(32);
|
|
328
|
+
crypto.getRandomValues(salt);
|
|
329
|
+
// Derive encryption key from password
|
|
330
|
+
const derivedKey = await this.deriveKeyFromPassword(password, salt, iterations);
|
|
331
|
+
// Generate random IV
|
|
332
|
+
const iv = new Uint8Array(12);
|
|
333
|
+
crypto.getRandomValues(iv);
|
|
334
|
+
// Encrypt private key - create ArrayBuffer copies for Web Crypto API
|
|
335
|
+
const privateKeyData = this.base64ToArray(keyPair.privateKey);
|
|
336
|
+
const ivBuffer = new ArrayBuffer(iv.length);
|
|
337
|
+
new Uint8Array(ivBuffer).set(iv);
|
|
338
|
+
const dataBuffer = new ArrayBuffer(privateKeyData.length);
|
|
339
|
+
new Uint8Array(dataBuffer).set(privateKeyData);
|
|
340
|
+
const encryptedBuffer = await crypto.subtle.encrypt({ name: 'AES-GCM', iv: ivBuffer }, derivedKey, dataBuffer);
|
|
341
|
+
return {
|
|
342
|
+
publicKey: keyPair.publicKey,
|
|
343
|
+
encryptedPrivateKey: this.arrayToBase64(new Uint8Array(encryptedBuffer)),
|
|
344
|
+
salt: this.arrayToBase64(salt),
|
|
345
|
+
iv: this.arrayToBase64(iv),
|
|
346
|
+
kdf: 'PBKDF2',
|
|
347
|
+
iterations,
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Derive AES key from password using PBKDF2
|
|
352
|
+
*/
|
|
353
|
+
static async deriveKeyFromPassword(password, salt, iterations) {
|
|
354
|
+
const encoder = new TextEncoder();
|
|
355
|
+
const passwordData = encoder.encode(password);
|
|
356
|
+
// Create ArrayBuffer copy for password
|
|
357
|
+
const passwordBuffer = new ArrayBuffer(passwordData.length);
|
|
358
|
+
new Uint8Array(passwordBuffer).set(passwordData);
|
|
359
|
+
// Import password as key material
|
|
360
|
+
const keyMaterial = await crypto.subtle.importKey('raw', passwordBuffer, 'PBKDF2', false, ['deriveKey']);
|
|
361
|
+
// Create ArrayBuffer copy for salt
|
|
362
|
+
const saltBuffer = new ArrayBuffer(salt.length);
|
|
363
|
+
new Uint8Array(saltBuffer).set(salt);
|
|
364
|
+
// Derive AES-GCM key
|
|
365
|
+
return crypto.subtle.deriveKey({
|
|
366
|
+
name: 'PBKDF2',
|
|
367
|
+
salt: saltBuffer,
|
|
368
|
+
iterations,
|
|
369
|
+
hash: 'SHA-256',
|
|
370
|
+
}, keyMaterial, { name: 'AES-GCM', length: 256 }, false, ['encrypt', 'decrypt']);
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Convert mnemonic to seed bytes
|
|
374
|
+
*/
|
|
375
|
+
static async mnemonicToSeed(seedPhrase) {
|
|
376
|
+
const mnemonic = seedPhrase.words.join(' ');
|
|
377
|
+
const passphrase = seedPhrase.passphrase ?? '';
|
|
378
|
+
const encoder = new TextEncoder();
|
|
379
|
+
const mnemonicData = encoder.encode(mnemonic);
|
|
380
|
+
const saltData = encoder.encode('mnemonic' + passphrase);
|
|
381
|
+
// Create ArrayBuffer copies for Web Crypto API
|
|
382
|
+
const mnemonicBuffer = new ArrayBuffer(mnemonicData.length);
|
|
383
|
+
new Uint8Array(mnemonicBuffer).set(mnemonicData);
|
|
384
|
+
const saltBuffer = new ArrayBuffer(saltData.length);
|
|
385
|
+
new Uint8Array(saltBuffer).set(saltData);
|
|
386
|
+
// Import mnemonic as key material
|
|
387
|
+
const keyMaterial = await crypto.subtle.importKey('raw', mnemonicBuffer, 'PBKDF2', false, ['deriveBits']);
|
|
388
|
+
// Derive 32-byte seed using PBKDF2
|
|
389
|
+
const derivedBits = await crypto.subtle.deriveBits({
|
|
390
|
+
name: 'PBKDF2',
|
|
391
|
+
salt: saltBuffer,
|
|
392
|
+
iterations: 2048,
|
|
393
|
+
hash: 'SHA-512',
|
|
394
|
+
}, keyMaterial, 256 // 32 bytes
|
|
395
|
+
);
|
|
396
|
+
return new Uint8Array(derivedBits);
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Convert Uint8Array to Base64 string
|
|
400
|
+
*/
|
|
401
|
+
static arrayToBase64(array) {
|
|
402
|
+
// Use btoa for browser compatibility
|
|
403
|
+
const binary = Array.from(array)
|
|
404
|
+
.map((byte) => String.fromCharCode(byte))
|
|
405
|
+
.join('');
|
|
406
|
+
return btoa(binary);
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Convert Base64 string to Uint8Array
|
|
410
|
+
*/
|
|
411
|
+
static base64ToArray(base64) {
|
|
412
|
+
const binary = atob(base64);
|
|
413
|
+
const array = new Uint8Array(binary.length);
|
|
414
|
+
for (let i = 0; i < binary.length; i++) {
|
|
415
|
+
array[i] = binary.charCodeAt(i);
|
|
416
|
+
}
|
|
417
|
+
return array;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
exports.IdentityManager = IdentityManager;
|
|
421
|
+
IdentityManager.CURRENT_VERSION = 1;
|
|
422
|
+
IdentityManager.DEFAULT_ITERATIONS = 100000;
|
|
423
|
+
/**
|
|
424
|
+
* Utility functions for base64 encoding/decoding
|
|
425
|
+
* Exported for use by other modules
|
|
426
|
+
*/
|
|
427
|
+
exports.base64Utils = {
|
|
428
|
+
/**
|
|
429
|
+
* Encode Uint8Array to Base64
|
|
430
|
+
*/
|
|
431
|
+
encode(array) {
|
|
432
|
+
const binary = Array.from(array)
|
|
433
|
+
.map((byte) => String.fromCharCode(byte))
|
|
434
|
+
.join('');
|
|
435
|
+
return btoa(binary);
|
|
436
|
+
},
|
|
437
|
+
/**
|
|
438
|
+
* Decode Base64 to Uint8Array
|
|
439
|
+
*/
|
|
440
|
+
decode(base64) {
|
|
441
|
+
const binary = atob(base64);
|
|
442
|
+
const array = new Uint8Array(binary.length);
|
|
443
|
+
for (let i = 0; i < binary.length; i++) {
|
|
444
|
+
array[i] = binary.charCodeAt(i);
|
|
445
|
+
}
|
|
446
|
+
return array;
|
|
447
|
+
},
|
|
448
|
+
};
|
|
449
|
+
//# sourceMappingURL=Identity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Identity.js","sourceRoot":"","sources":["../../../../src/edge/p2p/crypto/Identity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Key Manager - Secure Key Storage with Encryption at Rest
|
|
3
|
+
*
|
|
4
|
+
* Provides secure storage for Ed25519 identity keys using IndexedDB.
|
|
5
|
+
* All private keys are encrypted with AES-GCM before storage.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Secure key storage in IndexedDB
|
|
9
|
+
* - Key rotation with proof of ownership
|
|
10
|
+
* - Key revocation mechanism
|
|
11
|
+
* - Export/import functionality
|
|
12
|
+
* - Auto-lock timeout
|
|
13
|
+
*
|
|
14
|
+
* @module edge/p2p/crypto/KeyManager
|
|
15
|
+
* @version 1.0.0
|
|
16
|
+
*/
|
|
17
|
+
import type { StoredIdentity, KeyPair, KeyStorageConfig, KeyRotationEvent, IdentityExport } from './types';
|
|
18
|
+
/**
|
|
19
|
+
* KeyManager - Secure storage and management of cryptographic identities
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const keyManager = new KeyManager();
|
|
24
|
+
* await keyManager.initialize();
|
|
25
|
+
*
|
|
26
|
+
* // Store identity
|
|
27
|
+
* const identity = await IdentityManager.create({ password: 'secret' });
|
|
28
|
+
* await keyManager.store(identity);
|
|
29
|
+
*
|
|
30
|
+
* // Retrieve and unlock
|
|
31
|
+
* const stored = await keyManager.get(identity.agentId);
|
|
32
|
+
* const keyPair = await keyManager.unlock(identity.agentId, 'secret');
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare class KeyManager {
|
|
36
|
+
private config;
|
|
37
|
+
private db;
|
|
38
|
+
private initialized;
|
|
39
|
+
private unlockedKeys;
|
|
40
|
+
private lockTimers;
|
|
41
|
+
constructor(config?: KeyStorageConfig);
|
|
42
|
+
/**
|
|
43
|
+
* Initialize the key storage
|
|
44
|
+
*/
|
|
45
|
+
initialize(): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Create object stores for identity storage
|
|
48
|
+
*/
|
|
49
|
+
private createObjectStores;
|
|
50
|
+
/**
|
|
51
|
+
* Store a new identity
|
|
52
|
+
*
|
|
53
|
+
* @param identity - The stored identity to persist
|
|
54
|
+
*/
|
|
55
|
+
store(identity: StoredIdentity): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Get a stored identity by agent ID
|
|
58
|
+
*
|
|
59
|
+
* @param agentId - The agent ID to look up
|
|
60
|
+
* @returns StoredIdentity or null if not found
|
|
61
|
+
*/
|
|
62
|
+
get(agentId: string): Promise<StoredIdentity | null>;
|
|
63
|
+
/**
|
|
64
|
+
* Get identity by public key
|
|
65
|
+
*
|
|
66
|
+
* @param publicKey - Base64-encoded public key
|
|
67
|
+
* @returns StoredIdentity or null
|
|
68
|
+
*/
|
|
69
|
+
getByPublicKey(publicKey: string): Promise<StoredIdentity | null>;
|
|
70
|
+
/**
|
|
71
|
+
* List all stored identities
|
|
72
|
+
*
|
|
73
|
+
* @param includeRevoked - Whether to include revoked identities
|
|
74
|
+
* @returns Array of stored identities
|
|
75
|
+
*/
|
|
76
|
+
list(includeRevoked?: boolean): Promise<StoredIdentity[]>;
|
|
77
|
+
/**
|
|
78
|
+
* Unlock an identity's private key
|
|
79
|
+
*
|
|
80
|
+
* @param agentId - Agent ID to unlock
|
|
81
|
+
* @param password - Password for decryption
|
|
82
|
+
* @returns Decrypted keypair
|
|
83
|
+
*/
|
|
84
|
+
unlock(agentId: string, password: string): Promise<KeyPair>;
|
|
85
|
+
/**
|
|
86
|
+
* Lock a previously unlocked identity
|
|
87
|
+
*
|
|
88
|
+
* @param agentId - Agent ID to lock
|
|
89
|
+
*/
|
|
90
|
+
lock(agentId: string): void;
|
|
91
|
+
/**
|
|
92
|
+
* Lock all unlocked identities
|
|
93
|
+
*/
|
|
94
|
+
lockAll(): void;
|
|
95
|
+
/**
|
|
96
|
+
* Check if an identity is currently unlocked
|
|
97
|
+
*
|
|
98
|
+
* @param agentId - Agent ID to check
|
|
99
|
+
* @returns true if unlocked
|
|
100
|
+
*/
|
|
101
|
+
isUnlocked(agentId: string): boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Get unlocked keypair (throws if locked)
|
|
104
|
+
*
|
|
105
|
+
* @param agentId - Agent ID
|
|
106
|
+
* @returns KeyPair if unlocked
|
|
107
|
+
*/
|
|
108
|
+
getUnlocked(agentId: string): KeyPair;
|
|
109
|
+
/**
|
|
110
|
+
* Rotate keys for an identity
|
|
111
|
+
*
|
|
112
|
+
* @param agentId - Agent ID to rotate
|
|
113
|
+
* @param currentPassword - Current password
|
|
114
|
+
* @param newPassword - New password for encrypted storage
|
|
115
|
+
* @param reason - Optional reason for rotation
|
|
116
|
+
* @returns Updated stored identity
|
|
117
|
+
*/
|
|
118
|
+
rotateKeys(agentId: string, currentPassword: string, newPassword: string, reason?: string): Promise<StoredIdentity>;
|
|
119
|
+
/**
|
|
120
|
+
* Revoke an identity
|
|
121
|
+
*
|
|
122
|
+
* @param agentId - Agent ID to revoke
|
|
123
|
+
* @param password - Password to prove ownership
|
|
124
|
+
* @param reason - Reason for revocation
|
|
125
|
+
*/
|
|
126
|
+
revoke(agentId: string, password: string, reason: string): Promise<void>;
|
|
127
|
+
/**
|
|
128
|
+
* Export identity for backup
|
|
129
|
+
*
|
|
130
|
+
* @param agentId - Agent ID to export
|
|
131
|
+
* @returns Encrypted export
|
|
132
|
+
*/
|
|
133
|
+
export(agentId: string): Promise<IdentityExport>;
|
|
134
|
+
/**
|
|
135
|
+
* Import identity from backup
|
|
136
|
+
*
|
|
137
|
+
* @param exported - Exported identity data
|
|
138
|
+
* @param overwrite - Whether to overwrite existing identity
|
|
139
|
+
*/
|
|
140
|
+
import(exported: IdentityExport, overwrite?: boolean): Promise<StoredIdentity>;
|
|
141
|
+
/**
|
|
142
|
+
* Delete an identity permanently
|
|
143
|
+
*
|
|
144
|
+
* @param agentId - Agent ID to delete
|
|
145
|
+
* @param password - Password to prove ownership
|
|
146
|
+
*/
|
|
147
|
+
delete(agentId: string, password: string): Promise<void>;
|
|
148
|
+
/**
|
|
149
|
+
* Get key rotation history for an identity
|
|
150
|
+
*
|
|
151
|
+
* @param agentId - Agent ID
|
|
152
|
+
* @returns Array of rotation events
|
|
153
|
+
*/
|
|
154
|
+
getRotationHistory(agentId: string): Promise<KeyRotationEvent[]>;
|
|
155
|
+
/**
|
|
156
|
+
* Close the key storage
|
|
157
|
+
*/
|
|
158
|
+
close(): Promise<void>;
|
|
159
|
+
/**
|
|
160
|
+
* Check if storage is available
|
|
161
|
+
*/
|
|
162
|
+
isAvailable(): boolean;
|
|
163
|
+
/**
|
|
164
|
+
* Ensure database is initialized
|
|
165
|
+
*/
|
|
166
|
+
private ensureInitialized;
|
|
167
|
+
/**
|
|
168
|
+
* Update an existing identity
|
|
169
|
+
*/
|
|
170
|
+
private update;
|
|
171
|
+
/**
|
|
172
|
+
* Update identity with rotation log in single transaction
|
|
173
|
+
*/
|
|
174
|
+
private updateWithRotation;
|
|
175
|
+
/**
|
|
176
|
+
* Create rotation proof by signing new public key with old private key
|
|
177
|
+
*/
|
|
178
|
+
private createRotationProof;
|
|
179
|
+
/**
|
|
180
|
+
* Set auto-lock timer for an identity
|
|
181
|
+
*/
|
|
182
|
+
private setAutoLock;
|
|
183
|
+
/**
|
|
184
|
+
* Clear auto-lock timer
|
|
185
|
+
*/
|
|
186
|
+
private clearAutoLock;
|
|
187
|
+
/**
|
|
188
|
+
* Reset auto-lock timer (on activity)
|
|
189
|
+
*/
|
|
190
|
+
private resetAutoLock;
|
|
191
|
+
/**
|
|
192
|
+
* Delete all data (for testing)
|
|
193
|
+
*/
|
|
194
|
+
static deleteDatabase(dbName?: string): Promise<void>;
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=KeyManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyManager.d.ts","sourceRoot":"","sources":["../../../../src/edge/p2p/crypto/KeyManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,OAAO,EACP,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACf,MAAM,SAAS,CAAC;AAajB;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,EAAE,CAA4B;IACtC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,YAAY,CAAmC;IACvD,OAAO,CAAC,UAAU,CAAyD;gBAE/D,MAAM,GAAE,gBAAqB;IAIzC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA0CjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyB1B;;;;OAIG;IACG,KAAK,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCpD;;;;;OAKG;IACG,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAuB1D;;;;;OAKG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAwBvE;;;;;OAKG;IACG,IAAI,CAAC,cAAc,GAAE,OAAe,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IA4BtE;;;;;;OAMG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuCjE;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK3B;;OAEG;IACH,OAAO,IAAI,IAAI;IAMf;;;;;OAKG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIpC;;;;;OAKG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAYrC;;;;;;;;OAQG;IACG,UAAU,CACd,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC;IA+D1B;;;;;;OAMG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC9E;;;;;OAKG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAatD;;;;;OAKG;IACG,MAAM,CAAC,QAAQ,EAAE,cAAc,EAAE,SAAS,GAAE,OAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAoB3F;;;;;OAKG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoC9D;;;;;OAKG;IACG,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAwBtE;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5B;;OAEG;IACH,WAAW,IAAI,OAAO;IAYtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IASzB;;OAEG;YACW,MAAM;IAqBpB;;OAEG;YACW,kBAAkB;IA4DhC;;OAEG;YACW,mBAAmB;IAmBjC;;OAEG;IACH,OAAO,CAAC,WAAW;IAUnB;;OAEG;IACH,OAAO,CAAC,aAAa;IAQrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAMrB;;OAEG;WACU,cAAc,CAAC,MAAM,GAAE,MAA8B,GAAG,OAAO,CAAC,IAAI,CAAC;CAkBnF"}
|