@co0ontty/wand 1.3.6 → 1.4.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/dist/auth.js +2 -1
- package/dist/claude-pty-bridge.d.ts +6 -0
- package/dist/claude-pty-bridge.js +38 -1
- package/dist/cli.js +2 -2
- package/dist/middleware/rate-limit.js +2 -1
- package/dist/process-manager.d.ts +1 -0
- package/dist/process-manager.js +37 -5
- package/dist/server-session-routes.d.ts +2 -1
- package/dist/server-session-routes.js +113 -7
- package/dist/server.js +8 -3
- package/dist/storage.js +42 -8
- package/dist/structured-session-manager.d.ts +55 -0
- package/dist/structured-session-manager.js +723 -0
- package/dist/types.d.ts +15 -0
- package/dist/web-ui/content/scripts.js +656 -82
- package/dist/web-ui/content/styles.css +164 -7
- package/package.json +2 -1
|
@@ -3225,7 +3225,8 @@
|
|
|
3225
3225
|
}
|
|
3226
3226
|
|
|
3227
3227
|
/* Markdown Content */
|
|
3228
|
-
.markdown-content { color: inherit; }
|
|
3228
|
+
.markdown-content { color: inherit; white-space: normal; overflow-x: hidden; }
|
|
3229
|
+
.markdown-content .code-block pre { overflow-x: auto; }
|
|
3229
3230
|
.markdown-content p { margin: 0 0 8px 0; }
|
|
3230
3231
|
.markdown-content p:last-child { margin-bottom: 0; }
|
|
3231
3232
|
.markdown-content strong { font-weight: 600; }
|
|
@@ -3430,6 +3431,30 @@
|
|
|
3430
3431
|
to { opacity: 1; transform: translateX(0); }
|
|
3431
3432
|
}
|
|
3432
3433
|
|
|
3434
|
+
/* Auto-approve indicator */
|
|
3435
|
+
.auto-approve-indicator {
|
|
3436
|
+
display: inline-flex;
|
|
3437
|
+
align-items: center;
|
|
3438
|
+
gap: 2px;
|
|
3439
|
+
font-size: 0.65rem;
|
|
3440
|
+
color: var(--muted);
|
|
3441
|
+
cursor: pointer;
|
|
3442
|
+
padding: 1px 4px;
|
|
3443
|
+
border-radius: 4px;
|
|
3444
|
+
transition: color 0.15s, background 0.15s;
|
|
3445
|
+
user-select: none;
|
|
3446
|
+
white-space: nowrap;
|
|
3447
|
+
}
|
|
3448
|
+
.auto-approve-indicator:hover {
|
|
3449
|
+
background: rgba(255, 255, 255, 0.06);
|
|
3450
|
+
}
|
|
3451
|
+
.auto-approve-indicator.active {
|
|
3452
|
+
color: #22c55e;
|
|
3453
|
+
}
|
|
3454
|
+
.auto-approve-indicator.active:hover {
|
|
3455
|
+
background: rgba(34, 197, 94, 0.1);
|
|
3456
|
+
}
|
|
3457
|
+
|
|
3433
3458
|
/* Approval stats badge */
|
|
3434
3459
|
.approval-stats {
|
|
3435
3460
|
display: inline-flex;
|
|
@@ -4571,11 +4596,11 @@
|
|
|
4571
4596
|
display: flex;
|
|
4572
4597
|
flex-direction: column;
|
|
4573
4598
|
align-items: center;
|
|
4574
|
-
gap:
|
|
4575
|
-
padding: 8px
|
|
4576
|
-
border: 1.5px solid rgba(125, 91, 57, 0.
|
|
4599
|
+
gap: 3px;
|
|
4600
|
+
padding: 10px 8px;
|
|
4601
|
+
border: 1.5px solid rgba(125, 91, 57, 0.2);
|
|
4577
4602
|
border-radius: 10px;
|
|
4578
|
-
background: rgba(255, 255, 255, 0.
|
|
4603
|
+
background: rgba(255, 255, 255, 0.6);
|
|
4579
4604
|
cursor: pointer;
|
|
4580
4605
|
transition: border-color var(--transition-fast), box-shadow var(--transition-fast), background var(--transition-fast);
|
|
4581
4606
|
text-align: center;
|
|
@@ -4595,13 +4620,13 @@
|
|
|
4595
4620
|
box-shadow: 0 0 0 1.5px var(--accent-muted);
|
|
4596
4621
|
}
|
|
4597
4622
|
.mode-card-label {
|
|
4598
|
-
font-size: 0.
|
|
4623
|
+
font-size: 0.8rem;
|
|
4599
4624
|
font-weight: 600;
|
|
4600
4625
|
color: var(--text-primary);
|
|
4601
4626
|
line-height: 1.3;
|
|
4602
4627
|
}
|
|
4603
4628
|
.mode-card-desc {
|
|
4604
|
-
font-size: 0.
|
|
4629
|
+
font-size: 0.68rem;
|
|
4605
4630
|
color: var(--text-muted);
|
|
4606
4631
|
line-height: 1.3;
|
|
4607
4632
|
}
|
|
@@ -5679,6 +5704,53 @@
|
|
|
5679
5704
|
}
|
|
5680
5705
|
}
|
|
5681
5706
|
|
|
5707
|
+
.session-kind-badge {
|
|
5708
|
+
display: inline-flex;
|
|
5709
|
+
align-items: center;
|
|
5710
|
+
height: 18px;
|
|
5711
|
+
padding: 0 6px;
|
|
5712
|
+
border-radius: 999px;
|
|
5713
|
+
font-size: 0.6875rem;
|
|
5714
|
+
font-weight: 600;
|
|
5715
|
+
letter-spacing: 0.01em;
|
|
5716
|
+
border: 1px solid transparent;
|
|
5717
|
+
flex-shrink: 0;
|
|
5718
|
+
}
|
|
5719
|
+
|
|
5720
|
+
.session-kind-badge.pty {
|
|
5721
|
+
color: var(--text-secondary);
|
|
5722
|
+
background: rgba(120, 128, 140, 0.12);
|
|
5723
|
+
border-color: rgba(120, 128, 140, 0.18);
|
|
5724
|
+
}
|
|
5725
|
+
|
|
5726
|
+
.session-kind-badge.structured {
|
|
5727
|
+
color: #d18b52;
|
|
5728
|
+
background: rgba(215, 122, 82, 0.10);
|
|
5729
|
+
border-color: rgba(215, 122, 82, 0.22);
|
|
5730
|
+
}
|
|
5731
|
+
|
|
5732
|
+
.session-kind-display {
|
|
5733
|
+
display: inline-flex;
|
|
5734
|
+
align-items: center;
|
|
5735
|
+
padding: 1px 6px;
|
|
5736
|
+
border-radius: 999px;
|
|
5737
|
+
font-size: 0.6875rem;
|
|
5738
|
+
font-weight: 600;
|
|
5739
|
+
color: #8a4b24;
|
|
5740
|
+
background: rgba(215, 122, 82, 0.12);
|
|
5741
|
+
border: 1px solid rgba(215, 122, 82, 0.2);
|
|
5742
|
+
}
|
|
5743
|
+
|
|
5744
|
+
.structured-tool-hint {
|
|
5745
|
+
margin: 4px 0 8px;
|
|
5746
|
+
padding: 6px 10px;
|
|
5747
|
+
border-radius: 10px;
|
|
5748
|
+
font-size: 0.75rem;
|
|
5749
|
+
color: var(--text-muted);
|
|
5750
|
+
background: rgba(215, 122, 82, 0.08);
|
|
5751
|
+
border: 1px dashed rgba(215, 122, 82, 0.18);
|
|
5752
|
+
}
|
|
5753
|
+
|
|
5682
5754
|
.blank-chat {
|
|
5683
5755
|
display: flex;
|
|
5684
5756
|
align-items: center;
|
|
@@ -5688,6 +5760,7 @@
|
|
|
5688
5760
|
min-height: 0;
|
|
5689
5761
|
overflow: auto;
|
|
5690
5762
|
}
|
|
5763
|
+
|
|
5691
5764
|
.blank-chat-inner {
|
|
5692
5765
|
width: 100%;
|
|
5693
5766
|
max-width: 560px;
|
|
@@ -7396,4 +7469,88 @@
|
|
|
7396
7469
|
z-index: 20;
|
|
7397
7470
|
}
|
|
7398
7471
|
|
|
7472
|
+
/* ── 结构化会话状态条 ── */
|
|
7473
|
+
.structured-status-bar {
|
|
7474
|
+
display: flex;
|
|
7475
|
+
align-items: center;
|
|
7476
|
+
gap: 10px;
|
|
7477
|
+
margin: 8px 0 4px;
|
|
7478
|
+
padding: 8px 12px;
|
|
7479
|
+
border-radius: var(--radius-sm);
|
|
7480
|
+
background: rgba(var(--accent-rgb, 99, 102, 241), 0.06);
|
|
7481
|
+
border: 1px solid rgba(var(--accent-rgb, 99, 102, 241), 0.12);
|
|
7482
|
+
font-size: 0.75rem;
|
|
7483
|
+
color: var(--text-secondary);
|
|
7484
|
+
transition: all 0.3s ease;
|
|
7485
|
+
overflow: hidden;
|
|
7486
|
+
}
|
|
7487
|
+
|
|
7488
|
+
.structured-status-bar .status-bar-label {
|
|
7489
|
+
flex-shrink: 0;
|
|
7490
|
+
font-weight: 600;
|
|
7491
|
+
color: var(--accent-soft);
|
|
7492
|
+
}
|
|
7493
|
+
|
|
7494
|
+
.structured-status-bar .status-bar-track {
|
|
7495
|
+
flex: 1;
|
|
7496
|
+
height: 3px;
|
|
7497
|
+
border-radius: 2px;
|
|
7498
|
+
background: rgba(var(--accent-rgb, 99, 102, 241), 0.1);
|
|
7499
|
+
overflow: hidden;
|
|
7500
|
+
position: relative;
|
|
7501
|
+
}
|
|
7502
|
+
|
|
7503
|
+
.structured-status-bar .status-bar-fill {
|
|
7504
|
+
position: absolute;
|
|
7505
|
+
top: 0;
|
|
7506
|
+
left: 0;
|
|
7507
|
+
width: 40%;
|
|
7508
|
+
height: 100%;
|
|
7509
|
+
border-radius: 2px;
|
|
7510
|
+
background: linear-gradient(90deg, transparent, var(--accent-soft), transparent);
|
|
7511
|
+
animation: marqueeScroll 1.5s ease-in-out infinite;
|
|
7512
|
+
}
|
|
7513
|
+
|
|
7514
|
+
@keyframes marqueeScroll {
|
|
7515
|
+
0% { left: -40%; }
|
|
7516
|
+
100% { left: 100%; }
|
|
7517
|
+
}
|
|
7518
|
+
|
|
7519
|
+
.structured-status-bar .status-bar-timer {
|
|
7520
|
+
flex-shrink: 0;
|
|
7521
|
+
font-variant-numeric: tabular-nums;
|
|
7522
|
+
font-family: var(--font-mono);
|
|
7523
|
+
font-size: 0.6875rem;
|
|
7524
|
+
color: var(--text-muted);
|
|
7525
|
+
}
|
|
7526
|
+
|
|
7527
|
+
/* 完成态 */
|
|
7528
|
+
.structured-status-bar.completed {
|
|
7529
|
+
background: rgba(79, 122, 88, 0.06);
|
|
7530
|
+
border-color: rgba(79, 122, 88, 0.15);
|
|
7531
|
+
animation: statusBarFadeOut 2s ease-out 1s forwards;
|
|
7532
|
+
}
|
|
7533
|
+
|
|
7534
|
+
.structured-status-bar.completed .status-bar-label {
|
|
7535
|
+
color: var(--success);
|
|
7536
|
+
}
|
|
7537
|
+
|
|
7538
|
+
.structured-status-bar.completed .status-bar-track {
|
|
7539
|
+
background: rgba(79, 122, 88, 0.1);
|
|
7540
|
+
}
|
|
7541
|
+
|
|
7542
|
+
.structured-status-bar.completed .status-bar-fill {
|
|
7543
|
+
width: 100%;
|
|
7544
|
+
background: var(--success);
|
|
7545
|
+
opacity: 0.5;
|
|
7546
|
+
animation: none;
|
|
7547
|
+
left: 0;
|
|
7548
|
+
}
|
|
7549
|
+
|
|
7550
|
+
@keyframes statusBarFadeOut {
|
|
7551
|
+
0% { opacity: 1; max-height: 50px; margin: 8px 0 4px; padding: 8px 12px; }
|
|
7552
|
+
70% { opacity: 0; max-height: 50px; margin: 8px 0 4px; padding: 8px 12px; }
|
|
7553
|
+
100% { opacity: 0; max-height: 0; margin: 0; padding: 0 12px; border-width: 0; }
|
|
7554
|
+
}
|
|
7555
|
+
|
|
7399
7556
|
/* 结束标记 */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@co0ontty/wand",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "A web terminal for local CLI tools like Claude.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"@xterm/addon-fit": "^0.11.0",
|
|
38
38
|
"express": "^4.21.2",
|
|
39
39
|
"node-pty": "^1.1.0",
|
|
40
|
+
"puppeteer": "^24.40.0",
|
|
40
41
|
"ws": "^8.19.0",
|
|
41
42
|
"xterm": "^5.3.0",
|
|
42
43
|
"xterm-addon-serialize": "^0.11.0"
|