@co0ontty/wand 1.18.12 → 1.20.4
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/cli.js +72 -5
- package/dist/ensure-node-pty-helper.d.ts +1 -0
- package/dist/ensure-node-pty-helper.js +51 -0
- package/dist/git-quick-commit.d.ts +18 -0
- package/dist/git-quick-commit.js +373 -0
- package/dist/process-manager.d.ts +4 -8
- package/dist/process-manager.js +12 -161
- package/dist/prompt-optimizer.d.ts +5 -0
- package/dist/prompt-optimizer.js +72 -0
- package/dist/server-session-routes.d.ts +2 -2
- package/dist/server-session-routes.js +73 -1
- package/dist/server.d.ts +19 -1
- package/dist/server.js +90 -5
- package/dist/tui/index.d.ts +24 -0
- package/dist/tui/index.js +138 -0
- package/dist/tui/layout.d.ts +25 -0
- package/dist/tui/layout.js +198 -0
- package/dist/tui/log-bus.d.ts +23 -0
- package/dist/tui/log-bus.js +111 -0
- package/dist/tui/relative-time.d.ts +4 -0
- package/dist/tui/relative-time.js +27 -0
- package/dist/tui/session-formatter.d.ts +17 -0
- package/dist/tui/session-formatter.js +111 -0
- package/dist/types.d.ts +42 -0
- package/dist/web-ui/content/scripts.js +749 -141
- package/dist/web-ui/content/styles.css +334 -3
- package/dist/web-ui/content/vendor/wterm/wterm.bundle.js +1 -1
- package/package.json +3 -1
|
@@ -188,6 +188,10 @@
|
|
|
188
188
|
min-height: 100dvh;
|
|
189
189
|
height: 100vh;
|
|
190
190
|
height: 100dvh;
|
|
191
|
+
/* 软键盘弹起时由 JS 注入 --app-viewport-height = visualViewport.height,
|
|
192
|
+
整体 flex column 自动收缩,让底部 input-panel 上移贴键盘上沿;
|
|
193
|
+
没注入时退回 100dvh 行为。 */
|
|
194
|
+
height: var(--app-viewport-height, 100dvh);
|
|
191
195
|
line-height: var(--line-height-base);
|
|
192
196
|
overflow: hidden;
|
|
193
197
|
}
|
|
@@ -236,6 +240,8 @@
|
|
|
236
240
|
min-height: 100dvh;
|
|
237
241
|
height: 100vh;
|
|
238
242
|
height: 100dvh;
|
|
243
|
+
/* 与 body 同步:键盘弹起时跟随可见视口收缩。 */
|
|
244
|
+
height: var(--app-viewport-height, 100dvh);
|
|
239
245
|
overflow: hidden;
|
|
240
246
|
}
|
|
241
247
|
|
|
@@ -5719,7 +5725,7 @@
|
|
|
5719
5725
|
background: transparent;
|
|
5720
5726
|
border: none;
|
|
5721
5727
|
color: var(--text-primary);
|
|
5722
|
-
padding: 8px
|
|
5728
|
+
padding: 8px 34px 3px 10px;
|
|
5723
5729
|
outline: none;
|
|
5724
5730
|
resize: none;
|
|
5725
5731
|
min-height: 32px;
|
|
@@ -5847,6 +5853,159 @@
|
|
|
5847
5853
|
transform: scale(0.95);
|
|
5848
5854
|
}
|
|
5849
5855
|
|
|
5856
|
+
/* Prompt optimize button — top-right of the input composer */
|
|
5857
|
+
.prompt-optimize-btn {
|
|
5858
|
+
position: absolute;
|
|
5859
|
+
top: 5px;
|
|
5860
|
+
right: 6px;
|
|
5861
|
+
width: 28px;
|
|
5862
|
+
height: 28px;
|
|
5863
|
+
border-radius: 50%;
|
|
5864
|
+
border: 1px solid rgba(197, 101, 61, 0.22);
|
|
5865
|
+
padding: 0;
|
|
5866
|
+
cursor: pointer;
|
|
5867
|
+
display: inline-flex;
|
|
5868
|
+
align-items: center;
|
|
5869
|
+
justify-content: center;
|
|
5870
|
+
background: linear-gradient(135deg, rgba(255, 250, 242, 0.95) 0%, rgba(232, 197, 174, 0.35) 100%);
|
|
5871
|
+
color: var(--accent);
|
|
5872
|
+
z-index: 4;
|
|
5873
|
+
box-shadow: 0 1px 4px rgba(197, 101, 61, 0.10);
|
|
5874
|
+
transition: background var(--transition-fast), color var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast), border-color var(--transition-fast);
|
|
5875
|
+
}
|
|
5876
|
+
.prompt-optimize-btn:hover {
|
|
5877
|
+
background: linear-gradient(135deg, rgba(255, 250, 242, 1) 0%, rgba(232, 197, 174, 0.55) 100%);
|
|
5878
|
+
color: var(--accent-hover);
|
|
5879
|
+
transform: scale(1.12);
|
|
5880
|
+
border-color: rgba(197, 101, 61, 0.35);
|
|
5881
|
+
box-shadow: 0 2px 10px rgba(197, 101, 61, 0.22), 0 0 0 3px rgba(197, 101, 61, 0.06);
|
|
5882
|
+
}
|
|
5883
|
+
.prompt-optimize-btn:active {
|
|
5884
|
+
transform: scale(0.92);
|
|
5885
|
+
box-shadow: 0 1px 3px rgba(197, 101, 61, 0.15);
|
|
5886
|
+
}
|
|
5887
|
+
.prompt-optimize-btn:disabled {
|
|
5888
|
+
cursor: not-allowed;
|
|
5889
|
+
opacity: 0.6;
|
|
5890
|
+
}
|
|
5891
|
+
.prompt-optimize-btn:disabled:hover {
|
|
5892
|
+
transform: none;
|
|
5893
|
+
background: linear-gradient(135deg, rgba(255, 250, 242, 0.95) 0%, rgba(232, 197, 174, 0.35) 100%);
|
|
5894
|
+
box-shadow: 0 1px 4px rgba(197, 101, 61, 0.10);
|
|
5895
|
+
border-color: rgba(197, 101, 61, 0.22);
|
|
5896
|
+
}
|
|
5897
|
+
.prompt-optimize-icon {
|
|
5898
|
+
transition: transform 0.25s ease, opacity 0.2s ease;
|
|
5899
|
+
transform-origin: center;
|
|
5900
|
+
filter: drop-shadow(0 0 1px rgba(197, 101, 61, 0.3));
|
|
5901
|
+
}
|
|
5902
|
+
.prompt-optimize-btn:hover .prompt-optimize-icon {
|
|
5903
|
+
animation: prompt-optimize-twinkle 1.4s ease-in-out infinite;
|
|
5904
|
+
filter: drop-shadow(0 0 3px rgba(197, 101, 61, 0.4));
|
|
5905
|
+
}
|
|
5906
|
+
@keyframes prompt-optimize-twinkle {
|
|
5907
|
+
0%, 100% { transform: rotate(0deg) scale(1); }
|
|
5908
|
+
50% { transform: rotate(12deg) scale(1.12); }
|
|
5909
|
+
}
|
|
5910
|
+
.prompt-optimize-spinner {
|
|
5911
|
+
position: absolute;
|
|
5912
|
+
inset: 0;
|
|
5913
|
+
border-radius: 50%;
|
|
5914
|
+
pointer-events: none;
|
|
5915
|
+
opacity: 0;
|
|
5916
|
+
background: conic-gradient(from 0deg, transparent 0deg, var(--accent) 270deg, transparent 360deg);
|
|
5917
|
+
mask: radial-gradient(circle, transparent 10px, black 11px);
|
|
5918
|
+
-webkit-mask: radial-gradient(circle, transparent 10px, black 11px);
|
|
5919
|
+
transition: opacity 0.15s ease;
|
|
5920
|
+
}
|
|
5921
|
+
.prompt-optimize-btn.is-loading {
|
|
5922
|
+
color: var(--accent);
|
|
5923
|
+
background: linear-gradient(135deg, rgba(255, 250, 242, 1) 0%, rgba(232, 197, 174, 0.5) 100%);
|
|
5924
|
+
border-color: rgba(197, 101, 61, 0.4);
|
|
5925
|
+
box-shadow: 0 2px 12px rgba(197, 101, 61, 0.25), 0 0 0 3px rgba(197, 101, 61, 0.08);
|
|
5926
|
+
}
|
|
5927
|
+
.prompt-optimize-btn.is-loading .prompt-optimize-icon {
|
|
5928
|
+
animation: prompt-optimize-pulse 1.1s ease-in-out infinite;
|
|
5929
|
+
}
|
|
5930
|
+
.prompt-optimize-btn.is-loading .prompt-optimize-spinner {
|
|
5931
|
+
opacity: 1;
|
|
5932
|
+
animation: prompt-optimize-spin 0.9s linear infinite;
|
|
5933
|
+
}
|
|
5934
|
+
@keyframes prompt-optimize-spin {
|
|
5935
|
+
to { transform: rotate(360deg); }
|
|
5936
|
+
}
|
|
5937
|
+
@keyframes prompt-optimize-pulse {
|
|
5938
|
+
0%, 100% { transform: scale(0.88); opacity: 0.8; }
|
|
5939
|
+
50% { transform: scale(1.15); opacity: 1; }
|
|
5940
|
+
}
|
|
5941
|
+
|
|
5942
|
+
/* 优化中的"魔法橡皮擦":mirror 元素叠在 textarea 上,
|
|
5943
|
+
通过 background-clip: text + color: transparent 让渐变只在
|
|
5944
|
+
字符形状内显示,光斑从左到右滚过文字本身。空白处完全透明,
|
|
5945
|
+
所以观感是"几个字本身在被光扫过",而不是整个输入框背景在闪。 */
|
|
5946
|
+
.prompt-optimize-shimmer-overlay {
|
|
5947
|
+
position: absolute;
|
|
5948
|
+
pointer-events: none;
|
|
5949
|
+
overflow: hidden;
|
|
5950
|
+
white-space: pre-wrap;
|
|
5951
|
+
word-wrap: break-word;
|
|
5952
|
+
overflow-wrap: break-word;
|
|
5953
|
+
color: transparent;
|
|
5954
|
+
background-image: linear-gradient(
|
|
5955
|
+
100deg,
|
|
5956
|
+
rgba(140, 90, 55, 0.55) 0%,
|
|
5957
|
+
rgba(214, 123, 82, 0.95) 35%,
|
|
5958
|
+
rgba(255, 240, 210, 1) 50%,
|
|
5959
|
+
rgba(214, 123, 82, 0.95) 65%,
|
|
5960
|
+
rgba(140, 90, 55, 0.55) 100%
|
|
5961
|
+
);
|
|
5962
|
+
background-size: 250% 100%;
|
|
5963
|
+
background-repeat: no-repeat;
|
|
5964
|
+
background-position: 250% 0;
|
|
5965
|
+
-webkit-background-clip: text;
|
|
5966
|
+
background-clip: text;
|
|
5967
|
+
-webkit-text-fill-color: transparent;
|
|
5968
|
+
animation: prompt-optimize-shimmer 1.4s linear infinite;
|
|
5969
|
+
z-index: 2;
|
|
5970
|
+
}
|
|
5971
|
+
@keyframes prompt-optimize-shimmer {
|
|
5972
|
+
from { background-position: 250% 0; }
|
|
5973
|
+
to { background-position: -150% 0; }
|
|
5974
|
+
}
|
|
5975
|
+
/* 优化中保留 textarea 文字原色,让 mirror 在其上扫过;不再整体
|
|
5976
|
+
灰化输入框,避免"整个书窗一起动"的观感。 */
|
|
5977
|
+
.input-textarea.optimize-flash {
|
|
5978
|
+
animation: prompt-optimize-flash 0.85s ease-out;
|
|
5979
|
+
}
|
|
5980
|
+
@keyframes prompt-optimize-flash {
|
|
5981
|
+
0% { background: rgba(197, 101, 61, 0.18); }
|
|
5982
|
+
100% { background: transparent; }
|
|
5983
|
+
}
|
|
5984
|
+
.prompt-optimize-btn.is-shake {
|
|
5985
|
+
animation: prompt-optimize-shake 0.4s ease-out;
|
|
5986
|
+
color: var(--danger);
|
|
5987
|
+
}
|
|
5988
|
+
@keyframes prompt-optimize-shake {
|
|
5989
|
+
0%, 100% { transform: translateX(0); }
|
|
5990
|
+
20% { transform: translateX(-3px); }
|
|
5991
|
+
40% { transform: translateX(3px); }
|
|
5992
|
+
60% { transform: translateX(-2px); }
|
|
5993
|
+
80% { transform: translateX(2px); }
|
|
5994
|
+
}
|
|
5995
|
+
|
|
5996
|
+
@media (max-width: 720px) {
|
|
5997
|
+
.prompt-optimize-btn {
|
|
5998
|
+
width: 26px;
|
|
5999
|
+
height: 26px;
|
|
6000
|
+
top: 3px;
|
|
6001
|
+
right: 4px;
|
|
6002
|
+
}
|
|
6003
|
+
.prompt-optimize-icon {
|
|
6004
|
+
width: 14px;
|
|
6005
|
+
height: 14px;
|
|
6006
|
+
}
|
|
6007
|
+
}
|
|
6008
|
+
|
|
5850
6009
|
.attachment-preview {
|
|
5851
6010
|
display: flex;
|
|
5852
6011
|
gap: 6px;
|
|
@@ -6930,7 +7089,7 @@
|
|
|
6930
7089
|
|
|
6931
7090
|
.input-textarea {
|
|
6932
7091
|
min-height: 32px;
|
|
6933
|
-
padding: 6px
|
|
7092
|
+
padding: 6px 30px 3px 8px;
|
|
6934
7093
|
font-size: 16px;
|
|
6935
7094
|
line-height: 1.35;
|
|
6936
7095
|
}
|
|
@@ -7256,7 +7415,7 @@
|
|
|
7256
7415
|
}
|
|
7257
7416
|
|
|
7258
7417
|
.input-composer { border-radius: 8px; }
|
|
7259
|
-
.input-textarea { min-height: 28px; padding: 5px
|
|
7418
|
+
.input-textarea { min-height: 28px; padding: 5px 28px 2px 6px; font-size: 16px; }
|
|
7260
7419
|
|
|
7261
7420
|
.btn-circle { width: 28px; height: 28px; min-width: 28px; }
|
|
7262
7421
|
|
|
@@ -10425,4 +10584,176 @@
|
|
|
10425
10584
|
}
|
|
10426
10585
|
}
|
|
10427
10586
|
|
|
10587
|
+
/* ── 顶栏 git 徽章 ── */
|
|
10588
|
+
.topbar-git-slot {
|
|
10589
|
+
display: inline-flex;
|
|
10590
|
+
align-items: center;
|
|
10591
|
+
}
|
|
10592
|
+
.topbar-git-slot:empty {
|
|
10593
|
+
display: none;
|
|
10594
|
+
}
|
|
10595
|
+
.topbar-git-badge {
|
|
10596
|
+
display: inline-flex;
|
|
10597
|
+
align-items: center;
|
|
10598
|
+
gap: 5px;
|
|
10599
|
+
height: 32px;
|
|
10600
|
+
padding: 0 10px;
|
|
10601
|
+
font-family: var(--font-sans);
|
|
10602
|
+
font-size: 0.72rem;
|
|
10603
|
+
font-weight: 500;
|
|
10604
|
+
color: var(--text-secondary);
|
|
10605
|
+
background: transparent;
|
|
10606
|
+
border: 1px solid transparent;
|
|
10607
|
+
border-radius: var(--radius-sm);
|
|
10608
|
+
cursor: pointer;
|
|
10609
|
+
white-space: nowrap;
|
|
10610
|
+
transition: all var(--transition-fast);
|
|
10611
|
+
box-sizing: border-box;
|
|
10612
|
+
line-height: 1;
|
|
10613
|
+
}
|
|
10614
|
+
.topbar-git-badge:hover {
|
|
10615
|
+
background: rgba(255, 255, 255, 0.5);
|
|
10616
|
+
color: var(--text-primary);
|
|
10617
|
+
}
|
|
10618
|
+
.topbar-git-badge:active {
|
|
10619
|
+
transform: scale(0.96);
|
|
10620
|
+
}
|
|
10621
|
+
.topbar-git-icon {
|
|
10622
|
+
flex-shrink: 0;
|
|
10623
|
+
opacity: 0.85;
|
|
10624
|
+
}
|
|
10625
|
+
.topbar-git-branch {
|
|
10626
|
+
font-family: var(--font-mono, monospace);
|
|
10627
|
+
font-weight: 600;
|
|
10628
|
+
max-width: 12em;
|
|
10629
|
+
overflow: hidden;
|
|
10630
|
+
text-overflow: ellipsis;
|
|
10631
|
+
}
|
|
10632
|
+
.topbar-git-count {
|
|
10633
|
+
color: var(--accent);
|
|
10634
|
+
font-weight: 700;
|
|
10635
|
+
font-family: var(--font-mono, monospace);
|
|
10636
|
+
}
|
|
10637
|
+
.topbar-git-clean {
|
|
10638
|
+
color: rgba(60, 160, 90, 0.85);
|
|
10639
|
+
font-weight: 700;
|
|
10640
|
+
font-size: 0.78rem;
|
|
10641
|
+
}
|
|
10642
|
+
|
|
10643
|
+
/* ── 快捷提交模态框 ── */
|
|
10644
|
+
.quick-commit-modal {
|
|
10645
|
+
max-width: 560px;
|
|
10646
|
+
}
|
|
10647
|
+
.quick-commit-modal .modal-body {
|
|
10648
|
+
display: flex;
|
|
10649
|
+
flex-direction: column;
|
|
10650
|
+
gap: 12px;
|
|
10651
|
+
}
|
|
10652
|
+
.qc-files-wrap {
|
|
10653
|
+
max-height: 200px;
|
|
10654
|
+
overflow-y: auto;
|
|
10655
|
+
padding: 8px 10px;
|
|
10656
|
+
border: 1px solid var(--border-color, rgba(0, 0, 0, 0.08));
|
|
10657
|
+
border-radius: 6px;
|
|
10658
|
+
background: rgba(255, 255, 255, 0.45);
|
|
10659
|
+
font-family: var(--font-mono, monospace);
|
|
10660
|
+
font-size: 0.78rem;
|
|
10661
|
+
display: flex;
|
|
10662
|
+
flex-direction: column;
|
|
10663
|
+
gap: 2px;
|
|
10664
|
+
}
|
|
10665
|
+
.qc-empty {
|
|
10666
|
+
color: var(--text-muted);
|
|
10667
|
+
padding: 6px 0;
|
|
10668
|
+
text-align: center;
|
|
10669
|
+
font-style: italic;
|
|
10670
|
+
}
|
|
10671
|
+
.qc-file-row {
|
|
10672
|
+
display: flex;
|
|
10673
|
+
align-items: center;
|
|
10674
|
+
gap: 8px;
|
|
10675
|
+
line-height: 1.5;
|
|
10676
|
+
}
|
|
10677
|
+
.qc-flag {
|
|
10678
|
+
flex-shrink: 0;
|
|
10679
|
+
width: 24px;
|
|
10680
|
+
text-align: center;
|
|
10681
|
+
font-weight: 700;
|
|
10682
|
+
color: var(--text-muted);
|
|
10683
|
+
letter-spacing: 0;
|
|
10684
|
+
}
|
|
10685
|
+
.qc-flag-add { color: rgba(60, 160, 90, 0.95); }
|
|
10686
|
+
.qc-flag-mod { color: rgba(220, 150, 30, 0.95); }
|
|
10687
|
+
.qc-flag-del { color: rgba(200, 70, 70, 0.95); }
|
|
10688
|
+
.qc-flag-ren { color: rgba(110, 130, 200, 0.95); }
|
|
10689
|
+
.qc-flag-untracked { color: rgba(140, 140, 140, 0.95); }
|
|
10690
|
+
.qc-file-path {
|
|
10691
|
+
color: var(--text-secondary);
|
|
10692
|
+
overflow: hidden;
|
|
10693
|
+
text-overflow: ellipsis;
|
|
10694
|
+
white-space: nowrap;
|
|
10695
|
+
flex: 1 1 auto;
|
|
10696
|
+
min-width: 0;
|
|
10697
|
+
}
|
|
10698
|
+
.qc-submodule-badge {
|
|
10699
|
+
flex-shrink: 0;
|
|
10700
|
+
padding: 1px 6px;
|
|
10701
|
+
border-radius: 8px;
|
|
10702
|
+
background: rgba(140, 100, 200, 0.16);
|
|
10703
|
+
color: rgba(110, 70, 180, 0.95);
|
|
10704
|
+
font-size: 0.68rem;
|
|
10705
|
+
font-weight: 600;
|
|
10706
|
+
letter-spacing: 0.02em;
|
|
10707
|
+
white-space: nowrap;
|
|
10708
|
+
}
|
|
10709
|
+
.qc-checkbox-row {
|
|
10710
|
+
display: flex;
|
|
10711
|
+
align-items: center;
|
|
10712
|
+
gap: 8px;
|
|
10713
|
+
font-size: 0.85rem;
|
|
10714
|
+
color: var(--text-primary);
|
|
10715
|
+
cursor: pointer;
|
|
10716
|
+
user-select: none;
|
|
10717
|
+
}
|
|
10718
|
+
.qc-checkbox-row input[type="checkbox"] {
|
|
10719
|
+
width: 16px;
|
|
10720
|
+
height: 16px;
|
|
10721
|
+
cursor: pointer;
|
|
10722
|
+
}
|
|
10723
|
+
.qc-message-row,
|
|
10724
|
+
.qc-tag-row {
|
|
10725
|
+
display: flex;
|
|
10726
|
+
flex-direction: column;
|
|
10727
|
+
gap: 4px;
|
|
10728
|
+
}
|
|
10729
|
+
.qc-message-row.hidden,
|
|
10730
|
+
.qc-tag-row.hidden {
|
|
10731
|
+
display: none;
|
|
10732
|
+
}
|
|
10733
|
+
.qc-message-header {
|
|
10734
|
+
display: flex;
|
|
10735
|
+
align-items: center;
|
|
10736
|
+
justify-content: space-between;
|
|
10737
|
+
gap: 8px;
|
|
10738
|
+
}
|
|
10739
|
+
.qc-message-row textarea {
|
|
10740
|
+
resize: vertical;
|
|
10741
|
+
min-height: 56px;
|
|
10742
|
+
font-family: var(--font-mono, monospace);
|
|
10743
|
+
font-size: 0.85rem;
|
|
10744
|
+
}
|
|
10745
|
+
.quick-commit-modal .worktree-merge-actions {
|
|
10746
|
+
display: flex;
|
|
10747
|
+
justify-content: flex-end;
|
|
10748
|
+
gap: 8px;
|
|
10749
|
+
margin-top: 4px;
|
|
10750
|
+
}
|
|
10751
|
+
|
|
10752
|
+
@media (max-width: 720px) {
|
|
10753
|
+
.topbar-git-branch { max-width: 8em; }
|
|
10754
|
+
.topbar-git-badge { padding: 0 8px; font-size: 0.7rem; }
|
|
10755
|
+
.quick-commit-modal { max-width: 95vw; }
|
|
10756
|
+
.qc-files-wrap { max-height: 160px; }
|
|
10757
|
+
}
|
|
10758
|
+
|
|
10428
10759
|
/* 结束标记 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var WTermLib=(()=>{var u=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var v=(B,A)=>{for(var t in A)u(B,t,{get:A[t],enumerable:!0})},p=(B,A,t,s)=>{if(A&&typeof A=="object"||typeof A=="function")for(let e of x(A))!b.call(B,e)&&e!==t&&u(B,e,{get:()=>A[e],enumerable:!(s=F(A,e))||s.enumerable});return B};var m=B=>p(u({},"__esModule",{value:!0}),B);var N={};v(N,{InputHandler:()=>w,Renderer:()=>c,WTerm:()=>L,WasmBridge:()=>a,WebSocketTransport:()=>d});var G="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";function k(B){let A=atob(B),t=new Uint8Array(A.length);for(let s=0;s<A.length;s++)t[s]=A.charCodeAt(s);return t.buffer}var a=class B{constructor(A){this.gridPtr=0,this.dirtyPtr=0,this.writeBufferPtr=0,this.cellSize=12,this.maxCols=256,this.encoder=new TextEncoder,this.decoder=new TextDecoder,this.exports=A.exports,this.memory=this.exports.memory}static async load(A){let t;if(A){let e=await fetch(A);if(!e.ok)throw new Error(`[wterm] Failed to load WASM from ${A}: ${e.status} ${e.statusText}`);t=await e.arrayBuffer()}else t=k(G);let{instance:s}=await WebAssembly.instantiate(t);return new B(s)}init(A,t){this.exports.init(A,t),this._updatePointers()}_updatePointers(){this.gridPtr=this.exports.getGridPtr(),this.dirtyPtr=this.exports.getDirtyPtr(),this.writeBufferPtr=this.exports.getWriteBuffer(),this.cellSize=this.exports.getCellSize(),this.maxCols=this.exports.getMaxCols(),this._dv=new DataView(this.memory.buffer)}writeString(A){let t=this.encoder.encode(A);this.writeRaw(t)}writeRaw(A){let t=new Uint8Array(this.memory.buffer,this.writeBufferPtr,8192),s=0;for(;s<A.length;){let e=Math.min(A.length-s,8192);t.set(A.subarray(s,s+e)),this.exports.writeBytes(e),s+=e}}getCell(A,t){let s=this.gridPtr+(A*this.maxCols+t)*this.cellSize,e=this._dv;return{char:e.getUint32(s,!0),fg:e.getUint16(s+4,!0),bg:e.getUint16(s+6,!0),flags:e.getUint8(s+8)}}isDirtyRow(A){return new Uint8Array(this.memory.buffer,this.dirtyPtr,256)[A]!==0}clearDirty(){this.exports.clearDirty()}getCursor(){return{row:this.exports.getCursorRow(),col:this.exports.getCursorCol(),visible:this.exports.getCursorVisible()!==0}}getCols(){return this.exports.getCols()}getRows(){return this.exports.getRows()}cursorKeysApp(){return this.exports.getCursorKeysApp()!==0}bracketedPaste(){return this.exports.getBracketedPaste()!==0}usingAltScreen(){return this.exports.getUsingAltScreen()!==0}getTitle(){if(this.exports.getTitleChanged()===0)return null;let A=this.exports.getTitlePtr(),t=this.exports.getTitleLen(),s=new Uint8Array(this.memory.buffer,A,t);return this.decoder.decode(s)}getResponse(){let A=this.exports.getResponseLen();if(A===0)return null;let t=this.exports.getResponsePtr(),s=new Uint8Array(this.memory.buffer,t,A),e=this.decoder.decode(s);return this.exports.clearResponse(),e}getScrollbackCount(){return this.exports.getScrollbackCount()}getScrollbackCell(A,t){let e=this.exports.getScrollbackLine(A)+t*this.cellSize,i=this._dv;return{char:i.getUint32(e,!0),fg:i.getUint16(e+4,!0),bg:i.getUint16(e+6,!0),flags:i.getUint8(e+8)}}getScrollbackLineLen(A){return this.exports.getScrollbackLineLen(A)}resize(A,t){this.exports.resizeTerminal(A,t),this._updatePointers()}};var d=class{constructor(A={}){this._ws=null,this._reconnectTimer=null,this._reconnectDelay=1e3,this._closed=!1,this._buffer=[],this.url=A.url??null,this.reconnect=A.reconnect!==!1,this.maxReconnectDelay=A.maxReconnectDelay??3e4,this.onData=A.onData??null,this.onOpen=A.onOpen??null,this.onClose=A.onClose??null,this.onError=A.onError??null}connect(A){if(A&&(this.url=A),!this.url)throw new Error("No WebSocket URL provided");this._closed=!1,this._ws=new WebSocket(this.url),this._ws.binaryType="arraybuffer",this._ws.onopen=()=>{this._reconnectDelay=1e3,this._flushBuffer(),this.onOpen&&this.onOpen()},this._ws.onmessage=t=>{this.onData&&(t.data instanceof ArrayBuffer?this.onData(new Uint8Array(t.data)):this.onData(t.data))},this._ws.onclose=()=>{this.onClose&&this.onClose(),this.reconnect&&!this._closed&&this._scheduleReconnect()},this._ws.onerror=t=>{this.onError&&this.onError(t),this._ws?.close()}}send(A){this._ws&&this._ws.readyState===WebSocket.OPEN?typeof A=="string"?this._ws.send(new TextEncoder().encode(A)):this._ws.send(A):this._buffer.push(A)}close(){this._closed=!0,this._reconnectTimer&&clearTimeout(this._reconnectTimer),this._ws&&this._ws.close()}get connected(){return this._ws!==null&&this._ws.readyState===WebSocket.OPEN}_flushBuffer(){let A=this._buffer.splice(0);for(let t of A)this.send(t)}_scheduleReconnect(){this._reconnectTimer=setTimeout(()=>{this.connect()},this._reconnectDelay),this._reconnectDelay=Math.min(this._reconnectDelay*2,this.maxReconnectDelay)}};function D(B){if(B===256)return null;if(B<16)return`var(--term-color-${B})`;if(B<232){let t=B-16,s=Math.floor(t/36)*51,e=Math.floor(t/6)%6*51,i=t%6*51;return`rgb(${s},${e},${i})`}let A=(B-232)*10+8;return`rgb(${A},${A},${A})`}function y(B,A,t){let s=B,e=A;if(t&32){let Q=s;s=e,e=Q,s===256&&(s=0),e===256&&(e=7)}let i=D(s),r=D(e),o="";i&&(o+=`color:${i};`),r&&(o+=`background:${r};`),t&1&&(o+="font-weight:bold;"),t&2&&(o+="opacity:0.5;"),t&4&&(o+="font-style:italic;");let E=[];return t&128&&E.push("line-through"),E.length&&(o+=`text-decoration:${E.join(" ")};`),t&64&&(o+="visibility:hidden;"),o}function f(B,A,t){if(t){let s=document.createElement("span");s.style.cssText=t,s.textContent=A,B.appendChild(s)}else B.appendChild(document.createTextNode(A))}function S(B,A,t){let s=B,e=A;return t&32&&([s,e]=[e,s],s===256&&(s=0),e===256&&(e=7)),{fg:D(s)||"var(--term-fg)",bg:D(e)||"var(--term-bg)"}}function R(B,A,t){switch(B){case 9600:return`linear-gradient(${A} 50%,${t} 50%)`;case 9601:return`linear-gradient(${t} 87.5%,${A} 87.5%)`;case 9602:return`linear-gradient(${t} 75%,${A} 75%)`;case 9603:return`linear-gradient(${t} 62.5%,${A} 62.5%)`;case 9604:return`linear-gradient(${t} 50%,${A} 50%)`;case 9605:return`linear-gradient(${t} 37.5%,${A} 37.5%)`;case 9606:return`linear-gradient(${t} 25%,${A} 25%)`;case 9607:return`linear-gradient(${t} 12.5%,${A} 12.5%)`;case 9608:return A;case 9609:return`linear-gradient(to right,${A} 87.5%,${t} 87.5%)`;case 9610:return`linear-gradient(to right,${A} 75%,${t} 75%)`;case 9611:return`linear-gradient(to right,${A} 62.5%,${t} 62.5%)`;case 9612:return`linear-gradient(to right,${A} 50%,${t} 50%)`;case 9613:return`linear-gradient(to right,${A} 37.5%,${t} 37.5%)`;case 9614:return`linear-gradient(to right,${A} 25%,${t} 25%)`;case 9615:return`linear-gradient(to right,${A} 12.5%,${t} 12.5%)`;case 9616:return`linear-gradient(to right,${t} 50%,${A} 50%)`;case 9617:return`color-mix(in srgb,${A} 25%,${t})`;case 9618:return`color-mix(in srgb,${A} 50%,${t})`;case 9619:return`color-mix(in srgb,${A} 75%,${t})`;case 9620:return`linear-gradient(${A} 12.5%,${t} 12.5%)`;case 9621:return`linear-gradient(to right,${t} 87.5%,${A} 87.5%)`;default:{let e={9622:[!1,!1,!0,!1],9623:[!1,!1,!1,!0],9624:[!0,!1,!1,!1],9625:[!0,!1,!0,!0],9626:[!0,!1,!1,!0],9627:[!0,!0,!0,!1],9628:[!0,!0,!1,!0],9629:[!1,!0,!1,!1],9630:[!1,!0,!0,!1],9631:[!1,!0,!0,!0]}[B];if(!e)return A;let[i,r,o,E]=e;if(i&&r&&o&&E)return A;let Q=[],C=["0 0","100% 0","0 100%","100% 100%"];return e.forEach((g,I)=>{g&&Q.push(`linear-gradient(${A},${A}) ${C[I]}/50% 50% no-repeat`)}),Q.push(t),Q.join(",")}}}var c=class{constructor(A){this.rows=0,this.cols=0,this.rowEls=[],this.prevCursorRow=-1,this.prevCursorCol=-1,this._scrollbackRowEls=[],this._renderedScrollbackCount=0,this.container=A}setup(A,t){this.cols=A,this.rows=t,this.container.innerHTML="",this.rowEls=[],this._scrollbackRowEls=[],this._renderedScrollbackCount=0;let s=document.createDocumentFragment();for(let e=0;e<t;e++){let i=document.createElement("div");i.className="term-row",s.appendChild(i),this.rowEls.push(i)}this.container.appendChild(s),this.prevCursorRow=-1,this.prevCursorCol=-1}_buildRowContent(A,t,s,e){A.textContent="";let i="",r="",o=0,E=Q=>{if(r)if(e>=o&&e<Q){let C=e-o,g=r.slice(0,C),I=r[C],h=r.slice(C+1);g&&f(A,g,i);let n=document.createElement("span");n.className="term-cursor",i&&(n.style.cssText=i),n.textContent=I,A.appendChild(n),h&&f(A,h,i)}else f(A,r,i)};for(let Q=0;Q<this.cols;Q++){let C=t(Q),g=Q<s,I=g?C.char:0;if(g&&I>=9600&&I<=9631){E(Q);let h=S(C.fg,C.bg,C.flags),n=document.createElement("span");n.className=Q===e?"term-block term-cursor":"term-block",n.style.background=R(I,h.fg,h.bg),C.flags&2&&(n.style.opacity="0.5"),A.appendChild(n),i="",r="",o=Q+1}else{let h=g&&I>=32?String.fromCodePoint(I):" ",n=g?y(C.fg,C.bg,C.flags):"";n!==i?(E(Q),i=n,r=h,o=Q):r+=h}}E(this.cols)}_buildScrollbackRowEl(A,t){let s=document.createElement("div");s.className="term-row term-scrollback-row";let e=A.getScrollbackLineLen(t);return this._buildRowContent(s,i=>A.getScrollbackCell(t,i),e,-1),s}syncScrollback(A){let t=A.getScrollbackCount();if(t!==this._renderedScrollbackCount){if(t>this._renderedScrollbackCount){let s=t-this._renderedScrollbackCount,e=this.rowEls[0]??null,i=document.createDocumentFragment();for(let r=s-1;r>=0;r--){let o=this._buildScrollbackRowEl(A,r);i.appendChild(o),this._scrollbackRowEls.push(o)}this.container.insertBefore(i,e)}else{let s=this._renderedScrollbackCount-t;for(let e=0;e<s;e++){let i=this._scrollbackRowEls.shift();i&&i.remove()}}this._renderedScrollbackCount=t}}render(A){let t=A.getRows(),s=A.getCols(),e=!1;(t!==this.rows||s!==this.cols)&&(this.setup(s,t),e=!0),this.syncScrollback(A);let i=A.getCursor(),r=i.visible,o=i.row!==this.prevCursorRow||i.col!==this.prevCursorCol;for(let E=0;E<this.rows;E++){let Q=e||A.isDirtyRow(E),C=E===this.prevCursorRow&&o,g=E===i.row;if(Q||C||g&&o){let I=g&&r?i.col:-1;this._buildRowContent(this.rowEls[E],h=>A.getCell(E,h),this.cols,I)}}this.prevCursorRow=i.row,this.prevCursorCol=i.col,A.clearDirty()}};var U={ArrowUp:"\x1B[A",ArrowDown:"\x1B[B",ArrowRight:"\x1B[C",ArrowLeft:"\x1B[D",Home:"\x1B[H",End:"\x1B[F"},H={ArrowUp:"\x1BOA",ArrowDown:"\x1BOB",ArrowRight:"\x1BOC",ArrowLeft:"\x1BOD",Home:"\x1BOH",End:"\x1BOF"},M={Enter:"\r",Backspace:"\x7F",Tab:" ",Escape:"\x1B",Insert:"\x1B[2~",Delete:"\x1B[3~",PageUp:"\x1B[5~",PageDown:"\x1B[6~",F1:"\x1BOP",F2:"\x1BOQ",F3:"\x1BOR",F4:"\x1BOS",F5:"\x1B[15~",F6:"\x1B[17~",F7:"\x1B[18~",F8:"\x1B[19~",F9:"\x1B[20~",F10:"\x1B[21~",F11:"\x1B[23~",F12:"\x1B[24~"},w=class{constructor(A,t,s){this.composing=!1,this.element=A,this.onData=t,this.getBridge=s,this.textarea=document.createElement("textarea"),this.textarea.setAttribute("autocapitalize","off"),this.textarea.setAttribute("autocomplete","off"),this.textarea.setAttribute("autocorrect","off"),this.textarea.setAttribute("spellcheck","false"),this.textarea.setAttribute("enterkeyhint","send"),this.textarea.setAttribute("tabindex","0"),this.textarea.setAttribute("aria-hidden","true");let e=this.textarea.style;e.position="absolute",e.left="-9999px",e.top="0",e.width="1px",e.height="1px",e.opacity="0",e.overflow="hidden",e.border="0",e.padding="0",e.margin="0",e.outline="none",e.resize="none",e.pointerEvents="none",e.caretColor="transparent",e.color="transparent",e.background="transparent",A.appendChild(this.textarea),this._onKeyDown=this.handleKeyDown.bind(this),this._onPaste=this.handlePaste.bind(this),this._onCompositionStart=this.handleCompositionStart.bind(this),this._onCompositionEnd=this.handleCompositionEnd.bind(this),this._onInput=this.handleInput.bind(this),this._onFocus=()=>this.element.classList.add("focused"),this._onBlur=()=>this.element.classList.remove("focused"),this.textarea.addEventListener("keydown",this._onKeyDown),this.textarea.addEventListener("paste",this._onPaste),this.textarea.addEventListener("compositionstart",this._onCompositionStart),this.textarea.addEventListener("compositionend",this._onCompositionEnd),this.textarea.addEventListener("input",this._onInput),this.textarea.addEventListener("focus",this._onFocus),this.textarea.addEventListener("blur",this._onBlur)}focus(){this.textarea.focus({preventScroll:!0})}destroy(){this.textarea.removeEventListener("keydown",this._onKeyDown),this.textarea.removeEventListener("paste",this._onPaste),this.textarea.removeEventListener("compositionstart",this._onCompositionStart),this.textarea.removeEventListener("compositionend",this._onCompositionEnd),this.textarea.removeEventListener("input",this._onInput),this.textarea.removeEventListener("focus",this._onFocus),this.textarea.removeEventListener("blur",this._onBlur),this.element.classList.remove("focused"),this.textarea.remove()}handleKeyDown(A){if(this.composing)return;if((A.metaKey||A.ctrlKey)&&A.key==="c"){let s=window.getSelection();if(s&&s.toString().length>0)return}if((A.metaKey||A.ctrlKey)&&A.key==="v"){this.textarea.focus();return}if(A.metaKey&&!A.ctrlKey){if(A.key==="Backspace")A.preventDefault(),this.onData("");else if(A.key==="a"){A.preventDefault();let s=window.getSelection();if(s){let e=document.createRange();e.selectNodeContents(this.element),s.removeAllRanges(),s.addRange(e)}}return}A.preventDefault();let t=this.keyToSequence(A);t&&this.onData(t)}handlePaste(A){A.preventDefault();let t=A.clipboardData?.getData("text");if(!t)return;let s=this.getBridge();s&&s.bracketedPaste()?this.onData("\x1B[200~"+t+"\x1B[201~"):this.onData(t)}handleCompositionStart(){this.composing=!0}handleCompositionEnd(A){this.composing=!1,A.data&&this.onData(A.data),this.textarea.value=""}handleInput(){if(this.composing)return;let A=this.textarea.value;A&&(this.onData(A),this.textarea.value="")}keyToSequence(A){if(A.ctrlKey&&!A.altKey&&!A.metaKey){if(A.key.length===1){let o=A.key.toLowerCase().charCodeAt(0);if(o>=97&&o<=122)return String.fromCharCode(o-96)}if(A.key==="[")return"\x1B";if(A.key==="\\")return"";if(A.key==="]")return"";if(A.key==="^")return"";if(A.key==="_")return""}if(A.key==="Enter"&&A.shiftKey)return"\x1B[13;2u";if(A.key==="Tab"&&A.shiftKey)return"\x1B[Z";let t=M[A.key];if(t)return A.altKey?"\x1B"+t:t;let s=this.getBridge(),r=(s&&s.cursorKeysApp()?H:U)[A.key];return r?A.altKey?"\x1B"+r:r:A.key.length===1&&!A.ctrlKey&&!A.metaKey?A.altKey?"\x1B"+A.key:A.key:null}};var l=class{constructor(A,t={}){this.bridge=null,this.renderer=null,this.input=null,this.rafId=null,this.resizeObserver=null,this._destroyed=!1,this._shouldScrollToBottom=!1,this.element=A,this.wasmUrl=t.wasmUrl,this.cols=t.cols||80,this.rows=t.rows||24,this.autoResize=t.autoResize!==!1,this.onData=t.onData||null,this.onTitle=t.onTitle||null,this.onResize=t.onResize||null,this._container=document.createElement("div"),this._container.className="term-grid",this.element.appendChild(this._container),this.element.classList.add("wterm"),t.cursorBlink&&this.element.classList.add("cursor-blink"),this._onClickFocus=()=>{let s=window.getSelection();(!s||s.isCollapsed)&&this.input?.focus()},this.element.addEventListener("click",this._onClickFocus)}async init(){try{if(this.bridge=await a.load(this.wasmUrl),this._destroyed)return this;this.bridge.init(this.cols,this.rows),this.renderer=new c(this._container),this.renderer.setup(this.cols,this.rows),this.input=new w(this.element,A=>{this.onData?this.onData(A):this.write(A)},()=>this.bridge),this.autoResize?this._setupResizeObserver():this._lockHeight(),this.input.focus(),this._initialRender()}catch(A){throw this.destroy(),new Error(`wterm: failed to initialize: ${A instanceof Error?A.message:A}`)}return this}_isScrolledToBottom(){let A=this.element;return A.scrollHeight-A.scrollTop-A.clientHeight<5}_scrollToBottom(){this.element.scrollTop=this.element.scrollHeight}write(A){this.bridge&&(this._shouldScrollToBottom=this._isScrolledToBottom(),typeof A=="string"?this.bridge.writeString(A):this.bridge.writeRaw(A),this._scheduleRender())}resize(A,t){this.bridge&&(this._shouldScrollToBottom=this._isScrolledToBottom(),this.cols=A,this.rows=t,this.bridge.resize(A,t),this.renderer?.setup(A,t),this._scheduleRender(),this.onResize&&this.onResize(A,t))}focus(){this.input?this.input.focus():this.element.focus()}_scheduleRender(){this.rafId==null&&(this.rafId=requestAnimationFrame(()=>{this.rafId=null,this._doRender()}))}_initialRender(){this._doRender()}_doRender(){if(!this.bridge||!this.renderer)return;this.renderer.render(this.bridge);let A=this.bridge.getScrollbackCount()>0;this.element.classList.toggle("has-scrollback",A),this._shouldScrollToBottom&&this._scrollToBottom();let t=this.bridge.getTitle();t!==null&&this.onTitle&&this.onTitle(t);let s=this.bridge.getResponse();s!==null&&this.onData&&this.onData(s)}_lockHeight(){let A=getComputedStyle(this.element),t=parseFloat(A.getPropertyValue("--term-row-height"))||17,s=this.rows*t,e=(parseFloat(A.paddingTop)||0)+(parseFloat(A.paddingBottom)||0);A.boxSizing==="border-box"&&(e+=(parseFloat(A.borderTopWidth)||0)+(parseFloat(A.borderBottomWidth)||0)),this.element.style.height=`${s+e}px`}_measureCharSize(){let A=document.createElement("span");A.className="term-cell",A.textContent="W",A.style.position="absolute",A.style.visibility="hidden",this._container.appendChild(A);let t=A.getBoundingClientRect(),s=t.width,e=t.height;return A.remove(),s===0||e===0?null:{width:s,height:e}}_setupResizeObserver(){let A=this._measureCharSize();if(!A)return;let t=A.width,s=A.height;this.resizeObserver=new ResizeObserver(e=>{let i=this._measureCharSize();i&&(t=i.width,s=i.height);for(let r of e){let{width:o,height:E}=r.contentRect,Q=Math.max(1,Math.floor(o/t)),C=Math.max(1,Math.floor(E/s));(Q!==this.cols||C!==this.rows)&&this.resize(Q,C)}}),this.resizeObserver.observe(this.element)}destroy(){this._destroyed=!0,this.rafId!=null&&cancelAnimationFrame(this.rafId),this.resizeObserver&&this.resizeObserver.disconnect(),this.input&&this.input.destroy(),this.element.removeEventListener("click",this._onClickFocus),this.element.innerHTML=""}};var J=/\x1b\[([0-9;]*)m/g,L=class extends l{write(A){typeof A=="string"&&(A=A.replace(J,(t,s)=>{if(!s)return t;let e=s.split(";").filter(i=>i!=="4"&&i!=="24");return e.length?"\x1B["+e.join(";")+"m":""})),super.write(A)}reset(){!this.bridge||!this.renderer||(this.bridge.init(this.cols,this.rows),this.renderer.setup(this.cols,this.rows),this._scheduleRender())}remeasure(){if(!this.bridge||!this.renderer)return;let A=this._measureCharSize();if(!A)return;let t=getComputedStyle(this.element),s=this.element.clientWidth-(parseFloat(t.paddingLeft)||0)-(parseFloat(t.paddingRight)||0),e=this.element.clientHeight-(parseFloat(t.paddingTop)||0)-(parseFloat(t.paddingBottom)||0);if(s<=0||e<=0)return;let i=Math.max(1,Math.floor(s/A.width)),r=Math.max(1,Math.floor(e/A.height));i!==this.cols||r!==this.rows?this.resize(i,r):this._scheduleRender()}get viewport(){return this.element}};return m(N);})();
|
|
1
|
+
"use strict";var WTermLib=(()=>{var u=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var v=(B,A)=>{for(var t in A)u(B,t,{get:A[t],enumerable:!0})},p=(B,A,t,s)=>{if(A&&typeof A=="object"||typeof A=="function")for(let e of x(A))!b.call(B,e)&&e!==t&&u(B,e,{get:()=>A[e],enumerable:!(s=F(A,e))||s.enumerable});return B};var m=B=>p(u({},"__esModule",{value:!0}),B);var N={};v(N,{InputHandler:()=>w,Renderer:()=>c,WTerm:()=>L,WasmBridge:()=>a,WebSocketTransport:()=>d});var G="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";function k(B){let A=atob(B),t=new Uint8Array(A.length);for(let s=0;s<A.length;s++)t[s]=A.charCodeAt(s);return t.buffer}var a=class B{constructor(A){this.gridPtr=0,this.dirtyPtr=0,this.writeBufferPtr=0,this.cellSize=12,this.maxCols=256,this.encoder=new TextEncoder,this.decoder=new TextDecoder,this.exports=A.exports,this.memory=this.exports.memory}static async load(A){let t;if(A){let e=await fetch(A);if(!e.ok)throw new Error(`[wterm] Failed to load WASM from ${A}: ${e.status} ${e.statusText}`);t=await e.arrayBuffer()}else t=k(G);let{instance:s}=await WebAssembly.instantiate(t);return new B(s)}init(A,t){this.exports.init(A,t),this._updatePointers()}_updatePointers(){this.gridPtr=this.exports.getGridPtr(),this.dirtyPtr=this.exports.getDirtyPtr(),this.writeBufferPtr=this.exports.getWriteBuffer(),this.cellSize=this.exports.getCellSize(),this.maxCols=this.exports.getMaxCols(),this._dv=new DataView(this.memory.buffer)}writeString(A){let t=this.encoder.encode(A);this.writeRaw(t)}writeRaw(A){let t=new Uint8Array(this.memory.buffer,this.writeBufferPtr,8192),s=0;for(;s<A.length;){let e=Math.min(A.length-s,8192);t.set(A.subarray(s,s+e)),this.exports.writeBytes(e),s+=e}}getCell(A,t){let s=this.gridPtr+(A*this.maxCols+t)*this.cellSize,e=this._dv;return{char:e.getUint32(s,!0),fg:e.getUint16(s+4,!0),bg:e.getUint16(s+6,!0),flags:e.getUint8(s+8)}}isDirtyRow(A){return new Uint8Array(this.memory.buffer,this.dirtyPtr,256)[A]!==0}clearDirty(){this.exports.clearDirty()}getCursor(){return{row:this.exports.getCursorRow(),col:this.exports.getCursorCol(),visible:this.exports.getCursorVisible()!==0}}getCols(){return this.exports.getCols()}getRows(){return this.exports.getRows()}cursorKeysApp(){return this.exports.getCursorKeysApp()!==0}bracketedPaste(){return this.exports.getBracketedPaste()!==0}usingAltScreen(){return this.exports.getUsingAltScreen()!==0}getTitle(){if(this.exports.getTitleChanged()===0)return null;let A=this.exports.getTitlePtr(),t=this.exports.getTitleLen(),s=new Uint8Array(this.memory.buffer,A,t);return this.decoder.decode(s)}getResponse(){let A=this.exports.getResponseLen();if(A===0)return null;let t=this.exports.getResponsePtr(),s=new Uint8Array(this.memory.buffer,t,A),e=this.decoder.decode(s);return this.exports.clearResponse(),e}getScrollbackCount(){return this.exports.getScrollbackCount()}getScrollbackCell(A,t){let e=this.exports.getScrollbackLine(A)+t*this.cellSize,i=this._dv;return{char:i.getUint32(e,!0),fg:i.getUint16(e+4,!0),bg:i.getUint16(e+6,!0),flags:i.getUint8(e+8)}}getScrollbackLineLen(A){return this.exports.getScrollbackLineLen(A)}resize(A,t){this.exports.resizeTerminal(A,t),this._updatePointers()}};var d=class{constructor(A={}){this._ws=null,this._reconnectTimer=null,this._reconnectDelay=1e3,this._closed=!1,this._buffer=[],this.url=A.url??null,this.reconnect=A.reconnect!==!1,this.maxReconnectDelay=A.maxReconnectDelay??3e4,this.onData=A.onData??null,this.onOpen=A.onOpen??null,this.onClose=A.onClose??null,this.onError=A.onError??null}connect(A){if(A&&(this.url=A),!this.url)throw new Error("No WebSocket URL provided");this._closed=!1,this._ws=new WebSocket(this.url),this._ws.binaryType="arraybuffer",this._ws.onopen=()=>{this._reconnectDelay=1e3,this._flushBuffer(),this.onOpen&&this.onOpen()},this._ws.onmessage=t=>{this.onData&&(t.data instanceof ArrayBuffer?this.onData(new Uint8Array(t.data)):this.onData(t.data))},this._ws.onclose=()=>{this.onClose&&this.onClose(),this.reconnect&&!this._closed&&this._scheduleReconnect()},this._ws.onerror=t=>{this.onError&&this.onError(t),this._ws?.close()}}send(A){this._ws&&this._ws.readyState===WebSocket.OPEN?typeof A=="string"?this._ws.send(new TextEncoder().encode(A)):this._ws.send(A):this._buffer.push(A)}close(){this._closed=!0,this._reconnectTimer&&clearTimeout(this._reconnectTimer),this._ws&&this._ws.close()}get connected(){return this._ws!==null&&this._ws.readyState===WebSocket.OPEN}_flushBuffer(){let A=this._buffer.splice(0);for(let t of A)this.send(t)}_scheduleReconnect(){this._reconnectTimer=setTimeout(()=>{this.connect()},this._reconnectDelay),this._reconnectDelay=Math.min(this._reconnectDelay*2,this.maxReconnectDelay)}};function D(B){if(B===256)return null;if(B<16)return`var(--term-color-${B})`;if(B<232){let t=B-16,s=Math.floor(t/36)*51,e=Math.floor(t/6)%6*51,i=t%6*51;return`rgb(${s},${e},${i})`}let A=(B-232)*10+8;return`rgb(${A},${A},${A})`}function y(B,A,t){let s=B,e=A;if(t&32){let Q=s;s=e,e=Q,s===256&&(s=0),e===256&&(e=7)}let i=D(s),r=D(e),o="";i&&(o+=`color:${i};`),r&&(o+=`background:${r};`),t&1&&(o+="font-weight:bold;"),t&2&&(o+="opacity:0.5;"),t&4&&(o+="font-style:italic;");let E=[];return t&128&&E.push("line-through"),E.length&&(o+=`text-decoration:${E.join(" ")};`),t&64&&(o+="visibility:hidden;"),o}function f(B,A,t){if(t){let s=document.createElement("span");s.style.cssText=t,s.textContent=A,B.appendChild(s)}else B.appendChild(document.createTextNode(A))}function S(B,A,t){let s=B,e=A;return t&32&&([s,e]=[e,s],s===256&&(s=0),e===256&&(e=7)),{fg:D(s)||"var(--term-fg)",bg:D(e)||"var(--term-bg)"}}function R(B,A,t){switch(B){case 9600:return`linear-gradient(${A} 50%,${t} 50%)`;case 9601:return`linear-gradient(${t} 87.5%,${A} 87.5%)`;case 9602:return`linear-gradient(${t} 75%,${A} 75%)`;case 9603:return`linear-gradient(${t} 62.5%,${A} 62.5%)`;case 9604:return`linear-gradient(${t} 50%,${A} 50%)`;case 9605:return`linear-gradient(${t} 37.5%,${A} 37.5%)`;case 9606:return`linear-gradient(${t} 25%,${A} 25%)`;case 9607:return`linear-gradient(${t} 12.5%,${A} 12.5%)`;case 9608:return A;case 9609:return`linear-gradient(to right,${A} 87.5%,${t} 87.5%)`;case 9610:return`linear-gradient(to right,${A} 75%,${t} 75%)`;case 9611:return`linear-gradient(to right,${A} 62.5%,${t} 62.5%)`;case 9612:return`linear-gradient(to right,${A} 50%,${t} 50%)`;case 9613:return`linear-gradient(to right,${A} 37.5%,${t} 37.5%)`;case 9614:return`linear-gradient(to right,${A} 25%,${t} 25%)`;case 9615:return`linear-gradient(to right,${A} 12.5%,${t} 12.5%)`;case 9616:return`linear-gradient(to right,${t} 50%,${A} 50%)`;case 9617:return`color-mix(in srgb,${A} 25%,${t})`;case 9618:return`color-mix(in srgb,${A} 50%,${t})`;case 9619:return`color-mix(in srgb,${A} 75%,${t})`;case 9620:return`linear-gradient(${A} 12.5%,${t} 12.5%)`;case 9621:return`linear-gradient(to right,${t} 87.5%,${A} 87.5%)`;default:{let e={9622:[!1,!1,!0,!1],9623:[!1,!1,!1,!0],9624:[!0,!1,!1,!1],9625:[!0,!1,!0,!0],9626:[!0,!1,!1,!0],9627:[!0,!0,!0,!1],9628:[!0,!0,!1,!0],9629:[!1,!0,!1,!1],9630:[!1,!0,!0,!1],9631:[!1,!0,!0,!0]}[B];if(!e)return A;let[i,r,o,E]=e;if(i&&r&&o&&E)return A;let Q=[],C=["0 0","100% 0","0 100%","100% 100%"];return e.forEach((g,I)=>{g&&Q.push(`linear-gradient(${A},${A}) ${C[I]}/50% 50% no-repeat`)}),Q.push(t),Q.join(",")}}}var c=class{constructor(A){this.rows=0,this.cols=0,this.rowEls=[],this.prevCursorRow=-1,this.prevCursorCol=-1,this._scrollbackRowEls=[],this._renderedScrollbackCount=0,this.container=A}setup(A,t){this.cols=A,this.rows=t,this.container.innerHTML="",this.rowEls=[],this._scrollbackRowEls=[],this._renderedScrollbackCount=0;let s=document.createDocumentFragment();for(let e=0;e<t;e++){let i=document.createElement("div");i.className="term-row",s.appendChild(i),this.rowEls.push(i)}this.container.appendChild(s),this.prevCursorRow=-1,this.prevCursorCol=-1}_buildRowContent(A,t,s,e){A.textContent="";let i="",r="",o=0,E=Q=>{if(r)if(e>=o&&e<Q){let C=e-o,g=r.slice(0,C),I=r[C],h=r.slice(C+1);g&&f(A,g,i);let n=document.createElement("span");n.className="term-cursor",i&&(n.style.cssText=i),n.textContent=I,A.appendChild(n),h&&f(A,h,i)}else f(A,r,i)};for(let Q=0;Q<this.cols;Q++){let C=t(Q),g=Q<s,I=g?C.char:0;if(g&&I>=9600&&I<=9631){E(Q);let h=S(C.fg,C.bg,C.flags),n=document.createElement("span");n.className=Q===e?"term-block term-cursor":"term-block",n.style.background=R(I,h.fg,h.bg),C.flags&2&&(n.style.opacity="0.5"),A.appendChild(n),i="",r="",o=Q+1}else{let h=g&&I>=32?String.fromCodePoint(I):" ",n=g?y(C.fg,C.bg,C.flags):"";n!==i?(E(Q),i=n,r=h,o=Q):r+=h}}E(this.cols)}_buildScrollbackRowEl(A,t){let s=document.createElement("div");s.className="term-row term-scrollback-row";let e=A.getScrollbackLineLen(t);return this._buildRowContent(s,i=>A.getScrollbackCell(t,i),e,-1),s}syncScrollback(A){let t=A.getScrollbackCount();if(t!==this._renderedScrollbackCount){if(t>this._renderedScrollbackCount){let s=t-this._renderedScrollbackCount,e=this.rowEls[0]??null,i=document.createDocumentFragment();for(let r=s-1;r>=0;r--){let o=this._buildScrollbackRowEl(A,r);i.appendChild(o),this._scrollbackRowEls.push(o)}this.container.insertBefore(i,e)}else{let s=this._renderedScrollbackCount-t;for(let e=0;e<s;e++){let i=this._scrollbackRowEls.shift();i&&i.remove()}}this._renderedScrollbackCount=t}}render(A){let t=A.getRows(),s=A.getCols(),e=!1;(t!==this.rows||s!==this.cols)&&(this.setup(s,t),e=!0),this.syncScrollback(A);let i=A.getCursor(),r=i.visible,o=i.row!==this.prevCursorRow||i.col!==this.prevCursorCol;for(let E=0;E<this.rows;E++){let Q=e||A.isDirtyRow(E),C=E===this.prevCursorRow&&o,g=E===i.row;if(Q||C||g&&o){let I=g&&r?i.col:-1;this._buildRowContent(this.rowEls[E],h=>A.getCell(E,h),this.cols,I)}}this.prevCursorRow=i.row,this.prevCursorCol=i.col,A.clearDirty()}};var U={ArrowUp:"\x1B[A",ArrowDown:"\x1B[B",ArrowRight:"\x1B[C",ArrowLeft:"\x1B[D",Home:"\x1B[H",End:"\x1B[F"},H={ArrowUp:"\x1BOA",ArrowDown:"\x1BOB",ArrowRight:"\x1BOC",ArrowLeft:"\x1BOD",Home:"\x1BOH",End:"\x1BOF"},M={Enter:"\r",Backspace:"\x7F",Tab:" ",Escape:"\x1B",Insert:"\x1B[2~",Delete:"\x1B[3~",PageUp:"\x1B[5~",PageDown:"\x1B[6~",F1:"\x1BOP",F2:"\x1BOQ",F3:"\x1BOR",F4:"\x1BOS",F5:"\x1B[15~",F6:"\x1B[17~",F7:"\x1B[18~",F8:"\x1B[19~",F9:"\x1B[20~",F10:"\x1B[21~",F11:"\x1B[23~",F12:"\x1B[24~"},w=class{constructor(A,t,s){this.composing=!1,this.element=A,this.onData=t,this.getBridge=s,this.textarea=document.createElement("textarea"),this.textarea.setAttribute("autocapitalize","off"),this.textarea.setAttribute("autocomplete","off"),this.textarea.setAttribute("autocorrect","off"),this.textarea.setAttribute("spellcheck","false"),this.textarea.setAttribute("enterkeyhint","send"),this.textarea.setAttribute("tabindex","0"),this.textarea.setAttribute("aria-hidden","true");let e=this.textarea.style;e.position="absolute",e.left="-9999px",e.top="0",e.width="1px",e.height="1px",e.opacity="0",e.overflow="hidden",e.border="0",e.padding="0",e.margin="0",e.outline="none",e.resize="none",e.pointerEvents="none",e.caretColor="transparent",e.color="transparent",e.background="transparent",A.appendChild(this.textarea),this._onKeyDown=this.handleKeyDown.bind(this),this._onPaste=this.handlePaste.bind(this),this._onCompositionStart=this.handleCompositionStart.bind(this),this._onCompositionEnd=this.handleCompositionEnd.bind(this),this._onInput=this.handleInput.bind(this),this._onFocus=()=>this.element.classList.add("focused"),this._onBlur=()=>this.element.classList.remove("focused"),this.textarea.addEventListener("keydown",this._onKeyDown),this.textarea.addEventListener("paste",this._onPaste),this.textarea.addEventListener("compositionstart",this._onCompositionStart),this.textarea.addEventListener("compositionend",this._onCompositionEnd),this.textarea.addEventListener("input",this._onInput),this.textarea.addEventListener("focus",this._onFocus),this.textarea.addEventListener("blur",this._onBlur)}focus(){this.textarea.focus({preventScroll:!0})}destroy(){this.textarea.removeEventListener("keydown",this._onKeyDown),this.textarea.removeEventListener("paste",this._onPaste),this.textarea.removeEventListener("compositionstart",this._onCompositionStart),this.textarea.removeEventListener("compositionend",this._onCompositionEnd),this.textarea.removeEventListener("input",this._onInput),this.textarea.removeEventListener("focus",this._onFocus),this.textarea.removeEventListener("blur",this._onBlur),this.element.classList.remove("focused"),this.textarea.remove()}handleKeyDown(A){if(this.composing)return;if((A.metaKey||A.ctrlKey)&&A.key==="c"){let s=window.getSelection();if(s&&s.toString().length>0)return}if((A.metaKey||A.ctrlKey)&&A.key==="v"){this.textarea.focus();return}if(A.metaKey&&!A.ctrlKey){if(A.key==="Backspace")A.preventDefault(),this.onData("");else if(A.key==="a"){A.preventDefault();let s=window.getSelection();if(s){let e=document.createRange();e.selectNodeContents(this.element),s.removeAllRanges(),s.addRange(e)}}return}A.preventDefault();let t=this.keyToSequence(A);t&&this.onData(t)}handlePaste(A){A.preventDefault();let t=A.clipboardData?.getData("text");if(!t)return;let s=this.getBridge();s&&s.bracketedPaste()?this.onData("\x1B[200~"+t+"\x1B[201~"):this.onData(t)}handleCompositionStart(){this.composing=!0}handleCompositionEnd(A){this.composing=!1,A.data&&this.onData(A.data),this.textarea.value=""}handleInput(){if(this.composing)return;let A=this.textarea.value;A&&(this.onData(A),this.textarea.value="")}keyToSequence(A){if(A.ctrlKey&&!A.altKey&&!A.metaKey){if(A.key.length===1){let o=A.key.toLowerCase().charCodeAt(0);if(o>=97&&o<=122)return String.fromCharCode(o-96)}if(A.key==="[")return"\x1B";if(A.key==="\\")return"";if(A.key==="]")return"";if(A.key==="^")return"";if(A.key==="_")return""}if(A.key==="Enter"&&A.shiftKey)return"\x1B[13;2u";if(A.key==="Tab"&&A.shiftKey)return"\x1B[Z";let t=M[A.key];if(t)return A.altKey?"\x1B"+t:t;let s=this.getBridge(),r=(s&&s.cursorKeysApp()?H:U)[A.key];return r?A.altKey?"\x1B"+r:r:A.key.length===1&&!A.ctrlKey&&!A.metaKey?A.altKey?"\x1B"+A.key:A.key:null}};var l=class{constructor(A,t={}){this.bridge=null,this.renderer=null,this.input=null,this.rafId=null,this.resizeObserver=null,this._destroyed=!1,this._shouldScrollToBottom=!1,this.element=A,this.wasmUrl=t.wasmUrl,this.cols=t.cols||80,this.rows=t.rows||24,this.autoResize=t.autoResize!==!1,this.onData=t.onData||null,this.onTitle=t.onTitle||null,this.onResize=t.onResize||null,this._container=document.createElement("div"),this._container.className="term-grid",this.element.appendChild(this._container),this.element.classList.add("wterm"),t.cursorBlink&&this.element.classList.add("cursor-blink"),this._onClickFocus=()=>{let s=window.getSelection();(!s||s.isCollapsed)&&this.input?.focus()},this.element.addEventListener("click",this._onClickFocus)}async init(){try{if(this.bridge=await a.load(this.wasmUrl),this._destroyed)return this;this.bridge.init(this.cols,this.rows),this.renderer=new c(this._container),this.renderer.setup(this.cols,this.rows),this.input=new w(this.element,A=>{this.onData?this.onData(A):this.write(A)},()=>this.bridge),this.autoResize?this._setupResizeObserver():this._lockHeight(),this.input.focus(),this._initialRender()}catch(A){throw this.destroy(),new Error(`wterm: failed to initialize: ${A instanceof Error?A.message:A}`)}return this}_isScrolledToBottom(){let A=this.element;return A.scrollHeight-A.scrollTop-A.clientHeight<5}_scrollToBottom(){this.element.scrollTop=this.element.scrollHeight}write(A){this.bridge&&(this._shouldScrollToBottom=this._isScrolledToBottom(),typeof A=="string"?this.bridge.writeString(A):this.bridge.writeRaw(A),this._scheduleRender())}resize(A,t){this.bridge&&(this._shouldScrollToBottom=this._isScrolledToBottom(),this.cols=A,this.rows=t,this.bridge.resize(A,t),this.renderer?.setup(A,t),this._scheduleRender(),this.onResize&&this.onResize(A,t))}focus(){this.input?this.input.focus():this.element.focus()}_scheduleRender(){this.rafId==null&&(this.rafId=requestAnimationFrame(()=>{this.rafId=null,this._doRender()}))}_initialRender(){this._doRender()}_doRender(){if(!this.bridge||!this.renderer)return;this.renderer.render(this.bridge);let A=this.bridge.getScrollbackCount()>0;this.element.classList.toggle("has-scrollback",A),this._shouldScrollToBottom&&this._scrollToBottom();let t=this.bridge.getTitle();t!==null&&this.onTitle&&this.onTitle(t);let s=this.bridge.getResponse();s!==null&&this.onData&&this.onData(s)}_lockHeight(){let A=getComputedStyle(this.element),t=parseFloat(A.getPropertyValue("--term-row-height"))||17,s=this.rows*t,e=(parseFloat(A.paddingTop)||0)+(parseFloat(A.paddingBottom)||0);A.boxSizing==="border-box"&&(e+=(parseFloat(A.borderTopWidth)||0)+(parseFloat(A.borderBottomWidth)||0)),this.element.style.height=`${s+e}px`}_measureCharSize(){let A=document.createElement("span");A.className="term-cell",A.textContent="W",A.style.position="absolute",A.style.visibility="hidden",this._container.appendChild(A);let t=A.getBoundingClientRect(),s=t.width,e=t.height;return A.remove(),s===0||e===0?null:{width:s,height:e}}_setupResizeObserver(){let A=this._measureCharSize();if(!A)return;let t=A.width,s=A.height;this.resizeObserver=new ResizeObserver(e=>{let i=this._measureCharSize();i&&(t=i.width,s=i.height);for(let r of e){let{width:o,height:E}=r.contentRect,Q=Math.max(1,Math.floor(o/t)),C=Math.max(1,Math.floor(E/s));(Q!==this.cols||C!==this.rows)&&this.resize(Q,C)}}),this.resizeObserver.observe(this.element)}destroy(){this._destroyed=!0,this.rafId!=null&&cancelAnimationFrame(this.rafId),this.resizeObserver&&this.resizeObserver.disconnect(),this.input&&this.input.destroy(),this.element.removeEventListener("click",this._onClickFocus),this.element.innerHTML=""}};var J=/\x1b\[([0-9;]*)m/g,L=class extends l{write(A){typeof A=="string"&&(A=A.replace(J,(t,s)=>{if(!s)return t;let e=s.split(";").filter(i=>i!=="4"&&i!=="24");return e.length?"\x1B["+e.join(";")+"m":""})),super.write(A)}reset(){!this.bridge||!this.renderer||(this.bridge.init(this.cols,this.rows),this.renderer.setup(this.cols,this.rows),this._scheduleRender())}remeasure(){if(!this.bridge||!this.renderer)return;let A=this._measureCharSize();if(!A)return;let t=getComputedStyle(this.element),s=this.element.clientWidth-(parseFloat(t.paddingLeft)||0)-(parseFloat(t.paddingRight)||0),e=this.element.clientHeight-(parseFloat(t.paddingTop)||0)-(parseFloat(t.paddingBottom)||0);if(s<=0||e<=0)return;let i=Math.max(1,Math.floor(s/A.width)),r=Math.max(1,Math.floor(e/A.height));i!==this.cols||r!==this.rows?this.resize(i,r):this._scheduleRender()}};return m(N);})();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@co0ontty/wand",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.20.4",
|
|
4
4
|
"description": "A web terminal for local CLI tools like Claude.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -40,11 +40,13 @@
|
|
|
40
40
|
"compression": "^1.8.1",
|
|
41
41
|
"express": "^4.21.2",
|
|
42
42
|
"multer": "^2.1.1",
|
|
43
|
+
"neo-blessed": "^0.2.0",
|
|
43
44
|
"node-pty": "^1.1.0",
|
|
44
45
|
"puppeteer": "^24.40.0",
|
|
45
46
|
"ws": "^8.19.0"
|
|
46
47
|
},
|
|
47
48
|
"devDependencies": {
|
|
49
|
+
"@types/blessed": "^0.1.27",
|
|
48
50
|
"@types/express": "^4.17.21",
|
|
49
51
|
"@types/node": "^22.13.14",
|
|
50
52
|
"@types/ws": "^8.18.1",
|