@shendeguize/dsh-agent-sidecar 0.1.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.
Files changed (68) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +167 -0
  3. package/cordis.patch.yml +10 -0
  4. package/lib/client.js +8062 -0
  5. package/lib/client.js.map +1 -0
  6. package/lib/index.d.ts +396 -0
  7. package/lib/index.js +4166 -0
  8. package/package.json +101 -0
  9. package/src/analysis.ts +782 -0
  10. package/src/bridge.ts +841 -0
  11. package/src/client/analysis/AnalysisPanel.tsx +191 -0
  12. package/src/client/analysis/analysis.module.css +183 -0
  13. package/src/client/analysis-glue.ts +331 -0
  14. package/src/client/api.ts +380 -0
  15. package/src/client/board/Board.tsx +214 -0
  16. package/src/client/board/board.module.css +302 -0
  17. package/src/client/board/logic.ts +556 -0
  18. package/src/client/board/project-view-logic.ts +361 -0
  19. package/src/client/board/project-view.module.css +307 -0
  20. package/src/client/board/project-view.tsx +189 -0
  21. package/src/client/board/strings.ts +112 -0
  22. package/src/client/commands.ts +484 -0
  23. package/src/client/controller.ts +360 -0
  24. package/src/client/css-modules.d.ts +11 -0
  25. package/src/client/detail/SessionDetail.tsx +270 -0
  26. package/src/client/detail/detail.module.css +433 -0
  27. package/src/client/detail/logic.ts +779 -0
  28. package/src/client/detail/strings.ts +98 -0
  29. package/src/client/detail/transport.ts +175 -0
  30. package/src/client/detail-glue.ts +397 -0
  31. package/src/client/detail-view.module.css +79 -0
  32. package/src/client/detail-view.tsx +233 -0
  33. package/src/client/dsh-tools/LineageTree.tsx +210 -0
  34. package/src/client/dsh-tools/SearchPanel.tsx +169 -0
  35. package/src/client/dsh-tools/dsh-tools.module.css +374 -0
  36. package/src/client/dsh-tools/logic.ts +596 -0
  37. package/src/client/dsh-tools/strings.ts +90 -0
  38. package/src/client/index.ts +315 -0
  39. package/src/client/inject/InjectPanel.tsx +482 -0
  40. package/src/client/inject/inject.module.css +446 -0
  41. package/src/client/inject/logic.ts +516 -0
  42. package/src/client/inject/overlay.module.css +22 -0
  43. package/src/client/inject-glue.ts +171 -0
  44. package/src/client/locales/command.ts +48 -0
  45. package/src/client/locales/en.ts +385 -0
  46. package/src/client/locales/index.ts +123 -0
  47. package/src/client/locales/zh.ts +402 -0
  48. package/src/client/m3-transport.ts +151 -0
  49. package/src/client/mount.tsx +307 -0
  50. package/src/client/project-glue.ts +134 -0
  51. package/src/client/search-glue.ts +143 -0
  52. package/src/client/settings-card.module.css +359 -0
  53. package/src/client/settings-card.tsx +565 -0
  54. package/src/client/settings-glue.ts +130 -0
  55. package/src/client/sidebar-tab.tsx +494 -0
  56. package/src/client/sse.ts +366 -0
  57. package/src/client/widget.tsx +80 -0
  58. package/src/config.ts +193 -0
  59. package/src/dsh-inject.ts +240 -0
  60. package/src/fusion.ts +988 -0
  61. package/src/guard.ts +274 -0
  62. package/src/index.ts +950 -0
  63. package/src/inject-gateway.ts +574 -0
  64. package/src/routes.ts +1133 -0
  65. package/src/send-cli.ts +340 -0
  66. package/src/session-store.ts +184 -0
  67. package/src/skills-provider.ts +293 -0
  68. package/src/supervisor.ts +463 -0
