icoa-cli 2.16.12 → 2.16.14

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.
@@ -66,14 +66,15 @@ function printHowToPlay() {
66
66
  console.log(chalk.gray(' ru · hi · de · id · th · vi · tr'));
67
67
  console.log(chalk.gray(' ─────────────────────────────────────────'));
68
68
  }
69
- // Australian easter eggs every 5 questions
69
+ // Australian easter eggs every 3 questions (for 15-question demo)
70
70
  const EASTER_EGGS = {
71
- 5: { emoji: '🏛️', text: 'Sydney Opera House — You\'re doing great!' },
72
- 10: { emoji: '🌉', text: 'Sydney Harbour BridgeKeep going!' },
73
- 15: { emoji: '🐨', text: 'Halfway there! A koala cheers you on!' },
74
- 20: { emoji: '🦘', text: 'A kangaroo hops by — almost there!' },
75
- 25: { emoji: '🏖️', text: 'Bondi Beach — 5 more to go!' },
76
- 30: { emoji: '🎉', text: 'G\'day mate! All questions done!' },
71
+ 3: { emoji: '🏛️', text: 'Sydney Opera House — Great start!' },
72
+ 5: { emoji: '🐨', text: 'A koala says g\'day 1/3 done!' },
73
+ 7: { emoji: '🌉', text: 'Sydney Harbour Bridge Keep going!' },
74
+ 9: { emoji: '🦘', text: 'A kangaroo hops by — past halfway!' },
75
+ 11: { emoji: '🏖️', text: 'Bondi Beach — almost there!' },
76
+ 13: { emoji: '🦈', text: 'Great Barrier Reef 2 more to go!' },
77
+ 15: { emoji: '🎉', text: 'G\'day mate! All done! 🇦🇺' },
77
78
  };
78
79
  function printQuestionProgress(current, total, answered) {
79
80
  const width = 30;
@@ -583,6 +584,8 @@ export function registerExamCommand(program) {
583
584
  clearExamState();
584
585
  const pct = Math.round(score / state.questions.length * 100);
585
586
  console.log();
587
+ // ─── Cinematic results reveal ───
588
+ // Part 1: Score banner
586
589
  console.log(chalk.cyan(' ═══════════════════════════════════════'));
587
590
  console.log();
588
591
  console.log(chalk.bold.white(' ██╗ ██████╗ ██████╗ █████╗'));
@@ -599,10 +602,11 @@ export function registerExamCommand(program) {
599
602
  console.log(chalk.gray(' Sydney, Australia · Jun 27 - Jul 2, 2026'));
600
603
  console.log();
601
604
  console.log(chalk.cyan(' ═══════════════════════════════════════'));
602
- console.log();
603
- // Show wrong answers
605
+ await sleep(2000);
606
+ // Part 2: Wrong answers
604
607
  const wrong = state.questions.filter((q) => state.answers[q.number] !== DEMO_ANSWERS[q.number]);
605
608
  if (wrong.length > 0) {
609
+ console.log();
606
610
  console.log(chalk.white(` ${wrong.length} incorrect — here are the corrections:`));
607
611
  console.log();
608
612
  for (const q of wrong) {
@@ -615,35 +619,50 @@ export function registerExamCommand(program) {
615
619
  }
616
620
  }
617
621
  else {
622
+ console.log();
618
623
  console.log(chalk.green.bold(' Perfect score! All answers correct! 🎉'));
619
624
  console.log();
620
625
  }
626
+ await sleep(2000);
627
+ // Part 3: Theory → CTF intro
621
628
  console.log(chalk.gray(' ─────────────────────────────────────────'));
622
629
  console.log();
623
- console.log(chalk.white(' These were theory questions. In the real ICOA competition,'));
624
- console.log(chalk.white(' everything happens inside this terminal — no other tools allowed.'));
630
+ console.log(chalk.white(' These were theory questions. In the real ICOA'));
631
+ console.log(chalk.white(' competition, everything happens in this terminal.'));
632
+ await sleep(2000);
633
+ // Part 4: CTF history
625
634
  console.log();
626
635
  console.log(chalk.yellow(' Did you know?'));
627
636
  console.log(chalk.gray(' CTF (Capture The Flag) started at DEF CON 4 in 1996,'));
628
637
  console.log(chalk.gray(' Las Vegas. Founded by Jeff Moss (Dark Tangent).'));
629
- console.log(chalk.gray(' 2026 marks 30 years of CTF competitions worldwide.'));
638
+ console.log(chalk.gray(' 2026 marks 30 years of CTF worldwide.'));
630
639
  console.log();
631
640
  console.log(chalk.gray(' In a CTF, you solve challenges to find hidden'));
632
641
  console.log(chalk.gray(' "flags" — secret codes like: ') + chalk.green('icoa{w3lc0me_2_ctf}'));
633
642
  console.log(chalk.gray(' Find it, submit it, score points!'));
643
+ await sleep(2500);
644
+ // Part 5: Timeline
634
645
  console.log();
635
646
  console.log(chalk.gray(' 1996 First CTF @ DEF CON, Las Vegas'));
647
+ await sleep(800);
636
648
  console.log(chalk.gray(' 2016 DARPA Cyber Grand Challenge — AI enters CTF'));
637
- console.log(chalk.gray(' 2026 ICOA — First AI Security Olympiad, Sydney'));
649
+ await sleep(800);
650
+ console.log(chalk.white(' 2026 ICOA — First AI Security Olympiad, Sydney'));
651
+ await sleep(2000);
652
+ // Part 6: Dual tracks
638
653
  console.log();
639
654
  console.log(chalk.white(' ICOA uses ') + chalk.bold('TWO') + chalk.white(' competition tracks:'));
640
655
  console.log();
656
+ await sleep(1000);
641
657
  console.log(chalk.green.bold(' AI4CTF') + chalk.white(' — Use AI to help you solve CTF challenges'));
642
658
  console.log(chalk.gray(' AI is your teammate. Chat, ask for hints, work together.'));
643
659
  console.log();
660
+ await sleep(1500);
644
661
  console.log(chalk.red.bold(' CTF4AI') + chalk.white(' — Trick the AI (Prompt Injection)'));
645
662
  console.log(chalk.gray(' Can you make the AI break its own safety rules?'));
646
663
  console.log();
664
+ await sleep(1500);
665
+ // Part 7: Call to action
647
666
  console.log(chalk.white(' Want to experience both? Type ') + chalk.bold.cyan('continue'));
648
667
  console.log(chalk.gray(' Or type "back" to return to the main menu.'));
649
668
  console.log();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "icoa-cli",
3
- "version": "2.16.12",
3
+ "version": "2.16.14",
4
4
  "description": "ICOA CLI — The world's first CLI-native CTF competition terminal",
5
5
  "type": "module",
6
6
  "bin": {