superbrain-server 1.0.47 → 1.0.49

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "superbrain-server",
3
- "version": "1.0.47",
3
+ "version": "1.0.49",
4
4
  "description": "1-Line Auto-Installer and Server Execution wrapper for SuperBrain",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -58,7 +58,7 @@ any products/places/tools mentioned, and the overall purpose of the page]
58
58
  [N/A — web page]
59
59
 
60
60
  📂 CATEGORY:
61
- [Choose exactly ONE from: product, places, recipe, food, software, book, tv shows, fitness, film, event, other]
61
+ [Choose exactly ONE from: product, places, food, software, book, tv shows, fitness, film, event, other]
62
62
 
63
63
  Be specific and factual. Extract real names, numbers, and details from the content."""
64
64
 
@@ -369,12 +369,18 @@ def _fetch_medium(url: str, timeout: int) -> tuple[str, str, str, str, str] | No
369
369
  r = requests.get(jina_url, headers={"Accept": "application/json"}, timeout=timeout)
370
370
  r.raise_for_status()
371
371
  data = r.json().get("data", {})
372
- title = data.get("title", "")
372
+ metadata = data.get("metadata", {})
373
+ title = data.get("title", "") or metadata.get("title", "")
373
374
  text = data.get("content", "")
374
- author = data.get("author", "")
375
- image = data.get("image", "")
375
+ author = metadata.get("author", "") or metadata.get("article:author", "") or data.get("author", "")
376
+ image = metadata.get("og:image", "") or metadata.get("twitter:image:src", "")
377
+ post_date = metadata.get("article:published_time", "")
378
+ if post_date:
379
+ post_date = post_date[:10] # Just YYYY-MM-DD
380
+ if not image:
381
+ image = _get_favicon_url(url)
376
382
  if text and len(text) > 200:
377
- return title, text, image, author, ""
383
+ return title, text, image, author, post_date
378
384
  print(" [medium] r.jina.ai returned too little text")
379
385
  except Exception as e:
380
386
  print(f" [medium] r.jina.ai failed: {e}")
@@ -45,7 +45,7 @@ identifiable background music, write "No background music". If it's voiceover
45
45
  only, write "Voiceover only".]
46
46
 
47
47
  📂 CATEGORY:
48
- [Choose exactly ONE from: product, places, recipe, food, software, book, tv shows, fitness, film, event, other]
48
+ [Choose exactly ONE from: product, places, food, software, book, tv shows, fitness, film, event, other]
49
49
 
50
50
  Be specific, accurate, and extractive — pull out real names, numbers, and facts from the video."""
51
51
 
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "groq_gpt_oss_20b": {
3
3
  "key": "groq_gpt_oss_20b",
4
- "avg_response_s": 1.476613248725698,
5
- "success_count": 81,
4
+ "avg_response_s": 1.5213420135082059,
5
+ "success_count": 85,
6
6
  "fail_count": 6,
7
7
  "down_until": null,
8
- "last_used": "2026-04-09T18:25:59.312220",
8
+ "last_used": "2026-04-10T06:49:02.416228",
9
9
  "last_error": null,
10
10
  "base_priority": 0.5
11
11
  },
@@ -599,16 +599,6 @@
599
599
  "last_error": null,
600
600
  "base_priority": 25
601
601
  },
602
- "dyn_arcee-ai_trinity-mini_free": {
603
- "key": "dyn_arcee-ai_trinity-mini_free",
604
- "avg_response_s": null,
605
- "success_count": 0,
606
- "fail_count": 0,
607
- "down_until": null,
608
- "last_used": null,
609
- "last_error": null,
610
- "base_priority": 28
611
- },
612
602
  "dyn_nvidia_nemotron-nano-9b-v2_free": {
613
603
  "key": "dyn_nvidia_nemotron-nano-9b-v2_free",
614
604
  "avg_response_s": null,
@@ -617,7 +607,7 @@
617
607
  "down_until": null,
618
608
  "last_used": null,
619
609
  "last_error": null,
620
- "base_priority": 29
610
+ "base_priority": 28
621
611
  },
622
612
  "dyn_minimax_minimax-m2_5_free": {
623
613
  "key": "dyn_minimax_minimax-m2_5_free",
@@ -627,7 +617,7 @@
627
617
  "down_until": null,
628
618
  "last_used": null,
629
619
  "last_error": null,
630
- "base_priority": 30
620
+ "base_priority": 29
631
621
  },
