botmux 2.83.0 → 2.84.1

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 (211) hide show
  1. package/README.en.md +1 -1
  2. package/README.md +5 -1
  3. package/dist/adapters/backend/sandbox.d.ts +4 -0
  4. package/dist/adapters/backend/sandbox.d.ts.map +1 -1
  5. package/dist/adapters/backend/sandbox.js +14 -0
  6. package/dist/adapters/backend/sandbox.js.map +1 -1
  7. package/dist/adapters/cli/claude-code.d.ts.map +1 -1
  8. package/dist/adapters/cli/claude-code.js +6 -43
  9. package/dist/adapters/cli/claude-code.js.map +1 -1
  10. package/dist/adapters/cli/mir.d.ts +4 -0
  11. package/dist/adapters/cli/mir.d.ts.map +1 -0
  12. package/dist/adapters/cli/mir.js +81 -0
  13. package/dist/adapters/cli/mir.js.map +1 -0
  14. package/dist/adapters/cli/registry.d.ts +2 -1
  15. package/dist/adapters/cli/registry.d.ts.map +1 -1
  16. package/dist/adapters/cli/registry.js +3 -1
  17. package/dist/adapters/cli/registry.js.map +1 -1
  18. package/dist/adapters/cli/shared-hints.d.ts +17 -0
  19. package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
  20. package/dist/adapters/cli/shared-hints.js +56 -0
  21. package/dist/adapters/cli/shared-hints.js.map +1 -1
  22. package/dist/adapters/cli/types.d.ts +12 -1
  23. package/dist/adapters/cli/types.d.ts.map +1 -1
  24. package/dist/bot-registry.d.ts +7 -0
  25. package/dist/bot-registry.d.ts.map +1 -1
  26. package/dist/bot-registry.js +27 -0
  27. package/dist/bot-registry.js.map +1 -1
  28. package/dist/cli.d.ts.map +1 -1
  29. package/dist/cli.js +30 -65
  30. package/dist/cli.js.map +1 -1
  31. package/dist/core/command-handler.d.ts.map +1 -1
  32. package/dist/core/command-handler.js +42 -1
  33. package/dist/core/command-handler.js.map +1 -1
  34. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  35. package/dist/core/dashboard-ipc-server.js +58 -1
  36. package/dist/core/dashboard-ipc-server.js.map +1 -1
  37. package/dist/core/passthrough-commands.d.ts.map +1 -1
  38. package/dist/core/passthrough-commands.js +1 -1
  39. package/dist/core/passthrough-commands.js.map +1 -1
  40. package/dist/core/pending-response.d.ts +2 -39
  41. package/dist/core/pending-response.d.ts.map +1 -1
  42. package/dist/core/pending-response.js +5 -99
  43. package/dist/core/pending-response.js.map +1 -1
  44. package/dist/core/session-manager.d.ts.map +1 -1
  45. package/dist/core/session-manager.js +4 -16
  46. package/dist/core/session-manager.js.map +1 -1
  47. package/dist/core/skills/claude-plugin-delivery.d.ts +6 -0
  48. package/dist/core/skills/claude-plugin-delivery.d.ts.map +1 -0
  49. package/dist/core/skills/claude-plugin-delivery.js +21 -0
  50. package/dist/core/skills/claude-plugin-delivery.js.map +1 -0
  51. package/dist/core/skills/cli-admin-command.d.ts +7 -0
  52. package/dist/core/skills/cli-admin-command.d.ts.map +1 -0
  53. package/dist/core/skills/cli-admin-command.js +243 -0
  54. package/dist/core/skills/cli-admin-command.js.map +1 -0
  55. package/dist/core/skills/cli-session-command.d.ts +7 -0
  56. package/dist/core/skills/cli-session-command.d.ts.map +1 -0
  57. package/dist/core/skills/cli-session-command.js +45 -0
  58. package/dist/core/skills/cli-session-command.js.map +1 -0
  59. package/dist/core/skills/delivery.d.ts +11 -0
  60. package/dist/core/skills/delivery.d.ts.map +1 -0
  61. package/dist/core/skills/delivery.js +22 -0
  62. package/dist/core/skills/delivery.js.map +1 -0
  63. package/dist/core/skills/discovery.d.ts +3 -0
  64. package/dist/core/skills/discovery.d.ts.map +1 -0
  65. package/dist/core/skills/discovery.js +34 -0
  66. package/dist/core/skills/discovery.js.map +1 -0
  67. package/dist/core/skills/frontmatter.d.ts +9 -0
  68. package/dist/core/skills/frontmatter.d.ts.map +1 -0
  69. package/dist/core/skills/frontmatter.js +42 -0
  70. package/dist/core/skills/frontmatter.js.map +1 -0
  71. package/dist/core/skills/im-command.d.ts +9 -0
  72. package/dist/core/skills/im-command.d.ts.map +1 -0
  73. package/dist/core/skills/im-command.js +107 -0
  74. package/dist/core/skills/im-command.js.map +1 -0
  75. package/dist/core/skills/manifest-store.d.ts +4 -0
  76. package/dist/core/skills/manifest-store.d.ts.map +1 -0
  77. package/dist/core/skills/manifest-store.js +26 -0
  78. package/dist/core/skills/manifest-store.js.map +1 -0
  79. package/dist/core/skills/package.d.ts +13 -0
  80. package/dist/core/skills/package.d.ts.map +1 -0
  81. package/dist/core/skills/package.js +35 -0
  82. package/dist/core/skills/package.js.map +1 -0
  83. package/dist/core/skills/policy.d.ts +18 -0
  84. package/dist/core/skills/policy.d.ts.map +1 -0
  85. package/dist/core/skills/policy.js +69 -0
  86. package/dist/core/skills/policy.js.map +1 -0
  87. package/dist/core/skills/prompt.d.ts +3 -0
  88. package/dist/core/skills/prompt.d.ts.map +1 -0
  89. package/dist/core/skills/prompt.js +25 -0
  90. package/dist/core/skills/prompt.js.map +1 -0
  91. package/dist/core/skills/references.d.ts +21 -0
  92. package/dist/core/skills/references.d.ts.map +1 -0
  93. package/dist/core/skills/references.js +27 -0
  94. package/dist/core/skills/references.js.map +1 -0
  95. package/dist/core/skills/registry-paths.d.ts +5 -0
  96. package/dist/core/skills/registry-paths.d.ts.map +1 -0
  97. package/dist/core/skills/registry-paths.js +15 -0
  98. package/dist/core/skills/registry-paths.js.map +1 -0
  99. package/dist/core/skills/resource-reader.d.ts +9 -0
  100. package/dist/core/skills/resource-reader.d.ts.map +1 -0
  101. package/dist/core/skills/resource-reader.js +97 -0
  102. package/dist/core/skills/resource-reader.js.map +1 -0
  103. package/dist/core/skills/session-resolver.d.ts +14 -0
  104. package/dist/core/skills/session-resolver.d.ts.map +1 -0
  105. package/dist/core/skills/session-resolver.js +24 -0
  106. package/dist/core/skills/session-resolver.js.map +1 -0
  107. package/dist/core/skills/session-runtime.d.ts +14 -0
  108. package/dist/core/skills/session-runtime.d.ts.map +1 -0
  109. package/dist/core/skills/session-runtime.js +32 -0
  110. package/dist/core/skills/session-runtime.js.map +1 -0
  111. package/dist/core/skills/sources.d.ts +21 -0
  112. package/dist/core/skills/sources.d.ts.map +1 -0
  113. package/dist/core/skills/sources.js +155 -0
  114. package/dist/core/skills/sources.js.map +1 -0
  115. package/dist/core/skills/types.d.ts +71 -0
  116. package/dist/core/skills/types.d.ts.map +1 -0
  117. package/dist/core/skills/types.js +2 -0
  118. package/dist/core/skills/types.js.map +1 -0
  119. package/dist/core/types.d.ts +10 -3
  120. package/dist/core/types.d.ts.map +1 -1
  121. package/dist/core/types.js.map +1 -1
  122. package/dist/core/worker-pool.d.ts +14 -1
  123. package/dist/core/worker-pool.d.ts.map +1 -1
  124. package/dist/core/worker-pool.js +105 -69
  125. package/dist/core/worker-pool.js.map +1 -1
  126. package/dist/daemon.d.ts +2 -2
  127. package/dist/daemon.d.ts.map +1 -1
  128. package/dist/daemon.js +49 -52
  129. package/dist/daemon.js.map +1 -1
  130. package/dist/dashboard/skill-install-request.d.ts +21 -0
  131. package/dist/dashboard/skill-install-request.d.ts.map +1 -0
  132. package/dist/dashboard/skill-install-request.js +62 -0
  133. package/dist/dashboard/skill-install-request.js.map +1 -0
  134. package/dist/dashboard/web/app.d.ts.map +1 -1
  135. package/dist/dashboard/web/app.js +4 -1
  136. package/dist/dashboard/web/app.js.map +1 -1
  137. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  138. package/dist/dashboard/web/i18n.js +138 -0
  139. package/dist/dashboard/web/i18n.js.map +1 -1
  140. package/dist/dashboard/web/skills.d.ts +2 -0
  141. package/dist/dashboard/web/skills.d.ts.map +1 -0
  142. package/dist/dashboard/web/skills.js +539 -0
  143. package/dist/dashboard/web/skills.js.map +1 -0
  144. package/dist/dashboard/web/workflows.js +1 -1
  145. package/dist/dashboard/web/workflows.js.map +1 -1
  146. package/dist/dashboard-web/app.js +594 -451
  147. package/dist/dashboard-web/index.html +1 -0
  148. package/dist/dashboard-web/style.css +793 -0
  149. package/dist/dashboard.js +231 -0
  150. package/dist/dashboard.js.map +1 -1
  151. package/dist/global-config.d.ts +7 -0
  152. package/dist/global-config.d.ts.map +1 -1
  153. package/dist/global-config.js +16 -0
  154. package/dist/global-config.js.map +1 -1
  155. package/dist/i18n/en.d.ts.map +1 -1
  156. package/dist/i18n/en.js +2 -5
  157. package/dist/i18n/en.js.map +1 -1
  158. package/dist/i18n/zh.d.ts.map +1 -1
  159. package/dist/i18n/zh.js +2 -5
  160. package/dist/i18n/zh.js.map +1 -1
  161. package/dist/im/lark/card-builder.d.ts +0 -3
  162. package/dist/im/lark/card-builder.d.ts.map +1 -1
  163. package/dist/im/lark/card-builder.js +1 -33
  164. package/dist/im/lark/card-builder.js.map +1 -1
  165. package/dist/mir-local-runtime.d.ts +20 -0
  166. package/dist/mir-local-runtime.d.ts.map +1 -0
  167. package/dist/mir-local-runtime.js +168 -0
  168. package/dist/mir-local-runtime.js.map +1 -0
  169. package/dist/mir-runner.d.ts +3 -0
  170. package/dist/mir-runner.d.ts.map +1 -0
  171. package/dist/mir-runner.js +482 -0
  172. package/dist/mir-runner.js.map +1 -0
  173. package/dist/services/bot-config-store.d.ts +4 -4
  174. package/dist/services/bot-config-store.d.ts.map +1 -1
  175. package/dist/services/bot-config-store.js +24 -1
  176. package/dist/services/bot-config-store.js.map +1 -1
  177. package/dist/services/session-store.d.ts +1 -0
  178. package/dist/services/session-store.d.ts.map +1 -1
  179. package/dist/services/session-store.js +12 -5
  180. package/dist/services/session-store.js.map +1 -1
  181. package/dist/services/skill-registry-store.d.ts +42 -0
  182. package/dist/services/skill-registry-store.d.ts.map +1 -0
  183. package/dist/services/skill-registry-store.js +343 -0
  184. package/dist/services/skill-registry-store.js.map +1 -0
  185. package/dist/setup/bot-config-editor.d.ts.map +1 -1
  186. package/dist/setup/bot-config-editor.js +2 -0
  187. package/dist/setup/bot-config-editor.js.map +1 -1
  188. package/dist/setup/cli-selection.d.ts.map +1 -1
  189. package/dist/setup/cli-selection.js +74 -6
  190. package/dist/setup/cli-selection.js.map +1 -1
  191. package/dist/skills/installer.d.ts.map +1 -1
  192. package/dist/skills/installer.js +3 -0
  193. package/dist/skills/installer.js.map +1 -1
  194. package/dist/types.d.ts +2 -5
  195. package/dist/types.d.ts.map +1 -1
  196. package/dist/utils/file-lock.d.ts +1 -0
  197. package/dist/utils/file-lock.d.ts.map +1 -1
  198. package/dist/utils/file-lock.js +87 -1
  199. package/dist/utils/file-lock.js.map +1 -1
  200. package/dist/worker.js +5 -3
  201. package/dist/worker.js.map +1 -1
  202. package/dist/workflows/attempt-resume.d.ts.map +1 -1
  203. package/dist/workflows/attempt-resume.js +1 -1
  204. package/dist/workflows/attempt-resume.js.map +1 -1
  205. package/dist/workflows/definition.d.ts +16 -16
  206. package/dist/workflows/events/schema.d.ts +280 -280
  207. package/package.json +1 -1
  208. package/dist/services/pending-response-transaction-store.d.ts +0 -12
  209. package/dist/services/pending-response-transaction-store.d.ts.map +0 -1
  210. package/dist/services/pending-response-transaction-store.js +0 -52
  211. package/dist/services/pending-response-transaction-store.js.map +0 -1
