claude-flow-novice 2.2.4 ā 2.2.5
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/package.json +9 -8
- package/scripts/.claude-flow/metrics/agent-metrics.json +1 -0
- package/scripts/.claude-flow/metrics/performance.json +9 -0
- package/scripts/.claude-flow/metrics/task-metrics.json +10 -0
- package/scripts/CLEANUP_OPTIMIZATION_REPORT.json +312 -0
- package/scripts/CLEANUP_PERFORMANCE_OPTIMIZATION.md +387 -0
- package/scripts/CLEANUP_QUICK_START.md +268 -0
- package/scripts/CLEANUP_TEST_RESULTS.md +205 -0
- package/scripts/README.md +339 -0
- package/scripts/ace-query.sh +384 -0
- package/scripts/agent-token-analysis.js +430 -0
- package/scripts/auto-setup.js +332 -0
- package/scripts/build/README.md +167 -0
- package/scripts/build/build-config.js +27 -0
- package/scripts/build/build-prompt-copier.sh +30 -0
- package/scripts/build/performance-monitor.js +869 -0
- package/scripts/build/prepare-publish.js +150 -0
- package/scripts/build/typescript-fixer.js +621 -0
- package/scripts/build/unified-builder.sh +428 -0
- package/scripts/build/update-bin-version.js +32 -0
- package/scripts/build/validate-agents.js +238 -0
- package/scripts/build-index.js +43 -0
- package/scripts/build-orchestrator.js +320 -0
- package/scripts/check-routing-stats.cjs +122 -0
- package/scripts/ci-validation.js +375 -0
- package/scripts/cleanup-blocking-coordination.sh +420 -0
- package/scripts/cleanup-idle-sessions.sh +59 -0
- package/scripts/collect-build-metrics.js +65 -0
- package/scripts/demo/README.md +79 -0
- package/scripts/demo/autoscaling-demo-simplified.js +963 -0
- package/scripts/demo/comprehensive-dashboard-test.js +693 -0
- package/scripts/demo/confidence-log.js +87 -0
- package/scripts/demo/confidence-report.js +82 -0
- package/scripts/demo/demo-multi-swarm-coordination.js +325 -0
- package/scripts/demo/demo-production-deployment.js +399 -0
- package/scripts/demo/demo-visualization-system.js +149 -0
- package/scripts/demo/performance-analysis.cjs +71 -0
- package/scripts/demo/performance-analysis.js +71 -0
- package/scripts/demo/test-autoscaling-demo.js +314 -0
- package/scripts/dependency-optimizer.js +349 -0
- package/scripts/dependency-security-assessment.js +331 -0
- package/scripts/deploy-sdk.sh +176 -0
- package/scripts/deployment-readiness-report.json +179 -0
- package/scripts/dev/README.md +264 -0
- package/scripts/dev/claude-flow-wrapper.sh +35 -0
- package/scripts/dev/claude-monitor.py +419 -0
- package/scripts/dev/claude-sparc.sh +562 -0
- package/scripts/dev/claude-wrapper.sh +17 -0
- package/scripts/dev/demo-phase3-compliance.js +172 -0
- package/scripts/dev/demo-task-system.ts +224 -0
- package/scripts/dev/deployment-validator.js +315 -0
- package/scripts/dev/spawn-claude-terminal.sh +32 -0
- package/scripts/dev/start-portal.sh +506 -0
- package/scripts/dev/start-web-ui.js +15 -0
- package/scripts/dev/stop-portal.sh +311 -0
- package/scripts/dev/validate-examples.ts +288 -0
- package/scripts/dev/validate-phase2.cjs +451 -0
- package/scripts/dev/validate-phase2.js +785 -0
- package/scripts/dev/validate-phase3.cjs +208 -0
- package/scripts/dev/validate-security-remediation.js +1 -0
- package/scripts/ecosystem.config.cjs +90 -0
- package/scripts/fix-js-extensions.js +167 -0
- package/scripts/generate-basic-types.js +73 -0
- package/scripts/generate-changelog.js +318 -0
- package/scripts/git-hooks/pre-commit.sh +143 -0
- package/scripts/health-checks.js +634 -0
- package/scripts/hook-wrapper.sh +54 -0
- package/scripts/install/README.md +375 -0
- package/scripts/install/REDIS_SETUP_VALIDATION.json +245 -0
- package/scripts/install/check-prerequisites.js +303 -0
- package/scripts/install/config-wizard.js +606 -0
- package/scripts/install/dependency-checker.js +385 -0
- package/scripts/install/health-check.js +765 -0
- package/scripts/install/install.js +256 -0
- package/scripts/install/installation-benchmark.js +461 -0
- package/scripts/install/quick-install.js +720 -0
- package/scripts/install/quick-start-wizard.js +295 -0
- package/scripts/install/redis-cli.js +289 -0
- package/scripts/install/redis-install-guides.md +407 -0
- package/scripts/install/redis-setup.js +559 -0
- package/scripts/install/redis-test.js +278 -0
- package/scripts/install/service-manager.js +672 -0
- package/scripts/install/setup.js +832 -0
- package/scripts/install/uninstall.js +526 -0
- package/scripts/install/update.js +461 -0
- package/scripts/install-pre-commit-hook.sh +127 -0
- package/scripts/legacy/README.md +272 -0
- package/scripts/legacy/batch-fix-ts.sh +54 -0
- package/scripts/legacy/build-migration.sh +105 -0
- package/scripts/legacy/build-monitor.js +209 -0
- package/scripts/legacy/build-with-filter.sh +84 -0
- package/scripts/legacy/build-workaround.sh +71 -0
- package/scripts/legacy/fix-ts-advanced.js +358 -0
- package/scripts/legacy/fix-ts-final.sh +50 -0
- package/scripts/legacy/fix-ts-targeted.sh +49 -0
- package/scripts/legacy/fix-typescript-errors.js +305 -0
- package/scripts/legacy/force-build.sh +63 -0
- package/scripts/legacy/optimize-performance.js +400 -0
- package/scripts/legacy/performance-monitor.js +263 -0
- package/scripts/legacy/performance-monitoring.js +532 -0
- package/scripts/legacy/performance-test-runner.js +645 -0
- package/scripts/legacy/quick-fix-ts.js +281 -0
- package/scripts/legacy/safe-build.sh +63 -0
- package/scripts/memory-monitor-coordinator.js +322 -0
- package/scripts/migrate-to-sdk.sh +520 -0
- package/scripts/migration/QUICK-START.md +189 -0
- package/scripts/migration/QUICK-START.md.backup-1760135091363 +189 -0
- package/scripts/migration/README.md +464 -0
- package/scripts/migration/TASK-1.3.2-COMPLETION-REPORT.md +500 -0
- package/scripts/migration/TASK-1.3.2-COMPLETION-REPORT.md.backup-1760135091348 +500 -0
- package/scripts/migration/UPDATE-PATHS-README.md +464 -0
- package/scripts/migration/UPDATE-PATHS-README.md.backup-1760135091337 +464 -0
- package/scripts/migration/example-patterns.json +19 -0
- package/scripts/migration/install-arm64.js +78 -0
- package/scripts/migration/install.js +83 -0
- package/scripts/migration/migrate-hooks.js +173 -0
- package/scripts/migration/migration-examples.ts +318 -0
- package/scripts/migration/reorganize-workspace.js +504 -0
- package/scripts/migration/test-update-paths.js +359 -0
- package/scripts/migration/update-paths.js +664 -0
- package/scripts/migration/validate-migration.js +647 -0
- package/scripts/monitor-loop.sh +65 -0
- package/scripts/monitor-memory.sh +47 -0
- package/scripts/monitor-migration.js +339 -0
- package/scripts/monitor.py +43 -0
- package/scripts/monitoring/README.md +178 -0
- package/scripts/monitoring/alert-monitor.sh +220 -0
- package/scripts/monitoring/analyze-resources.sh +199 -0
- package/scripts/monitoring/dashboards/rate-limiting-dashboard.json +211 -0
- package/scripts/monitoring/dynamic-monitor.sh +85 -0
- package/scripts/monitoring/launch-stability-test.sh +184 -0
- package/scripts/monitoring/monitor-test.sh +93 -0
- package/scripts/monitoring/pre-test-validation.sh +208 -0
- package/scripts/monitoring/quick-test-alerting.sh +118 -0
- package/scripts/monitoring/quick-test-rate-limiting.sh +206 -0
- package/scripts/monitoring/rate-limiting-monitor.sh +380 -0
- package/scripts/monitoring/resource-monitor.sh +126 -0
- package/scripts/monitoring/stability-monitor.js +429 -0
- package/scripts/monitoring/test-monitor-quick.sh +54 -0
- package/scripts/monitoring/view-alerts.sh +307 -0
- package/scripts/npm-metrics-collector.js +482 -0
- package/scripts/npm-package-validation.cjs +299 -0
- package/scripts/optimization/build-optimizer.js +438 -0
- package/scripts/optimization/config-validator.js +761 -0
- package/scripts/optimization/test-optimization.js +432 -0
- package/scripts/optimization/unified-activation.js +839 -0
- package/scripts/optimize-package-swarm.js +54 -0
- package/scripts/performance/ACTIVATION_COMMANDS.md +292 -0
- package/scripts/performance/sqlite-enhanced-activation.sh +583 -0
- package/scripts/performance/test-enhanced-backend.sh +504 -0
- package/scripts/performance-monitor.js +644 -0
- package/scripts/performance-test-runner.js +698 -0
- package/scripts/post-deployment-monitoring.js +350 -0
- package/scripts/post-edit-pipeline.js +2091 -0
- package/scripts/post-install-claude-md.js +78 -0
- package/scripts/postinstall.js +79 -0
- package/scripts/pre-publish-validation.cjs +212 -0
- package/scripts/pre-publish-validation.js +429 -0
- package/scripts/redis-lua/cleanup-blocking-coordination.lua +198 -0
- package/scripts/release-announcement.js +425 -0
- package/scripts/release-notification.js +248 -0
- package/scripts/release-rollback.js +376 -0
- package/scripts/release-validation.js +460 -0
- package/scripts/rollback-sdk.sh +66 -0
- package/scripts/run-production-validation.ts +590 -0
- package/scripts/run-stability-validation.sh +687 -0
- package/scripts/security/README.md +339 -0
- package/scripts/security/deployment-validation.cjs +279 -0
- package/scripts/security/envelope-encryption-confidence-report.cjs +422 -0
- package/scripts/security/install-git-hooks.sh +132 -0
- package/scripts/security/install-git-secrets.sh +295 -0
- package/scripts/security/rotate-api-keys.js +469 -0
- package/scripts/security/ruv-swarm-safe.js +74 -0
- package/scripts/security/security-audit.cjs +538 -0
- package/scripts/security/setup-redis-auth.sh +397 -0
- package/scripts/security/validate-envelope-encryption.cjs +340 -0
- package/scripts/security-scan.js +492 -0
- package/scripts/src/web/frontend/.claude-flow/metrics/agent-metrics.json +1 -0
- package/scripts/src/web/frontend/.claude-flow/metrics/performance.json +9 -0
- package/scripts/src/web/frontend/.claude-flow/metrics/task-metrics.json +10 -0
- package/scripts/switch-api.sh +158 -0
- package/scripts/sync-agents.js +290 -0
- package/scripts/test/50-agent-test.js +625 -0
- package/scripts/test/NEW_STABILITY_TEST_GUIDE.md +407 -0
- package/scripts/test/README.md +236 -0
- package/scripts/test/STABILITY_TEST_EXAMPLE.md +347 -0
- package/scripts/test/STABILITY_TEST_README.md +480 -0
- package/scripts/test/agent-worker.js +309 -0
- package/scripts/test/ai-coordination-test.js +650 -0
- package/scripts/test/ai-mesh-coordination-test.js +416 -0
- package/scripts/test/check-links.ts +274 -0
- package/scripts/test/check-performance-regression.ts +168 -0
- package/scripts/test/cli-agent-coordination-test.js +313 -0
- package/scripts/test/coordinator-multilingual-test.js +396 -0
- package/scripts/test/coordinator-transparency-demo.js +585 -0
- package/scripts/test/coverage-report.ts +692 -0
- package/scripts/test/generate-swarm-tests.js +633 -0
- package/scripts/test/integration-test-validation.cjs +253 -0
- package/scripts/test/load-test-swarm.js +576 -0
- package/scripts/test/mesh-coordination-zero-overlap-test.js +740 -0
- package/scripts/test/multilingual-hello-world-test.js +390 -0
- package/scripts/test/quick-multilingual-demo.js +464 -0
- package/scripts/test/real-agent-test.js +312 -0
- package/scripts/test/run-phase3-compliance-tests.js +427 -0
- package/scripts/test/run-stability-test-examples.sh +292 -0
- package/scripts/test/stability-results/stability-metrics.jsonl +83 -0
- package/scripts/test/stability-results/stability-test-report.json +128 -0
- package/scripts/test/stability-results/stability-test.log +1827 -0
- package/scripts/test/stability-test-50-agents.js +734 -0
- package/scripts/test/test-batch-tasks.ts +29 -0
- package/scripts/test/test-byzantine-resolution.js +246 -0
- package/scripts/test/test-claude-spawn-options.sh +63 -0
- package/scripts/test/test-cli-wizard.js +331 -0
- package/scripts/test/test-comprehensive.js +401 -0
- package/scripts/test/test-coordination-features.ts +238 -0
- package/scripts/test/test-fallback-systems.js +276 -0
- package/scripts/test/test-init-command.ts +302 -0
- package/scripts/test/test-mcp.ts +251 -0
- package/scripts/test/test-runner.ts +568 -0
- package/scripts/test/test-swarm-integration.sh +92 -0
- package/scripts/test/test-swarm.ts +142 -0
- package/scripts/test/validation-summary.ts +408 -0
- package/scripts/test-cleanup-performance.sh +416 -0
- package/scripts/test-dashboard-auth.cjs +203 -0
- package/scripts/test-docker-deployment.sh +207 -0
- package/scripts/test-npm-package.cjs +167 -0
- package/scripts/test-provider-routing.cjs +226 -0
- package/scripts/test-routing-telemetry.cjs +147 -0
- package/scripts/test-runner.cjs +154 -0
- package/scripts/test-zai-10k.cjs +81 -0
- package/scripts/test-zai-api.cjs +191 -0
- package/scripts/test-zai-diagnostic.cjs +151 -0
- package/scripts/test-zai-final.cjs +128 -0
- package/scripts/test-zai-with-env.cjs +85 -0
- package/scripts/utils/README.md +261 -0
- package/scripts/utils/clean-build-artifacts.sh +94 -0
- package/scripts/utils/cleanup-root.sh +69 -0
- package/scripts/utils/fix-cliffy-imports.js +307 -0
- package/scripts/utils/fix-duplicate-imports.js +114 -0
- package/scripts/utils/fix-error-handling.cjs +70 -0
- package/scripts/utils/fix-import-paths.js +104 -0
- package/scripts/utils/fix-imports.js +116 -0
- package/scripts/utils/fix-shebang.js +78 -0
- package/scripts/utils/fix-test-modules.js +27 -0
- package/scripts/utils/fix-timezone-issue-246.js +200 -0
- package/scripts/utils/fix-ts-comprehensive.py +182 -0
- package/scripts/utils/fix-ts-targeted-batch.js +250 -0
- package/scripts/utils/remove-benchmark-conflicts.sh +140 -0
- package/scripts/utils/simple-test-fixer.js +190 -0
- package/scripts/utils/validate-metrics-structure.cjs +144 -0
- package/scripts/validate-agent-hooks.js +506 -0
- package/scripts/validate-changelog.js +241 -0
- package/scripts/validate-coordination-cli.js +69 -0
- package/scripts/validate-coordination-toggle-integration.cjs +501 -0
- package/scripts/validate-docker-infrastructure.sh +502 -0
- package/scripts/validate-entry-points.js +300 -0
- package/scripts/validate-stage3-performance.ts +377 -0
- package/scripts/validate-template-bundling.js +180 -0
- package/scripts/validation/README.md +33 -0
- package/scripts/validation/acl-security-validation.cjs +214 -0
- package/scripts/validation/acl-security-validation.js +402 -0
- package/scripts/validation/byzantine-verification.js +407 -0
- package/scripts/validation/final-phase-2-consensus.cjs +219 -0
- package/scripts/validation/final-security-validation.js +791 -0
- package/scripts/validation/final-wasm-validation.cjs +840 -0
- package/scripts/validation/integration-test-analysis.js +105 -0
- package/scripts/validation/phase-0-comprehensive-validation.js +474 -0
- package/scripts/validation/phase-0-consensus-report.js +139 -0
- package/scripts/validation/phase-0-final-report.js +112 -0
- package/scripts/validation/phase-0-redis-consensus-report.js +129 -0
- package/scripts/validation/phase-0-validation-improved.js +490 -0
- package/scripts/validation/phase-0-validation-test.js +65 -0
- package/scripts/validation/phase-1-consensus-report.cjs +342 -0
- package/scripts/validation/phase-1-consensus-validation.cjs +551 -0
- package/scripts/validation/phase-1-consensus-validation.js +551 -0
- package/scripts/validation/phase-2-consensus-report.cjs +186 -0
- package/scripts/validation/phase-2-validation.cjs +171 -0
- package/scripts/validation/phase-2-validation.js +171 -0
- package/scripts/validation/phase-4-consensus-report.js +181 -0
- package/scripts/validation/phase-4-final-validation.js +351 -0
- package/scripts/validation/phase-5-consensus-report.cjs +113 -0
- package/scripts/validation/phase-5-consensus-report.js +113 -0
- package/scripts/validation/security-analysis.js +49 -0
- package/scripts/validation/security-validation.js +492 -0
- package/scripts/validation/simple-security-validation.js +464 -0
- package/scripts/verify-installation.js +112 -0
- package/scripts/verify-mcp-server.js +86 -0
- package/scripts/verify-sdk-phase1.cjs +293 -0
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ACL Security Validation Script
|
|
3
|
+
* Phase 1 Foundation Infrastructure Security Validation
|
|
4
|
+
*
|
|
5
|
+
* Validates the 6-level ACL system with project-level isolation:
|
|
6
|
+
* 1. private - Only accessible by the specific agent
|
|
7
|
+
* 2. team - Accessible by agents in the same team
|
|
8
|
+
* 3. swarm - Accessible by all agents in the swarm
|
|
9
|
+
* 4. project - Accessible by agents in the same project (CRITICAL)
|
|
10
|
+
* 5. public - Accessible by all authenticated agents
|
|
11
|
+
* 6. system - System-level access (administrative)
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const SwarmMemoryManagerModule = await import('./src/sqlite/SwarmMemoryManager.js');
|
|
15
|
+
const SwarmMemoryManager = SwarmMemoryManagerModule.default || SwarmMemoryManagerModule.SwarmMemoryManager;
|
|
16
|
+
import fs from 'fs';
|
|
17
|
+
import path from 'path';
|
|
18
|
+
import { fileURLToPath } from 'url';
|
|
19
|
+
|
|
20
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
21
|
+
const __dirname = path.dirname(__filename);
|
|
22
|
+
|
|
23
|
+
class ACLSecurityValidator {
|
|
24
|
+
constructor() {
|
|
25
|
+
this.testResults = [];
|
|
26
|
+
this.memoryManager = null;
|
|
27
|
+
this.testDbPath = path.join(__dirname, 'test-acl-validation.db');
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
async setup() {
|
|
31
|
+
// Clean up any existing test database
|
|
32
|
+
if (fs.existsSync(this.testDbPath)) {
|
|
33
|
+
fs.unlinkSync(this.testDbPath);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Initialize memory manager with test database
|
|
37
|
+
this.memoryManager = new SwarmMemoryManager({
|
|
38
|
+
dbPath: this.testDbPath,
|
|
39
|
+
encryptionKey: Buffer.from('test-encryption-key-32-bytes-long', 'utf8'),
|
|
40
|
+
aclCacheTimeout: 1000 // Short cache for testing
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
await this.memoryManager.initialize();
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
async cleanup() {
|
|
47
|
+
if (this.memoryManager) {
|
|
48
|
+
await this.memoryManager.close();
|
|
49
|
+
}
|
|
50
|
+
if (fs.existsSync(this.testDbPath)) {
|
|
51
|
+
fs.unlinkSync(this.testDbPath);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
logResult(testName, passed, details = '') {
|
|
56
|
+
const result = {
|
|
57
|
+
test: testName,
|
|
58
|
+
passed,
|
|
59
|
+
details,
|
|
60
|
+
timestamp: new Date().toISOString()
|
|
61
|
+
};
|
|
62
|
+
this.testResults.push(result);
|
|
63
|
+
|
|
64
|
+
const status = passed ? 'ā
PASS' : 'ā FAIL';
|
|
65
|
+
console.log(`${status}: ${testName}`);
|
|
66
|
+
if (details) {
|
|
67
|
+
console.log(` ${details}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
async testPrivateLevelACL() {
|
|
72
|
+
const agent1 = 'agent-private-1';
|
|
73
|
+
const agent2 = 'agent-private-2';
|
|
74
|
+
const secretData = { secret: 'confidential-data' };
|
|
75
|
+
|
|
76
|
+
try {
|
|
77
|
+
// Store private data
|
|
78
|
+
await this.memoryManager.set('private-key', secretData, {
|
|
79
|
+
agentId: agent1,
|
|
80
|
+
aclLevel: 1,
|
|
81
|
+
namespace: 'test'
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
// Owner should access
|
|
85
|
+
const ownerAccess = await this.memoryManager.get('private-key', {
|
|
86
|
+
agentId: agent1,
|
|
87
|
+
namespace: 'test'
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
// Other agent should be denied
|
|
91
|
+
const otherAccess = await this.memoryManager.get('private-key', {
|
|
92
|
+
agentId: agent2,
|
|
93
|
+
namespace: 'test'
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
const passed = JSON.stringify(ownerAccess) === JSON.stringify(secretData) &&
|
|
97
|
+
otherAccess === null;
|
|
98
|
+
|
|
99
|
+
this.logResult('Private Level (1) ACL', passed,
|
|
100
|
+
passed ? 'Private data properly isolated' : 'Private data leak detected');
|
|
101
|
+
} catch (error) {
|
|
102
|
+
this.logResult('Private Level (1) ACL', false, `Error: ${error.message}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
async testProjectLevelACL() {
|
|
107
|
+
const projectId1 = 'project-alpha';
|
|
108
|
+
const projectId2 = 'project-beta';
|
|
109
|
+
const agent1 = 'agent-project-1';
|
|
110
|
+
const agent2 = 'agent-project-2';
|
|
111
|
+
const agent3 = 'agent-project-3';
|
|
112
|
+
|
|
113
|
+
const projectData1 = { confidential: 'project-alpha-secret' };
|
|
114
|
+
const projectData2 = { confidential: 'project-beta-secret' };
|
|
115
|
+
|
|
116
|
+
try {
|
|
117
|
+
// Store project-specific data
|
|
118
|
+
await this.memoryManager.set('project-key-1', projectData1, {
|
|
119
|
+
agentId: agent1,
|
|
120
|
+
projectId: projectId1,
|
|
121
|
+
aclLevel: 4, // Project level
|
|
122
|
+
namespace: 'test'
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
await this.memoryManager.set('project-key-2', projectData2, {
|
|
126
|
+
agentId: agent2,
|
|
127
|
+
projectId: projectId2,
|
|
128
|
+
aclLevel: 4, // Project level
|
|
129
|
+
namespace: 'test'
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
// Same project agent should access data from their project
|
|
133
|
+
const sameProjectAccess = await this.memoryManager.get('project-key-1', {
|
|
134
|
+
agentId: agent3,
|
|
135
|
+
projectId: projectId1,
|
|
136
|
+
namespace: 'test'
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
// Different project agent should be DENIED access - SECURITY CRITICAL
|
|
140
|
+
const crossProjectAccess = await this.memoryManager.get('project-key-1', {
|
|
141
|
+
agentId: agent2,
|
|
142
|
+
projectId: projectId2,
|
|
143
|
+
namespace: 'test'
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
const passed = JSON.stringify(sameProjectAccess) === JSON.stringify(projectData1) &&
|
|
147
|
+
crossProjectAccess === null;
|
|
148
|
+
|
|
149
|
+
this.logResult('Project Level (4) ACL - CRITICAL SECURITY', passed,
|
|
150
|
+
passed ? 'Project isolation working correctly' : 'CROSS-PROJECT DATA LEAK DETECTED');
|
|
151
|
+
} catch (error) {
|
|
152
|
+
this.logResult('Project Level (4) ACL - CRITICAL SECURITY', false, `Error: ${error.message}`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
async testSystemLevelACL() {
|
|
157
|
+
const systemAgent = 'system-agent';
|
|
158
|
+
const regularAgent = 'regular-agent';
|
|
159
|
+
const systemData = { config: 'system-critical-config' };
|
|
160
|
+
|
|
161
|
+
try {
|
|
162
|
+
// Store system data
|
|
163
|
+
await this.memoryManager.set('system-key', systemData, {
|
|
164
|
+
agentId: systemAgent,
|
|
165
|
+
aclLevel: 6,
|
|
166
|
+
namespace: 'test'
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
// System agent should access
|
|
170
|
+
const systemAccess = await this.memoryManager.get('system-key', {
|
|
171
|
+
agentId: systemAgent,
|
|
172
|
+
namespace: 'test'
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
// Regular agent should be denied
|
|
176
|
+
const regularAccess = await this.memoryManager.get('system-key', {
|
|
177
|
+
agentId: regularAgent,
|
|
178
|
+
namespace: 'test'
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
const passed = JSON.stringify(systemAccess) === JSON.stringify(systemData) &&
|
|
182
|
+
regularAccess === null;
|
|
183
|
+
|
|
184
|
+
this.logResult('System Level (6) ACL', passed,
|
|
185
|
+
passed ? 'System access properly restricted' : 'System access breach detected');
|
|
186
|
+
} catch (error) {
|
|
187
|
+
this.logResult('System Level (6) ACL', false, `Error: ${error.message}`);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
async testProjectIsolationEdgeCases() {
|
|
192
|
+
const projectId1 = 'edge-project-1';
|
|
193
|
+
const projectId2 = 'edge-project-2';
|
|
194
|
+
const agent1 = 'edge-agent-1';
|
|
195
|
+
const agent2 = 'edge-agent-2';
|
|
196
|
+
|
|
197
|
+
const sensitiveData = { api_keys: 'critical-api-credentials' };
|
|
198
|
+
|
|
199
|
+
try {
|
|
200
|
+
// Store sensitive project data
|
|
201
|
+
await this.memoryManager.set('credentials', sensitiveData, {
|
|
202
|
+
agentId: agent1,
|
|
203
|
+
projectId: projectId1,
|
|
204
|
+
aclLevel: 4,
|
|
205
|
+
namespace: 'secure'
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
// Attempt cross-project access
|
|
209
|
+
const crossProjectAccess = await this.memoryManager.get('credentials', {
|
|
210
|
+
agentId: agent2,
|
|
211
|
+
projectId: projectId2,
|
|
212
|
+
namespace: 'secure'
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
// Attempt with no project context
|
|
216
|
+
const noProjectAccess = await this.memoryManager.get('credentials', {
|
|
217
|
+
agentId: agent2,
|
|
218
|
+
namespace: 'secure'
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
// Attempt with manipulated project context
|
|
222
|
+
const manipulatedAccess = await this.memoryManager.get('credentials', {
|
|
223
|
+
agentId: agent2,
|
|
224
|
+
projectId: projectId1 + '-manipulated',
|
|
225
|
+
namespace: 'secure'
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
const passed = crossProjectAccess === null &&
|
|
229
|
+
noProjectAccess === null &&
|
|
230
|
+
manipulatedAccess === null;
|
|
231
|
+
|
|
232
|
+
this.logResult('Project Isolation Edge Cases', passed,
|
|
233
|
+
passed ? 'All cross-project attempts blocked' : 'Project isolation vulnerabilities found');
|
|
234
|
+
} catch (error) {
|
|
235
|
+
this.logResult('Project Isolation Edge Cases', false, `Error: ${error.message}`);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
async testConcurrentProjectAccess() {
|
|
240
|
+
const project1 = 'concurrent-project-1';
|
|
241
|
+
const project2 = 'concurrent-project-2';
|
|
242
|
+
const agent1 = 'concurrent-agent-1';
|
|
243
|
+
const agent2 = 'concurrent-agent-2';
|
|
244
|
+
|
|
245
|
+
const data1 = { project: 'data-1', timestamp: Date.now() };
|
|
246
|
+
const data2 = { project: 'data-2', timestamp: Date.now() };
|
|
247
|
+
|
|
248
|
+
try {
|
|
249
|
+
// Concurrent store operations
|
|
250
|
+
const storePromises = [
|
|
251
|
+
this.memoryManager.set('concurrent-key', data1, {
|
|
252
|
+
agentId: agent1,
|
|
253
|
+
projectId: project1,
|
|
254
|
+
aclLevel: 4,
|
|
255
|
+
namespace: 'concurrent-test'
|
|
256
|
+
}),
|
|
257
|
+
this.memoryManager.set('concurrent-key', data2, {
|
|
258
|
+
agentId: agent2,
|
|
259
|
+
projectId: project2,
|
|
260
|
+
aclLevel: 4,
|
|
261
|
+
namespace: 'concurrent-test'
|
|
262
|
+
})
|
|
263
|
+
];
|
|
264
|
+
|
|
265
|
+
await Promise.all(storePromises);
|
|
266
|
+
|
|
267
|
+
// Verify isolation is maintained
|
|
268
|
+
const access1 = await this.memoryManager.get('concurrent-key', {
|
|
269
|
+
agentId: agent1,
|
|
270
|
+
projectId: project1,
|
|
271
|
+
namespace: 'concurrent-test'
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
const access2 = await this.memoryManager.get('concurrent-key', {
|
|
275
|
+
agentId: agent2,
|
|
276
|
+
projectId: project2,
|
|
277
|
+
namespace: 'concurrent-test'
|
|
278
|
+
});
|
|
279
|
+
|
|
280
|
+
const passed = JSON.stringify(access1) === JSON.stringify(data1) &&
|
|
281
|
+
JSON.stringify(access2) === JSON.stringify(data2);
|
|
282
|
+
|
|
283
|
+
this.logResult('Concurrent Project Access', passed,
|
|
284
|
+
passed ? 'Concurrent project isolation maintained' : 'Concurrent access isolation failed');
|
|
285
|
+
} catch (error) {
|
|
286
|
+
this.logResult('Concurrent Project Access', false, `Error: ${error.message}`);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
async testCacheSecurity() {
|
|
291
|
+
const projectId = 'cache-test-project';
|
|
292
|
+
const authorizedAgent = 'cache-auth-agent';
|
|
293
|
+
const unauthorizedAgent = 'cache-unauth-agent';
|
|
294
|
+
|
|
295
|
+
const sensitiveData = { token: 'jwt-access-token' };
|
|
296
|
+
|
|
297
|
+
try {
|
|
298
|
+
// Store project data
|
|
299
|
+
await this.memoryManager.set('cache-key', sensitiveData, {
|
|
300
|
+
agentId: authorizedAgent,
|
|
301
|
+
projectId,
|
|
302
|
+
aclLevel: 4,
|
|
303
|
+
namespace: 'cache-test'
|
|
304
|
+
});
|
|
305
|
+
|
|
306
|
+
// First unauthorized access attempt
|
|
307
|
+
const unauthorizedAccess1 = await this.memoryManager.get('cache-key', {
|
|
308
|
+
agentId: unauthorizedAgent,
|
|
309
|
+
projectId: 'different-project',
|
|
310
|
+
namespace: 'cache-test'
|
|
311
|
+
});
|
|
312
|
+
|
|
313
|
+
// Second unauthorized access (should hit cache if not properly isolated)
|
|
314
|
+
const unauthorizedAccess2 = await this.memoryManager.get('cache-key', {
|
|
315
|
+
agentId: unauthorizedAgent,
|
|
316
|
+
projectId: 'different-project',
|
|
317
|
+
namespace: 'cache-test'
|
|
318
|
+
});
|
|
319
|
+
|
|
320
|
+
const passed = unauthorizedAccess1 === null && unauthorizedAccess2 === null;
|
|
321
|
+
|
|
322
|
+
this.logResult('Cache Security', passed,
|
|
323
|
+
passed ? 'Cache properly isolates unauthorized access' : 'Cache allows unauthorized access');
|
|
324
|
+
} catch (error) {
|
|
325
|
+
this.logResult('Cache Security', false, `Error: ${error.message}`);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
async generateSecurityReport() {
|
|
330
|
+
const totalTests = this.testResults.length;
|
|
331
|
+
const passedTests = this.testResults.filter(r => r.passed).length;
|
|
332
|
+
const failedTests = totalTests - passedTests;
|
|
333
|
+
const passRate = ((passedTests / totalTests) * 100).toFixed(1);
|
|
334
|
+
|
|
335
|
+
const report = {
|
|
336
|
+
summary: {
|
|
337
|
+
totalTests,
|
|
338
|
+
passedTests,
|
|
339
|
+
failedTests,
|
|
340
|
+
passRate: `${passRate}%`,
|
|
341
|
+
timestamp: new Date().toISOString()
|
|
342
|
+
},
|
|
343
|
+
criticalFindings: this.testResults.filter(r =>
|
|
344
|
+
!r.passed && r.test.includes('CRITICAL')
|
|
345
|
+
),
|
|
346
|
+
details: this.testResults
|
|
347
|
+
};
|
|
348
|
+
|
|
349
|
+
// Write security report
|
|
350
|
+
const reportPath = path.join(__dirname, 'acl-security-report.json');
|
|
351
|
+
fs.writeFileSync(reportPath, JSON.stringify(report, null, 2));
|
|
352
|
+
|
|
353
|
+
console.log('\n' + '='.repeat(60));
|
|
354
|
+
console.log('š ACL SECURITY VALIDATION REPORT');
|
|
355
|
+
console.log('='.repeat(60));
|
|
356
|
+
console.log(`Total Tests: ${totalTests}`);
|
|
357
|
+
console.log(`Passed: ${passedTests} ā
`);
|
|
358
|
+
console.log(`Failed: ${failedTests} ā`);
|
|
359
|
+
console.log(`Pass Rate: ${passRate}%`);
|
|
360
|
+
|
|
361
|
+
if (report.criticalFindings.length > 0) {
|
|
362
|
+
console.log('\nšØ CRITICAL SECURITY ISSUES:');
|
|
363
|
+
report.criticalFindings.forEach(finding => {
|
|
364
|
+
console.log(` ā ${finding.test}: ${finding.details}`);
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
console.log(`\nš Full report saved to: ${reportPath}`);
|
|
369
|
+
console.log('='.repeat(60));
|
|
370
|
+
|
|
371
|
+
return report;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
async runAllTests() {
|
|
375
|
+
console.log('š Starting ACL Security Validation...');
|
|
376
|
+
console.log('Testing 6-level ACL system with project isolation\n');
|
|
377
|
+
|
|
378
|
+
await this.setup();
|
|
379
|
+
|
|
380
|
+
// Run all security tests
|
|
381
|
+
await this.testPrivateLevelACL();
|
|
382
|
+
await this.testProjectLevelACL();
|
|
383
|
+
await this.testSystemLevelACL();
|
|
384
|
+
await this.testProjectIsolationEdgeCases();
|
|
385
|
+
await this.testConcurrentProjectAccess();
|
|
386
|
+
await this.testCacheSecurity();
|
|
387
|
+
|
|
388
|
+
const report = await this.generateSecurityReport();
|
|
389
|
+
|
|
390
|
+
await this.cleanup();
|
|
391
|
+
|
|
392
|
+
return report;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
// Run validation if called directly
|
|
397
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
398
|
+
const validator = new ACLSecurityValidator();
|
|
399
|
+
validator.runAllTests().catch(console.error);
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
export default ACLSecurityValidator;
|