@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,302 @@
1
+ /*
2
+ * Board styles (design §5.4): every color rides a --dsw-alias-* design
3
+ * token with a neutral fallback — no theme colors are hardcoded as the
4
+ * only value. Layout follows the dsh-project-kanban blueprint (flex top
5
+ * bar, grouped sections, auto-fill card grid).
6
+ */
7
+
8
+ .root {
9
+ display: flex;
10
+ flex-direction: column;
11
+ gap: 12px;
12
+ height: 100%;
13
+ min-height: 420px;
14
+ padding: 16px 20px;
15
+ box-sizing: border-box;
16
+ overflow-y: auto;
17
+ color: var(--dsw-alias-label-primary, #1f2328);
18
+ background: var(--dsw-alias-bg-base, transparent);
19
+ }
20
+
21
+ /* ------------------------------------------------------------- top bar */
22
+
23
+ .topbar {
24
+ display: flex;
25
+ align-items: center;
26
+ gap: 10px;
27
+ flex-wrap: wrap;
28
+ }
29
+
30
+ .title {
31
+ font-size: 15px;
32
+ font-weight: 650;
33
+ color: var(--dsw-alias-label-primary, #1f2328);
34
+ margin-right: 2px;
35
+ }
36
+
37
+ .badge {
38
+ display: inline-flex;
39
+ align-items: center;
40
+ gap: 5px;
41
+ font-size: 12px;
42
+ line-height: 20px;
43
+ padding: 0 8px;
44
+ border-radius: 999px;
45
+ border: 1px solid var(--dsw-alias-border-l1, rgba(0, 0, 0, 0.08));
46
+ background: var(--dsw-alias-bg-layer-1, rgba(0, 0, 0, 0.03));
47
+ color: var(--dsw-alias-label-secondary, #57606a);
48
+ white-space: nowrap;
49
+ }
50
+
51
+ .dot {
52
+ width: 8px;
53
+ height: 8px;
54
+ border-radius: 50%;
55
+ flex: none;
56
+ background: var(--dsw-alias-label-tertiary, #6e7781);
57
+ }
58
+
59
+ .dot[data-tone='success'] {
60
+ background: var(--dsw-alias-state-success-primary, #1a7f37);
61
+ }
62
+
63
+ .dot[data-tone='warn'] {
64
+ background: var(--dsw-alias-state-warn-primary, #9a6700);
65
+ }
66
+
67
+ .dot[data-tone='danger'] {
68
+ background: var(--dsw-alias-state-error-primary, #cf222e);
69
+ }
70
+
71
+ .dot[data-tone='neutral'] {
72
+ background: var(--dsw-alias-label-tertiary, #6e7781);
73
+ }
74
+
75
+ .dot[data-tone='muted'] {
76
+ background: var(--dsw-alias-label-dimmed, #8c959f);
77
+ }
78
+
79
+ .spacer {
80
+ flex: 1;
81
+ }
82
+
83
+ .control {
84
+ display: inline-flex;
85
+ align-items: center;
86
+ gap: 5px;
87
+ font-size: 12px;
88
+ color: var(--dsw-alias-label-secondary, #57606a);
89
+ white-space: nowrap;
90
+ }
91
+
92
+ .select {
93
+ font-size: 12px;
94
+ font-family: inherit;
95
+ color: var(--dsw-alias-label-primary, #1f2328);
96
+ background: var(--dsw-alias-bg-layer-1, transparent);
97
+ border: 1px solid var(--dsw-alias-border-l2, rgba(0, 0, 0, 0.12));
98
+ border-radius: 6px;
99
+ padding: 2px 6px;
100
+ }
101
+
102
+ .checkbox {
103
+ accent-color: var(--dsw-alias-brand-primary, #4d6bfe);
104
+ margin: 0;
105
+ }
106
+
107
+ .refresh {
108
+ font-size: 12px;
109
+ font-family: inherit;
110
+ color: var(--dsw-alias-label-secondary, #57606a);
111
+ background: transparent;
112
+ border: 1px solid var(--dsw-alias-border-l1, rgba(0, 0, 0, 0.08));
113
+ border-radius: 6px;
114
+ padding: 2px 10px;
115
+ cursor: pointer;
116
+ }
117
+
118
+ .refresh:hover {
119
+ color: var(--dsw-alias-label-primary, #1f2328);
120
+ border-color: var(--dsw-alias-border-l2, rgba(0, 0, 0, 0.12));
121
+ background: var(--dsw-alias-interactive-bg-hover, rgba(0, 0, 0, 0.04));
122
+ }
123
+
124
+ /* -------------------------------------------------------------- banner */
125
+
126
+ .banner {
127
+ font-size: 12px;
128
+ line-height: 18px;
129
+ padding: 6px 10px;
130
+ border-radius: 8px;
131
+ border: 1px solid var(--dsw-alias-border-l1, rgba(0, 0, 0, 0.08));
132
+ }
133
+
134
+ .banner[data-tone='warn'] {
135
+ color: var(--dsw-alias-state-warn-label, var(--dsw-alias-state-warn-primary, #9a6700));
136
+ background: var(--dsw-alias-state-warn-tertiary, rgba(154, 103, 0, 0.08));
137
+ border-color: var(--dsw-alias-state-warn-secondary, rgba(154, 103, 0, 0.24));
138
+ }
139
+
140
+ .banner[data-tone='danger'] {
141
+ color: var(--dsw-alias-state-error-primary, #cf222e);
142
+ background: var(--dsw-alias-state-error-secondary, rgba(207, 34, 46, 0.08));
143
+ border-color: var(--dsw-alias-state-error-secondary, rgba(207, 34, 46, 0.24));
144
+ }
145
+
146
+ /* -------------------------------------------------------- empty states */
147
+
148
+ .empty {
149
+ display: flex;
150
+ flex-direction: column;
151
+ align-items: center;
152
+ justify-content: center;
153
+ gap: 6px;
154
+ flex: 1;
155
+ min-height: 180px;
156
+ text-align: center;
157
+ padding: 24px;
158
+ }
159
+
160
+ .emptyTitle {
161
+ font-size: 14px;
162
+ font-weight: 600;
163
+ color: var(--dsw-alias-label-primary, #1f2328);
164
+ }
165
+
166
+ .emptyHint {
167
+ font-size: 12px;
168
+ max-width: 420px;
169
+ line-height: 20px;
170
+ color: var(--dsw-alias-label-secondary, #57606a);
171
+ }
172
+
173
+ /* -------------------------------------------------------- group blocks */
174
+
175
+ .group {
176
+ display: flex;
177
+ flex-direction: column;
178
+ gap: 8px;
179
+ }
180
+
181
+ .groupHead {
182
+ display: flex;
183
+ align-items: baseline;
184
+ gap: 8px;
185
+ min-width: 0;
186
+ }
187
+
188
+ .groupName {
189
+ font-size: 13px;
190
+ font-weight: 600;
191
+ color: var(--dsw-alias-label-primary, #1f2328);
192
+ overflow: hidden;
193
+ text-overflow: ellipsis;
194
+ white-space: nowrap;
195
+ }
196
+
197
+ .groupCount {
198
+ font-size: 11px;
199
+ flex: none;
200
+ color: var(--dsw-alias-label-secondary, #57606a);
201
+ background: var(--dsw-alias-bg-layer-2, rgba(0, 0, 0, 0.04));
202
+ border-radius: 999px;
203
+ padding: 0 8px;
204
+ line-height: 18px;
205
+ }
206
+
207
+ .grid {
208
+ display: grid;
209
+ grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
210
+ gap: 8px;
211
+ }
212
+
213
+ /* --------------------------------------------------------------- cards */
214
+
215
+ .card {
216
+ display: flex;
217
+ flex-direction: column;
218
+ gap: 6px;
219
+ text-align: left;
220
+ font-family: inherit;
221
+ min-width: 0;
222
+ padding: 10px 12px;
223
+ border-radius: 8px;
224
+ border: 1px solid var(--dsw-alias-border-l1, rgba(0, 0, 0, 0.08));
225
+ background: var(--dsw-alias-bg-layer-1, rgba(0, 0, 0, 0.02));
226
+ cursor: pointer;
227
+ }
228
+
229
+ .card:hover {
230
+ border-color: var(--dsw-alias-border-l2, rgba(0, 0, 0, 0.12));
231
+ background: var(--dsw-alias-interactive-bg-hover, rgba(0, 0, 0, 0.04));
232
+ }
233
+
234
+ .card:focus-visible {
235
+ outline: 2px solid var(--dsw-alias-brand-primary, #4d6bfe);
236
+ outline-offset: 1px;
237
+ }
238
+
239
+ .cardHead {
240
+ display: flex;
241
+ align-items: center;
242
+ justify-content: space-between;
243
+ gap: 8px;
244
+ min-width: 0;
245
+ }
246
+
247
+ .agent {
248
+ display: inline-flex;
249
+ align-items: center;
250
+ gap: 5px;
251
+ font-size: 12px;
252
+ font-weight: 600;
253
+ min-width: 0;
254
+ overflow: hidden;
255
+ text-overflow: ellipsis;
256
+ white-space: nowrap;
257
+ color: var(--dsw-alias-label-primary, #1f2328);
258
+ }
259
+
260
+ .glyph {
261
+ flex: none;
262
+ color: var(--dsw-alias-brand-primary, #4d6bfe);
263
+ }
264
+
265
+ .attention {
266
+ font-size: 11px;
267
+ color: var(--dsw-alias-state-warn-primary, #9a6700);
268
+ }
269
+
270
+ .attention[data-kind='gap'] {
271
+ color: var(--dsw-alias-state-error-primary, #cf222e);
272
+ }
273
+
274
+ .cardTitle {
275
+ font-size: 13px;
276
+ color: var(--dsw-alias-label-primary, #1f2328);
277
+ overflow: hidden;
278
+ text-overflow: ellipsis;
279
+ white-space: nowrap;
280
+ }
281
+
282
+ .cardId {
283
+ font-size: 11px;
284
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
285
+ color: var(--dsw-alias-label-tertiary, #6e7781);
286
+ overflow: hidden;
287
+ text-overflow: ellipsis;
288
+ white-space: nowrap;
289
+ }
290
+
291
+ .cardEvent {
292
+ font-size: 12px;
293
+ color: var(--dsw-alias-label-secondary, #57606a);
294
+ overflow: hidden;
295
+ text-overflow: ellipsis;
296
+ white-space: nowrap;
297
+ }
298
+
299
+ .cardTime {
300
+ font-size: 11px;
301
+ color: var(--dsw-alias-label-caption, var(--dsw-alias-label-tertiary, #6e7781));
302
+ }