agent-relay-server 0.82.0 → 0.83.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.
- package/docs/openapi.json +367 -1
- package/package.json +2 -2
- package/public/assets/MessageBubble-BTBQr8uG.js +3 -0
- package/public/assets/MessageBubble-BTBQr8uG.js.map +1 -0
- package/public/assets/{PlanGraphPanel-r3aVT4uc.js → PlanGraphPanel-CoWJJVyD.js} +2 -2
- package/public/assets/{PlanGraphPanel-r3aVT4uc.js.map → PlanGraphPanel-CoWJJVyD.js.map} +1 -1
- package/public/assets/activity-XqRFu_9T.js +2 -0
- package/public/assets/{activity-DtMjjws8.js.map → activity-XqRFu_9T.js.map} +1 -1
- package/public/assets/{agent-profiles-eRlq98tp.js → agent-profiles-RFCLAgnC.js} +2 -2
- package/public/assets/{agent-profiles-eRlq98tp.js.map → agent-profiles-RFCLAgnC.js.map} +1 -1
- package/public/assets/{agents-DmbjRTA7.js → agents-BWmmWj4Q.js} +2 -2
- package/public/assets/{agents-DmbjRTA7.js.map → agents-BWmmWj4Q.js.map} +1 -1
- package/public/assets/{analytics-BW7ik_Ws.js → analytics-2H2z2UNS.js} +3 -3
- package/public/assets/{analytics-BW7ik_Ws.js.map → analytics-2H2z2UNS.js.map} +1 -1
- package/public/assets/{automation-CxwGXWC7.js → automation-DRtOENs0.js} +2 -2
- package/public/assets/{automation-CxwGXWC7.js.map → automation-DRtOENs0.js.map} +1 -1
- package/public/assets/{badge-BwaoBnNO.js → badge-CK6ejiOh.js} +2 -2
- package/public/assets/{badge-BwaoBnNO.js.map → badge-CK6ejiOh.js.map} +1 -1
- package/public/assets/branch-state-badge-DxwNcWr8.js +2 -0
- package/public/assets/{branch-state-badge-CvdKPTlV.js.map → branch-state-badge-DxwNcWr8.js.map} +1 -1
- package/public/assets/{button-CFIklTDX.js → button-BAwKuRIq.js} +2 -2
- package/public/assets/{button-CFIklTDX.js.map → button-BAwKuRIq.js.map} +1 -1
- package/public/assets/{card-Bi94xEmr.js → card-DDxxo-Fo.js} +2 -2
- package/public/assets/{card-Bi94xEmr.js.map → card-DDxxo-Fo.js.map} +1 -1
- package/public/assets/{channels-D8UY3baa.js → channels-Sh_jdB7y.js} +2 -2
- package/public/assets/{channels-D8UY3baa.js.map → channels-Sh_jdB7y.js.map} +1 -1
- package/public/assets/chat-gfUxbTus.js +2 -0
- package/public/assets/{chat-CCPukbI9.js.map → chat-gfUxbTus.js.map} +1 -1
- package/public/assets/{connectors-W2MslhQ2.js → connectors-C3C4i4Gz.js} +2 -2
- package/public/assets/{connectors-W2MslhQ2.js.map → connectors-C3C4i4Gz.js.map} +1 -1
- package/public/assets/{copy-button-A0pXLXBy.js → copy-button-D3B_s7J7.js} +2 -2
- package/public/assets/{copy-button-A0pXLXBy.js.map → copy-button-D3B_s7J7.js.map} +1 -1
- package/public/assets/display-CWMHll1J.js.map +1 -1
- package/public/assets/{dist--NYpzm4f.js → dist-CAFUEpK2.js} +2 -2
- package/public/assets/{dist--NYpzm4f.js.map → dist-CAFUEpK2.js.map} +1 -1
- package/public/assets/dist-CIbvPDQV.js +2 -0
- package/public/assets/{dist-D3jA_LvQ.js.map → dist-CIbvPDQV.js.map} +1 -1
- package/public/assets/{dist-DY3KCMIN.js → dist-CL2npVDe.js} +2 -2
- package/public/assets/{dist-DY3KCMIN.js.map → dist-CL2npVDe.js.map} +1 -1
- package/public/assets/{dist-DVorlUcA.js → dist-CnRv0y2x.js} +2 -2
- package/public/assets/{dist-DVorlUcA.js.map → dist-CnRv0y2x.js.map} +1 -1
- package/public/assets/dist-CoRABSO3.js +2 -0
- package/public/assets/{dist-rLCXIl7x.js.map → dist-CoRABSO3.js.map} +1 -1
- package/public/assets/{dist-yzKYLD10.js → dist-DLsSqk6h.js} +2 -2
- package/public/assets/{dist-yzKYLD10.js.map → dist-DLsSqk6h.js.map} +1 -1
- package/public/assets/{dist-DhEz6YNy.js → dist-Dmiv1tSO.js} +2 -2
- package/public/assets/{dist-DhEz6YNy.js.map → dist-Dmiv1tSO.js.map} +1 -1
- package/public/assets/dist-DyqEeyBI.js +2 -0
- package/public/assets/{dist-HTxIFS7t.js.map → dist-DyqEeyBI.js.map} +1 -1
- package/public/assets/{dist-_EunAAFX.js → dist-ERYvDMdt.js} +2 -2
- package/public/assets/{dist-_EunAAFX.js.map → dist-ERYvDMdt.js.map} +1 -1
- package/public/assets/{dist-C4VoXCT-.js → dist-YQVQrtnc.js} +2 -2
- package/public/assets/{dist-C4VoXCT-.js.map → dist-YQVQrtnc.js.map} +1 -1
- package/public/assets/{dist-BODiHbq1.js → dist-YjP8Gd1C.js} +2 -2
- package/public/assets/{dist-BODiHbq1.js.map → dist-YjP8Gd1C.js.map} +1 -1
- package/public/assets/{es2015-BDZowz0r.js → es2015-Yto-4EBw.js} +2 -2
- package/public/assets/{es2015-BDZowz0r.js.map → es2015-Yto-4EBw.js.map} +1 -1
- package/public/assets/{formatted-body-impl-tIjgf9Kr.js → formatted-body-impl-DpNHGXXQ.js} +2 -2
- package/public/assets/{formatted-body-impl-tIjgf9Kr.js.map → formatted-body-impl-DpNHGXXQ.js.map} +1 -1
- package/public/assets/index-D8TVUdlC.js +22 -0
- package/public/assets/index-D8TVUdlC.js.map +1 -0
- package/public/assets/index-DgZLDL0K.css +2 -0
- package/public/assets/{input-CD-ZcZIA.js → input-CLW2gDUM.js} +2 -2
- package/public/assets/{input-CD-ZcZIA.js.map → input-CLW2gDUM.js.map} +1 -1
- package/public/assets/{insights-B93PGmKq.js → insights-DPaJ5Hme.js} +2 -2
- package/public/assets/{insights-B93PGmKq.js.map → insights-DPaJ5Hme.js.map} +1 -1
- package/public/assets/{integrations-BfWMAznM.js → integrations-PqWMrPJa.js} +2 -2
- package/public/assets/{integrations-BfWMAznM.js.map → integrations-PqWMrPJa.js.map} +1 -1
- package/public/assets/{lib-BqL6WCDu.js → lib-DdCM7GfN.js} +2 -2
- package/public/assets/{lib-BqL6WCDu.js.map → lib-DdCM7GfN.js.map} +1 -1
- package/public/assets/lucide-react-CsPXvXMC.js +9 -0
- package/public/assets/{lucide-react-D78N6SwK.js.map → lucide-react-CsPXvXMC.js.map} +1 -1
- package/public/assets/{maintenance-CgRASTD0.js → maintenance-DsszLb92.js} +2 -2
- package/public/assets/{maintenance-CgRASTD0.js.map → maintenance-DsszLb92.js.map} +1 -1
- package/public/assets/{managed-agents-B1AdrEv4.js → managed-agents-DqWPxFE0.js} +2 -2
- package/public/assets/{managed-agents-B1AdrEv4.js.map → managed-agents-DqWPxFE0.js.map} +1 -1
- package/public/assets/{markdown-preview-impl-D2zEt-i-.js → markdown-preview-impl-CWR4ILHK.js} +2 -2
- package/public/assets/{markdown-preview-impl-D2zEt-i-.js.map → markdown-preview-impl-CWR4ILHK.js.map} +1 -1
- package/public/assets/memory-C2s9bJ38.js +2 -0
- package/public/assets/{memory-nUBcij_9.js.map → memory-C2s9bJ38.js.map} +1 -1
- package/public/assets/{messages-BNDs53bW.js → messages-DHRJNAvy.js} +2 -2
- package/public/assets/{messages-BNDs53bW.js.map → messages-DHRJNAvy.js.map} +1 -1
- package/public/assets/{orchestrators-BouoI90a.js → orchestrators-BGNNllJc.js} +2 -2
- package/public/assets/{orchestrators-BouoI90a.js.map → orchestrators-BGNNllJc.js.map} +1 -1
- package/public/assets/{overview-C8_hAGpC.js → overview-C1vZfyhW.js} +2 -2
- package/public/assets/{overview-C8_hAGpC.js.map → overview-C1vZfyhW.js.map} +1 -1
- package/public/assets/{pairs-BcCOB1oO.js → pairs-C1uzo8x0.js} +2 -2
- package/public/assets/{pairs-BcCOB1oO.js.map → pairs-C1uzo8x0.js.map} +1 -1
- package/public/assets/{projects-MZ6CNrYO.js → projects-B2-8Eu0e.js} +2 -2
- package/public/assets/{projects-MZ6CNrYO.js.map → projects-B2-8Eu0e.js.map} +1 -1
- package/public/assets/{react-dom-CU0WCHqq.js → react-dom-CEl58oxP.js} +2 -2
- package/public/assets/{react-dom-CU0WCHqq.js.map → react-dom-CEl58oxP.js.map} +1 -1
- package/public/assets/{security-Bh8BGpZR.js → security-XhAAP6q3.js} +2 -2
- package/public/assets/{security-Bh8BGpZR.js.map → security-XhAAP6q3.js.map} +1 -1
- package/public/assets/{select-Drdvachg.js → select-DEGUFEjx.js} +2 -2
- package/public/assets/{select-Drdvachg.js.map → select-DEGUFEjx.js.map} +1 -1
- package/public/assets/settings-DTbVUdlZ.js +4 -0
- package/public/assets/{settings-IrNBT0hy.js.map → settings-DTbVUdlZ.js.map} +1 -1
- package/public/assets/{store-CqFZmc-B.js → store-DYaQAXRv.js} +5 -5
- package/public/assets/{store-CqFZmc-B.js.map → store-DYaQAXRv.js.map} +1 -1
- package/public/assets/{tasks-heEgx7vT.js → tasks-zwGo7hon.js} +2 -2
- package/public/assets/{tasks-heEgx7vT.js.map → tasks-zwGo7hon.js.map} +1 -1
- package/public/assets/{teams-BjETr-_W.js → teams-Brc5D8ox.js} +2 -2
- package/public/assets/{teams-BjETr-_W.js.map → teams-Brc5D8ox.js.map} +1 -1
- package/public/assets/{terminal-viewer-impl-BDqmbWB3.js → terminal-viewer-impl-C6yUAL8G.js} +3 -3
- package/public/assets/{terminal-viewer-impl-BDqmbWB3.js.map → terminal-viewer-impl-C6yUAL8G.js.map} +1 -1
- package/public/assets/{use-keyboard-viewport-CichJ8Jn.js → use-keyboard-viewport-DABeIMEJ.js} +2 -2
- package/public/assets/{use-keyboard-viewport-CichJ8Jn.js.map → use-keyboard-viewport-DABeIMEJ.js.map} +1 -1
- package/public/assets/user-avatar-Bw1R011j.js +2 -0
- package/public/assets/user-avatar-Bw1R011j.js.map +1 -0
- package/public/assets/{work-queue-rgQs4Wis.js → work-queue-ge4R7keo.js} +2 -2
- package/public/assets/{work-queue-rgQs4Wis.js.map → work-queue-ge4R7keo.js.map} +1 -1
- package/public/assets/workspaces-BhblC-Nd.js +3 -0
- package/public/assets/{workspaces-hIjZicaF.js.map → workspaces-BhblC-Nd.js.map} +1 -1
- package/public/index.html +21 -21
- package/src/agent-drive-arbiter.ts +112 -0
- package/src/db/artifacts.ts +2 -3
- package/src/db/drive-leases.ts +165 -0
- package/src/db/index.ts +1 -0
- package/src/db/migrations.ts +6 -0
- package/src/db/users.ts +26 -0
- package/src/maintenance/jobs.ts +11 -0
- package/src/routes/_shared.ts +1 -1
- package/src/routes/agent-sessions.ts +97 -1
- package/src/routes/artifacts.ts +7 -3
- package/src/routes/index.ts +13 -2
- package/src/routes/users.ts +152 -6
- package/src/security.ts +2 -0
- package/src/services/user-profile.ts +69 -0
- package/src/upgrade-install-verify.ts +160 -0
- package/src/upgrade.ts +40 -11
- package/public/assets/MessageBubble-ckJ2VVgq.js +0 -3
- package/public/assets/MessageBubble-ckJ2VVgq.js.map +0 -1
- package/public/assets/activity-DtMjjws8.js +0 -2
- package/public/assets/branch-state-badge-CvdKPTlV.js +0 -2
- package/public/assets/chat-CCPukbI9.js +0 -2
- package/public/assets/dist-D3jA_LvQ.js +0 -2
- package/public/assets/dist-HTxIFS7t.js +0 -2
- package/public/assets/dist-rLCXIl7x.js +0 -2
- package/public/assets/index-BfQFX8td.js +0 -22
- package/public/assets/index-BfQFX8td.js.map +0 -1
- package/public/assets/index-D8vc380x.css +0 -2
- package/public/assets/lucide-react-D78N6SwK.js +0 -9
- package/public/assets/memory-nUBcij_9.js +0 -2
- package/public/assets/settings-IrNBT0hy.js +0 -4
- package/public/assets/workspaces-hIjZicaF.js +0 -3
package/docs/openapi.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"openapi": "3.1.0",
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "Agent Relay API",
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.83.1",
|
|
6
6
|
"description": "Real-time message bus for inter-agent communication. Agent-first: this spec is designed for machine consumption — agents can self-discover the full API surface via GET /api/spec.",
|
|
7
7
|
"license": {
|
|
8
8
|
"name": "MIT",
|
|
@@ -522,6 +522,298 @@
|
|
|
522
522
|
]
|
|
523
523
|
}
|
|
524
524
|
},
|
|
525
|
+
"/api/users/me": {
|
|
526
|
+
"get": {
|
|
527
|
+
"operationId": "getMe",
|
|
528
|
+
"summary": "Get Me",
|
|
529
|
+
"tags": [
|
|
530
|
+
"Other"
|
|
531
|
+
],
|
|
532
|
+
"responses": {
|
|
533
|
+
"200": {
|
|
534
|
+
"description": "Success",
|
|
535
|
+
"content": {
|
|
536
|
+
"application/json": {}
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
},
|
|
540
|
+
"security": [
|
|
541
|
+
{
|
|
542
|
+
"bearerAuth": []
|
|
543
|
+
},
|
|
544
|
+
{
|
|
545
|
+
"tokenHeader": []
|
|
546
|
+
},
|
|
547
|
+
{
|
|
548
|
+
"tokenQuery": []
|
|
549
|
+
}
|
|
550
|
+
]
|
|
551
|
+
},
|
|
552
|
+
"patch": {
|
|
553
|
+
"operationId": "patchMe",
|
|
554
|
+
"summary": "Patch Me",
|
|
555
|
+
"tags": [
|
|
556
|
+
"Other"
|
|
557
|
+
],
|
|
558
|
+
"responses": {
|
|
559
|
+
"200": {
|
|
560
|
+
"description": "Success",
|
|
561
|
+
"content": {
|
|
562
|
+
"application/json": {}
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
},
|
|
566
|
+
"security": [
|
|
567
|
+
{
|
|
568
|
+
"bearerAuth": []
|
|
569
|
+
},
|
|
570
|
+
{
|
|
571
|
+
"tokenHeader": []
|
|
572
|
+
},
|
|
573
|
+
{
|
|
574
|
+
"tokenQuery": []
|
|
575
|
+
}
|
|
576
|
+
]
|
|
577
|
+
}
|
|
578
|
+
},
|
|
579
|
+
"/api/users/me/avatar": {
|
|
580
|
+
"post": {
|
|
581
|
+
"operationId": "postMyAvatar",
|
|
582
|
+
"summary": "Post My Avatar",
|
|
583
|
+
"tags": [
|
|
584
|
+
"Other"
|
|
585
|
+
],
|
|
586
|
+
"responses": {
|
|
587
|
+
"200": {
|
|
588
|
+
"description": "Success",
|
|
589
|
+
"content": {
|
|
590
|
+
"application/json": {}
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
},
|
|
594
|
+
"security": [
|
|
595
|
+
{
|
|
596
|
+
"bearerAuth": []
|
|
597
|
+
},
|
|
598
|
+
{
|
|
599
|
+
"tokenHeader": []
|
|
600
|
+
},
|
|
601
|
+
{
|
|
602
|
+
"tokenQuery": []
|
|
603
|
+
}
|
|
604
|
+
]
|
|
605
|
+
},
|
|
606
|
+
"delete": {
|
|
607
|
+
"operationId": "deleteMyAvatar",
|
|
608
|
+
"summary": "Delete My Avatar",
|
|
609
|
+
"tags": [
|
|
610
|
+
"Other"
|
|
611
|
+
],
|
|
612
|
+
"responses": {
|
|
613
|
+
"200": {
|
|
614
|
+
"description": "Success",
|
|
615
|
+
"content": {
|
|
616
|
+
"application/json": {}
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
},
|
|
620
|
+
"security": [
|
|
621
|
+
{
|
|
622
|
+
"bearerAuth": []
|
|
623
|
+
},
|
|
624
|
+
{
|
|
625
|
+
"tokenHeader": []
|
|
626
|
+
},
|
|
627
|
+
{
|
|
628
|
+
"tokenQuery": []
|
|
629
|
+
}
|
|
630
|
+
]
|
|
631
|
+
}
|
|
632
|
+
},
|
|
633
|
+
"/api/users/{id}/avatar": {
|
|
634
|
+
"get": {
|
|
635
|
+
"operationId": "getUserAvatar",
|
|
636
|
+
"summary": "Get User Avatar",
|
|
637
|
+
"tags": [
|
|
638
|
+
"Other"
|
|
639
|
+
],
|
|
640
|
+
"parameters": [
|
|
641
|
+
{
|
|
642
|
+
"name": "id",
|
|
643
|
+
"in": "path",
|
|
644
|
+
"required": true,
|
|
645
|
+
"schema": {
|
|
646
|
+
"type": "string"
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
],
|
|
650
|
+
"responses": {
|
|
651
|
+
"200": {
|
|
652
|
+
"description": "Success",
|
|
653
|
+
"content": {
|
|
654
|
+
"application/json": {}
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
},
|
|
658
|
+
"security": [
|
|
659
|
+
{
|
|
660
|
+
"bearerAuth": []
|
|
661
|
+
},
|
|
662
|
+
{
|
|
663
|
+
"tokenHeader": []
|
|
664
|
+
},
|
|
665
|
+
{
|
|
666
|
+
"tokenQuery": []
|
|
667
|
+
}
|
|
668
|
+
]
|
|
669
|
+
},
|
|
670
|
+
"head": {
|
|
671
|
+
"operationId": "headUserAvatar",
|
|
672
|
+
"summary": "Head User Avatar",
|
|
673
|
+
"tags": [
|
|
674
|
+
"Other"
|
|
675
|
+
],
|
|
676
|
+
"parameters": [
|
|
677
|
+
{
|
|
678
|
+
"name": "id",
|
|
679
|
+
"in": "path",
|
|
680
|
+
"required": true,
|
|
681
|
+
"schema": {
|
|
682
|
+
"type": "string"
|
|
683
|
+
}
|
|
684
|
+
}
|
|
685
|
+
],
|
|
686
|
+
"responses": {
|
|
687
|
+
"200": {
|
|
688
|
+
"description": "Success",
|
|
689
|
+
"content": {
|
|
690
|
+
"application/json": {}
|
|
691
|
+
}
|
|
692
|
+
}
|
|
693
|
+
},
|
|
694
|
+
"security": [
|
|
695
|
+
{
|
|
696
|
+
"bearerAuth": []
|
|
697
|
+
},
|
|
698
|
+
{
|
|
699
|
+
"tokenHeader": []
|
|
700
|
+
},
|
|
701
|
+
{
|
|
702
|
+
"tokenQuery": []
|
|
703
|
+
}
|
|
704
|
+
]
|
|
705
|
+
},
|
|
706
|
+
"post": {
|
|
707
|
+
"operationId": "postUserAvatarById",
|
|
708
|
+
"summary": "Post User Avatar",
|
|
709
|
+
"tags": [
|
|
710
|
+
"Other"
|
|
711
|
+
],
|
|
712
|
+
"parameters": [
|
|
713
|
+
{
|
|
714
|
+
"name": "id",
|
|
715
|
+
"in": "path",
|
|
716
|
+
"required": true,
|
|
717
|
+
"schema": {
|
|
718
|
+
"type": "string"
|
|
719
|
+
}
|
|
720
|
+
}
|
|
721
|
+
],
|
|
722
|
+
"responses": {
|
|
723
|
+
"200": {
|
|
724
|
+
"description": "Success",
|
|
725
|
+
"content": {
|
|
726
|
+
"application/json": {}
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
},
|
|
730
|
+
"security": [
|
|
731
|
+
{
|
|
732
|
+
"bearerAuth": []
|
|
733
|
+
},
|
|
734
|
+
{
|
|
735
|
+
"tokenHeader": []
|
|
736
|
+
},
|
|
737
|
+
{
|
|
738
|
+
"tokenQuery": []
|
|
739
|
+
}
|
|
740
|
+
]
|
|
741
|
+
},
|
|
742
|
+
"delete": {
|
|
743
|
+
"operationId": "deleteUserAvatarById",
|
|
744
|
+
"summary": "Delete User Avatar",
|
|
745
|
+
"tags": [
|
|
746
|
+
"Other"
|
|
747
|
+
],
|
|
748
|
+
"parameters": [
|
|
749
|
+
{
|
|
750
|
+
"name": "id",
|
|
751
|
+
"in": "path",
|
|
752
|
+
"required": true,
|
|
753
|
+
"schema": {
|
|
754
|
+
"type": "string"
|
|
755
|
+
}
|
|
756
|
+
}
|
|
757
|
+
],
|
|
758
|
+
"responses": {
|
|
759
|
+
"200": {
|
|
760
|
+
"description": "Success",
|
|
761
|
+
"content": {
|
|
762
|
+
"application/json": {}
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
},
|
|
766
|
+
"security": [
|
|
767
|
+
{
|
|
768
|
+
"bearerAuth": []
|
|
769
|
+
},
|
|
770
|
+
{
|
|
771
|
+
"tokenHeader": []
|
|
772
|
+
},
|
|
773
|
+
{
|
|
774
|
+
"tokenQuery": []
|
|
775
|
+
}
|
|
776
|
+
]
|
|
777
|
+
}
|
|
778
|
+
},
|
|
779
|
+
"/api/users/{id}": {
|
|
780
|
+
"patch": {
|
|
781
|
+
"operationId": "patchUserById",
|
|
782
|
+
"summary": "Patch User",
|
|
783
|
+
"tags": [
|
|
784
|
+
"Other"
|
|
785
|
+
],
|
|
786
|
+
"parameters": [
|
|
787
|
+
{
|
|
788
|
+
"name": "id",
|
|
789
|
+
"in": "path",
|
|
790
|
+
"required": true,
|
|
791
|
+
"schema": {
|
|
792
|
+
"type": "string"
|
|
793
|
+
}
|
|
794
|
+
}
|
|
795
|
+
],
|
|
796
|
+
"responses": {
|
|
797
|
+
"200": {
|
|
798
|
+
"description": "Success",
|
|
799
|
+
"content": {
|
|
800
|
+
"application/json": {}
|
|
801
|
+
}
|
|
802
|
+
}
|
|
803
|
+
},
|
|
804
|
+
"security": [
|
|
805
|
+
{
|
|
806
|
+
"bearerAuth": []
|
|
807
|
+
},
|
|
808
|
+
{
|
|
809
|
+
"tokenHeader": []
|
|
810
|
+
},
|
|
811
|
+
{
|
|
812
|
+
"tokenQuery": []
|
|
813
|
+
}
|
|
814
|
+
]
|
|
815
|
+
}
|
|
816
|
+
},
|
|
525
817
|
"/api/agents": {
|
|
526
818
|
"post": {
|
|
527
819
|
"operationId": "postAgent",
|
|
@@ -1609,6 +1901,80 @@
|
|
|
1609
1901
|
]
|
|
1610
1902
|
}
|
|
1611
1903
|
},
|
|
1904
|
+
"/api/agents/{id}/drive": {
|
|
1905
|
+
"get": {
|
|
1906
|
+
"operationId": "getAgentDrive",
|
|
1907
|
+
"summary": "Get Agent Drive",
|
|
1908
|
+
"tags": [
|
|
1909
|
+
"Agents"
|
|
1910
|
+
],
|
|
1911
|
+
"parameters": [
|
|
1912
|
+
{
|
|
1913
|
+
"name": "id",
|
|
1914
|
+
"in": "path",
|
|
1915
|
+
"required": true,
|
|
1916
|
+
"schema": {
|
|
1917
|
+
"type": "string"
|
|
1918
|
+
}
|
|
1919
|
+
}
|
|
1920
|
+
],
|
|
1921
|
+
"responses": {
|
|
1922
|
+
"200": {
|
|
1923
|
+
"description": "Success",
|
|
1924
|
+
"content": {
|
|
1925
|
+
"application/json": {}
|
|
1926
|
+
}
|
|
1927
|
+
}
|
|
1928
|
+
},
|
|
1929
|
+
"security": [
|
|
1930
|
+
{
|
|
1931
|
+
"bearerAuth": []
|
|
1932
|
+
},
|
|
1933
|
+
{
|
|
1934
|
+
"tokenHeader": []
|
|
1935
|
+
},
|
|
1936
|
+
{
|
|
1937
|
+
"tokenQuery": []
|
|
1938
|
+
}
|
|
1939
|
+
]
|
|
1940
|
+
},
|
|
1941
|
+
"post": {
|
|
1942
|
+
"operationId": "postAgentDrive",
|
|
1943
|
+
"summary": "Post Agent Drive",
|
|
1944
|
+
"tags": [
|
|
1945
|
+
"Agents"
|
|
1946
|
+
],
|
|
1947
|
+
"parameters": [
|
|
1948
|
+
{
|
|
1949
|
+
"name": "id",
|
|
1950
|
+
"in": "path",
|
|
1951
|
+
"required": true,
|
|
1952
|
+
"schema": {
|
|
1953
|
+
"type": "string"
|
|
1954
|
+
}
|
|
1955
|
+
}
|
|
1956
|
+
],
|
|
1957
|
+
"responses": {
|
|
1958
|
+
"200": {
|
|
1959
|
+
"description": "Success",
|
|
1960
|
+
"content": {
|
|
1961
|
+
"application/json": {}
|
|
1962
|
+
}
|
|
1963
|
+
}
|
|
1964
|
+
},
|
|
1965
|
+
"security": [
|
|
1966
|
+
{
|
|
1967
|
+
"bearerAuth": []
|
|
1968
|
+
},
|
|
1969
|
+
{
|
|
1970
|
+
"tokenHeader": []
|
|
1971
|
+
},
|
|
1972
|
+
{
|
|
1973
|
+
"tokenQuery": []
|
|
1974
|
+
}
|
|
1975
|
+
]
|
|
1976
|
+
}
|
|
1977
|
+
},
|
|
1612
1978
|
"/api/agents/{id}/terminal-session": {
|
|
1613
1979
|
"post": {
|
|
1614
1980
|
"operationId": "postAgentTerminalSession",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-relay-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.83.1",
|
|
4
4
|
"description": "Lightweight HTTP message relay for inter-agent communication across machines",
|
|
5
5
|
"module": "src/index.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"CONTRIBUTING.md"
|
|
34
34
|
],
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"agent-relay-sdk": "0.2.
|
|
36
|
+
"agent-relay-sdk": "0.2.63",
|
|
37
37
|
"ajv": "^8.20.0"
|
|
38
38
|
},
|
|
39
39
|
"scripts": {
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{r as e}from"./chunk-CilyBKbf.js";import{Cn as t,Ct as n,F as r,Fn as i,Hn as a,It as o,Kn as s,Kt as c,On as l,Pn as u,R as d,Wn as f,a as p,b as m,c as h,dn as g,en as _,fn as v,g as ee,gn as y,hn as b,i as x,in as te,lt as S,m as C,mn as w,ot as ne,qt as re,r as T,rn as E,rr as D,un as O,wt as ie,y as k,z as A}from"./lucide-react-CsPXvXMC.js";import{g as j,r as ae,t as M}from"./store-DYaQAXRv.js";import{E as N,H as P,N as F,P as I,R as L,S as R,V as oe,Z as z,_ as se,d as ce,f as le,k as B,lt as V,q as H,v as ue}from"./display-CWMHll1J.js";import{C as U,a as de,i as fe,o as pe,t as W}from"./index-D8TVUdlC.js";import{t as me}from"./user-avatar-Bw1R011j.js";var G=e(D(),1),he={online:`came online`,offline:`went offline`,shutdown:`shut down`,restarted:`restarted`,"compaction-requested":`compaction requested`,compacting:`compaction started`,compacted:`context compacted`,"compaction-stalled":`compaction stalled — may need manual intervention`,"clear-requested":`clear requested`,"clearing-context":`clear started`,"context-cleared":`context cleared`,"clear-stalled":`context clear stalled — may need manual intervention`,"shutting-down":`shutting down`},ge=new Set(Object.keys(he)),_e=3e3;function K(e){return new Date(e.occurredAt??e.createdAt).getTime()}function ve(e){if(e.kind!==`session`)return null;let t=e.payload?.session;return!t||t.type!==`narration`&&t.type!==`reasoning`&&t.type!==`tool`?null:{id:e.id,kind:t.type,label:typeof t.label==`string`?t.label:void 0,text:e.body,ts:K(e),turnId:typeof t.turnId==`string`?t.turnId:void 0}}function ye(e){if(e.kind!==`session`)return null;let t=e.payload?.session;if(t?.type!==`notice`)return null;let n=typeof t.label==`string`&&t.label?t.label:`compacted`;return{id:`notice-${e.id}`,status:n,timestamp:K(e)}}function be(e){if(e.kind!==`session`)return null;let t=e.payload?.session;if(t?.type!==`relay-injection`)return null;let n=t.relayInjection&&typeof t.relayInjection==`object`&&!Array.isArray(t.relayInjection)?t.relayInjection:{},r=typeof n.category==`string`&&[`memory`,`instructions`,`tools`,`comms`,`knowledge`,`context`].includes(n.category)?n.category:`context`,i=typeof n.timestamp==`number`&&Number.isFinite(n.timestamp)?n.timestamp:K(e),a=n.detail&&typeof n.detail==`object`&&!Array.isArray(n.detail)?n.detail:{};return{id:e.id,category:r,summary:typeof n.summary==`string`&&n.summary.trim()?n.summary:e.body,detail:a,agentId:typeof n.agentId==`string`&&n.agentId?n.agentId:e.from,timestamp:i}}function xe(e,t){let n=e.trim();for(let e of t){let t=e.trim();if(t){if(n===t)break;n.startsWith(`${t}\n\n`)&&(n=n.slice(t.length+2).trimStart())}}return n.trim()||e.trim()}function Se(e){return e.kind===`system`&&e.from===`system`}var Ce=new Set([`agent.ready`,`agent.exited`,`agent.spawn_failed`]);function q(e){let t=new Date(e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)}`}function we(e){let t=e.filter(e=>ge.has(e.status)).slice().sort((e,t)=>e.timestamp-t.timestamp),n=[];for(let e of t)n.some(t=>t.id===e.id)||n.some(t=>t.status===e.status&&Math.abs(t.timestamp-e.timestamp)<=_e)||n.push(e);return n}function Te(e,t,n,r=[],i){let a=[];for(let e of r){let t=e.entries.reduce((e,t)=>Math.min(e,H(t.originalCreatedAt)),1/0),n=Number.isFinite(t)?t-1:e.importedAt;a.push({ts:n,entry:{type:`import-boundary`,history:e,timestamp:n}});for(let t of e.entries)a.push({ts:H(t.originalCreatedAt),entry:{type:`imported-message`,history:e,entry:t}})}if(n){let e=new Date(n).getTime();Number.isFinite(e)&&a.push({ts:e,entry:{type:`created`,timestamp:e}})}if(i?.spawnedBy){let e=n?new Date(n).getTime():0,t=Number.isFinite(e)?e:0;a.push({ts:t,entry:{type:`agent-action`,direction:`spawned-by`,agentId:i.spawnedBy.agentId,provider:i.spawnedBy.provider,status:`ready`,timestamp:t}})}let o=i?.spawnedBy?.agentId,s=null,c=1/0;for(let t of e){if(t.kind===`session`||Se(t)||N(t)||!(t.from===`user`||o!==void 0&&t.from===o)||!B(t).trim())continue;let e=K(t);e<c&&(c=e,s=t.id)}let l=new Map,u=new Map,d=new Map;for(let t of e){if(t.kind!==`session`)continue;let e=t.payload?.session;if(e?.type===`narration`&&typeof e.turnId==`string`){let n=u.get(e.turnId)??[];n.push({id:t.id,body:t.body.trim()}),u.set(e.turnId,n)}else if(e?.type===`response`&&typeof e.turnId==`string`){let n=l.get(e.turnId)??[];n.push(t.body.trim()),l.set(e.turnId,n)}}let f=new Map;for(let[e,t]of l){let n=(u.get(e)??[]).map(e=>e.body);f.set(e,t.map(e=>xe(e,n)))}for(let t of e){if(t.kind!==`session`)continue;let e=t.payload?.session;if(e?.type!==`response`||typeof e.turnId!=`string`)continue;let n=xe(t.body,(u.get(e.turnId)??[]).map(e=>e.body));n&&n!==t.body&&d.set(t.id,n)}let p=new Set;for(let[e,t]of f){let n=u.get(e)??[];for(let e of t)for(let t=n.length-1;t>=0;t--){let r=n[t];if(!p.has(r.id)&&P(e,r.body)){p.add(r.id);break}}}let m=new Map,h=[];for(let t of e){if(Se(t)){let e=typeof t.payload?.kind==`string`?t.payload.kind:``;if(Ce.has(e)){let n=t.payload,r=typeof n.agentId==`string`?n.agentId:``,i=K(t);if(!r){a.push({ts:i,entry:{type:`notice`,msg:t}});continue}let o=e===`agent.ready`?`ready`:e===`agent.exited`?`exited`:`failed`,s=m.get(r);if(s)s.entry.status=o,typeof n.reason==`string`&&(s.entry.reason=n.reason),s.entry.timestamp=i,s.ts=i;else{let e={ts:i,entry:{type:`agent-action`,direction:`spawned-child`,agentId:r,provider:typeof n.provider==`string`?n.provider:void 0,status:o,reason:typeof n.reason==`string`?n.reason:void 0,timestamp:i}};m.set(r,e),a.push(e)}continue}a.push({ts:K(t),entry:{type:`notice`,msg:t}});continue}let e=ye(t);if(e){h.push(e);continue}let n=ve(t);if(n){if(n.kind===`narration`&&p.has(n.id))continue;a.push({ts:n.ts,entry:{type:`activity`,steps:[n],timestamp:n.ts}});continue}let r=be(t);if(r){a.push({ts:r.timestamp,entry:{type:`relay-injection`,event:r}});continue}if(t.kind===`session`){let e=t.payload?.session;if(e?.type===`response`&&typeof e.turnId==`string`){let e=d.get(t.id);if(e&&e!==t.body){a.push({ts:K(t),entry:{type:`message`,msg:{...t,body:e}}});continue}}}let i=t.id===s?`initial-prompt`:`message`;a.push({ts:K(t),entry:{type:i,msg:t}})}for(let e of we([...t,...h]))a.push({ts:e.timestamp,entry:{type:`status`,event:e}});let g={created:0,date:1,"import-boundary":2,"imported-message":3,"initial-prompt":4,message:4,activity:4,notice:4,"agent-action":4,"relay-injection":4,status:5};a.sort((e,t)=>{let n=e.ts-t.ts;return Math.abs(n)<3e3&&g[e.entry.type]-g[t.entry.type]||n});let _=[],v=``;for(let{ts:e,entry:t}of a){if(t.type===`created`){_.push(t);continue}let n=q(e);if(n!==v&&(_.push({type:`date`,date:n,timestamp:e}),v=n),t.type===`activity`){let e=_[_.length-1];if(e&&e.type===`activity`&&Oe(e,t)){e.steps.push(...t.steps);continue}}_.push(t)}return _}function Ee(e){return e.type===`message`?`msg-${e.msg.id}`:e.type===`initial-prompt`?`initprompt-${e.msg.id}`:e.type===`notice`?`notice-${e.msg.id}`:e.type===`relay-injection`?`relay-injection-${e.event.id}`:e.type===`agent-action`?`agent-action-${e.direction}-${e.agentId}`:e.type===`activity`?`act-${e.steps[0]?.id??e.timestamp}`:e.type===`import-boundary`?`import-${e.history.id}`:e.type===`imported-message`?`import-msg-${e.history.id}-${e.entry.originalMessageId}-${e.entry.position}`:e.type===`status`?`status-${e.event.id}`:e.type===`date`?`date-${e.date}`:`created-${e.timestamp}`}function De(e){return e.type===`message`||e.type===`initial-prompt`||e.type===`notice`?(e.msg.subject?`${e.msg.subject} `:``)+B(e.msg):e.type===`imported-message`?B(e.entry.message):e.type===`activity`?e.steps.map(e=>[e.label,e.text].filter(Boolean).join(` `)).join(`
|
|
2
|
+
`):e.type===`relay-injection`?`${e.event.category} ${e.event.summary}\n${JSON.stringify(e.event.detail)}`:``}function Oe(e,t){let n=e.steps[e.steps.length-1]?.turnId,r=t.steps[0]?.turnId;return n&&r?n===r:!n&&!r}function ke(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(1)} MB`}function Ae(e,t){if(t.startsWith(`/`))return t;let n=`${e.replace(/\/+$/,``)}/${t}`.split(`/`),r=[];for(let e of n)!e||e===`.`||(e===`..`?r.pop():r.push(e));return`/`+r.join(`/`)}function je(e){let t=e.replace(/\/+$/,``),n=t.lastIndexOf(`/`);return n>0?t.slice(0,n):`/`}function Me(e,t){return e.filter(e=>e.status===`online`&&L(t,e.baseDir)).sort((e,t)=>F(t.baseDir).length-F(e.baseDir).length)[0]||e.find(e=>e.status===`online`)}function Ne(){return typeof window<`u`&&window.matchMedia(`(min-width: 1280px)`).matches}function Pe(){return typeof window<`u`&&!!window.getSelection()?.toString()}function Fe(e){let t=e.payload?.attachments;return Array.isArray(t)?t.filter(e=>!!(e&&typeof e==`object`&&typeof e.artifactId==`string`)):[]}var Ie=[`👍`,`❤️`,`✅`,`👀`];function Le(e){let t=new Map;for(let n of e.reactions||[]){let e=I(n.emoji),r=t.get(e)??{emoji:e,count:0,mine:!1,actors:[]};r.count+=1,r.mine=r.mine||n.actorId===`user`,r.actors.push(n.actorId),t.set(e,r)}return[...t.values()].sort((e,t)=>t.count-e.count||e.emoji.localeCompare(t.emoji))}function J(e){return N(e)}function Re(e,t){let n=e.readBy||[],r=e.resolvedToAgent||t||e.to,i=r?n.includes(r):!1,a=n.some(e=>e!==V);if(i||a){let e=i?r:n.find(e=>e!==V);return{label:`read`,title:e?`Read by ${e}`:`Read by agent`,tone:`ok`,icon:y}}if(e.deliveryStatus===`delivered`)return{label:`delivered`,title:`Delivered to agent inbox`,tone:`ok`,icon:y};if(e.deliveryStatus===`queued`)return{label:`queued`,title:`Queued until the target agent is available`,tone:`warn`,icon:_};if(e.deliveryStatus===`failed`||e.deliveryStatus===`dead`){let t=e.deliveryPoisonReason||e.deliveryLastError||e.deliveryStatus;return{label:e.deliveryStatus,title:t,tone:`danger`,icon:O}}return{label:`sent`,title:`Accepted by Relay`,tone:`muted`,icon:b}}function ze(e){let t=H(e.createdAt);return(e.reactions||[]).reduce((e,t)=>Math.max(e,H(t.updatedAt||t.createdAt)),t)}function Be(e){return e?e.messages.reduce((e,t)=>Math.max(e,ze(t)),0):0}function Ve(e,t,n){return(e-t)*n}function He(e){if(!e)return 0;let t=0;for(let n of e.messages)R(n)&&(t=Math.max(t,H(n.createdAt)));return t}function Y(e){return new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}function Ue(e){for(let t of e)t.previewUrl&&URL.revokeObjectURL(t.previewUrl)}function We(e,t,n,r){if(e?.teamId)return{teamId:e.teamId};let i=[...t];n&&!i.some(e=>e.id===n.id)&&i.push(n);let a=i.filter(e=>e.threadId).reverse(),o=a.find(e=>!!r[ae(e.threadId,e.channel)])??a[0];return o?.threadId?{threadId:o.threadId,...o.channel?{channel:o.channel}:{}}:null}var X=f(),Ge={online:`text-emerald-400`,offline:`text-zinc-400`,shutdown:`text-zinc-400`,restarted:`text-blue-400`,"compaction-requested":`text-zinc-400`,compacting:`text-amber-400`,compacted:`text-amber-400`,"compaction-stalled":`text-red-400`,"clear-requested":`text-zinc-400`,"clearing-context":`text-amber-400`,"context-cleared":`text-amber-400`,"clear-stalled":`text-red-400`,"shutting-down":`text-zinc-400`};function Ke(e){let t=new Date,[n,r,i]=e.split(`-`).map(Number),a=new Date(n,r-1,i);if(e===q(t.getTime()))return`Today`;let o=new Date(t);return o.setDate(o.getDate()-1),e===q(o.getTime())?`Yesterday`:a.toLocaleDateString(void 0,{weekday:`short`,month:`short`,day:`numeric`,year:a.getFullYear()===t.getFullYear()?void 0:`numeric`})}function qe({event:e}){return(0,X.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-2 my-1`,children:[(0,X.jsx)(`div`,{className:`h-px flex-1 bg-border`}),(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs text-muted-foreground`,children:[(0,X.jsx)(E,{className:a(`w-2 h-2 fill-current`,Ge[e.status]||`text-zinc-400`)}),(0,X.jsx)(`span`,{children:he[e.status]||e.status}),(0,X.jsx)(`span`,{className:`text-muted-foreground/60`,children:Y(e.timestamp)})]}),(0,X.jsx)(`div`,{className:`h-px flex-1 bg-border`})]})}var Je={"branch.landed":n,"context.warning":C,"agent.context_threshold":C,"agent.resume_budget_exhausted":C,"agent.rate_limit_resume":A},Ye={"branch.landed":`branch landed`,"context.warning":`context warning`,"agent.context_threshold":`context threshold reached`};function Xe(e){return e&&(e.includes(`.`)?e.slice(e.indexOf(`.`)+1):e).replace(/[._-]+/g,` `).trim()||`system signal`}function Z({agentId:e,fallbackLabel:t,className:n,noIcon:r}){let i=M(t=>t.agentsById[e])||null,o=M(e=>e.openInboxThread),s=M(e=>e.switchView),c=i?ce(i):t||e;return(0,X.jsxs)(`button`,{type:`button`,className:a(`inline-flex max-w-full items-center gap-1 rounded px-1 text-muted-foreground transition-colors hover:bg-muted/50 hover:text-foreground`,n),onClick:t=>{t.stopPropagation(),o(e),s(`chat`)},title:`Open chat for ${c}`,children:[!r&&(0,X.jsx)(U,{agent:i,className:`w-4 h-4 text-[10px]`}),(0,X.jsx)(`span`,{className:`max-w-[160px] truncate`,children:c})]})}function Ze({msg:e}){let t=e.payload??{},r=typeof t.sha==`string`?t.sha:``,i=r?r.slice(0,7):``,a=typeof t.author==`string`?t.author:``,o=typeof t.branch==`string`?t.branch:``,s=typeof t.base==`string`?t.base:``,c=t.pushed;return(0,X.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-2 my-1`,children:[(0,X.jsx)(`div`,{className:`h-px flex-1 bg-border`}),(0,X.jsxs)(`div`,{className:`flex max-w-full flex-wrap items-center justify-center gap-x-1.5 gap-y-0.5 rounded-full border border-emerald-600/35 bg-emerald-500/10 px-2.5 py-1 text-xs text-emerald-700 dark:border-emerald-500/25 dark:text-emerald-300/90`,children:[(0,X.jsx)(n,{className:`h-3 w-3 shrink-0 text-emerald-600 dark:text-emerald-400`}),(0,X.jsx)(`span`,{className:`text-emerald-700 dark:text-emerald-300`,children:`branch landed`}),o&&s&&(0,X.jsxs)(`span`,{className:`font-mono text-emerald-700/80 dark:text-emerald-200/70`,title:`${o} → ${s}`,children:[o,(0,X.jsx)(`span`,{className:`opacity-50`,children:` → `}),s]}),i&&(0,X.jsx)(`span`,{className:`rounded bg-emerald-500/15 px-1 font-mono text-emerald-800 dark:text-emerald-200`,title:r,children:i}),a&&(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-emerald-700/80 dark:text-emerald-300/80`,children:[(0,X.jsx)(`span`,{className:`opacity-70`,children:`by`}),(0,X.jsx)(Z,{agentId:a,className:`text-emerald-700 hover:text-emerald-900 dark:text-emerald-300/90 dark:hover:text-emerald-100`})]}),c===!1&&(0,X.jsx)(`span`,{className:`text-amber-600 dark:text-amber-300/80`,title:`Local-only land — not pushed to origin`,children:`· local only`}),(0,X.jsx)(`span`,{className:`text-emerald-700/60 dark:text-emerald-300/50`,children:Y(e.occurredAt??e.createdAt)})]}),(0,X.jsx)(`div`,{className:`h-px flex-1 bg-border`})]})}function Qe({msg:e}){let t=typeof e.payload?.kind==`string`?e.payload.kind:``;if(t===`branch.landed`)return(0,X.jsx)(Ze,{msg:e});let n=Je[t]??r,i=Ye[t]??Xe(t);return(0,X.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-2 my-1`,children:[(0,X.jsx)(`div`,{className:`h-px flex-1 bg-border`}),(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 rounded-full border border-border bg-muted/30 px-2.5 py-1 text-xs text-muted-foreground`,children:[(0,X.jsx)(n,{className:`h-3 w-3`}),(0,X.jsx)(`span`,{children:i}),(0,X.jsx)(`span`,{className:`text-muted-foreground/60`,children:Y(e.occurredAt??e.createdAt)})]}),(0,X.jsx)(`div`,{className:`h-px flex-1 bg-border`})]})}var $e={"spawned-child":{ready:`spawned`,exited:`spawned · exited`,failed:`spawn failed`},"spawned-by":{ready:`spawned by`,exited:`spawned by`,failed:`spawned by`}},et={"spawned-child-ready":d,"spawned-child-exited":ne,"spawned-child-failed":O,"spawned-by-ready":i,"spawned-by-exited":i,"spawned-by-failed":i},tt={"spawned-child-ready":`text-emerald-400`,"spawned-child-exited":`text-zinc-400`,"spawned-child-failed":`text-red-400`,"spawned-by-ready":`text-blue-400`,"spawned-by-exited":`text-blue-400`,"spawned-by-failed":`text-blue-400`};function nt({entry:e}){let t=`${e.direction}-${e.status}`,n=$e[e.direction]?.[e.status]??e.direction,i=et[t]??r,o=tt[t]??`text-muted-foreground`,s=e.status===`failed`;return(0,X.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-2 my-1`,children:[(0,X.jsx)(`div`,{className:`h-px flex-1 bg-border`}),(0,X.jsxs)(`div`,{className:a(`flex items-center gap-1.5 rounded-full border bg-muted/30 px-2.5 py-1 text-xs`,s?`border-red-500/30`:`border-border`),children:[(0,X.jsx)(i,{className:a(`h-3 w-3 shrink-0`,o)}),(0,X.jsx)(`span`,{className:`text-muted-foreground`,children:n}),(0,X.jsx)(Z,{agentId:e.agentId}),e.reason&&s&&(0,X.jsxs)(`span`,{className:`text-red-400/80 max-w-[120px] truncate`,title:e.reason,children:[`— `,e.reason]}),(0,X.jsx)(`span`,{className:`text-muted-foreground/60 shrink-0`,children:Y(e.timestamp)})]}),(0,X.jsx)(`div`,{className:`h-px flex-1 bg-border`})]})}var rt={memory:t,instructions:o,tools:p,comms:r,knowledge:l,context:re},it={memory:`border-emerald-500/25 bg-emerald-500/10 text-emerald-300`,instructions:`border-sky-500/25 bg-sky-500/10 text-sky-300`,tools:`border-amber-500/25 bg-amber-500/10 text-amber-300`,comms:`border-violet-500/25 bg-violet-500/10 text-violet-300`,knowledge:`border-cyan-500/25 bg-cyan-500/10 text-cyan-300`,context:`border-zinc-500/25 bg-zinc-500/10 text-zinc-300`};function at(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}function ot({entry:e}){let[t,n]=(0,G.useState)(!1),r=e.event,i=rt[r.category]??k;return(0,X.jsx)(`div`,{className:`flex justify-center py-2 my-1`,children:(0,X.jsxs)(`div`,{className:a(`w-full max-w-[85%] md:max-w-[75%] rounded-lg border px-2.5 py-1.5 text-xs shadow-sm`,it[r.category]??it.context),children:[(0,X.jsxs)(`button`,{type:`button`,className:`flex w-full min-w-0 items-center gap-1.5 text-left`,onClick:()=>n(e=>!e),children:[(0,X.jsx)(i,{className:`h-3.5 w-3.5 shrink-0`}),(0,X.jsx)(`span`,{className:`shrink-0 font-medium`,children:r.category}),(0,X.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-foreground/80`,children:r.summary}),(0,X.jsx)(`span`,{className:`shrink-0 text-muted-foreground/60`,children:Y(r.timestamp)}),(0,X.jsx)(v,{className:a(`h-3.5 w-3.5 shrink-0 transition-transform`,t&&`rotate-90`)})]}),t&&(0,X.jsx)(`pre`,{className:`mt-2 max-h-72 overflow-auto rounded-md border border-border/60 bg-background/75 p-2 font-mono text-[11px] leading-relaxed text-muted-foreground whitespace-pre-wrap break-words`,children:at(r.detail)})]})})}function st({blockedLabel:e,onInterrupt:t}){return e?(0,X.jsx)(`div`,{className:`flex justify-start mb-3 animate-in fade-in slide-in-from-bottom-1 duration-150`,children:(0,X.jsxs)(`div`,{className:`flex h-9 items-center gap-2 rounded-2xl rounded-bl-sm bg-card ring-1 ring-red-500/30 px-4`,children:[(0,X.jsx)(O,{className:`w-3.5 h-3.5 text-red-400`}),(0,X.jsxs)(`span`,{className:`text-xs text-red-300`,children:[`blocked: `,e]})]})}):(0,X.jsx)(`div`,{className:`flex justify-start mb-3 animate-in fade-in slide-in-from-bottom-1 duration-150`,children:(0,X.jsxs)(`div`,{className:`flex h-9 items-center gap-2 rounded-2xl rounded-bl-sm bg-card ring-1 ring-foreground/10 px-4`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,X.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full bg-yellow-400 animate-[pulse_1.4s_ease-in-out_infinite]`}),(0,X.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full bg-yellow-400 animate-[pulse_1.4s_ease-in-out_0.2s_infinite]`}),(0,X.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full bg-yellow-400 animate-[pulse_1.4s_ease-in-out_0.4s_infinite]`})]}),(0,X.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`working`}),t&&(0,X.jsxs)(`button`,{onClick:t,title:`Interrupt`,className:`ml-1 flex items-center gap-1 rounded-full px-1.5 py-0.5 text-xs text-muted-foreground hover:text-red-300 hover:bg-red-500/10 transition-colors`,children:[(0,X.jsx)(te,{className:`w-3.5 h-3.5`}),`Stop`]})]})})}var Q=`agent-relay:chat-hide-tools`,$=(()=>{let e=new Set,t=(()=>{try{return window.localStorage.getItem(Q)===`on`}catch{return!1}})(),n=()=>e.forEach(e=>e());return typeof window<`u`&&window.addEventListener(`storage`,e=>{e.key===Q&&(t=e.newValue===`on`,n())}),{subscribe(t){return e.add(t),()=>e.delete(t)},get:()=>t,toggle(){t=!t;try{window.localStorage.setItem(Q,t?`on`:`off`)}catch{}n()}}})();function ct(){return[(0,G.useSyncExternalStore)($.subscribe,$.get,()=>!1),$.toggle]}function lt({steps:e,showReasoning:n,issueRepo:r}){let[i,o]=ct(),s=n?e:e.filter(e=>e.kind!==`reasoning`);if(!s.length)return null;let c=s.filter(e=>e.kind===`tool`).length;return(0,X.jsx)(`div`,{className:`flex justify-start mb-2`,children:(0,X.jsxs)(`div`,{className:`max-w-[85%] md:max-w-[75%] min-w-0 space-y-1.5`,children:[s.map(e=>e.kind===`narration`?(0,X.jsx)(W,{text:e.text,issueRepo:r,className:`text-sm leading-relaxed break-words text-foreground/90 min-w-0`},e.id):e.kind===`reasoning`?(0,X.jsxs)(`div`,{className:`flex items-start gap-1.5 text-xs leading-relaxed text-muted-foreground/80`,children:[(0,X.jsx)(t,{className:`w-3.5 h-3.5 mt-0.5 shrink-0 opacity-70`}),(0,X.jsx)(W,{text:e.text,issueRepo:r,className:`italic break-words min-w-0`})]},e.id):i?null:(0,X.jsxs)(`div`,{className:`flex items-start gap-1.5 text-xs leading-relaxed text-muted-foreground`,children:[(0,X.jsx)(ee,{className:`w-3 h-3 mt-0.5 shrink-0 opacity-70`}),(0,X.jsxs)(`span`,{className:`min-w-0 break-words`,children:[(0,X.jsx)(`span`,{className:`font-medium`,children:e.label||`tool`}),e.text&&e.text.trim()&&e.text.trim()!==(e.label??``).trim()?(0,X.jsxs)(`span`,{className:`opacity-70`,children:[` — `,e.text]}):null]})]},e.id)),c>0&&(0,X.jsxs)(`button`,{onClick:o,className:`flex items-center gap-1 text-[11px] text-muted-foreground/50 hover:text-muted-foreground transition-colors text-left`,children:[(0,X.jsx)(v,{className:a(`w-3 h-3 shrink-0 transition-transform`,!i&&`rotate-90`)}),(0,X.jsx)(`span`,{children:i?`show ${c} tool step${c===1?``:`s`}`:`hide tool steps`})]})]})})}function ut({date:e}){return(0,X.jsxs)(`div`,{className:`flex items-center justify-center gap-3 py-3 my-1`,children:[(0,X.jsx)(`div`,{className:`h-px flex-1 bg-border`}),(0,X.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground`,children:Ke(e)}),(0,X.jsx)(`div`,{className:`h-px flex-1 bg-border`})]})}function dt({timestamp:e}){let t=new Date(e).toLocaleString(void 0,{month:`short`,day:`numeric`,year:`numeric`,hour:`2-digit`,minute:`2-digit`});return(0,X.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-2 my-1`,children:[(0,X.jsx)(`div`,{className:`h-px flex-1 bg-border`}),(0,X.jsxs)(`span`,{className:`text-xs text-muted-foreground/60`,children:[`created `,t]}),(0,X.jsx)(`div`,{className:`h-px flex-1 bg-border`})]})}function ft({history:e}){let t=e.sourceAgentLabel||e.sourcePeerId,n=e.entries.length;return(0,X.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-2 my-1`,children:[(0,X.jsx)(`div`,{className:`h-px flex-1 bg-border`}),(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 rounded-full border border-dashed border-border bg-muted/30 px-2 py-1 text-[11px] text-muted-foreground`,children:[(0,X.jsx)(ie,{className:`h-3 w-3`}),(0,X.jsxs)(`span`,{children:[`forked history from `,t]}),(0,X.jsxs)(`span`,{className:`text-muted-foreground/60`,children:[n,` `,n===1?`entry`:`entries`]})]}),(0,X.jsx)(`div`,{className:`h-px flex-1 bg-border`})]})}function pt({entry:e,sourceLabel:t,issueRepo:n}){let r=e.message,i=B(r),o=e.originalFrom===V;return(0,X.jsx)(`div`,{className:a(`flex mb-3 opacity-80`,o?`justify-end`:`justify-start`),children:(0,X.jsx)(`div`,{className:`max-w-[85%] md:max-w-[75%]`,children:(0,X.jsxs)(`div`,{className:a(`rounded-2xl border border-dashed px-3.5 py-2 text-sm select-text`,o?`border-primary/25 bg-primary/10 text-foreground rounded-br-sm`:`border-border bg-card/70 rounded-bl-sm`),children:[(0,X.jsxs)(`div`,{className:a(`mb-1 text-[10px] uppercase tracking-normal`,o?`text-primary/70`:`text-muted-foreground`),children:[`forked history · `,o?`you`:t||e.originalFrom]}),(0,X.jsx)(W,{text:i,rawBody:r.body,issueRepo:n,className:`leading-relaxed`}),(0,X.jsxs)(`p`,{className:a(`mt-1 flex items-center justify-end gap-1.5 text-xs`,o?`text-primary/60`:`text-muted-foreground`),children:[(0,X.jsxs)(`span`,{className:`opacity-40`,children:[`#`,e.originalMessageId]}),(0,X.jsx)(`span`,{children:Y(e.originalCreatedAt)})]})]})})})}function mt({msg:e,issueRepo:t}){let n=B(e),r=Y(e.occurredAt??e.createdAt);return(0,X.jsx)(`div`,{"data-msg-id":e.id,className:`mb-3`,children:(0,X.jsxs)(`div`,{className:`rounded-xl border border-primary/30 bg-primary/[0.06] px-3.5 py-2.5 shadow-sm`,children:[(0,X.jsxs)(`div`,{className:`mb-1.5 flex items-center gap-1.5 text-[11px] font-semibold uppercase tracking-wide text-primary/80`,children:[(0,X.jsx)(k,{className:`h-3.5 w-3.5`}),(0,X.jsx)(`span`,{children:`Initial prompt`}),(0,X.jsx)(`span`,{className:`ml-auto text-[10px] font-normal normal-case text-muted-foreground/60`,children:r})]}),(0,X.jsx)(W,{text:n,rawBody:e.body,issueRepo:t,className:`text-sm leading-relaxed text-foreground`})]})})}function ht({scrollEl:e,timeline:t}){let[n,r]=(0,G.useState)(!0),[i,o]=(0,G.useState)(null),[s,c]=(0,G.useState)(null),[l,u]=(0,G.useState)(!1),d=(0,G.useMemo)(()=>{for(let e=t.length-1;e>=0;e--){let n=t[e];if(!(!n||n.type!==`message`&&n.type!==`initial-prompt`)&&n.msg.from===`user`)return{id:n.msg.id,body:B(n.msg)}}return null},[t]);if((0,G.useEffect)(()=>{if(!d||!e){r(!0);return}let t=null,n=null,i=()=>{let i=e.querySelector(`[data-msg-id="${d.id}"]`);if(!i){t?.disconnect(),t=null,n=null,r(!1);return}let a=i.getBoundingClientRect(),o=e.getBoundingClientRect();u(a.top<o.top),i!==n&&(t?.disconnect(),n=i,t=new IntersectionObserver(([e])=>{e&&r(e.isIntersecting)},{root:e,threshold:0}),t.observe(i))};return i(),e.addEventListener(`scroll`,i,{passive:!0}),()=>{t?.disconnect(),e.removeEventListener(`scroll`,i)}},[d?.id,e]),n||!d||!d.body.trim())return null;let f=i?.id===d.id?i.value:!1,p=s?.id===d.id?s.value:!1;function m(){!e||!d||e.querySelector(`[data-msg-id="${d.id}"]`)?.scrollIntoView({behavior:`smooth`,block:`center`})}let h=l?`↑`:`↓`;return p?(0,X.jsx)(`div`,{className:`flex shrink-0 bg-card/45 border-b border-border`,children:(0,X.jsxs)(`button`,{type:`button`,className:`w-full flex items-center justify-center gap-1.5 py-1 text-[11px] text-primary/60 hover:text-primary transition-colors`,onClick:()=>c({id:d.id,value:!1}),children:[(0,X.jsx)(`span`,{children:`Your prompt`}),(0,X.jsx)(w,{className:`w-3 h-3`})]})}):(0,X.jsxs)(`section`,{className:`flex shrink-0 flex-col border-b border-border bg-card/45 px-3 py-2`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2 text-[11px] text-muted-foreground mb-0.5`,children:[(0,X.jsx)(`span`,{className:`font-medium text-primary/70`,children:`Your prompt`}),(0,X.jsxs)(`button`,{type:`button`,className:`ml-auto hover:text-foreground transition-colors`,onClick:m,children:[h,` scroll to original`]}),(0,X.jsx)(`button`,{type:`button`,className:`hover:text-foreground transition-colors`,onClick:()=>c({id:d.id,value:!0}),title:`Minimize`,children:(0,X.jsx)(g,{className:`w-3 h-3`})})]}),(0,X.jsx)(`p`,{className:a(`text-sm text-foreground leading-snug cursor-pointer`,!f&&`line-clamp-2`),onClick:()=>o({id:d.id,value:!f}),children:d.body})]})}function gt(){return(0,G.useSyncExternalStore)(e=>j.subscribe(e),()=>j.getPlayingKey(),()=>null)}function _t({msg:e,peer:t}){return(0,X.jsx)(mt,{msg:e,issueRepo:M(e=>e.agentsById[t]?.issueRepo)})}function vt({agent:e,onClick:t}){let n=!!(t&&e);return(0,X.jsx)(`button`,{type:`button`,title:e?e.label||e.name||e.id:void 0,onClick:t,disabled:!n,className:a(`shrink-0 self-end transition-opacity`,n?`cursor-pointer hover:opacity-80`:`cursor-default opacity-60`),children:(0,X.jsx)(U,{agent:e})})}function yt({attachment:e,outbound:t}){let n=e.kind===`image`,r=e.title||e.artifactId,[i,l]=(0,G.useState)(null),[u,d]=(0,G.useState)(null),[f,p]=(0,G.useState)(!1),[m,h]=(0,G.useState)(!1);(0,G.useEffect)(()=>{let t=!1,n=null;async function r(){p(!0),d(null),l(null);try{let r=await s(`/artifacts/${encodeURIComponent(e.artifactId)}/content`);if(t)return;n=URL.createObjectURL(r),l(n)}catch(e){t||d(e.message)}finally{t||p(!1)}}return r(),()=>{t=!0,n&&URL.revokeObjectURL(n)}},[e.artifactId]);function g(){if(!i)return;let e=document.createElement(`a`);e.href=i,e.download=r,document.body.appendChild(e),e.click(),e.remove()}return n?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`button`,{type:`button`,onClick:()=>i&&h(!0),disabled:!i,className:`group/img mt-2 block overflow-hidden rounded-md border border-foreground/10 bg-black/10 text-left disabled:cursor-default relative`,children:i?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`img`,{src:i,alt:r,loading:`lazy`,className:`block max-h-72 max-w-full object-contain`}),(0,X.jsx)(`span`,{className:`absolute inset-0 flex items-center justify-center bg-black/0 group-hover/img:bg-black/30 transition-colors`,children:(0,X.jsx)(T,{className:`w-6 h-6 text-white opacity-0 group-hover/img:opacity-100 transition-opacity drop-shadow-md`})})]}):(0,X.jsxs)(`span`,{className:a(`flex min-h-20 items-center gap-2 px-3 py-2 text-xs`,u?`text-red-400`:`text-muted-foreground`),children:[f?(0,X.jsx)(S,{className:`h-4 w-4 animate-spin`}):(0,X.jsx)(O,{className:`h-4 w-4`}),u||`Loading image`]})}),i&&(0,X.jsx)(fe,{open:m,onOpenChange:h,children:(0,X.jsxs)(de,{className:`max-w-[95vw] max-h-[95vh] w-auto p-0 bg-black/95 border-zinc-800 gap-0 overflow-hidden`,showCloseButton:!1,children:[(0,X.jsx)(pe,{className:`sr-only`,children:r}),(0,X.jsxs)(`div`,{className:`relative flex items-center justify-center min-h-[200px]`,children:[(0,X.jsx)(`img`,{src:i,alt:r,className:`max-w-[93vw] max-h-[90vh] object-contain`}),(0,X.jsxs)(`div`,{className:`absolute top-2 right-2 flex gap-1`,children:[(0,X.jsx)(`button`,{type:`button`,onClick:g,className:`rounded-md bg-black/60 hover:bg-black/80 p-2 text-white transition-colors`,title:`Download`,children:(0,X.jsx)(c,{className:`w-4 h-4`})}),(0,X.jsx)(`button`,{type:`button`,onClick:()=>h(!1),className:`rounded-md bg-black/60 hover:bg-black/80 p-2 text-white transition-colors`,title:`Close`,children:(0,X.jsx)(x,{className:`w-4 h-4`})})]})]})]})})]}):(0,X.jsxs)(`button`,{type:`button`,onClick:g,disabled:!i,className:a(`mt-2 flex w-full items-center gap-2 rounded-md border px-2.5 py-2 text-left text-xs transition-colors disabled:cursor-default disabled:opacity-70`,t?`border-primary-foreground/20 bg-primary-foreground/10 hover:bg-primary-foreground/15`:`border-border bg-background hover:bg-muted`),children:[f?(0,X.jsx)(S,{className:`h-4 w-4 shrink-0 animate-spin`}):u?(0,X.jsx)(O,{className:`h-4 w-4 shrink-0 text-red-400`}):(0,X.jsx)(o,{className:`h-4 w-4 shrink-0`}),(0,X.jsx)(`span`,{className:a(`min-w-0 flex-1 truncate`,u&&`text-red-400`),children:u||r}),(0,X.jsx)(c,{className:`h-3.5 w-3.5 shrink-0`})]})}function bt({open:e,onToggle:t,onReact:n}){return(0,X.jsxs)(`div`,{className:`relative shrink-0`,children:[(0,X.jsx)(`button`,{type:`button`,title:`Add reaction`,onClick:t,className:a(`inline-flex h-5 w-6 items-center justify-center rounded-full border border-border bg-popover text-muted-foreground shadow-sm transition hover:bg-muted hover:text-foreground`,e?`opacity-100`:`opacity-0 pointer-events-none md:group-hover/msg:opacity-100 md:group-hover/msg:pointer-events-auto`),children:(0,X.jsx)(m,{className:`h-3 w-3`})}),e&&(0,X.jsx)(`div`,{className:`absolute bottom-full left-0 z-30 mb-1 flex gap-0.5 rounded-full border border-border bg-popover p-0.5 shadow-md`,children:Ie.map(e=>(0,X.jsx)(`button`,{type:`button`,title:`React ${e}`,onClick:()=>n(e),className:`inline-flex h-6 w-7 items-center justify-center rounded-full text-xs transition-colors hover:bg-muted`,children:e},e))})]})}function xt({msg:e,peer:t}){let[n,r]=(0,G.useState)(!1),o=M(e=>e.agentsById),s=M(e=>e.openAgentDetail),c=e.from===t,l=(c?e.to:e.from)||``,d=o[c?t:l]?.issueRepo??o[t]?.issueRepo,f=!l||l===`broadcast`||l.includes(`:`),p=B(e),m=Y(e.occurredAt??e.createdAt),h=c?u:i,g=o[e.from??``]??null;function _(e){e.stopPropagation(),g&&s(g)}return(0,X.jsx)(`div`,{"data-msg-id":e.id,className:`flex justify-center mb-1.5`,children:(0,X.jsxs)(`div`,{className:`w-full max-w-[94%] rounded-md border border-border/50 bg-muted/15 px-2.5 py-1`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs cursor-pointer select-none`,onClick:()=>r(e=>!e),children:[(0,X.jsx)(v,{className:a(`h-3 w-3 shrink-0 text-muted-foreground/60 transition-transform`,n&&`rotate-90`)}),(0,X.jsx)(`button`,{type:`button`,title:g?g.label||g.name||g.id:void 0,disabled:!g,onClick:_,className:a(`shrink-0 transition-opacity`,g?`cursor-pointer hover:opacity-80`:`cursor-default opacity-60`),children:(0,X.jsx)(U,{agent:g,className:`!w-4 !h-4 !rounded-sm opacity-70`})}),(0,X.jsx)(h,{className:`h-3 w-3 shrink-0 text-muted-foreground/70`}),(0,X.jsxs)(`span`,{className:`shrink-0 text-muted-foreground`,children:[`Message `,c?`to`:`from`]}),f?(0,X.jsx)(`span`,{className:`shrink-0 font-medium text-muted-foreground`,children:le(l,o)}):(0,X.jsx)(Z,{agentId:l,className:`shrink-0 px-0.5 text-foreground/80`,noIcon:!0}),!n&&(0,X.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-muted-foreground/50`,children:p}),(0,X.jsx)(`span`,{className:`ml-auto shrink-0 text-muted-foreground/40`,children:m})]}),n&&(0,X.jsx)(`div`,{className:`mt-1.5 pl-5`,children:(0,X.jsx)(W,{text:p,rawBody:e.body,issueRepo:d,className:`text-sm leading-relaxed text-foreground/90`})})]})})}var St=(0,G.memo)(function({msg:e,peer:t,showAvatar:n=!1,onOpenReferencedPath:r,onPreviewReferencedPath:i,onPreviewReferencedPathEnd:o}){if(!z(e.from)&&!z(e.to))return(0,X.jsx)(xt,{msg:e,peer:t});let s=e.kind===`session`?e.payload?.session:void 0;if(s?.type===`prompt`&&s?.origin===`provider`)return(0,X.jsx)(_t,{msg:e,peer:t});let c=z(e.from),l=M(e=>e.reactToMessage),u=M(e=>e.voiceTtsEnabled),d=gt(),f=M(e=>{let n=e.agentsById[t]?.meta?.cwd;return typeof n==`string`?n:``}),p=M(e=>e.agentsById[t]?.issueRepo),m=M(e=>e.agentsById[t]??null),g=M(e=>e.usersById),_=M(e=>e.users.length>1),v=c?oe(e.from,g):void 0,ee=M(e=>e.openAgentDetail),[y,b]=(0,G.useState)(!1),x=(0,G.useRef)(null),S=(0,G.useRef)(null),C=(0,G.useRef)(!1),w=B(e),ne=Y(e.occurredAt??e.createdAt),re=Fe(e),T=Le(e),E=c?Re(e,t):null,D=E?.icon,O=d===String(e.id),ie=u&&!c&&!J(e)&&w.trim().length>0;function k(t){t.stopPropagation(),O?j.bargeIn():j.speak(e.body,String(e.id))}(0,G.useEffect)(()=>{if(!y)return;function e(e){Pe()||x.current&&!x.current.contains(e.target)&&b(!1)}return document.addEventListener(`mousedown`,e),document.addEventListener(`touchstart`,e),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`touchstart`,e)}},[y]);function A(e){return Ae(f||`/`,e)}function ae(e,t){let n=A(e);r?.(n,t)}function N(e,t,n){let r=A(e);i?.(r,t,n)}function P(t){l(e,t),b(!1)}function F(e){e.button===0&&(S.current={x:e.clientX,y:e.clientY},C.current=!1)}function I(e){let t=S.current;t&&(Math.abs(e.clientX-t.x)>3||Math.abs(e.clientY-t.y)>3)&&(C.current=!0)}function L(t){if(!(J(e)||c)&&!t.target.closest(`a,button,input,textarea,select,[role="button"]`)){if(C.current||Pe()){C.current=!1;return}b(e=>!e)}}let R=n&&!J(e);function ce(){!c&&m&&ee(m)}return(0,X.jsxs)(`div`,{"data-msg-id":e.id,className:a(`group/msg flex mb-3 items-end`,c?`justify-end`:`justify-start`,R&&`gap-1.5`),children:[!c&&R&&(0,X.jsx)(vt,{agent:m,onClick:ce}),(0,X.jsxs)(`div`,{ref:x,className:a(`relative`,R?`max-w-[calc(85%-2rem)] md:max-w-[calc(75%-2rem)]`:`max-w-[85%] md:max-w-[75%]`),children:[ie&&(0,X.jsx)(`button`,{type:`button`,title:O?`Stop playback`:`Play aloud`,onClick:k,className:a(`absolute -top-2 -right-2 z-20 inline-flex h-6 w-6 items-center justify-center rounded-full border bg-popover shadow-sm transition`,O?`border-primary/50 text-primary opacity-100`:`border-border text-muted-foreground opacity-70 hover:bg-muted hover:text-foreground hover:opacity-100 [@media(hover:hover)]:md:opacity-0 [@media(hover:hover)]:md:group-hover/msg:opacity-100`),children:O?(0,X.jsx)(te,{className:`h-3.5 w-3.5 animate-pulse`}):(0,X.jsx)(h,{className:`h-3.5 w-3.5`})}),(0,X.jsxs)(`div`,{className:a(`rounded-2xl px-3.5 py-2 text-sm select-text`,!c&&!J(e)&&`cursor-pointer`,c?`bg-primary text-primary-foreground rounded-br-sm`:`bg-card ring-1 ring-foreground/10 rounded-bl-sm`),onPointerDown:F,onPointerMove:I,onClick:L,children:[c&&_&&(0,X.jsx)(`p`,{className:a(`text-[11px] font-semibold mb-0.5 text-right`,se(e.from)),children:ue(e.from,g)}),e.subject&&(0,X.jsx)(`p`,{className:a(`text-xs font-semibold mb-1`,c?`text-primary-foreground/70`:`text-muted-foreground`),children:e.subject}),(0,X.jsx)(W,{text:w,rawBody:e.body,issueRepo:p,className:`leading-relaxed`,onPrimary:c,onOpenPath:ae,onPreviewPath:N,onPreviewPathEnd:o,resolvePathTitle:(e,t)=>`${A(e)}${t?`:${t}`:``}`}),re.map(t=>(0,X.jsx)(yt,{attachment:t,outbound:c},`${e.id}-${t.artifactId}-${t.role||``}`)),(0,X.jsxs)(`p`,{className:a(`text-xs mt-1 flex items-center gap-1.5`,c?`justify-end text-primary-foreground/60`:`justify-end text-muted-foreground`),children:[(0,X.jsxs)(`span`,{className:`opacity-40`,children:[`#`,e.id]}),(0,X.jsx)(`span`,{children:ne}),E&&D&&(0,X.jsxs)(`span`,{className:a(`inline-flex items-center gap-1`,E.tone===`ok`&&`text-emerald-300`,E.tone===`warn`&&`text-amber-200`,E.tone===`danger`&&`text-red-200`),title:E.title,children:[(0,X.jsx)(D,{className:`h-3 w-3`}),E.label]})]})]}),!J(e)&&T.length>0&&(0,X.jsxs)(`div`,{className:a(`flex flex-wrap items-center gap-0.5 -mt-1 relative z-10`,c?`justify-end pr-2`:`justify-start pl-2`),children:[!c&&(0,X.jsx)(bt,{open:y,onToggle:()=>b(e=>!e),onReact:P}),T.map(e=>(0,X.jsxs)(`button`,{type:`button`,title:e.actors.join(`, `),onClick:()=>P(e.emoji),className:a(`inline-flex h-5 items-center gap-0.5 rounded-full border px-1.5 text-[11px] shadow-sm transition-colors`,e.mine?`border-primary/40 bg-primary/10 text-primary`:`border-border bg-background hover:bg-muted text-foreground`),children:[(0,X.jsx)(`span`,{children:e.emoji}),e.count>1&&(0,X.jsx)(`span`,{children:e.count})]},e.emoji))]}),!J(e)&&!c&&T.length===0&&(0,X.jsx)(`div`,{className:`absolute -bottom-2.5 left-1 z-20`,children:(0,X.jsx)(bt,{open:y,onToggle:()=>b(e=>!e),onReact:P})})]}),c&&R&&(0,X.jsx)(`span`,{className:`shrink-0 self-end opacity-60`,children:(0,X.jsx)(me,{user:v,address:e.from,distinct:_})})]})});export{Te as C,Be as S,De as T,Me as _,dt as a,Ue as b,pt as c,ot as d,qe as f,He as g,ke as h,st as i,mt as l,Ve as m,lt as n,ut as o,ht as p,nt as r,ft as s,St as t,Qe as u,je as v,Ee as w,Ne as x,We as y};
|
|
3
|
+
//# sourceMappingURL=MessageBubble-BTBQr8uG.js.map
|