-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdemo-session.ts
More file actions
133 lines (107 loc) · 4.03 KB
/
demo-session.ts
File metadata and controls
133 lines (107 loc) · 4.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#!/usr/bin/env tsx
/**
* Billy Bullshit - Parallel Session Demo
*
* This demo shows Billy working as a code review service
* that responds to requests from other Claude Code sessions.
*
* Run in one terminal while running shitcommit demo in another.
*/
import { ParallelSessionCoordinator } from '@chittyos/shared-state';
import { BillyAgent } from './src/billy-agent';
console.log('🔥 Billy Bullshit - Parallel Session Mode');
console.log('==========================================\n');
// Create coordinator
const coordinator = new ParallelSessionCoordinator('billy', {
capabilities: ['code_review', 'bs_detection', 'pattern_analysis'],
metadata: {
version: '1.0.0',
tagline: 'Calling BS on your BS code since 2024'
}
});
console.log(`📋 Session ID: ${coordinator.getSessionInfo().session_id}`);
console.log('✅ Registered as Billy session');
// Discover other sessions
const sessions = coordinator.discoverSessions();
console.log(`\n🔍 Found ${sessions.length} other active sessions:`);
sessions.forEach(s => {
console.log(` - ${s.session_type} (${s.session_id.substring(0, 8)}...)`);
});
// Mock Billy Agent for demo (replace with actual BillyAgent)
async function reviewCode(code: string, language?: string): Promise<{
bs_score: number;
review: string;
patterns: string[];
}> {
// Simulate AI processing
await new Promise(resolve => setTimeout(resolve, 2000));
// Simple BS detection
let bs_score = 1;
const patterns: string[] = [];
if (code.includes('== true') || code.includes('== false')) {
bs_score += 3;
patterns.push('redundant_boolean_check');
}
if (code.match(/if.*{[\s\S]*return true[\s\S]*}.*else[\s\S]*{[\s\S]*return false/)) {
bs_score += 4;
patterns.push('redundant_if_else');
}
if (code.includes('any')) {
bs_score += 2;
patterns.push('typescript_any_type');
}
if (code.match(/ManagerHelperUtil|FactoryProvider/)) {
bs_score += 3;
patterns.push('cargo_cult_naming');
}
const review = `💩 BS Level: ${bs_score}/10\n\n` +
(bs_score > 7 ? '🚩 CRITICAL BS DETECTED!\n' : '') +
`Found ${patterns.length} BS patterns:\n` +
patterns.map(p => ` - ${p}`).join('\n') +
'\n\nThe fix: Write cleaner code, ya scrub.';
return { bs_score, review, patterns };
}
// Listen for review requests
coordinator.on('review_requested', async (data) => {
console.log(`\n📨 Code review requested: ${data.review_id}`);
// Get pending reviews
const pending = coordinator.getPendingReviews();
console.log(`📊 ${pending.length} reviews in queue`);
for (const review of pending) {
// Try to claim it
if (coordinator.claimReview(review.review_id)) {
console.log(`\n🔍 Reviewing code (${review.language || 'unknown'})...`);
// Process it
const result = await reviewCode(review.code, review.language || undefined);
console.log(`💩 BS Score: ${result.bs_score}/10`);
console.log(`📋 Patterns found: ${result.patterns.join(', ')}`);
// Complete it
coordinator.completeReview(review.review_id, result);
console.log(`✅ Review completed: ${review.review_id}`);
}
}
});
// Listen for other events
coordinator.on('learning_shared', (data) => {
console.log(`\n📚 New learning shared: ${data.pattern_type} (confidence: ${data.confidence})`);
});
coordinator.on('music_requested', (data) => {
console.log(`\n🎵 Music generation requested: ${data.track_id}`);
});
// Broadcast Billy is online
coordinator.broadcastEvent('billy_online', {
message: 'Billy Bullshit is online and ready to call out your BS',
capabilities: ['code_review', 'bs_detection']
});
console.log('\n🎧 Billy is listening for code review requests...');
console.log('💡 Run the ShitCommit demo in another terminal to send reviews\n');
console.log('Press Ctrl+C to exit\n');
// Keep alive
process.on('SIGINT', () => {
console.log('\n\n👋 Billy signing off...');
coordinator.broadcastEvent('billy_offline', {
message: 'Billy out. Fix your shit.'
});
coordinator.terminate();
process.exit(0);
});