@polderlabs/bizar 4.4.13 → 4.5.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.
Files changed (90) hide show
  1. package/bizar-dash/CHANGELOG.md +37 -276
  2. package/bizar-dash/dist/assets/main-CDFKHzBg.css +1 -0
  3. package/bizar-dash/dist/assets/main-NYFpS2wY.js +312 -0
  4. package/bizar-dash/dist/assets/main-NYFpS2wY.js.map +1 -0
  5. package/bizar-dash/dist/assets/{mobile-DSb-t42Y.js → mobile--0FBIKX3.js} +2 -2
  6. package/bizar-dash/dist/assets/{mobile-DSb-t42Y.js.map → mobile--0FBIKX3.js.map} +1 -1
  7. package/bizar-dash/dist/assets/mobile-OgRp8VIb.js +352 -0
  8. package/bizar-dash/dist/assets/mobile-OgRp8VIb.js.map +1 -0
  9. package/bizar-dash/dist/index.html +3 -3
  10. package/bizar-dash/dist/mobile.html +2 -2
  11. package/bizar-dash/skills/agent-baseline/SKILL.md +80 -0
  12. package/bizar-dash/skills/bizar/SKILL.md +96 -0
  13. package/bizar-dash/skills/chat/SKILL.md +74 -0
  14. package/bizar-dash/skills/lightrag/SKILL.md +75 -0
  15. package/bizar-dash/skills/minimax/SKILL.md +80 -0
  16. package/bizar-dash/skills/obsidian/SKILL.md +55 -0
  17. package/bizar-dash/skills/providers/SKILL.md +75 -0
  18. package/bizar-dash/skills/sdk/SKILL.md +138 -0
  19. package/bizar-dash/skills/self-improvement/SKILL.md +53 -0
  20. package/bizar-dash/skills/skills-cli/SKILL.md +94 -0
  21. package/bizar-dash/skills/usage/SKILL.md +62 -0
  22. package/bizar-dash/src/server/api.mjs +12 -0
  23. package/bizar-dash/src/server/memory-lightrag.mjs +5 -2
  24. package/bizar-dash/src/server/memory-store.mjs +38 -0
  25. package/bizar-dash/src/server/minimax-usage-store.mjs +372 -0
  26. package/bizar-dash/src/server/minimax.mjs +196 -5
  27. package/bizar-dash/src/server/providers-store.mjs +956 -0
  28. package/bizar-dash/src/server/routes/config.mjs +52 -1
  29. package/bizar-dash/src/server/routes/env-vars.mjs +165 -0
  30. package/bizar-dash/src/server/routes/lightrag.mjs +154 -0
  31. package/bizar-dash/src/server/routes/memory.mjs +241 -1
  32. package/bizar-dash/src/server/routes/opencode-session-detail.mjs +14 -29
  33. package/bizar-dash/src/server/routes/opencode-sessions.mjs +205 -3
  34. package/bizar-dash/src/server/routes/providers.mjs +266 -5
  35. package/bizar-dash/src/server/routes/skills.mjs +32 -43
  36. package/bizar-dash/src/server/routes/update.mjs +340 -0
  37. package/bizar-dash/src/server/routes/usage.mjs +136 -0
  38. package/bizar-dash/src/server/serve-info.mjs +135 -4
  39. package/bizar-dash/src/server/server.mjs +4 -0
  40. package/bizar-dash/src/server/skills-store.mjs +152 -262
  41. package/bizar-dash/src/web/App.tsx +118 -29
  42. package/bizar-dash/src/web/components/EnvVarManager.tsx +247 -0
  43. package/bizar-dash/src/web/components/SettingsSearch.tsx +213 -0
  44. package/bizar-dash/src/web/components/Topbar.tsx +0 -1
  45. package/bizar-dash/src/web/components/UsageChart.tsx +250 -0
  46. package/bizar-dash/src/web/components/UsageTable.tsx +90 -0
  47. package/bizar-dash/src/web/components/chat/ChatComposer.tsx +21 -25
  48. package/bizar-dash/src/web/components/chat/ChatInfoPanel.tsx +199 -37
  49. package/bizar-dash/src/web/components/chat/ChatThread.tsx +29 -17
  50. package/bizar-dash/src/web/components/chat/FloatingComposer.tsx +7 -1
  51. package/bizar-dash/src/web/components/chat/InfoPanel.tsx +71 -6
  52. package/bizar-dash/src/web/components/chat/useChat.ts +751 -257
  53. package/bizar-dash/src/web/lib/api.ts +43 -0
  54. package/bizar-dash/src/web/main.tsx +1 -0
  55. package/bizar-dash/src/web/mobile/views/MobileChat.tsx +110 -35
  56. package/bizar-dash/src/web/styles/chat.css +135 -1
  57. package/bizar-dash/src/web/styles/main.css +46 -0
  58. package/bizar-dash/src/web/styles/minimax-usage.css +335 -0
  59. package/bizar-dash/src/web/styles/settings.css +418 -0
  60. package/bizar-dash/src/web/styles/skills.css +302 -0
  61. package/bizar-dash/src/web/styles/tasks.css +288 -0
  62. package/bizar-dash/src/web/views/Chat.tsx +276 -48
  63. package/bizar-dash/src/web/views/Config.tsx +3 -2065
  64. package/bizar-dash/src/web/views/MiniMaxUsage.tsx +476 -461
  65. package/bizar-dash/src/web/views/Settings.tsx +6 -0
  66. package/bizar-dash/src/web/views/Skills.tsx +208 -260
  67. package/bizar-dash/src/web/views/Tasks.tsx +348 -1119
  68. package/bizar-dash/tests/chat-session-create.test.mjs +391 -0
  69. package/bizar-dash/tests/chat-session-stream.test.mjs +308 -0
  70. package/bizar-dash/tests/env-vars-store.test.mjs +216 -0
  71. package/bizar-dash/tests/lightrag-defaults.node.test.mjs +118 -0
  72. package/bizar-dash/tests/minimax-chat-usage.test.mjs +178 -0
  73. package/bizar-dash/tests/minimax-usage-store.node.test.mjs +293 -0
  74. package/bizar-dash/tests/opencode-sessions-detail.test.mjs +12 -9
  75. package/bizar-dash/tests/providers-store-backup-keys.node.test.mjs +479 -3
  76. package/bizar-dash/tests/providers-store-search.node.test.mjs +166 -0
  77. package/bizar-dash/tests/skills-list.test.mjs +232 -0
  78. package/bizar-dash/tests/skills-search.test.mjs +222 -0
  79. package/bizar-dash/tests/tasks-create.test.mjs +187 -0
  80. package/bizar-dash/tests/update-check.test.mjs +127 -0
  81. package/bizar-dash/tests/update-run.test.mjs +266 -0
  82. package/cli/bin.mjs +82 -1
  83. package/cli/provision.mjs +118 -4
  84. package/config/agents/_shared/SKILLS.md +109 -0
  85. package/package.json +1 -1
  86. package/bizar-dash/dist/assets/main-BB5mJurD.js +0 -352
  87. package/bizar-dash/dist/assets/main-BB5mJurD.js.map +0 -1
  88. package/bizar-dash/dist/assets/main-BsnQLXdh.css +0 -1
  89. package/bizar-dash/dist/assets/mobile-Dl1q7Cyq.js +0 -354
  90. package/bizar-dash/dist/assets/mobile-Dl1q7Cyq.js.map +0 -1
