dsh-git-worktree 0.9.2 → 0.10.0
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/CHANGELOG.md +418 -386
- package/LICENSE +21 -21
- package/NOTICE +16 -14
- package/README.en.md +169 -169
- package/README.md +169 -169
- package/cordis.patch.yml +11 -11
- package/docs/i18n.md +63 -63
- package/lib/adapters/initial-commit.js +3 -3
- package/lib/adapters/project-skill-provider.js +14 -4
- package/lib/adapters/project-skill-provider.js.map +1 -1
- package/lib/client/actions.d.ts +19 -3
- package/lib/client/actions.js +23 -3
- package/lib/client/actions.js.map +1 -1
- package/lib/client/console-remote/adapter.js +1 -1
- package/lib/client/console-remote/adapter.js.map +1 -1
- package/lib/client/console-remote/index.d.ts +10 -3
- package/lib/client/console-remote/index.js +56 -13
- package/lib/client/console-remote/index.js.map +1 -1
- package/lib/client/index.js +1 -0
- package/lib/client/index.js.map +1 -1
- package/lib/client/pre-session/controller.d.ts +1 -1
- package/lib/client/pre-session/controller.js +33 -18
- package/lib/client/pre-session/controller.js.map +1 -1
- package/lib/client/review-console/recovery-continuation.d.ts +1 -1
- package/lib/client/review-console/recovery-continuation.js +9 -4
- package/lib/client/review-console/recovery-continuation.js.map +1 -1
- package/lib/client/review-console/review-console.styles.js +190 -190
- package/lib/client/styles.js +146 -140
- package/lib/client/styles.js.map +1 -1
- package/lib/client/target-console/target-console.styles.js +155 -155
- package/lib/client/workspace-sidebar/index.d.ts +11 -2
- package/lib/client/workspace-sidebar/index.js +89 -9
- package/lib/client/workspace-sidebar/index.js.map +1 -1
- package/lib/client.js +10501 -1345
- package/lib/console-contract.d.ts +2 -0
- package/lib/console-contract.js.map +1 -1
- package/lib/console-host/service.js +4 -2
- package/lib/console-host/service.js.map +1 -1
- package/lib/console-remote/descriptors.js +10 -3
- package/lib/console-remote/descriptors.js.map +1 -1
- package/lib/console-remote/schemas.js +1 -0
- package/lib/console-remote/schemas.js.map +1 -1
- package/lib/host-compat.d.ts +4 -0
- package/lib/host-compat.js +25 -0
- package/lib/host-compat.js.map +1 -0
- package/lib/i18n/client-messages.d.ts +4 -0
- package/lib/i18n/client-messages.js +4 -0
- package/lib/i18n/client-messages.js.map +1 -1
- package/lib/index.d.ts +4 -1
- package/lib/index.js +9 -2
- package/lib/index.js.map +1 -1
- package/lib/workspace-provider-lifecycle.d.ts +16 -1
- package/lib/workspace-provider-lifecycle.js +69 -5
- package/lib/workspace-provider-lifecycle.js.map +1 -1
- package/package.json +153 -149
- package/scripts/check-publish.mjs +239 -238
- package/scripts/check-workspace-sidebar-version.mjs +18 -14
- package/scripts/clean-lib.mjs +7 -7
- package/scripts/dev-dsh-lib.mjs +547 -509
- package/scripts/dev-dsh.mjs +98 -95
- package/scripts/dsh-source-runner.mjs +20 -14
- package/scripts/workspace-sidebar-upstream-alpha.mjs +102 -0
- package/scripts/workspace-sidebar-upstream-next.mjs +134 -0
- package/scripts/workspace-sidebar-upstream.d.mts +8 -8
- package/scripts/workspace-sidebar-upstream.mjs +182 -162
|
@@ -1,157 +1,157 @@
|
|
|
1
|
-
export const TARGET_CONSOLE_STYLES = String.raw `
|
|
2
|
-
.dsh-wtc-target-chip {
|
|
3
|
-
--wtc-state: #728096;
|
|
4
|
-
display: inline-flex;
|
|
5
|
-
align-items: center;
|
|
6
|
-
gap: 6px;
|
|
7
|
-
min-height: 24px;
|
|
8
|
-
padding: 2px 9px;
|
|
9
|
-
border: 1px solid color-mix(in srgb, var(--wtc-state) 35%, transparent);
|
|
10
|
-
border-radius: 999px;
|
|
11
|
-
background: color-mix(in srgb, var(--wtc-state) 9%, transparent);
|
|
12
|
-
color: inherit;
|
|
13
|
-
font-size: 12px;
|
|
14
|
-
font-weight: 650;
|
|
15
|
-
line-height: 1;
|
|
16
|
-
white-space: nowrap;
|
|
17
|
-
cursor: pointer;
|
|
18
|
-
}
|
|
19
|
-
.dsh-wtc-target-chip:hover { background: color-mix(in srgb, var(--wtc-state) 15%, transparent); }
|
|
20
|
-
.dsh-wtc-target-chip:focus-visible { outline: 2px solid #5b8fe8; outline-offset: 2px; }
|
|
21
|
-
.dsh-wtc-target-chevron {
|
|
22
|
-
width: 6px;
|
|
23
|
-
height: 6px;
|
|
24
|
-
margin: -3px 1px 0 2px;
|
|
25
|
-
flex: 0 0 auto;
|
|
26
|
-
border-right: 1.5px solid currentColor;
|
|
27
|
-
border-bottom: 1.5px solid currentColor;
|
|
28
|
-
opacity: .58;
|
|
29
|
-
transform: rotate(45deg);
|
|
30
|
-
}
|
|
31
|
-
.dsh-wtc-menu-summary { display: grid; gap: 3px; min-width: 250px; text-align: left; white-space: normal; }
|
|
32
|
-
.dsh-wtc-menu-summary strong { font-size: 12px; color: inherit; }
|
|
33
|
-
.dsh-wtc-menu-summary span { color: color-mix(in srgb, currentColor 64%, transparent); font-size: 11px; line-height: 1.35; }
|
|
34
|
-
.dsh-wtc-menu-summary .dsh-wtc-menu-error { color: #c44747; }
|
|
35
|
-
.dsh-wtc-target-dot, .dsh-wtc-state-dot {
|
|
36
|
-
width: 7px;
|
|
37
|
-
height: 7px;
|
|
38
|
-
flex: 0 0 auto;
|
|
39
|
-
border-radius: 999px;
|
|
40
|
-
background: var(--wtc-state);
|
|
41
|
-
box-shadow: 0 0 0 3px color-mix(in srgb, var(--wtc-state) 15%, transparent);
|
|
42
|
-
}
|
|
43
|
-
.dsh-wtc-target-chip[data-target-state="creating"] { --wtc-state: #c47a1c; }
|
|
44
|
-
.dsh-wtc-target-chip[data-target-state="working"] { --wtc-state: #2676dc; }
|
|
45
|
-
.dsh-wtc-target-chip[data-target-state="ready_for_review"] { --wtc-state: #25885d; }
|
|
46
|
-
.dsh-wtc-target-chip[data-target-state="retained"] { --wtc-state: #6b5bd2; }
|
|
47
|
-
.dsh-wtc-target-chip[data-target-state="cleanup_pending"] { --wtc-state: #c47a1c; }
|
|
48
|
-
.dsh-wtc-target-chip[data-target-state="recovery_required"],
|
|
49
|
-
.dsh-wtc-target-chip[data-target-state="error"] { --wtc-state: #c94747; }
|
|
50
|
-
.dsh-wtc-target-chip[data-target-state="delivered"] { opacity: .66; }
|
|
51
|
-
.dsh-wtc-target-expiry { color: color-mix(in srgb, currentColor 62%, transparent); font-weight: 520; }
|
|
52
|
-
|
|
53
|
-
.dsh-wtc-console {
|
|
54
|
-
--wtc-ink: color-mix(in srgb, currentColor 94%, transparent);
|
|
55
|
-
--wtc-muted: color-mix(in srgb, currentColor 58%, transparent);
|
|
56
|
-
--wtc-line: color-mix(in srgb, currentColor 14%, transparent);
|
|
57
|
-
--wtc-panel: color-mix(in srgb, currentColor 4%, transparent);
|
|
58
|
-
--wtc-blue: #2f6fd0;
|
|
59
|
-
--wtc-red: #c44747;
|
|
60
|
-
position: relative;
|
|
61
|
-
display: grid;
|
|
62
|
-
gap: 14px;
|
|
63
|
-
min-width: 0;
|
|
64
|
-
width: 100%;
|
|
65
|
-
padding: 18px clamp(12px, 3vw, 26px) 28px;
|
|
66
|
-
color: var(--wtc-ink);
|
|
67
|
-
box-sizing: border-box;
|
|
68
|
-
}
|
|
69
|
-
.dsh-wtc-console h2, .dsh-wtc-console h3 { margin: 0; letter-spacing: -.025em; }
|
|
70
|
-
.dsh-wtc-console h2 { font-size: clamp(20px, 3vw, 28px); font-weight: 720; }
|
|
71
|
-
.dsh-wtc-console h3 { font-size: 15px; font-weight: 680; }
|
|
72
|
-
.dsh-wtc-console-head, .dsh-wtc-section-head, .dsh-wtc-current,
|
|
73
|
-
.dsh-wtc-row, .dsh-wtc-row-title, .dsh-wtc-row-actions, .dsh-wtc-current-actions {
|
|
74
|
-
display: flex;
|
|
75
|
-
align-items: center;
|
|
76
|
-
}
|
|
77
|
-
.dsh-wtc-console-head, .dsh-wtc-section-head, .dsh-wtc-current, .dsh-wtc-row { justify-content: space-between; }
|
|
78
|
-
.dsh-wtc-console-head { gap: 16px; }
|
|
79
|
-
.dsh-wtc-kicker, .dsh-wtc-label {
|
|
80
|
-
display: block;
|
|
81
|
-
color: var(--wtc-muted);
|
|
82
|
-
font-size: 10px;
|
|
83
|
-
font-weight: 720;
|
|
84
|
-
letter-spacing: .1em;
|
|
85
|
-
text-transform: uppercase;
|
|
86
|
-
}
|
|
87
|
-
.dsh-wtc-kicker { margin-bottom: 3px; }
|
|
88
|
-
.dsh-wtc-current, .dsh-wtc-list-section {
|
|
89
|
-
min-width: 0;
|
|
90
|
-
border: 1px solid var(--wtc-line);
|
|
91
|
-
border-radius: 14px;
|
|
92
|
-
background: linear-gradient(145deg, color-mix(in srgb, currentColor 3%, transparent), transparent 52%);
|
|
93
|
-
}
|
|
94
|
-
.dsh-wtc-current { gap: 16px; padding: 14px 16px; }
|
|
95
|
-
.dsh-wtc-current > div:first-child { min-width: 0; display: grid; gap: 3px; }
|
|
96
|
-
.dsh-wtc-current strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
97
|
-
.dsh-wtc-current-actions, .dsh-wtc-row-actions { gap: 7px; flex-wrap: wrap; justify-content: flex-end; }
|
|
98
|
-
.dsh-wtc-list-section { overflow: hidden; }
|
|
99
|
-
.dsh-wtc-section-head { padding: 12px 14px; border-bottom: 1px solid var(--wtc-line); }
|
|
100
|
-
.dsh-wtc-count { min-width: 26px; padding: 3px 7px; border-radius: 999px; background: var(--wtc-panel); color: var(--wtc-muted); text-align: center; font-size: 11px; }
|
|
101
|
-
.dsh-wtc-list { list-style: none; margin: 0; padding: 0; }
|
|
102
|
-
.dsh-wtc-row { position: relative; gap: 14px; min-width: 0; padding: 12px 14px; border-bottom: 1px solid var(--wtc-line); }
|
|
103
|
-
.dsh-wtc-row:last-child { border-bottom: 0; }
|
|
104
|
-
.dsh-wtc-row[data-current-target="true"] { background: color-mix(in srgb, var(--wtc-blue) 6%, transparent); }
|
|
105
|
-
.dsh-wtc-row-main { min-width: 0; display: grid; gap: 6px; }
|
|
106
|
-
.dsh-wtc-row-title { min-width: 0; gap: 10px; }
|
|
107
|
-
.dsh-wtc-row-id { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 600 12px ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
|
|
108
|
-
.dsh-wtc-relation { flex: 0 0 auto; padding: 2px 6px; border-radius: 999px; background: var(--wtc-panel); color: var(--wtc-muted); font-size: 10px; font-weight: 650; }
|
|
109
|
-
.dsh-wtc-state { --wtc-state: #728096; display: inline-flex; align-items: center; gap: 6px; flex: 0 0 auto; font-size: 12px; font-weight: 680; }
|
|
110
|
-
.dsh-wtc-state[data-target-state="creating"], .dsh-wtc-state[data-target-state="cleanup_pending"] { --wtc-state: #c47a1c; }
|
|
111
|
-
.dsh-wtc-state[data-target-state="working"] { --wtc-state: #2676dc; }
|
|
112
|
-
.dsh-wtc-state[data-target-state="ready_for_review"] { --wtc-state: #25885d; }
|
|
113
|
-
.dsh-wtc-state[data-target-state="retained"] { --wtc-state: #6b5bd2; }
|
|
114
|
-
.dsh-wtc-state[data-target-state="recovery_required"] { --wtc-state: #c94747; }
|
|
115
|
-
.dsh-wtc-state[data-target-state="delivered"] { opacity: .66; }
|
|
116
|
-
.dsh-wtc-facts { display: flex; flex-wrap: wrap; gap: 4px 10px; color: var(--wtc-muted); font-size: 11px; }
|
|
117
|
-
.dsh-wtc-recovery-message { color: var(--wtc-red); font-weight: 620; }
|
|
118
|
-
.dsh-wtc-revision { color: var(--wtc-muted); font: 11px ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
|
|
119
|
-
.dsh-wtc-button {
|
|
120
|
-
min-height: 30px;
|
|
121
|
-
border: 1px solid var(--wtc-line);
|
|
122
|
-
border-radius: 8px;
|
|
123
|
-
padding: 5px 9px;
|
|
124
|
-
background: transparent;
|
|
125
|
-
color: inherit;
|
|
126
|
-
font: inherit;
|
|
127
|
-
font-size: 12px;
|
|
128
|
-
font-weight: 650;
|
|
129
|
-
cursor: pointer;
|
|
130
|
-
}
|
|
131
|
-
.dsh-wtc-button:hover:not(:disabled) { background: color-mix(in srgb, currentColor 7%, transparent); border-color: color-mix(in srgb, currentColor 30%, transparent); }
|
|
132
|
-
.dsh-wtc-button:focus-visible { outline: 2px solid #5b8fe8; outline-offset: 2px; }
|
|
133
|
-
.dsh-wtc-button:disabled { opacity: .5; cursor: wait; }
|
|
134
|
-
.dsh-wtc-primary { color: white; border-color: var(--wtc-blue); background: var(--wtc-blue); }
|
|
135
|
-
.dsh-wtc-danger { color: var(--wtc-red); }
|
|
136
|
-
.dsh-wtc-empty, .dsh-wtc-loading { padding: 24px 14px; color: var(--wtc-muted); text-align: center; }
|
|
137
|
-
.dsh-wtc-error { padding: 10px 12px; border: 1px solid color-mix(in srgb, var(--wtc-red) 35%, transparent); border-radius: 10px; background: color-mix(in srgb, var(--wtc-red) 8%, transparent); color: var(--wtc-red); overflow-wrap: anywhere; }
|
|
138
|
-
.dsh-wtc-confirm { position: absolute; z-index: 2; inset: 12px; align-self: start; display: grid; gap: 10px; max-width: 520px; margin: 64px auto 0; padding: 18px; border: 1px solid color-mix(in srgb, var(--wtc-red) 35%, var(--wtc-line)); border-radius: 14px; background: Canvas; color: CanvasText; box-shadow: 0 20px 60px rgba(0,0,0,.24); }
|
|
139
|
-
.dsh-wtc-confirm p { margin: 0; color: color-mix(in srgb, currentColor 68%, transparent); line-height: 1.5; }
|
|
140
|
-
.dsh-wtc-confirm-actions { display: flex; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
|
|
141
|
-
.dsh-wtc-manager-dialog { width: min(960px, calc(100vw - 32px)); max-width: 960px; max-height: min(86vh, 900px); }
|
|
142
|
-
.dsh-wtc-manager-content { overflow: auto; min-height: 0; }
|
|
143
|
-
.dsh-wtc-manager-content .dsh-wtc-console { padding: 4px 0 8px; }
|
|
144
|
-
@media (max-width: 620px) {
|
|
145
|
-
.dsh-wtc-current, .dsh-wtc-row { align-items: flex-start; flex-direction: column; }
|
|
146
|
-
.dsh-wtc-current-actions, .dsh-wtc-row-actions { width: 100%; justify-content: flex-start; }
|
|
147
|
-
}
|
|
148
|
-
.dsh-wtc-button, .dsh-wtc-link { display:inline-flex; align-items:center; gap:6px; }
|
|
149
|
-
.dsh-wtc-button .dsh-wt-icon, .dsh-wtc-link .dsh-wt-icon { width:16px; height:16px; flex:0 0 16px; }
|
|
150
|
-
.dsh-wtc-target-kind { width:14px; height:14px; flex:0 0 14px; }
|
|
151
|
-
.dsh-wtc-target-chip .dsh-wtc-target-chevron { width:12px; height:12px; border:0; transform:none; margin:0; }
|
|
152
|
-
.dsh-wtc-target-chip[aria-expanded="true"] .dsh-wtc-target-chevron { transform:rotate(180deg); }
|
|
153
|
-
.dsh-wtc-console-head[data-embedded] { justify-content:flex-end; }
|
|
154
|
-
.dsh-wtc-task-name { min-width:0; overflow-wrap:anywhere; font-weight:500; }
|
|
155
|
-
.dsh-wtc-facts .dsh-wtc-checkout-id { font-size:11px; overflow-wrap:anywhere; }
|
|
1
|
+
export const TARGET_CONSOLE_STYLES = String.raw `
|
|
2
|
+
.dsh-wtc-target-chip {
|
|
3
|
+
--wtc-state: #728096;
|
|
4
|
+
display: inline-flex;
|
|
5
|
+
align-items: center;
|
|
6
|
+
gap: 6px;
|
|
7
|
+
min-height: 24px;
|
|
8
|
+
padding: 2px 9px;
|
|
9
|
+
border: 1px solid color-mix(in srgb, var(--wtc-state) 35%, transparent);
|
|
10
|
+
border-radius: 999px;
|
|
11
|
+
background: color-mix(in srgb, var(--wtc-state) 9%, transparent);
|
|
12
|
+
color: inherit;
|
|
13
|
+
font-size: 12px;
|
|
14
|
+
font-weight: 650;
|
|
15
|
+
line-height: 1;
|
|
16
|
+
white-space: nowrap;
|
|
17
|
+
cursor: pointer;
|
|
18
|
+
}
|
|
19
|
+
.dsh-wtc-target-chip:hover { background: color-mix(in srgb, var(--wtc-state) 15%, transparent); }
|
|
20
|
+
.dsh-wtc-target-chip:focus-visible { outline: 2px solid #5b8fe8; outline-offset: 2px; }
|
|
21
|
+
.dsh-wtc-target-chevron {
|
|
22
|
+
width: 6px;
|
|
23
|
+
height: 6px;
|
|
24
|
+
margin: -3px 1px 0 2px;
|
|
25
|
+
flex: 0 0 auto;
|
|
26
|
+
border-right: 1.5px solid currentColor;
|
|
27
|
+
border-bottom: 1.5px solid currentColor;
|
|
28
|
+
opacity: .58;
|
|
29
|
+
transform: rotate(45deg);
|
|
30
|
+
}
|
|
31
|
+
.dsh-wtc-menu-summary { display: grid; gap: 3px; min-width: 250px; text-align: left; white-space: normal; }
|
|
32
|
+
.dsh-wtc-menu-summary strong { font-size: 12px; color: inherit; }
|
|
33
|
+
.dsh-wtc-menu-summary span { color: color-mix(in srgb, currentColor 64%, transparent); font-size: 11px; line-height: 1.35; }
|
|
34
|
+
.dsh-wtc-menu-summary .dsh-wtc-menu-error { color: #c44747; }
|
|
35
|
+
.dsh-wtc-target-dot, .dsh-wtc-state-dot {
|
|
36
|
+
width: 7px;
|
|
37
|
+
height: 7px;
|
|
38
|
+
flex: 0 0 auto;
|
|
39
|
+
border-radius: 999px;
|
|
40
|
+
background: var(--wtc-state);
|
|
41
|
+
box-shadow: 0 0 0 3px color-mix(in srgb, var(--wtc-state) 15%, transparent);
|
|
42
|
+
}
|
|
43
|
+
.dsh-wtc-target-chip[data-target-state="creating"] { --wtc-state: #c47a1c; }
|
|
44
|
+
.dsh-wtc-target-chip[data-target-state="working"] { --wtc-state: #2676dc; }
|
|
45
|
+
.dsh-wtc-target-chip[data-target-state="ready_for_review"] { --wtc-state: #25885d; }
|
|
46
|
+
.dsh-wtc-target-chip[data-target-state="retained"] { --wtc-state: #6b5bd2; }
|
|
47
|
+
.dsh-wtc-target-chip[data-target-state="cleanup_pending"] { --wtc-state: #c47a1c; }
|
|
48
|
+
.dsh-wtc-target-chip[data-target-state="recovery_required"],
|
|
49
|
+
.dsh-wtc-target-chip[data-target-state="error"] { --wtc-state: #c94747; }
|
|
50
|
+
.dsh-wtc-target-chip[data-target-state="delivered"] { opacity: .66; }
|
|
51
|
+
.dsh-wtc-target-expiry { color: color-mix(in srgb, currentColor 62%, transparent); font-weight: 520; }
|
|
52
|
+
|
|
53
|
+
.dsh-wtc-console {
|
|
54
|
+
--wtc-ink: color-mix(in srgb, currentColor 94%, transparent);
|
|
55
|
+
--wtc-muted: color-mix(in srgb, currentColor 58%, transparent);
|
|
56
|
+
--wtc-line: color-mix(in srgb, currentColor 14%, transparent);
|
|
57
|
+
--wtc-panel: color-mix(in srgb, currentColor 4%, transparent);
|
|
58
|
+
--wtc-blue: #2f6fd0;
|
|
59
|
+
--wtc-red: #c44747;
|
|
60
|
+
position: relative;
|
|
61
|
+
display: grid;
|
|
62
|
+
gap: 14px;
|
|
63
|
+
min-width: 0;
|
|
64
|
+
width: 100%;
|
|
65
|
+
padding: 18px clamp(12px, 3vw, 26px) 28px;
|
|
66
|
+
color: var(--wtc-ink);
|
|
67
|
+
box-sizing: border-box;
|
|
68
|
+
}
|
|
69
|
+
.dsh-wtc-console h2, .dsh-wtc-console h3 { margin: 0; letter-spacing: -.025em; }
|
|
70
|
+
.dsh-wtc-console h2 { font-size: clamp(20px, 3vw, 28px); font-weight: 720; }
|
|
71
|
+
.dsh-wtc-console h3 { font-size: 15px; font-weight: 680; }
|
|
72
|
+
.dsh-wtc-console-head, .dsh-wtc-section-head, .dsh-wtc-current,
|
|
73
|
+
.dsh-wtc-row, .dsh-wtc-row-title, .dsh-wtc-row-actions, .dsh-wtc-current-actions {
|
|
74
|
+
display: flex;
|
|
75
|
+
align-items: center;
|
|
76
|
+
}
|
|
77
|
+
.dsh-wtc-console-head, .dsh-wtc-section-head, .dsh-wtc-current, .dsh-wtc-row { justify-content: space-between; }
|
|
78
|
+
.dsh-wtc-console-head { gap: 16px; }
|
|
79
|
+
.dsh-wtc-kicker, .dsh-wtc-label {
|
|
80
|
+
display: block;
|
|
81
|
+
color: var(--wtc-muted);
|
|
82
|
+
font-size: 10px;
|
|
83
|
+
font-weight: 720;
|
|
84
|
+
letter-spacing: .1em;
|
|
85
|
+
text-transform: uppercase;
|
|
86
|
+
}
|
|
87
|
+
.dsh-wtc-kicker { margin-bottom: 3px; }
|
|
88
|
+
.dsh-wtc-current, .dsh-wtc-list-section {
|
|
89
|
+
min-width: 0;
|
|
90
|
+
border: 1px solid var(--wtc-line);
|
|
91
|
+
border-radius: 14px;
|
|
92
|
+
background: linear-gradient(145deg, color-mix(in srgb, currentColor 3%, transparent), transparent 52%);
|
|
93
|
+
}
|
|
94
|
+
.dsh-wtc-current { gap: 16px; padding: 14px 16px; }
|
|
95
|
+
.dsh-wtc-current > div:first-child { min-width: 0; display: grid; gap: 3px; }
|
|
96
|
+
.dsh-wtc-current strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
97
|
+
.dsh-wtc-current-actions, .dsh-wtc-row-actions { gap: 7px; flex-wrap: wrap; justify-content: flex-end; }
|
|
98
|
+
.dsh-wtc-list-section { overflow: hidden; }
|
|
99
|
+
.dsh-wtc-section-head { padding: 12px 14px; border-bottom: 1px solid var(--wtc-line); }
|
|
100
|
+
.dsh-wtc-count { min-width: 26px; padding: 3px 7px; border-radius: 999px; background: var(--wtc-panel); color: var(--wtc-muted); text-align: center; font-size: 11px; }
|
|
101
|
+
.dsh-wtc-list { list-style: none; margin: 0; padding: 0; }
|
|
102
|
+
.dsh-wtc-row { position: relative; gap: 14px; min-width: 0; padding: 12px 14px; border-bottom: 1px solid var(--wtc-line); }
|
|
103
|
+
.dsh-wtc-row:last-child { border-bottom: 0; }
|
|
104
|
+
.dsh-wtc-row[data-current-target="true"] { background: color-mix(in srgb, var(--wtc-blue) 6%, transparent); }
|
|
105
|
+
.dsh-wtc-row-main { min-width: 0; display: grid; gap: 6px; }
|
|
106
|
+
.dsh-wtc-row-title { min-width: 0; gap: 10px; }
|
|
107
|
+
.dsh-wtc-row-id { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 600 12px ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
|
|
108
|
+
.dsh-wtc-relation { flex: 0 0 auto; padding: 2px 6px; border-radius: 999px; background: var(--wtc-panel); color: var(--wtc-muted); font-size: 10px; font-weight: 650; }
|
|
109
|
+
.dsh-wtc-state { --wtc-state: #728096; display: inline-flex; align-items: center; gap: 6px; flex: 0 0 auto; font-size: 12px; font-weight: 680; }
|
|
110
|
+
.dsh-wtc-state[data-target-state="creating"], .dsh-wtc-state[data-target-state="cleanup_pending"] { --wtc-state: #c47a1c; }
|
|
111
|
+
.dsh-wtc-state[data-target-state="working"] { --wtc-state: #2676dc; }
|
|
112
|
+
.dsh-wtc-state[data-target-state="ready_for_review"] { --wtc-state: #25885d; }
|
|
113
|
+
.dsh-wtc-state[data-target-state="retained"] { --wtc-state: #6b5bd2; }
|
|
114
|
+
.dsh-wtc-state[data-target-state="recovery_required"] { --wtc-state: #c94747; }
|
|
115
|
+
.dsh-wtc-state[data-target-state="delivered"] { opacity: .66; }
|
|
116
|
+
.dsh-wtc-facts { display: flex; flex-wrap: wrap; gap: 4px 10px; color: var(--wtc-muted); font-size: 11px; }
|
|
117
|
+
.dsh-wtc-recovery-message { color: var(--wtc-red); font-weight: 620; }
|
|
118
|
+
.dsh-wtc-revision { color: var(--wtc-muted); font: 11px ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
|
|
119
|
+
.dsh-wtc-button {
|
|
120
|
+
min-height: 30px;
|
|
121
|
+
border: 1px solid var(--wtc-line);
|
|
122
|
+
border-radius: 8px;
|
|
123
|
+
padding: 5px 9px;
|
|
124
|
+
background: transparent;
|
|
125
|
+
color: inherit;
|
|
126
|
+
font: inherit;
|
|
127
|
+
font-size: 12px;
|
|
128
|
+
font-weight: 650;
|
|
129
|
+
cursor: pointer;
|
|
130
|
+
}
|
|
131
|
+
.dsh-wtc-button:hover:not(:disabled) { background: color-mix(in srgb, currentColor 7%, transparent); border-color: color-mix(in srgb, currentColor 30%, transparent); }
|
|
132
|
+
.dsh-wtc-button:focus-visible { outline: 2px solid #5b8fe8; outline-offset: 2px; }
|
|
133
|
+
.dsh-wtc-button:disabled { opacity: .5; cursor: wait; }
|
|
134
|
+
.dsh-wtc-primary { color: white; border-color: var(--wtc-blue); background: var(--wtc-blue); }
|
|
135
|
+
.dsh-wtc-danger { color: var(--wtc-red); }
|
|
136
|
+
.dsh-wtc-empty, .dsh-wtc-loading { padding: 24px 14px; color: var(--wtc-muted); text-align: center; }
|
|
137
|
+
.dsh-wtc-error { padding: 10px 12px; border: 1px solid color-mix(in srgb, var(--wtc-red) 35%, transparent); border-radius: 10px; background: color-mix(in srgb, var(--wtc-red) 8%, transparent); color: var(--wtc-red); overflow-wrap: anywhere; }
|
|
138
|
+
.dsh-wtc-confirm { position: absolute; z-index: 2; inset: 12px; align-self: start; display: grid; gap: 10px; max-width: 520px; margin: 64px auto 0; padding: 18px; border: 1px solid color-mix(in srgb, var(--wtc-red) 35%, var(--wtc-line)); border-radius: 14px; background: Canvas; color: CanvasText; box-shadow: 0 20px 60px rgba(0,0,0,.24); }
|
|
139
|
+
.dsh-wtc-confirm p { margin: 0; color: color-mix(in srgb, currentColor 68%, transparent); line-height: 1.5; }
|
|
140
|
+
.dsh-wtc-confirm-actions { display: flex; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
|
|
141
|
+
.dsh-wtc-manager-dialog { width: min(960px, calc(100vw - 32px)); max-width: 960px; max-height: min(86vh, 900px); }
|
|
142
|
+
.dsh-wtc-manager-content { overflow: auto; min-height: 0; }
|
|
143
|
+
.dsh-wtc-manager-content .dsh-wtc-console { padding: 4px 0 8px; }
|
|
144
|
+
@media (max-width: 620px) {
|
|
145
|
+
.dsh-wtc-current, .dsh-wtc-row { align-items: flex-start; flex-direction: column; }
|
|
146
|
+
.dsh-wtc-current-actions, .dsh-wtc-row-actions { width: 100%; justify-content: flex-start; }
|
|
147
|
+
}
|
|
148
|
+
.dsh-wtc-button, .dsh-wtc-link { display:inline-flex; align-items:center; gap:6px; }
|
|
149
|
+
.dsh-wtc-button .dsh-wt-icon, .dsh-wtc-link .dsh-wt-icon { width:16px; height:16px; flex:0 0 16px; }
|
|
150
|
+
.dsh-wtc-target-kind { width:14px; height:14px; flex:0 0 14px; }
|
|
151
|
+
.dsh-wtc-target-chip .dsh-wtc-target-chevron { width:12px; height:12px; border:0; transform:none; margin:0; }
|
|
152
|
+
.dsh-wtc-target-chip[aria-expanded="true"] .dsh-wtc-target-chevron { transform:rotate(180deg); }
|
|
153
|
+
.dsh-wtc-console-head[data-embedded] { justify-content:flex-end; }
|
|
154
|
+
.dsh-wtc-task-name { min-width:0; overflow-wrap:anywhere; font-weight:500; }
|
|
155
|
+
.dsh-wtc-facts .dsh-wtc-checkout-id { font-size:11px; overflow-wrap:anywhere; }
|
|
156
156
|
`;
|
|
157
157
|
//# sourceMappingURL=target-console.styles.js.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ComponentType } from 'react';
|
|
2
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
2
3
|
import type { WorkspaceBrowserProps } from '@deepseek-ai/dsh-client-ui-workspace/client';
|
|
3
4
|
import type { WorktreeConsoleAdapter, WorktreeSidebarTopologyResponse } from '../../console-contract.js';
|
|
4
5
|
/** Ephemeral presentation metadata consumed only by the gated official Browser derivative. */
|
|
@@ -8,15 +9,23 @@ export interface ManagedWorktreeSessionDecoration {
|
|
|
8
9
|
label: string;
|
|
9
10
|
originalTitle: string;
|
|
10
11
|
}
|
|
12
|
+
interface ManagedWorkspaceGuard {
|
|
13
|
+
ready: boolean;
|
|
14
|
+
sessionIds: ReadonlySet<string>;
|
|
15
|
+
workspaceIds: ReadonlySet<string>;
|
|
16
|
+
blockSession(id: string): boolean;
|
|
17
|
+
blockWorkspace(id: string): boolean;
|
|
18
|
+
}
|
|
11
19
|
interface OfficialWorkspaceBrowserProps extends WorkspaceBrowserProps {
|
|
12
20
|
adapter: WorktreeConsoleAdapter;
|
|
13
21
|
OfficialBrowser: ComponentType<WorkspaceBrowserProps>;
|
|
22
|
+
guard?: ManagedWorkspaceGuard;
|
|
14
23
|
}
|
|
15
24
|
/**
|
|
16
25
|
* Preserve the complete official Workspace Browser and change only its data
|
|
17
26
|
* projection plus mutations that are unsafe for one-to-one Managed owners.
|
|
18
27
|
*/
|
|
19
|
-
export declare function ManagedOfficialWorkspaceBrowser({ adapter, OfficialBrowser, ...officialProps }: OfficialWorkspaceBrowserProps): import("react").JSX.Element;
|
|
28
|
+
export declare function ManagedOfficialWorkspaceBrowser({ adapter, OfficialBrowser, guard, ...officialProps }: OfficialWorkspaceBrowserProps): import("react").JSX.Element;
|
|
20
29
|
interface SidebarRegistrationContext {
|
|
21
30
|
slots: {
|
|
22
31
|
inject(name: string, callback: () => unknown): void;
|
|
@@ -29,5 +38,5 @@ interface SidebarRegistrationContext {
|
|
|
29
38
|
* replacing only its Browser component while preserving its declaration tree,
|
|
30
39
|
* locale, picker, stores, and directory-flow authorization.
|
|
31
40
|
*/
|
|
32
|
-
export declare function registerManagedWorkspaceSidebar(ctx: SidebarRegistrationContext, adapter: WorktreeConsoleAdapter): void;
|
|
41
|
+
export declare function registerManagedWorkspaceSidebar(ctx: SidebarRegistrationContext, adapter: WorktreeConsoleAdapter, applyWorkspace?: (ctx: Context) => void): void;
|
|
33
42
|
export {};
|
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { ClientI18nProvider, useClientTranslator } from '../i18n.js';
|
|
3
|
-
import { useEffect, useMemo, useState } from 'react';
|
|
3
|
+
import { useEffect, useLayoutEffect, useMemo, useState } from 'react';
|
|
4
4
|
import { apply as applyOfficialWorkspace } from 'virtual:dsh-official-workspace-client';
|
|
5
5
|
import { WORKTREE_REVIEW_REFRESH_EVENT } from '../review-console/status-events.js';
|
|
6
|
+
import { selectedSessionId } from '../actions.js';
|
|
6
7
|
import { projectManagedWorkspaceSidebar } from './model.js';
|
|
7
8
|
const EMPTY_TOPOLOGY = { projects: [] };
|
|
8
9
|
/**
|
|
9
10
|
* Preserve the complete official Workspace Browser and change only its data
|
|
10
11
|
* projection plus mutations that are unsafe for one-to-one Managed owners.
|
|
11
12
|
*/
|
|
12
|
-
export function ManagedOfficialWorkspaceBrowser({ adapter, OfficialBrowser, ...officialProps }) {
|
|
13
|
+
export function ManagedOfficialWorkspaceBrowser({ adapter, OfficialBrowser, guard, ...officialProps }) {
|
|
13
14
|
const t = useClientTranslator();
|
|
14
15
|
const props = officialProps;
|
|
15
16
|
const workspaceState = props.useWorkspaces((state) => state);
|
|
16
17
|
const sessionState = props.useSessions((state) => state);
|
|
17
18
|
const [topology, setTopology] = useState(EMPTY_TOPOLOGY);
|
|
19
|
+
const [topologyVerified, setTopologyVerified] = useState(false);
|
|
18
20
|
const workspaceKey = workspaceState.items
|
|
19
21
|
.map(workspace => `${workspace.workspaceId}:${workspace.sessionIds.join(',')}`)
|
|
20
22
|
.join('|');
|
|
@@ -22,29 +24,44 @@ export function ManagedOfficialWorkspaceBrowser({ adapter, OfficialBrowser, ...o
|
|
|
22
24
|
useEffect(() => {
|
|
23
25
|
let active = true;
|
|
24
26
|
const refresh = () => {
|
|
27
|
+
if (guard)
|
|
28
|
+
guard.ready = false;
|
|
25
29
|
void adapter.sidebarTopology().then(outcome => {
|
|
26
30
|
if (!active)
|
|
27
31
|
return;
|
|
28
32
|
setTopology(outcome.ok ? outcome.value : EMPTY_TOPOLOGY);
|
|
33
|
+
setTopologyVerified(outcome.ok);
|
|
29
34
|
}, () => {
|
|
30
|
-
if (active)
|
|
35
|
+
if (active) {
|
|
31
36
|
setTopology(EMPTY_TOPOLOGY);
|
|
37
|
+
setTopologyVerified(false);
|
|
38
|
+
}
|
|
32
39
|
});
|
|
33
40
|
};
|
|
34
41
|
refresh();
|
|
35
42
|
window.addEventListener(WORKTREE_REVIEW_REFRESH_EVENT, refresh);
|
|
36
43
|
return () => {
|
|
37
44
|
active = false;
|
|
45
|
+
if (guard)
|
|
46
|
+
guard.ready = false;
|
|
38
47
|
window.removeEventListener(WORKTREE_REVIEW_REFRESH_EVENT, refresh);
|
|
39
48
|
};
|
|
40
|
-
}, [adapter, sessionKey, workspaceKey]);
|
|
49
|
+
}, [adapter, guard, sessionKey, workspaceKey]);
|
|
41
50
|
const projection = useMemo(() => projectManagedWorkspaceSidebar({
|
|
42
51
|
workspaces: workspaceState.items,
|
|
43
52
|
sessions: sessionState.byId,
|
|
44
53
|
topology,
|
|
45
54
|
archivedSessionIds: workspaceState.archivedSessionIds,
|
|
46
|
-
currentSessionId: sessionState
|
|
47
|
-
}, t), [sessionState.byId, sessionState.
|
|
55
|
+
currentSessionId: selectedSessionId(sessionState),
|
|
56
|
+
}, t), [sessionState.byId, sessionState.ids, topology, workspaceState.items, workspaceState.archivedSessionIds, t]);
|
|
57
|
+
useLayoutEffect(() => {
|
|
58
|
+
if (!guard)
|
|
59
|
+
return;
|
|
60
|
+
guard.sessionIds = projection.protectedSessionIds;
|
|
61
|
+
guard.workspaceIds = projection.protectedWorkspaceIds;
|
|
62
|
+
guard.ready = topologyVerified;
|
|
63
|
+
return () => { guard.ready = false; };
|
|
64
|
+
}, [guard, projection, topologyVerified]);
|
|
48
65
|
const projectedWorkspaceState = useMemo(() => ({
|
|
49
66
|
...workspaceState,
|
|
50
67
|
items: projection.workspaces.map(workspace => projection.protectedWorkspaceIds.has(workspace.workspaceId)
|
|
@@ -98,15 +115,58 @@ export function ManagedOfficialWorkspaceBrowser({ adapter, OfficialBrowser, ...o
|
|
|
98
115
|
await props.insertSessionBefore(workspaceId, sessionId, beforeSessionId);
|
|
99
116
|
} });
|
|
100
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Resolve the directory picker service only when an action actually needs it.
|
|
120
|
+
* On the modern Host the picker provider entry waits for `uiWorkspace`, so the
|
|
121
|
+
* managed context may not have the service while `uiWorkspace` is starting;
|
|
122
|
+
* every picker call must therefore re-read the service at invocation time.
|
|
123
|
+
*/
|
|
124
|
+
function deferredRemoteDirectoryPicker(ctx) {
|
|
125
|
+
const resolve = () => {
|
|
126
|
+
const get = ctx.get;
|
|
127
|
+
const picker = typeof get === 'function' ? get.call(ctx, 'remote.directoryPicker') : undefined;
|
|
128
|
+
if (picker === undefined || picker === null) {
|
|
129
|
+
throw new Error('The directory picker service is not active yet.');
|
|
130
|
+
}
|
|
131
|
+
return picker;
|
|
132
|
+
};
|
|
133
|
+
return new Proxy({}, {
|
|
134
|
+
get(_target, key) {
|
|
135
|
+
const picker = resolve();
|
|
136
|
+
const value = picker[key];
|
|
137
|
+
return typeof value === 'function' ? value.bind(picker) : value;
|
|
138
|
+
},
|
|
139
|
+
});
|
|
140
|
+
}
|
|
101
141
|
function officialContextProxy(ctx, adapter) {
|
|
142
|
+
// Service-level guards also cover the newer official shortcut/menu seats,
|
|
143
|
+
// which call uiWorkspace directly rather than invoking Browser props.
|
|
144
|
+
const guard = {
|
|
145
|
+
ready: false,
|
|
146
|
+
sessionIds: new Set(),
|
|
147
|
+
workspaceIds: new Set(),
|
|
148
|
+
blockSession(id) { return !this.ready || this.sessionIds.has(id); },
|
|
149
|
+
blockWorkspace(id) { return !this.ready || this.workspaceIds.has(id); },
|
|
150
|
+
};
|
|
102
151
|
const proxySlots = new Proxy(ctx.slots, {
|
|
103
152
|
get(target, key, receiver) {
|
|
104
153
|
if (key === 'register') {
|
|
105
154
|
return (descriptor, component) => {
|
|
155
|
+
if ((descriptor.name === 'sidebar.workspaces.session.menu.item'
|
|
156
|
+
|| descriptor.name === 'sidebar.workspaces.session.row.action')
|
|
157
|
+
&& descriptor.id !== 'pin') {
|
|
158
|
+
// The only owner-safe built-in row action is pin. Third-party actions
|
|
159
|
+
// remain available on ordinary Sessions, but never on a managed owner.
|
|
160
|
+
const Action = component;
|
|
161
|
+
const GuardedAction = (props) => typeof props.sessionId === 'string' && !guard.blockSession(props.sessionId)
|
|
162
|
+
? _jsx(Action, { ...props })
|
|
163
|
+
: null;
|
|
164
|
+
return target.register(descriptor, GuardedAction);
|
|
165
|
+
}
|
|
106
166
|
if (descriptor.name !== 'sidebar.workspaces')
|
|
107
167
|
return target.register(descriptor, component);
|
|
108
168
|
const OfficialBrowser = component;
|
|
109
|
-
const Browser = (props) => _jsx(ClientI18nProvider, { locale: typeof ctx.get === 'function' ? ctx.get('locale') : undefined, children: _jsx(ManagedOfficialWorkspaceBrowser, { ...props, adapter: adapter, OfficialBrowser: OfficialBrowser }) });
|
|
169
|
+
const Browser = (props) => _jsx(ClientI18nProvider, { locale: typeof ctx.get === 'function' ? ctx.get('locale') : undefined, children: _jsx(ManagedOfficialWorkspaceBrowser, { ...props, adapter: adapter, OfficialBrowser: OfficialBrowser, guard: guard }) });
|
|
110
170
|
return target.register(descriptor, Browser);
|
|
111
171
|
};
|
|
112
172
|
}
|
|
@@ -117,6 +177,26 @@ function officialContextProxy(ctx, adapter) {
|
|
|
117
177
|
get(target, key, receiver) {
|
|
118
178
|
if (key === 'slots')
|
|
119
179
|
return proxySlots;
|
|
180
|
+
if (key === 'remote' && target.remote !== undefined && target.remote !== null) {
|
|
181
|
+
// The official apply reads `ctx.remote.directoryPicker` once while
|
|
182
|
+
// constructing `uiWorkspace`; hand back a deferred facade so that the
|
|
183
|
+
// read never fails (and never blocks) before the picker activates.
|
|
184
|
+
const remote = target.remote;
|
|
185
|
+
return new Proxy(remote, {
|
|
186
|
+
get(remoteTarget, remoteKey, remoteReceiver) {
|
|
187
|
+
if (remoteKey === 'directoryPicker')
|
|
188
|
+
return deferredRemoteDirectoryPicker(ctx);
|
|
189
|
+
return Reflect.get(remoteTarget, remoteKey, remoteReceiver);
|
|
190
|
+
},
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
if (key === 'get' && typeof target.get === 'function') {
|
|
194
|
+
return (name) => name === '__dshGitWorktreeManagedGuard'
|
|
195
|
+
? guard
|
|
196
|
+
: name === 'remote.directoryPicker'
|
|
197
|
+
? deferredRemoteDirectoryPicker(ctx)
|
|
198
|
+
: target.get.call(target, name);
|
|
199
|
+
}
|
|
120
200
|
return Reflect.get(target, key, receiver);
|
|
121
201
|
},
|
|
122
202
|
});
|
|
@@ -126,7 +206,7 @@ function officialContextProxy(ctx, adapter) {
|
|
|
126
206
|
* replacing only its Browser component while preserving its declaration tree,
|
|
127
207
|
* locale, picker, stores, and directory-flow authorization.
|
|
128
208
|
*/
|
|
129
|
-
export function registerManagedWorkspaceSidebar(ctx, adapter) {
|
|
130
|
-
|
|
209
|
+
export function registerManagedWorkspaceSidebar(ctx, adapter, applyWorkspace = applyOfficialWorkspace) {
|
|
210
|
+
applyWorkspace(officialContextProxy(ctx, adapter));
|
|
131
211
|
}
|
|
132
212
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/workspace-sidebar/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AACpE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAsB,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/workspace-sidebar/index.tsx"],"names":[],"mappings":"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"}
|