@@ -89,6 +89,7 @@ a { color: inherit; }
89
89
  height: 100vh;
90
90
  display: flex;
91
91
  flex-direction: column;
92
+ min-width: 0;
92
93
  padding: 18px 14px;
93
94
  background: var(--surface);
94
95
  border-right: 1px solid var(--border);
@@ -131,6 +132,7 @@ a { color: inherit; }
131
132
  .sidebar-nav {
132
133
  display: grid;
133
134
  gap: 4px;
135
+ min-width: 0;
134
136
  margin-top: 24px;
135
137
  }
136
138
 
@@ -3609,6 +3611,797 @@ button.contrast:hover { background: var(--danger-soft); border-color: var(--dang
3609
3611
  color: var(--muted);
3610
3612
  }
3611
3613
 
3614
+ .skills-page-grid {
3615
+ display: grid;
3616
+ grid-template-columns: minmax(300px, 380px) minmax(0, 1fr);
3617
+ gap: 18px;
3618
+ align-items: start;
3619
+ max-width: 1600px;
3620
+ }
3621
+
3622
+ .skills-side-rail {
3623
+ position: sticky;
3624
+ top: 18px;
3625
+ z-index: 10;
3626
+ display: grid;
3627
+ gap: 14px;
3628
+ min-width: 0;
3629
+ }
3630
+
3631
+ .skills-side-rail > .bd-card,
3632
+ .skills-main-panel > .bd-card,
3633
+ .skills-bot-card {
3634
+ max-width: none;
3635
+ margin-bottom: 0;
3636
+ }
3637
+
3638
+ .skills-defaults-panel,
3639
+ .skills-install-panel {
3640
+ padding: 16px;
3641
+ }
3642
+
3643
+ .skills-install-panel {
3644
+ position: relative;
3645
+ }
3646
+
3647
+ .skills-install-title {
3648
+ position: relative;
3649
+ display: inline-flex;
3650
+ align-items: center;
3651
+ gap: 7px;
3652
+ margin-bottom: 8px;
3653
+ }
3654
+
3655
+ .skills-install-title .bd-section-title {
3656
+ margin: 0;
3657
+ }
3658
+
3659
+ .skills-help-tip {
3660
+ position: relative;
3661
+ display: inline-flex;
3662
+ }
3663
+
3664
+ .skills-help-button {
3665
+ width: 20px;
3666
+ height: 20px;
3667
+ min-height: 20px;
3668
+ padding: 0;
3669
+ border-radius: 999px;
3670
+ color: var(--muted);
3671
+ font-size: 11px;
3672
+ font-weight: 800;
3673
+ line-height: 1;
3674
+ }
3675
+
3676
+ .skills-help-popover {
3677
+ position: absolute;
3678
+ left: 0;
3679
+ top: calc(100% + 8px);
3680
+ z-index: 50;
3681
+ width: min(520px, calc(100vw - 48px));
3682
+ padding: 9px 10px;
3683
+ border: 1px solid var(--border-soft);
3684
+ border-radius: 8px;
3685
+ background: var(--surface-raised);
3686
+ box-shadow: var(--modal-shadow);
3687
+ color: var(--fg);
3688
+ font-size: 12px;
3689
+ line-height: 1.45;
3690
+ white-space: pre-line;
3691
+ opacity: 0;
3692
+ pointer-events: none;
3693
+ transform: translate(0, -4px);
3694
+ transition: opacity 140ms ease, transform 140ms ease;
3695
+ }
3696
+
3697
+ .skills-help-tip:hover .skills-help-popover,
3698
+ .skills-help-tip:focus-within .skills-help-popover {
3699
+ opacity: 1;
3700
+ transform: translate(0, 0);
3701
+ }
3702
+
3703
+ .skills-install-grid {
3704
+ display: grid;
3705
+ grid-template-columns: repeat(2, minmax(0, 1fr));
3706
+ gap: 10px;
3707
+ }
3708
+
3709
+ .skills-install-grid label:first-child,
3710
+ .skills-install-field-wide,
3711
+ .skills-install-note {
3712
+ grid-column: 1 / -1;
3713
+ }
3714
+
3715
+ .skills-install-note {
3716
+ display: grid;
3717
+ gap: 4px;
3718
+ margin: 0;
3719
+ }
3720
+
3721
+ .skills-install-note span {
3722
+ display: block;
3723
+ }
3724
+
3725
+ .skills-install-note strong {
3726
+ color: var(--fg);
3727
+ font-weight: 700;
3728
+ }
3729
+
3730
+ .skills-install-grid label {
3731
+ display: grid;
3732
+ gap: 5px;
3733
+ color: var(--muted);
3734
+ font-size: 12px;
3735
+ }
3736
+
3737
+ .skills-install-grid input,
3738
+ .skills-attach-row select {
3739
+ width: 100%;
3740
+ min-width: 0;
3741
+ }
3742
+
3743
+ .skills-main-panel,
3744
+ .skills-bot-grid {
3745
+ display: grid;
3746
+ gap: 10px;
3747
+ }
3748
+
3749
+ .skills-main-panel {
3750
+ gap: 18px;
3751
+ min-width: 0;
3752
+ }
3753
+
3754
+ .skills-overview {
3755
+ display: grid;
3756
+ grid-template-columns: minmax(0, 1fr) minmax(320px, 0.72fr);
3757
+ gap: 16px;
3758
+ align-items: stretch;
3759
+ padding: 16px 18px;
3760
+ border: 1px solid var(--border-soft);
3761
+ border-radius: var(--radius);
3762
+ background:
3763
+ linear-gradient(135deg, color-mix(in srgb, var(--accent) 10%, transparent), transparent 58%),
3764
+ var(--surface);
3765
+ box-shadow: var(--shadow);
3766
+ }
3767
+
3768
+ .skills-overview-copy {
3769
+ display: grid;
3770
+ align-content: center;
3771
+ gap: 5px;
3772
+ min-width: 0;
3773
+ }
3774
+
3775
+ .skills-overview-copy h2 {
3776
+ margin: 0;
3777
+ color: var(--fg);
3778
+ font-size: 18px;
3779
+ line-height: 1.25;
3780
+ }
3781
+
3782
+ .skills-overview-copy p {
3783
+ margin: 0;
3784
+ color: var(--muted);
3785
+ font-size: 13px;
3786
+ line-height: 1.55;
3787
+ }
3788
+
3789
+ .skills-metric-strip {
3790
+ display: grid;
3791
+ grid-template-columns: repeat(3, minmax(0, 1fr));
3792
+ gap: 8px;
3793
+ }
3794
+
3795
+ .skills-metric-strip span {
3796
+ display: grid;
3797
+ gap: 6px;
3798
+ min-width: 0;
3799
+ padding: 12px;
3800
+ border: 1px solid var(--border-soft);
3801
+ border-radius: 8px;
3802
+ background: color-mix(in srgb, var(--surface-muted) 72%, transparent);
3803
+ }
3804
+
3805
+ .skills-metric-strip small {
3806
+ color: var(--muted);
3807
+ font-size: 11px;
3808
+ font-weight: 700;
3809
+ }
3810
+
3811
+ .skills-metric-strip strong {
3812
+ color: var(--fg);
3813
+ font-size: 22px;
3814
+ line-height: 1;
3815
+ font-family: var(--mono);
3816
+ }
3817
+
3818
+ .skills-installed-panel {
3819
+ padding: 18px;
3820
+ min-width: 0;
3821
+ }
3822
+
3823
+ .skills-section-head {
3824
+ display: grid;
3825
+ gap: 4px;
3826
+ margin-bottom: 12px;
3827
+ }
3828
+
3829
+ .skills-section-head-row {
3830
+ grid-template-columns: minmax(0, 1fr) auto;
3831
+ align-items: start;
3832
+ gap: 12px;
3833
+ }
3834
+
3835
+ .skills-section-head h2 {
3836
+ margin: 0;
3837
+ font-size: 16px;
3838
+ }
3839
+
3840
+ .skills-section-head p {
3841
+ margin: 0;
3842
+ color: var(--muted);
3843
+ font-size: 12px;
3844
+ }
3845
+
3846
+ .skills-list {
3847
+ display: grid;
3848
+ grid-template-columns: repeat(3, minmax(0, 1fr));
3849
+ gap: 12px;
3850
+ }
3851
+
3852
+ .skills-row {
3853
+ display: flex;
3854
+ flex-direction: column;
3855
+ justify-content: space-between;
3856
+ gap: 0;
3857
+ min-height: 162px;
3858
+ overflow: hidden;
3859
+ border: 1px solid var(--border-soft);
3860
+ border-radius: 8px;
3861
+ background:
3862
+ linear-gradient(180deg, color-mix(in srgb, var(--surface-muted) 24%, transparent), transparent 46%),
3863
+ var(--surface);
3864
+ }
3865
+
3866
+ .skills-row:first-child { border-top: 1px solid var(--border-soft); }
3867
+ .skills-row-body {
3868
+ min-width: 0;
3869
+ padding: 14px 14px 12px;
3870
+ }
3871
+ .skills-row strong {
3872
+ font-size: 13px;
3873
+ line-height: 1.35;
3874
+ overflow-wrap: anywhere;
3875
+ }
3876
+ .skills-row p {
3877
+ display: -webkit-box;
3878
+ -webkit-line-clamp: 4;
3879
+ -webkit-box-orient: vertical;
3880
+ overflow: hidden;
3881
+ margin: 6px 0;
3882
+ color: var(--muted);
3883
+ font-size: 12.5px;
3884
+ line-height: 1.45;
3885
+ overflow-wrap: anywhere;
3886
+ }
3887
+ .skills-row small { color: var(--muted); font-family: var(--mono); font-size: 11px; overflow-wrap: anywhere; }
3888
+
3889
+ .skills-card-actions {
3890
+ display: grid;
3891
+ grid-template-columns: repeat(2, minmax(0, 1fr));
3892
+ margin-top: auto;
3893
+ border-top: 1px solid var(--border-soft);
3894
+ background: color-mix(in srgb, var(--surface-muted) 55%, transparent);
3895
+ }
3896
+
3897
+ .skills-card-actions button {
3898
+ min-height: 38px;
3899
+ padding: 0 10px;
3900
+ border: 0;
3901
+ border-radius: 0;
3902
+ background: transparent;
3903
+ color: var(--muted);
3904
+ font-size: 12px;
3905
+ font-weight: 700;
3906
+ }
3907
+
3908
+ .skills-card-actions button + button {
3909
+ border-left: 1px solid var(--border-soft);
3910
+ }
3911
+
3912
+ .skills-card-actions button:hover {
3913
+ background: var(--surface-muted);
3914
+ color: var(--fg);
3915
+ }
3916
+
3917
+ .skills-card-actions [data-action="remove-skill"]:hover {
3918
+ color: var(--danger);
3919
+ }
3920
+
3921
+ .skills-installed-toolbar {
3922
+ display: inline-flex;
3923
+ align-items: center;
3924
+ gap: 8px;
3925
+ }
3926
+
3927
+ .skills-pager {
3928
+ display: inline-flex;
3929
+ align-items: center;
3930
+ min-height: 26px;
3931
+ overflow: hidden;
3932
+ border: 1px solid var(--border-soft);
3933
+ border-radius: 999px;
3934
+ background: var(--surface-muted);
3935
+ color: var(--muted);
3936
+ font-size: 11px;
3937
+ font-weight: 700;
3938
+ }
3939
+
3940
+ .skills-pager span {
3941
+ min-width: 42px;
3942
+ text-align: center;
3943
+ }
3944
+
3945
+ .skills-pager-button {
3946
+ width: 26px;
3947
+ height: 24px;
3948
+ min-height: 24px;
3949
+ padding: 0;
3950
+ border: 0;
3951
+ border-radius: 0;
3952
+ background: transparent;
3953
+ color: var(--muted);
3954
+ font-size: 18px;
3955
+ font-weight: 800;
3956
+ line-height: 1;
3957
+ }
3958
+
3959
+ .skills-pager-button:hover:not(:disabled) {
3960
+ background: var(--surface);
3961
+ color: var(--accent-strong);
3962
+ }
3963
+
3964
+ .skills-bots-panel {
3965
+ min-width: 0;
3966
+ position: relative;
3967
+ }
3968
+
3969
+ .skills-bots-panel h2 {
3970
+ margin: 0;
3971
+ font-size: 16px;
3972
+ }
3973
+
3974
+ .skills-bot-grid {
3975
+ display: flex;
3976
+ gap: 14px;
3977
+ align-items: stretch;
3978
+ min-width: 0;
3979
+ overflow-x: auto;
3980
+ overflow-y: hidden;
3981
+ overscroll-behavior-x: contain;
3982
+ padding: 2px 2px 12px;
3983
+ scroll-padding-inline: 2px;
3984
+ scroll-snap-type: x mandatory;
3985
+ scrollbar-color: color-mix(in srgb, var(--accent) 45%, var(--border)) transparent;
3986
+ scrollbar-width: thin;
3987
+ -webkit-overflow-scrolling: touch;
3988
+ }
3989
+
3990
+ .skills-bot-grid::-webkit-scrollbar {
3991
+ height: 8px;
3992
+ }
3993
+
3994
+ .skills-bot-grid::-webkit-scrollbar-track {
3995
+ background: transparent;
3996
+ }
3997
+
3998
+ .skills-bot-grid::-webkit-scrollbar-thumb {
3999
+ border-radius: 999px;
4000
+ background: color-mix(in srgb, var(--accent) 34%, var(--border));
4001
+ }
4002
+
4003
+ .skills-bot-card {
4004
+ display: grid;
4005
+ grid-template-rows: auto minmax(0, 1fr) auto;
4006
+ flex: 0 0 calc((100% - 28px) / 3);
4007
+ align-content: stretch;
4008
+ gap: 10px;
4009
+ padding: 14px;
4010
+ min-width: 0;
4011
+ scroll-snap-align: start;
4012
+ scroll-snap-stop: always;
4013
+ }
4014
+
4015
+ .skills-bot-card .bd-section {
4016
+ display: flex;
4017
+ flex-direction: column;
4018
+ min-height: 0;
4019
+ padding-top: 4px;
4020
+ }
4021
+
4022
+ .skills-bot-head {
4023
+ display: grid;
4024
+ grid-template-columns: auto minmax(0, 1fr) auto;
4025
+ gap: 10px;
4026
+ align-items: center;
4027
+ }
4028
+
4029
+ .skills-bot-head > div {
4030
+ min-width: 0;
4031
+ display: grid;
4032
+ gap: 3px;
4033
+ }
4034
+
4035
+ .skills-bot-head code {
4036
+ color: var(--muted);
4037
+ font-size: 11px;
4038
+ overflow: hidden;
4039
+ text-overflow: ellipsis;
4040
+ white-space: nowrap;
4041
+ }
4042
+
4043
+ .skills-bot-head strong {
4044
+ overflow: hidden;
4045
+ text-overflow: ellipsis;
4046
+ white-space: nowrap;
4047
+ }
4048
+
4049
+ .skills-count-pill {
4050
+ display: inline-flex;
4051
+ align-items: center;
4052
+ justify-content: center;
4053
+ min-height: 24px;
4054
+ padding: 3px 8px;
4055
+ border: 1px solid var(--border-soft);
4056
+ border-radius: 999px;
4057
+ background: var(--surface-muted);
4058
+ color: var(--muted);
4059
+ font-size: 11px;
4060
+ font-weight: 700;
4061
+ white-space: nowrap;
4062
+ }
4063
+
4064
+ .skills-bot-rail-actions {
4065
+ display: inline-flex;
4066
+ align-items: center;
4067
+ gap: 6px;
4068
+ }
4069
+
4070
+ .skills-rail-button {
4071
+ width: 26px;
4072
+ height: 26px;
4073
+ min-height: 26px;
4074
+ padding: 0;
4075
+ border-radius: 999px;
4076
+ font-size: 18px;
4077
+ font-weight: 800;
4078
+ line-height: 1;
4079
+ }
4080
+
4081
+ .skills-chip-list {
4082
+ display: grid;
4083
+ gap: 2px;
4084
+ margin-top: 4px;
4085
+ max-height: 92px;
4086
+ overflow-y: auto;
4087
+ overscroll-behavior: contain;
4088
+ padding-right: 3px;
4089
+ scrollbar-color: color-mix(in srgb, var(--accent) 42%, var(--border)) transparent;
4090
+ scrollbar-width: thin;
4091
+ }
4092
+
4093
+ .skills-chip-list::-webkit-scrollbar {
4094
+ width: 6px;
4095
+ }
4096
+
4097
+ .skills-chip-list::-webkit-scrollbar-track {
4098
+ background: transparent;
4099
+ }
4100
+
4101
+ .skills-chip-list::-webkit-scrollbar-thumb {
4102
+ border-radius: 999px;
4103
+ background: color-mix(in srgb, var(--accent) 32%, var(--border));
4104
+ }
4105
+
4106
+ .skills-priority-row {
4107
+ display: grid;
4108
+ grid-template-columns: minmax(0, 1fr) auto;
4109
+ align-items: center;
4110
+ gap: 8px;
4111
+ min-height: 28px;
4112
+ padding: 2px 0;
4113
+ border-bottom: 1px solid color-mix(in srgb, var(--border-soft) 68%, transparent);
4114
+ font-size: 12px;
4115
+ overflow-wrap: anywhere;
4116
+ }
4117
+
4118
+ .skills-priority-row:last-child {
4119
+ border-bottom: 0;
4120
+ }
4121
+
4122
+ .skills-priority-name {
4123
+ display: block;
4124
+ min-width: 0;
4125
+ color: var(--fg);
4126
+ overflow: hidden;
4127
+ text-overflow: ellipsis;
4128
+ white-space: nowrap;
4129
+ }
4130
+
4131
+ .skills-priority-name small {
4132
+ margin-left: 6px;
4133
+ color: var(--danger);
4134
+ font-size: 11px;
4135
+ font-weight: 700;
4136
+ white-space: nowrap;
4137
+ }
4138
+
4139
+ .skills-priority-remove {
4140
+ width: 24px;
4141
+ height: 24px;
4142
+ min-height: 24px;
4143
+ padding: 0;
4144
+ border: 0;
4145
+ border-radius: 999px;
4146
+ background: transparent;
4147
+ color: var(--muted);
4148
+ font-size: 18px;
4149
+ line-height: 1;
4150
+ }
4151
+
4152
+ .skills-priority-remove:hover {
4153
+ background: var(--surface-muted);
4154
+ color: var(--danger);
4155
+ }
4156
+
4157
+ .skills-priority-dangling .skills-priority-name {
4158
+ color: var(--danger);
4159
+ }
4160
+
4161
+ .skills-policy-summary {
4162
+ display: grid;
4163
+ gap: 3px;
4164
+ margin-top: 8px;
4165
+ padding: 8px 10px;
4166
+ border: 1px solid color-mix(in srgb, var(--accent) 18%, var(--border-soft));
4167
+ border-radius: 8px;
4168
+ background: color-mix(in srgb, var(--accent) 6%, transparent);
4169
+ color: var(--muted);
4170
+ font-size: 11px;
4171
+ line-height: 1.4;
4172
+ }
4173
+
4174
+ .skills-policy-summary strong {
4175
+ color: var(--fg);
4176
+ font-size: 11px;
4177
+ }
4178
+
4179
+ .skills-policy-summary span {
4180
+ overflow: hidden;
4181
+ text-overflow: ellipsis;
4182
+ white-space: nowrap;
4183
+ }
4184
+
4185
+ .skills-attach-row,
4186
+ .skills-policy-controls {
4187
+ display: grid;
4188
+ grid-template-columns: minmax(0, 1fr) auto;
4189
+ gap: 8px;
4190
+ align-items: end;
4191
+ }
4192
+
4193
+ .skills-bot-card .skills-attach-row {
4194
+ margin-top: auto;
4195
+ }
4196
+
4197
+ .skills-policy-controls {
4198
+ grid-template-columns: 1fr;
4199
+ align-items: stretch;
4200
+ }
4201
+
4202
+ .skills-control-block {
4203
+ display: grid;
4204
+ gap: 8px;
4205
+ min-width: 0;
4206
+ }
4207
+
4208
+ .skills-defaults-panel .skills-control-block + .skills-control-block {
4209
+ margin-top: 14px;
4210
+ padding-top: 14px;
4211
+ border-top: 1px solid var(--border-soft);
4212
+ }
4213
+
4214
+ .skills-control-label {
4215
+ color: var(--muted);
4216
+ font-size: 12px;
4217
+ font-weight: 600;
4218
+ }
4219
+
4220
+ .skills-choice-group {
4221
+ display: grid;
4222
+ grid-template-columns: repeat(3, minmax(0, 1fr));
4223
+ gap: 8px;
4224
+ }
4225
+
4226
+ .skills-choice-group-compact {
4227
+ grid-template-columns: repeat(2, minmax(0, 1fr));
4228
+ }
4229
+
4230
+ .skills-choice-group-compact .skills-choice {
4231
+ gap: 7px;
4232
+ min-height: 96px;
4233
+ padding: 13px 14px;
4234
+ align-content: start;
4235
+ }
4236
+
4237
+ .skills-choice-group-compact .skills-choice strong {
4238
+ font-size: 13px;
4239
+ }
4240
+
4241
+ .skills-choice-group-compact .skills-choice small {
4242
+ white-space: pre-line;
4243
+ line-height: 1.42;
4244
+ }
4245
+
4246
+ .skills-project-group .skills-choice {
4247
+ display: flex;
4248
+ flex-direction: column;
4249
+ align-items: flex-start;
4250
+ justify-content: flex-start;
4251
+ }
4252
+
4253
+ .skills-project-group .skills-choice strong,
4254
+ .skills-project-group .skills-choice small {
4255
+ width: 100%;
4256
+ text-align: left;
4257
+ }
4258
+
4259
+ .skills-defaults-panel .skills-choice-group:not(.skills-choice-group-compact) {
4260
+ grid-template-columns: 1fr;
4261
+ }
4262
+
4263
+ .skills-choice {
4264
+ display: grid;
4265
+ gap: 3px;
4266
+ width: 100%;
4267
+ min-width: 0;
4268
+ min-height: 62px;
4269
+ padding: 9px 10px;
4270
+ border: 1px solid var(--border-soft);
4271
+ border-radius: 8px;
4272
+ background: var(--surface);
4273
+ color: var(--fg);
4274
+ justify-items: start;
4275
+ align-content: center;
4276
+ text-align: left;
4277
+ cursor: pointer;
4278
+ transition: border-color 160ms ease, background 160ms ease, transform 160ms ease;
4279
+ }
4280
+
4281
+ .skills-choice:hover {
4282
+ border-color: color-mix(in srgb, var(--accent) 35%, var(--border-soft));
4283
+ background: color-mix(in srgb, var(--accent) 6%, var(--surface));
4284
+ }
4285
+
4286
+ .skills-choice:active {
4287
+ transform: translateY(1px);
4288
+ }
4289
+
4290
+ .skills-choice strong {
4291
+ overflow-wrap: anywhere;
4292
+ font-size: 12px;
4293
+ line-height: 1.3;
4294
+ }
4295
+
4296
+ .skills-choice small {
4297
+ color: var(--muted);
4298
+ font-size: 11px;
4299
+ line-height: 1.35;
4300
+ overflow-wrap: anywhere;
4301
+ }
4302
+
4303
+ .skills-choice.selected {
4304
+ border-color: color-mix(in srgb, var(--accent) 72%, var(--border-soft));
4305
+ background: color-mix(in srgb, var(--accent) 10%, var(--surface));
4306
+ box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 35%, transparent);
4307
+ }
4308
+
4309
+ .skills-delivery-group .skills-choice {
4310
+ grid-template-columns: minmax(96px, 0.32fr) minmax(0, 1fr);
4311
+ column-gap: 14px;
4312
+ min-height: 62px;
4313
+ padding: 11px 14px;
4314
+ align-content: start;
4315
+ }
4316
+
4317
+ .skills-delivery-group .skills-choice strong,
4318
+ .skills-delivery-group .skills-choice small {
4319
+ align-self: start;
4320
+ }
4321
+
4322
+ .skills-policy-controls [data-bot-status] {
4323
+ grid-column: 1 / -1;
4324
+ }
4325
+
4326
+ @media (min-width: 1600px) {
4327
+ .skills-list {
4328
+ grid-template-columns: repeat(4, minmax(0, 1fr));
4329
+ }
4330
+ }
4331
+
4332
+ @media (max-width: 1220px) {
4333
+ .skills-bot-card {
4334
+ flex-basis: calc((100% - 14px) / 2);
4335
+ }
4336
+ }
4337
+
4338
+ @media (max-width: 980px) {
4339
+ .skills-page-grid {
4340
+ grid-template-columns: 1fr;
4341
+ }
4342
+ .skills-side-rail {
4343
+ position: static;
4344
+ grid-template-columns: repeat(2, minmax(0, 1fr));
4345
+ }
4346
+ .skills-overview {
4347
+ grid-template-columns: 1fr;
4348
+ }
4349
+ .skills-list {
4350
+ grid-template-columns: repeat(2, minmax(0, 1fr));
4351
+ }
4352
+ }
4353
+
4354
+ @media (max-width: 620px) {
4355
+ .skills-page-grid,
4356
+ .skills-side-rail,
4357
+ .skills-main-panel,
4358
+ .skills-defaults-panel,
4359
+ .skills-install-panel,
4360
+ .skills-overview,
4361
+ .skills-installed-panel {
4362
+ width: 100%;
4363
+ max-width: 100%;
4364
+ }
4365
+ .skills-side-rail,
4366
+ .skills-install-grid,
4367
+ .skills-section-head-row,
4368
+ .skills-overview,
4369
+ .skills-metric-strip,
4370
+ .skills-row,
4371
+ .skills-attach-row,
4372
+ .skills-policy-controls,
4373
+ .skills-choice-group,
4374
+ .skills-choice-group-compact {
4375
+ grid-template-columns: 1fr;
4376
+ }
4377
+ .skills-help-popover {
4378
+ left: 16px;
4379
+ right: 16px;
4380
+ top: 54px;
4381
+ width: auto;
4382
+ }
4383
+ .skills-install-title,
4384
+ .skills-help-tip {
4385
+ position: static;
4386
+ }
4387
+ .skills-list {
4388
+ grid-template-columns: 1fr;
4389
+ }
4390
+ .skills-bot-card {
4391
+ flex-basis: 100%;
4392
+ }
4393
+ .skills-bot-head {
4394
+ grid-template-columns: auto minmax(0, 1fr);
4395
+ }
4396
+ .skills-bot-head .skills-count-pill {
4397
+ grid-column: 1 / -1;
4398
+ justify-self: start;
4399
+ }
4400
+ .skills-bot-rail-actions {
4401
+ justify-content: flex-start;
4402
+ }
4403
+ }
4404
+
3612
4405
  /* toggle 开关行:checkbox 隐藏,switch 是视觉开关 */
3613
4406
  .toggle-row {
3614
4407
  display: flex;