This directory contains comprehensive examples demonstrating the integration of agentic-jujutsu (quantum-resistant, self-learning version control) with agentic-synth (synthetic data generation).
Agentic-jujutsu brings advanced version control capabilities to synthetic data generation:
- Version Control: Track data generation history with full provenance
- Multi-Agent Coordination: Multiple agents generating different data types
- ReasoningBank Intelligence: Self-learning and adaptive generation
- Quantum-Resistant Security: Cryptographic integrity and immutable history
- Collaborative Workflows: Team-based data generation with review processes
- Node.js 18+ or Bun runtime
- Git (for jujutsu compatibility)
- Agentic-synth installed
# Install globally for CLI access
npm install -g agentic-jujutsu@latest
# Or use via npx (no installation required)
npx agentic-jujutsu@latest --version
cd packages/agentic-synth
npm install
import { VersionControlledDataGenerator } from './examples/agentic-jujutsu/version-control-integration';
const generator = new VersionControlledDataGenerator('./my-data-repo');
// Initialize repository
await generator.initializeRepository();
// Generate and commit data
const schema = {
name: 'string',
email: 'email',
age: 'number'
};
const commit = await generator.generateAndCommit(
schema,
1000,
'Initial user dataset'
);
console.log(`Generated ${commit.metadata.recordCount} records`);
console.log(`Quality: ${(commit.metadata.quality * 100).toFixed(1)}%`);
# Initialize a jujutsu repository
npx agentic-jujutsu@latest init
# Check status
npx agentic-jujutsu@latest status
# View history
npx agentic-jujutsu@latest log
# Create branches for experimentation
npx agentic-jujutsu@latest branch create experiment-1
File: version-control-integration.ts
Demonstrates version controlling synthetic data with branching, merging, and rollback capabilities.
Key Features:
- Repository initialization
- Data generation with metadata tracking
- Branch management for different strategies
- Dataset comparison between versions
- Rollback to previous generations
- Version tagging
Run Example:
npx tsx examples/agentic-jujutsu/version-control-integration.ts
Key Commands:
// Initialize repository
await generator.initializeRepository();
// Generate and commit
const commit = await generator.generateAndCommit(schema, 1000, 'Message');
// Create experimental branch
await generator.createGenerationBranch('experiment-1', 'Testing new approach');
// Compare datasets
const comparison = await generator.compareDatasets(commit1.hash, commit2.hash);
// Tag stable version
await generator.tagVersion('v1.0', 'Production baseline');
// Rollback if needed
await generator.rollbackToVersion(previousCommit);
Real-World Use Cases:
- A/B testing different generation strategies
- Maintaining production vs. experimental datasets
- Rolling back to known-good generations
- Tracking data quality over time
File: multi-agent-data-generation.ts
Coordinates multiple agents generating different types of synthetic data with automatic conflict resolution.
Key Features:
- Agent registration with dedicated branches
- Parallel data generation
- Contribution merging (sequential/octopus)
- Conflict detection and resolution
- Agent synchronization
- Activity tracking
Run Example:
npx tsx examples/agentic-jujutsu/multi-agent-data-generation.ts
Key Commands:
// Initialize multi-agent environment
await coordinator.initialize();
// Register agents
const userAgent = await coordinator.registerAgent(
'agent-001',
'User Generator',
'users',
{ name: 'string', email: 'email' }
);
// Parallel generation
const contributions = await coordinator.coordinateParallelGeneration([
{ agentId: 'agent-001', count: 1000, description: 'Users' },
{ agentId: 'agent-002', count: 500, description: 'Products' }
]);
// Merge contributions
await coordinator.mergeContributions(['agent-001', 'agent-002']);
// Synchronize agents
await coordinator.synchronizeAgents();
Real-World Use Cases:
- Large-scale data generation with specialized agents
- Distributed team generating different data types
- Parallel processing for faster generation
- Coordinating microservices generating test data
File: reasoning-bank-learning.ts
Self-learning data generation that improves quality over time using ReasoningBank intelligence.
Key Features:
- Trajectory tracking for each generation
- Pattern recognition from successful generations
- Adaptive schema evolution
- Continuous quality improvement
- Memory distillation
- Self-optimization
Run Example:
npx tsx examples/agentic-jujutsu/reasoning-bank-learning.ts
Key Commands:
// Initialize ReasoningBank
await generator.initialize();
// Generate with learning
const { data, trajectory } = await generator.generateWithLearning(
schema,
{ count: 1000 },
'Learning generation'
);
console.log(`Quality: ${trajectory.quality}`);
console.log(`Lessons learned: ${trajectory.lessons.length}`);
// Evolve schema based on learning
const evolved = await generator.evolveSchema(schema, 0.95, 10);
// Continuous improvement
const improvement = await generator.continuousImprovement(5);
console.log(`Quality improved by ${improvement.qualityImprovement}%`);
// Recognize patterns
const patterns = await generator.recognizePatterns();
Real-World Use Cases:
- Optimizing data quality automatically
- Learning from production feedback
- Adapting schemas to new requirements
- Self-improving test data generation
File: quantum-resistant-data.ts
Secure data generation with cryptographic signatures and quantum-resistant integrity verification.
Key Features:
- Quantum-resistant key generation
- Cryptographic data signing
- Integrity verification
- Merkle tree proofs
- Audit trail generation
- Tampering detection
Run Example:
npx tsx examples/agentic-jujutsu/quantum-resistant-data.ts
Key Commands:
// Initialize quantum-resistant repo
await generator.initialize();
// Generate secure data
const generation = await generator.generateSecureData(
schema,
1000,
'Secure generation'
);
console.log(`Hash: ${generation.dataHash}`);
console.log(`Signature: ${generation.signature}`);
// Verify integrity
const verified = await generator.verifyIntegrity(generation.id);
// Create proof
const proof = await generator.createIntegrityProof(generation.id);
// Generate audit trail
const audit = await generator.generateAuditTrail(generation.id);
// Detect tampering
const tampered = await generator.detectTampering();
Real-World Use Cases:
- Financial data generation with audit requirements
- Healthcare data with HIPAA compliance
- Blockchain and cryptocurrency test data
- Secure supply chain data
- Regulated industry compliance
File: collaborative-workflows.ts
Team-based data generation with review processes, quality gates, and approval workflows.
Key Features:
- Team creation with permissions
- Team-specific workspaces
- Review request system
- Quality gate automation
- Comment and approval system
- Collaborative schema design
- Team statistics and reporting
Run Example:
npx tsx examples/agentic-jujutsu/collaborative-workflows.ts
Key Commands:
// Initialize workspace
await workflow.initialize();
// Create teams
const dataTeam = await workflow.createTeam(
'data-team',
'Data Engineering',
['alice', 'bob', 'charlie']
);
// Team generates data
await workflow.teamGenerate(
'data-team',
'alice',
schema,
1000,
'User dataset'
);
// Create review request
const review = await workflow.createReviewRequest(
'data-team',
'alice',
'Add user dataset',
'Generated 1000 users',
['dave', 'eve']
);
// Add comments
await workflow.addComment(review.id, 'dave', 'Looks good!');
// Approve and merge
await workflow.approveReview(review.id, 'dave');
await workflow.mergeReview(review.id);
// Design collaborative schema
await workflow.designCollaborativeSchema(
'user-schema',
['alice', 'dave'],
baseSchema
);
Real-World Use Cases:
- Enterprise data generation with governance
- Multi-team development environments
- Quality assurance workflows
- Production data approval processes
- Regulated data generation pipelines
# Run all tests
npm test examples/agentic-jujutsu/test-suite.ts
# Run with coverage
npm run test:coverage examples/agentic-jujutsu/test-suite.ts
# Run specific test suite
npm test examples/agentic-jujutsu/test-suite.ts -t "Version Control"
The test suite includes:
-
Version Control Integration Tests
- Repository initialization
- Data generation and commits
- Branch management
- Dataset comparison
- History retrieval
-
Multi-Agent Coordination Tests
- Agent registration
- Parallel generation
- Contribution merging
- Activity tracking
-
ReasoningBank Learning Tests
- Learning-enabled generation
- Pattern recognition
- Schema evolution
- Continuous improvement
-
Quantum-Resistant Tests
- Secure data generation
- Integrity verification
- Proof creation and validation
- Audit trail generation
- Tampering detection
-
Collaborative Workflow Tests
- Team creation
- Review requests
- Quality gates
- Schema collaboration
-
Performance Benchmarks
- Operation timing
- Scalability tests
- Resource usage
-
Error Handling Tests
- Invalid inputs
- Edge cases
- Graceful failures
my-data-repo/
├── .jj/ # Jujutsu metadata
├── data/
│ ├── users/ # Organized by type
│ ├── products/
│ └── transactions/
├── schemas/
│ └── shared/ # Collaborative schemas
└── reviews/ # Review requests
Use descriptive commit messages with metadata:
await generator.generateAndCommit(
schema,
count,
`Generate ${count} records for ${purpose}
Quality: ${quality}
Schema: ${schemaVersion}
Generator: ${generatorName}`
);
Follow consistent branch naming:
agent/{agent-id}/{data-type}- Agent branchesteam/{team-id}/{team-name}- Team branchesexperiment/{description}- Experimental branchesschema/{schema-name}- Schema design branches
Always define quality gates for production:
const qualityGates = [
{ name: 'Data Completeness', required: true },
{ name: 'Schema Validation', required: true },
{ name: 'Quality Threshold', required: true },
{ name: 'Security Scan', required: false }
];
For sensitive data:
- Always use quantum-resistant features
- Enable integrity verification
- Generate audit trails
- Regular tampering scans
- Secure key management
Maximize ReasoningBank benefits:
- Track all generations as trajectories
- Regularly recognize patterns
- Use adaptive schema evolution
- Implement continuous improvement
- Analyze quality trends
# Error: jujutsu command not found
# Solution: Install jujutsu
npm install -g agentic-jujutsu@latest
# Or use npx
npx agentic-jujutsu@latest init
# Error: Merge conflicts detected
# Solution: Use conflict resolution
await coordinator.resolveConflicts(conflictFiles, 'ours');
# or
await coordinator.resolveConflicts(conflictFiles, 'theirs');
// Error: Signature verification failed
// Solution: Check keys and regenerate if needed
await generator.initialize(); // Regenerates keys
const verified = await generator.verifyIntegrity(generationId);
// Error: Quality gate threshold not met
// Solution: Use adaptive learning to improve
const evolved = await generator.evolveSchema(schema, targetQuality);
# Error: Permission denied on team operations
# Solution: Verify team membership
const team = await workflow.teams.get(teamId);
if (!team.members.includes(author)) {
// Add member to team
team.members.push(author);
}
Enable debug logging:
// Set environment variable
process.env.DEBUG = 'agentic-jujutsu:*';
// Or enable in code
import { setLogLevel } from 'agentic-synth';
setLogLevel('debug');
class VersionControlledDataGenerator {
constructor(repoPath: string);
async initializeRepository(): Promise<void>;
async generateAndCommit(schema: any, count: number, message: string): Promise<JujutsuCommit>;
async createGenerationBranch(branchName: string, description: string): Promise<void>;
async compareDatasets(ref1: string, ref2: string): Promise<any>;
async mergeBranches(source: string, target: string): Promise<void>;
async rollbackToVersion(commitHash: string): Promise<void>;
async getHistory(limit?: number): Promise<any[]>;
async tagVersion(tag: string, message: string): Promise<void>;
}
class MultiAgentDataCoordinator {
constructor(repoPath: string);
async initialize(): Promise<void>;
async registerAgent(id: string, name: string, dataType: string, schema: any): Promise<Agent>;
async agentGenerate(agentId: string, count: number, description: string): Promise<AgentContribution>;
async coordinateParallelGeneration(tasks: Task[]): Promise<AgentContribution[]>;
async mergeContributions(agentIds: string[], strategy?: 'sequential' | 'octopus'): Promise<any>;
async resolveConflicts(files: string[], strategy: 'ours' | 'theirs' | 'manual'): Promise<void>;
async synchronizeAgents(agentIds?: string[]): Promise<void>;
async getAgentActivity(agentId: string): Promise<any>;
}
class ReasoningBankDataGenerator {
constructor(repoPath: string);
async initialize(): Promise<void>;
async generateWithLearning(schema: any, parameters: any, description: string): Promise<{ data: any[]; trajectory: GenerationTrajectory }>;
async evolveSchema(baseSchema: any, targetQuality?: number, maxGenerations?: number): Promise<AdaptiveSchema>;
async recognizePatterns(): Promise<LearningPattern[]>;
async continuousImprovement(iterations?: number): Promise<any>;
}
class QuantumResistantDataGenerator {
constructor(repoPath: string);
async initialize(): Promise<void>;
async generateSecureData(schema: any, count: number, description: string): Promise<SecureDataGeneration>;
async verifyIntegrity(generationId: string): Promise<boolean>;
async createIntegrityProof(generationId: string): Promise<IntegrityProof>;
async verifyIntegrityProof(generationId: string): Promise<boolean>;
async generateAuditTrail(generationId: string): Promise<AuditTrail>;
async detectTampering(): Promise<string[]>;
}
class CollaborativeDataWorkflow {
constructor(repoPath: string);
async initialize(): Promise<void>;
async createTeam(id: string, name: string, members: string[], permissions?: string[]): Promise<Team>;
async teamGenerate(teamId: string, author: string, schema: any, count: number, description: string): Promise<Contribution>;
async createReviewRequest(teamId: string, author: string, title: string, description: string, reviewers: string[]): Promise<ReviewRequest>;
async addComment(requestId: string, author: string, text: string): Promise<void>;
async approveReview(requestId: string, reviewer: string): Promise<void>;
async mergeReview(requestId: string): Promise<void>;
async designCollaborativeSchema(name: string, contributors: string[], baseSchema: any): Promise<any>;
async getTeamStatistics(teamId: string): Promise<any>;
}
- Agentic-Jujutsu Repository
- Agentic-Synth Documentation
- Jujutsu VCS Documentation
- ReasoningBank Paper
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Add tests for new features
- Submit a pull request
MIT License - see LICENSE file for details
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: support@ruv.io
Built with ❤️ by the RUV Team