everything-gemini 2.2.0 → 2.7.0
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/BENCHMARK.md +33 -33
- package/CHANGELOG.md +84 -0
- package/README.md +91 -6
- package/agents/cross-repo-orchestrator.md +33 -0
- package/agents/darwin-prompt-engineer.md +35 -0
- package/agents/resilience-engineer.md +36 -0
- package/agents/swarm-coordinator.md +35 -0
- package/bin/everything-gemini +1175 -13
- package/docs/LAUNCH_KIT_PHP2SHELL.md +240 -0
- package/docs/LAUNCH_KIT_v2.4.0.md +164 -0
- package/docs/LAUNCH_KIT_v2.5.0.md +187 -0
- package/docs/LAUNCH_KIT_v2.6.0.md +174 -0
- package/docs/index.html +32 -14
- package/examples/python-sdk/cross_repo_swarm_and_compaction.py +175 -0
- package/examples/python-sdk/ephemeral_swarm_orchestration.py +169 -0
- package/examples/python-sdk/resilience_and_telemetry_pipeline.py +183 -0
- package/hooks/context-compactor/hooks.json +16 -0
- package/hooks/context-compactor/scripts/compact-context.sh +40 -0
- package/hooks/drift-detector/hooks.json +16 -0
- package/hooks/drift-detector/scripts/detect-drift.sh +50 -0
- package/hooks/thinking-budget/hooks.json +16 -0
- package/hooks/thinking-budget/scripts/budget-thinking.sh +56 -0
- package/package.json +1 -1
- package/skills/adversarial-fuzz-generator/SKILL.md +95 -0
- package/skills/context-distillation-compressor/SKILL.md +109 -0
- package/skills/cost-oracle-finops/SKILL.md +142 -0
- package/skills/cross-repo-swarm-sync/SKILL.md +122 -0
- package/skills/cve-remediation-orchestrator/SKILL.md +111 -0
- package/skills/cve-remediation-orchestrator/scripts/verify-host-hardening.sh +72 -0
- package/skills/dynamic-thinking-allocation/SKILL.md +105 -0
- package/skills/ebpf-microvm-sandbox/SKILL.md +113 -0
- package/skills/ebpf-sandbox-enforcer/SKILL.md +101 -0
- package/skills/envoy-ai-gateway/SKILL.md +175 -0
- package/skills/ephemeral-swarm-orchestrator/SKILL.md +124 -0
- package/skills/gemini-live-multimodal/SKILL.md +149 -0
- package/skills/gemini-live-screen-vision/SKILL.md +109 -0
- package/skills/genetic-prompt-cross-pollinator/SKILL.md +110 -0
- package/skills/harness3-mutation-testing/SKILL.md +120 -0
- package/skills/instinct-distillation-compiler/SKILL.md +103 -0
- package/skills/opentelemetry-agent-observability/SKILL.md +139 -0
- package/skills/php2shell-version-auditor/SKILL.md +95 -0
- package/skills/phpcheck-server/SKILL.md +102 -0
- package/skills/phpcheck-server/scripts/audit-server.sh +112 -0
- package/skills/phpcheck-url/SKILL.md +72 -0
- package/skills/phpcheck-url/scripts/phpcheck.js +160 -0
- package/skills/quantum-safe-cryptography/SKILL.md +84 -0
- package/skills/spanner-change-streams/SKILL.md +88 -0
- package/skills/speculative-decoding-orchestrator/SKILL.md +108 -0
- package/skills/vertex-ai-feature-store/SKILL.md +110 -0
- package/skills/webrtc-agent-gateway/SKILL.md +199 -0
- package/tests/cli.test.js +253 -14
package/tests/cli.test.js
CHANGED
|
@@ -90,10 +90,10 @@ it('should benchmark ecosystem components and output valid JSON with --json', ()
|
|
|
90
90
|
const res = runCli('benchmark --json');
|
|
91
91
|
assert.strictEqual(res.status, 0);
|
|
92
92
|
const data = JSON.parse(res.stdout);
|
|
93
|
-
assert.strictEqual(data.totalComponents,
|
|
94
|
-
assert.strictEqual(data.progressiveSkillsCount,
|
|
95
|
-
assert.strictEqual(data.scopedAgentsCount,
|
|
96
|
-
assert.strictEqual(data.lifecycleHooksCount,
|
|
93
|
+
assert.strictEqual(data.totalComponents, 121);
|
|
94
|
+
assert.strictEqual(data.progressiveSkillsCount, 92);
|
|
95
|
+
assert.strictEqual(data.scopedAgentsCount, 17);
|
|
96
|
+
assert.strictEqual(data.lifecycleHooksCount, 12);
|
|
97
97
|
assert(data.totalRunbookTokens > 15000, 'Expected >15,000 runbook tokens');
|
|
98
98
|
assert(data.estimatedTokensSavedPerTurn > 8000, 'Expected significant token savings');
|
|
99
99
|
});
|
|
@@ -316,7 +316,7 @@ try {
|
|
|
316
316
|
const dryRes = runCli(`bundle --output "${bundleTarget}" --dry-run`);
|
|
317
317
|
assert.strictEqual(dryRes.status, 0);
|
|
318
318
|
assert.match(dryRes.stdout, /DRY RUN MODE ACTIVATED/);
|
|
319
|
-
assert.match(dryRes.stdout, /Skills to bundle:
|
|
319
|
+
assert.match(dryRes.stdout, /Skills to bundle: 92/);
|
|
320
320
|
assert.strictEqual(fs.existsSync(bundleTarget), false, 'Dry run should not create destination directory');
|
|
321
321
|
|
|
322
322
|
// JSON Dry-run mode
|
|
@@ -324,7 +324,7 @@ try {
|
|
|
324
324
|
assert.strictEqual(jsonRes.status, 0);
|
|
325
325
|
const dryData = JSON.parse(jsonRes.stdout);
|
|
326
326
|
assert.strictEqual(dryData.dryRun, true);
|
|
327
|
-
assert.strictEqual(dryData.manifest.components.totalCount,
|
|
327
|
+
assert.strictEqual(dryData.manifest.components.totalCount, 121);
|
|
328
328
|
|
|
329
329
|
// Live mode
|
|
330
330
|
const liveRes = runCli(`bundle --output "${bundleTarget}"`);
|
|
@@ -477,9 +477,9 @@ try {
|
|
|
477
477
|
assert.strictEqual(jsonRes.status, 0);
|
|
478
478
|
const dryData = JSON.parse(jsonRes.stdout);
|
|
479
479
|
assert.strictEqual(dryData.dryRun, true);
|
|
480
|
-
assert.strictEqual(dryData.manifest.metrics.total_skills,
|
|
481
|
-
assert.strictEqual(dryData.manifest.metrics.total_subagents,
|
|
482
|
-
assert.strictEqual(dryData.manifest.metrics.total_hooks,
|
|
480
|
+
assert.strictEqual(dryData.manifest.metrics.total_skills, 92);
|
|
481
|
+
assert.strictEqual(dryData.manifest.metrics.total_subagents, 17);
|
|
482
|
+
assert.strictEqual(dryData.manifest.metrics.total_hooks, 12);
|
|
483
483
|
|
|
484
484
|
// Live mode
|
|
485
485
|
const liveRes = runCli(`harness2 "${h2Target}"`);
|
|
@@ -524,14 +524,14 @@ try {
|
|
|
524
524
|
});
|
|
525
525
|
|
|
526
526
|
// Benchmark Components Verification
|
|
527
|
-
it('should report
|
|
527
|
+
it('should report 121 components, 92 skills, 17 subagents, and 12 hooks in benchmark --json', () => {
|
|
528
528
|
const res = runCli('benchmark --json');
|
|
529
529
|
assert.strictEqual(res.status, 0);
|
|
530
530
|
const data = JSON.parse(res.stdout);
|
|
531
|
-
assert.strictEqual(data.totalComponents,
|
|
532
|
-
assert.strictEqual(data.progressiveSkillsCount,
|
|
533
|
-
assert.strictEqual(data.scopedAgentsCount,
|
|
534
|
-
assert.strictEqual(data.lifecycleHooksCount,
|
|
531
|
+
assert.strictEqual(data.totalComponents, 121, 'Total components should be 121');
|
|
532
|
+
assert.strictEqual(data.progressiveSkillsCount, 92, 'Progressive skills should be 92');
|
|
533
|
+
assert.strictEqual(data.scopedAgentsCount, 17, 'Scoped agents should be 17');
|
|
534
|
+
assert.strictEqual(data.lifecycleHooksCount, 12, 'Lifecycle hooks should be 12');
|
|
535
535
|
});
|
|
536
536
|
|
|
537
537
|
// Harness² Run & Ingest-Trace tests
|
|
@@ -602,6 +602,245 @@ try {
|
|
|
602
602
|
}
|
|
603
603
|
});
|
|
604
604
|
|
|
605
|
+
// Pre-flight Cost Oracle
|
|
606
|
+
it('should support estimate command in dry-run and json modes', () => {
|
|
607
|
+
const dryRes = runCli('estimate --dry-run');
|
|
608
|
+
assert.strictEqual(dryRes.status, 0);
|
|
609
|
+
assert.match(dryRes.stdout, /Pre-Flight Cost Oracle/);
|
|
610
|
+
assert.match(dryRes.stdout, /gemini-2\.0-flash/);
|
|
611
|
+
assert.match(dryRes.stdout, /FinOps Recommendation/);
|
|
612
|
+
|
|
613
|
+
const jsonRes = runCli('estimate --json');
|
|
614
|
+
assert.strictEqual(jsonRes.status, 0);
|
|
615
|
+
const data = JSON.parse(jsonRes.stdout);
|
|
616
|
+
assert.strictEqual(typeof data.filesAnalyzed, 'number');
|
|
617
|
+
assert.strictEqual(typeof data.progressiveSavingsPercent, 'number');
|
|
618
|
+
assert.ok(data.models['gemini-2.0-flash']);
|
|
619
|
+
assert.ok(data.models['gemini-3.8-extended-thinking']);
|
|
620
|
+
});
|
|
621
|
+
|
|
622
|
+
// Harness³ Darwin Engine & Auto-Bench
|
|
623
|
+
it('should support harness3 auto-bench in dry-run and json modes', () => {
|
|
624
|
+
const dryRes = runCli('harness3 auto-bench --dry-run');
|
|
625
|
+
assert.strictEqual(dryRes.status, 0);
|
|
626
|
+
assert.match(dryRes.stdout, /Harness³: Autonomous Agentic Darwinism/);
|
|
627
|
+
assert.match(dryRes.stdout, /Pareto Optimal/);
|
|
628
|
+
|
|
629
|
+
const jsonRes = runCli('harness3 --json');
|
|
630
|
+
assert.strictEqual(jsonRes.status, 0);
|
|
631
|
+
const data = JSON.parse(jsonRes.stdout);
|
|
632
|
+
assert.strictEqual(data.engine, 'Harness³ Genetic Darwinism & Auto-Bench');
|
|
633
|
+
assert.strictEqual(data.paretoWinningSurface.paretoOptimal, true);
|
|
634
|
+
assert.ok(data.candidates.length >= 5);
|
|
635
|
+
});
|
|
636
|
+
|
|
637
|
+
// Visual Mission Control UI
|
|
638
|
+
it('should support ui mission control in dry-run and json modes', () => {
|
|
639
|
+
const dryRes = runCli('ui --dry-run');
|
|
640
|
+
assert.strictEqual(dryRes.status, 0);
|
|
641
|
+
assert.match(dryRes.stdout, /Visual Mission Control/);
|
|
642
|
+
assert.match(dryRes.stdout, /DRY RUN MODE ACTIVATED/);
|
|
643
|
+
|
|
644
|
+
const jsonRes = runCli('ui --json');
|
|
645
|
+
assert.strictEqual(jsonRes.status, 0);
|
|
646
|
+
const data = JSON.parse(jsonRes.stdout);
|
|
647
|
+
assert.strictEqual(data.metrics.totalComponents, 121);
|
|
648
|
+
assert.strictEqual(data.metrics.progressiveSkills, 92);
|
|
649
|
+
assert.ok(data.endpoints.dashboard);
|
|
650
|
+
});
|
|
651
|
+
|
|
652
|
+
// v2.3.0 Skills Info Verification
|
|
653
|
+
it('should display info for v2.3.0 skills (gemini-live-multimodal, cost-oracle-finops, vertex-ai-feature-store, spanner-change-streams)', () => {
|
|
654
|
+
for (const skill of ['gemini-live-multimodal', 'cost-oracle-finops', 'vertex-ai-feature-store', 'spanner-change-streams']) {
|
|
655
|
+
const res = runCli(`info ${skill}`);
|
|
656
|
+
assert.strictEqual(res.status, 0);
|
|
657
|
+
assert.match(res.stdout, new RegExp(skill));
|
|
658
|
+
}
|
|
659
|
+
});
|
|
660
|
+
|
|
661
|
+
// v2.4.0 Swarm Command
|
|
662
|
+
it('should support swarm command in dry-run and json modes', () => {
|
|
663
|
+
const dryRes = runCli('swarm spawn "test refactor" --workers 3 --dry-run');
|
|
664
|
+
assert.strictEqual(dryRes.status, 0);
|
|
665
|
+
assert.match(dryRes.stdout, /Ephemeral Swarm Intelligence/);
|
|
666
|
+
assert.match(dryRes.stdout, /DRY RUN MODE ACTIVATED|Dry run complete/);
|
|
667
|
+
|
|
668
|
+
const jsonRes = runCli('swarm --json');
|
|
669
|
+
assert.strictEqual(jsonRes.status, 0);
|
|
670
|
+
const data = JSON.parse(jsonRes.stdout);
|
|
671
|
+
assert.strictEqual(data.workerCount, 3);
|
|
672
|
+
assert.strictEqual(data.topology, 'hierarchical');
|
|
673
|
+
assert.strictEqual(data.reclamation.status, 'reclaimed_clean');
|
|
674
|
+
});
|
|
675
|
+
|
|
676
|
+
// v2.4.0 Thinking Command
|
|
677
|
+
it('should support thinking command in dry-run and json modes', () => {
|
|
678
|
+
const dryRes = runCli('thinking budget --level deep --dry-run');
|
|
679
|
+
assert.strictEqual(dryRes.status, 0);
|
|
680
|
+
assert.match(dryRes.stdout, /Dynamic Thinking Allocation/);
|
|
681
|
+
assert.match(dryRes.stdout, /Dry run complete/);
|
|
682
|
+
|
|
683
|
+
const jsonRes = runCli('thinking --json');
|
|
684
|
+
assert.strictEqual(jsonRes.status, 0);
|
|
685
|
+
const data = JSON.parse(jsonRes.stdout);
|
|
686
|
+
assert.strictEqual(data.cognitiveLevel, 'Deep Reasoning');
|
|
687
|
+
assert.strictEqual(data.recommendedModel, 'gemini-3.8-extended-thinking');
|
|
688
|
+
assert.strictEqual(data.allocatedThinkingTokens, 16384);
|
|
689
|
+
});
|
|
690
|
+
|
|
691
|
+
// v2.4.0 Skills Info Verification
|
|
692
|
+
it('should display info for v2.4.0 skills (ephemeral-swarm-orchestrator, dynamic-thinking-allocation, ebpf-sandbox-enforcer, quantum-safe-cryptography)', () => {
|
|
693
|
+
for (const skill of ['ephemeral-swarm-orchestrator', 'dynamic-thinking-allocation', 'ebpf-sandbox-enforcer', 'quantum-safe-cryptography']) {
|
|
694
|
+
const res = runCli(`info ${skill}`);
|
|
695
|
+
assert.strictEqual(res.status, 0);
|
|
696
|
+
assert.match(res.stdout, new RegExp(skill));
|
|
697
|
+
}
|
|
698
|
+
});
|
|
699
|
+
|
|
700
|
+
// v2.4.0 Subagent & Hook Info Verification
|
|
701
|
+
it('should display info for swarm-coordinator subagent and thinking-budget hook', () => {
|
|
702
|
+
const agentRes = runCli('info swarm-coordinator');
|
|
703
|
+
assert.strictEqual(agentRes.status, 0);
|
|
704
|
+
assert.match(agentRes.stdout, /swarm-coordinator/);
|
|
705
|
+
|
|
706
|
+
const hookRes = runCli('info thinking-budget');
|
|
707
|
+
assert.strictEqual(hookRes.status, 0);
|
|
708
|
+
assert.match(hookRes.stdout, /thinking-budget/);
|
|
709
|
+
});
|
|
710
|
+
|
|
711
|
+
// v2.5.0 Resilience Command
|
|
712
|
+
it('should support resilience command in dry-run and json modes', () => {
|
|
713
|
+
const dryRes = runCli('resilience run --iterations 10 --dry-run');
|
|
714
|
+
assert.strictEqual(dryRes.status, 0);
|
|
715
|
+
assert.match(dryRes.stdout, /Harness³ Mutation Testing & Chaos Resilience Engine/);
|
|
716
|
+
assert.match(dryRes.stdout, /Dry run complete/);
|
|
717
|
+
|
|
718
|
+
const jsonRes = runCli('resilience --json');
|
|
719
|
+
assert.strictEqual(jsonRes.status, 0);
|
|
720
|
+
const data = JSON.parse(jsonRes.stdout);
|
|
721
|
+
assert.strictEqual(data.verdict, 'PASSED_PRODUCTION_CERTIFIED');
|
|
722
|
+
assert.ok(data.faultMatrix.length >= 5);
|
|
723
|
+
assert.strictEqual(data.circuitBreaker.status, 'active');
|
|
724
|
+
});
|
|
725
|
+
|
|
726
|
+
// v2.5.0 Telemetry Command
|
|
727
|
+
it('should support telemetry command in dry-run and json modes', () => {
|
|
728
|
+
const dryRes = runCli('telemetry status --dry-run');
|
|
729
|
+
assert.strictEqual(dryRes.status, 0);
|
|
730
|
+
assert.match(dryRes.stdout, /OpenTelemetry GenAI Observability/);
|
|
731
|
+
assert.match(dryRes.stdout, /Dry run complete/);
|
|
732
|
+
|
|
733
|
+
const jsonRes = runCli('telemetry --json');
|
|
734
|
+
assert.strictEqual(jsonRes.status, 0);
|
|
735
|
+
const data = JSON.parse(jsonRes.stdout);
|
|
736
|
+
assert.strictEqual(data.semanticConventions, 'OpenTelemetry GenAI v1.30+');
|
|
737
|
+
assert.ok(data.spans.length >= 4);
|
|
738
|
+
assert.strictEqual(data.tokenMetrics.thinkingTokens, 20480);
|
|
739
|
+
});
|
|
740
|
+
|
|
741
|
+
// v2.5.0 Skills Info Verification
|
|
742
|
+
it('should display info for v2.5.0 skills (webrtc-agent-gateway, opentelemetry-agent-observability, harness3-mutation-testing, envoy-ai-gateway)', () => {
|
|
743
|
+
for (const skill of ['webrtc-agent-gateway', 'opentelemetry-agent-observability', 'harness3-mutation-testing', 'envoy-ai-gateway']) {
|
|
744
|
+
const res = runCli(`info ${skill}`);
|
|
745
|
+
assert.strictEqual(res.status, 0);
|
|
746
|
+
assert.match(res.stdout, new RegExp(skill));
|
|
747
|
+
}
|
|
748
|
+
});
|
|
749
|
+
|
|
750
|
+
// v2.5.0 Subagent & Hook Info Verification
|
|
751
|
+
it('should display info for resilience-engineer subagent and drift-detector hook', () => {
|
|
752
|
+
const agentRes = runCli('info resilience-engineer');
|
|
753
|
+
assert.strictEqual(agentRes.status, 0);
|
|
754
|
+
assert.match(agentRes.stdout, /resilience-engineer/);
|
|
755
|
+
|
|
756
|
+
const hookRes = runCli('info drift-detector');
|
|
757
|
+
assert.strictEqual(hookRes.status, 0);
|
|
758
|
+
assert.match(hookRes.stdout, /drift-detector/);
|
|
759
|
+
});
|
|
760
|
+
|
|
761
|
+
// v2.6.0 Cross-Repo Command
|
|
762
|
+
it('should support cross-repo command in dry-run and json modes', () => {
|
|
763
|
+
const dryRes = runCli('cross-repo sync --dry-run');
|
|
764
|
+
assert.strictEqual(dryRes.status, 0);
|
|
765
|
+
assert.match(dryRes.stdout, /Cross-Repository Swarm Synchronization/);
|
|
766
|
+
assert.match(dryRes.stdout, /Dry run complete/);
|
|
767
|
+
|
|
768
|
+
const jsonRes = runCli('cross-repo --json');
|
|
769
|
+
assert.strictEqual(jsonRes.status, 0);
|
|
770
|
+
const data = JSON.parse(jsonRes.stdout);
|
|
771
|
+
assert.strictEqual(data.twoPhaseCommitState, 'PREPARED');
|
|
772
|
+
assert.ok(data.repositories.length >= 3);
|
|
773
|
+
assert.ok(data.eventMesh.topic);
|
|
774
|
+
});
|
|
775
|
+
|
|
776
|
+
// v2.6.0 Compact Command
|
|
777
|
+
it('should support compact command in dry-run and json modes', () => {
|
|
778
|
+
const dryRes = runCli('compact analyze --dry-run');
|
|
779
|
+
assert.strictEqual(dryRes.status, 0);
|
|
780
|
+
assert.match(dryRes.stdout, /Context Distillation & Semantic Compaction/);
|
|
781
|
+
assert.match(dryRes.stdout, /Dry run complete/);
|
|
782
|
+
|
|
783
|
+
const jsonRes = runCli('compact --ast --json');
|
|
784
|
+
assert.strictEqual(jsonRes.status, 0);
|
|
785
|
+
const data = JSON.parse(jsonRes.stdout);
|
|
786
|
+
assert.strictEqual(data.astSkeletalization, true);
|
|
787
|
+
assert.ok(data.metrics.originalTokens > 0);
|
|
788
|
+
assert.ok(data.compactionStrategies.length >= 3);
|
|
789
|
+
});
|
|
790
|
+
|
|
791
|
+
// v2.6.0 Skills Info Verification
|
|
792
|
+
it('should display info for v2.6.0 skills (cross-repo-swarm-sync, ebpf-microvm-sandbox, context-distillation-compressor, speculative-decoding-orchestrator)', () => {
|
|
793
|
+
for (const skill of ['cross-repo-swarm-sync', 'ebpf-microvm-sandbox', 'context-distillation-compressor', 'speculative-decoding-orchestrator']) {
|
|
794
|
+
const res = runCli(`info ${skill}`);
|
|
795
|
+
assert.strictEqual(res.status, 0);
|
|
796
|
+
assert.match(res.stdout, new RegExp(skill));
|
|
797
|
+
}
|
|
798
|
+
});
|
|
799
|
+
|
|
800
|
+
// v2.6.0 Subagent & Hook Info Verification
|
|
801
|
+
it('should display info for cross-repo-orchestrator subagent and context-compactor hook', () => {
|
|
802
|
+
const agentRes = runCli('info cross-repo-orchestrator');
|
|
803
|
+
assert.strictEqual(agentRes.status, 0);
|
|
804
|
+
assert.match(agentRes.stdout, /cross-repo-orchestrator/);
|
|
805
|
+
|
|
806
|
+
const hookRes = runCli('info context-compactor');
|
|
807
|
+
assert.strictEqual(hookRes.status, 0);
|
|
808
|
+
assert.match(hookRes.stdout, /context-compactor/);
|
|
809
|
+
});
|
|
810
|
+
|
|
811
|
+
// PHP2Shell Version Checker & Skill Suite
|
|
812
|
+
it('should audit remote URLs or local server with phpcheck subcommand', () => {
|
|
813
|
+
const helpRes = runCli('phpcheck --help');
|
|
814
|
+
assert.strictEqual(helpRes.status, 0);
|
|
815
|
+
assert.match(helpRes.stdout, /PHP2Shell Patch Checker/);
|
|
816
|
+
assert.match(helpRes.stdout, /CVE-2026-109618/);
|
|
817
|
+
|
|
818
|
+
const serverRes = runCli('phpcheck --server --json');
|
|
819
|
+
assert.ok(serverRes.status === 0 || serverRes.status === 3);
|
|
820
|
+
const serverData = JSON.parse(serverRes.stdout);
|
|
821
|
+
assert.ok(Array.isArray(serverData.cves));
|
|
822
|
+
assert.ok(serverData.patch_status);
|
|
823
|
+
|
|
824
|
+
for (const skill of ['phpcheck-url', 'phpcheck-server', 'php2shell-version-auditor', 'cve-remediation-orchestrator']) {
|
|
825
|
+
const infoRes = runCli(`info ${skill}`);
|
|
826
|
+
assert.strictEqual(infoRes.status, 0);
|
|
827
|
+
assert.match(infoRes.stdout, new RegExp(skill));
|
|
828
|
+
}
|
|
829
|
+
|
|
830
|
+
const { versionStatus } = require(path.join(REPO_ROOT, 'skills', 'phpcheck-url', 'scripts', 'phpcheck.js'));
|
|
831
|
+
assert.strictEqual(versionStatus('8.2.34'), 'potentially_vulnerable');
|
|
832
|
+
assert.strictEqual(versionStatus('8.2.35'), 'ok');
|
|
833
|
+
assert.strictEqual(versionStatus('8.3.35'), 'potentially_vulnerable');
|
|
834
|
+
assert.strictEqual(versionStatus('8.3.36'), 'ok');
|
|
835
|
+
assert.strictEqual(versionStatus('8.4.26'), 'potentially_vulnerable');
|
|
836
|
+
assert.strictEqual(versionStatus('8.4.27'), 'ok');
|
|
837
|
+
assert.strictEqual(versionStatus('8.5.11'), 'potentially_vulnerable');
|
|
838
|
+
assert.strictEqual(versionStatus('8.5.12'), 'ok');
|
|
839
|
+
assert.strictEqual(versionStatus('8.1.35'), 'potentially_vulnerable');
|
|
840
|
+
assert.strictEqual(versionStatus('7.4.33'), 'potentially_vulnerable');
|
|
841
|
+
assert.strictEqual(versionStatus('8.3.0-dev'), 'unknown');
|
|
842
|
+
});
|
|
843
|
+
|
|
605
844
|
} finally {
|
|
606
845
|
try {
|
|
607
846
|
fs.rmSync(tempWorkspace, { recursive: true, force: true });
|