632
622
  "dyn_qwen_qwen3-coder_free": {
633
623
  "key": "dyn_qwen_qwen3-coder_free",
@@ -637,7 +627,7 @@
637
627
  "down_until": null,
638
628
  "last_used": null,
639
629
  "last_error": null,
640
- "base_priority": 31
630
+ "base_priority": 30
641
631
  },
642
632
  "dyn_liquid_lfm-2_5-1_2b-thinking_free": {
643
633
  "key": "dyn_liquid_lfm-2_5-1_2b-thinking_free",
@@ -647,7 +637,7 @@
647
637
  "down_until": null,
648
638
  "last_used": null,
649
639
  "last_error": null,
650
- "base_priority": 32
640
+ "base_priority": 31
651
641
  },
652
642
  "dyn_liquid_lfm-2_5-1_2b-instruct_free": {
653
643
  "key": "dyn_liquid_lfm-2_5-1_2b-instruct_free",
@@ -657,7 +647,7 @@
657
647
  "down_until": null,
658
648
  "last_used": null,
659
649
  "last_error": null,
660
- "base_priority": 33
650
+ "base_priority": 32
661
651
  },
662
652
  "dyn_arcee-ai_trinity-large-preview_free": {
663
653
  "key": "dyn_arcee-ai_trinity-large-preview_free",
@@ -667,7 +657,7 @@
667
657
  "down_until": null,
668
658
  "last_used": null,
669
659
  "last_error": null,
670
- "base_priority": 35
660
+ "base_priority": 34
671
661
  },
672
662
  "dyn_meta-llama_llama-3_2-3b-instruct_free": {
673
663
  "key": "dyn_meta-llama_llama-3_2-3b-instruct_free",
@@ -677,7 +667,7 @@
677
667
  "down_until": null,
678
668
  "last_used": null,
679
669
  "last_error": null,
680
- "base_priority": 39
670
+ "base_priority": 38
681
671
  },
682
672
  "dyn_google_gemma-3n-e2b-it_free": {
683
673
  "key": "dyn_google_gemma-3n-e2b-it_free",
@@ -687,7 +677,7 @@
687
677
  "down_until": null,
688
678
  "last_used": null,
689
679
  "last_error": null,
690
- "base_priority": 43
680
+ "base_priority": 42
691
681
  },
692
682
  "dyn_google_gemma-3-4b-it_free": {
693
683
  "key": "dyn_google_gemma-3-4b-it_free",
@@ -697,7 +687,7 @@
697
687
  "down_until": null,
698
688
  "last_used": null,
699
689
  "last_error": null,
700
- "base_priority": 44
690
+ "base_priority": 43
701
691
  },
702
692
  "dyn_v_google_gemma-3-4b-it_free": {
703
693
  "key": "dyn_v_google_gemma-3-4b-it_free",
@@ -707,7 +697,7 @@
707
697
  "down_until": null,
708
698
  "last_used": null,
709
699
  "last_error": null,
710
- "base_priority": 44
700
+ "base_priority": 43
711
701
  },
712
702
  "dyn_google_gemma-3n-e4b-it_free": {
713
703
  "key": "dyn_google_gemma-3n-e4b-it_free",
@@ -717,7 +707,7 @@
717
707
  "down_until": null,
718
708
  "last_used": null,
719
709
  "last_error": null,
720
- "base_priority": 45
710
+ "base_priority": 44
721
711
  },
722
712
  "dyn_google_gemma-3-12b-it_free": {
723
713
  "key": "dyn_google_gemma-3-12b-it_free",
@@ -727,7 +717,7 @@
727
717
  "down_until": null,
728
718
  "last_used": null,
729
719
  "last_error": null,
730
- "base_priority": 46
720
+ "base_priority": 45
731
721
  },
732
722
  "dyn_v_google_gemma-3-12b-it_free": {
733
723
  "key": "dyn_v_google_gemma-3-12b-it_free",
@@ -737,6 +727,6 @@
737
727
  "down_until": null,
738
728
  "last_used": null,
739
729
  "last_error": null,
740
- "base_priority": 46
730
+ "base_priority": 45
741
731
  }
742
732
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "cached_at": "2026-04-09T18:24:32.227486",
2
+ "cached_at": "2026-04-10T06:49:01.068927",
3
3
  "models": [
4
4
  {
5
5
  "id": "google/lyria-3-pro-preview",
@@ -427,58 +427,6 @@
427
427
  "details": "/api/v1/models/qwen/qwen3-next-80b-a3b-instruct-2509/endpoints"
428
428
  }
429
429
  },
