@sayknow-cli/coding-agent 0.5.2 → 0.5.8

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 (94) hide show
  1. package/CHANGELOG.md +66 -16
  2. package/dist/types/cli/update-cli.d.ts +8 -1
  3. package/dist/types/config/atomic-yaml-patch.d.ts +20 -1
  4. package/dist/types/config/keybindings.d.ts +10 -0
  5. package/dist/types/config/model-registry.d.ts +1 -1
  6. package/dist/types/config/models-config-schema.d.ts +4 -0
  7. package/dist/types/config/settings-schema.d.ts +73 -0
  8. package/dist/types/dap/client.d.ts +1 -0
  9. package/dist/types/lsp/client.d.ts +5 -0
  10. package/dist/types/modes/components/welcome.d.ts +1 -0
  11. package/dist/types/modes/controllers/selector-controller.d.ts +3 -1
  12. package/dist/types/modes/interactive-mode.d.ts +13 -1
  13. package/dist/types/modes/types.d.ts +7 -1
  14. package/dist/types/runtime-mcp/transports/stdio.d.ts +2 -0
  15. package/dist/types/session/agent-session.d.ts +8 -0
  16. package/dist/types/session/internal/managed-session-scope.d.ts +3 -1
  17. package/dist/types/session/internal/managed-session-storage.d.ts +2 -0
  18. package/dist/types/session/session-manager.d.ts +9 -0
  19. package/dist/types/session/session-storage.d.ts +17 -0
  20. package/dist/types/session-import/claude.d.ts +26 -0
  21. package/dist/types/session-import/codex.d.ts +22 -0
  22. package/dist/types/session-import/command.d.ts +20 -0
  23. package/dist/types/session-import/detect.d.ts +22 -0
  24. package/dist/types/session-import/index.d.ts +7 -0
  25. package/dist/types/session-import/redact.d.ts +23 -0
  26. package/dist/types/session-import/service.d.ts +28 -0
  27. package/dist/types/session-import/types.d.ts +125 -0
  28. package/dist/types/skc-runtime/launch-worktree.d.ts +17 -1
  29. package/dist/types/slash-commands/builtin-registry.d.ts +4 -0
  30. package/dist/types/slash-commands/types.d.ts +5 -0
  31. package/dist/types/system-prompt.d.ts +5 -0
  32. package/dist/types/tools/ask.d.ts +5 -0
  33. package/dist/types/utils/mupdf-wasm.d.ts +1 -0
  34. package/package.json +13 -7
  35. package/scripts/compile-args.ts +8 -4
  36. package/scripts/generate-sdk-operation-inventory.ts +5 -6
  37. package/src/cli/config-cli.ts +23 -8
  38. package/src/cli/update-cli.ts +265 -21
  39. package/src/config/atomic-yaml-patch.ts +167 -30
  40. package/src/config/keybindings.ts +10 -0
  41. package/src/config/model-profiles.ts +84 -16
  42. package/src/config/model-registry.ts +60 -38
  43. package/src/config/models-config-schema.ts +1 -1
  44. package/src/config/settings-schema.ts +79 -0
  45. package/src/config/settings.ts +13 -2
  46. package/src/dap/client.ts +78 -30
  47. package/src/internal-urls/docs-index.generated.ts +5 -4
  48. package/src/lsp/client.ts +17 -29
  49. package/src/modes/action-registry.ts +2 -0
  50. package/src/modes/components/welcome.ts +5 -0
  51. package/src/modes/controllers/goal-mode-controller.ts +7 -2
  52. package/src/modes/controllers/input-controller.ts +71 -6
  53. package/src/modes/controllers/plan-mode-controller.ts +8 -1
  54. package/src/modes/controllers/runtime-mcp-command-controller.ts +14 -0
  55. package/src/modes/controllers/selector-controller.ts +47 -19
  56. package/src/modes/interactive-mode.ts +54 -4
  57. package/src/modes/types.ts +5 -1
  58. package/src/prompts/system/system-prompt.md +8 -0
  59. package/src/runtime-mcp/transports/stdio.ts +96 -33
  60. package/src/sdk/broker/lifecycle.ts +6 -5
  61. package/src/sdk/protocol/operation-inventory.generated.json +33 -0
  62. package/src/sdk/session.ts +27 -18
  63. package/src/session/agent-session.ts +155 -15
  64. package/src/session/internal/managed-session-scope.ts +41 -6
  65. package/src/session/internal/managed-session-storage.ts +14 -0
  66. package/src/session/session-manager.ts +113 -11
  67. package/src/session/session-storage.ts +70 -0
  68. package/src/session-import/claude.ts +382 -0
  69. package/src/session-import/codex.ts +458 -0
  70. package/src/session-import/command.ts +61 -0
  71. package/src/session-import/detect.ts +133 -0
  72. package/src/session-import/index.ts +27 -0
  73. package/src/session-import/redact.ts +125 -0
  74. package/src/session-import/service.ts +749 -0
  75. package/src/session-import/types.ts +163 -0
  76. package/src/skc-runtime/launch-worktree.ts +277 -4
  77. package/src/slash-commands/acp-builtins.ts +5 -1
  78. package/src/slash-commands/builtin-registry.ts +100 -1
  79. package/src/slash-commands/types.ts +5 -0
  80. package/src/system-prompt.ts +7 -0
  81. package/src/tools/ask.ts +5 -0
  82. package/src/tools/fetch.ts +7 -2
  83. package/src/utils/markit.ts +24 -2
  84. package/src/utils/mupdf-wasm.ts +26 -0
  85. package/src/export/html/template.css +0 -1060
  86. package/src/export/html/template.html +0 -47
  87. package/src/export/html/template.js +0 -2348
  88. package/vendor/insane-search/engine/tests/test_hardening.py +0 -57
  89. package/vendor/insane-search/engine/tests/test_smoke.py +0 -152
  90. package/vendor/insane-search/engine/tests/test_u1.py +0 -200
  91. package/vendor/insane-search/engine/tests/test_u4.py +0 -131
  92. package/vendor/insane-search/engine/tests/test_u5.py +0 -163
  93. package/vendor/insane-search/engine/tests/test_u7.py +0 -124
  94. package/vendor/insane-search/engine/tests/test_u8.py +0 -216
