demo-logging.ts 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #!/usr/bin/env tsx
  2. /**
  3. * Demo: Multi-Agent Logging System
  4. *
  5. * Demonstrates the logging system with a realistic multi-agent scenario.
  6. * Run with: tsx scripts/demo-logging.ts
  7. */
  8. import { MultiAgentLogger } from '../src/logging/index.js';
  9. console.log('🎬 Multi-Agent Logging System Demo\n');
  10. console.log('Simulating: openagent → simple-responder delegation\n');
  11. console.log('═'.repeat(70));
  12. // Create logger
  13. const logger = new MultiAgentLogger(true);
  14. // Simulate parent session (openagent)
  15. console.log('\n📍 Starting parent session...\n');
  16. logger.logSessionStart('ses_4d2a3c41fffeWb3uquPEEamO11', 'openagent');
  17. // User prompt
  18. logger.logMessage('ses_4d2a3c41fffeWb3uquPEEamO11', 'user', 'Call the simple-responder subagent and ask it to respond. Use the task tool to delegate.');
  19. // Agent analyzes
  20. logger.logMessage('ses_4d2a3c41fffeWb3uquPEEamO11', 'assistant', 'I will delegate to the simple-responder subagent...');
  21. // Agent loads context
  22. logger.logToolCall('ses_4d2a3c41fffeWb3uquPEEamO11', 'read', {
  23. filePath: '.opencode/context/core/workflows/delegation.md'
  24. });
  25. // Agent creates context bundle
  26. logger.logToolCall('ses_4d2a3c41fffeWb3uquPEEamO11', 'bash', {
  27. command: 'mkdir -p .tmp/sessions/20251217-call-simple-responder'
  28. });
  29. logger.logToolCall('ses_4d2a3c41fffeWb3uquPEEamO11', 'write', {
  30. filePath: '.tmp/sessions/20251217-call-simple-responder/context.md'
  31. });
  32. // Agent requests approval
  33. logger.logMessage('ses_4d2a3c41fffeWb3uquPEEamO11', 'assistant', 'Approval needed before proceeding. Do you approve this plan?');
  34. // User approves
  35. logger.logMessage('ses_4d2a3c41fffeWb3uquPEEamO11', 'user', 'Yes, proceed with the delegation.');
  36. // Agent delegates
  37. console.log('\n📍 Delegating to child session...\n');
  38. const delegationId = logger.logDelegation(
  39. 'ses_4d2a3c41fffeWb3uquPEEamO11',
  40. 'simple-responder',
  41. 'Read context from .tmp/sessions/20251217-call-simple-responder/context.md and respond.'
  42. );
  43. // Simulate child session creation
  44. console.log('\n📍 Child session created...\n');
  45. logger.logSessionStart('ses_4d2a38343ffeGNvW7Db92BbP06', 'simple-responder', 'ses_4d2a3c41fffeWb3uquPEEamO11');
  46. logger.logChildLinked(delegationId, 'ses_4d2a38343ffeGNvW7Db92BbP06');
  47. // Child session activity
  48. logger.logMessage('ses_4d2a38343ffeGNvW7Db92BbP06', 'user', 'Read context from .tmp/sessions/20251217-call-simple-responder/context.md and respond.');
  49. logger.logMessage('ses_4d2a38343ffeGNvW7Db92BbP06', 'assistant', 'AWESOME TESTING');
  50. // Child completes
  51. console.log('\n📍 Child session completing...\n');
  52. logger.logSessionComplete('ses_4d2a38343ffeGNvW7Db92BbP06');
  53. // Parent continues
  54. logger.logMessage('ses_4d2a3c41fffeWb3uquPEEamO11', 'assistant', 'The subagent responded with "AWESOME TESTING"');
  55. // Parent completes
  56. console.log('\n📍 Parent session completing...\n');
  57. logger.logSessionComplete('ses_4d2a3c41fffeWb3uquPEEamO11');
  58. // Show hierarchy analysis
  59. console.log('\n' + '═'.repeat(70));
  60. console.log('\n📊 Hierarchy Analysis\n');
  61. const tracker = logger.getTracker();
  62. const tree = tracker.buildTree('ses_4d2a3c41fffeWb3uquPEEamO11');
  63. if (tree) {
  64. console.log(`Total Sessions: ${tree.totalSessions}`);
  65. console.log(`Max Depth: ${tree.maxDepth}`);
  66. console.log(`Delegations: ${tree.delegations.length}`);
  67. console.log('\nSession Tree:');
  68. console.log(` Root: ${tree.root.agent} (depth ${tree.root.depth})`);
  69. tree.root.children.forEach(child => {
  70. console.log(` └─ Child: ${child.agent} (depth ${child.depth})`);
  71. });
  72. console.log('\nDelegations:');
  73. tree.delegations.forEach(del => {
  74. console.log(` ${del.fromAgent} → ${del.toAgent}`);
  75. console.log(` Prompt: ${del.prompt.substring(0, 60)}...`);
  76. });
  77. }
  78. console.log('\n' + '═'.repeat(70));
  79. console.log('\n✅ Demo complete!\n');
  80. console.log('This is what the logging system will show during actual eval tests.');
  81. console.log('Next step: Integrate into event-stream-handler.ts\n');