@@ -505,3 +505,338 @@
505
505
  from { transform: rotate(0deg); }
506
506
  to { transform: rotate(360deg); }
507
507
  }
508
+
509
+ /* ═══════════════════════════════════════════════════════════════════
510
+ * Sub-tab switcher (v4.6.0)
511
+ * ═══════════════════════════════════════════════════════════════════ */
512
+ .view-minimax-usage .minimax-sub-tabs {
513
+ display: flex;
514
+ gap: 4px;
515
+ border-bottom: 1px solid var(--border);
516
+ margin-bottom: 16px;
517
+ padding-bottom: 0;
518
+ }
519
+ .view-minimax-usage .minimax-sub-tab {
520
+ display: inline-flex;
521
+ align-items: center;
522
+ gap: 5px;
523
+ padding: 7px 14px;
524
+ font-size: 13px;
525
+ font-weight: 500;
526
+ cursor: pointer;
527
+ border: none;
528
+ background: transparent;
529
+ color: var(--text-muted);
530
+ border-bottom: 2px solid transparent;
531
+ margin-bottom: -1px;
532
+ border-radius: 6px 6px 0 0;
533
+ transition: color 120ms ease, border-color 120ms ease;
534
+ }
535
+ .view-minimax-usage .minimax-sub-tab:hover { color: var(--text); }
536
+ .view-minimax-usage .minimax-sub-tab.is-active {
537
+ color: var(--accent);
538
+ border-bottom-color: var(--accent);
539
+ }
540
+
541
+ /* ═══════════════════════════════════════════════════════════════════
542
+ * Usage analytics extensions (v4.6.0)
543
+ * ═══════════════════════════════════════════════════════════════════ */
544
+
545
+ /* ── Time range chip group ─────────────────────────────────────────── */
546
+ .view-minimax-usage .usage-time-range {
547
+ display: flex;
548
+ gap: 6px;
549
+ align-items: center;
550
+ flex-wrap: wrap;
551
+ }
552
+ .view-minimax-usage .usage-range-chip {
553
+ padding: 4px 12px;
554
+ border-radius: 20px;
555
+ font-size: 12px;
556
+ font-weight: 500;
557
+ cursor: pointer;
558
+ border: 1px solid var(--border);
559
+ background: var(--bg-1);
560
+ color: var(--text-muted);
561
+ transition: all 120ms ease;
562
+ user-select: none;
563
+ }
564
+ .view-minimax-usage .usage-range-chip:hover {
565
+ border-color: var(--accent);
566
+ color: var(--text);
567
+ }
568
+ .view-minimax-usage .usage-range-chip.is-active {
569
+ background: var(--accent);
570
+ border-color: var(--accent);
571
+ color: #fff;
572
+ }
573
+ .view-minimax-usage .usage-custom-dates {
574
+ display: flex;
575
+ gap: 8px;
576
+ align-items: center;
577
+ margin-left: 8px;
578
+ }
579
+ .view-minimax-usage .usage-date-input {
580
+ background: var(--bg-2);
581
+ border: 1px solid var(--border);
582
+ border-radius: 6px;
583
+ padding: 4px 8px;
584
+ color: var(--text);
585
+ font-size: 12px;
586
+ font-family: var(--font-mono, ui-monospace, monospace);
587
+ outline: none;
588
+ }
589
+ .view-minimax-usage .usage-date-input:focus {
590
+ border-color: var(--accent);
591
+ }
592
+
593
+ /* ── KPI row ───────────────────────────────────────────────────────── */
594
+ .view-minimax-usage .usage-kpi-row {
595
+ display: grid;
596
+ grid-template-columns: repeat(5, 1fr);
597
+ gap: 12px;
598
+ }
599
+ @media (max-width: 900px) {
600
+ .view-minimax-usage .usage-kpi-row { grid-template-columns: repeat(3, 1fr); }
601
+ }
602
+ @media (max-width: 600px) {
603
+ .view-minimax-usage .usage-kpi-row { grid-template-columns: repeat(2, 1fr); }
604
+ }
605
+ .view-minimax-usage .usage-kpi-card {
606
+ background: var(--bg-1);
607
+ border: 1px solid var(--border);
608
+ border-radius: 8px;
609
+ padding: 14px 16px;
610
+ display: flex;
611
+ flex-direction: column;
612
+ gap: 4px;
613
+ }
614
+ .view-minimax-usage .usage-kpi-label {
615
+ font-size: 11px;
616
+ letter-spacing: 0.05em;
617
+ text-transform: uppercase;
618
+ color: var(--text-muted);
619
+ }
620
+ .view-minimax-usage .usage-kpi-value {
621
+ font-size: 22px;
622
+ font-weight: 700;
623
+ font-family: var(--font-mono, ui-monospace, monospace);
624
+ color: var(--text);
625
+ line-height: 1.1;
626
+ }
627
+ .view-minimax-usage .usage-kpi-sub {
628
+ font-size: 11px;
629
+ color: var(--text-muted);
630
+ }
631
+ .view-minimax-usage .usage-kpi-value.is-warn { color: var(--warning, #d29922); }
632
+ .view-minimax-usage .usage-kpi-value.is-err { color: var(--error, #f85149); }
633
+ .view-minimax-usage .usage-kpi-value.is-ok { color: var(--success, #3fb950); }
634
+
635
+ /* ── Chart ──────────────────────────────────────────────────────────── */
636
+ .view-minimax-usage .usage-chart-card { padding: 0; }
637
+ .view-minimax-usage .usage-chart-wrap {
638
+ padding: 12px 16px 8px;
639
+ }
640
+ .view-minimax-usage .usage-chart-empty {
641
+ display: flex;
642
+ align-items: center;
643
+ justify-content: center;
644
+ color: var(--text-muted);
645
+ font-size: 13px;
646
+ padding: 20px;
647
+ background: var(--bg-1);
648
+ border: 1px solid var(--border);
649
+ border-radius: 8px;
650
+ }
651
+ .view-minimax-usage .usage-chart-tooltip {
652
+ position: absolute;
653
+ background: var(--bg-elevated, #1a1a2e);
654
+ border: 1px solid var(--border);
655
+ border-radius: 8px;
656
+ padding: 8px 12px;
657
+ font-size: 12px;
658
+ color: var(--text);
659
+ pointer-events: none;
660
+ z-index: 10;
661
+ white-space: nowrap;
662
+ box-shadow: 0 4px 16px rgba(0,0,0,0.4);
663
+ }
664
+ .view-minimax-usage .usage-tooltip-date {
665
+ font-weight: 600;
666
+ margin-bottom: 4px;
667
+ color: var(--text);
668
+ }
669
+ .view-minimax-usage .usage-tooltip-row {
670
+ display: flex;
671
+ gap: 6px;
672
+ align-items: center;
673
+ font-size: 11px;
674
+ color: var(--text-muted);
675
+ margin-top: 2px;
676
+ }
677
+ .view-minimax-usage .usage-tooltip-row strong {
678
+ color: var(--text);
679
+ font-family: var(--font-mono, ui-monospace, monospace);
680
+ }
681
+ .view-minimax-usage .usage-tooltip-dot {
682
+ width: 8px;
683
+ height: 8px;
684
+ border-radius: 50%;
685
+ flex-shrink: 0;
686
+ }
687
+
688
+ /* ── Legend ─────────────────────────────────────────────────────────── */
689
+ .view-minimax-usage .usage-legend {
690
+ display: flex;
691
+ gap: 16px;
692
+ padding: 0 16px 8px;
693
+ font-size: 11px;
694
+ color: var(--text-muted);
695
+ }
696
+ .view-minimax-usage .usage-legend-item {
697
+ display: flex;
698
+ align-items: center;
699
+ gap: 5px;
700
+ }
701
+ .view-minimax-usage .usage-legend-bar {
702
+ width: 12px;
703
+ height: 8px;
704
+ border-radius: 2px;
705
+ }
706
+ .view-minimax-usage .usage-legend-line {
707
+ width: 16px;
708
+ height: 2px;
709
+ }
710
+
711
+ /* ── Per-model table ───────────────────────────────────────────────── */
712
+ .view-minimax-usage .usage-table-wrap {
713
+ overflow-x: auto;
714
+ border-radius: 8px;
715
+ border: 1px solid var(--border);
716
+ }
717
+ .view-minimax-usage .usage-table {
718
+ width: 100%;
719
+ border-collapse: collapse;
720
+ font-size: 12px;
721
+ font-family: var(--font-mono, ui-monospace, monospace);
722
+ min-width: 640px;
723
+ }
724
+ .view-minimax-usage .usage-table thead {
725
+ background: var(--bg-elevated, #1a1a2e);
726
+ position: sticky;
727
+ top: 0;
728
+ z-index: 1;
729
+ }
730
+ .view-minimax-usage .usage-table th {
731
+ padding: 8px 12px;
732
+ text-align: left;
733
+ font-size: 11px;
734
+ font-weight: 600;
735
+ text-transform: uppercase;
736
+ letter-spacing: 0.05em;
737
+ color: var(--text-muted);
738
+ border-bottom: 1px solid var(--border);
739
+ white-space: nowrap;
740
+ }
741
+ .view-minimax-usage .usage-sort-header {
742
+ cursor: pointer;
743
+ user-select: none;
744
+ }
745
+ .view-minimax-usage .usage-sort-header:hover { color: var(--text); }
746
+ .view-minimax-usage .usage-sort-header.is-active { color: var(--accent); }
747
+ .view-minimax-usage .usage-sort-icon { margin-left: 3px; font-size: 10px; }
748
+ .view-minimax-usage .usage-table td {
749
+ padding: 7px 12px;
750
+ border-bottom: 1px solid var(--border);
751
+ color: var(--text);
752
+ vertical-align: middle;
753
+ }
754
+ .view-minimax-usage .usage-table tbody tr:last-child td { border-bottom: none; }
755
+ .view-minimax-usage .usage-table tbody tr:hover td { background: rgba(255,255,255,0.02); }
756
+ .view-minimax-usage .usage-table-model code {
757
+ font-family: var(--font-mono, ui-monospace, monospace);
758
+ font-size: 12px;
759
+ color: var(--accent);
760
+ background: rgba(0,0,0,0.2);
761
+ padding: 1px 5px;
762
+ border-radius: 3px;
763
+ }
764
+ .view-minimax-usage .usage-table-empty {
765
+ text-align: center;
766
+ color: var(--text-muted);
767
+ padding: 24px;
768
+ }
769
+ .view-minimax-usage .usage-table td.mono {
770
+ font-family: var(--font-mono, ui-monospace, monospace);
771
+ font-size: 12px;
772
+ }
773
+ .view-minimax-usage .usage-table td.is-err { color: var(--error, #f85149); }
774
+
775
+ /* ── Per-key status row ───────────────────────────────────────────── */
776
+ .view-minimax-usage .usage-key-row {
777
+ display: flex;
778
+ gap: 8px;
779
+ flex-wrap: wrap;
780
+ }
781
+ .view-minimax-usage .usage-key-badge {
782
+ display: inline-flex;
783
+ align-items: center;
784
+ gap: 5px;
785
+ padding: 3px 10px;
786
+ border-radius: 20px;
787
+ font-size: 11px;
788
+ border: 1px solid var(--border);
789
+ background: var(--bg-2);
790
+ color: var(--text-muted);
791
+ }
792
+ .view-minimax-usage .usage-key-badge.is-active {
793
+ border-color: var(--success, #3fb950);
794
+ background: rgba(63, 185, 80, 0.08);
795
+ color: var(--success, #3fb950);
796
+ }
797
+ .view-minimax-usage .usage-key-badge.is-backup {
798
+ border-color: var(--warning, #d29922);
799
+ background: rgba(217, 158, 38, 0.08);
800
+ color: var(--warning, #d29922);
801
+ }
802
+ .view-minimax-usage .usage-key-dot {
803
+ width: 6px;
804
+ height: 6px;
805
+ border-radius: 50%;
806
+ background: currentColor;
807
+ }
808
+
809
+ /* ── Recent activity ───────────────────────────────────────────────── */
810
+ .view-minimax-usage .usage-recent-list {
811
+ display: flex;
812
+ flex-direction: column;
813
+ gap: 1px;
814
+ }
815
+ .view-minimax-usage .usage-recent-item {
816
+ display: grid;
817
+ grid-template-columns: 160px 1fr 80px 80px 60px;
818
+ gap: 12px;
819
+ align-items: center;
820
+ padding: 6px 10px;
821
+ border-radius: 5px;
822
+ font-size: 12px;
823
+ font-family: var(--font-mono, ui-monospace, monospace);
824
+ }
825
+ .view-minimax-usage .usage-recent-item:hover { background: rgba(255,255,255,0.02); }
826
+ .view-minimax-usage .usage-recent-time { color: var(--text-muted); font-size: 11px; }
827
+ .view-minimax-usage .usage-recent-model code {
828
+ color: var(--accent);
829
+ font-size: 11px;
830
+ }
831
+ .view-minimax-usage .usage-recent-tokens { color: var(--text); text-align: right; }
832
+ .view-minimax-usage .usage-recent-latency { color: var(--text-muted); text-align: right; }
833
+ .view-minimax-usage .usage-recent-endpoint { color: var(--text-muted); font-size: 10px; text-transform: uppercase; }
834
+ .view-minimax-usage .usage-recent-item.is-err { opacity: 0.7; }
835
+ @media (max-width: 640px) {
836
+ .view-minimax-usage .usage-recent-item {
837
+ grid-template-columns: 120px 1fr 60px;
838
+ }
839
+ .view-minimax-usage .usage-recent-tokens,
840
+ .view-minimax-usage .usage-recent-latency { display: none; }
841
+ }
842
+