@shendeguize/dsh-agent-sidecar 0.1.1 → 0.2.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/README.md +78 -11
- package/lib/client.js +8659 -7589
- package/lib/client.js.map +1 -1
- package/package.json +3 -1
- package/src/client/analysis/AnalysisPanel.tsx +19 -27
- package/src/client/analysis/analysis.module.css +36 -97
- package/src/client/board/Board.tsx +115 -61
- package/src/client/board/board.module.css +72 -151
- package/src/client/board/project-view-logic.ts +21 -34
- package/src/client/board/project-view.module.css +41 -96
- package/src/client/board/project-view.tsx +29 -13
- package/src/client/board/strings.ts +68 -107
- package/src/client/commands.ts +30 -15
- package/src/client/detail/SessionDetail.tsx +92 -58
- package/src/client/detail/detail.module.css +62 -218
- package/src/client/detail/strings.ts +64 -88
- package/src/client/detail-view.module.css +30 -55
- package/src/client/detail-view.tsx +80 -108
- package/src/client/dsh-tools/LineageTree.tsx +22 -13
- package/src/client/dsh-tools/SearchPanel.tsx +18 -11
- package/src/client/dsh-tools/dsh-tools.module.css +50 -139
- package/src/client/dsh-tools/strings.ts +42 -77
- package/src/client/index.ts +285 -124
- package/src/client/inject/InjectPanel.tsx +31 -64
- package/src/client/inject/inject.module.css +97 -198
- package/src/client/lifecycle/handoff.ts +83 -0
- package/src/client/locales/en.ts +74 -2
- package/src/client/locales/host.ts +131 -0
- package/src/client/locales/index.ts +196 -8
- package/src/client/locales/react.ts +10 -0
- package/src/client/locales/view.ts +38 -0
- package/src/client/locales/zh.ts +194 -134
- package/src/client/mount.tsx +72 -38
- package/src/client/navigation/CenterOverlay.tsx +40 -0
- package/src/client/navigation/center-overlay.module.css +51 -0
- package/src/client/navigation/center.ts +45 -0
- package/src/client/navigation/modal-isolation.ts +152 -0
- package/src/client/navigation/modal-surface-anchor.ts +72 -0
- package/src/client/navigation/sidebar-entry.module.css +73 -0
- package/src/client/navigation/sidebar-entry.ts +309 -0
- package/src/client/primitives/StaticPill.tsx +21 -0
- package/src/client/settings-card.module.css +35 -119
- package/src/client/settings-card.tsx +31 -153
- package/src/client/settings-fields.tsx +131 -0
- package/src/client/sidebar/SidebarTab.tsx +156 -0
- package/src/client/sidebar/model.ts +65 -0
- package/src/client/sidebar/sidebar-tab.module.css +118 -0
- package/src/client/sidebar-tab.tsx +46 -320
- package/src/client/theme/agsc.module.css +31 -0
- package/src/client/theme/parts.ts +56 -0
- package/src/client/ui-integration.ts +86 -0
- package/src/client/widget.tsx +9 -8
- package/src/client/inject/overlay.module.css +0 -22
|
@@ -1,16 +1,11 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* dsh deep-query tools styles (lineage tree + search panel, design §5.1
|
|
3
|
-
* view 2 / §5.4): every color rides a --dsw-alias-* design token with a
|
|
4
|
-
* neutral fallback — no theme colors are hardcoded as the only value.
|
|
5
|
-
* Same posture as board.module.css.
|
|
6
|
-
*/
|
|
1
|
+
/* dsh deep-query tools over the shared Agent Sidecar / DSH token contract. */
|
|
7
2
|
|
|
8
3
|
.panel {
|
|
9
4
|
display: flex;
|
|
10
5
|
flex-direction: column;
|
|
11
6
|
gap: 8px;
|
|
12
7
|
min-width: 0;
|
|
13
|
-
color: var(--
|
|
8
|
+
color: var(--agsc-fg);
|
|
14
9
|
}
|
|
15
10
|
|
|
16
11
|
.panelHead {
|
|
@@ -23,41 +18,35 @@
|
|
|
23
18
|
.panelTitle {
|
|
24
19
|
font-size: 13px;
|
|
25
20
|
font-weight: 600;
|
|
26
|
-
color: var(--dsw-alias-label-primary
|
|
21
|
+
color: var(--dsw-alias-label-primary);
|
|
27
22
|
}
|
|
28
23
|
|
|
29
24
|
.panelCount {
|
|
30
|
-
font-size: 11px;
|
|
31
25
|
flex: none;
|
|
32
|
-
color: var(--dsw-alias-label-secondary, #57606a);
|
|
33
|
-
background: var(--dsw-alias-bg-layer-2, rgba(0, 0, 0, 0.04));
|
|
34
|
-
border-radius: 999px;
|
|
35
|
-
padding: 0 8px;
|
|
36
|
-
line-height: 18px;
|
|
37
26
|
}
|
|
38
27
|
|
|
39
28
|
/* ------------------------------------------------- shared status bodies */
|
|
40
29
|
|
|
41
30
|
.mutedLine {
|
|
42
31
|
font-size: 12px;
|
|
43
|
-
color: var(--dsw-alias-label-secondary
|
|
32
|
+
color: var(--dsw-alias-label-secondary);
|
|
44
33
|
}
|
|
45
34
|
|
|
46
35
|
.errorCard {
|
|
47
36
|
font-size: 12px;
|
|
48
37
|
line-height: 18px;
|
|
49
38
|
padding: 8px 10px;
|
|
50
|
-
border-radius:
|
|
51
|
-
color: var(--
|
|
52
|
-
background: var(--dsw-alias-state-error-secondary
|
|
53
|
-
border: 1px solid var(--dsw-alias-state-error-secondary
|
|
39
|
+
border-radius: var(--agsc-radius-control);
|
|
40
|
+
color: var(--agsc-err);
|
|
41
|
+
background: var(--dsw-alias-state-error-secondary);
|
|
42
|
+
border: 1px solid var(--dsw-alias-state-error-secondary);
|
|
54
43
|
}
|
|
55
44
|
|
|
56
45
|
.errorDetail {
|
|
57
46
|
display: block;
|
|
58
47
|
margin-top: 2px;
|
|
59
48
|
font-size: 11px;
|
|
60
|
-
color: var(--dsw-alias-label-secondary
|
|
49
|
+
color: var(--dsw-alias-label-secondary);
|
|
61
50
|
word-break: break-all;
|
|
62
51
|
}
|
|
63
52
|
|
|
@@ -67,27 +56,27 @@
|
|
|
67
56
|
flex-direction: column;
|
|
68
57
|
gap: 4px;
|
|
69
58
|
padding: 10px 12px;
|
|
70
|
-
border-radius:
|
|
71
|
-
border: 1px dashed var(--
|
|
72
|
-
background: var(--
|
|
59
|
+
border-radius: var(--agsc-radius-control);
|
|
60
|
+
border: 1px dashed var(--agsc-border-strong);
|
|
61
|
+
background: var(--agsc-bg-raised);
|
|
73
62
|
}
|
|
74
63
|
|
|
75
64
|
.degradeTitle {
|
|
76
65
|
font-size: 12px;
|
|
77
66
|
font-weight: 600;
|
|
78
|
-
color: var(--dsw-alias-label-primary
|
|
67
|
+
color: var(--dsw-alias-label-primary);
|
|
79
68
|
}
|
|
80
69
|
|
|
81
70
|
.degradeBody {
|
|
82
71
|
font-size: 12px;
|
|
83
72
|
line-height: 18px;
|
|
84
|
-
color: var(--dsw-alias-label-secondary
|
|
73
|
+
color: var(--dsw-alias-label-secondary);
|
|
85
74
|
}
|
|
86
75
|
|
|
87
76
|
.degradeDetail {
|
|
88
77
|
font-size: 11px;
|
|
89
|
-
font-family:
|
|
90
|
-
color: var(--dsw-alias-label-tertiary
|
|
78
|
+
font-family: var(--ds-font-family-code);
|
|
79
|
+
color: var(--dsw-alias-label-tertiary);
|
|
91
80
|
word-break: break-all;
|
|
92
81
|
}
|
|
93
82
|
|
|
@@ -96,10 +85,10 @@
|
|
|
96
85
|
font-size: 12px;
|
|
97
86
|
line-height: 18px;
|
|
98
87
|
padding: 5px 10px;
|
|
99
|
-
border-radius:
|
|
100
|
-
color: var(--
|
|
101
|
-
background: var(--dsw-alias-state-warn-tertiary
|
|
102
|
-
border: 1px solid var(--dsw-alias-state-warn-secondary
|
|
88
|
+
border-radius: var(--agsc-radius-control);
|
|
89
|
+
color: var(--agsc-warn);
|
|
90
|
+
background: var(--dsw-alias-state-warn-tertiary);
|
|
91
|
+
border: 1px solid var(--dsw-alias-state-warn-secondary);
|
|
103
92
|
}
|
|
104
93
|
|
|
105
94
|
/* --------------------------------------------------------- lineage tree */
|
|
@@ -125,16 +114,6 @@
|
|
|
125
114
|
padding: 0;
|
|
126
115
|
font-size: 10px;
|
|
127
116
|
line-height: 1;
|
|
128
|
-
color: var(--dsw-alias-label-tertiary, #6e7781);
|
|
129
|
-
background: transparent;
|
|
130
|
-
border: none;
|
|
131
|
-
border-radius: 4px;
|
|
132
|
-
cursor: pointer;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
.toggle:hover {
|
|
136
|
-
color: var(--dsw-alias-label-primary, #1f2328);
|
|
137
|
-
background: var(--dsw-alias-interactive-bg-hover, rgba(0, 0, 0, 0.04));
|
|
138
117
|
}
|
|
139
118
|
|
|
140
119
|
/* Alignment spacer where a leaf row has no toggle. */
|
|
@@ -144,42 +123,26 @@
|
|
|
144
123
|
}
|
|
145
124
|
|
|
146
125
|
.node {
|
|
147
|
-
|
|
148
|
-
align-items: center;
|
|
126
|
+
justify-content: flex-start;
|
|
149
127
|
gap: 6px;
|
|
128
|
+
height: auto;
|
|
150
129
|
min-width: 0;
|
|
151
|
-
font-family: inherit;
|
|
152
|
-
font-size: 12px;
|
|
153
130
|
text-align: left;
|
|
154
131
|
padding: 2px 8px;
|
|
155
|
-
border-radius: 6px;
|
|
156
|
-
border: 1px solid transparent;
|
|
157
|
-
background: transparent;
|
|
158
|
-
color: var(--dsw-alias-label-primary, #1f2328);
|
|
159
|
-
cursor: pointer;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
.node:hover {
|
|
163
|
-
border-color: var(--dsw-alias-border-l1, rgba(0, 0, 0, 0.08));
|
|
164
|
-
background: var(--dsw-alias-interactive-bg-hover, rgba(0, 0, 0, 0.04));
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
.node:focus-visible {
|
|
168
|
-
outline: 2px solid var(--dsw-alias-brand-primary, #4d6bfe);
|
|
169
|
-
outline-offset: 1px;
|
|
170
132
|
}
|
|
171
133
|
|
|
172
134
|
/* Current-session highlight (the row the user is inspecting). Brand tint
|
|
173
135
|
* rides the real brand-primary token — brand-secondary/tertiary do not
|
|
174
136
|
* exist in the dsh token table (UX-15). */
|
|
175
137
|
.node[data-current='true'] {
|
|
176
|
-
|
|
177
|
-
background: color-mix(in srgb, var(--
|
|
138
|
+
color: var(--agsc-accent);
|
|
139
|
+
background: color-mix(in srgb, var(--agsc-accent) 8%, transparent);
|
|
140
|
+
box-shadow: inset 0 0 0 1px var(--agsc-accent);
|
|
178
141
|
cursor: default;
|
|
179
142
|
}
|
|
180
143
|
|
|
181
144
|
.nodeId {
|
|
182
|
-
font-family:
|
|
145
|
+
font-family: var(--ds-font-family-code);
|
|
183
146
|
overflow: hidden;
|
|
184
147
|
text-overflow: ellipsis;
|
|
185
148
|
white-space: nowrap;
|
|
@@ -188,30 +151,24 @@
|
|
|
188
151
|
.nodeRole {
|
|
189
152
|
flex: none;
|
|
190
153
|
font-size: 11px;
|
|
191
|
-
color: var(--dsw-alias-label-tertiary
|
|
154
|
+
color: var(--dsw-alias-label-tertiary);
|
|
192
155
|
}
|
|
193
156
|
|
|
194
157
|
.nodeBadge {
|
|
195
158
|
flex: none;
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
color:
|
|
201
|
-
background: var(--dsw-alias-bg-layer-2, rgba(0, 0, 0, 0.04));
|
|
202
|
-
border: 1px solid var(--dsw-alias-border-l1, rgba(0, 0, 0, 0.08));
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.nodeBadge > span,
|
|
162
|
+
.matchTag > span {
|
|
163
|
+
color: inherit;
|
|
203
164
|
}
|
|
204
165
|
|
|
205
166
|
.nodeBadge[data-kind='current'] {
|
|
206
|
-
color: var(--
|
|
207
|
-
border-color: var(--dsw-alias-brand-primary, #4d6bfe);
|
|
208
|
-
background: transparent;
|
|
167
|
+
color: var(--agsc-accent);
|
|
209
168
|
}
|
|
210
169
|
|
|
211
170
|
.nodeBadge[data-kind='live'] {
|
|
212
|
-
color: var(--
|
|
213
|
-
border-color: var(--dsw-alias-state-success-secondary, rgba(26, 127, 55, 0.32));
|
|
214
|
-
background: transparent;
|
|
171
|
+
color: var(--agsc-ok);
|
|
215
172
|
}
|
|
216
173
|
|
|
217
174
|
/* --------------------------------------------------------- search panel */
|
|
@@ -225,47 +182,10 @@
|
|
|
225
182
|
.searchInput {
|
|
226
183
|
flex: 1;
|
|
227
184
|
min-width: 0;
|
|
228
|
-
font-size: 12px;
|
|
229
|
-
font-family: inherit;
|
|
230
|
-
color: var(--dsw-alias-label-primary, #1f2328);
|
|
231
|
-
background: var(--dsw-alias-bg-layer-1, transparent);
|
|
232
|
-
border: 1px solid var(--dsw-alias-border-l2, rgba(0, 0, 0, 0.12));
|
|
233
|
-
border-radius: 6px;
|
|
234
|
-
padding: 4px 8px;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
.searchInput:focus-visible {
|
|
238
|
-
outline: 2px solid var(--dsw-alias-brand-primary, #4d6bfe);
|
|
239
|
-
outline-offset: 0;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
.searchSubmit {
|
|
243
|
-
flex: none;
|
|
244
|
-
font-size: 12px;
|
|
245
|
-
font-family: inherit;
|
|
246
|
-
color: var(--dsw-alias-label-secondary, #57606a);
|
|
247
|
-
background: transparent;
|
|
248
|
-
border: 1px solid var(--dsw-alias-border-l1, rgba(0, 0, 0, 0.08));
|
|
249
|
-
border-radius: 6px;
|
|
250
|
-
padding: 3px 10px;
|
|
251
|
-
cursor: pointer;
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
.searchSubmit:hover {
|
|
255
|
-
color: var(--dsw-alias-label-primary, #1f2328);
|
|
256
|
-
border-color: var(--dsw-alias-border-l2, rgba(0, 0, 0, 0.12));
|
|
257
|
-
background: var(--dsw-alias-interactive-bg-hover, rgba(0, 0, 0, 0.04));
|
|
258
185
|
}
|
|
259
186
|
|
|
260
187
|
.projectChip {
|
|
261
188
|
align-self: flex-start;
|
|
262
|
-
font-size: 11px;
|
|
263
|
-
line-height: 18px;
|
|
264
|
-
padding: 0 8px;
|
|
265
|
-
border-radius: 999px;
|
|
266
|
-
color: var(--dsw-alias-label-secondary, #57606a);
|
|
267
|
-
background: var(--dsw-alias-bg-layer-2, rgba(0, 0, 0, 0.04));
|
|
268
|
-
border: 1px solid var(--dsw-alias-border-l1, rgba(0, 0, 0, 0.08));
|
|
269
189
|
}
|
|
270
190
|
|
|
271
191
|
.resultList {
|
|
@@ -278,24 +198,24 @@
|
|
|
278
198
|
.resultItem {
|
|
279
199
|
display: flex;
|
|
280
200
|
flex-direction: column;
|
|
201
|
+
align-items: stretch;
|
|
202
|
+
justify-content: flex-start;
|
|
281
203
|
gap: 3px;
|
|
204
|
+
height: auto;
|
|
282
205
|
min-width: 0;
|
|
283
|
-
font-family: inherit;
|
|
284
206
|
text-align: left;
|
|
285
207
|
padding: 6px 10px;
|
|
286
|
-
border-radius:
|
|
287
|
-
border: 1px solid var(--
|
|
288
|
-
background: var(--
|
|
289
|
-
cursor: pointer;
|
|
208
|
+
border-radius: var(--agsc-radius-control);
|
|
209
|
+
border: 1px solid var(--agsc-border);
|
|
210
|
+
background: var(--agsc-bg-raised);
|
|
290
211
|
}
|
|
291
212
|
|
|
292
213
|
.resultItem:hover {
|
|
293
|
-
border-color: var(--
|
|
294
|
-
background: var(--dsw-alias-interactive-bg-hover, rgba(0, 0, 0, 0.04));
|
|
214
|
+
border-color: var(--agsc-border-strong);
|
|
295
215
|
}
|
|
296
216
|
|
|
297
217
|
.resultItem:focus-visible {
|
|
298
|
-
outline: 2px solid var(--
|
|
218
|
+
outline: 2px solid var(--agsc-accent);
|
|
299
219
|
outline-offset: 1px;
|
|
300
220
|
}
|
|
301
221
|
|
|
@@ -310,12 +230,12 @@
|
|
|
310
230
|
flex: none;
|
|
311
231
|
font-size: 11px;
|
|
312
232
|
font-weight: 600;
|
|
313
|
-
color: var(--dsw-alias-label-secondary
|
|
233
|
+
color: var(--dsw-alias-label-secondary);
|
|
314
234
|
}
|
|
315
235
|
|
|
316
236
|
.resultTitle {
|
|
317
237
|
font-size: 12px;
|
|
318
|
-
color: var(--dsw-alias-label-primary
|
|
238
|
+
color: var(--dsw-alias-label-primary);
|
|
319
239
|
overflow: hidden;
|
|
320
240
|
text-overflow: ellipsis;
|
|
321
241
|
white-space: nowrap;
|
|
@@ -324,19 +244,10 @@
|
|
|
324
244
|
.matchTag {
|
|
325
245
|
flex: none;
|
|
326
246
|
margin-left: auto;
|
|
327
|
-
font-size: 11px;
|
|
328
|
-
line-height: 16px;
|
|
329
|
-
padding: 0 6px;
|
|
330
|
-
border-radius: 999px;
|
|
331
|
-
color: var(--dsw-alias-label-secondary, #57606a);
|
|
332
|
-
background: var(--dsw-alias-bg-layer-2, rgba(0, 0, 0, 0.04));
|
|
333
|
-
border: 1px solid var(--dsw-alias-border-l1, rgba(0, 0, 0, 0.08));
|
|
334
247
|
}
|
|
335
248
|
|
|
336
249
|
.matchTag[data-kind='full-text'] {
|
|
337
|
-
color: var(--
|
|
338
|
-
border-color: color-mix(in srgb, var(--dsw-alias-brand-primary, #4d6bfe) 32%, transparent);
|
|
339
|
-
background: transparent;
|
|
250
|
+
color: var(--agsc-accent);
|
|
340
251
|
}
|
|
341
252
|
|
|
342
253
|
.resultMeta {
|
|
@@ -345,7 +256,7 @@
|
|
|
345
256
|
gap: 8px;
|
|
346
257
|
min-width: 0;
|
|
347
258
|
font-size: 11px;
|
|
348
|
-
color: var(--dsw-alias-label-tertiary
|
|
259
|
+
color: var(--dsw-alias-label-tertiary);
|
|
349
260
|
}
|
|
350
261
|
|
|
351
262
|
.resultProject {
|
|
@@ -356,21 +267,21 @@
|
|
|
356
267
|
|
|
357
268
|
.resultId {
|
|
358
269
|
flex: none;
|
|
359
|
-
font-family:
|
|
270
|
+
font-family: var(--ds-font-family-code);
|
|
360
271
|
}
|
|
361
272
|
|
|
362
273
|
.snippet {
|
|
363
274
|
font-size: 12px;
|
|
364
275
|
line-height: 18px;
|
|
365
|
-
color: var(--dsw-alias-label-secondary
|
|
276
|
+
color: var(--dsw-alias-label-secondary);
|
|
366
277
|
overflow: hidden;
|
|
367
278
|
text-overflow: ellipsis;
|
|
368
279
|
white-space: nowrap;
|
|
369
280
|
}
|
|
370
281
|
|
|
371
282
|
.snippetMark {
|
|
372
|
-
color: var(--
|
|
373
|
-
background: color-mix(in srgb, var(--
|
|
283
|
+
color: var(--agsc-accent);
|
|
284
|
+
background: color-mix(in srgb, var(--agsc-accent) 12%, transparent);
|
|
374
285
|
border-radius: 2px;
|
|
375
286
|
font-weight: 600;
|
|
376
287
|
}
|
|
@@ -1,90 +1,55 @@
|
|
|
1
|
-
|
|
2
|
-
* Centralized user-facing strings for the dsh deep-query tools (design
|
|
3
|
-
* §5.1 view 2 dsh 会话专属区: lineage tree / provenance jump / full-text
|
|
4
|
-
* search; §5.3 honest degradation wording).
|
|
5
|
-
*
|
|
6
|
-
* Deliberately a MODULE-LOCAL table (task T5.4 constraint): the main
|
|
7
|
-
* locale table (client/locales) and test/locales.test.ts are untouched —
|
|
8
|
-
* S7 merges this table into the locale registry in one move. Chinese is
|
|
9
|
-
* the primary UI language, same posture as board/strings.ts. Templates
|
|
10
|
-
* use `{name}` placeholders resolved by `formatTemplate` in logic.ts.
|
|
11
|
-
*
|
|
12
|
-
* Pure data module: no imports, no logic.
|
|
13
|
-
*
|
|
14
|
-
* @module
|
|
15
|
-
*/
|
|
1
|
+
import { createLocaleView } from '../locales/view.ts'
|
|
16
2
|
|
|
17
|
-
|
|
18
|
-
|
|
3
|
+
/** Dynamic dsh-tools vocabulary; templates are interpolated by `formatTemplate`. */
|
|
4
|
+
export const DSH_TOOLS_STRINGS = createLocaleView({
|
|
19
5
|
lineage: {
|
|
20
|
-
title: '
|
|
21
|
-
loading: '
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
currentBadge: '当前会话',
|
|
28
|
-
/** Badge on records live in this dsh process. */
|
|
29
|
-
liveBadge: '运行中',
|
|
30
|
-
/** Badge on records the trace knows but dsh has not persisted. */
|
|
31
|
-
notPersistedBadge: '未持久化',
|
|
32
|
-
/** Role labels for tree rows. */
|
|
6
|
+
title: 'dshtools.lineage.title',
|
|
7
|
+
loading: 'dshtools.lineage.loading',
|
|
8
|
+
error: 'dshtools.lineage.error',
|
|
9
|
+
empty: 'dshtools.lineage.empty',
|
|
10
|
+
currentBadge: 'dshtools.lineage.currentBadge',
|
|
11
|
+
liveBadge: 'dshtools.lineage.liveBadge',
|
|
12
|
+
notPersistedBadge: 'dshtools.lineage.notPersistedBadge',
|
|
33
13
|
role: {
|
|
34
|
-
ancestor: '
|
|
35
|
-
target: '
|
|
36
|
-
descendant: '
|
|
14
|
+
ancestor: 'dshtools.lineage.role.ancestor',
|
|
15
|
+
target: 'dshtools.lineage.role.target',
|
|
16
|
+
descendant: 'dshtools.lineage.role.descendant',
|
|
37
17
|
},
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
/** trace.complete === false with a known unresolved parent id. */
|
|
46
|
-
incompleteWithId: '谱系不完整:父会话 {id} 无法解析',
|
|
47
|
-
/** trace.complete === false without an unresolved parent id. */
|
|
48
|
-
incomplete: '谱系不完整:部分父链无法解析',
|
|
49
|
-
/** Degradation cards — available:false is data, not an error (§4.e.4). */
|
|
18
|
+
jumpTitle: 'dshtools.lineage.jumpTitle',
|
|
19
|
+
currentTitle: 'dshtools.lineage.currentTitle',
|
|
20
|
+
expand: 'dshtools.lineage.expand',
|
|
21
|
+
collapse: 'dshtools.lineage.collapse',
|
|
22
|
+
nodeCount: 'dshtools.lineage.nodeCount',
|
|
23
|
+
incompleteWithId: 'dshtools.lineage.incompleteWithId',
|
|
24
|
+
incomplete: 'dshtools.lineage.incomplete',
|
|
50
25
|
degrade: {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
traceFailedTitle: '谱系追溯失败',
|
|
60
|
-
traceFailedBody: 'dsh 无法解析该会话的谱系。',
|
|
61
|
-
/** Any reason outside the known vocabulary (never invent a state). */
|
|
62
|
-
unknownTitle: '谱系不可用',
|
|
63
|
-
unknownBody: '后端报告谱系不可用(原因: {reason})。',
|
|
26
|
+
notDshTitle: 'dshtools.lineage.degrade.notDshTitle',
|
|
27
|
+
notDshBody: 'dshtools.lineage.degrade.notDshBody',
|
|
28
|
+
queryUnavailableTitle: 'dshtools.lineage.degrade.queryUnavailableTitle',
|
|
29
|
+
queryUnavailableBody: 'dshtools.lineage.degrade.queryUnavailableBody',
|
|
30
|
+
traceFailedTitle: 'dshtools.lineage.degrade.traceFailedTitle',
|
|
31
|
+
traceFailedBody: 'dshtools.lineage.degrade.traceFailedBody',
|
|
32
|
+
unknownTitle: 'dshtools.lineage.degrade.unknownTitle',
|
|
33
|
+
unknownBody: 'dshtools.lineage.degrade.unknownBody',
|
|
64
34
|
},
|
|
65
35
|
},
|
|
66
|
-
/** Cross-agent search panel (dsh 全文检索 + 降级过滤). */
|
|
67
36
|
search: {
|
|
68
|
-
title: '
|
|
69
|
-
placeholder: '
|
|
70
|
-
submit: '
|
|
71
|
-
loading: '
|
|
72
|
-
error: '
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
filterOnlyNotice: 'dsh 全文检索不可用,已降级为标题/项目过滤',
|
|
77
|
-
/** Active project-filter chip. */
|
|
78
|
-
projectFilter: '项目过滤: {project}',
|
|
79
|
-
/** matchedBy tags on result rows. */
|
|
37
|
+
title: 'dshtools.search.title',
|
|
38
|
+
placeholder: 'dshtools.search.placeholder',
|
|
39
|
+
submit: 'dshtools.search.submit',
|
|
40
|
+
loading: 'dshtools.search.loading',
|
|
41
|
+
error: 'dshtools.search.error',
|
|
42
|
+
empty: 'dshtools.search.empty',
|
|
43
|
+
filterOnlyNotice: 'dshtools.search.filterOnlyNotice',
|
|
44
|
+
projectFilter: 'dshtools.search.projectFilter',
|
|
80
45
|
matchedBy: {
|
|
81
|
-
'full-text': '
|
|
82
|
-
title: '
|
|
83
|
-
project: '
|
|
84
|
-
other: '
|
|
46
|
+
'full-text': 'dshtools.search.matchedBy.full-text',
|
|
47
|
+
title: 'dshtools.search.matchedBy.title',
|
|
48
|
+
project: 'dshtools.search.matchedBy.project',
|
|
49
|
+
other: 'dshtools.search.matchedBy.other',
|
|
85
50
|
},
|
|
86
|
-
untitled: '
|
|
51
|
+
untitled: 'dshtools.search.untitled',
|
|
87
52
|
},
|
|
88
|
-
} as const
|
|
53
|
+
} as const)
|
|
89
54
|
|
|
90
55
|
export type DshToolsStrings = typeof DSH_TOOLS_STRINGS
|