UNPKG

claude-flow-novice

Version:

Claude Flow Novice - Advanced orchestration platform for multi-agent AI workflows with CFN Loop architecture Includes Local RuVector Accelerator and all CFN skills for complete functionality.

416 lines (323 loc) 9.81 kB
--- name: SQLite Memory Access version: 1.3.0 complexity: High keywords: [ "multi-tier access", "5-level ACL", "secure data persistence", "encrypted storage", "redis session management", "contextual memory", "TTL expiration", "cli wrapper", "agent-accessible" ] triggers: [ "secure memory management", "tiered access control", "contextual data storage", "agent memory operations" ] performance_targets: { "query_time_ms": 20, "encryption_strength_bits": 256, "cache_hit_rate_pct": 85, "max_concurrent_connections": 100 } status: OPERATIONAL --- # SQLite Memory Access Skill ## Overview This skill provides secure SQLite memory access with a 5-level Access Control List (ACL) system, integrating with Redis for session management and caching. The implementation includes encrypted query patterns, TTL-based expiration, comprehensive test coverage, and a CLI wrapper for agent-accessible memory operations. ## Status: OPERATIONAL The SQLite Memory Access skill is now fully operational with: - TypeScript implementation: `src/memory/sqlite-memory-system.ts` - CLI wrapper: `.claude/skills/sqlite-memory/memory-cli.sh` - Configuration: `.claude/skills/sqlite-memory/config.json` - 5-level ACL support - JSON output for programmatic use --- ## CLI Usage ### Installation The CLI is automatically available once the project is built: ```bash # Build the project (if not already done) npm run build # Use the CLI directly ./.claude/skills/sqlite-memory/memory-cli.sh <command> [options] ``` ### Commands #### 1. SET - Store a value ```bash ./memory-cli.sh set --key <key> --value <value> --acl <level> # Examples: # Store agent state (ACL 1 - AGENT) ./memory-cli.sh set --key "agent/worker-1/state" --value '{"progress":50}' --acl 1 # Store team coordination data (ACL 2 - TEAM) ./memory-cli.sh set --key "team/alpha/status" --value '{"complete":false}' --acl 2 # Store swarm coordination data (ACL 3 - SWARM) ./memory-cli.sh set --key "swarm/phase-1/status" --value '{"complete":true}' --acl 3 ``` #### 2. GET - Retrieve a value ```bash ./memory-cli.sh get --key <key> # Examples: # Retrieve agent state ./memory-cli.sh get --key "agent/worker-1/state" # Retrieve swarm status ./memory-cli.sh get --key "swarm/phase-1/status" ``` #### 3. DELETE - Delete a value ```bash ./memory-cli.sh delete --key <key> # Examples: # Delete agent state ./memory-cli.sh delete --key "agent/worker-1/state" # Delete temporary coordination data ./memory-cli.sh delete --key "swarm/phase-1/temp" ``` #### 4. QUERY - Query values by pattern ```bash ./memory-cli.sh query --pattern <glob> # Examples: # Query all agent states ./memory-cli.sh query --pattern "agent/*/state" # Query all swarm phase data ./memory-cli.sh query --pattern "swarm/phase-*/status" # Note: Query operation requires additional implementation ``` #### 5. LIST - List all keys ```bash ./memory-cli.sh list [--acl <level>] # Examples: # List all keys ./memory-cli.sh list # List only swarm-level keys (ACL 3) ./memory-cli.sh list --acl 3 # Note: List operation requires additional implementation ``` ### ACL Levels | Level | Name | Description | Use Case | |-------|------|-------------|----------| | 0 | NONE | No access | Placeholder/invalid | | 1 | AGENT | Encrypted, agent-specific | Agent state, private data | | 2 | TEAM | Shared within team | Team coordination, shared context | | 3 | SWARM | Swarm-level coordination | Phase status, swarm metrics | | 4 | PROJECT | Project-wide access | Project config, global state | | 5 | SYSTEM | System-level (highest) | System config, admin operations | ### Output Format All CLI commands return JSON output for easy parsing: **Success Response:** ```json { "success": true, "operation": "set", "key": "agent/worker-1/state", "acl": 1, "aclLevel": "READ/AGENT", "timestamp": "2025-10-18T10:30:00.000Z" } ``` **Get Response:** ```json { "success": true, "operation": "get", "key": "agent/worker-1/state", "value": { "progress": 50 }, "timestamp": "2025-10-18T10:30:00.000Z" } ``` **Error Response:** ```json { "success": false, "operation": "get", "key": "nonexistent-key", "error": "Key not found", "timestamp": "2025-10-18T10:30:00.000Z" } ``` --- ## Agent Integration Examples ### Example 1: Agent State Persistence ```bash #!/bin/bash # Agent stores its state across sessions AGENT_ID="worker-1" STATE_KEY="agent/${AGENT_ID}/state" # Get previous state PREV_STATE=$(./memory-cli.sh get --key "$STATE_KEY" | jq -r '.value') # Process and update state NEW_PROGRESS=$(echo "$PREV_STATE" | jq -r '.progress + 10') # Store updated state ./memory-cli.sh set \ --key "$STATE_KEY" \ --value "{\"progress\":$NEW_PROGRESS,\"lastUpdate\":\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"}" \ --acl 1 ``` ### Example 2: Swarm Coordination ```bash #!/bin/bash # Coordinator tracks swarm phase completion PHASE_ID="phase-1" SWARM_KEY="swarm/${PHASE_ID}/status" # Check if phase is complete STATUS=$(./memory-cli.sh get --key "$SWARM_KEY" | jq -r '.value.complete') if [ "$STATUS" = "true" ]; then echo "Phase $PHASE_ID already complete" exit 0 fi # Mark phase as complete ./memory-cli.sh set \ --key "$SWARM_KEY" \ --value '{"complete":true,"completedAt":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'"}' \ --acl 3 ``` ### Example 3: Team Context Sharing ```bash #!/bin/bash # Team members share context via memory TEAM_ID="alpha" CONTEXT_KEY="team/${TEAM_ID}/context" # Store shared context ./memory-cli.sh set \ --key "$CONTEXT_KEY" \ --value '{"taskQueue":["task1","task2"],"activeMembers":3}' \ --acl 2 # Other team members can retrieve CONTEXT=$(./memory-cli.sh get --key "$CONTEXT_KEY" | jq -r '.value') echo "Team context: $CONTEXT" ``` --- ## Configuration Configuration file: `.claude/skills/sqlite-memory/config.json` ```json { "dbPath": ".artifacts/memory/swarm-memory.sqlite", "encryptionEnabled": false, "aclLevels": { "agent": 1, "team": 2, "swarm": 3, "project": 4, "system": 5 }, "performance": { "queryTimeoutMs": 5000, "maxConcurrentConnections": 100, "cacheEnabled": true }, "ttl": { "defaultTtlSeconds": 3600, "cleanupIntervalSeconds": 600 } } ``` --- ## TypeScript API For programmatic access from TypeScript/Node.js: ```typescript import { SQLiteMemorySystem } from './src/memory/sqlite-memory-system.js'; import { AccessLevel } from './src/memory/memory-adapter.js'; // Initialize memory system const memory = new SQLiteMemorySystem('.artifacts/memory/swarm-memory.sqlite'); await memory.initialize(); // Store value await memory.store('agent/worker-1/state', { progress: 50 }, AccessLevel.READ); // Retrieve value const state = await memory.retrieve('agent/worker-1/state'); console.log('Agent state:', state); ``` --- ## Testing Test the CLI with all ACL levels: ```bash # Test script location ./.claude/skills/sqlite-memory/test-memory-cli.sh # Manual testing ./memory-cli.sh set --key "test/key1" --value '{"test":true}' --acl 1 ./memory-cli.sh get --key "test/key1" ./memory-cli.sh delete --key "test/key1" ``` --- ## Performance Targets | Metric | Target | Current | |--------|--------|---------| | Query Time | < 20ms | | | Encryption Strength | 256-bit | (when enabled) | | Cache Hit Rate | > 85% | | | Max Concurrent Connections | 100 | | --- ## Implementation Details ### File Structure ``` .claude/skills/sqlite-memory/ ├── SKILL.md # This file ├── config.json # Configuration ├── memory-cli.sh # Bash wrapper ├── acl-queries.sql # SQL query examples ├── ttl-cleanup.sh # TTL cleanup script └── test-state-persistence.js # Test script src/memory/ ├── sqlite-memory-system.ts # Core implementation ├── memory-adapter.ts # ACL management └── swarm-memory.ts # Swarm-level memory src/cli/ └── memory-cli.ts # TypeScript CLI implementation ``` ### Key Features 1. **5-Level ACL**: Fine-grained access control for different scopes 2. **JSON Output**: Easy parsing for agent scripts 3. **Encryption Support**: Optional encryption for sensitive data 4. **TTL Management**: Automatic expiration of old data 5. **Redis Integration**: Session management and caching 6. **Agent-Friendly**: Simple CLI interface for bash scripts --- ## Limitations and Future Enhancements ### Current Limitations 1. Query and List operations not yet fully implemented 2. Requires additional methods in SQLiteMemorySystem for full functionality 3. Delete operation currently marks as deleted rather than removing ### Planned Enhancements 1. Full query support with glob patterns 2. List operation with ACL filtering 3. Bulk operations (set/get/delete multiple keys) 4. Transaction support for atomic operations 5. Export/import functionality for migration --- ## Maintenance ### Regular Tasks - Weekly: Review and clean up expired keys - Monthly: Optimize database (VACUUM) - Quarterly: Audit ACL usage patterns ### Troubleshooting **Issue: "Memory CLI not found"** ```bash # Solution: Build the project npm run build ``` **Issue: "Key not found"** ```bash # Solution: Verify key exists ./memory-cli.sh list | grep "your-key" ``` **Issue: "Insufficient access level"** ```bash # Solution: Use correct ACL level for operation # Check required ACL level in config.json ``` --- ## Support For issues or questions: 1. Check configuration in `.claude/skills/sqlite-memory/config.json` 2. Review logs in `.artifacts/logs/memory-cli.log` 3. Run test suite: `npm test` 4. Check TypeScript implementation in `src/memory/` --- **Last Updated:** 2025-10-18 **Version:** 1.3.0 **Status:** OPERATIONAL