@gsep/core 0.8.0 → 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 +12 -12
- package/dist/{PGA.d.ts → GSEP.d.ts} +120 -8
- package/dist/GSEP.d.ts.map +1 -0
- package/dist/{PGA.js → GSEP.js} +1248 -46
- package/dist/GSEP.js.map +1 -0
- package/dist/adapters/langchain.d.ts +52 -0
- package/dist/adapters/langchain.d.ts.map +1 -0
- package/dist/adapters/langchain.js +89 -0
- package/dist/adapters/langchain.js.map +1 -0
- package/dist/adapters/openclaw-plugin.d.ts +42 -0
- package/dist/adapters/openclaw-plugin.d.ts.map +1 -0
- package/dist/adapters/openclaw-plugin.js +149 -0
- package/dist/adapters/openclaw-plugin.js.map +1 -0
- package/dist/adapters/vercel-ai.d.ts +74 -0
- package/dist/adapters/vercel-ai.d.ts.map +1 -0
- package/dist/adapters/vercel-ai.js +151 -0
- package/dist/adapters/vercel-ai.js.map +1 -0
- package/dist/advanced-ai/EnhancedSelfModel.js +2 -2
- package/dist/advanced-ai/EnhancedSelfModel.js.map +1 -1
- package/dist/advanced-ai/ModelRouter.js.map +1 -1
- package/dist/auto.d.ts +6 -0
- package/dist/auto.d.ts.map +1 -0
- package/dist/auto.js +197 -0
- package/dist/auto.js.map +1 -0
- package/dist/core/CoherenceValidator.d.ts +25 -0
- package/dist/core/CoherenceValidator.d.ts.map +1 -0
- package/dist/core/CoherenceValidator.js +182 -0
- package/dist/core/CoherenceValidator.js.map +1 -0
- package/dist/core/ContextMemory.d.ts.map +1 -1
- package/dist/core/ContextMemory.js +1 -1
- package/dist/core/ContextMemory.js.map +1 -1
- package/dist/core/DNAProfile.d.ts +5 -1
- package/dist/core/DNAProfile.d.ts.map +1 -1
- package/dist/core/DNAProfile.js +14 -1
- package/dist/core/DNAProfile.js.map +1 -1
- package/dist/core/GSEPIdentitySection.d.ts.map +1 -1
- package/dist/core/GSEPIdentitySection.js +12 -3
- package/dist/core/GSEPIdentitySection.js.map +1 -1
- package/dist/core/GenomeKernel.d.ts.map +1 -1
- package/dist/core/GenomeKernel.js +3 -0
- package/dist/core/GenomeKernel.js.map +1 -1
- package/dist/core/GenomeManager.js +1 -1
- package/dist/core/GenomeManager.js.map +1 -1
- package/dist/core/ProactiveSuggestions.js +1 -1
- package/dist/core/ProactiveSuggestions.js.map +1 -1
- package/dist/dashboard/DashboardServer.d.ts +64 -0
- package/dist/dashboard/DashboardServer.d.ts.map +1 -0
- package/dist/dashboard/DashboardServer.js +409 -0
- package/dist/dashboard/DashboardServer.js.map +1 -0
- package/dist/dashboard/DashboardToken.d.ts +16 -0
- package/dist/dashboard/DashboardToken.d.ts.map +1 -0
- package/dist/dashboard/DashboardToken.js +54 -0
- package/dist/dashboard/DashboardToken.js.map +1 -0
- package/dist/dashboard/dashboard.html +2731 -0
- package/dist/dashboard/index.d.ts +3 -0
- package/dist/dashboard/index.d.ts.map +1 -0
- package/dist/dashboard/index.js +3 -0
- package/dist/dashboard/index.js.map +1 -0
- package/dist/evaluation/BenchmarkSuites.d.ts +2 -2
- package/dist/evaluation/BenchmarkSuites.d.ts.map +1 -1
- package/dist/evaluation/BenchmarkSuites.js +6 -6
- package/dist/evaluation/BenchmarkSuites.js.map +1 -1
- package/dist/evaluation/ConstitutionalGate.d.ts +18 -0
- package/dist/evaluation/ConstitutionalGate.d.ts.map +1 -0
- package/dist/evaluation/ConstitutionalGate.js +149 -0
- package/dist/evaluation/ConstitutionalGate.js.map +1 -0
- package/dist/evaluation/Evaluator.d.ts +4 -4
- package/dist/evaluation/Evaluator.d.ts.map +1 -1
- package/dist/evaluation/Evaluator.js +27 -27
- package/dist/evaluation/Evaluator.js.map +1 -1
- package/dist/evaluation/EvolutionGuardrails.d.ts +3 -1
- package/dist/evaluation/EvolutionGuardrails.d.ts.map +1 -1
- package/dist/evaluation/EvolutionGuardrails.js +29 -11
- package/dist/evaluation/EvolutionGuardrails.js.map +1 -1
- package/dist/evolution/MutationOperator.d.ts +19 -6
- package/dist/evolution/MutationOperator.d.ts.map +1 -1
- package/dist/evolution/MutationOperator.js +264 -9
- package/dist/evolution/MutationOperator.js.map +1 -1
- package/dist/evolution/boost/operators/BreakthroughOperator.d.ts +1 -1
- package/dist/evolution/boost/operators/BreakthroughOperator.d.ts.map +1 -1
- package/dist/evolution/boost/operators/BreakthroughOperator.js.map +1 -1
- package/dist/evolution/boost/operators/CrossoverMutationOperator.d.ts +1 -1
- package/dist/evolution/boost/operators/CrossoverMutationOperator.d.ts.map +1 -1
- package/dist/evolution/boost/operators/CrossoverMutationOperator.js.map +1 -1
- package/dist/evolution/boost/operators/PatternExtractionOperator.d.ts +1 -1
- package/dist/evolution/boost/operators/PatternExtractionOperator.d.ts.map +1 -1
- package/dist/evolution/boost/operators/PatternExtractionOperator.js.map +1 -1
- package/dist/evolution/boost/operators/SemanticRestructuringOperator.d.ts +1 -1
- package/dist/evolution/boost/operators/SemanticRestructuringOperator.d.ts.map +1 -1
- package/dist/evolution/boost/operators/SemanticRestructuringOperator.js.map +1 -1
- package/dist/firewall/AnomalyDetector.d.ts +42 -0
- package/dist/firewall/AnomalyDetector.d.ts.map +1 -0
- package/dist/firewall/AnomalyDetector.js +181 -0
- package/dist/firewall/AnomalyDetector.js.map +1 -0
- package/dist/firewall/ContentFirewall.d.ts +5 -0
- package/dist/firewall/ContentFirewall.d.ts.map +1 -1
- package/dist/firewall/ContentFirewall.js +5 -0
- package/dist/firewall/ContentFirewall.js.map +1 -1
- package/dist/firewall/PurposeLock.d.ts +41 -0
- package/dist/firewall/PurposeLock.d.ts.map +1 -0
- package/dist/firewall/PurposeLock.js +199 -0
- package/dist/firewall/PurposeLock.js.map +1 -0
- package/dist/gene-bank/CognitiveGene.d.ts +118 -118
- package/dist/gene-bank/{PGAIntegration.d.ts → GSEPIntegration.d.ts} +10 -10
- package/dist/gene-bank/GSEPIntegration.d.ts.map +1 -0
- package/dist/gene-bank/{PGAIntegration.js → GSEPIntegration.js} +6 -6
- package/dist/gene-bank/GSEPIntegration.js.map +1 -0
- package/dist/gene-bank/GeneAdopter.d.ts +6 -6
- package/dist/gene-bank/GeneAdopter.d.ts.map +1 -1
- package/dist/gene-bank/GeneAdopter.js +2 -2
- package/dist/gene-bank/GeneAdopter.js.map +1 -1
- package/dist/gene-bank/GeneBank.d.ts +13 -9
- package/dist/gene-bank/GeneBank.d.ts.map +1 -1
- package/dist/gene-bank/GeneBank.js +8 -1
- package/dist/gene-bank/GeneBank.js.map +1 -1
- package/dist/gene-bank/GeneExtractor.d.ts +7 -7
- package/dist/gene-bank/GeneExtractor.d.ts.map +1 -1
- package/dist/gene-bank/GeneExtractor.js +1 -1
- package/dist/gene-bank/GeneExtractor.js.map +1 -1
- package/dist/gene-bank/GeneMatcher.d.ts +1 -1
- package/dist/gene-bank/GeneMatcher.d.ts.map +1 -1
- package/dist/gene-bank/MarketplaceClient.d.ts +17 -1
- package/dist/gene-bank/MarketplaceClient.d.ts.map +1 -1
- package/dist/gene-bank/MarketplaceClient.js +106 -35
- package/dist/gene-bank/MarketplaceClient.js.map +1 -1
- package/dist/gene-bank/MarketplaceMapper.d.ts +7 -0
- package/dist/gene-bank/MarketplaceMapper.d.ts.map +1 -0
- package/dist/gene-bank/MarketplaceMapper.js +95 -0
- package/dist/gene-bank/MarketplaceMapper.js.map +1 -0
- package/dist/gene-bank/MarketplaceTypes.d.ts +121 -0
- package/dist/gene-bank/MarketplaceTypes.d.ts.map +1 -0
- package/dist/gene-bank/MarketplaceTypes.js +2 -0
- package/dist/gene-bank/MarketplaceTypes.js.map +1 -0
- package/dist/gene-bank/SandboxTester.d.ts +3 -3
- package/dist/gene-bank/SandboxTester.d.ts.map +1 -1
- package/dist/gene-bank/adapters/InMemoryGeneStorage.d.ts +3 -3
- package/dist/gene-bank/adapters/InMemoryGeneStorage.d.ts.map +1 -1
- package/dist/gene-bank/adapters/PostgresGeneStorage.d.ts +4 -4
- package/dist/gene-bank/adapters/PostgresGeneStorage.d.ts.map +1 -1
- package/dist/gene-bank/adapters/PostgresGeneStorage.js.map +1 -1
- package/dist/gene-bank/adapters/SQLiteGeneStorage.d.ts +28 -0
- package/dist/gene-bank/adapters/SQLiteGeneStorage.d.ts.map +1 -0
- package/dist/gene-bank/adapters/SQLiteGeneStorage.js +158 -0
- package/dist/gene-bank/adapters/SQLiteGeneStorage.js.map +1 -0
- package/dist/gene-bank/index.d.ts +10 -7
- package/dist/gene-bank/index.d.ts.map +1 -1
- package/dist/gene-bank/index.js +8 -7
- package/dist/gene-bank/index.js.map +1 -1
- package/dist/immune/BehavioralImmuneSystem.d.ts +6 -0
- package/dist/immune/BehavioralImmuneSystem.d.ts.map +1 -1
- package/dist/immune/BehavioralImmuneSystem.js +6 -0
- package/dist/immune/BehavioralImmuneSystem.js.map +1 -1
- package/dist/index.d.ts +44 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -4
- package/dist/index.js.map +1 -1
- package/dist/memory/LayeredMemory.d.ts +1 -1
- package/dist/memory/LayeredMemory.d.ts.map +1 -1
- package/dist/memory/LayeredMemory.js.map +1 -1
- package/dist/middleware/GSEPMiddleware.d.ts +57 -0
- package/dist/middleware/GSEPMiddleware.d.ts.map +1 -0
- package/dist/middleware/GSEPMiddleware.js +91 -0
- package/dist/middleware/GSEPMiddleware.js.map +1 -0
- package/dist/middleware/RuntimeDetector.d.ts +10 -0
- package/dist/middleware/RuntimeDetector.d.ts.map +1 -0
- package/dist/middleware/RuntimeDetector.js +70 -0
- package/dist/middleware/RuntimeDetector.js.map +1 -0
- package/dist/middleware/ServerlessAdapter.d.ts +23 -0
- package/dist/middleware/ServerlessAdapter.d.ts.map +1 -0
- package/dist/middleware/ServerlessAdapter.js +77 -0
- package/dist/middleware/ServerlessAdapter.js.map +1 -0
- package/dist/monitoring/AlertWebhooks.d.ts +17 -0
- package/dist/monitoring/AlertWebhooks.d.ts.map +1 -1
- package/dist/monitoring/AlertWebhooks.js.map +1 -1
- package/dist/monitoring/WeeklyReportGenerator.d.ts +73 -0
- package/dist/monitoring/WeeklyReportGenerator.d.ts.map +1 -0
- package/dist/monitoring/WeeklyReportGenerator.js +148 -0
- package/dist/monitoring/WeeklyReportGenerator.js.map +1 -0
- package/dist/rag/RAGEngine.d.ts +1 -1
- package/dist/rag/RAGEngine.d.ts.map +1 -1
- package/dist/rag/VectorStoreAdapter.d.ts +2 -2
- package/dist/rag/VectorStoreAdapter.d.ts.map +1 -1
- package/dist/rag/VectorStoreAdapter.js.map +1 -1
- package/dist/realtime/EventEmitter.d.ts +110 -17
- package/dist/realtime/EventEmitter.d.ts.map +1 -1
- package/dist/realtime/EventEmitter.js +3 -4
- package/dist/realtime/EventEmitter.js.map +1 -1
- package/dist/security/CapabilityBroker.d.ts +41 -0
- package/dist/security/CapabilityBroker.d.ts.map +1 -0
- package/dist/security/CapabilityBroker.js +125 -0
- package/dist/security/CapabilityBroker.js.map +1 -0
- package/dist/security/CommandExecutionGuard.d.ts +47 -0
- package/dist/security/CommandExecutionGuard.d.ts.map +1 -0
- package/dist/security/CommandExecutionGuard.js +175 -0
- package/dist/security/CommandExecutionGuard.js.map +1 -0
- package/dist/security/ComplianceExporter.d.ts +32 -0
- package/dist/security/ComplianceExporter.d.ts.map +1 -0
- package/dist/security/ComplianceExporter.js +129 -0
- package/dist/security/ComplianceExporter.js.map +1 -0
- package/dist/security/DataAccessTracker.d.ts +38 -0
- package/dist/security/DataAccessTracker.d.ts.map +1 -0
- package/dist/security/DataAccessTracker.js +71 -0
- package/dist/security/DataAccessTracker.js.map +1 -0
- package/dist/security/DataClassifier.d.ts +14 -0
- package/dist/security/DataClassifier.d.ts.map +1 -0
- package/dist/security/DataClassifier.js +146 -0
- package/dist/security/DataClassifier.js.map +1 -0
- package/dist/security/EncryptedConfigStore.d.ts +21 -0
- package/dist/security/EncryptedConfigStore.d.ts.map +1 -0
- package/dist/security/EncryptedConfigStore.js +119 -0
- package/dist/security/EncryptedConfigStore.js.map +1 -0
- package/dist/security/EnterprisePolicyEngine.d.ts +90 -0
- package/dist/security/EnterprisePolicyEngine.d.ts.map +1 -0
- package/dist/security/EnterprisePolicyEngine.js +240 -0
- package/dist/security/EnterprisePolicyEngine.js.map +1 -0
- package/dist/security/FileSystemBoundary.d.ts +33 -0
- package/dist/security/FileSystemBoundary.d.ts.map +1 -0
- package/dist/security/FileSystemBoundary.js +94 -0
- package/dist/security/FileSystemBoundary.js.map +1 -0
- package/dist/security/GDPREngine.d.ts +65 -0
- package/dist/security/GDPREngine.d.ts.map +1 -0
- package/dist/security/GDPREngine.js +180 -0
- package/dist/security/GDPREngine.js.map +1 -0
- package/dist/security/GenomeSecurityBridge.d.ts +47 -0
- package/dist/security/GenomeSecurityBridge.d.ts.map +1 -0
- package/dist/security/GenomeSecurityBridge.js +157 -0
- package/dist/security/GenomeSecurityBridge.js.map +1 -0
- package/dist/security/KeyHierarchy.d.ts +23 -0
- package/dist/security/KeyHierarchy.d.ts.map +1 -0
- package/dist/security/KeyHierarchy.js +78 -0
- package/dist/security/KeyHierarchy.js.map +1 -0
- package/dist/security/KeychainAdapter.d.ts +19 -0
- package/dist/security/KeychainAdapter.d.ts.map +1 -0
- package/dist/security/KeychainAdapter.js +104 -0
- package/dist/security/KeychainAdapter.js.map +1 -0
- package/dist/security/LLMProxyLayer.d.ts +63 -0
- package/dist/security/LLMProxyLayer.d.ts.map +1 -0
- package/dist/security/LLMProxyLayer.js +148 -0
- package/dist/security/LLMProxyLayer.js.map +1 -0
- package/dist/security/MFAProvider.d.ts +35 -0
- package/dist/security/MFAProvider.d.ts.map +1 -0
- package/dist/security/MFAProvider.js +174 -0
- package/dist/security/MFAProvider.js.map +1 -0
- package/dist/security/NetworkAuditLogger.d.ts +35 -0
- package/dist/security/NetworkAuditLogger.d.ts.map +1 -0
- package/dist/security/NetworkAuditLogger.js +99 -0
- package/dist/security/NetworkAuditLogger.js.map +1 -0
- package/dist/security/OutboundAllowlist.d.ts +33 -0
- package/dist/security/OutboundAllowlist.d.ts.map +1 -0
- package/dist/security/OutboundAllowlist.js +112 -0
- package/dist/security/OutboundAllowlist.js.map +1 -0
- package/dist/security/PIIRedactionEngine.d.ts +40 -0
- package/dist/security/PIIRedactionEngine.d.ts.map +1 -0
- package/dist/security/PIIRedactionEngine.js +232 -0
- package/dist/security/PIIRedactionEngine.js.map +1 -0
- package/dist/security/RBACEngine.d.ts +44 -0
- package/dist/security/RBACEngine.d.ts.map +1 -0
- package/dist/security/RBACEngine.js +209 -0
- package/dist/security/RBACEngine.js.map +1 -0
- package/dist/security/SOC2Controls.d.ts +37 -0
- package/dist/security/SOC2Controls.d.ts.map +1 -0
- package/dist/security/SOC2Controls.js +151 -0
- package/dist/security/SOC2Controls.js.map +1 -0
- package/dist/security/SecretRotationEngine.d.ts +46 -0
- package/dist/security/SecretRotationEngine.d.ts.map +1 -0
- package/dist/security/SecretRotationEngine.js +102 -0
- package/dist/security/SecretRotationEngine.js.map +1 -0
- package/dist/security/SecretsMigrator.d.ts +28 -0
- package/dist/security/SecretsMigrator.d.ts.map +1 -0
- package/dist/security/SecretsMigrator.js +170 -0
- package/dist/security/SecretsMigrator.js.map +1 -0
- package/dist/security/SecurityEventBus.d.ts +48 -0
- package/dist/security/SecurityEventBus.d.ts.map +1 -0
- package/dist/security/SecurityEventBus.js +105 -0
- package/dist/security/SecurityEventBus.js.map +1 -0
- package/dist/security/SecurityPresets.d.ts +42 -0
- package/dist/security/SecurityPresets.d.ts.map +1 -0
- package/dist/security/SecurityPresets.js +162 -0
- package/dist/security/SecurityPresets.js.map +1 -0
- package/dist/security/SkillManifest.d.ts +34 -0
- package/dist/security/SkillManifest.d.ts.map +1 -0
- package/dist/security/SkillManifest.js +91 -0
- package/dist/security/SkillManifest.js.map +1 -0
- package/dist/security/SkillSigner.d.ts +22 -0
- package/dist/security/SkillSigner.d.ts.map +1 -0
- package/dist/security/SkillSigner.js +80 -0
- package/dist/security/SkillSigner.js.map +1 -0
- package/dist/security/TamperProofAuditLog.d.ts +58 -0
- package/dist/security/TamperProofAuditLog.d.ts.map +1 -0
- package/dist/security/TamperProofAuditLog.js +214 -0
- package/dist/security/TamperProofAuditLog.js.map +1 -0
- package/dist/security/index.d.ts +27 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +27 -0
- package/dist/security/index.js.map +1 -0
- package/dist/skills/ProactiveEngine.d.ts +55 -0
- package/dist/skills/ProactiveEngine.d.ts.map +1 -0
- package/dist/skills/ProactiveEngine.js +201 -0
- package/dist/skills/ProactiveEngine.js.map +1 -0
- package/dist/skills/SkillExecutor.d.ts +21 -0
- package/dist/skills/SkillExecutor.d.ts.map +1 -0
- package/dist/skills/SkillExecutor.js +131 -0
- package/dist/skills/SkillExecutor.js.map +1 -0
- package/dist/skills/SkillRegistry.d.ts +47 -0
- package/dist/skills/SkillRegistry.d.ts.map +1 -0
- package/dist/skills/SkillRegistry.js +94 -0
- package/dist/skills/SkillRegistry.js.map +1 -0
- package/dist/skills/SkillRouter.d.ts +30 -0
- package/dist/skills/SkillRouter.d.ts.map +1 -0
- package/dist/skills/SkillRouter.js +113 -0
- package/dist/skills/SkillRouter.js.map +1 -0
- package/dist/skills/index.d.ts +9 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +5 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/types/GenomeV2.d.ts +12 -0
- package/dist/types/GenomeV2.d.ts.map +1 -1
- package/dist/types/index.d.ts +19 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/wrap/FileStorageAdapter.d.ts +113 -0
- package/dist/wrap/FileStorageAdapter.d.ts.map +1 -0
- package/dist/wrap/FileStorageAdapter.js +239 -0
- package/dist/wrap/FileStorageAdapter.js.map +1 -0
- package/dist/wrap/SQLiteStorageAdapter.d.ts +96 -0
- package/dist/wrap/SQLiteStorageAdapter.d.ts.map +1 -0
- package/dist/wrap/SQLiteStorageAdapter.js +251 -0
- package/dist/wrap/SQLiteStorageAdapter.js.map +1 -0
- package/dist/wrap/WrappedAgent.d.ts +2 -2
- package/dist/wrap/WrappedAgent.d.ts.map +1 -1
- package/dist/wrap/WrappedAgent.js +7 -7
- package/dist/wrap/WrappedAgent.js.map +1 -1
- package/dist/wrap.d.ts +39 -0
- package/dist/wrap.d.ts.map +1 -0
- package/dist/wrap.js +96 -0
- package/dist/wrap.js.map +1 -0
- package/package.json +34 -7
- package/dist/PGA.d.ts.map +0 -1
- package/dist/PGA.js.map +0 -1
- package/dist/evolution/PromotionGate.d.ts +0 -45
- package/dist/evolution/PromotionGate.d.ts.map +0 -1
- package/dist/evolution/PromotionGate.js +0 -248
- package/dist/evolution/PromotionGate.js.map +0 -1
- package/dist/gene-bank/PGAIntegration.d.ts.map +0 -1
- package/dist/gene-bank/PGAIntegration.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SecurityEventBus.d.ts","sourceRoot":"","sources":["../../src/security/SecurityEventBus.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
export class SecurityEventBus {
|
|
2
|
+
subscriptions = new Map();
|
|
3
|
+
nextId = 1;
|
|
4
|
+
history = [];
|
|
5
|
+
maxHistory = 500;
|
|
6
|
+
on(type, handler) {
|
|
7
|
+
const sub = { id: this.nextId++, type, handler };
|
|
8
|
+
const existing = this.subscriptions.get(type) || [];
|
|
9
|
+
existing.push(sub);
|
|
10
|
+
this.subscriptions.set(type, existing);
|
|
11
|
+
return sub.id;
|
|
12
|
+
}
|
|
13
|
+
onAny(handler) {
|
|
14
|
+
const sub = { id: this.nextId++, type: '*', handler };
|
|
15
|
+
const existing = this.subscriptions.get('*') || [];
|
|
16
|
+
existing.push(sub);
|
|
17
|
+
this.subscriptions.set('*', existing);
|
|
18
|
+
return sub.id;
|
|
19
|
+
}
|
|
20
|
+
off(subscriptionId) {
|
|
21
|
+
for (const [type, subs] of this.subscriptions) {
|
|
22
|
+
const idx = subs.findIndex(s => s.id === subscriptionId);
|
|
23
|
+
if (idx !== -1) {
|
|
24
|
+
subs.splice(idx, 1);
|
|
25
|
+
if (subs.length === 0)
|
|
26
|
+
this.subscriptions.delete(type);
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
emit(event) {
|
|
33
|
+
this.history.push(event);
|
|
34
|
+
if (this.history.length > this.maxHistory) {
|
|
35
|
+
this.history = this.history.slice(-this.maxHistory);
|
|
36
|
+
}
|
|
37
|
+
const typeSubs = this.subscriptions.get(event.type) || [];
|
|
38
|
+
for (const sub of typeSubs) {
|
|
39
|
+
try {
|
|
40
|
+
sub.handler(event);
|
|
41
|
+
}
|
|
42
|
+
catch { }
|
|
43
|
+
}
|
|
44
|
+
const wildcardSubs = this.subscriptions.get('*') || [];
|
|
45
|
+
for (const sub of wildcardSubs) {
|
|
46
|
+
try {
|
|
47
|
+
sub.handler(event);
|
|
48
|
+
}
|
|
49
|
+
catch { }
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
emitDeny(type, layer, resource, severity = 'warning', actor, evidence) {
|
|
53
|
+
this.emit({
|
|
54
|
+
type,
|
|
55
|
+
timestamp: new Date(),
|
|
56
|
+
layer,
|
|
57
|
+
decision: 'deny',
|
|
58
|
+
actor: actor || {},
|
|
59
|
+
resource,
|
|
60
|
+
severity,
|
|
61
|
+
evidence,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
emitAllow(type, layer, resource, actor) {
|
|
65
|
+
this.emit({
|
|
66
|
+
type,
|
|
67
|
+
timestamp: new Date(),
|
|
68
|
+
layer,
|
|
69
|
+
decision: 'allow',
|
|
70
|
+
actor: actor || {},
|
|
71
|
+
resource,
|
|
72
|
+
severity: 'info',
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
getHistory(filter) {
|
|
76
|
+
let events = this.history;
|
|
77
|
+
if (filter?.type)
|
|
78
|
+
events = events.filter(e => e.type === filter.type);
|
|
79
|
+
if (filter?.layer)
|
|
80
|
+
events = events.filter(e => e.layer === filter.layer);
|
|
81
|
+
if (filter?.decision)
|
|
82
|
+
events = events.filter(e => e.decision === filter.decision);
|
|
83
|
+
if (filter?.since)
|
|
84
|
+
events = events.filter(e => e.timestamp >= filter.since);
|
|
85
|
+
if (filter?.limit)
|
|
86
|
+
events = events.slice(-filter.limit);
|
|
87
|
+
return events;
|
|
88
|
+
}
|
|
89
|
+
getSummary() {
|
|
90
|
+
const summary = { total: this.history.length, allowed: 0, denied: 0, byLayer: {} };
|
|
91
|
+
for (const event of this.history) {
|
|
92
|
+
if (event.decision === 'allow')
|
|
93
|
+
summary.allowed++;
|
|
94
|
+
if (event.decision === 'deny')
|
|
95
|
+
summary.denied++;
|
|
96
|
+
summary.byLayer[event.layer] = (summary.byLayer[event.layer] || 0) + 1;
|
|
97
|
+
}
|
|
98
|
+
return summary;
|
|
99
|
+
}
|
|
100
|
+
reset() {
|
|
101
|
+
this.subscriptions.clear();
|
|
102
|
+
this.history = [];
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=SecurityEventBus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SecurityEventBus.js","sourceRoot":"","sources":["../../src/security/SecurityEventBus.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export type SecurityPresetName = 'paranoid' | 'secure' | 'standard' | 'developer';
|
|
2
|
+
export type FirewallMode = 'full-quarantine' | 'full-sanitize' | 'structural' | 'log-only';
|
|
3
|
+
export type ExecPolicy = 'deny-all' | 'allowlist-ask' | 'allowlist' | 'unrestricted';
|
|
4
|
+
export type NetworkPolicy = 'localhost-only' | 'allowlist-strict' | 'allowlist-broad' | 'unrestricted';
|
|
5
|
+
export type CredentialPolicy = 'keychain-required' | 'keychain-recommended' | 'env-allowed';
|
|
6
|
+
export type SkillVerification = 'signed-manifest' | 'manifest-only' | 'none';
|
|
7
|
+
export type AuditLevel = 'verbose-signed-encrypted' | 'standard-signed' | 'standard' | 'basic';
|
|
8
|
+
export type LLMRouting = 'local-only' | 'local-preferred' | 'cloud-filtered' | 'cloud-direct';
|
|
9
|
+
export interface SecurityConfig {
|
|
10
|
+
profile: SecurityPresetName;
|
|
11
|
+
firewallMode: FirewallMode;
|
|
12
|
+
immuneMode: FirewallMode;
|
|
13
|
+
enablePurposeLock: boolean;
|
|
14
|
+
enableAnomalyDetection: boolean;
|
|
15
|
+
enablePIIRedaction: boolean;
|
|
16
|
+
piiCategories: string[];
|
|
17
|
+
llmRouting: LLMRouting;
|
|
18
|
+
enableSensitiveVault: boolean;
|
|
19
|
+
credentialPolicy: CredentialPolicy;
|
|
20
|
+
enableEncryptedConfig: boolean;
|
|
21
|
+
autoMigrateSecrets: boolean;
|
|
22
|
+
skillVerification: SkillVerification;
|
|
23
|
+
blockUnsignedSkills: boolean;
|
|
24
|
+
enableCapabilityBroker: boolean;
|
|
25
|
+
execPolicy: ExecPolicy;
|
|
26
|
+
enableFSBoundary: boolean;
|
|
27
|
+
allowedPaths: string[];
|
|
28
|
+
deniedPaths: string[];
|
|
29
|
+
enableProcessIsolation: boolean;
|
|
30
|
+
networkPolicy: NetworkPolicy;
|
|
31
|
+
allowedDomains: string[];
|
|
32
|
+
blockPrivateNetworks: boolean;
|
|
33
|
+
auditLevel: AuditLevel;
|
|
34
|
+
auditRetentionDays: number;
|
|
35
|
+
enableDataAccessTracking: boolean;
|
|
36
|
+
sessionTimeoutMinutes: number;
|
|
37
|
+
}
|
|
38
|
+
export declare function getSecurityPreset(name: SecurityPresetName): SecurityConfig;
|
|
39
|
+
export declare function withSecurityPreset(name: SecurityPresetName, overrides: Partial<SecurityConfig>): SecurityConfig;
|
|
40
|
+
export declare function getAvailableSecurityPresets(): SecurityPresetName[];
|
|
41
|
+
export declare function validateSecurityConfig(config: SecurityConfig): string[];
|
|
42
|
+
//# sourceMappingURL=SecurityPresets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SecurityPresets.d.ts","sourceRoot":"","sources":["../../src/security/SecurityPresets.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC;AAElF,MAAM,MAAM,YAAY,GAAG,iBAAiB,GAAG,eAAe,GAAG,YAAY,GAAG,UAAU,CAAC;AAC3F,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,eAAe,GAAG,WAAW,GAAG,cAAc,CAAC;AACrF,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,cAAc,CAAC;AACvG,MAAM,MAAM,gBAAgB,GAAG,mBAAmB,GAAG,sBAAsB,GAAG,aAAa,CAAC;AAC5F,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,GAAG,eAAe,GAAG,MAAM,CAAC;AAC7E,MAAM,MAAM,UAAU,GAAG,0BAA0B,GAAG,iBAAiB,GAAG,UAAU,GAAG,OAAO,CAAC;AAC/F,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAE9F,MAAM,WAAW,cAAc;IAE3B,OAAO,EAAE,kBAAkB,CAAC;IAI5B,YAAY,EAAE,YAAY,CAAC;IAE3B,UAAU,EAAE,YAAY,CAAC;IAEzB,iBAAiB,EAAE,OAAO,CAAC;IAE3B,sBAAsB,EAAE,OAAO,CAAC;IAIhC,kBAAkB,EAAE,OAAO,CAAC;IAE5B,aAAa,EAAE,MAAM,EAAE,CAAC;IAExB,UAAU,EAAE,UAAU,CAAC;IAEvB,oBAAoB,EAAE,OAAO,CAAC;IAI9B,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC,qBAAqB,EAAE,OAAO,CAAC;IAE/B,kBAAkB,EAAE,OAAO,CAAC;IAI5B,iBAAiB,EAAE,iBAAiB,CAAC;IAErC,mBAAmB,EAAE,OAAO,CAAC;IAE7B,sBAAsB,EAAE,OAAO,CAAC;IAIhC,UAAU,EAAE,UAAU,CAAC;IAEvB,gBAAgB,EAAE,OAAO,CAAC;IAE1B,YAAY,EAAE,MAAM,EAAE,CAAC;IAEvB,WAAW,EAAE,MAAM,EAAE,CAAC;IAEtB,sBAAsB,EAAE,OAAO,CAAC;IAIhC,aAAa,EAAE,aAAa,CAAC;IAE7B,cAAc,EAAE,MAAM,EAAE,CAAC;IAEzB,oBAAoB,EAAE,OAAO,CAAC;IAI9B,UAAU,EAAE,UAAU,CAAC;IAEvB,kBAAkB,EAAE,MAAM,CAAC;IAE3B,wBAAwB,EAAE,OAAO,CAAC;IAElC,qBAAqB,EAAE,MAAM,CAAC;CACjC;AAuLD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,cAAc,CAE1E;AAKD,wBAAgB,kBAAkB,CAC9B,IAAI,EAAE,kBAAkB,EACxB,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC,GACnC,cAAc,CAEhB;AAKD,wBAAgB,2BAA2B,IAAI,kBAAkB,EAAE,CAElE;AAKD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,CAoBvE"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
const ALWAYS_DENIED_PATHS = [
|
|
2
|
+
'~/.ssh',
|
|
3
|
+
'~/.gnupg',
|
|
4
|
+
'~/Library/Keychains',
|
|
5
|
+
'~/.aws',
|
|
6
|
+
'~/.config/gcloud',
|
|
7
|
+
'~/.azure',
|
|
8
|
+
'~/.kube/config',
|
|
9
|
+
'~/.docker/config.json',
|
|
10
|
+
];
|
|
11
|
+
const PRESET_PARANOID = {
|
|
12
|
+
profile: 'paranoid',
|
|
13
|
+
firewallMode: 'full-quarantine',
|
|
14
|
+
immuneMode: 'full-quarantine',
|
|
15
|
+
enablePurposeLock: true,
|
|
16
|
+
enableAnomalyDetection: true,
|
|
17
|
+
enablePIIRedaction: true,
|
|
18
|
+
piiCategories: [],
|
|
19
|
+
llmRouting: 'local-only',
|
|
20
|
+
enableSensitiveVault: true,
|
|
21
|
+
credentialPolicy: 'keychain-required',
|
|
22
|
+
enableEncryptedConfig: true,
|
|
23
|
+
autoMigrateSecrets: true,
|
|
24
|
+
skillVerification: 'signed-manifest',
|
|
25
|
+
blockUnsignedSkills: true,
|
|
26
|
+
enableCapabilityBroker: true,
|
|
27
|
+
execPolicy: 'deny-all',
|
|
28
|
+
enableFSBoundary: true,
|
|
29
|
+
allowedPaths: ['~/.genome', '/tmp/genome-*'],
|
|
30
|
+
deniedPaths: [...ALWAYS_DENIED_PATHS],
|
|
31
|
+
enableProcessIsolation: true,
|
|
32
|
+
networkPolicy: 'localhost-only',
|
|
33
|
+
allowedDomains: ['localhost', '127.0.0.1'],
|
|
34
|
+
blockPrivateNetworks: true,
|
|
35
|
+
auditLevel: 'verbose-signed-encrypted',
|
|
36
|
+
auditRetentionDays: 365,
|
|
37
|
+
enableDataAccessTracking: true,
|
|
38
|
+
sessionTimeoutMinutes: 60,
|
|
39
|
+
};
|
|
40
|
+
const PRESET_SECURE = {
|
|
41
|
+
profile: 'secure',
|
|
42
|
+
firewallMode: 'full-sanitize',
|
|
43
|
+
immuneMode: 'full-sanitize',
|
|
44
|
+
enablePurposeLock: true,
|
|
45
|
+
enableAnomalyDetection: true,
|
|
46
|
+
enablePIIRedaction: true,
|
|
47
|
+
piiCategories: [],
|
|
48
|
+
llmRouting: 'local-preferred',
|
|
49
|
+
enableSensitiveVault: true,
|
|
50
|
+
credentialPolicy: 'keychain-required',
|
|
51
|
+
enableEncryptedConfig: true,
|
|
52
|
+
autoMigrateSecrets: true,
|
|
53
|
+
skillVerification: 'signed-manifest',
|
|
54
|
+
blockUnsignedSkills: true,
|
|
55
|
+
enableCapabilityBroker: true,
|
|
56
|
+
execPolicy: 'allowlist-ask',
|
|
57
|
+
enableFSBoundary: true,
|
|
58
|
+
allowedPaths: ['~/Documents/Genome', '~/.genome', '/tmp/genome-*'],
|
|
59
|
+
deniedPaths: [...ALWAYS_DENIED_PATHS],
|
|
60
|
+
enableProcessIsolation: true,
|
|
61
|
+
networkPolicy: 'allowlist-strict',
|
|
62
|
+
allowedDomains: [
|
|
63
|
+
'*.openai.com', '*.anthropic.com', 'generativelanguage.googleapis.com',
|
|
64
|
+
'api.telegram.org', 'discord.com', 'gateway.discord.gg',
|
|
65
|
+
'slack.com', '*.slack.com',
|
|
66
|
+
],
|
|
67
|
+
blockPrivateNetworks: true,
|
|
68
|
+
auditLevel: 'standard-signed',
|
|
69
|
+
auditRetentionDays: 90,
|
|
70
|
+
enableDataAccessTracking: true,
|
|
71
|
+
sessionTimeoutMinutes: 480,
|
|
72
|
+
};
|
|
73
|
+
const PRESET_STANDARD = {
|
|
74
|
+
profile: 'standard',
|
|
75
|
+
firewallMode: 'structural',
|
|
76
|
+
immuneMode: 'structural',
|
|
77
|
+
enablePurposeLock: false,
|
|
78
|
+
enableAnomalyDetection: true,
|
|
79
|
+
enablePIIRedaction: true,
|
|
80
|
+
piiCategories: ['credit-card', 'ssn', 'api-key', 'iban'],
|
|
81
|
+
llmRouting: 'cloud-filtered',
|
|
82
|
+
enableSensitiveVault: false,
|
|
83
|
+
credentialPolicy: 'keychain-recommended',
|
|
84
|
+
enableEncryptedConfig: true,
|
|
85
|
+
autoMigrateSecrets: false,
|
|
86
|
+
skillVerification: 'manifest-only',
|
|
87
|
+
blockUnsignedSkills: false,
|
|
88
|
+
enableCapabilityBroker: true,
|
|
89
|
+
execPolicy: 'allowlist',
|
|
90
|
+
enableFSBoundary: true,
|
|
91
|
+
allowedPaths: ['~'],
|
|
92
|
+
deniedPaths: [...ALWAYS_DENIED_PATHS],
|
|
93
|
+
enableProcessIsolation: false,
|
|
94
|
+
networkPolicy: 'allowlist-broad',
|
|
95
|
+
allowedDomains: [],
|
|
96
|
+
blockPrivateNetworks: true,
|
|
97
|
+
auditLevel: 'standard',
|
|
98
|
+
auditRetentionDays: 30,
|
|
99
|
+
enableDataAccessTracking: false,
|
|
100
|
+
sessionTimeoutMinutes: 1440,
|
|
101
|
+
};
|
|
102
|
+
const PRESET_DEVELOPER = {
|
|
103
|
+
profile: 'developer',
|
|
104
|
+
firewallMode: 'log-only',
|
|
105
|
+
immuneMode: 'log-only',
|
|
106
|
+
enablePurposeLock: false,
|
|
107
|
+
enableAnomalyDetection: false,
|
|
108
|
+
enablePIIRedaction: false,
|
|
109
|
+
piiCategories: [],
|
|
110
|
+
llmRouting: 'cloud-direct',
|
|
111
|
+
enableSensitiveVault: false,
|
|
112
|
+
credentialPolicy: 'env-allowed',
|
|
113
|
+
enableEncryptedConfig: false,
|
|
114
|
+
autoMigrateSecrets: false,
|
|
115
|
+
skillVerification: 'none',
|
|
116
|
+
blockUnsignedSkills: false,
|
|
117
|
+
enableCapabilityBroker: false,
|
|
118
|
+
execPolicy: 'unrestricted',
|
|
119
|
+
enableFSBoundary: false,
|
|
120
|
+
allowedPaths: [],
|
|
121
|
+
deniedPaths: [],
|
|
122
|
+
enableProcessIsolation: false,
|
|
123
|
+
networkPolicy: 'unrestricted',
|
|
124
|
+
allowedDomains: [],
|
|
125
|
+
blockPrivateNetworks: false,
|
|
126
|
+
auditLevel: 'basic',
|
|
127
|
+
auditRetentionDays: 7,
|
|
128
|
+
enableDataAccessTracking: false,
|
|
129
|
+
sessionTimeoutMinutes: 0,
|
|
130
|
+
};
|
|
131
|
+
const SECURITY_PRESETS = {
|
|
132
|
+
paranoid: PRESET_PARANOID,
|
|
133
|
+
secure: PRESET_SECURE,
|
|
134
|
+
standard: PRESET_STANDARD,
|
|
135
|
+
developer: PRESET_DEVELOPER,
|
|
136
|
+
};
|
|
137
|
+
export function getSecurityPreset(name) {
|
|
138
|
+
return { ...SECURITY_PRESETS[name] };
|
|
139
|
+
}
|
|
140
|
+
export function withSecurityPreset(name, overrides) {
|
|
141
|
+
return { ...SECURITY_PRESETS[name], ...overrides };
|
|
142
|
+
}
|
|
143
|
+
export function getAvailableSecurityPresets() {
|
|
144
|
+
return Object.keys(SECURITY_PRESETS);
|
|
145
|
+
}
|
|
146
|
+
export function validateSecurityConfig(config) {
|
|
147
|
+
const errors = [];
|
|
148
|
+
if (config.credentialPolicy === 'keychain-required' && !config.enableEncryptedConfig) {
|
|
149
|
+
errors.push('Keychain-required credential policy needs enableEncryptedConfig=true');
|
|
150
|
+
}
|
|
151
|
+
if (config.execPolicy === 'deny-all' && !config.enableFSBoundary) {
|
|
152
|
+
errors.push('deny-all exec policy should have FS boundary enabled');
|
|
153
|
+
}
|
|
154
|
+
if (config.llmRouting === 'local-only' && config.networkPolicy === 'unrestricted') {
|
|
155
|
+
errors.push('local-only LLM routing with unrestricted network is contradictory');
|
|
156
|
+
}
|
|
157
|
+
if (config.blockUnsignedSkills && config.skillVerification === 'none') {
|
|
158
|
+
errors.push('Cannot block unsigned skills with verification=none');
|
|
159
|
+
}
|
|
160
|
+
return errors;
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=SecurityPresets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SecurityPresets.js","sourceRoot":"","sources":["../../src/security/SecurityPresets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export type CapabilityType = 'fs:read' | 'fs:write' | 'fs:delete' | 'exec:command' | 'exec:safe-bin' | 'net:outbound' | 'net:localhost' | 'cred:read' | 'data:pii' | 'data:financial' | 'data:health';
|
|
2
|
+
export interface SkillPermissions {
|
|
3
|
+
required: CapabilityType[];
|
|
4
|
+
optional: CapabilityType[];
|
|
5
|
+
}
|
|
6
|
+
export interface SkillRestrictions {
|
|
7
|
+
maxFileSize?: number;
|
|
8
|
+
allowedExtensions?: string[];
|
|
9
|
+
deniedPaths?: string[];
|
|
10
|
+
allowedDomains?: string[];
|
|
11
|
+
maxExecTimeMs?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface SkillManifestData {
|
|
14
|
+
name: string;
|
|
15
|
+
version: string;
|
|
16
|
+
author: string;
|
|
17
|
+
permissions: SkillPermissions;
|
|
18
|
+
dataAccess: string[];
|
|
19
|
+
restrictions: SkillRestrictions;
|
|
20
|
+
signature?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare class SkillManifest {
|
|
23
|
+
readonly data: Readonly<SkillManifestData>;
|
|
24
|
+
private constructor();
|
|
25
|
+
static parse(raw: Partial<SkillManifestData>): SkillManifest;
|
|
26
|
+
static default(skillName: string): SkillManifest;
|
|
27
|
+
static validate(raw: Partial<SkillManifestData>): string[];
|
|
28
|
+
requires(capability: CapabilityType): boolean;
|
|
29
|
+
optionallyRequests(capability: CapabilityType): boolean;
|
|
30
|
+
canAccessData(classification: string): boolean;
|
|
31
|
+
getAllCapabilities(): CapabilityType[];
|
|
32
|
+
toJSON(): string;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=SkillManifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillManifest.d.ts","sourceRoot":"","sources":["../../src/security/SkillManifest.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,cAAc,GACpB,SAAS,GACT,UAAU,GACV,WAAW,GACX,cAAc,GACd,eAAe,GACf,cAAc,GACd,eAAe,GACf,WAAW,GACX,UAAU,GACV,gBAAgB,GAChB,aAAa,CAAC;AAEpB,MAAM,WAAW,gBAAgB;IAE7B,QAAQ,EAAE,cAAc,EAAE,CAAC;IAE3B,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAE9B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE7B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAE9B,IAAI,EAAE,MAAM,CAAC;IAEb,OAAO,EAAE,MAAM,CAAC;IAEhB,MAAM,EAAE,MAAM,CAAC;IAEf,WAAW,EAAE,gBAAgB,CAAC;IAE9B,UAAU,EAAE,MAAM,EAAE,CAAC;IAErB,YAAY,EAAE,iBAAiB,CAAC;IAEhC,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAoCD,qBAAa,aAAa;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAE3C,OAAO;IAOP,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,aAAa;IAyB5D,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa;IAUhD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,MAAM,EAAE;IAkC1D,QAAQ,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO;IAO7C,kBAAkB,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO;IAOvD,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;IAO9C,kBAAkB,IAAI,cAAc,EAAE;IAOtC,MAAM,IAAI,MAAM;CAGnB"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
const DEFAULT_MANIFEST = {
|
|
2
|
+
name: 'unknown',
|
|
3
|
+
version: '0.0.0',
|
|
4
|
+
author: 'unknown',
|
|
5
|
+
permissions: {
|
|
6
|
+
required: [],
|
|
7
|
+
optional: [],
|
|
8
|
+
},
|
|
9
|
+
dataAccess: ['public'],
|
|
10
|
+
restrictions: {},
|
|
11
|
+
};
|
|
12
|
+
export class SkillManifest {
|
|
13
|
+
data;
|
|
14
|
+
constructor(data) {
|
|
15
|
+
this.data = Object.freeze(data);
|
|
16
|
+
}
|
|
17
|
+
static parse(raw) {
|
|
18
|
+
const errors = SkillManifest.validate(raw);
|
|
19
|
+
if (errors.length > 0) {
|
|
20
|
+
throw new Error(`[SkillManifest] Invalid manifest: ${errors.join('; ')}`);
|
|
21
|
+
}
|
|
22
|
+
const data = {
|
|
23
|
+
name: raw.name ?? DEFAULT_MANIFEST.name,
|
|
24
|
+
version: raw.version ?? DEFAULT_MANIFEST.version,
|
|
25
|
+
author: raw.author ?? DEFAULT_MANIFEST.author,
|
|
26
|
+
permissions: {
|
|
27
|
+
required: raw.permissions?.required ?? [],
|
|
28
|
+
optional: raw.permissions?.optional ?? [],
|
|
29
|
+
},
|
|
30
|
+
dataAccess: raw.dataAccess ?? ['public'],
|
|
31
|
+
restrictions: raw.restrictions ?? {},
|
|
32
|
+
signature: raw.signature,
|
|
33
|
+
};
|
|
34
|
+
return new SkillManifest(data);
|
|
35
|
+
}
|
|
36
|
+
static default(skillName) {
|
|
37
|
+
return new SkillManifest({
|
|
38
|
+
...DEFAULT_MANIFEST,
|
|
39
|
+
name: skillName,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
static validate(raw) {
|
|
43
|
+
const errors = [];
|
|
44
|
+
if (raw.permissions?.required) {
|
|
45
|
+
for (const cap of raw.permissions.required) {
|
|
46
|
+
if (!VALID_CAPABILITIES.has(cap)) {
|
|
47
|
+
errors.push(`Unknown capability: ${cap}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (raw.permissions?.optional) {
|
|
52
|
+
for (const cap of raw.permissions.optional) {
|
|
53
|
+
if (!VALID_CAPABILITIES.has(cap)) {
|
|
54
|
+
errors.push(`Unknown optional capability: ${cap}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (raw.dataAccess) {
|
|
59
|
+
const validClassifications = new Set(['public', 'internal', 'confidential', 'restricted']);
|
|
60
|
+
for (const dc of raw.dataAccess) {
|
|
61
|
+
if (!validClassifications.has(dc)) {
|
|
62
|
+
errors.push(`Unknown data classification: ${dc}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return errors;
|
|
67
|
+
}
|
|
68
|
+
requires(capability) {
|
|
69
|
+
return this.data.permissions.required.includes(capability);
|
|
70
|
+
}
|
|
71
|
+
optionallyRequests(capability) {
|
|
72
|
+
return this.data.permissions.optional.includes(capability);
|
|
73
|
+
}
|
|
74
|
+
canAccessData(classification) {
|
|
75
|
+
return this.data.dataAccess.includes(classification);
|
|
76
|
+
}
|
|
77
|
+
getAllCapabilities() {
|
|
78
|
+
return [...this.data.permissions.required, ...this.data.permissions.optional];
|
|
79
|
+
}
|
|
80
|
+
toJSON() {
|
|
81
|
+
return JSON.stringify(this.data);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
const VALID_CAPABILITIES = new Set([
|
|
85
|
+
'fs:read', 'fs:write', 'fs:delete',
|
|
86
|
+
'exec:command', 'exec:safe-bin',
|
|
87
|
+
'net:outbound', 'net:localhost',
|
|
88
|
+
'cred:read',
|
|
89
|
+
'data:pii', 'data:financial', 'data:health',
|
|
90
|
+
]);
|
|
91
|
+
//# sourceMappingURL=SkillManifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillManifest.js","sourceRoot":"","sources":["../../src/security/SkillManifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface SkillSignature {
|
|
2
|
+
signature: string;
|
|
3
|
+
contentHash: string;
|
|
4
|
+
publicKey: string;
|
|
5
|
+
signedAt: string;
|
|
6
|
+
}
|
|
7
|
+
export interface KeyPair {
|
|
8
|
+
publicKey: string;
|
|
9
|
+
privateKey: string;
|
|
10
|
+
}
|
|
11
|
+
export declare class SkillSigner {
|
|
12
|
+
private trustedKeys;
|
|
13
|
+
constructor(trustedKeys?: Record<string, string>);
|
|
14
|
+
sign(code: string, manifestJSON: string, version: string, privateKeyHex: string): SkillSignature;
|
|
15
|
+
verify(code: string, manifestJSON: string, version: string, sig: SkillSignature, publicKeyHex?: string): boolean;
|
|
16
|
+
isTrustedPublisher(sig: SkillSignature): boolean;
|
|
17
|
+
addTrustedKey(publisher: string, publicKeyHex: string): void;
|
|
18
|
+
static generateKeyPair(): KeyPair;
|
|
19
|
+
private computeContentHash;
|
|
20
|
+
private derivePublicKey;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=SkillSigner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillSigner.d.ts","sourceRoot":"","sources":["../../src/security/SkillSigner.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,cAAc;IAE3B,SAAS,EAAE,MAAM,CAAC;IAElB,WAAW,EAAE,MAAM,CAAC;IAEpB,SAAS,EAAE,MAAM,CAAC;IAElB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACtB;AAqBD,qBAAa,WAAW;IAEpB,OAAO,CAAC,WAAW,CAAkC;gBAEzC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAWhD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,cAAc;IAwBhG,MAAM,CACF,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,cAAc,EACnB,YAAY,CAAC,EAAE,MAAM,GACtB,OAAO;IAyBV,kBAAkB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO;IAUhD,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAO5D,MAAM,CAAC,eAAe,IAAI,OAAO;IAcjC,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,eAAe;CAS1B"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { createHash, createPrivateKey, sign, verify, generateKeyPairSync } from 'node:crypto';
|
|
2
|
+
export class SkillSigner {
|
|
3
|
+
trustedKeys = new Map();
|
|
4
|
+
constructor(trustedKeys) {
|
|
5
|
+
if (trustedKeys) {
|
|
6
|
+
for (const [publisher, key] of Object.entries(trustedKeys)) {
|
|
7
|
+
this.trustedKeys.set(publisher, key);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
sign(code, manifestJSON, version, privateKeyHex) {
|
|
12
|
+
const contentHash = this.computeContentHash(code, manifestJSON, version);
|
|
13
|
+
const privateKey = Buffer.from(privateKeyHex, 'hex');
|
|
14
|
+
const signature = sign(null, Buffer.from(contentHash, 'hex'), {
|
|
15
|
+
key: privateKey,
|
|
16
|
+
format: 'der',
|
|
17
|
+
type: 'pkcs8',
|
|
18
|
+
});
|
|
19
|
+
const publicKeyDer = this.derivePublicKey(privateKey);
|
|
20
|
+
return {
|
|
21
|
+
signature: signature.toString('hex'),
|
|
22
|
+
contentHash,
|
|
23
|
+
publicKey: publicKeyDer,
|
|
24
|
+
signedAt: new Date().toISOString(),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
verify(code, manifestJSON, version, sig, publicKeyHex) {
|
|
28
|
+
const expectedHash = this.computeContentHash(code, manifestJSON, version);
|
|
29
|
+
if (sig.contentHash !== expectedHash) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
const pubKey = publicKeyHex ?? sig.publicKey;
|
|
33
|
+
try {
|
|
34
|
+
return verify(null, Buffer.from(sig.contentHash, 'hex'), { key: Buffer.from(pubKey, 'hex'), format: 'der', type: 'spki' }, Buffer.from(sig.signature, 'hex'));
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
isTrustedPublisher(sig) {
|
|
41
|
+
for (const [, key] of this.trustedKeys) {
|
|
42
|
+
if (key === sig.publicKey)
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
addTrustedKey(publisher, publicKeyHex) {
|
|
48
|
+
this.trustedKeys.set(publisher, publicKeyHex);
|
|
49
|
+
}
|
|
50
|
+
static generateKeyPair() {
|
|
51
|
+
const { publicKey, privateKey } = generateKeyPairSync('ed25519', {
|
|
52
|
+
publicKeyEncoding: { type: 'spki', format: 'der' },
|
|
53
|
+
privateKeyEncoding: { type: 'pkcs8', format: 'der' },
|
|
54
|
+
});
|
|
55
|
+
return {
|
|
56
|
+
publicKey: publicKey.toString('hex'),
|
|
57
|
+
privateKey: privateKey.toString('hex'),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
computeContentHash(code, manifestJSON, version) {
|
|
61
|
+
return createHash('sha256')
|
|
62
|
+
.update(code)
|
|
63
|
+
.update('\0')
|
|
64
|
+
.update(manifestJSON)
|
|
65
|
+
.update('\0')
|
|
66
|
+
.update(version)
|
|
67
|
+
.digest('hex');
|
|
68
|
+
}
|
|
69
|
+
derivePublicKey(privateKeyDer) {
|
|
70
|
+
try {
|
|
71
|
+
const keyObj = createPrivateKey({ key: privateKeyDer, format: 'der', type: 'pkcs8' });
|
|
72
|
+
const pubDer = keyObj.export({ type: 'spki', format: 'der' });
|
|
73
|
+
return pubDer.toString('hex');
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return '';
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=SkillSigner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillSigner.js","sourceRoot":"","sources":["../../src/security/SkillSigner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { KeychainAdapter } from './KeychainAdapter.js';
|
|
2
|
+
import type { SecurityEvent } from './SecurityEventBus.js';
|
|
3
|
+
export type AuditEventType = SecurityEvent['type'] | 'audit:initialized' | 'audit:verified' | 'audit:rotated';
|
|
4
|
+
export interface AuditEntry {
|
|
5
|
+
id: string;
|
|
6
|
+
timestamp: string;
|
|
7
|
+
type: AuditEventType;
|
|
8
|
+
severity: 'info' | 'warning' | 'high' | 'critical';
|
|
9
|
+
layer: number;
|
|
10
|
+
decision: 'allow' | 'deny' | 'info';
|
|
11
|
+
actor: {
|
|
12
|
+
userId?: string;
|
|
13
|
+
skillId?: string;
|
|
14
|
+
channel?: string;
|
|
15
|
+
};
|
|
16
|
+
resource: {
|
|
17
|
+
type: string;
|
|
18
|
+
id: string;
|
|
19
|
+
detail?: string;
|
|
20
|
+
};
|
|
21
|
+
evidence?: string;
|
|
22
|
+
previousHash: string;
|
|
23
|
+
hash: string;
|
|
24
|
+
}
|
|
25
|
+
export interface VerificationResult {
|
|
26
|
+
valid: boolean;
|
|
27
|
+
totalEntries: number;
|
|
28
|
+
brokenAt?: number;
|
|
29
|
+
brokenEntry?: AuditEntry;
|
|
30
|
+
rootHashMatch: boolean;
|
|
31
|
+
}
|
|
32
|
+
export declare class TamperProofAuditLog {
|
|
33
|
+
private alk;
|
|
34
|
+
private keychain;
|
|
35
|
+
private currentHash;
|
|
36
|
+
private auditDir;
|
|
37
|
+
private entryCount;
|
|
38
|
+
private initialized;
|
|
39
|
+
constructor(auditLogKey: Buffer, keychain: KeychainAdapter, auditDir?: string);
|
|
40
|
+
initialize(): Promise<void>;
|
|
41
|
+
appendFromEvent(event: SecurityEvent): Promise<void>;
|
|
42
|
+
append(entry: Omit<AuditEntry, 'id' | 'timestamp' | 'previousHash' | 'hash'>): Promise<AuditEntry>;
|
|
43
|
+
verify(): Promise<VerificationResult>;
|
|
44
|
+
readEntries(date?: Date): Promise<AuditEntry[]>;
|
|
45
|
+
getEntryCount(): number;
|
|
46
|
+
flush(): Promise<void>;
|
|
47
|
+
private computeHMAC;
|
|
48
|
+
private computeEntryHash;
|
|
49
|
+
private encryptEntry;
|
|
50
|
+
private decryptEntry;
|
|
51
|
+
private todayFilePath;
|
|
52
|
+
private filePathForDate;
|
|
53
|
+
private readEntriesFromFile;
|
|
54
|
+
private readAllEntries;
|
|
55
|
+
private countEntries;
|
|
56
|
+
private ensureInitialized;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=TamperProofAuditLog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TamperProofAuditLog.d.ts","sourceRoot":"","sources":["../../src/security/TamperProofAuditLog.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAS3D,MAAM,MAAM,cAAc,GACpB,aAAa,CAAC,MAAM,CAAC,GACrB,mBAAmB,GACnB,gBAAgB,GAChB,eAAe,CAAC;AAEtB,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACpC,KAAK,EAAE;QACH,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,QAAQ,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;CAC1B;AAkBD,qBAAa,mBAAmB;IAC5B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,CAAC,EAAE,MAAM;IAYvE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAiC3B,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAepD,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,WAAW,GAAG,cAAc,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAkClG,MAAM,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAuDrC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAQrD,aAAa,IAAI,MAAM;IAOjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,eAAe;YAKT,mBAAmB;YAUnB,cAAc;YAed,YAAY;IAc1B,OAAO,CAAC,iBAAiB;CAK5B"}
|