@norman-else/dsh-claude 0.1.21 → 0.1.22
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/lib/client.d.ts +7 -0
- package/lib/client.js +362 -153
- package/lib/client.js.map +1 -1
- package/lib/index.mjs +30 -2
- package/lib/index.mjs.map +1 -1
- package/package.json +1 -1
package/lib/client.js
CHANGED
|
@@ -577,15 +577,15 @@ window.__ModuleLoader__.load({
|
|
|
577
577
|
const settingsBody = {
|
|
578
578
|
margin: 0,
|
|
579
579
|
color: "var(--dsw-alias-label-secondary)",
|
|
580
|
-
fontSize:
|
|
581
|
-
lineHeight: "
|
|
580
|
+
fontSize: 14,
|
|
581
|
+
lineHeight: "22px"
|
|
582
582
|
};
|
|
583
583
|
const settingsCard = {
|
|
584
584
|
display: "flex",
|
|
585
585
|
flexDirection: "column",
|
|
586
586
|
gap: 14,
|
|
587
587
|
padding: 18,
|
|
588
|
-
border: "1px solid var(--dsw-alias-border-l2)",
|
|
588
|
+
border: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
589
589
|
borderRadius: 14,
|
|
590
590
|
background: "var(--dsw-alias-bg-layer-1)"
|
|
591
591
|
};
|
|
@@ -600,8 +600,8 @@ window.__ModuleLoader__.load({
|
|
|
600
600
|
gridTemplateColumns: "minmax(130px, 0.36fr) minmax(0, 1fr)",
|
|
601
601
|
gap: "10px 18px",
|
|
602
602
|
padding: "14px 0",
|
|
603
|
-
borderTop: "1px solid var(--dsw-alias-border-l2)",
|
|
604
|
-
borderBottom: "1px solid var(--dsw-alias-border-l2)",
|
|
603
|
+
borderTop: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
604
|
+
borderBottom: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
605
605
|
fontSize: 13
|
|
606
606
|
};
|
|
607
607
|
const diagnosticLabel = { color: "var(--dsw-alias-label-tertiary)" };
|
|
@@ -620,13 +620,13 @@ window.__ModuleLoader__.load({
|
|
|
620
620
|
boxSizing: "border-box",
|
|
621
621
|
minHeight: 38,
|
|
622
622
|
padding: "7px 13px",
|
|
623
|
-
border: "1px solid var(--dsw-alias-border-l2)",
|
|
623
|
+
border: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
624
624
|
borderRadius: 10,
|
|
625
625
|
background: "var(--dsw-alias-bg-layer-2)",
|
|
626
626
|
color: "var(--dsw-alias-label-primary)",
|
|
627
627
|
font: "inherit",
|
|
628
|
-
fontSize:
|
|
629
|
-
lineHeight: "
|
|
628
|
+
fontSize: 14,
|
|
629
|
+
lineHeight: "22px"
|
|
630
630
|
};
|
|
631
631
|
const settingSelectTrigger = {
|
|
632
632
|
width: "100%",
|
|
@@ -636,14 +636,14 @@ window.__ModuleLoader__.load({
|
|
|
636
636
|
justifyContent: "space-between",
|
|
637
637
|
gap: 12,
|
|
638
638
|
padding: "7px 11px 7px 13px",
|
|
639
|
-
border: "1px solid var(--dsw-alias-border-l2)",
|
|
639
|
+
border: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
640
640
|
borderRadius: 10,
|
|
641
641
|
background: "var(--dsw-alias-bg-layer-2)",
|
|
642
642
|
color: "var(--dsw-alias-label-primary)",
|
|
643
643
|
boxShadow: "0 1px 2px color-mix(in srgb, var(--dsw-alias-label-primary) 5%, transparent)",
|
|
644
644
|
font: "inherit",
|
|
645
|
-
fontSize:
|
|
646
|
-
lineHeight: "
|
|
645
|
+
fontSize: 14,
|
|
646
|
+
lineHeight: "22px",
|
|
647
647
|
textAlign: "left",
|
|
648
648
|
cursor: "pointer",
|
|
649
649
|
transition: "border-color 120ms ease, box-shadow 120ms ease, background 120ms ease"
|
|
@@ -678,7 +678,7 @@ window.__ModuleLoader__.load({
|
|
|
678
678
|
maxHeight: 240,
|
|
679
679
|
overflowY: "auto",
|
|
680
680
|
padding: 5,
|
|
681
|
-
border: "1px solid var(--dsw-alias-border-l2)",
|
|
681
|
+
border: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
682
682
|
borderRadius: 11,
|
|
683
683
|
background: "var(--dsw-alias-bg-layer-1)",
|
|
684
684
|
boxShadow: "0 12px 32px color-mix(in srgb, var(--dsw-alias-label-primary) 16%, transparent), 0 2px 8px color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent)"
|
|
@@ -695,8 +695,8 @@ window.__ModuleLoader__.load({
|
|
|
695
695
|
background: "transparent",
|
|
696
696
|
color: "var(--dsw-alias-label-primary)",
|
|
697
697
|
font: "inherit",
|
|
698
|
-
fontSize:
|
|
699
|
-
lineHeight: "
|
|
698
|
+
fontSize: 14,
|
|
699
|
+
lineHeight: "22px",
|
|
700
700
|
textAlign: "left",
|
|
701
701
|
cursor: "pointer"
|
|
702
702
|
};
|
|
@@ -728,7 +728,7 @@ window.__ModuleLoader__.load({
|
|
|
728
728
|
flex: "none",
|
|
729
729
|
minHeight: 34,
|
|
730
730
|
padding: "6px 14px",
|
|
731
|
-
border: "1px solid var(--dsw-alias-border-l2)",
|
|
731
|
+
border: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
732
732
|
borderRadius: 9,
|
|
733
733
|
background: "var(--dsw-alias-bg-layer-2)",
|
|
734
734
|
color: "var(--dsw-alias-label-primary)",
|
|
@@ -752,7 +752,7 @@ window.__ModuleLoader__.load({
|
|
|
752
752
|
minWidth: 0,
|
|
753
753
|
margin: 8,
|
|
754
754
|
overflow: "hidden",
|
|
755
|
-
border: "1px solid var(--dsw-alias-border-l2)",
|
|
755
|
+
border: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
756
756
|
borderRadius: 12,
|
|
757
757
|
background: "var(--dsw-alias-bg-layer-1)",
|
|
758
758
|
boxShadow: "0 4px 16px color-mix(in srgb, #000 12%, transparent)"
|
|
@@ -766,7 +766,7 @@ window.__ModuleLoader__.load({
|
|
|
766
766
|
justifyContent: "space-between",
|
|
767
767
|
gap: 10,
|
|
768
768
|
padding: "9px 12px",
|
|
769
|
-
borderBottom: "1px solid var(--dsw-alias-border-l2)"
|
|
769
|
+
borderBottom: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))"
|
|
770
770
|
};
|
|
771
771
|
const tasksHeading = {
|
|
772
772
|
display: "block",
|
|
@@ -830,8 +830,8 @@ window.__ModuleLoader__.load({
|
|
|
830
830
|
alignItems: "center",
|
|
831
831
|
gap: 6,
|
|
832
832
|
color: "var(--dsw-alias-label-secondary)",
|
|
833
|
-
fontSize:
|
|
834
|
-
lineHeight: "
|
|
833
|
+
fontSize: 14,
|
|
834
|
+
lineHeight: "22px",
|
|
835
835
|
fontWeight: 600
|
|
836
836
|
};
|
|
837
837
|
const tasksGroupToggle = {
|
|
@@ -843,8 +843,8 @@ window.__ModuleLoader__.load({
|
|
|
843
843
|
background: "transparent",
|
|
844
844
|
color: "var(--dsw-alias-label-secondary)",
|
|
845
845
|
font: "inherit",
|
|
846
|
-
fontSize:
|
|
847
|
-
lineHeight: "
|
|
846
|
+
fontSize: 14,
|
|
847
|
+
lineHeight: "22px",
|
|
848
848
|
fontWeight: 600,
|
|
849
849
|
cursor: "pointer"
|
|
850
850
|
};
|
|
@@ -868,7 +868,7 @@ window.__ModuleLoader__.load({
|
|
|
868
868
|
const tasksFinishedSection = {
|
|
869
869
|
marginTop: 12,
|
|
870
870
|
paddingTop: 8,
|
|
871
|
-
borderTop: "1px solid var(--dsw-alias-border-l2)"
|
|
871
|
+
borderTop: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))"
|
|
872
872
|
};
|
|
873
873
|
const taskCardList = {
|
|
874
874
|
display: "flex",
|
|
@@ -878,12 +878,12 @@ window.__ModuleLoader__.load({
|
|
|
878
878
|
};
|
|
879
879
|
const taskCard = {
|
|
880
880
|
padding: "11px 12px",
|
|
881
|
-
border: "1px solid var(--dsw-alias-border-l2)",
|
|
881
|
+
border: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
882
882
|
borderRadius: 10,
|
|
883
883
|
background: "var(--dsw-alias-bg-layer-1)",
|
|
884
884
|
boxShadow: "0 1px 3px color-mix(in srgb, #000 7%, transparent)"
|
|
885
885
|
};
|
|
886
|
-
const taskCardRunning = { borderColor: "var(--dsw-alias-border-l3)" };
|
|
886
|
+
const taskCardRunning = { borderColor: "var(--dsw-alias-border-l3, color-mix(in srgb, currentColor 24%, transparent))" };
|
|
887
887
|
const taskCardTop = {
|
|
888
888
|
display: "flex",
|
|
889
889
|
alignItems: "flex-start",
|
|
@@ -994,7 +994,7 @@ window.__ModuleLoader__.load({
|
|
|
994
994
|
};
|
|
995
995
|
const tasksBadgeWrap = {
|
|
996
996
|
display: "flex",
|
|
997
|
-
justifyContent: "flex-
|
|
997
|
+
justifyContent: "flex-start",
|
|
998
998
|
margin: "8px 0 4px"
|
|
999
999
|
};
|
|
1000
1000
|
const tasksBadgeSeat = {
|
|
@@ -1009,15 +1009,15 @@ window.__ModuleLoader__.load({
|
|
|
1009
1009
|
border: "none",
|
|
1010
1010
|
borderRadius: 6,
|
|
1011
1011
|
background: "transparent",
|
|
1012
|
-
color: "var(--dsw-
|
|
1012
|
+
color: "var(--dsw-static-blue-450)",
|
|
1013
1013
|
font: "inherit",
|
|
1014
|
-
fontSize:
|
|
1015
|
-
lineHeight: "
|
|
1014
|
+
fontSize: 14,
|
|
1015
|
+
lineHeight: "22px",
|
|
1016
1016
|
fontVariantNumeric: "tabular-nums",
|
|
1017
1017
|
cursor: "pointer",
|
|
1018
1018
|
transition: "color 120ms ease, opacity 120ms ease"
|
|
1019
1019
|
};
|
|
1020
|
-
const tasksBadgeHovered = {
|
|
1020
|
+
const tasksBadgeHovered = { textDecoration: "underline" };
|
|
1021
1021
|
const tasksBadgeDone = { opacity: .7 };
|
|
1022
1022
|
const tasksBadgeDot = {
|
|
1023
1023
|
width: 8,
|
|
@@ -1028,10 +1028,10 @@ window.__ModuleLoader__.load({
|
|
|
1028
1028
|
};
|
|
1029
1029
|
const tasksBadgeDotError = { background: "var(--dsw-alias-state-error-primary)" };
|
|
1030
1030
|
const tasksBadgeDotDone = { background: "var(--dsw-alias-state-success-primary, var(--dsw-static-green-500))" };
|
|
1031
|
-
const
|
|
1031
|
+
const tasksBadgeLabel = { fontWeight: 500 };
|
|
1032
1032
|
const tasksHoverCard = {
|
|
1033
1033
|
position: "absolute",
|
|
1034
|
-
|
|
1034
|
+
left: 0,
|
|
1035
1035
|
bottom: "calc(100% + 8px)",
|
|
1036
1036
|
zIndex: 40,
|
|
1037
1037
|
minWidth: 240,
|
|
@@ -1041,7 +1041,7 @@ window.__ModuleLoader__.load({
|
|
|
1041
1041
|
flexDirection: "column",
|
|
1042
1042
|
gap: 6,
|
|
1043
1043
|
padding: "10px 12px",
|
|
1044
|
-
border: "1px solid var(--dsw-alias-border-l2)",
|
|
1044
|
+
border: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
1045
1045
|
borderRadius: 12,
|
|
1046
1046
|
background: "var(--dsw-alias-bg-layer-2)",
|
|
1047
1047
|
boxShadow: "0 8px 24px color-mix(in srgb, #000 24%, transparent)",
|
|
@@ -1087,7 +1087,7 @@ window.__ModuleLoader__.load({
|
|
|
1087
1087
|
const tasksHoverHint = {
|
|
1088
1088
|
marginTop: 2,
|
|
1089
1089
|
paddingTop: 6,
|
|
1090
|
-
borderTop: "1px solid var(--dsw-alias-border-l1)",
|
|
1090
|
+
borderTop: "1px solid var(--dsw-alias-border-l1, color-mix(in srgb, currentColor 12%, transparent))",
|
|
1091
1091
|
color: "var(--dsw-alias-label-tertiary)",
|
|
1092
1092
|
fontSize: 11
|
|
1093
1093
|
};
|
|
@@ -1104,7 +1104,7 @@ window.__ModuleLoader__.load({
|
|
|
1104
1104
|
alignItems: "center",
|
|
1105
1105
|
minWidth: 0,
|
|
1106
1106
|
padding: 2,
|
|
1107
|
-
border: "1px solid var(--dsw-alias-border-l1)",
|
|
1107
|
+
border: "1px solid var(--dsw-alias-border-l1, color-mix(in srgb, currentColor 12%, transparent))",
|
|
1108
1108
|
borderRadius: 10,
|
|
1109
1109
|
background: "var(--dsw-alias-interactive-bg-base, var(--dsw-alias-bg-layer-1))",
|
|
1110
1110
|
color: "var(--dsw-alias-label-secondary)"
|
|
@@ -1149,7 +1149,7 @@ window.__ModuleLoader__.load({
|
|
|
1149
1149
|
flexDirection: "column",
|
|
1150
1150
|
gap: 4,
|
|
1151
1151
|
padding: 4,
|
|
1152
|
-
border: "1px solid var(--dsw-alias-border-
|
|
1152
|
+
border: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
1153
1153
|
borderRadius: 10,
|
|
1154
1154
|
background: "var(--dsw-specific-menu)",
|
|
1155
1155
|
boxShadow: "var(--dsw-shadow-lv3)"
|
|
@@ -1161,7 +1161,7 @@ window.__ModuleLoader__.load({
|
|
|
1161
1161
|
alignItems: "center",
|
|
1162
1162
|
gap: 6,
|
|
1163
1163
|
padding: "0 8px",
|
|
1164
|
-
border: "1px solid var(--dsw-alias-border-l2)",
|
|
1164
|
+
border: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
1165
1165
|
borderRadius: 7,
|
|
1166
1166
|
background: "var(--dsw-alias-bg-layer-1)",
|
|
1167
1167
|
color: "var(--dsw-alias-label-tertiary)"
|
|
@@ -1221,7 +1221,7 @@ window.__ModuleLoader__.load({
|
|
|
1221
1221
|
width: 1,
|
|
1222
1222
|
height: 16,
|
|
1223
1223
|
flex: "none",
|
|
1224
|
-
background: "var(--dsw-alias-border-l2)"
|
|
1224
|
+
background: "var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))"
|
|
1225
1225
|
};
|
|
1226
1226
|
const heroWorktreeToggle = {
|
|
1227
1227
|
height: 26,
|
|
@@ -1253,7 +1253,7 @@ window.__ModuleLoader__.load({
|
|
|
1253
1253
|
display: "grid",
|
|
1254
1254
|
placeItems: "center",
|
|
1255
1255
|
flex: "none",
|
|
1256
|
-
border: "1px solid var(--dsw-alias-border-
|
|
1256
|
+
border: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
1257
1257
|
borderRadius: 4,
|
|
1258
1258
|
background: "var(--dsw-alias-bg-layer-2)",
|
|
1259
1259
|
boxShadow: "inset 0 1px 1px rgba(0, 0, 0, 0.08)",
|
|
@@ -1281,7 +1281,7 @@ window.__ModuleLoader__.load({
|
|
|
1281
1281
|
flexDirection: "column",
|
|
1282
1282
|
gap: 12,
|
|
1283
1283
|
padding: 14,
|
|
1284
|
-
border: "1px solid var(--dsw-alias-border-l2)",
|
|
1284
|
+
border: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
1285
1285
|
borderRadius: 12,
|
|
1286
1286
|
background: "var(--dsw-alias-bg-layer-1)",
|
|
1287
1287
|
boxShadow: "var(--dsw-shadow-lv3)"
|
|
@@ -1401,18 +1401,18 @@ window.__ModuleLoader__.load({
|
|
|
1401
1401
|
alignItems: "center",
|
|
1402
1402
|
gap: 9,
|
|
1403
1403
|
padding: "7px 11px",
|
|
1404
|
-
border: "1px solid var(--dsw-alias-border-l2)",
|
|
1404
|
+
border: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
1405
1405
|
borderRadius: 11,
|
|
1406
1406
|
background: "var(--dsw-alias-bg-layer-1)",
|
|
1407
1407
|
color: "var(--dsw-alias-label-primary)",
|
|
1408
1408
|
boxShadow: "0 1px 2px color-mix(in srgb, var(--dsw-alias-label-primary) 4%, transparent)",
|
|
1409
1409
|
font: "inherit",
|
|
1410
|
-
fontSize:
|
|
1411
|
-
lineHeight: "
|
|
1410
|
+
fontSize: 14,
|
|
1411
|
+
lineHeight: "22px",
|
|
1412
1412
|
textAlign: "left"
|
|
1413
1413
|
};
|
|
1414
1414
|
const repositoryBarMerged = {
|
|
1415
|
-
borderColor: "color-mix(in srgb, #a78bfa 30%, var(--dsw-alias-border-l2))",
|
|
1415
|
+
borderColor: "color-mix(in srgb, #a78bfa 30%, var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent)))",
|
|
1416
1416
|
background: "color-mix(in srgb, #a78bfa 5%, var(--dsw-alias-bg-layer-1))"
|
|
1417
1417
|
};
|
|
1418
1418
|
const repositoryPrIcon = {
|
|
@@ -1457,7 +1457,7 @@ window.__ModuleLoader__.load({
|
|
|
1457
1457
|
flexDirection: "column",
|
|
1458
1458
|
gap: 10,
|
|
1459
1459
|
padding: "13px 14px",
|
|
1460
|
-
border: "1px solid var(--dsw-alias-border-l2)",
|
|
1460
|
+
border: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
1461
1461
|
borderRadius: 12,
|
|
1462
1462
|
background: "var(--dsw-alias-bg-layer-1)",
|
|
1463
1463
|
boxShadow: "0 14px 38px color-mix(in srgb, #000 34%, transparent)",
|
|
@@ -1632,7 +1632,7 @@ window.__ModuleLoader__.load({
|
|
|
1632
1632
|
gap: 4,
|
|
1633
1633
|
minHeight: 26,
|
|
1634
1634
|
padding: "3px 8px",
|
|
1635
|
-
border: "1px solid var(--dsw-alias-border-l2)",
|
|
1635
|
+
border: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
1636
1636
|
borderRadius: 7,
|
|
1637
1637
|
background: "var(--dsw-alias-bg-layer-2)",
|
|
1638
1638
|
font: "inherit",
|
|
@@ -1645,6 +1645,23 @@ window.__ModuleLoader__.load({
|
|
|
1645
1645
|
background: "transparent",
|
|
1646
1646
|
color: "var(--dsw-alias-label-tertiary)"
|
|
1647
1647
|
};
|
|
1648
|
+
const repositoryMergeTrigger = {
|
|
1649
|
+
flex: "none",
|
|
1650
|
+
display: "inline-flex",
|
|
1651
|
+
alignItems: "center",
|
|
1652
|
+
gap: 4,
|
|
1653
|
+
minHeight: 26,
|
|
1654
|
+
padding: "3px 8px",
|
|
1655
|
+
border: "1px solid color-mix(in srgb, var(--dsw-alias-state-success-primary) 45%, transparent)",
|
|
1656
|
+
borderRadius: 7,
|
|
1657
|
+
background: "color-mix(in srgb, var(--dsw-alias-state-success-primary) 12%, transparent)",
|
|
1658
|
+
color: "var(--dsw-alias-state-success-primary)",
|
|
1659
|
+
font: "inherit",
|
|
1660
|
+
fontSize: 12,
|
|
1661
|
+
lineHeight: "18px",
|
|
1662
|
+
fontWeight: 650,
|
|
1663
|
+
cursor: "pointer"
|
|
1664
|
+
};
|
|
1648
1665
|
const diffAdd = { color: "var(--dsw-alias-state-success-primary)" };
|
|
1649
1666
|
const diffDelete = { color: "var(--dsw-alias-state-error-primary)" };
|
|
1650
1667
|
const diffCommentButtonClass = "dshClaudeDiffCommentButton";
|
|
@@ -1690,7 +1707,7 @@ window.__ModuleLoader__.load({
|
|
|
1690
1707
|
left: 62,
|
|
1691
1708
|
margin: "4px 8px 8px 62px",
|
|
1692
1709
|
padding: "8px 10px",
|
|
1693
|
-
border: "1px solid var(--dsw-alias-border-l2)",
|
|
1710
|
+
border: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
1694
1711
|
borderRadius: 8,
|
|
1695
1712
|
background: "var(--dsw-alias-bg-layer-1)",
|
|
1696
1713
|
fontFamily: "var(--dsw-font-family, system-ui)",
|
|
@@ -1717,7 +1734,7 @@ window.__ModuleLoader__.load({
|
|
|
1717
1734
|
minHeight: 56,
|
|
1718
1735
|
boxSizing: "border-box",
|
|
1719
1736
|
padding: "6px 8px",
|
|
1720
|
-
border: "1px solid var(--dsw-alias-border-l2)",
|
|
1737
|
+
border: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
1721
1738
|
borderRadius: 6,
|
|
1722
1739
|
background: "var(--dsw-alias-bg-base)",
|
|
1723
1740
|
color: "var(--dsw-alias-label-primary)",
|
|
@@ -1733,7 +1750,7 @@ window.__ModuleLoader__.load({
|
|
|
1733
1750
|
const diffCommentActionButton = {
|
|
1734
1751
|
minHeight: 24,
|
|
1735
1752
|
padding: "2px 10px",
|
|
1736
|
-
border: "1px solid var(--dsw-alias-border-l2)",
|
|
1753
|
+
border: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
1737
1754
|
borderRadius: 6,
|
|
1738
1755
|
background: "transparent",
|
|
1739
1756
|
color: "var(--dsw-alias-label-secondary)",
|
|
@@ -1768,7 +1785,7 @@ window.__ModuleLoader__.load({
|
|
|
1768
1785
|
alignItems: "center",
|
|
1769
1786
|
gap: 8,
|
|
1770
1787
|
padding: "7px 11px",
|
|
1771
|
-
border: "1px solid var(--dsw-alias-border-l2)",
|
|
1788
|
+
border: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
1772
1789
|
borderRadius: 11,
|
|
1773
1790
|
background: "var(--dsw-alias-bg-layer-1)",
|
|
1774
1791
|
boxShadow: "0 1px 2px color-mix(in srgb, var(--dsw-alias-label-primary) 4%, transparent)",
|
|
@@ -1856,7 +1873,7 @@ window.__ModuleLoader__.load({
|
|
|
1856
1873
|
minWidth: 0,
|
|
1857
1874
|
margin: 8,
|
|
1858
1875
|
overflow: "hidden",
|
|
1859
|
-
border: "1px solid var(--dsw-alias-border-l2)",
|
|
1876
|
+
border: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
1860
1877
|
borderRadius: 12,
|
|
1861
1878
|
background: "var(--dsw-alias-bg-layer-1)",
|
|
1862
1879
|
boxShadow: "0 4px 16px color-mix(in srgb, #000 12%, transparent)"
|
|
@@ -1875,7 +1892,7 @@ window.__ModuleLoader__.load({
|
|
|
1875
1892
|
justifyContent: "space-between",
|
|
1876
1893
|
gap: 10,
|
|
1877
1894
|
padding: "9px 12px",
|
|
1878
|
-
borderBottom: "1px solid var(--dsw-alias-border-l2)"
|
|
1895
|
+
borderBottom: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))"
|
|
1879
1896
|
};
|
|
1880
1897
|
const diffHeaderTitle = {
|
|
1881
1898
|
minWidth: 0,
|
|
@@ -1939,7 +1956,7 @@ window.__ModuleLoader__.load({
|
|
|
1939
1956
|
alignItems: "center",
|
|
1940
1957
|
gap: 7,
|
|
1941
1958
|
padding: "6px 12px",
|
|
1942
|
-
borderBottom: "1px solid var(--dsw-alias-border-l2)",
|
|
1959
|
+
borderBottom: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
1943
1960
|
color: "var(--dsw-alias-label-tertiary)",
|
|
1944
1961
|
fontSize: 12
|
|
1945
1962
|
};
|
|
@@ -1949,7 +1966,7 @@ window.__ModuleLoader__.load({
|
|
|
1949
1966
|
overflow: "auto",
|
|
1950
1967
|
background: "var(--dsw-alias-bg-base)"
|
|
1951
1968
|
};
|
|
1952
|
-
const diffFile = { borderBottom: "1px solid var(--dsw-alias-border-l2)" };
|
|
1969
|
+
const diffFile = { borderBottom: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))" };
|
|
1953
1970
|
const diffFileHeader = {
|
|
1954
1971
|
width: "100%",
|
|
1955
1972
|
minHeight: 38,
|
|
@@ -1984,8 +2001,8 @@ window.__ModuleLoader__.load({
|
|
|
1984
2001
|
padding: "4px 0 8px",
|
|
1985
2002
|
background: "var(--dsw-alias-bg-base)",
|
|
1986
2003
|
fontFamily: "var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Consolas, monospace)",
|
|
1987
|
-
fontSize:
|
|
1988
|
-
lineHeight: "
|
|
2004
|
+
fontSize: 14,
|
|
2005
|
+
lineHeight: "22px"
|
|
1989
2006
|
};
|
|
1990
2007
|
const diffLine = {
|
|
1991
2008
|
minHeight: 17,
|
|
@@ -2099,7 +2116,7 @@ window.__ModuleLoader__.load({
|
|
|
2099
2116
|
maxHeight: 300,
|
|
2100
2117
|
overflowX: "hidden",
|
|
2101
2118
|
overflowY: "auto",
|
|
2102
|
-
border: "1px solid var(--dsw-alias-border-l2)",
|
|
2119
|
+
border: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
2103
2120
|
borderRadius: 8
|
|
2104
2121
|
};
|
|
2105
2122
|
const diffModalFile = {
|
|
@@ -2108,7 +2125,7 @@ window.__ModuleLoader__.load({
|
|
|
2108
2125
|
gap: 12,
|
|
2109
2126
|
minWidth: 0,
|
|
2110
2127
|
padding: "10px 14px",
|
|
2111
|
-
borderBottom: "1px solid var(--dsw-alias-border-l2)",
|
|
2128
|
+
borderBottom: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
|
|
2112
2129
|
color: "var(--dsw-alias-label-secondary)",
|
|
2113
2130
|
fontSize: 15,
|
|
2114
2131
|
lineHeight: "22px"
|
|
@@ -2576,8 +2593,8 @@ window.__ModuleLoader__.load({
|
|
|
2576
2593
|
},
|
|
2577
2594
|
"aria-hidden": "true"
|
|
2578
2595
|
}), /* @__PURE__ */ jsx("span", {
|
|
2579
|
-
style:
|
|
2580
|
-
children:
|
|
2596
|
+
style: tasksBadgeLabel,
|
|
2597
|
+
children: label
|
|
2581
2598
|
})]
|
|
2582
2599
|
})]
|
|
2583
2600
|
})
|
|
@@ -3033,8 +3050,8 @@ window.__ModuleLoader__.load({
|
|
|
3033
3050
|
".dsh-claude-transcript-text{color:var(--dsw-alias-label-primary);font-size:15px;line-height:24px;overflow-wrap:anywhere}",
|
|
3034
3051
|
".dsh-claude-tool-group-native{overflow:visible}",
|
|
3035
3052
|
".dsh-claude-tool-group-native>.dsh-claude-flow-row{padding:0}",
|
|
3036
|
-
".dsh-claude-tool-list{max-height:min(420px,calc(100vh - 320px));overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;margin-top:4px;border:1px solid var(--dsw-alias-border-l1);border-radius:10px;scrollbar-gutter:stable}",
|
|
3037
|
-
".dsh-claude-tool-item{border-top:1px solid var(--dsw-alias-border-l1)}",
|
|
3053
|
+
".dsh-claude-tool-list{max-height:min(420px,calc(100vh - 320px));overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;margin-top:4px;border:1px solid var(--dsw-alias-border-l1, color-mix(in srgb, currentColor 12%, transparent));border-radius:10px;scrollbar-gutter:stable}",
|
|
3054
|
+
".dsh-claude-tool-item{border-top:1px solid var(--dsw-alias-border-l1, color-mix(in srgb, currentColor 12%, transparent))}",
|
|
3038
3055
|
".dsh-claude-tool-item:first-child{border-top:0}",
|
|
3039
3056
|
".dsh-claude-tool-summary-row{display:flex;align-items:center;min-height:34px;gap:8px;padding:0 10px;cursor:pointer;list-style:none}",
|
|
3040
3057
|
".dsh-claude-tool-summary-row::-webkit-details-marker{display:none}",
|
|
@@ -3051,7 +3068,7 @@ window.__ModuleLoader__.load({
|
|
|
3051
3068
|
".dsh-claude-tool-path{overflow-wrap:anywhere;color:var(--dsw-alias-label-primary)}",
|
|
3052
3069
|
".dsh-claude-tool-code{max-height:260px;overflow:auto;margin:0;padding:8px 0;border-radius:8px;background:var(--dsw-alias-markdown-code-block);font:var(--dsw-font-markdown-code-block-small)}",
|
|
3053
3070
|
".dsh-claude-tool-code-line{display:grid;grid-template-columns:44px minmax(max-content,1fr);min-height:18px}",
|
|
3054
|
-
".dsh-claude-tool-line-number{padding-right:10px;text-align:right;user-select:none;color:var(--dsw-alias-label-caption);border-right:1px solid var(--dsw-alias-border-l1)}",
|
|
3071
|
+
".dsh-claude-tool-line-number{padding-right:10px;text-align:right;user-select:none;color:var(--dsw-alias-label-caption);border-right:1px solid var(--dsw-alias-border-l1, color-mix(in srgb, currentColor 12%, transparent))}",
|
|
3055
3072
|
".dsh-claude-tool-line-text{padding:0 10px;white-space:pre}",
|
|
3056
3073
|
".dsh-claude-tool-label{width:72px;flex:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;line-height:20px;color:var(--dsw-alias-label-tertiary)}",
|
|
3057
3074
|
".dsh-claude-tool-description{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;line-height:20px;color:var(--dsw-alias-label-primary)}",
|
|
@@ -3069,7 +3086,7 @@ window.__ModuleLoader__.load({
|
|
|
3069
3086
|
".dsh-claude-flow-summary{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-tertiary);font-size:14px;line-height:24px;flex:auto}",
|
|
3070
3087
|
".dsh-claude-flow-summary[data-error]{color:var(--dsw-alias-state-error-primary)}",
|
|
3071
3088
|
".dsh-claude-flow-body{margin:4px 0 4px 22px;color:var(--dsw-alias-label-tertiary);font-size:14px;line-height:24px;white-space:pre-wrap;overflow-wrap:anywhere}",
|
|
3072
|
-
".dsh-claude-flow-detail{max-height:260px;overflow:auto;margin:4px 0 4px 4px;padding:12px 16px;border:1px solid var(--dsw-alias-border-l1);border-radius:12px;background:var(--dsw-alias-markdown-code-block);color:var(--dsw-alias-label-primary);font:var(--dsw-font-markdown-code-block-small);white-space:pre-wrap}",
|
|
3089
|
+
".dsh-claude-flow-detail{max-height:260px;overflow:auto;margin:4px 0 4px 4px;padding:12px 16px;border:1px solid var(--dsw-alias-border-l1, color-mix(in srgb, currentColor 12%, transparent));border-radius:12px;background:var(--dsw-alias-markdown-code-block);color:var(--dsw-alias-label-primary);font:var(--dsw-font-markdown-code-block-small);white-space:pre-wrap}",
|
|
3073
3090
|
".dsh-claude-flow-subcalls{display:flex;flex-direction:column;gap:2px;margin:4px 0 4px 22px;color:var(--dsw-alias-label-tertiary);font-size:13px;line-height:22px}",
|
|
3074
3091
|
".dsh-claude-act-running{animation:dsh-claude-act-pulse 1.2s ease-in-out infinite}",
|
|
3075
3092
|
"@keyframes dsh-claude-act-pulse{0%,100%{opacity:1}50%{opacity:.3}}"
|
|
@@ -3935,6 +3952,84 @@ window.__ModuleLoader__.load({
|
|
|
3935
3952
|
});
|
|
3936
3953
|
}
|
|
3937
3954
|
//#endregion
|
|
3955
|
+
//#region src/client/repository-action-api.ts
|
|
3956
|
+
var RepositoryActionClientError = class extends Error {
|
|
3957
|
+
code;
|
|
3958
|
+
commit;
|
|
3959
|
+
constructor(message, code, commit) {
|
|
3960
|
+
super(message);
|
|
3961
|
+
this.name = "RepositoryActionClientError";
|
|
3962
|
+
if (code !== void 0) this.code = code;
|
|
3963
|
+
if (commit !== void 0) this.commit = commit;
|
|
3964
|
+
}
|
|
3965
|
+
};
|
|
3966
|
+
function record$2(value) {
|
|
3967
|
+
return value !== null && typeof value === "object" && !Array.isArray(value) ? value : void 0;
|
|
3968
|
+
}
|
|
3969
|
+
async function response$1(pending) {
|
|
3970
|
+
const result = await pending;
|
|
3971
|
+
const body = await result.json();
|
|
3972
|
+
if (!result.ok) {
|
|
3973
|
+
const error = record$2(body);
|
|
3974
|
+
throw new RepositoryActionClientError(typeof error?.message === "string" ? error.message : "Repository action failed.", typeof error?.error === "string" ? error.error : void 0, typeof error?.commit === "string" ? error.commit : void 0);
|
|
3975
|
+
}
|
|
3976
|
+
return body;
|
|
3977
|
+
}
|
|
3978
|
+
function preview(value) {
|
|
3979
|
+
const input = record$2(value);
|
|
3980
|
+
if (input === void 0 || typeof input.root !== "string" || typeof input.branch !== "string" || typeof input.head !== "string" || typeof input.fingerprint !== "string" || !Array.isArray(input.files) || typeof input.patch !== "string" || typeof input.truncated !== "boolean" || typeof input.hasStaged !== "boolean" || typeof input.hasUnstaged !== "boolean" || typeof input.hasUntracked !== "boolean" || input.upstream !== void 0 && typeof input.upstream !== "string" || !Array.isArray(input.unpushedCommits) || typeof input.unpushedTruncated !== "boolean") throw new Error("Invalid repository action preview.");
|
|
3981
|
+
for (const file of input.files) {
|
|
3982
|
+
const item = record$2(file);
|
|
3983
|
+
if (item === void 0 || typeof item.path !== "string" || typeof item.staged !== "boolean" || typeof item.unstaged !== "boolean" || typeof item.untracked !== "boolean") throw new Error("Invalid repository action file.");
|
|
3984
|
+
}
|
|
3985
|
+
for (const commit of input.unpushedCommits) {
|
|
3986
|
+
const item = record$2(commit);
|
|
3987
|
+
if (item === void 0 || typeof item.hash !== "string" || typeof item.subject !== "string") throw new Error("Invalid repository action commit.");
|
|
3988
|
+
}
|
|
3989
|
+
return input;
|
|
3990
|
+
}
|
|
3991
|
+
function result(value) {
|
|
3992
|
+
const input = record$2(value);
|
|
3993
|
+
if (input === void 0 || typeof input.commit !== "string" || typeof input.pushed !== "boolean" || input.pullRequestUrl !== void 0 && typeof input.pullRequestUrl !== "string") throw new Error("Invalid repository action result.");
|
|
3994
|
+
return input;
|
|
3995
|
+
}
|
|
3996
|
+
function endpoint(path, sessionId) {
|
|
3997
|
+
return `${CLAUDE_REPOSITORY_ACTION_PATH}${path}?sessionId=${encodeURIComponent(sessionId)}`;
|
|
3998
|
+
}
|
|
3999
|
+
async function loadRepositoryActionPreview(sessionId, signal) {
|
|
4000
|
+
return preview(await response$1(fetch(endpoint("/preview", sessionId), {
|
|
4001
|
+
method: "GET",
|
|
4002
|
+
credentials: "same-origin",
|
|
4003
|
+
headers: { accept: "application/json" },
|
|
4004
|
+
...signal === void 0 ? {} : { signal }
|
|
4005
|
+
})));
|
|
4006
|
+
}
|
|
4007
|
+
async function generateCommitMessage(sessionId, fingerprint, signal) {
|
|
4008
|
+
const value = record$2(await response$1(fetch(endpoint("/message", sessionId), {
|
|
4009
|
+
method: "POST",
|
|
4010
|
+
credentials: "same-origin",
|
|
4011
|
+
headers: {
|
|
4012
|
+
accept: "application/json",
|
|
4013
|
+
"content-type": "application/json"
|
|
4014
|
+
},
|
|
4015
|
+
body: JSON.stringify({ fingerprint }),
|
|
4016
|
+
...signal === void 0 ? {} : { signal }
|
|
4017
|
+
})));
|
|
4018
|
+
if (typeof value?.message !== "string") throw new Error("Invalid generated commit message.");
|
|
4019
|
+
return value.message;
|
|
4020
|
+
}
|
|
4021
|
+
function executeRepositoryAction(sessionId, request) {
|
|
4022
|
+
return response$1(fetch(endpoint("", sessionId), {
|
|
4023
|
+
method: "POST",
|
|
4024
|
+
credentials: "same-origin",
|
|
4025
|
+
headers: {
|
|
4026
|
+
accept: "application/json",
|
|
4027
|
+
"content-type": "application/json"
|
|
4028
|
+
},
|
|
4029
|
+
body: JSON.stringify(request)
|
|
4030
|
+
})).then(result);
|
|
4031
|
+
}
|
|
4032
|
+
//#endregion
|
|
3938
4033
|
//#region src/client/ClaudeRepositoryStatus.tsx
|
|
3939
4034
|
const RATE_LIMIT_TITLE_PREFIX = "Claude rate limit";
|
|
3940
4035
|
const RATE_LIMIT_BLOCKING_TITLE = "Claude rate limit is blocking requests";
|
|
@@ -4153,6 +4248,175 @@ window.__ModuleLoader__.load({
|
|
|
4153
4248
|
})]
|
|
4154
4249
|
});
|
|
4155
4250
|
}
|
|
4251
|
+
const MERGE_METHODS = [
|
|
4252
|
+
"merge",
|
|
4253
|
+
"squash",
|
|
4254
|
+
"rebase"
|
|
4255
|
+
];
|
|
4256
|
+
function MergePullRequestControl({ sessionId, repository, t }) {
|
|
4257
|
+
const [menuOpen, setMenuOpen] = useState(false);
|
|
4258
|
+
const [dialog, setDialog] = useState();
|
|
4259
|
+
const controller = useRef();
|
|
4260
|
+
const pullRequest = repository.pullRequest;
|
|
4261
|
+
useEffect(() => () => controller.current?.abort(), []);
|
|
4262
|
+
useEffect(() => {
|
|
4263
|
+
if (dialog?.merged !== true || dialog.error !== void 0) return;
|
|
4264
|
+
const timer = setTimeout(() => setDialog(void 0), 1200);
|
|
4265
|
+
return () => clearTimeout(timer);
|
|
4266
|
+
}, [dialog?.error, dialog?.merged]);
|
|
4267
|
+
if (pullRequest === void 0 || pullRequest.state !== "open" || pullRequest.draft || repository.detached === true) return null;
|
|
4268
|
+
const openMerge = (method) => {
|
|
4269
|
+
controller.current?.abort();
|
|
4270
|
+
setMenuOpen(false);
|
|
4271
|
+
setDialog({
|
|
4272
|
+
method,
|
|
4273
|
+
loading: true,
|
|
4274
|
+
submitting: false
|
|
4275
|
+
});
|
|
4276
|
+
const aborter = new AbortController();
|
|
4277
|
+
controller.current = aborter;
|
|
4278
|
+
loadRepositoryActionPreview(sessionId, aborter.signal).then((preview) => {
|
|
4279
|
+
setDialog({
|
|
4280
|
+
method,
|
|
4281
|
+
loading: false,
|
|
4282
|
+
submitting: false,
|
|
4283
|
+
fingerprint: preview.fingerprint
|
|
4284
|
+
});
|
|
4285
|
+
}, (error) => {
|
|
4286
|
+
if (!aborter.signal.aborted) setDialog({
|
|
4287
|
+
method,
|
|
4288
|
+
loading: false,
|
|
4289
|
+
submitting: false,
|
|
4290
|
+
error: error instanceof Error ? error.message : t("diffActionFailed")
|
|
4291
|
+
});
|
|
4292
|
+
});
|
|
4293
|
+
};
|
|
4294
|
+
const closeDialog = () => {
|
|
4295
|
+
if (dialog?.submitting === true) return;
|
|
4296
|
+
controller.current?.abort();
|
|
4297
|
+
controller.current = void 0;
|
|
4298
|
+
setDialog(void 0);
|
|
4299
|
+
};
|
|
4300
|
+
const confirmMerge = () => {
|
|
4301
|
+
if (dialog?.fingerprint === void 0 || dialog.submitting) return;
|
|
4302
|
+
const { error: _error, ...pending } = dialog;
|
|
4303
|
+
setDialog({
|
|
4304
|
+
...pending,
|
|
4305
|
+
submitting: true
|
|
4306
|
+
});
|
|
4307
|
+
executeRepositoryAction(sessionId, {
|
|
4308
|
+
action: "merge-pr",
|
|
4309
|
+
fingerprint: dialog.fingerprint,
|
|
4310
|
+
message: "",
|
|
4311
|
+
includeUnstaged: false,
|
|
4312
|
+
mergeMethod: dialog.method
|
|
4313
|
+
}).then(() => {
|
|
4314
|
+
setDialog({
|
|
4315
|
+
...pending,
|
|
4316
|
+
submitting: false,
|
|
4317
|
+
merged: true
|
|
4318
|
+
});
|
|
4319
|
+
}, (error) => {
|
|
4320
|
+
setDialog({
|
|
4321
|
+
...pending,
|
|
4322
|
+
submitting: false,
|
|
4323
|
+
error: error instanceof Error ? error.message : t("diffActionFailed")
|
|
4324
|
+
});
|
|
4325
|
+
});
|
|
4326
|
+
};
|
|
4327
|
+
const items = MERGE_METHODS.map((method) => ({
|
|
4328
|
+
id: method,
|
|
4329
|
+
label: t(`diffMerge_${method}`)
|
|
4330
|
+
}));
|
|
4331
|
+
const merged = dialog?.merged === true;
|
|
4332
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
4333
|
+
/* @__PURE__ */ jsx(Menu, {
|
|
4334
|
+
open: menuOpen,
|
|
4335
|
+
items,
|
|
4336
|
+
onSelect: (id) => openMerge(id),
|
|
4337
|
+
onClose: () => setMenuOpen(false),
|
|
4338
|
+
align: "end",
|
|
4339
|
+
portal: true,
|
|
4340
|
+
anchor: /* @__PURE__ */ jsxs("button", {
|
|
4341
|
+
type: "button",
|
|
4342
|
+
style: repositoryMergeTrigger,
|
|
4343
|
+
"aria-label": t("repositoryMergeMenu"),
|
|
4344
|
+
"aria-haspopup": "menu",
|
|
4345
|
+
"aria-expanded": menuOpen,
|
|
4346
|
+
onClick: () => setMenuOpen((value) => !value),
|
|
4347
|
+
children: [t("diffMergePr"), /* @__PURE__ */ jsx(IconChevronDownOutline14, {})]
|
|
4348
|
+
})
|
|
4349
|
+
}),
|
|
4350
|
+
dialog === void 0 ? null : /* @__PURE__ */ jsx("style", {
|
|
4351
|
+
"data-dsh-claude-repository-modal-styles": true,
|
|
4352
|
+
children: diffModalCss
|
|
4353
|
+
}),
|
|
4354
|
+
/* @__PURE__ */ jsx(Modal, {
|
|
4355
|
+
className: "dshClaudeRepositoryActionModal",
|
|
4356
|
+
contentClassName: "dshClaudeRepositoryActionModalContent",
|
|
4357
|
+
open: dialog !== void 0,
|
|
4358
|
+
onClose: closeDialog,
|
|
4359
|
+
title: t("diffMergePr"),
|
|
4360
|
+
closeLabel: t("diffCancel"),
|
|
4361
|
+
description: t("diffMergeDescription"),
|
|
4362
|
+
footer: /* @__PURE__ */ jsxs("div", {
|
|
4363
|
+
style: diffModalFooter,
|
|
4364
|
+
children: [/* @__PURE__ */ jsx("button", {
|
|
4365
|
+
type: "button",
|
|
4366
|
+
style: {
|
|
4367
|
+
...button,
|
|
4368
|
+
...diffModalButton
|
|
4369
|
+
},
|
|
4370
|
+
disabled: dialog?.submitting === true,
|
|
4371
|
+
onClick: closeDialog,
|
|
4372
|
+
children: merged ? t("diffDone") : t("diffCancel")
|
|
4373
|
+
}), !merged ? /* @__PURE__ */ jsx("button", {
|
|
4374
|
+
type: "button",
|
|
4375
|
+
style: {
|
|
4376
|
+
...primaryButton,
|
|
4377
|
+
...diffModalButton
|
|
4378
|
+
},
|
|
4379
|
+
disabled: dialog?.loading === true || dialog?.submitting === true || dialog?.fingerprint === void 0,
|
|
4380
|
+
onClick: confirmMerge,
|
|
4381
|
+
children: dialog?.submitting === true ? t("diffSubmitting") : t("diffConfirm")
|
|
4382
|
+
}) : null]
|
|
4383
|
+
}),
|
|
4384
|
+
children: dialog === void 0 ? null : /* @__PURE__ */ jsxs("div", {
|
|
4385
|
+
style: diffModalBody,
|
|
4386
|
+
children: [
|
|
4387
|
+
/* @__PURE__ */ jsxs("div", {
|
|
4388
|
+
style: diffModalMeta,
|
|
4389
|
+
children: [/* @__PURE__ */ jsxs("strong", {
|
|
4390
|
+
style: diffModalMetaText,
|
|
4391
|
+
title: pullRequest.title,
|
|
4392
|
+
children: [
|
|
4393
|
+
t("repositoryPr", { number: pullRequest.number }),
|
|
4394
|
+
" → ",
|
|
4395
|
+
pullRequest.baseBranch ?? t("diffPrBaseDefault")
|
|
4396
|
+
]
|
|
4397
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
4398
|
+
style: diffModalFileState,
|
|
4399
|
+
children: t(`diffMerge_${dialog.method}`)
|
|
4400
|
+
})]
|
|
4401
|
+
}),
|
|
4402
|
+
/* @__PURE__ */ jsx("p", {
|
|
4403
|
+
style: diffModalStatus,
|
|
4404
|
+
children: pullRequest.title
|
|
4405
|
+
}),
|
|
4406
|
+
merged ? /* @__PURE__ */ jsx("p", {
|
|
4407
|
+
style: diffModalSuccess,
|
|
4408
|
+
children: t("diffMergeCompleted", { number: pullRequest.number })
|
|
4409
|
+
}) : null,
|
|
4410
|
+
dialog.error === void 0 ? null : /* @__PURE__ */ jsx("p", {
|
|
4411
|
+
role: "alert",
|
|
4412
|
+
style: diffModalError,
|
|
4413
|
+
children: dialog.error
|
|
4414
|
+
})
|
|
4415
|
+
]
|
|
4416
|
+
})
|
|
4417
|
+
})
|
|
4418
|
+
] });
|
|
4419
|
+
}
|
|
4156
4420
|
function ClaudeRepositoryStatus({ sessionId, useSessions, useClaudeProjection, t, openDiff }) {
|
|
4157
4421
|
const blank = useSessions((value) => value.byId[sessionId]?.blank === true);
|
|
4158
4422
|
const projection = useClaudeProjection((value) => value);
|
|
@@ -4256,13 +4520,21 @@ window.__ModuleLoader__.load({
|
|
|
4256
4520
|
children: ["· ", t("repositoryMergedAgo", { age: mergedAge })]
|
|
4257
4521
|
})
|
|
4258
4522
|
]
|
|
4259
|
-
}) : /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
4260
|
-
|
|
4261
|
-
|
|
4262
|
-
|
|
4263
|
-
|
|
4264
|
-
|
|
4265
|
-
|
|
4523
|
+
}) : /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
4524
|
+
/* @__PURE__ */ jsx(StatusItem, {
|
|
4525
|
+
label: t(`repositoryChecks_${pullRequest.checks}`),
|
|
4526
|
+
tone: pullRequest.checks === "passing" ? "success" : pullRequest.checks === "failing" ? "error" : pullRequest.checks === "pending" ? "warning" : "neutral"
|
|
4527
|
+
}),
|
|
4528
|
+
/* @__PURE__ */ jsx(StatusItem, {
|
|
4529
|
+
label: t(`repositoryReview_${pullRequest.review}`),
|
|
4530
|
+
tone: pullRequest.review === "approved" ? "success" : pullRequest.review === "changes-requested" ? "error" : "neutral"
|
|
4531
|
+
}),
|
|
4532
|
+
/* @__PURE__ */ jsx(MergePullRequestControl, {
|
|
4533
|
+
sessionId,
|
|
4534
|
+
repository,
|
|
4535
|
+
t
|
|
4536
|
+
})
|
|
4537
|
+
] })
|
|
4266
4538
|
]
|
|
4267
4539
|
})
|
|
4268
4540
|
]
|
|
@@ -4271,7 +4543,7 @@ window.__ModuleLoader__.load({
|
|
|
4271
4543
|
}
|
|
4272
4544
|
//#endregion
|
|
4273
4545
|
//#region src/client/review-comment-api.ts
|
|
4274
|
-
function record$
|
|
4546
|
+
function record$1(value) {
|
|
4275
4547
|
return value !== null && typeof value === "object" && !Array.isArray(value) ? value : void 0;
|
|
4276
4548
|
}
|
|
4277
4549
|
async function post(path, sessionId, body) {
|
|
@@ -4286,13 +4558,13 @@ window.__ModuleLoader__.load({
|
|
|
4286
4558
|
});
|
|
4287
4559
|
const value = await response.json();
|
|
4288
4560
|
if (!response.ok) {
|
|
4289
|
-
const error = record$
|
|
4561
|
+
const error = record$1(value);
|
|
4290
4562
|
throw new Error(typeof error?.message === "string" ? error.message : "Review comment request failed.");
|
|
4291
4563
|
}
|
|
4292
4564
|
return value;
|
|
4293
4565
|
}
|
|
4294
4566
|
async function addReviewComment(sessionId, comment) {
|
|
4295
|
-
const created = record$
|
|
4567
|
+
const created = record$1(record$1(await post("", sessionId, comment))?.comment);
|
|
4296
4568
|
if (created === void 0 || typeof created.id !== "string") throw new Error("Invalid review comment response.");
|
|
4297
4569
|
return created;
|
|
4298
4570
|
}
|
|
@@ -4446,84 +4718,6 @@ window.__ModuleLoader__.load({
|
|
|
4446
4718
|
});
|
|
4447
4719
|
}
|
|
4448
4720
|
//#endregion
|
|
4449
|
-
//#region src/client/repository-action-api.ts
|
|
4450
|
-
var RepositoryActionClientError = class extends Error {
|
|
4451
|
-
code;
|
|
4452
|
-
commit;
|
|
4453
|
-
constructor(message, code, commit) {
|
|
4454
|
-
super(message);
|
|
4455
|
-
this.name = "RepositoryActionClientError";
|
|
4456
|
-
if (code !== void 0) this.code = code;
|
|
4457
|
-
if (commit !== void 0) this.commit = commit;
|
|
4458
|
-
}
|
|
4459
|
-
};
|
|
4460
|
-
function record$1(value) {
|
|
4461
|
-
return value !== null && typeof value === "object" && !Array.isArray(value) ? value : void 0;
|
|
4462
|
-
}
|
|
4463
|
-
async function response$1(pending) {
|
|
4464
|
-
const result = await pending;
|
|
4465
|
-
const body = await result.json();
|
|
4466
|
-
if (!result.ok) {
|
|
4467
|
-
const error = record$1(body);
|
|
4468
|
-
throw new RepositoryActionClientError(typeof error?.message === "string" ? error.message : "Repository action failed.", typeof error?.error === "string" ? error.error : void 0, typeof error?.commit === "string" ? error.commit : void 0);
|
|
4469
|
-
}
|
|
4470
|
-
return body;
|
|
4471
|
-
}
|
|
4472
|
-
function preview(value) {
|
|
4473
|
-
const input = record$1(value);
|
|
4474
|
-
if (input === void 0 || typeof input.root !== "string" || typeof input.branch !== "string" || typeof input.head !== "string" || typeof input.fingerprint !== "string" || !Array.isArray(input.files) || typeof input.patch !== "string" || typeof input.truncated !== "boolean" || typeof input.hasStaged !== "boolean" || typeof input.hasUnstaged !== "boolean" || typeof input.hasUntracked !== "boolean" || input.upstream !== void 0 && typeof input.upstream !== "string" || !Array.isArray(input.unpushedCommits) || typeof input.unpushedTruncated !== "boolean") throw new Error("Invalid repository action preview.");
|
|
4475
|
-
for (const file of input.files) {
|
|
4476
|
-
const item = record$1(file);
|
|
4477
|
-
if (item === void 0 || typeof item.path !== "string" || typeof item.staged !== "boolean" || typeof item.unstaged !== "boolean" || typeof item.untracked !== "boolean") throw new Error("Invalid repository action file.");
|
|
4478
|
-
}
|
|
4479
|
-
for (const commit of input.unpushedCommits) {
|
|
4480
|
-
const item = record$1(commit);
|
|
4481
|
-
if (item === void 0 || typeof item.hash !== "string" || typeof item.subject !== "string") throw new Error("Invalid repository action commit.");
|
|
4482
|
-
}
|
|
4483
|
-
return input;
|
|
4484
|
-
}
|
|
4485
|
-
function result(value) {
|
|
4486
|
-
const input = record$1(value);
|
|
4487
|
-
if (input === void 0 || typeof input.commit !== "string" || typeof input.pushed !== "boolean" || input.pullRequestUrl !== void 0 && typeof input.pullRequestUrl !== "string") throw new Error("Invalid repository action result.");
|
|
4488
|
-
return input;
|
|
4489
|
-
}
|
|
4490
|
-
function endpoint(path, sessionId) {
|
|
4491
|
-
return `${CLAUDE_REPOSITORY_ACTION_PATH}${path}?sessionId=${encodeURIComponent(sessionId)}`;
|
|
4492
|
-
}
|
|
4493
|
-
async function loadRepositoryActionPreview(sessionId, signal) {
|
|
4494
|
-
return preview(await response$1(fetch(endpoint("/preview", sessionId), {
|
|
4495
|
-
method: "GET",
|
|
4496
|
-
credentials: "same-origin",
|
|
4497
|
-
headers: { accept: "application/json" },
|
|
4498
|
-
...signal === void 0 ? {} : { signal }
|
|
4499
|
-
})));
|
|
4500
|
-
}
|
|
4501
|
-
async function generateCommitMessage(sessionId, fingerprint, signal) {
|
|
4502
|
-
const value = record$1(await response$1(fetch(endpoint("/message", sessionId), {
|
|
4503
|
-
method: "POST",
|
|
4504
|
-
credentials: "same-origin",
|
|
4505
|
-
headers: {
|
|
4506
|
-
accept: "application/json",
|
|
4507
|
-
"content-type": "application/json"
|
|
4508
|
-
},
|
|
4509
|
-
body: JSON.stringify({ fingerprint }),
|
|
4510
|
-
...signal === void 0 ? {} : { signal }
|
|
4511
|
-
})));
|
|
4512
|
-
if (typeof value?.message !== "string") throw new Error("Invalid generated commit message.");
|
|
4513
|
-
return value.message;
|
|
4514
|
-
}
|
|
4515
|
-
function executeRepositoryAction(sessionId, request) {
|
|
4516
|
-
return response$1(fetch(endpoint("", sessionId), {
|
|
4517
|
-
method: "POST",
|
|
4518
|
-
credentials: "same-origin",
|
|
4519
|
-
headers: {
|
|
4520
|
-
accept: "application/json",
|
|
4521
|
-
"content-type": "application/json"
|
|
4522
|
-
},
|
|
4523
|
-
body: JSON.stringify(request)
|
|
4524
|
-
})).then(result);
|
|
4525
|
-
}
|
|
4526
|
-
//#endregion
|
|
4527
4721
|
//#region src/client/ClaudeDiffPanel.tsx
|
|
4528
4722
|
function pathFromHeader(line) {
|
|
4529
4723
|
return /^diff --git a\/(.+) b\/(.+)$/u.exec(line)?.[2];
|
|
@@ -4710,7 +4904,7 @@ window.__ModuleLoader__.load({
|
|
|
4710
4904
|
});
|
|
4711
4905
|
}
|
|
4712
4906
|
function actionLabel(action, t) {
|
|
4713
|
-
return (action === "commit" ? t("diffCommit") : action === "commit-push" ? t("diffCommitPush") : action === "push" ? t("diffPush") : t("diffCreatePr")).replace(/[….]+$/u, "");
|
|
4907
|
+
return (action === "commit" ? t("diffCommit") : action === "commit-push" ? t("diffCommitPush") : action === "push" ? t("diffPush") : action === "merge-pr" ? t("diffMergePr") : t("diffCreatePr")).replace(/[….]+$/u, "");
|
|
4714
4908
|
}
|
|
4715
4909
|
function repositoryActionAvailability(repository) {
|
|
4716
4910
|
const ready = repository?.status === "ready" && repository.detached !== true;
|
|
@@ -4722,7 +4916,8 @@ window.__ModuleLoader__.load({
|
|
|
4722
4916
|
"commit": committable,
|
|
4723
4917
|
"commit-push": committable && hasRemote,
|
|
4724
4918
|
"push": pushable,
|
|
4725
|
-
"create-pr": (committable || pushable) && hasRemote && !hasOpenPullRequest
|
|
4919
|
+
"create-pr": (committable || pushable) && hasRemote && !hasOpenPullRequest,
|
|
4920
|
+
"merge-pr": ready && hasOpenPullRequest && repository?.pullRequest?.draft !== true
|
|
4726
4921
|
};
|
|
4727
4922
|
}
|
|
4728
4923
|
function RestorePanelIcon() {
|
|
@@ -6429,6 +6624,13 @@ window.__ModuleLoader__.load({
|
|
|
6429
6624
|
diffCommitCompleted: "已创建 commit {commit}",
|
|
6430
6625
|
diffCommitPreserved: "本地 commit {commit} 已保留。",
|
|
6431
6626
|
diffOpenPr: "打开 Pull Request",
|
|
6627
|
+
diffMergePr: "Merge",
|
|
6628
|
+
repositoryMergeMenu: "打开 PR 合并选项",
|
|
6629
|
+
diffMerge_merge: "合并提交 (merge)",
|
|
6630
|
+
diffMerge_squash: "Squash 合并",
|
|
6631
|
+
diffMerge_rebase: "Rebase 合并",
|
|
6632
|
+
diffMergeDescription: "使用所选方式合并当前分支的 Pull Request。",
|
|
6633
|
+
diffMergeCompleted: "已合并 PR #{number}",
|
|
6432
6634
|
reviewCommentAdd: "添加行评论",
|
|
6433
6635
|
reviewCommentPlaceholder: "请求更改",
|
|
6434
6636
|
reviewCommentSubmit: "注释",
|
|
@@ -6631,6 +6833,13 @@ window.__ModuleLoader__.load({
|
|
|
6631
6833
|
diffCommitCompleted: "Created commit {commit}",
|
|
6632
6834
|
diffCommitPreserved: "Local commit {commit} was preserved.",
|
|
6633
6835
|
diffOpenPr: "Open pull request",
|
|
6836
|
+
diffMergePr: "Merge",
|
|
6837
|
+
repositoryMergeMenu: "Open merge options",
|
|
6838
|
+
diffMerge_merge: "Create a merge commit",
|
|
6839
|
+
diffMerge_squash: "Squash and merge",
|
|
6840
|
+
diffMerge_rebase: "Rebase and merge",
|
|
6841
|
+
diffMergeDescription: "Merge the pull request for this branch with the selected method.",
|
|
6842
|
+
diffMergeCompleted: "Merged PR #{number}",
|
|
6634
6843
|
reviewCommentAdd: "Add line comment",
|
|
6635
6844
|
reviewCommentPlaceholder: "Request changes",
|
|
6636
6845
|
reviewCommentSubmit: "Comment",
|