icoa-cli 2.16.13 → 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.
- package/dist/commands/exam.js +24 -6
- package/package.json +1 -1
package/dist/commands/exam.js
CHANGED
|
@@ -584,6 +584,8 @@ export function registerExamCommand(program) {
|
|
|
584
584
|
clearExamState();
|
|
585
585
|
const pct = Math.round(score / state.questions.length * 100);
|
|
586
586
|
console.log();
|
|
587
|
+
// ─── Cinematic results reveal ───
|
|
588
|
+
// Part 1: Score banner
|
|
587
589
|
console.log(chalk.cyan(' ═══════════════════════════════════════'));
|
|
588
590
|
console.log();
|
|
589
591
|
console.log(chalk.bold.white(' ██╗ ██████╗ ██████╗ █████╗'));
|
|
@@ -600,10 +602,11 @@ export function registerExamCommand(program) {
|
|
|
600
602
|
console.log(chalk.gray(' Sydney, Australia · Jun 27 - Jul 2, 2026'));
|
|
601
603
|
console.log();
|
|
602
604
|
console.log(chalk.cyan(' ═══════════════════════════════════════'));
|
|
603
|
-
|
|
604
|
-
//
|
|
605
|
+
await sleep(2000);
|
|
606
|
+
// Part 2: Wrong answers
|
|
605
607
|
const wrong = state.questions.filter((q) => state.answers[q.number] !== DEMO_ANSWERS[q.number]);
|
|
606
608
|
if (wrong.length > 0) {
|
|
609
|
+
console.log();
|
|
607
610
|
console.log(chalk.white(` ${wrong.length} incorrect — here are the corrections:`));
|
|
608
611
|
console.log();
|
|
609
612
|
for (const q of wrong) {
|
|
@@ -616,35 +619,50 @@ export function registerExamCommand(program) {
|
|
|
616
619
|
}
|
|
617
620
|
}
|
|
618
621
|
else {
|
|
622
|
+
console.log();
|
|
619
623
|
console.log(chalk.green.bold(' Perfect score! All answers correct! 🎉'));
|
|
620
624
|
console.log();
|
|
621
625
|
}
|
|
626
|
+
await sleep(2000);
|
|
627
|
+
// Part 3: Theory → CTF intro
|
|
622
628
|
console.log(chalk.gray(' ─────────────────────────────────────────'));
|
|
623
629
|
console.log();
|
|
624
|
-
console.log(chalk.white(' These were theory questions. In the real ICOA
|
|
625
|
-
console.log(chalk.white(' everything happens
|
|
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
|
|
626
634
|
console.log();
|
|
627
635
|
console.log(chalk.yellow(' Did you know?'));
|
|
628
636
|
console.log(chalk.gray(' CTF (Capture The Flag) started at DEF CON 4 in 1996,'));
|
|
629
637
|
console.log(chalk.gray(' Las Vegas. Founded by Jeff Moss (Dark Tangent).'));
|
|
630
|
-
console.log(chalk.gray(' 2026 marks 30 years of CTF
|
|
638
|
+
console.log(chalk.gray(' 2026 marks 30 years of CTF worldwide.'));
|
|
631
639
|
console.log();
|
|
632
640
|
console.log(chalk.gray(' In a CTF, you solve challenges to find hidden'));
|
|
633
641
|
console.log(chalk.gray(' "flags" — secret codes like: ') + chalk.green('icoa{w3lc0me_2_ctf}'));
|
|
634
642
|
console.log(chalk.gray(' Find it, submit it, score points!'));
|
|
643
|
+
await sleep(2500);
|
|
644
|
+
// Part 5: Timeline
|
|
635
645
|
console.log();
|
|
636
646
|
console.log(chalk.gray(' 1996 First CTF @ DEF CON, Las Vegas'));
|
|
647
|
+
await sleep(800);
|
|
637
648
|
console.log(chalk.gray(' 2016 DARPA Cyber Grand Challenge — AI enters CTF'));
|
|
638
|
-
|
|
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
|
|
639
653
|
console.log();
|
|
640
654
|
console.log(chalk.white(' ICOA uses ') + chalk.bold('TWO') + chalk.white(' competition tracks:'));
|
|
641
655
|
console.log();
|
|
656
|
+
await sleep(1000);
|
|
642
657
|
console.log(chalk.green.bold(' AI4CTF') + chalk.white(' — Use AI to help you solve CTF challenges'));
|
|
643
658
|
console.log(chalk.gray(' AI is your teammate. Chat, ask for hints, work together.'));
|
|
644
659
|
console.log();
|
|
660
|
+
await sleep(1500);
|
|
645
661
|
console.log(chalk.red.bold(' CTF4AI') + chalk.white(' — Trick the AI (Prompt Injection)'));
|
|
646
662
|
console.log(chalk.gray(' Can you make the AI break its own safety rules?'));
|
|
647
663
|
console.log();
|
|
664
|
+
await sleep(1500);
|
|
665
|
+
// Part 7: Call to action
|
|
648
666
|
console.log(chalk.white(' Want to experience both? Type ') + chalk.bold.cyan('continue'));
|
|
649
667
|
console.log(chalk.gray(' Or type "back" to return to the main menu.'));
|
|
650
668
|
console.log();
|