@@ -0,0 +1,446 @@
1
+ /* Inject panel (design §5.1 view 3). Every color rides a dsh --dsw-alias-*
2
+ * design token, no literal colors — same discipline as the settings card.
3
+ * The confirm-injection button is the one danger affordance: eye-catching
4
+ * (error-toned border/text, filled on hover) but restrained (no permanent
5
+ * solid red block). */
6
+
7
+ .panel {
8
+ border: 1px solid var(--dsw-alias-border-l2);
9
+ border-radius: 12px;
10
+ background: var(--dsw-alias-bg-layer-2);
11
+ max-width: 560px;
12
+ display: flex;
13
+ flex-direction: column;
14
+ }
15
+
16
+ /* ── header ────────────────────────────────────────────────────────────── */
17
+
18
+ .header {
19
+ display: flex;
20
+ align-items: center;
21
+ gap: 12px;
22
+ padding: 14px 16px 10px;
23
+ border-bottom: 1px solid var(--dsw-alias-border-l2);
24
+ }
25
+
26
+ .title {
27
+ flex: 1;
28
+ min-width: 0;
29
+ margin: 0;
30
+ font-size: 15px;
31
+ font-weight: 600;
32
+ line-height: 1.4;
33
+ color: var(--dsw-alias-label-primary);
34
+ }
35
+
36
+ /* ── body ──────────────────────────────────────────────────────────────── */
37
+
38
+ .body {
39
+ display: flex;
40
+ flex-direction: column;
41
+ gap: 10px;
42
+ padding: 12px 16px 14px;
43
+ }
44
+
45
+ .capabilityOff {
46
+ margin: 0;
47
+ border-radius: 8px;
48
+ padding: 10px 12px;
49
+ font-size: 13px;
50
+ line-height: 1.6;
51
+ background: var(--dsw-alias-bg-module-platform);
52
+ color: var(--dsw-alias-label-secondary);
53
+ }
54
+
55
+ /* ── notices (editor banners after a failed/expired attempt) ───────────── */
56
+
57
+ .noticeWarn,
58
+ .noticeError {
59
+ margin: 0;
60
+ border-radius: 8px;
61
+ padding: 8px 10px;
62
+ font-size: 12px;
63
+ line-height: 1.6;
64
+ background: var(--dsw-alias-bg-module-platform);
65
+ color: var(--dsw-alias-label-secondary);
66
+ }
67
+
68
+ .noticeError {
69
+ border: 1px solid var(--dsw-alias-label-error);
70
+ color: var(--dsw-alias-label-error);
71
+ }
72
+
73
+ .noticeDetail {
74
+ color: var(--dsw-alias-label-tertiary);
75
+ }
76
+
77
+ /* ── target row ────────────────────────────────────────────────────────── */
78
+
79
+ .targetRow {
80
+ display: flex;
81
+ align-items: baseline;
82
+ gap: 10px;
83
+ min-width: 0;
84
+ }
85
+
86
+ .noTarget {
87
+ font-size: 12px;
88
+ line-height: 1.5;
89
+ color: var(--dsw-alias-label-tertiary);
90
+ }
91
+
92
+ .agentTag {
93
+ flex: none;
94
+ border-radius: 999px;
95
+ padding: 1px 8px;
96
+ font-size: 11px;
97
+ line-height: 17px;
98
+ font-weight: 500;
99
+ background: var(--dsw-alias-bg-module-platform);
100
+ color: var(--dsw-alias-label-secondary);
101
+ }
102
+
103
+ .planTitle {
104
+ min-width: 0;
105
+ overflow: hidden;
106
+ text-overflow: ellipsis;
107
+ white-space: nowrap;
108
+ font-size: 13px;
109
+ line-height: 1.5;
110
+ color: var(--dsw-alias-label-primary);
111
+ }
112
+
113
+ /* ── editor field ──────────────────────────────────────────────────────── */
114
+
115
+ .field {
116
+ display: flex;
117
+ flex-direction: column;
118
+ gap: 6px;
119
+ }
120
+
121
+ .label {
122
+ font-size: 13px;
123
+ line-height: 1.5;
124
+ color: var(--dsw-alias-label-primary);
125
+ }
126
+
127
+ .textarea {
128
+ appearance: none;
129
+ resize: vertical;
130
+ min-height: 96px;
131
+ border: 1px solid var(--dsw-alias-border-l2);
132
+ border-radius: 8px;
133
+ background: var(--dsw-alias-bg-layer-3);
134
+ padding: 8px 10px;
135
+ font: inherit;
136
+ font-size: 13px;
137
+ line-height: 1.6;
138
+ color: var(--dsw-alias-label-primary);
139
+ }
140
+
141
+ .textarea:focus-visible {
142
+ outline: none;
143
+ border-color: var(--dsw-alias-brand-primary);
144
+ }
145
+
146
+ .textarea::placeholder {
147
+ color: var(--dsw-alias-label-tertiary);
148
+ }
149
+
150
+ .textarea:disabled {
151
+ opacity: 0.5;
152
+ cursor: default;
153
+ }
154
+
155
+ /* Byte counter: thin progress track + numeric readout. */
156
+ .byteRow {
157
+ display: flex;
158
+ align-items: center;
159
+ gap: 10px;
160
+ }
161
+
162
+ .byteBar {
163
+ flex: 1;
164
+ height: 3px;
165
+ border-radius: 2px;
166
+ background: var(--dsw-alias-bg-module-platform);
167
+ overflow: hidden;
168
+ }
169
+
170
+ .byteFill {
171
+ height: 100%;
172
+ border-radius: 2px;
173
+ background: var(--dsw-alias-brand-primary);
174
+ transition: width .12s;
175
+ }
176
+
177
+ /* Modifier applied ALONGSIDE .byteFill (no `composes`; see settings card). */
178
+ .byteFillOver {
179
+ background: var(--dsw-alias-label-error);
180
+ }
181
+
182
+ .byteText,
183
+ .byteTextOver {
184
+ flex: none;
185
+ font-size: 11px;
186
+ line-height: 1.5;
187
+ font-variant-numeric: tabular-nums;
188
+ color: var(--dsw-alias-label-tertiary);
189
+ }
190
+
191
+ .byteTextOver {
192
+ color: var(--dsw-alias-label-error);
193
+ }
194
+
195
+ .invalid {
196
+ margin: 0;
197
+ font-size: 12px;
198
+ line-height: 1.5;
199
+ color: var(--dsw-alias-label-error);
200
+ }
201
+
202
+ /* ── mode radios ───────────────────────────────────────────────────────── */
203
+
204
+ .modes {
205
+ margin: 0;
206
+ border: 0;
207
+ padding: 0;
208
+ display: flex;
209
+ flex-direction: column;
210
+ gap: 8px;
211
+ }
212
+
213
+ .modeOption {
214
+ display: flex;
215
+ align-items: flex-start;
216
+ gap: 10px;
217
+ cursor: pointer;
218
+ }
219
+
220
+ .modeOption input {
221
+ accent-color: var(--dsw-alias-brand-primary);
222
+ width: 14px;
223
+ height: 14px;
224
+ margin: 3px 0 0;
225
+ cursor: pointer;
226
+ }
227
+
228
+ .modeOption input:disabled {
229
+ cursor: default;
230
+ }
231
+
232
+ .modeText {
233
+ display: flex;
234
+ flex-direction: column;
235
+ gap: 2px;
236
+ min-width: 0;
237
+ }
238
+
239
+ .modeLabel {
240
+ font-size: 13px;
241
+ line-height: 1.5;
242
+ color: var(--dsw-alias-label-primary);
243
+ }
244
+
245
+ .modeHint {
246
+ font-size: 12px;
247
+ line-height: 1.5;
248
+ color: var(--dsw-alias-label-tertiary);
249
+ }
250
+
251
+ /* ── warnings & audit note ─────────────────────────────────────────────── */
252
+
253
+ .warnBar {
254
+ margin: 0;
255
+ border: 1px solid var(--dsw-alias-label-error);
256
+ border-radius: 8px;
257
+ padding: 8px 10px;
258
+ font-size: 12px;
259
+ line-height: 1.6;
260
+ background: var(--dsw-alias-bg-module-platform);
261
+ color: var(--dsw-alias-label-error);
262
+ }
263
+
264
+ .auditNote {
265
+ margin: 0;
266
+ border-radius: 8px;
267
+ padding: 8px 10px;
268
+ font-size: 12px;
269
+ line-height: 1.6;
270
+ background: var(--dsw-alias-bg-module-platform);
271
+ color: var(--dsw-alias-label-secondary);
272
+ }
273
+
274
+ /* ── confirm plan ──────────────────────────────────────────────────────── */
275
+
276
+ .planBox {
277
+ border: 1px solid var(--dsw-alias-border-l2);
278
+ border-radius: 8px;
279
+ background: var(--dsw-alias-bg-layer-3);
280
+ padding: 10px 12px;
281
+ display: flex;
282
+ flex-direction: column;
283
+ gap: 6px;
284
+ }
285
+
286
+ .planRow {
287
+ display: flex;
288
+ align-items: baseline;
289
+ gap: 10px;
290
+ min-width: 0;
291
+ }
292
+
293
+ .planKey {
294
+ flex: none;
295
+ font-size: 12px;
296
+ line-height: 1.5;
297
+ color: var(--dsw-alias-label-tertiary);
298
+ }
299
+
300
+ .planValue {
301
+ display: flex;
302
+ align-items: baseline;
303
+ gap: 8px;
304
+ min-width: 0;
305
+ font-size: 13px;
306
+ line-height: 1.5;
307
+ color: var(--dsw-alias-label-primary);
308
+ }
309
+
310
+ .observedNote {
311
+ margin: 0;
312
+ font-size: 11px;
313
+ line-height: 1.5;
314
+ color: var(--dsw-alias-label-tertiary);
315
+ }
316
+
317
+ .planPreview {
318
+ display: flex;
319
+ flex-direction: column;
320
+ gap: 4px;
321
+ min-width: 0;
322
+ }
323
+
324
+ .preview {
325
+ margin: 0;
326
+ border: 1px solid var(--dsw-alias-border-l2);
327
+ border-radius: 6px;
328
+ background: var(--dsw-alias-bg-layer-2);
329
+ padding: 8px 10px;
330
+ max-height: 120px;
331
+ overflow: auto;
332
+ font-size: 12px;
333
+ line-height: 1.6;
334
+ white-space: pre-wrap;
335
+ word-break: break-word;
336
+ color: var(--dsw-alias-label-secondary);
337
+ }
338
+
339
+ .countdown {
340
+ margin: 0;
341
+ font-size: 12px;
342
+ line-height: 1.5;
343
+ font-variant-numeric: tabular-nums;
344
+ color: var(--dsw-alias-label-secondary);
345
+ }
346
+
347
+ /* ── results ───────────────────────────────────────────────────────────── */
348
+
349
+ .resultOk,
350
+ .resultFail,
351
+ .resultUnknown {
352
+ margin: 0;
353
+ border-radius: 8px;
354
+ padding: 10px 12px;
355
+ font-size: 13px;
356
+ line-height: 1.6;
357
+ background: var(--dsw-alias-bg-module-platform);
358
+ color: var(--dsw-alias-label-primary);
359
+ }
360
+
361
+ .resultOk {
362
+ border: 1px solid var(--dsw-alias-brand-primary);
363
+ }
364
+
365
+ .resultFail {
366
+ border: 1px solid var(--dsw-alias-label-error);
367
+ color: var(--dsw-alias-label-error);
368
+ }
369
+
370
+ .resultUnknown {
371
+ border: 1px solid var(--dsw-alias-label-dimmed);
372
+ color: var(--dsw-alias-label-secondary);
373
+ }
374
+
375
+ .resultDetail {
376
+ margin: 0;
377
+ font-size: 12px;
378
+ line-height: 1.6;
379
+ color: var(--dsw-alias-label-tertiary);
380
+ }
381
+
382
+ /* ── footer buttons ────────────────────────────────────────────────────── */
383
+
384
+ .footer {
385
+ display: flex;
386
+ align-items: center;
387
+ justify-content: flex-end;
388
+ gap: 8px;
389
+ padding-top: 4px;
390
+ }
391
+
392
+ .btn,
393
+ .btnPrimary,
394
+ .btnDanger {
395
+ appearance: none;
396
+ border: 1px solid transparent;
397
+ border-radius: 8px;
398
+ padding: 5px 14px;
399
+ font: inherit;
400
+ font-size: 13px;
401
+ line-height: 1.5;
402
+ cursor: pointer;
403
+ }
404
+
405
+ .btn {
406
+ border-color: var(--dsw-alias-border-l2);
407
+ background: none;
408
+ color: var(--dsw-alias-label-secondary);
409
+ }
410
+
411
+ .btn:hover:not(:disabled) {
412
+ color: var(--dsw-alias-label-primary);
413
+ border-color: var(--dsw-alias-label-dimmed);
414
+ }
415
+
416
+ .btnPrimary {
417
+ background: var(--dsw-alias-label-primary);
418
+ color: var(--dsw-alias-bg-layer-3);
419
+ }
420
+
421
+ /* The danger action: outlined error tone at rest, fills on hover. */
422
+ .btnDanger {
423
+ border-color: var(--dsw-alias-label-error);
424
+ background: none;
425
+ color: var(--dsw-alias-label-error);
426
+ font-weight: 600;
427
+ }
428
+
429
+ .btnDanger:hover:not(:disabled) {
430
+ background: var(--dsw-alias-label-error);
431
+ color: var(--dsw-alias-bg-layer-3);
432
+ }
433
+
434
+ .btn:disabled,
435
+ .btnPrimary:disabled,
436
+ .btnDanger:disabled {
437
+ opacity: 0.4;
438
+ cursor: default;
439
+ }
440
+
441
+ .btn:focus-visible,
442
+ .btnPrimary:focus-visible,
443
+ .btnDanger:focus-visible {
444
+ outline: 2px solid var(--dsw-alias-brand-primary);
445
+ outline-offset: 1px;
446
+ }