@kevin5251984/guild 0.2.19 → 0.2.21
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/package.json +2 -2
- package/src/cli.ts +2 -5
- package/src/db.ts +39 -6
- package/src/generate.ts +3 -3
- package/src/handlers.ts +126 -50
- package/src/harness.ts +20 -4
- package/src/host-browse.ts +149 -4
- package/src/llm.ts +37 -15
- package/src/mcp.ts +32 -5
- package/src/mention.ts +80 -12
- package/src/oauth.ts +2 -2
- package/src/opencode-free.ts +3 -2
- package/src/public/chat.css +6 -0
- package/src/public/chat.html +260 -47
- package/src/public/i18n.js +6 -0
- package/src/public/md.js +18 -1
- package/src/public/mobile.css +224 -14
- package/src/public/mobile.html +344 -22
- package/src/public/settings.html +51 -8
- package/src/reasoning-catalog.ts +346 -0
- package/src/router.ts +172 -9
- package/src/store.ts +109 -38
- package/src/subagent.ts +10 -5
- package/src/tools.ts +8 -3
- package/src/version.ts +25 -0
- package/vendor/protocol/src/index.ts +19 -2
package/src/public/mobile.css
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
--panel: #10141A;
|
|
9
9
|
--lift: #161C24;
|
|
10
10
|
--card: #161C24;
|
|
11
|
+
--bubble: #1A222C;
|
|
11
12
|
--you: #242C36;
|
|
12
13
|
--text: #E8E4DC;
|
|
13
14
|
--muted: #8B8F96;
|
|
@@ -15,6 +16,10 @@
|
|
|
15
16
|
--fill: #141A22;
|
|
16
17
|
--ok: #9fdfb2;
|
|
17
18
|
--danger: #f0a8a8;
|
|
19
|
+
--press: 0.97;
|
|
20
|
+
--ease-out: cubic-bezier(0.23, 1, 0.32, 1);
|
|
21
|
+
--press-ms: 140ms;
|
|
22
|
+
--hover-ms: 160ms;
|
|
18
23
|
--tap: 44px;
|
|
19
24
|
--focus: 0 0 0 2px var(--bg), 0 0 0 3px var(--steel);
|
|
20
25
|
--vvh: 100dvh;
|
|
@@ -48,6 +53,66 @@ textarea:focus-visible {
|
|
|
48
53
|
outline: none;
|
|
49
54
|
box-shadow: var(--focus);
|
|
50
55
|
}
|
|
56
|
+
/* Enamel press language, shared with the hall: paper / steel / ghost. */
|
|
57
|
+
.navlist a,
|
|
58
|
+
.back,
|
|
59
|
+
.turn-stop,
|
|
60
|
+
.turn-pause,
|
|
61
|
+
.turn-continue,
|
|
62
|
+
.turn-steer,
|
|
63
|
+
.steer,
|
|
64
|
+
.send,
|
|
65
|
+
.stop-all,
|
|
66
|
+
.mention-item {
|
|
67
|
+
transition:
|
|
68
|
+
background-color var(--hover-ms) ease,
|
|
69
|
+
border-color var(--hover-ms) ease,
|
|
70
|
+
color var(--hover-ms) ease,
|
|
71
|
+
transform var(--press-ms) var(--ease-out),
|
|
72
|
+
opacity var(--hover-ms) ease;
|
|
73
|
+
}
|
|
74
|
+
.navlist a:active,
|
|
75
|
+
.back:active,
|
|
76
|
+
.turn-stop:active:not(:disabled),
|
|
77
|
+
.turn-pause:active:not(:disabled),
|
|
78
|
+
.turn-continue:active:not(:disabled),
|
|
79
|
+
.turn-steer:active:not(:disabled),
|
|
80
|
+
.steer:active:not(:disabled),
|
|
81
|
+
.send:active:not(:disabled),
|
|
82
|
+
.stop-all:active:not(:disabled),
|
|
83
|
+
.mention-item:active {
|
|
84
|
+
transform: scale(var(--press));
|
|
85
|
+
}
|
|
86
|
+
@media (prefers-reduced-motion: reduce) {
|
|
87
|
+
.navlist a,
|
|
88
|
+
.back,
|
|
89
|
+
.turn-stop,
|
|
90
|
+
.turn-pause,
|
|
91
|
+
.turn-continue,
|
|
92
|
+
.turn-steer,
|
|
93
|
+
.steer,
|
|
94
|
+
.send,
|
|
95
|
+
.stop-all,
|
|
96
|
+
.mention-item {
|
|
97
|
+
transition:
|
|
98
|
+
background-color var(--hover-ms) ease,
|
|
99
|
+
border-color var(--hover-ms) ease,
|
|
100
|
+
color var(--hover-ms) ease,
|
|
101
|
+
opacity var(--hover-ms) ease;
|
|
102
|
+
}
|
|
103
|
+
.navlist a:active,
|
|
104
|
+
.back:active,
|
|
105
|
+
.turn-stop:active,
|
|
106
|
+
.turn-pause:active,
|
|
107
|
+
.turn-continue:active,
|
|
108
|
+
.turn-steer:active,
|
|
109
|
+
.steer:active,
|
|
110
|
+
.send:active,
|
|
111
|
+
.stop-all:active,
|
|
112
|
+
.mention-item:active {
|
|
113
|
+
transform: none;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
51
116
|
.screen {
|
|
52
117
|
display: flex;
|
|
53
118
|
flex-direction: column;
|
|
@@ -214,6 +279,7 @@ textarea:focus-visible {
|
|
|
214
279
|
font-weight: 650;
|
|
215
280
|
color: #fff;
|
|
216
281
|
background: var(--steel);
|
|
282
|
+
box-shadow: 0 0 0 1px color-mix(in srgb, var(--steel) 38%, transparent);
|
|
217
283
|
}
|
|
218
284
|
.avatar img {
|
|
219
285
|
width: 100%;
|
|
@@ -242,6 +308,7 @@ textarea:focus-visible {
|
|
|
242
308
|
white-space: pre-wrap;
|
|
243
309
|
}
|
|
244
310
|
.msg.you .bubble { background: var(--you); }
|
|
311
|
+
.msg.bot .bubble { background: var(--bubble); }
|
|
245
312
|
.assistant-text {
|
|
246
313
|
margin: 0;
|
|
247
314
|
color: var(--text);
|
|
@@ -264,9 +331,10 @@ textarea:focus-visible {
|
|
|
264
331
|
.assistant-text .md-fence {
|
|
265
332
|
margin: 0.35rem 0 0.7rem;
|
|
266
333
|
border-radius: 12px;
|
|
267
|
-
background:
|
|
334
|
+
background: var(--fill);
|
|
268
335
|
overflow: auto;
|
|
269
336
|
}
|
|
337
|
+
.assistant-text .md-html-preview { overflow: hidden; }
|
|
270
338
|
.assistant-text .md-fence-bar {
|
|
271
339
|
display: flex;
|
|
272
340
|
align-items: center;
|
|
@@ -277,11 +345,101 @@ textarea:focus-visible {
|
|
|
277
345
|
color: var(--muted);
|
|
278
346
|
font-size: 0.75rem;
|
|
279
347
|
}
|
|
348
|
+
.assistant-text .md-fence-tabs {
|
|
349
|
+
display: inline-flex;
|
|
350
|
+
align-items: center;
|
|
351
|
+
gap: 2px;
|
|
352
|
+
margin-left: auto;
|
|
353
|
+
margin-right: 4px;
|
|
354
|
+
}
|
|
355
|
+
.assistant-text .md-fence-tab {
|
|
356
|
+
margin: 0;
|
|
357
|
+
min-height: var(--tap);
|
|
358
|
+
padding: 0 10px;
|
|
359
|
+
border: 0;
|
|
360
|
+
border-radius: 8px;
|
|
361
|
+
background: transparent;
|
|
362
|
+
color: var(--muted);
|
|
363
|
+
font: inherit;
|
|
364
|
+
font-size: 0.78rem;
|
|
365
|
+
cursor: pointer;
|
|
366
|
+
}
|
|
367
|
+
.assistant-text .md-fence-tab.on,
|
|
368
|
+
.assistant-text .md-fence-tab:hover { background: var(--lift); color: var(--text); }
|
|
369
|
+
.assistant-text .md-fence-acts {
|
|
370
|
+
display: flex;
|
|
371
|
+
align-items: center;
|
|
372
|
+
gap: 2px;
|
|
373
|
+
}
|
|
374
|
+
.assistant-text .md-fence-btn {
|
|
375
|
+
margin: 0;
|
|
376
|
+
width: var(--tap);
|
|
377
|
+
height: var(--tap);
|
|
378
|
+
padding: 0;
|
|
379
|
+
border: 0;
|
|
380
|
+
border-radius: 8px;
|
|
381
|
+
background: transparent;
|
|
382
|
+
color: var(--muted);
|
|
383
|
+
cursor: pointer;
|
|
384
|
+
display: inline-flex;
|
|
385
|
+
align-items: center;
|
|
386
|
+
justify-content: center;
|
|
387
|
+
}
|
|
388
|
+
.assistant-text .md-html-frame {
|
|
389
|
+
display: block;
|
|
390
|
+
width: 100%;
|
|
391
|
+
min-height: 220px;
|
|
392
|
+
height: 52vh;
|
|
393
|
+
border: 0;
|
|
394
|
+
background: #fff;
|
|
395
|
+
border-radius: 0 0 12px 12px;
|
|
396
|
+
}
|
|
397
|
+
.assistant-text .md-html-preview[data-view="code"] .md-html-frame { display: none; }
|
|
398
|
+
.assistant-text .md-html-preview[data-view="preview"] .md-pre { display: none; }
|
|
280
399
|
.assistant-text .md-pre {
|
|
281
400
|
margin: 0;
|
|
282
401
|
padding: 0.6rem 0.8rem 0.8rem;
|
|
283
402
|
overflow: auto;
|
|
284
403
|
font-size: 0.82rem;
|
|
404
|
+
white-space: pre;
|
|
405
|
+
overflow-wrap: normal;
|
|
406
|
+
word-break: normal;
|
|
407
|
+
}
|
|
408
|
+
.html-zoom {
|
|
409
|
+
position: fixed;
|
|
410
|
+
inset: 0;
|
|
411
|
+
z-index: 80;
|
|
412
|
+
display: grid;
|
|
413
|
+
grid-template-rows: auto 1fr;
|
|
414
|
+
padding: max(12px, env(safe-area-inset-top)) 12px max(12px, env(safe-area-inset-bottom));
|
|
415
|
+
background: rgba(0, 0, 0, 0.72);
|
|
416
|
+
}
|
|
417
|
+
.html-zoom[hidden] { display: none !important; }
|
|
418
|
+
.html-zoom-bar {
|
|
419
|
+
display: flex;
|
|
420
|
+
align-items: center;
|
|
421
|
+
justify-content: space-between;
|
|
422
|
+
gap: 12px;
|
|
423
|
+
margin: 0 0 12px;
|
|
424
|
+
color: var(--text);
|
|
425
|
+
}
|
|
426
|
+
.html-zoom-close {
|
|
427
|
+
margin: 0;
|
|
428
|
+
width: var(--tap);
|
|
429
|
+
height: var(--tap);
|
|
430
|
+
border: 0;
|
|
431
|
+
border-radius: 50%;
|
|
432
|
+
background: var(--fill);
|
|
433
|
+
color: var(--text);
|
|
434
|
+
font-size: 1.35rem;
|
|
435
|
+
cursor: pointer;
|
|
436
|
+
}
|
|
437
|
+
.html-zoom-frame {
|
|
438
|
+
width: 100%;
|
|
439
|
+
height: 100%;
|
|
440
|
+
border: 0;
|
|
441
|
+
border-radius: 16px;
|
|
442
|
+
background: #fff;
|
|
285
443
|
}
|
|
286
444
|
.assistant-text img.md-img {
|
|
287
445
|
max-width: 100%;
|
|
@@ -301,11 +459,11 @@ textarea:focus-visible {
|
|
|
301
459
|
white-space: nowrap;
|
|
302
460
|
background: linear-gradient(
|
|
303
461
|
90deg,
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
462
|
+
var(--text) 0%,
|
|
463
|
+
var(--text) 40%,
|
|
464
|
+
var(--muted) 50%,
|
|
465
|
+
var(--text) 60%,
|
|
466
|
+
var(--text) 100%
|
|
309
467
|
);
|
|
310
468
|
background-position: 100% 0;
|
|
311
469
|
background-size: 250% 100%;
|
|
@@ -319,8 +477,8 @@ textarea:focus-visible {
|
|
|
319
477
|
font-size: 13px;
|
|
320
478
|
font-weight: 400;
|
|
321
479
|
font-variant-numeric: tabular-nums;
|
|
322
|
-
color:
|
|
323
|
-
-webkit-text-fill-color:
|
|
480
|
+
color: var(--muted);
|
|
481
|
+
-webkit-text-fill-color: var(--muted);
|
|
324
482
|
}
|
|
325
483
|
@keyframes m-shimmer { to { background-position: 0 0; } }
|
|
326
484
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -343,15 +501,24 @@ textarea:focus-visible {
|
|
|
343
501
|
line-height: 20px;
|
|
344
502
|
color: var(--muted);
|
|
345
503
|
}
|
|
346
|
-
.live-name { color:
|
|
504
|
+
.live-name { color: var(--text); font-weight: 500; }
|
|
347
505
|
.live-detail {
|
|
348
506
|
overflow: hidden;
|
|
349
507
|
text-overflow: ellipsis;
|
|
350
508
|
white-space: nowrap;
|
|
351
509
|
}
|
|
352
510
|
.live-step.running .live-name { color: var(--text); }
|
|
353
|
-
.turn-actions {
|
|
511
|
+
.turn-actions {
|
|
512
|
+
display: flex;
|
|
513
|
+
flex-wrap: wrap;
|
|
514
|
+
gap: 8px;
|
|
515
|
+
margin-top: 4px;
|
|
516
|
+
}
|
|
354
517
|
.turn-stop,
|
|
518
|
+
.turn-pause,
|
|
519
|
+
.turn-continue,
|
|
520
|
+
.turn-steer,
|
|
521
|
+
.steer,
|
|
355
522
|
.send,
|
|
356
523
|
.stop-all {
|
|
357
524
|
display: inline-flex;
|
|
@@ -369,19 +536,47 @@ textarea:focus-visible {
|
|
|
369
536
|
font-weight: 620;
|
|
370
537
|
cursor: pointer;
|
|
371
538
|
}
|
|
539
|
+
/* Stop is ghost steel: --fill at rest, --lift on hover, danger ink only. */
|
|
372
540
|
.turn-stop,
|
|
373
541
|
.stop-all {
|
|
374
542
|
color: var(--danger);
|
|
543
|
+
background: var(--fill);
|
|
544
|
+
border-color: color-mix(in srgb, var(--danger) 32%, var(--line));
|
|
545
|
+
}
|
|
546
|
+
.turn-stop:hover,
|
|
547
|
+
.stop-all:hover {
|
|
375
548
|
background: var(--lift);
|
|
376
|
-
border-color: color-mix(in srgb, var(--danger)
|
|
549
|
+
border-color: color-mix(in srgb, var(--danger) 45%, var(--line));
|
|
550
|
+
}
|
|
551
|
+
.turn-pause,
|
|
552
|
+
.turn-continue,
|
|
553
|
+
.turn-steer,
|
|
554
|
+
.steer {
|
|
555
|
+
color: var(--steel);
|
|
556
|
+
background: var(--fill);
|
|
557
|
+
border-color: color-mix(in srgb, var(--steel) 38%, var(--line));
|
|
558
|
+
}
|
|
559
|
+
.turn-pause:hover,
|
|
560
|
+
.turn-continue:hover,
|
|
561
|
+
.turn-steer:hover,
|
|
562
|
+
.steer:hover {
|
|
563
|
+
background: var(--lift);
|
|
564
|
+
color: var(--text);
|
|
565
|
+
border-color: color-mix(in srgb, var(--steel) 55%, var(--line));
|
|
377
566
|
}
|
|
567
|
+
/* The one paper CTA on the page. */
|
|
378
568
|
.send {
|
|
379
|
-
background: var(--
|
|
569
|
+
background: var(--paper);
|
|
380
570
|
color: var(--ink);
|
|
381
571
|
border-color: transparent;
|
|
382
572
|
}
|
|
573
|
+
.send:hover:not(:disabled) {
|
|
574
|
+
background: color-mix(in srgb, var(--paper) 88%, white);
|
|
575
|
+
}
|
|
383
576
|
.send:disabled,
|
|
384
|
-
.stop-all:disabled
|
|
577
|
+
.stop-all:disabled,
|
|
578
|
+
.steer:disabled,
|
|
579
|
+
.turn-stop:disabled {
|
|
385
580
|
opacity: 0.45;
|
|
386
581
|
cursor: default;
|
|
387
582
|
}
|
|
@@ -407,9 +602,17 @@ textarea:focus-visible {
|
|
|
407
602
|
gap: 0.5rem;
|
|
408
603
|
}
|
|
409
604
|
.composer-actions .send,
|
|
410
|
-
.composer-actions .stop-all
|
|
605
|
+
.composer-actions .stop-all,
|
|
606
|
+
.composer-actions .steer {
|
|
411
607
|
flex: 1;
|
|
412
608
|
}
|
|
609
|
+
.composer-steer {
|
|
610
|
+
color: var(--muted);
|
|
611
|
+
font-size: 0.75rem;
|
|
612
|
+
line-height: 1.4;
|
|
613
|
+
padding: 0 0.15rem;
|
|
614
|
+
}
|
|
615
|
+
.composer-steer[hidden] { display: none; }
|
|
413
616
|
#draft {
|
|
414
617
|
display: block;
|
|
415
618
|
width: 100%;
|
|
@@ -472,6 +675,7 @@ textarea:focus-visible {
|
|
|
472
675
|
color: #fff;
|
|
473
676
|
background: var(--steel);
|
|
474
677
|
flex: none;
|
|
678
|
+
box-shadow: 0 0 0 1px color-mix(in srgb, var(--steel) 38%, transparent);
|
|
475
679
|
}
|
|
476
680
|
.flash {
|
|
477
681
|
position: fixed;
|
|
@@ -489,3 +693,9 @@ textarea:focus-visible {
|
|
|
489
693
|
z-index: 8;
|
|
490
694
|
}
|
|
491
695
|
.flash.on { opacity: 1; }
|
|
696
|
+
/* Errors read as danger ink on enamel lift, never a filled red slab. */
|
|
697
|
+
.flash.err {
|
|
698
|
+
background: var(--lift);
|
|
699
|
+
color: var(--danger);
|
|
700
|
+
border: 1px solid color-mix(in srgb, var(--danger) 35%, var(--line));
|
|
701
|
+
}
|