@@ -1,1060 +0,0 @@
1
- * { margin: 0; padding: 0; box-sizing: border-box; }
2
-
3
- :root {
4
- --line-height: 18px; /* 12px font * 1.5 */
5
- --sidebar-width: 400px;
6
- --sidebar-min-width: 240px;
7
- --sidebar-max-width: 840px;
8
- --sidebar-resizer-width: 6px;
9
- }
10
-
11
- body {
12
- font-family: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, 'DejaVu Sans Mono', monospace;
13
- font-size: 12px;
14
- line-height: var(--line-height);
15
- color: var(--text);
16
- background: var(--body-bg);
17
- }
18
-
19
- body.sidebar-resizing {
20
- cursor: col-resize;
21
- user-select: none;
22
- }
23
-
24
- #app {
25
- display: flex;
26
- min-height: 100vh;
27
- }
28
-
29
- /* Sidebar */
30
- #sidebar {
31
- width: var(--sidebar-width);
32
- min-width: var(--sidebar-width);
33
- max-width: var(--sidebar-width);
34
- background: var(--container-bg);
35
- flex-shrink: 0;
36
- display: flex;
37
- flex-direction: column;
38
- position: sticky;
39
- top: 0;
40
- height: 100vh;
41
- border-right: 1px solid var(--dim);
42
- }
43
-
44
- .sidebar-header {
45
- padding: 8px 12px;
46
- flex-shrink: 0;
47
- }
48
-
49
- .sidebar-controls {
50
- padding: 8px 8px 4px 8px;
51
- }
52
-
53
- .sidebar-search {
54
- width: 100%;
55
- box-sizing: border-box;
56
- padding: 4px 8px;
57
- font-size: 11px;
58
- font-family: inherit;
59
- background: var(--body-bg);
60
- color: var(--text);
61
- border: 1px solid var(--dim);
62
- border-radius: 3px;
63
- }
64
-
65
- .sidebar-filters {
66
- display: flex;
67
- padding: 4px 8px 8px 8px;
68
- gap: 4px;
69
- align-items: center;
70
- flex-wrap: wrap;
71
- }
72
-
73
- .sidebar-search:focus {
74
- outline: none;
75
- border-color: var(--accent);
76
- }
77
-
78
- .sidebar-search::placeholder {
79
- color: var(--muted);
80
- }
81
-
82
- .filter-btn {
83
- padding: 3px 8px;
84
- font-size: 10px;
85
- font-family: inherit;
86
- background: transparent;
87
- color: var(--muted);
88
- border: 1px solid var(--dim);
89
- border-radius: 3px;
90
- cursor: pointer;
91
- }
92
-
93
- .filter-btn:hover {
94
- color: var(--text);
95
- border-color: var(--text);
96
- }
97
-
98
- .filter-btn.active {
99
- background: var(--accent);
100
- color: var(--body-bg);
101
- border-color: var(--accent);
102
- }
103
-
104
- .sidebar-close {
105
- display: none;
106
- padding: 3px 8px;
107
- font-size: 12px;
108
- font-family: inherit;
109
- background: transparent;
110
- color: var(--muted);
111
- border: 1px solid var(--dim);
112
- border-radius: 3px;
113
- cursor: pointer;
114
- margin-left: auto;
115
- }
116
-
117
- .sidebar-close:hover {
118
- color: var(--text);
119
- border-color: var(--text);
120
- }
121
-
122
- .tree-container {
123
- flex: 1;
124
- overflow: auto;
125
- padding: 4px 0;
126
- }
127
-
128
- .tree-node {
129
- padding: 0 8px;
130
- cursor: pointer;
131
- display: flex;
132
- align-items: baseline;
133
- font-size: 11px;
134
- line-height: 13px;
135
- white-space: nowrap;
136
- }
137
-
138
- .tree-node:hover {
139
- background: var(--selectedBg);
140
- }
141
-
142
- .tree-node.active {
143
- background: var(--selectedBg);
144
- }
145
-
146
- .tree-node.active .tree-content {
147
- font-weight: bold;
148
- }
149
-
150
- .tree-node.in-path {
151
- background: color-mix(in srgb, var(--accent) 10%, transparent);
152
- }
153
-
154
- .tree-node:not(.in-path) {
155
- opacity: 0.5;
156
- }
157
-
158
- .tree-node:not(.in-path):hover {
159
- opacity: 1;
160
- }
161
-
162
- .tree-prefix {
163
- color: var(--muted);
164
- flex-shrink: 0;
165
- font-family: monospace;
166
- white-space: pre;
167
- }
168
-
169
- .tree-marker {
170
- color: var(--accent);
171
- flex-shrink: 0;
172
- }
173
-
174
- .tree-content {
175
- color: var(--text);
176
- }
177
-
178
- .tree-role-user {
179
- color: var(--accent);
180
- }
181
-
182
- .tree-role-developer {
183
- color: var(--dim);
184
- }
185
-
186
- .tree-role-assistant {
187
- color: var(--success);
188
- }
189
-
190
- .tree-role-tool {
191
- color: var(--muted);
192
- }
193
-
194
- .tree-muted {
195
- color: var(--muted);
196
- }
197
-
198
- .tree-error {
199
- color: var(--error);
200
- }
201
-
202
- .tree-compaction {
203
- color: var(--borderAccent);
204
- }
205
-
206
- .tree-branch-summary {
207
- color: var(--warning);
208
- }
209
-
210
- .tree-custom-message {
211
- color: var(--customMessageLabel);
212
- }
213
-
214
- .tree-status {
215
- padding: 4px 12px;
216
- font-size: 10px;
217
- color: var(--muted);
218
- flex-shrink: 0;
219
- }
220
-
221
- #sidebar-resizer {
222
- width: var(--sidebar-resizer-width);
223
- flex-shrink: 0;
224
- position: sticky;
225
- top: 0;
226
- height: 100vh;
227
- cursor: col-resize;
228
- touch-action: none;
229
- background: transparent;
230
- border-right: 1px solid transparent;
231
- }
232
-
233
- #sidebar-resizer:hover,
234
- body.sidebar-resizing #sidebar-resizer {
235
- background: var(--selectedBg);
236
- border-right-color: var(--dim);
237
- }
238
-
239
- /* Main content */
240
- #content {
241
- flex: 1;
242
- min-width: 0;
243
- flex: 1;
244
- overflow-y: auto;
245
- padding: var(--line-height) calc(var(--line-height) * 2);
246
- display: flex;
247
- flex-direction: column;
248
- align-items: center;
249
- }
250
-
251
- #content > * {
252
- width: 100%;
253
- max-width: 800px;
254
- }
255
-
256
- /* Help bar */
257
- .help-bar {
258
- font-size: 11px;
259
- color: var(--warning);
260
- margin-bottom: var(--line-height);
261
- }
262
-
263
- /* Header */
264
- .header {
265
- background: var(--container-bg);
266
- border-radius: 4px;
267
- padding: var(--line-height);
268
- margin-bottom: var(--line-height);
269
- }
270
-
271
- .brand-kicker {
272
- color: var(--accent);
273
- font-size: 10px;
274
- font-weight: bold;
275
- letter-spacing: 0.08em;
276
- margin-bottom: 4px;
277
- text-transform: uppercase;
278
- }
279
-
280
- .header h1 {
281
- font-size: 12px;
282
- font-weight: bold;
283
- color: var(--borderAccent);
284
- margin-bottom: var(--line-height);
285
- }
286
-
287
- .header-info {
288
- display: flex;
289
- flex-direction: column;
290
- gap: 0;
291
- font-size: 11px;
292
- }
293
-
294
- .info-item {
295
- color: var(--dim);
296
- display: flex;
297
- align-items: baseline;
298
- }
299
-
300
- .info-label {
301
- font-weight: 600;
302
- margin-right: 8px;
303
- min-width: 100px;
304
- }
305
-
306
- .info-value {
307
- color: var(--text);
308
- flex: 1;
309
- }
310
-
311
- /* Messages */
312
- #messages {
313
- display: flex;
314
- flex-direction: column;
315
- gap: var(--line-height);
316
- }
317
-
318
- .message-timestamp {
319
- font-size: 10px;
320
- color: var(--dim);
321
- opacity: 0.8;
322
- }
323
-
324
- .user-message {
325
- background: var(--userMessageBg);
326
- color: var(--userMessageText);
327
- padding: var(--line-height);
328
- border-radius: 4px;
329
- position: relative;
330
- }
331
-
332
- .user-message.developer-message {
333
- opacity: 0.7;
334
- }
335
-
336
- .user-message.developer-message .markdown-content {
337
- color: var(--dim);
338
- }
339
-
340
- .assistant-message {
341
- padding: 0;
342
- position: relative;
343
- }
344
-
345
- /* Copy link button - appears on hover */
346
- .copy-link-btn {
347
- position: absolute;
348
- top: 8px;
349
- right: 8px;
350
- width: 28px;
351
- height: 28px;
352
- padding: 6px;
353
- background: var(--container-bg);
354
- border: 1px solid var(--dim);
355
- border-radius: 4px;
356
- color: var(--muted);
357
- cursor: pointer;
358
- opacity: 0;
359
- transition: opacity 0.15s, background 0.15s, color 0.15s;
360
- display: flex;
361
- align-items: center;
362
- justify-content: center;
363
- z-index: 10;
364
- }
365
-
366
- .user-message:hover .copy-link-btn,
367
- .assistant-message:hover .copy-link-btn {
368
- opacity: 1;
369
- }
370
-
371
- .copy-link-btn:hover {
372
- background: var(--accent);
373
- color: var(--body-bg);
374
- border-color: var(--accent);
375
- }
376
-
377
- .copy-link-btn.copied {
378
- background: var(--success, #22c55e);
379
- color: white;
380
- border-color: var(--success, #22c55e);
381
- }
382
-
383
- /* Highlight effect for deep-linked messages */
384
- .user-message.highlight,
385
- .assistant-message.highlight {
386
- animation: highlight-pulse 2s ease-out;
387
- }
388
-
389
- @keyframes highlight-pulse {
390
- 0% {
391
- box-shadow: 0 0 0 3px var(--accent);
392
- }
393
- 100% {
394
- box-shadow: 0 0 0 0 transparent;
395
- }
396
- }
397
-
398
- .assistant-message > .message-timestamp {
399
- padding-left: var(--line-height);
400
- }
401
-
402
- .assistant-text {
403
- padding: var(--line-height);
404
- padding-bottom: 0;
405
- }
406
-
407
- .message-timestamp + .assistant-text,
408
- .message-timestamp + .thinking-block {
409
- padding-top: 0;
410
- }
411
-
412
- .thinking-block + .assistant-text {
413
- padding-top: 0;
414
- }
415
-
416
- .thinking-text {
417
- padding: var(--line-height);
418
- color: var(--thinkingText);
419
- font-style: italic;
420
- white-space: pre-wrap;
421
- }
422
-
423
- .message-timestamp + .thinking-block .thinking-text,
424
- .message-timestamp + .thinking-block .thinking-collapsed {
425
- padding-top: 0;
426
- }
427
-
428
- .thinking-collapsed {
429
- display: none;
430
- padding: var(--line-height);
431
- color: var(--thinkingText);
432
- font-style: italic;
433
- }
434
-
435
- /* Tool execution */
436
- .tool-execution {
437
- padding: var(--line-height);
438
- border-radius: 4px;
439
- }
440
-
441
- .tool-execution + .tool-execution {
442
- margin-top: var(--line-height);
443
- }
444
-
445
- .tool-execution.pending { background: var(--toolPendingBg); }
446
- .tool-execution.success { background: var(--toolSuccessBg); }
447
- .tool-execution.error { background: var(--toolErrorBg); }
448
-
449
- .tool-header, .tool-name {
450
- font-weight: bold;
451
- }
452
-
453
- .tool-path {
454
- color: var(--accent);
455
- word-break: break-all;
456
- }
457
-
458
- .line-numbers {
459
- color: var(--warning);
460
- }
461
-
462
- .line-count {
463
- color: var(--dim);
464
- }
465
-
466
- .tool-command {
467
- font-weight: bold;
468
- white-space: pre-wrap;
469
- word-wrap: break-word;
470
- overflow-wrap: break-word;
471
- word-break: break-word;
472
- }
473
-
474
- .tool-output {
475
- margin-top: var(--line-height);
476
- color: var(--toolOutput);
477
- word-wrap: break-word;
478
- overflow-wrap: break-word;
479
- word-break: break-word;
480
- font-family: inherit;
481
- overflow-x: auto;
482
- }
483
-
484
- .tool-output > div,
485
- .output-preview,
486
- .output-full {
487
- margin: 0;
488
- padding: 0;
489
- line-height: var(--line-height);
490
- }
491
-
492
- .tool-output pre {
493
- margin: 0;
494
- padding: 0;
495
- font-family: inherit;
496
- color: inherit;
497
- white-space: pre-wrap;
498
- word-wrap: break-word;
499
- overflow-wrap: break-word;
500
- }
501
-
502
- .tool-output code {
503
- padding: 0;
504
- background: none;
505
- color: var(--text);
506
- }
507
-
508
- .tool-output.expandable {
509
- cursor: pointer;
510
- }
511
-
512
- .tool-output.expandable:hover {
513
- opacity: 0.9;
514
- }
515
-
516
- .tool-output.expandable .output-full {
517
- display: none;
518
- }
519
-
520
- .tool-output.expandable.expanded .output-preview {
521
- display: none;
522
- }
523
-
524
- .tool-output.expandable.expanded .output-full {
525
- display: block;
526
- }
527
-
528
- .ansi-line {
529
- white-space: pre-wrap;
530
- }
531
-
532
- .tool-images {
533
- }
534
-
535
- .tool-image {
536
- max-width: 100%;
537
- max-height: 500px;
538
- border-radius: 4px;
539
- margin: var(--line-height) 0;
540
- }
541
-
542
- .expand-hint {
543
- color: var(--toolOutput);
544
- }
545
-
546
- /* Diff */
547
- .tool-diff {
548
- font-size: 11px;
549
- overflow-x: auto;
550
- white-space: pre;
551
- }
552
-
553
- .diff-added { color: var(--toolDiffAdded); }
554
- .diff-removed { color: var(--toolDiffRemoved); }
555
- .diff-context { color: var(--toolDiffContext); }
556
-
557
- /* Model change */
558
- .model-change {
559
- padding: 0 var(--line-height);
560
- color: var(--dim);
561
- font-size: 11px;
562
- }
563
-
564
- .model-name {
565
- color: var(--borderAccent);
566
- font-weight: bold;
567
- }
568
-
569
- .codex-bridge-toggle {
570
- color: var(--muted);
571
- cursor: pointer;
572
- text-decoration: underline;
573
- font-size: 10px;
574
- }
575
-
576
- .codex-bridge-toggle:hover {
577
- color: var(--accent);
578
- }
579
-
580
- .codex-bridge-content {
581
- display: none;
582
- margin-top: 8px;
583
- padding: 8px;
584
- background: var(--exportCardBg, var(--container-bg));
585
- border-radius: 4px;
586
- font-size: 11px;
587
- max-height: 300px;
588
- overflow: auto;
589
- }
590
-
591
- .codex-bridge-content pre {
592
- margin: 0;
593
- white-space: pre-wrap;
594
- word-break: break-word;
595
- color: var(--muted);
596
- }
597
-
598
- .model-change.show-bridge .codex-bridge-content {
599
- display: block;
600
- }
601
-
602
- /* Compaction / Branch Summary - matches customMessage colors from TUI */
603
- .compaction {
604
- background: var(--customMessageBg);
605
- border-radius: 4px;
606
- padding: var(--line-height);
607
- cursor: pointer;
608
- }
609
-
610
- .compaction-label {
611
- color: var(--customMessageLabel);
612
- font-weight: bold;
613
- }
614
-
615
- .compaction-collapsed {
616
- color: var(--customMessageText);
617
- }
618
-
619
- .compaction-content {
620
- display: none;
621
- color: var(--customMessageText);
622
- white-space: pre-wrap;
623
- margin-top: var(--line-height);
624
- }
625
-
626
- .compaction.expanded .compaction-collapsed {
627
- display: none;
628
- }
629
-
630
- .compaction.expanded .compaction-content {
631
- display: block;
632
- }
633
-
634
- /* System prompt */
635
- .system-prompt {
636
- background: var(--customMessageBg);
637
- padding: var(--line-height);
638
- border-radius: 4px;
639
- margin-bottom: var(--line-height);
640
- }
641
-
642
- .system-prompt-header {
643
- font-weight: bold;
644
- color: var(--customMessageLabel);
645
- }
646
-
647
- .system-prompt-content {
648
- color: var(--customMessageText);
649
- white-space: pre-wrap;
650
- word-wrap: break-word;
651
- font-size: 11px;
652
- max-height: 200px;
653
- overflow-y: auto;
654
- margin-top: var(--line-height);
655
- }
656
-
657
- .system-prompt.provider-prompt {
658
- border-left: 3px solid var(--warning);
659
- }
660
-
661
- .system-prompt-note {
662
- font-size: 10px;
663
- font-style: italic;
664
- color: var(--muted);
665
- margin-top: 4px;
666
- }
667
-
668
- /* Tools list */
669
- .tools-list {
670
- background: var(--customMessageBg);
671
- padding: var(--line-height);
672
- border-radius: 4px;
673
- margin-bottom: var(--line-height);
674
- cursor: pointer;
675
- }
676
-
677
- .tools-header {
678
- font-weight: bold;
679
- color: var(--warning);
680
- margin-bottom: var(--line-height);
681
- }
682
-
683
- .tools-list.collapsed .tools-header {
684
- margin-bottom: 0;
685
- }
686
-
687
- .tools-list.collapsed .tools-content {
688
- display: none;
689
- }
690
-
691
- .tools-list:not(.collapsed) .tools-collapsed {
692
- display: none;
693
- }
694
-
695
- .tools-collapsed {
696
- margin-top: 6px;
697
- display: flex;
698
- flex-wrap: wrap;
699
- gap: 4px;
700
- }
701
-
702
- .tool-name-chip {
703
- display: inline-block;
704
- padding: 1px 6px;
705
- border-radius: 3px;
706
- background: var(--container-bg);
707
- color: var(--text);
708
- font-size: 11px;
709
- font-weight: 500;
710
- }
711
-
712
- .tool-item {
713
- font-size: 11px;
714
- }
715
-
716
- .tool-item-name {
717
- font-weight: bold;
718
- color: var(--text);
719
- }
720
-
721
- .tool-item-desc {
722
- color: var(--dim);
723
- }
724
-
725
- /* Hook/custom messages */
726
- .hook-message {
727
- background: var(--customMessageBg);
728
- color: var(--customMessageText);
729
- padding: var(--line-height);
730
- border-radius: 4px;
731
- }
732
-
733
- .hook-type {
734
- color: var(--customMessageLabel);
735
- font-weight: bold;
736
- }
737
-
738
- /* Branch summary */
739
- .branch-summary {
740
- background: var(--customMessageBg);
741
- padding: var(--line-height);
742
- border-radius: 4px;
743
- }
744
-
745
- .branch-summary-header {
746
- font-weight: bold;
747
- color: var(--borderAccent);
748
- }
749
-
750
- /* Error */
751
- .error-text {
752
- color: var(--error);
753
- padding: 0 var(--line-height);
754
- }
755
- .tool-error {
756
- color: var(--error);
757
- }
758
-
759
- /* Tool renderer extras */
760
- .tool-meta {
761
- margin-top: 4px;
762
- }
763
-
764
- .tool-badge {
765
- display: inline-block;
766
- padding: 0 6px;
767
- margin-right: 4px;
768
- border-radius: 3px;
769
- background: rgba(255, 255, 255, 0.06);
770
- color: var(--dim);
771
- font-size: 11px;
772
- font-weight: normal;
773
- vertical-align: baseline;
774
- }
775
-
776
- .tool-pattern {
777
- color: var(--warning);
778
- }
779
-
780
- .tool-intent {
781
- color: var(--muted);
782
- font-style: italic;
783
- font-size: 11px;
784
- margin-bottom: 4px;
785
- opacity: 0.85;
786
- }
787
-
788
- .tool-args {
789
- margin-top: 4px;
790
- color: var(--toolOutput);
791
- }
792
-
793
- .tool-arg {
794
- display: block;
795
- line-height: var(--line-height);
796
- white-space: pre-wrap;
797
- word-break: break-word;
798
- }
799
-
800
- .tool-arg-key {
801
- color: var(--dim);
802
- }
803
-
804
- .tool-arg-val {
805
- color: var(--text);
806
- }
807
-
808
- .tool-cell {
809
- margin-top: var(--line-height);
810
- }
811
-
812
- .tool-cell-title {
813
- color: var(--dim);
814
- font-size: 11px;
815
- margin-bottom: 2px;
816
- }
817
-
818
- /* Todo write tree */
819
- .todo-tree {
820
- margin-top: var(--line-height);
821
- }
822
-
823
- .todo-phase {
824
- margin-top: 6px;
825
- color: var(--accent);
826
- font-weight: bold;
827
- }
828
-
829
- .todo-task {
830
- padding-left: 12px;
831
- line-height: var(--line-height);
832
- }
833
-
834
- .todo-icon {
835
- display: inline-block;
836
- width: 14px;
837
- text-align: center;
838
- color: var(--dim);
839
- }
840
-
841
- .todo-completed { color: var(--toolDiffAdded); }
842
- .todo-completed .todo-icon { color: var(--toolDiffAdded); }
843
- .todo-in_progress { color: var(--warning); }
844
- .todo-in_progress .todo-icon { color: var(--warning); }
845
- .todo-abandoned { color: var(--toolDiffRemoved); }
846
- .todo-abandoned .todo-icon { color: var(--toolDiffRemoved); }
847
- .todo-pending { color: var(--toolOutput); }
848
-
849
- /* Images */
850
- .message-images {
851
- margin-bottom: 12px;
852
- }
853
-
854
- .message-image {
855
- max-width: 100%;
856
- max-height: 400px;
857
- border-radius: 4px;
858
- margin: var(--line-height) 0;
859
- }
860
-
861
- /* Markdown content */
862
- .markdown-content h1,
863
- .markdown-content h2,
864
- .markdown-content h3,
865
- .markdown-content h4,
866
- .markdown-content h5,
867
- .markdown-content h6 {
868
- color: var(--mdHeading);
869
- margin: var(--line-height) 0 0 0;
870
- font-weight: bold;
871
- }
872
-
873
- .markdown-content h1 { font-size: 1em; }
874
- .markdown-content h2 { font-size: 1em; }
875
- .markdown-content h3 { font-size: 1em; }
876
- .markdown-content h4 { font-size: 1em; }
877
- .markdown-content h5 { font-size: 1em; }
878
- .markdown-content h6 { font-size: 1em; }
879
- .markdown-content p { margin: 0; }
880
- .markdown-content p + p { margin-top: var(--line-height); }
881
-
882
- .markdown-content a {
883
- color: var(--mdLink);
884
- text-decoration: underline;
885
- }
886
-
887
- .markdown-content code {
888
- background: rgba(128, 128, 128, 0.2);
889
- color: var(--mdCode);
890
- padding: 0 4px;
891
- border-radius: 3px;
892
- font-family: inherit;
893
- }
894
-
895
- .markdown-content pre {
896
- background: transparent;
897
- margin: var(--line-height) 0;
898
- overflow-x: auto;
899
- }
900
-
901
- .markdown-content pre code {
902
- display: block;
903
- background: none;
904
- color: var(--text);
905
- }
906
-
907
- .markdown-content blockquote {
908
- border-left: 3px solid var(--mdQuoteBorder);
909
- padding-left: var(--line-height);
910
- margin: var(--line-height) 0;
911
- color: var(--mdQuote);
912
- font-style: italic;
913
- }
914
-
915
- .markdown-content ul,
916
- .markdown-content ol {
917
- margin: var(--line-height) 0;
918
- padding-left: calc(var(--line-height) * 2);
919
- }
920
-
921
- .markdown-content li { margin: 0; }
922
- .markdown-content li::marker { color: var(--mdListBullet); }
923
-
924
- .markdown-content hr {
925
- border: none;
926
- border-top: 1px solid var(--mdHr);
927
- margin: var(--line-height) 0;
928
- }
929
-
930
- .markdown-content table {
931
- border-collapse: collapse;
932
- margin: 0.5em 0;
933
- width: 100%;
934
- }
935
-
936
- .markdown-content th,
937
- .markdown-content td {
938
- border: 1px solid var(--mdCodeBlockBorder);
939
- padding: 6px 10px;
940
- text-align: left;
941
- }
942
-
943
- .markdown-content th {
944
- background: rgba(128, 128, 128, 0.1);
945
- font-weight: bold;
946
- }
947
-
948
- .markdown-content img {
949
- max-width: 100%;
950
- border-radius: 4px;
951
- }
952
-
953
- /* Syntax highlighting */
954
- .hljs { background: transparent; color: var(--text); }
955
- .hljs-comment, .hljs-quote { color: var(--syntaxComment); }
956
- .hljs-keyword, .hljs-selector-tag { color: var(--syntaxKeyword); }
957
- .hljs-number, .hljs-literal { color: var(--syntaxNumber); }
958
- .hljs-string, .hljs-doctag { color: var(--syntaxString); }
959
- /* Function names: hljs v11 uses .hljs-title.function_ compound class */
960
- .hljs-function, .hljs-title, .hljs-title.function_, .hljs-section, .hljs-name { color: var(--syntaxFunction); }
961
- /* Types: hljs v11 uses .hljs-title.class_ for class names */
962
- .hljs-type, .hljs-class, .hljs-title.class_, .hljs-built_in { color: var(--syntaxType); }
963
- .hljs-attr, .hljs-variable, .hljs-variable.language_, .hljs-params, .hljs-property { color: var(--syntaxVariable); }
964
- .hljs-meta, .hljs-meta .hljs-keyword, .hljs-meta .hljs-string { color: var(--syntaxKeyword); }
965
- .hljs-operator { color: var(--syntaxOperator); }
966
- .hljs-punctuation { color: var(--syntaxPunctuation); }
967
- .hljs-subst { color: var(--text); }
968
-
969
- /* Footer */
970
- .footer {
971
- margin-top: 48px;
972
- padding: 20px;
973
- text-align: center;
974
- color: var(--dim);
975
- font-size: 10px;
976
- }
977
-
978
- /* Mobile */
979
- #hamburger {
980
- display: none;
981
- position: fixed;
982
- top: 10px;
983
- left: 10px;
984
- z-index: 100;
985
- padding: 3px 8px;
986
- font-size: 12px;
987
- font-family: inherit;
988
- background: transparent;
989
- color: var(--muted);
990
- border: 1px solid var(--dim);
991
- border-radius: 3px;
992
- cursor: pointer;
993
- }
994
-
995
- #hamburger:hover {
996
- color: var(--text);
997
- border-color: var(--text);
998
- }
999
-
1000
-
1001
-
1002
- #sidebar-overlay {
1003
- display: none;
1004
- position: fixed;
1005
- top: 0;
1006
- left: 0;
1007
- right: 0;
1008
- bottom: 0;
1009
- background: rgba(0, 0, 0, 0.5);
1010
- z-index: 98;
1011
- }
1012
-
1013
- @media (max-width: 900px) {
1014
- #sidebar {
1015
- position: fixed;
1016
- transform: translateX(-100%);
1017
- width: min(var(--sidebar-width), 100vw);
1018
- min-width: 0;
1019
- max-width: 100vw;
1020
- top: 0;
1021
- bottom: 0;
1022
- height: 100vh;
1023
- z-index: 99;
1024
- transition: transform 0.3s;
1025
- }
1026
-
1027
- #sidebar.open {
1028
- transform: translateX(0);
1029
- }
1030
-
1031
- #sidebar-overlay.open {
1032
- display: block;
1033
- }
1034
-
1035
- #hamburger {
1036
- display: block;
1037
- }
1038
-
1039
- .sidebar-close {
1040
- display: block;
1041
- }
1042
-
1043
- #sidebar-resizer {
1044
- display: none;
1045
- }
1046
-
1047
- #content {
1048
- padding: var(--line-height) 16px;
1049
- }
1050
-
1051
- #content > * {
1052
- max-width: 100%;
1053
- }
1054
- }
1055
-
1056
- @media print {
1057
- #sidebar, #sidebar-toggle, #sidebar-resizer { display: none !important; }
1058
- body { background: white; color: black; }
1059
- #content { max-width: none; }
1060
- }