@siact/sime-x-vue 0.0.12 → 0.0.13

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/style.css CHANGED
@@ -423,7 +423,7 @@ to {
423
423
  .fade-leave-to[data-v-958fd919] {
424
424
  opacity: 0;
425
425
  }
426
- .voice-assistant[data-v-fda883a9] {
426
+ .voice-assistant[data-v-a88f03ab] {
427
427
  --text-primary: #e6edf7;
428
428
  --text-secondary: #95a8c8;
429
429
  --glass-bg: rgba(8, 16, 32, 0.72);
@@ -440,16 +440,16 @@ to {
440
440
  }
441
441
 
442
442
  /* ── FAB 按钮 ── */
443
- .assistant-fab[data-v-fda883a9] {
443
+ .assistant-fab[data-v-a88f03ab] {
444
444
  position: relative;
445
445
  cursor: pointer;
446
446
  transition: transform 0.2s ease, filter 0.2s ease;
447
447
  }
448
- .assistant-fab[data-v-fda883a9]:hover {
448
+ .assistant-fab[data-v-a88f03ab]:hover {
449
449
  transform: translateY(-1px) scale(1.03);
450
450
  filter: brightness(1.06);
451
451
  }
452
- .status-pill[data-v-fda883a9] {
452
+ .status-pill[data-v-a88f03ab] {
453
453
  position: absolute;
454
454
  right: calc(100% + 12px);
455
455
  top: 50%;
@@ -468,13 +468,13 @@ to {
468
468
  text-overflow: ellipsis;
469
469
  box-shadow: 0 10px 20px rgba(2, 8, 24, 0.38);
470
470
  }
471
- .fab-avatar-wrapper[data-v-fda883a9] {
471
+ .fab-avatar-wrapper[data-v-a88f03ab] {
472
472
  position: relative;
473
473
  display: flex;
474
474
  align-items: center;
475
475
  justify-content: center;
476
476
  }
477
- .fab-avatar-wrapper img[data-v-fda883a9] {
477
+ .fab-avatar-wrapper img[data-v-a88f03ab] {
478
478
  display: block;
479
479
  height: auto;
480
480
  object-fit: contain;
@@ -482,7 +482,7 @@ to {
482
482
  }
483
483
 
484
484
  /* ── 气泡容器 ── */
485
- .bubble-stack[data-v-fda883a9] {
485
+ .bubble-stack[data-v-a88f03ab] {
486
486
  position: absolute;
487
487
  right: 0;
488
488
  bottom: calc(100% + 16px);
@@ -490,16 +490,16 @@ to {
490
490
  max-height: min(58vh, 520px);
491
491
  overflow: auto;
492
492
  }
493
- .bubble-stack[data-v-fda883a9]::-webkit-scrollbar {
493
+ .bubble-stack[data-v-a88f03ab]::-webkit-scrollbar {
494
494
  width: 4px;
495
495
  }
496
- .bubble-stack[data-v-fda883a9]::-webkit-scrollbar-thumb {
496
+ .bubble-stack[data-v-a88f03ab]::-webkit-scrollbar-thumb {
497
497
  background: rgba(126, 155, 204, 0.3);
498
498
  border-radius: 999px;
499
499
  }
500
500
 
501
501
  /* ── 统一 agent 气泡 ── */
502
- .agent-bubble[data-v-fda883a9] {
502
+ .agent-bubble[data-v-a88f03ab] {
503
503
  border-radius: 16px;
504
504
  padding: 12px 14px;
505
505
  background: radial-gradient(circle at 12% 10%, rgba(80, 122, 255, 0.14), transparent 50%), linear-gradient(155deg, rgba(24, 42, 72, 0.96), rgba(14, 24, 46, 0.97));
@@ -509,9 +509,9 @@ to {
509
509
  display: flex;
510
510
  flex-direction: column;
511
511
  gap: 0;
512
- animation: bubble-appear-fda883a9 0.3s cubic-bezier(0.16, 1, 0.3, 1);
512
+ animation: bubble-appear-a88f03ab 0.3s cubic-bezier(0.16, 1, 0.3, 1);
513
513
  }
514
- @keyframes bubble-appear-fda883a9 {
514
+ @keyframes bubble-appear-a88f03ab {
515
515
  from {
516
516
  opacity: 0;
517
517
  transform: translateY(8px) scale(0.97);
@@ -522,7 +522,7 @@ to {
522
522
  }
523
523
  }
524
524
  /* ── 工具执行步骤(内联紧凑) ── */
525
- .tool-steps[data-v-fda883a9] {
525
+ .tool-steps[data-v-a88f03ab] {
526
526
  display: flex;
527
527
  flex-direction: column;
528
528
  gap: 2px;
@@ -530,40 +530,40 @@ to {
530
530
  padding-bottom: 8px;
531
531
  border-bottom: 1px solid rgba(125, 160, 220, 0.1);
532
532
  }
533
- .tool-step[data-v-fda883a9] {
533
+ .tool-step[data-v-a88f03ab] {
534
534
  display: flex;
535
535
  align-items: center;
536
536
  gap: 7px;
537
537
  padding: 4px 6px;
538
538
  border-radius: 8px;
539
539
  transition: background 0.2s ease;
540
- animation: step-in-fda883a9 0.25s cubic-bezier(0.16, 1, 0.3, 1);
540
+ animation: step-in-a88f03ab 0.25s cubic-bezier(0.16, 1, 0.3, 1);
541
541
  }
542
- .tool-step--loading .tool-step__icon[data-v-fda883a9] {
542
+ .tool-step--loading .tool-step__icon[data-v-a88f03ab] {
543
543
  color: var(--color-accent);
544
544
  }
545
- .tool-step--loading .tool-step__name[data-v-fda883a9] {
545
+ .tool-step--loading .tool-step__name[data-v-a88f03ab] {
546
546
  color: rgba(200, 215, 240, 0.85);
547
547
  }
548
- .tool-step--done .tool-step__icon[data-v-fda883a9] {
548
+ .tool-step--done .tool-step__icon[data-v-a88f03ab] {
549
549
  color: var(--color-success);
550
550
  }
551
- .tool-step--done .tool-step__name[data-v-fda883a9] {
551
+ .tool-step--done .tool-step__name[data-v-a88f03ab] {
552
552
  color: rgba(200, 215, 240, 0.55);
553
553
  }
554
- .tool-step--error .tool-step__icon[data-v-fda883a9] {
554
+ .tool-step--error .tool-step__icon[data-v-a88f03ab] {
555
555
  color: var(--color-error);
556
556
  }
557
- .tool-step--error .tool-step__name[data-v-fda883a9] {
557
+ .tool-step--error .tool-step__name[data-v-a88f03ab] {
558
558
  color: rgba(248, 113, 113, 0.8);
559
559
  }
560
- .tool-step--executing[data-v-fda883a9] {
560
+ .tool-step--executing[data-v-a88f03ab] {
561
561
  background: rgba(129, 140, 248, 0.06);
562
562
  }
563
- .tool-step--executing .tool-step__icon[data-v-fda883a9] {
563
+ .tool-step--executing .tool-step__icon[data-v-a88f03ab] {
564
564
  color: var(--color-accent);
565
565
  }
566
- @keyframes step-in-fda883a9 {
566
+ @keyframes step-in-a88f03ab {
567
567
  from {
568
568
  opacity: 0;
569
569
  transform: translateX(-6px);
@@ -573,7 +573,7 @@ to {
573
573
  transform: translateX(0);
574
574
  }
575
575
  }
576
- .tool-step__icon[data-v-fda883a9] {
576
+ .tool-step__icon[data-v-a88f03ab] {
577
577
  display: flex;
578
578
  align-items: center;
579
579
  justify-content: center;
@@ -581,10 +581,10 @@ to {
581
581
  height: 18px;
582
582
  flex-shrink: 0;
583
583
  }
584
- .tool-step__spinner[data-v-fda883a9] {
585
- animation: tool-spin-fda883a9 0.8s linear infinite;
584
+ .tool-step__spinner[data-v-a88f03ab] {
585
+ animation: tool-spin-a88f03ab 0.8s linear infinite;
586
586
  }
587
- @keyframes tool-spin-fda883a9 {
587
+ @keyframes tool-spin-a88f03ab {
588
588
  from {
589
589
  transform: rotate(0deg);
590
590
  }
@@ -592,7 +592,7 @@ to {
592
592
  transform: rotate(360deg);
593
593
  }
594
594
  }
595
- .tool-step__name[data-v-fda883a9] {
595
+ .tool-step__name[data-v-a88f03ab] {
596
596
  font-size: 12px;
597
597
  font-weight: 500;
598
598
  white-space: nowrap;
@@ -600,7 +600,7 @@ to {
600
600
  text-overflow: ellipsis;
601
601
  transition: color 0.2s ease;
602
602
  }
603
- .tool-step__tag[data-v-fda883a9] {
603
+ .tool-step__tag[data-v-a88f03ab] {
604
604
  font-size: 10px;
605
605
  font-weight: 500;
606
606
  padding: 1px 6px;
@@ -608,32 +608,32 @@ to {
608
608
  white-space: nowrap;
609
609
  flex-shrink: 0;
610
610
  }
611
- .tool-step__tag--exec[data-v-fda883a9] {
611
+ .tool-step__tag--exec[data-v-a88f03ab] {
612
612
  background: rgba(129, 140, 248, 0.12);
613
613
  color: var(--color-accent);
614
614
  }
615
615
 
616
616
  /* ── 思考中动画 ── */
617
- .thinking-dots[data-v-fda883a9] {
617
+ .thinking-dots[data-v-a88f03ab] {
618
618
  display: inline-flex;
619
619
  align-items: center;
620
620
  gap: 5px;
621
621
  padding: 2px 0;
622
622
  }
623
- .thinking-dots span[data-v-fda883a9] {
623
+ .thinking-dots span[data-v-a88f03ab] {
624
624
  width: 5px;
625
625
  height: 5px;
626
626
  border-radius: 50%;
627
627
  background: var(--text-secondary);
628
- animation: thinking-bounce-fda883a9 1s infinite ease-in-out;
628
+ animation: thinking-bounce-a88f03ab 1s infinite ease-in-out;
629
629
  }
630
- .thinking-dots span[data-v-fda883a9]:nth-child(2) {
630
+ .thinking-dots span[data-v-a88f03ab]:nth-child(2) {
631
631
  animation-delay: 0.15s;
632
632
  }
633
- .thinking-dots span[data-v-fda883a9]:nth-child(3) {
633
+ .thinking-dots span[data-v-a88f03ab]:nth-child(3) {
634
634
  animation-delay: 0.3s;
635
635
  }
636
- @keyframes thinking-bounce-fda883a9 {
636
+ @keyframes thinking-bounce-a88f03ab {
637
637
  0%, 100% {
638
638
  transform: translateY(0);
639
639
  opacity: 0.3;
@@ -644,7 +644,7 @@ to {
644
644
  }
645
645
  }
646
646
  /* ── 文本内容 ── */
647
- .agent-text[data-v-fda883a9] {
647
+ .agent-text[data-v-a88f03ab] {
648
648
  font-size: 14px;
649
649
  line-height: 1.55;
650
650
  color: var(--text-primary);
@@ -653,23 +653,23 @@ to {
653
653
  }
654
654
 
655
655
  /* ── 气泡淡入淡出过渡 ── */
656
- .bubble-fade-enter-active[data-v-fda883a9] {
656
+ .bubble-fade-enter-active[data-v-a88f03ab] {
657
657
  transition: all 0.35s cubic-bezier(0.16, 1, 0.3, 1);
658
658
  }
659
- .bubble-fade-leave-active[data-v-fda883a9] {
659
+ .bubble-fade-leave-active[data-v-a88f03ab] {
660
660
  transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
661
661
  }
662
- .bubble-fade-enter-from[data-v-fda883a9] {
662
+ .bubble-fade-enter-from[data-v-a88f03ab] {
663
663
  opacity: 0;
664
664
  transform: translateY(12px) scale(0.95);
665
665
  }
666
- .bubble-fade-leave-to[data-v-fda883a9] {
666
+ .bubble-fade-leave-to[data-v-a88f03ab] {
667
667
  opacity: 0;
668
668
  transform: translateY(8px) scale(0.97);
669
669
  }
670
670
 
671
671
  /* ── 监听状态指示器 ── */
672
- .listening-badge[data-v-fda883a9] {
672
+ .listening-badge[data-v-a88f03ab] {
673
673
  position: absolute;
674
674
  top: -8px;
675
675
  right: -8px;
@@ -681,57 +681,57 @@ to {
681
681
  align-items: center;
682
682
  justify-content: center;
683
683
  }
684
- .listening-waves[data-v-fda883a9] {
684
+ .listening-waves[data-v-a88f03ab] {
685
685
  position: absolute;
686
686
  inset: 0;
687
687
  display: flex;
688
688
  align-items: center;
689
689
  justify-content: center;
690
690
  }
691
- .wave[data-v-fda883a9] {
691
+ .wave[data-v-a88f03ab] {
692
692
  position: absolute;
693
693
  width: 100%;
694
694
  height: 100%;
695
695
  border-radius: 50%;
696
696
  border: 2px solid rgba(255, 255, 255, 0.65);
697
- animation: wave-expand-fda883a9 3s ease-out infinite;
697
+ animation: wave-expand-a88f03ab 3s ease-out infinite;
698
698
  }
699
- .wave-1[data-v-fda883a9] {
699
+ .wave-1[data-v-a88f03ab] {
700
700
  animation-delay: 0s;
701
701
  }
702
- .wave-2[data-v-fda883a9] {
702
+ .wave-2[data-v-a88f03ab] {
703
703
  animation-delay: 0.6s;
704
704
  }
705
- .wave-3[data-v-fda883a9] {
705
+ .wave-3[data-v-a88f03ab] {
706
706
  animation-delay: 1.2s;
707
707
  }
708
- .listening-icon[data-v-fda883a9] {
708
+ .listening-icon[data-v-a88f03ab] {
709
709
  position: relative;
710
710
  color: #fff;
711
711
  }
712
- .listening-badge.wake-active[data-v-fda883a9] {
712
+ .listening-badge.wake-active[data-v-a88f03ab] {
713
713
  background-color: rgba(34, 197, 94, 0.9);
714
- animation: wake-badge-pop-fda883a9 0.35s ease;
714
+ animation: wake-badge-pop-a88f03ab 0.35s ease;
715
715
  }
716
- .indicator-fade-enter-active[data-v-fda883a9],
717
- .indicator-fade-leave-active[data-v-fda883a9] {
716
+ .indicator-fade-enter-active[data-v-a88f03ab],
717
+ .indicator-fade-leave-active[data-v-a88f03ab] {
718
718
  transition: all 0.2s ease;
719
719
  }
720
- .indicator-fade-enter-from[data-v-fda883a9],
721
- .indicator-fade-leave-to[data-v-fda883a9] {
720
+ .indicator-fade-enter-from[data-v-a88f03ab],
721
+ .indicator-fade-leave-to[data-v-a88f03ab] {
722
722
  opacity: 0;
723
723
  transform: translateY(6px);
724
724
  }
725
725
  @media (max-width: 768px) {
726
- .bubble-stack[data-v-fda883a9] {
726
+ .bubble-stack[data-v-a88f03ab] {
727
727
  width: min(320px, 88vw);
728
728
  max-height: min(54vh, 420px);
729
729
  }
730
- .status-pill[data-v-fda883a9] {
730
+ .status-pill[data-v-a88f03ab] {
731
731
  max-width: 220px;
732
732
  }
733
733
  }
734
- @keyframes wave-expand-fda883a9 {
734
+ @keyframes wave-expand-a88f03ab {
735
735
  0% {
736
736
  transform: scale(0.8);
737
737
  opacity: 0.8;
@@ -741,7 +741,7 @@ to {
741
741
  opacity: 0;
742
742
  }
743
743
  }
744
- @keyframes wake-badge-pop-fda883a9 {
744
+ @keyframes wake-badge-pop-a88f03ab {
745
745
  0% {
746
746
  transform: scale(1);
747
747
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@siact/sime-x-vue",
3
- "version": "0.0.12",
3
+ "version": "0.0.13",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -11,6 +11,8 @@ type __VLS_Props = {
11
11
  appId: string;
12
12
  /** appToken */
13
13
  appToken: string;
14
+ /** agentId */
15
+ agentId?: string;
14
16
  };
15
17
  declare var __VLS_1: {};
16
18
  type __VLS_Slots = {} & {
@@ -13,9 +13,9 @@ type __VLS_Props = {
13
13
  xSize?: XSize;
14
14
  xTheme?: 'light' | 'dark' | 'system';
15
15
  wakeWords?: string[];
16
+ wakeResponses?: string[];
16
17
  modelPath?: string;
17
18
  projectId?: string;
18
- invokeUrl?: string;
19
19
  voiceConfig?: VoiceConfig;
20
20
  bubbleSize?: BubbleSize;
21
21
  bubbleDismissDelay?: number;
@@ -1,9 +1,9 @@
1
- import type { Ref } from 'vue';
2
1
  import { type ToolCallPart, type ToolResultPart } from '../lib/data-stream-parser';
3
2
  import type { AiChatbotXContext } from '../types';
4
3
  export interface UseAgentInvokeOptions {
5
- endpoint: Ref<string>;
4
+ endpoint: string;
6
5
  projectId?: string;
6
+ appToken?: string;
7
7
  aiChatbotX: AiChatbotXContext;
8
8
  /** TTS 控制 */
9
9
  tts: {
@@ -30,9 +30,9 @@ export interface UseAgentInvokeOptions {
30
30
  * 支持中断(abort)以便在唤醒时取消正在进行的调用。
31
31
  */
32
32
  export declare function useAgentInvoke(options: UseAgentInvokeOptions): {
33
- isInvoking: Ref<boolean, boolean>;
34
- currentTextContent: Ref<string, string>;
35
- currentToolParts: Ref<({
33
+ isInvoking: import("vue").Ref<boolean, boolean>;
34
+ currentTextContent: import("vue").Ref<string, string>;
35
+ currentToolParts: import("vue").Ref<({
36
36
  type: "tool-call";
37
37
  toolCallId: string;
38
38
  toolName: string;
@@ -59,9 +59,9 @@ export declare function useAgentInvoke(options: UseAgentInvokeOptions): {
59
59
  result: any;
60
60
  state: import("../lib/data-stream-parser").ToolState;
61
61
  })[]>;
62
- executingTools: Ref<Set<string> & Omit<Set<string>, keyof Set<any>>, Set<string> | (Set<string> & Omit<Set<string>, keyof Set<any>>)>;
62
+ executingTools: import("vue").Ref<Set<string> & Omit<Set<string>, keyof Set<any>>, Set<string> | (Set<string> & Omit<Set<string>, keyof Set<any>>)>;
63
63
  hasAnyContent: import("vue").ComputedRef<boolean>;
64
- conversationHistory: Ref<{
64
+ conversationHistory: import("vue").Ref<{
65
65
  role: "user" | "assistant";
66
66
  content: string;
67
67
  }[], {
package/types/types.d.ts CHANGED
@@ -33,6 +33,7 @@ export interface AiChatbotXContext {
33
33
  chatbotUrl: () => string;
34
34
  appId: () => string;
35
35
  appToken: () => string;
36
+ agentId: () => string | undefined;
36
37
  registerCommand: (cmd: CommandDefinition) => void;
37
38
  unregisterCommand: (name: string) => void;
38
39
  getCommads: () => Promise<DiscoveredCommand[]>;
File without changes