430
- {
431
- "id": "arcee-ai/trinity-mini:free",
432
- "canonical_slug": "arcee-ai/trinity-mini-20251201",
433
- "hugging_face_id": "arcee-ai/Trinity-Mini",
434
- "name": "Arcee AI: Trinity Mini (free)",
435
- "created": 1764601720,
436
- "description": "Trinity Mini is a 26B-parameter (3B active) sparse mixture-of-experts language model featuring 128 experts with 8 active per token. Engineered for efficient reasoning over long contexts (131k) with robust function...",
437
- "context_length": 131072,
438
- "architecture": {
439
- "modality": "text->text",
440
- "input_modalities": [
441
- "text"
442
- ],
443
- "output_modalities": [
444
- "text"
445
- ],
446
- "tokenizer": "Other",
447
- "instruct_type": null
448
- },
449
- "pricing": {
450
- "prompt": "0",
451
- "completion": "0"
452
- },
453
- "top_provider": {
454
- "context_length": 131072,
455
- "max_completion_tokens": null,
456
- "is_moderated": false
457
- },
458
- "per_request_limits": null,
459
- "supported_parameters": [
460
- "include_reasoning",
461
- "max_tokens",
462
- "reasoning",
463
- "response_format",
464
- "structured_outputs",
465
- "temperature",
466
- "tool_choice",
467
- "tools",
468
- "top_k",
469
- "top_p"
470
- ],
471
- "default_parameters": {
472
- "temperature": 0.15,
473
- "top_p": 0.75,
474
- "frequency_penalty": null
475
- },
476
- "knowledge_cutoff": null,
477
- "expiration_date": "2026-04-10",
478
- "links": {
479
- "details": "/api/v1/models/arcee-ai/trinity-mini-20251201/endpoints"
480
- }
481
- },
482
430
  {
483
431
  "id": "nvidia/nemotron-nano-9b-v2:free",
484
432
  "canonical_slug": "nvidia/nemotron-nano-9b-v2",
package/payload/main.py CHANGED
@@ -138,7 +138,7 @@ Generate a report in this EXACT format:
138
138
  [Music/song name if found, or "No background music" or "Voiceover only"]
139
139
 
140
140
  📂 CATEGORY:
141
- [Choose ONE from: product, places, recipe, food, software, book, tv shows, fitness, film, event]
141
+ [Choose ONE from: product, places, food, software, book, tv shows, fitness, film, event]
142
142
 
143
143
  Be specific, concise, and actionable. Focus on useful information."""
144
144
 
@@ -251,7 +251,7 @@ def parse_summary(summary_text):
251
251
  print(f"⚠️ Error parsing summary: {e}")
252
252
 
253
253
  # Fallback: Auto-detect category if empty or unrecognised
254
- valid_categories = {'product', 'places', 'recipe', 'software', 'book',
254
+ valid_categories = {'product', 'places', 'software', 'book',
255
255
  'tv shows', 'fitness', 'film', 'event', 'food', 'other'}
256
256
  if not category or category not in valid_categories:
257
257
  category = auto_detect_category(summary_text, title, summary, tags)
@@ -271,8 +271,7 @@ def auto_detect_category(summary_text, title, summary, tags):
271
271
  category_keywords = {
272
272
  'product': ['camera', 'device', 'gadget', 'tech', 'phone', 'laptop', 'review', 'unbox', 'product', 'dji', 'osmo', 'action cam'],
273
273
  'places': ['travel', 'trip', 'visit', 'destination', 'village', 'city', 'mountain', 'beach', 'hotel', 'itinerary', 'sikkim', 'location'],
274
- 'recipe': ['recipe', 'cooking', 'dish', 'ingredients', 'cook', 'bake'],
275
- 'food': ['food', 'meal', 'cuisine', 'restaurant', 'cafe', 'dining', 'eat'],
274
+ 'food': ['food', 'meal', 'cuisine', 'restaurant', 'cafe', 'dining', 'eat', 'recipe', 'cooking', 'dish', 'ingredients', 'cook', 'bake'],
276
275
  'software': ['app', 'software', 'code', 'programming', 'developer', 'api', 'python', 'javascript'],
277
276
  'book': ['book', 'novel', 'author', 'read', 'literature', 'story', 'chapter'],
278
277
  'fitness': ['workout', 'fitness', 'exercise', 'gym', 'training', 'muscle', 'cardio', 'yoga'],