@bolloon/bolloon-agent 0.1.13 → 0.1.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/agents/pi-sdk.js +185 -0
- package/dist/agents/shell-guard.js +354 -0
- package/dist/agents/shell-tool.js +83 -0
- package/dist/agents/skill-loader.js +174 -0
- package/dist/bollharness-integration/context-chain-router.js +3 -3
- package/dist/bollharness-integration/context-router.js +1 -1
- package/dist/heartbeat/Watchdog.js +7 -5
- package/dist/heartbeat/index.js +1 -0
- package/dist/heartbeat/self-improve-bus.js +85 -0
- package/dist/pi-ecosystem-judgment/index.js +1 -2
- package/dist/utils/auto-update.js +44 -12
- package/dist/web/client.js +839 -103
- package/dist/web/components/p2p/P2PModal.js +188 -0
- package/dist/web/components/p2p/index.js +264 -226
- package/dist/web/components/p2p/p2p-modal.js +657 -0
- package/dist/web/components/p2p/p2p-tools.js +248 -0
- package/dist/web/index.html +88 -8
- package/dist/web/server.js +2360 -0
- package/dist/web/style.css +506 -9
- package/package.json +2 -2
- package/scripts/build-cli.js +11 -1
- package/src/agents/pi-sdk.ts +196 -0
- package/src/agents/shell-guard.ts +417 -0
- package/src/agents/shell-tool.ts +103 -0
- package/src/agents/skill-loader.ts +202 -0
- package/src/bollharness-integration/context-chain-router.ts +3 -3
- package/src/bollharness-integration/context-router.ts +1 -1
- package/src/heartbeat/Watchdog.ts +7 -5
- package/src/heartbeat/index.ts +1 -0
- package/src/heartbeat/self-improve-bus.ts +110 -0
- package/src/types.d.ts +12 -0
- package/src/utils/auto-update.ts +45 -14
- package/src/web/client.js +839 -103
- package/src/web/index.html +88 -8
- package/src/web/server.ts +427 -101
- package/src/web/style.css +506 -9
- package/dist/bollharness-integration/bollharness-integration/context-router-judgment.d.ts +0 -48
- package/dist/bollharness-integration/bollharness-integration/context-router-judgment.js +0 -261
- package/dist/bollharness-integration/bollharness-integration/context-router.d.ts +0 -110
- package/dist/bollharness-integration/bollharness-integration/context-router.js +0 -542
- package/dist/bollharness-integration/bollharness-integration/gate-state-machine.d.ts +0 -87
- package/dist/bollharness-integration/bollharness-integration/gate-state-machine.js +0 -231
- package/dist/bollharness-integration/bollharness-integration/gate-transition-hooks.d.ts +0 -30
- package/dist/bollharness-integration/bollharness-integration/gate-transition-hooks.js +0 -91
- package/dist/bollharness-integration/bollharness-integration/guard-checker.d.ts +0 -105
- package/dist/bollharness-integration/bollharness-integration/guard-checker.js +0 -353
- package/dist/bollharness-integration/bollharness-integration/index.d.ts +0 -66
- package/dist/bollharness-integration/bollharness-integration/index.js +0 -32
- package/dist/bollharness-integration/bollharness-integration/integration.d.ts +0 -219
- package/dist/bollharness-integration/bollharness-integration/integration.js +0 -420
- package/dist/bollharness-integration/bollharness-integration/skill-adapter.d.ts +0 -151
- package/dist/bollharness-integration/bollharness-integration/skill-adapter.js +0 -518
package/dist/web/style.css
CHANGED
|
@@ -261,18 +261,37 @@ body {
|
|
|
261
261
|
|
|
262
262
|
/* Sidebar Section */
|
|
263
263
|
.sidebar-section {
|
|
264
|
-
flex: 1;
|
|
264
|
+
flex: 1 1 0;
|
|
265
|
+
min-height: 0; /* 关键: flex 子项 min-height 默认 auto, 会撑破 overflow */
|
|
265
266
|
display: flex;
|
|
266
267
|
flex-direction: column;
|
|
267
268
|
overflow: hidden;
|
|
268
269
|
padding: 16px;
|
|
270
|
+
position: relative;
|
|
269
271
|
}
|
|
270
|
-
|
|
271
272
|
.section-header {
|
|
272
273
|
display: flex;
|
|
273
274
|
align-items: center;
|
|
274
275
|
justify-content: space-between;
|
|
275
276
|
margin-bottom: 12px;
|
|
277
|
+
/* sticky 头部: 长列表滚动时, 智能体标题始终可见, 防止用户失去方向感 */
|
|
278
|
+
position: sticky;
|
|
279
|
+
top: 0;
|
|
280
|
+
z-index: 2;
|
|
281
|
+
padding-bottom: 6px;
|
|
282
|
+
/* 用伪元素做模糊底色, 让滚动的内容在它下面淡出而不是硬切 */
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
.section-header::after {
|
|
286
|
+
content: '';
|
|
287
|
+
position: absolute;
|
|
288
|
+
left: -16px;
|
|
289
|
+
right: -16px;
|
|
290
|
+
bottom: -6px;
|
|
291
|
+
height: 18px;
|
|
292
|
+
background: linear-gradient(to bottom, var(--bg-sidebar), transparent);
|
|
293
|
+
pointer-events: none;
|
|
294
|
+
z-index: -1;
|
|
276
295
|
}
|
|
277
296
|
|
|
278
297
|
.section-title {
|
|
@@ -355,13 +374,25 @@ body {
|
|
|
355
374
|
list-style: none;
|
|
356
375
|
flex: 1;
|
|
357
376
|
overflow-y: auto;
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
377
|
+
overflow-x: hidden;
|
|
378
|
+
/* 流畅的上下滑动: iOS 弹性滚动 + 桌面惯性滚动 + 边界不外溢 */
|
|
379
|
+
-webkit-overflow-scrolling: touch;
|
|
380
|
+
overscroll-behavior: contain;
|
|
381
|
+
scroll-behavior: smooth;
|
|
382
|
+
/* contain 让长列表滚动时不影响外层布局, 减少 reflow */
|
|
383
|
+
contain: strict;
|
|
384
|
+
/* 重要: gap 在 overflow 容器里会触发滚动跳帧, 用 margin 替代 */
|
|
385
|
+
display: block;
|
|
386
|
+
padding: 0;
|
|
387
|
+
margin: 0;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
.channel-list > .agent-group + .agent-group {
|
|
391
|
+
margin-top: 4px;
|
|
361
392
|
}
|
|
362
393
|
|
|
363
394
|
.channel-list::-webkit-scrollbar {
|
|
364
|
-
width:
|
|
395
|
+
width: 6px;
|
|
365
396
|
}
|
|
366
397
|
|
|
367
398
|
.channel-list::-webkit-scrollbar-track {
|
|
@@ -370,7 +401,16 @@ body {
|
|
|
370
401
|
|
|
371
402
|
.channel-list::-webkit-scrollbar-thumb {
|
|
372
403
|
background: var(--border);
|
|
373
|
-
border-radius:
|
|
404
|
+
border-radius: 3px;
|
|
405
|
+
/* 滚动条 hover 才出现, 默认隐藏, 减少视觉干扰 */
|
|
406
|
+
opacity: 0;
|
|
407
|
+
transition: opacity 0.15s ease;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
.channel-list:hover::-webkit-scrollbar-thumb,
|
|
411
|
+
.channel-list:focus-within::-webkit-scrollbar-thumb,
|
|
412
|
+
.channel-list.is-scrolling::-webkit-scrollbar-thumb {
|
|
413
|
+
opacity: 1;
|
|
374
414
|
}
|
|
375
415
|
|
|
376
416
|
.channel-item {
|
|
@@ -424,6 +464,47 @@ body {
|
|
|
424
464
|
text-overflow: ellipsis;
|
|
425
465
|
}
|
|
426
466
|
|
|
467
|
+
.agent-session-count {
|
|
468
|
+
display: inline-flex;
|
|
469
|
+
align-items: center;
|
|
470
|
+
justify-content: center;
|
|
471
|
+
min-width: 18px;
|
|
472
|
+
height: 18px;
|
|
473
|
+
padding: 0 5px;
|
|
474
|
+
margin-left: 4px;
|
|
475
|
+
border-radius: 9px;
|
|
476
|
+
background: var(--bg);
|
|
477
|
+
border: 1px solid var(--border);
|
|
478
|
+
color: var(--text-muted);
|
|
479
|
+
font-size: 11px;
|
|
480
|
+
font-weight: 500;
|
|
481
|
+
flex-shrink: 0;
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
.agent-current-session {
|
|
485
|
+
flex: 0 1 auto;
|
|
486
|
+
margin-left: 4px;
|
|
487
|
+
padding: 0 6px;
|
|
488
|
+
font-size: 11px;
|
|
489
|
+
color: var(--text-muted);
|
|
490
|
+
background: var(--bg);
|
|
491
|
+
border: 1px solid var(--border);
|
|
492
|
+
border-radius: 9px;
|
|
493
|
+
height: 18px;
|
|
494
|
+
line-height: 16px;
|
|
495
|
+
max-width: 100px;
|
|
496
|
+
white-space: nowrap;
|
|
497
|
+
overflow: hidden;
|
|
498
|
+
text-overflow: ellipsis;
|
|
499
|
+
flex-shrink: 1;
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
.agent-row.active .agent-current-session {
|
|
503
|
+
color: var(--accent);
|
|
504
|
+
border-color: var(--border-light);
|
|
505
|
+
background: var(--bg-hover);
|
|
506
|
+
}
|
|
507
|
+
|
|
427
508
|
.channel-delete {
|
|
428
509
|
width: 24px;
|
|
429
510
|
height: 24px;
|
|
@@ -435,12 +516,13 @@ body {
|
|
|
435
516
|
display: flex;
|
|
436
517
|
align-items: center;
|
|
437
518
|
justify-content: center;
|
|
438
|
-
opacity: 0;
|
|
519
|
+
opacity: 0.45;
|
|
439
520
|
transition: var(--transition);
|
|
440
521
|
font-size: 16px;
|
|
441
522
|
}
|
|
442
523
|
|
|
443
|
-
.channel-item:hover .channel-delete
|
|
524
|
+
.channel-item:hover .channel-delete,
|
|
525
|
+
.agent-row:hover .channel-delete {
|
|
444
526
|
opacity: 1;
|
|
445
527
|
}
|
|
446
528
|
|
|
@@ -449,6 +531,172 @@ body {
|
|
|
449
531
|
color: var(--error);
|
|
450
532
|
}
|
|
451
533
|
|
|
534
|
+
/* Agent group (formerly channel-item — kept classname for back-compat) */
|
|
535
|
+
.agent-group {
|
|
536
|
+
display: flex;
|
|
537
|
+
flex-direction: column;
|
|
538
|
+
border-radius: var(--radius-sm);
|
|
539
|
+
overflow: hidden;
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
.agent-row {
|
|
543
|
+
display: flex;
|
|
544
|
+
align-items: center;
|
|
545
|
+
padding: 10px 12px;
|
|
546
|
+
border-radius: var(--radius-sm);
|
|
547
|
+
cursor: pointer;
|
|
548
|
+
transition: var(--transition);
|
|
549
|
+
gap: 10px;
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
.agent-row:hover {
|
|
553
|
+
background: var(--bg-hover);
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
.agent-row.active {
|
|
557
|
+
background: var(--bg-active);
|
|
558
|
+
border: 1px solid var(--border-light);
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
.agent-row.active .channel-name {
|
|
562
|
+
color: var(--accent);
|
|
563
|
+
font-weight: 500;
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
.agent-caret {
|
|
567
|
+
width: 14px;
|
|
568
|
+
height: 14px;
|
|
569
|
+
color: var(--text-muted);
|
|
570
|
+
transition: transform 0.18s ease;
|
|
571
|
+
flex-shrink: 0;
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
.agent-group.expanded .agent-caret {
|
|
575
|
+
transform: rotate(90deg);
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
.agent-new-session {
|
|
579
|
+
width: 22px;
|
|
580
|
+
height: 22px;
|
|
581
|
+
border-radius: 5px;
|
|
582
|
+
background: transparent;
|
|
583
|
+
border: none;
|
|
584
|
+
color: var(--text-muted);
|
|
585
|
+
cursor: pointer;
|
|
586
|
+
display: flex;
|
|
587
|
+
align-items: center;
|
|
588
|
+
justify-content: center;
|
|
589
|
+
opacity: 0;
|
|
590
|
+
transition: var(--transition);
|
|
591
|
+
flex-shrink: 0;
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
.agent-row:hover .agent-new-session {
|
|
595
|
+
opacity: 1;
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
.agent-new-session:hover {
|
|
599
|
+
background: var(--accent);
|
|
600
|
+
color: var(--bg);
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
.agent-new-session svg {
|
|
604
|
+
width: 14px;
|
|
605
|
+
height: 14px;
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
/* Session list nested under each agent */
|
|
609
|
+
.session-list {
|
|
610
|
+
list-style: none;
|
|
611
|
+
margin: 0 0 4px 0;
|
|
612
|
+
padding: 0 0 0 28px;
|
|
613
|
+
display: none;
|
|
614
|
+
flex-direction: column;
|
|
615
|
+
gap: 2px;
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
.agent-group.expanded .session-list {
|
|
619
|
+
display: flex;
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
.session-item {
|
|
623
|
+
display: flex;
|
|
624
|
+
align-items: center;
|
|
625
|
+
padding: 6px 10px;
|
|
626
|
+
border-radius: 5px;
|
|
627
|
+
cursor: pointer;
|
|
628
|
+
transition: var(--transition);
|
|
629
|
+
gap: 8px;
|
|
630
|
+
position: relative;
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
.session-item::before {
|
|
634
|
+
content: '';
|
|
635
|
+
width: 6px;
|
|
636
|
+
height: 6px;
|
|
637
|
+
border-radius: 50%;
|
|
638
|
+
background: var(--text-muted);
|
|
639
|
+
flex-shrink: 0;
|
|
640
|
+
transition: var(--transition);
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
.session-item:hover {
|
|
644
|
+
background: var(--bg-hover);
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
.session-item:hover::before {
|
|
648
|
+
background: var(--text-secondary);
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
.session-item.active {
|
|
652
|
+
background: var(--bg-active);
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
.session-item.active::before {
|
|
656
|
+
background: var(--accent);
|
|
657
|
+
box-shadow: 0 0 4px var(--accent-glow);
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
.session-item.active .session-name {
|
|
661
|
+
color: var(--accent);
|
|
662
|
+
font-weight: 500;
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
.session-name {
|
|
666
|
+
flex: 1;
|
|
667
|
+
font-size: 13px;
|
|
668
|
+
color: var(--text);
|
|
669
|
+
white-space: nowrap;
|
|
670
|
+
overflow: hidden;
|
|
671
|
+
text-overflow: ellipsis;
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
.session-delete {
|
|
675
|
+
width: 18px;
|
|
676
|
+
height: 18px;
|
|
677
|
+
border-radius: 4px;
|
|
678
|
+
background: transparent;
|
|
679
|
+
border: none;
|
|
680
|
+
color: var(--text-muted);
|
|
681
|
+
cursor: pointer;
|
|
682
|
+
display: flex;
|
|
683
|
+
align-items: center;
|
|
684
|
+
justify-content: center;
|
|
685
|
+
opacity: 0;
|
|
686
|
+
transition: var(--transition);
|
|
687
|
+
font-size: 12px;
|
|
688
|
+
line-height: 1;
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
.session-item:hover .session-delete {
|
|
692
|
+
opacity: 1;
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
.session-delete:hover {
|
|
696
|
+
background: var(--error-bg);
|
|
697
|
+
color: var(--error);
|
|
698
|
+
}
|
|
699
|
+
|
|
452
700
|
/* Sidebar Footer */
|
|
453
701
|
.sidebar-footer {
|
|
454
702
|
padding: 16px;
|
|
@@ -1455,6 +1703,119 @@ body {
|
|
|
1455
1703
|
padding: 40px 20px;
|
|
1456
1704
|
}
|
|
1457
1705
|
|
|
1706
|
+
/* ============================================ */
|
|
1707
|
+
/* Wallet Manager */
|
|
1708
|
+
/* ============================================ */
|
|
1709
|
+
.wallet-list {
|
|
1710
|
+
display: flex;
|
|
1711
|
+
flex-direction: column;
|
|
1712
|
+
gap: 8px;
|
|
1713
|
+
max-height: 320px;
|
|
1714
|
+
overflow-y: auto;
|
|
1715
|
+
-webkit-overflow-scrolling: touch;
|
|
1716
|
+
overscroll-behavior: contain;
|
|
1717
|
+
contain: strict;
|
|
1718
|
+
margin-top: 8px;
|
|
1719
|
+
}
|
|
1720
|
+
|
|
1721
|
+
.wallet-empty {
|
|
1722
|
+
text-align: center;
|
|
1723
|
+
color: var(--text-secondary);
|
|
1724
|
+
padding: 24px 16px;
|
|
1725
|
+
font-size: 13px;
|
|
1726
|
+
border: 1px dashed var(--border);
|
|
1727
|
+
border-radius: var(--radius);
|
|
1728
|
+
}
|
|
1729
|
+
|
|
1730
|
+
.wallet-row {
|
|
1731
|
+
display: flex;
|
|
1732
|
+
align-items: center;
|
|
1733
|
+
gap: 10px;
|
|
1734
|
+
padding: 10px 12px;
|
|
1735
|
+
background: var(--bg-secondary);
|
|
1736
|
+
border: 1px solid var(--border);
|
|
1737
|
+
border-radius: var(--radius);
|
|
1738
|
+
transition: var(--transition);
|
|
1739
|
+
}
|
|
1740
|
+
|
|
1741
|
+
.wallet-row:hover {
|
|
1742
|
+
border-color: var(--accent);
|
|
1743
|
+
}
|
|
1744
|
+
|
|
1745
|
+
.wallet-row.is-active {
|
|
1746
|
+
border-color: var(--accent);
|
|
1747
|
+
background: var(--accent-glow);
|
|
1748
|
+
}
|
|
1749
|
+
|
|
1750
|
+
.wallet-row .wallet-chain {
|
|
1751
|
+
font-size: 10px;
|
|
1752
|
+
font-weight: 700;
|
|
1753
|
+
padding: 2px 6px;
|
|
1754
|
+
border-radius: 4px;
|
|
1755
|
+
background: var(--bg);
|
|
1756
|
+
color: var(--text-muted);
|
|
1757
|
+
letter-spacing: 0.5px;
|
|
1758
|
+
flex-shrink: 0;
|
|
1759
|
+
}
|
|
1760
|
+
|
|
1761
|
+
.wallet-row.is-active .wallet-chain {
|
|
1762
|
+
background: var(--accent);
|
|
1763
|
+
color: var(--bg);
|
|
1764
|
+
}
|
|
1765
|
+
|
|
1766
|
+
.wallet-row .wallet-info {
|
|
1767
|
+
flex: 1;
|
|
1768
|
+
min-width: 0;
|
|
1769
|
+
display: flex;
|
|
1770
|
+
flex-direction: column;
|
|
1771
|
+
gap: 2px;
|
|
1772
|
+
}
|
|
1773
|
+
|
|
1774
|
+
.wallet-row .wallet-agent {
|
|
1775
|
+
font-size: 13px;
|
|
1776
|
+
font-weight: 500;
|
|
1777
|
+
color: var(--text-primary);
|
|
1778
|
+
white-space: nowrap;
|
|
1779
|
+
overflow: hidden;
|
|
1780
|
+
text-overflow: ellipsis;
|
|
1781
|
+
}
|
|
1782
|
+
|
|
1783
|
+
.wallet-row .wallet-address {
|
|
1784
|
+
font-family: var(--font-mono);
|
|
1785
|
+
font-size: 11px;
|
|
1786
|
+
color: var(--text-muted);
|
|
1787
|
+
white-space: nowrap;
|
|
1788
|
+
overflow: hidden;
|
|
1789
|
+
text-overflow: ellipsis;
|
|
1790
|
+
}
|
|
1791
|
+
|
|
1792
|
+
.wallet-row .wallet-actions {
|
|
1793
|
+
display: flex;
|
|
1794
|
+
gap: 4px;
|
|
1795
|
+
flex-shrink: 0;
|
|
1796
|
+
}
|
|
1797
|
+
|
|
1798
|
+
.wallet-row .wallet-mini-btn {
|
|
1799
|
+
width: 26px;
|
|
1800
|
+
height: 26px;
|
|
1801
|
+
border-radius: 6px;
|
|
1802
|
+
background: transparent;
|
|
1803
|
+
border: 1px solid var(--border);
|
|
1804
|
+
color: var(--text-muted);
|
|
1805
|
+
cursor: pointer;
|
|
1806
|
+
display: inline-flex;
|
|
1807
|
+
align-items: center;
|
|
1808
|
+
justify-content: center;
|
|
1809
|
+
padding: 0;
|
|
1810
|
+
transition: var(--transition);
|
|
1811
|
+
}
|
|
1812
|
+
|
|
1813
|
+
.wallet-row .wallet-mini-btn:hover {
|
|
1814
|
+
background: var(--accent);
|
|
1815
|
+
color: var(--bg);
|
|
1816
|
+
border-color: var(--accent);
|
|
1817
|
+
}
|
|
1818
|
+
|
|
1458
1819
|
.task-item {
|
|
1459
1820
|
background: var(--bg-secondary);
|
|
1460
1821
|
border: 1px solid var(--border);
|
|
@@ -3376,3 +3737,139 @@ body {
|
|
|
3376
3737
|
80% { opacity: 1; }
|
|
3377
3738
|
100% { opacity: 0; }
|
|
3378
3739
|
}
|
|
3740
|
+
|
|
3741
|
+
/* ============================================ */
|
|
3742
|
+
/* Catalog: section header `+` button, badges */
|
|
3743
|
+
/* ============================================ */
|
|
3744
|
+
|
|
3745
|
+
.section-header-action {
|
|
3746
|
+
width: 22px;
|
|
3747
|
+
height: 22px;
|
|
3748
|
+
border-radius: 6px;
|
|
3749
|
+
background: transparent;
|
|
3750
|
+
border: 1px solid var(--border);
|
|
3751
|
+
color: var(--text-muted);
|
|
3752
|
+
cursor: pointer;
|
|
3753
|
+
display: inline-flex;
|
|
3754
|
+
align-items: center;
|
|
3755
|
+
justify-content: center;
|
|
3756
|
+
padding: 0;
|
|
3757
|
+
transition: var(--transition);
|
|
3758
|
+
}
|
|
3759
|
+
|
|
3760
|
+
.section-header-action:hover {
|
|
3761
|
+
background: var(--accent);
|
|
3762
|
+
color: var(--bg);
|
|
3763
|
+
border-color: var(--accent);
|
|
3764
|
+
}
|
|
3765
|
+
|
|
3766
|
+
.agent-row .agent-wallet-badge {
|
|
3767
|
+
display: inline-flex;
|
|
3768
|
+
align-items: center;
|
|
3769
|
+
justify-content: center;
|
|
3770
|
+
font-size: 10px;
|
|
3771
|
+
font-weight: 600;
|
|
3772
|
+
padding: 1px 5px;
|
|
3773
|
+
border-radius: 4px;
|
|
3774
|
+
background: var(--accent-glow);
|
|
3775
|
+
color: var(--accent);
|
|
3776
|
+
border: 1px solid var(--accent);
|
|
3777
|
+
letter-spacing: 0.3px;
|
|
3778
|
+
margin-left: 4px;
|
|
3779
|
+
flex-shrink: 0;
|
|
3780
|
+
}
|
|
3781
|
+
|
|
3782
|
+
.agent-row .agent-tools-badge {
|
|
3783
|
+
display: inline-flex;
|
|
3784
|
+
align-items: center;
|
|
3785
|
+
justify-content: center;
|
|
3786
|
+
font-size: 10px;
|
|
3787
|
+
font-weight: 600;
|
|
3788
|
+
padding: 1px 5px;
|
|
3789
|
+
border-radius: 4px;
|
|
3790
|
+
background: rgba(80, 200, 120, 0.12);
|
|
3791
|
+
color: rgb(80, 200, 120);
|
|
3792
|
+
border: 1px solid rgba(80, 200, 120, 0.4);
|
|
3793
|
+
margin-left: 4px;
|
|
3794
|
+
flex-shrink: 0;
|
|
3795
|
+
}
|
|
3796
|
+
|
|
3797
|
+
.agent-row .agent-row-meta {
|
|
3798
|
+
display: flex;
|
|
3799
|
+
align-items: center;
|
|
3800
|
+
gap: 4px;
|
|
3801
|
+
margin-left: auto;
|
|
3802
|
+
flex-shrink: 0;
|
|
3803
|
+
}
|
|
3804
|
+
|
|
3805
|
+
.agent-row .agent-config-btn {
|
|
3806
|
+
width: 22px;
|
|
3807
|
+
height: 22px;
|
|
3808
|
+
border-radius: 6px;
|
|
3809
|
+
background: transparent;
|
|
3810
|
+
border: 1px solid var(--border);
|
|
3811
|
+
color: var(--text-muted);
|
|
3812
|
+
cursor: pointer;
|
|
3813
|
+
display: inline-flex;
|
|
3814
|
+
align-items: center;
|
|
3815
|
+
justify-content: center;
|
|
3816
|
+
padding: 0;
|
|
3817
|
+
opacity: 0;
|
|
3818
|
+
transition: var(--transition);
|
|
3819
|
+
margin-left: 4px;
|
|
3820
|
+
}
|
|
3821
|
+
|
|
3822
|
+
.agent-row:hover .agent-config-btn {
|
|
3823
|
+
opacity: 1;
|
|
3824
|
+
}
|
|
3825
|
+
|
|
3826
|
+
.agent-row .agent-config-btn:hover {
|
|
3827
|
+
background: var(--accent);
|
|
3828
|
+
color: var(--bg);
|
|
3829
|
+
border-color: var(--accent);
|
|
3830
|
+
}
|
|
3831
|
+
|
|
3832
|
+
/* Form hints and info blocks in modals */
|
|
3833
|
+
.form-hint {
|
|
3834
|
+
display: block;
|
|
3835
|
+
margin-top: 4px;
|
|
3836
|
+
color: var(--text-muted);
|
|
3837
|
+
font-size: 11px;
|
|
3838
|
+
line-height: 1.4;
|
|
3839
|
+
}
|
|
3840
|
+
|
|
3841
|
+
.form-info {
|
|
3842
|
+
margin-top: 8px;
|
|
3843
|
+
padding: 10px 12px;
|
|
3844
|
+
background: var(--bg-secondary);
|
|
3845
|
+
border: 1px solid var(--border);
|
|
3846
|
+
border-radius: var(--radius);
|
|
3847
|
+
font-size: 12px;
|
|
3848
|
+
color: var(--text-secondary);
|
|
3849
|
+
word-break: break-all;
|
|
3850
|
+
}
|
|
3851
|
+
|
|
3852
|
+
.form-info code {
|
|
3853
|
+
font-family: var(--font-mono);
|
|
3854
|
+
color: var(--accent);
|
|
3855
|
+
background: var(--bg);
|
|
3856
|
+
padding: 1px 4px;
|
|
3857
|
+
border-radius: 3px;
|
|
3858
|
+
}
|
|
3859
|
+
|
|
3860
|
+
.checkbox-label {
|
|
3861
|
+
display: flex !important;
|
|
3862
|
+
align-items: center;
|
|
3863
|
+
gap: 8px;
|
|
3864
|
+
cursor: pointer;
|
|
3865
|
+
user-select: none;
|
|
3866
|
+
font-size: 13px;
|
|
3867
|
+
color: var(--text-secondary);
|
|
3868
|
+
}
|
|
3869
|
+
|
|
3870
|
+
.checkbox-label input[type="checkbox"] {
|
|
3871
|
+
width: 16px;
|
|
3872
|
+
height: 16px;
|
|
3873
|
+
cursor: pointer;
|
|
3874
|
+
accent-color: var(--accent);
|
|
3875
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bolloon/bolloon-agent",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.14",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "P2P AI Document Agent - 全局安装后执行 `bolloon` 启动产品",
|
|
6
6
|
"main": "dist/cli.js",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"src/constraint-runtime"
|
|
33
33
|
],
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@bolloon/bolloon-agent": "^0.1.
|
|
35
|
+
"@bolloon/bolloon-agent": "^0.1.14",
|
|
36
36
|
"@bolloon/constraint-runtime": "0.1.0",
|
|
37
37
|
"@chainsafe/libp2p-noise": "^17.0.0",
|
|
38
38
|
"@chainsafe/libp2p-yamux": "^8.0.1",
|
package/scripts/build-cli.js
CHANGED
|
@@ -196,9 +196,19 @@ main().catch((err) => {
|
|
|
196
196
|
fs.writeFileSync(path.join(binDir, 'bolloon.cjs'), unixContent);
|
|
197
197
|
|
|
198
198
|
// 确保 bin/bolloon.js 存在(npm link 需要)
|
|
199
|
+
// 优先用符号链接(POSIX),Windows 上若权限不足则退化为复制文件
|
|
199
200
|
const jsSymlink = path.join(binDir, 'bolloon.js');
|
|
200
201
|
if (fs.existsSync(jsSymlink)) fs.unlinkSync(jsSymlink);
|
|
201
|
-
|
|
202
|
+
try {
|
|
203
|
+
fs.symlinkSync('bolloon.cjs', jsSymlink);
|
|
204
|
+
} catch (err) {
|
|
205
|
+
if (err && err.code === 'EPERM') {
|
|
206
|
+
fs.copyFileSync(path.join(binDir, 'bolloon.cjs'), jsSymlink);
|
|
207
|
+
console.warn(' ⚠ symlink 不支持(Windows),已退化为文件复制');
|
|
208
|
+
} else {
|
|
209
|
+
throw err;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
202
212
|
|
|
203
213
|
console.log("✓ CLI 构建完成");
|
|
204
214
|
console.log(" bin/bolloon.cjs - CommonJS 入口");
|