@quanta-intellect/vessel-browser 0.1.146 → 0.1.148

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.
@@ -88,8 +88,19 @@ const ContentChannels = {
88
88
  };
89
89
  const DevToolsChannels = {
90
90
  DEVTOOLS_PANEL_TOGGLE: "devtools-panel:toggle",
91
+ DEVTOOLS_PANEL_CLOSE: "devtools-panel:close",
92
+ DEVTOOLS_PANEL_OPEN_TAB: "devtools-panel:open-tab",
93
+ DEVTOOLS_PANEL_SELECT_TAB: "devtools-panel:select-tab",
94
+ DEVTOOLS_PANEL_STATE_GET: "devtools-panel:state-get",
91
95
  DEVTOOLS_PANEL_STATE: "devtools-panel:state",
92
- DEVTOOLS_PANEL_RESIZE: "devtools-panel:resize"
96
+ DEVTOOLS_PANEL_RESIZE_START: "devtools-panel:resize-start",
97
+ DEVTOOLS_PANEL_RESIZE: "devtools-panel:resize",
98
+ DEVTOOLS_PANEL_RESIZE_COMMIT: "devtools-panel:resize-commit",
99
+ DEVTOOLS_PANEL_POPOUT: "devtools-panel:popout",
100
+ DEVTOOLS_PANEL_DOCK: "devtools-panel:dock",
101
+ DEVTOOLS_PANEL_HOST_STATE_GET: "devtools-panel:host-state-get",
102
+ DEVTOOLS_PANEL_HOST_STATE: "devtools-panel:host-state",
103
+ DEVTOOLS_PAGE_MAP_REVEAL: "devtools-panel:page-map:reveal"
93
104
  };
94
105
  const DownloadChannels = {
95
106
  DOWNLOAD_STARTED: "download:started",
@@ -518,11 +529,30 @@ const api = {
518
529
  },
519
530
  devtoolsPanel: {
520
531
  toggle: () => electron.ipcRenderer.invoke(Channels.DEVTOOLS_PANEL_TOGGLE),
532
+ close: () => electron.ipcRenderer.invoke(Channels.DEVTOOLS_PANEL_CLOSE),
533
+ openTab: (tab) => electron.ipcRenderer.invoke(Channels.DEVTOOLS_PANEL_OPEN_TAB, tab),
534
+ startResize: () => electron.ipcRenderer.invoke(Channels.DEVTOOLS_PANEL_RESIZE_START),
521
535
  resize: (height) => electron.ipcRenderer.invoke(Channels.DEVTOOLS_PANEL_RESIZE, height),
536
+ commitResize: () => electron.ipcRenderer.invoke(Channels.DEVTOOLS_PANEL_RESIZE_COMMIT),
537
+ popOut: () => electron.ipcRenderer.invoke(Channels.DEVTOOLS_PANEL_POPOUT),
538
+ dock: () => electron.ipcRenderer.invoke(Channels.DEVTOOLS_PANEL_DOCK),
539
+ getState: () => electron.ipcRenderer.invoke(Channels.DEVTOOLS_PANEL_STATE_GET),
540
+ getHostState: () => electron.ipcRenderer.invoke(Channels.DEVTOOLS_PANEL_HOST_STATE_GET),
541
+ revealElement: (selector) => electron.ipcRenderer.invoke(Channels.DEVTOOLS_PAGE_MAP_REVEAL, { selector }),
522
542
  onStateUpdate: (cb) => {
523
543
  const handler = (_, state) => cb(state);
524
544
  electron.ipcRenderer.on(Channels.DEVTOOLS_PANEL_STATE, handler);
525
545
  return () => electron.ipcRenderer.removeListener(Channels.DEVTOOLS_PANEL_STATE, handler);
546
+ },
547
+ onHostStateUpdate: (cb) => {
548
+ const handler = (_, state) => cb(state);
549
+ electron.ipcRenderer.on(Channels.DEVTOOLS_PANEL_HOST_STATE, handler);
550
+ return () => electron.ipcRenderer.removeListener(Channels.DEVTOOLS_PANEL_HOST_STATE, handler);
551
+ },
552
+ onSelectTab: (cb) => {
553
+ const handler = (_, tab) => cb(tab);
554
+ electron.ipcRenderer.on(Channels.DEVTOOLS_PANEL_SELECT_TAB, handler);
555
+ return () => electron.ipcRenderer.removeListener(Channels.DEVTOOLS_PANEL_SELECT_TAB, handler);
526
556
  }
527
557
  },
528
558
  find: {
@@ -3640,6 +3640,39 @@
3640
3640
  color: var(--status-error);
3641
3641
  }
3642
3642
 
3643
+ .agent-trace-footer {
3644
+ display: flex;
3645
+ align-items: center;
3646
+ justify-content: space-between;
3647
+ gap: 10px;
3648
+ margin-top: 2px;
3649
+ padding-top: 10px;
3650
+ border-top: 1px solid var(--border-subtle);
3651
+ color: var(--text-muted);
3652
+ font-size: 11px;
3653
+ line-height: 1.45;
3654
+ }
3655
+
3656
+ .agent-trace-footer span {
3657
+ min-width: 0;
3658
+ }
3659
+
3660
+ .agent-trace-link {
3661
+ flex-shrink: 0;
3662
+ border: none;
3663
+ background: transparent;
3664
+ color: var(--accent-primary);
3665
+ font-size: 11px;
3666
+ font-weight: 600;
3667
+ padding: 2px 0;
3668
+ cursor: pointer;
3669
+ }
3670
+
3671
+ .agent-trace-link:hover {
3672
+ color: var(--accent-warm);
3673
+ text-decoration: underline;
3674
+ }
3675
+
3643
3676
  /* ═══════════════════════════════════════
3644
3677
  Chat messages — distinct bubbles
3645
3678
  ═══════════════════════════════════════ */
@@ -4817,6 +4850,7 @@
4817
4850
  .agent-panel-header,
4818
4851
  .agent-section-header,
4819
4852
  .agent-panel-controls,
4853
+ .agent-trace-footer,
4820
4854
  .agent-checkpoint-row,
4821
4855
  .agent-card.compact,
4822
4856
  .agent-card-actions,
@@ -6340,6 +6374,7 @@
6340
6374
  background: var(--surface-active);
6341
6375
  }
6342
6376
  .devtools-panel {
6377
+ position: relative;
6343
6378
  width: 100%;
6344
6379
  height: 100%;
6345
6380
  display: flex;
@@ -6352,6 +6387,43 @@
6352
6387
  border-top: 1px solid var(--border-visible);
6353
6388
  }
6354
6389
 
6390
+ .devtools-panel.tracking-resize {
6391
+ position: fixed;
6392
+ left: 0;
6393
+ right: 0;
6394
+ bottom: 0;
6395
+ height: var(--devtools-panel-height);
6396
+ }
6397
+
6398
+ .devtools-resize-handle {
6399
+ position: absolute;
6400
+ top: -1px;
6401
+ left: 0;
6402
+ right: 0;
6403
+ height: 8px;
6404
+ z-index: 5;
6405
+ cursor: row-resize;
6406
+ touch-action: none;
6407
+ }
6408
+
6409
+ .devtools-resize-handle::after {
6410
+ content: "";
6411
+ position: absolute;
6412
+ left: 50%;
6413
+ top: 2px;
6414
+ width: 44px;
6415
+ height: 2px;
6416
+ border-radius: 999px;
6417
+ background: transparent;
6418
+ transform: translateX(-50%);
6419
+ transition: background var(--duration-fast) var(--ease-in-out);
6420
+ }
6421
+
6422
+ .devtools-resize-handle:hover::after,
6423
+ .devtools-resize-handle.resizing::after {
6424
+ background: var(--border-visible);
6425
+ }
6426
+
6355
6427
  /* Tab bar */
6356
6428
  .devtools-tabs {
6357
6429
  display: flex;
@@ -6366,7 +6438,7 @@
6366
6438
  }
6367
6439
 
6368
6440
  .devtools-tab {
6369
- padding: 6px 14px;
6441
+ padding: 6px 10px;
6370
6442
  font-size: 11px;
6371
6443
  font-weight: 500;
6372
6444
  color: var(--text-muted);
@@ -6378,6 +6450,8 @@
6378
6450
  border-color var(--duration-fast) var(--ease-in-out);
6379
6451
  font-family: var(--font-ui);
6380
6452
  letter-spacing: 0.02em;
6453
+ white-space: nowrap;
6454
+ flex-shrink: 0;
6381
6455
  }
6382
6456
 
6383
6457
  .devtools-tab:hover {
@@ -6417,7 +6491,12 @@
6417
6491
  }
6418
6492
 
6419
6493
  .devtools-close-btn {
6420
- padding: 4px 8px;
6494
+ display: inline-flex;
6495
+ align-items: center;
6496
+ justify-content: center;
6497
+ width: 26px;
6498
+ height: 24px;
6499
+ padding: 0;
6421
6500
  font-size: 14px;
6422
6501
  color: var(--text-muted);
6423
6502
  cursor: pointer;
@@ -6670,6 +6749,354 @@
6670
6749
  width: 60px;
6671
6750
  }
6672
6751
 
6752
+ /* Agent trace view */
6753
+ .devtools-agent-trace {
6754
+ flex: 1;
6755
+ overflow-y: auto;
6756
+ padding: 4px 0;
6757
+ font-size: 11px;
6758
+ }
6759
+
6760
+ .trace-entry {
6761
+ display: grid;
6762
+ grid-template-columns: 60px 72px 180px minmax(160px, 1fr) 76px 56px;
6763
+ gap: 8px;
6764
+ padding: 4px 12px;
6765
+ border-bottom: 1px solid var(--border-subtle);
6766
+ align-items: center;
6767
+ }
6768
+
6769
+ .trace-entry:hover {
6770
+ background: var(--bg-secondary);
6771
+ }
6772
+
6773
+ .trace-entry.failed {
6774
+ background: color-mix(in srgb, var(--status-error) 6%, transparent);
6775
+ }
6776
+
6777
+ .trace-time,
6778
+ .trace-duration {
6779
+ font-family: var(--font-mono);
6780
+ font-size: 10px;
6781
+ color: var(--text-muted);
6782
+ }
6783
+
6784
+ .trace-kind,
6785
+ .trace-status {
6786
+ font-size: 10px;
6787
+ font-weight: 700;
6788
+ text-transform: uppercase;
6789
+ }
6790
+
6791
+ .trace-kind.tool-start,
6792
+ .trace-status.running {
6793
+ color: var(--accent-primary);
6794
+ }
6795
+
6796
+ .trace-kind.tool-complete,
6797
+ .trace-status.completed {
6798
+ color: var(--accent-secondary);
6799
+ }
6800
+
6801
+ .trace-kind.tool-error,
6802
+ .trace-status.failed {
6803
+ color: var(--error);
6804
+ }
6805
+
6806
+ .trace-title,
6807
+ .trace-detail {
6808
+ overflow: hidden;
6809
+ text-overflow: ellipsis;
6810
+ white-space: nowrap;
6811
+ }
6812
+
6813
+ .trace-title {
6814
+ font-weight: 600;
6815
+ color: var(--text-primary);
6816
+ }
6817
+
6818
+ .trace-detail {
6819
+ font-family: var(--font-mono);
6820
+ font-size: 10px;
6821
+ color: var(--text-secondary);
6822
+ }
6823
+
6824
+ /* Page map view */
6825
+ .devtools-page-map {
6826
+ flex: 1;
6827
+ overflow-y: auto;
6828
+ display: flex;
6829
+ flex-direction: column;
6830
+ min-height: 0;
6831
+ }
6832
+
6833
+ .page-map-overview {
6834
+ display: grid;
6835
+ grid-template-columns: minmax(0, 1fr) auto;
6836
+ gap: 12px;
6837
+ padding: 10px 12px;
6838
+ border-bottom: 1px solid var(--border-visible);
6839
+ background: var(--bg-secondary);
6840
+ }
6841
+
6842
+ .page-map-page {
6843
+ min-width: 0;
6844
+ display: flex;
6845
+ flex-direction: column;
6846
+ gap: 2px;
6847
+ }
6848
+
6849
+ .page-map-title,
6850
+ .page-map-url,
6851
+ .page-map-element-label,
6852
+ .page-map-element-selector,
6853
+ .page-map-element-state {
6854
+ overflow: hidden;
6855
+ text-overflow: ellipsis;
6856
+ white-space: nowrap;
6857
+ }
6858
+
6859
+ .page-map-title {
6860
+ color: var(--text-primary);
6861
+ font-weight: 700;
6862
+ font-size: 12px;
6863
+ }
6864
+
6865
+ .page-map-url {
6866
+ color: var(--text-muted);
6867
+ font-family: var(--font-mono);
6868
+ font-size: 10px;
6869
+ }
6870
+
6871
+ .page-map-stats {
6872
+ display: grid;
6873
+ grid-template-columns: repeat(4, 54px);
6874
+ gap: 6px;
6875
+ }
6876
+
6877
+ .page-map-stat {
6878
+ display: flex;
6879
+ flex-direction: column;
6880
+ align-items: flex-end;
6881
+ gap: 1px;
6882
+ }
6883
+
6884
+ .page-map-stat-value {
6885
+ font-family: var(--font-mono);
6886
+ font-size: 15px;
6887
+ font-weight: 700;
6888
+ color: var(--text-primary);
6889
+ }
6890
+
6891
+ .page-map-stat-label {
6892
+ font-size: 9px;
6893
+ color: var(--text-muted);
6894
+ text-transform: uppercase;
6895
+ letter-spacing: 0.04em;
6896
+ }
6897
+
6898
+ .page-map-issues {
6899
+ display: flex;
6900
+ flex-wrap: wrap;
6901
+ gap: 6px;
6902
+ padding: 8px 12px;
6903
+ border-bottom: 1px solid var(--border-subtle);
6904
+ }
6905
+
6906
+ .page-map-issue {
6907
+ padding: 3px 7px;
6908
+ border-radius: var(--radius-sm);
6909
+ color: var(--error);
6910
+ background: color-mix(in srgb, var(--status-error) 10%, transparent);
6911
+ font-size: 10px;
6912
+ }
6913
+
6914
+ .page-map-elements {
6915
+ flex: 1;
6916
+ min-height: 0;
6917
+ overflow-y: auto;
6918
+ font-family: var(--font-mono);
6919
+ font-size: 10px;
6920
+ }
6921
+
6922
+ .page-map-header,
6923
+ .page-map-row {
6924
+ display: grid;
6925
+ grid-template-columns: 28px 96px minmax(120px, 1.1fr) minmax(140px, 1.4fr) 90px 82px;
6926
+ gap: 8px;
6927
+ align-items: center;
6928
+ }
6929
+
6930
+ .page-map-header {
6931
+ position: sticky;
6932
+ top: 0;
6933
+ z-index: 1;
6934
+ padding: 4px 12px;
6935
+ background: var(--bg-secondary);
6936
+ border-bottom: 1px solid var(--border-visible);
6937
+ color: var(--text-secondary);
6938
+ font-family: var(--font-ui);
6939
+ font-size: 10px;
6940
+ font-weight: 700;
6941
+ text-transform: uppercase;
6942
+ letter-spacing: 0.04em;
6943
+ }
6944
+
6945
+ .page-map-row {
6946
+ padding: 4px 12px;
6947
+ border-bottom: 1px solid var(--border-subtle);
6948
+ cursor: pointer;
6949
+ }
6950
+
6951
+ .page-map-row:hover {
6952
+ background: var(--bg-secondary);
6953
+ }
6954
+
6955
+ .page-map-row:focus-visible {
6956
+ outline: 1px solid var(--accent-primary);
6957
+ outline-offset: -1px;
6958
+ }
6959
+
6960
+ .page-map-row:active {
6961
+ background: color-mix(in srgb, var(--accent-primary) 10%, transparent);
6962
+ }
6963
+
6964
+ .page-map-index {
6965
+ color: var(--text-muted);
6966
+ font-variant-numeric: tabular-nums;
6967
+ }
6968
+
6969
+ .page-map-element-sub {
6970
+ display: block;
6971
+ color: var(--text-muted);
6972
+ font-size: 9px;
6973
+ white-space: nowrap;
6974
+ overflow: hidden;
6975
+ text-overflow: ellipsis;
6976
+ }
6977
+
6978
+ .page-map-element-selector {
6979
+ display: flex;
6980
+ align-items: center;
6981
+ gap: 6px;
6982
+ min-width: 0;
6983
+ }
6984
+
6985
+ .page-map-selector-text {
6986
+ color: var(--text-muted);
6987
+ flex: 1;
6988
+ min-width: 0;
6989
+ white-space: nowrap;
6990
+ overflow: hidden;
6991
+ text-overflow: ellipsis;
6992
+ }
6993
+
6994
+ .page-map-copy-btn {
6995
+ flex-shrink: 0;
6996
+ display: inline-flex;
6997
+ align-items: center;
6998
+ justify-content: center;
6999
+ width: 22px;
7000
+ height: 22px;
7001
+ padding: 0;
7002
+ border: 1px solid var(--border-visible);
7003
+ border-radius: var(--radius-sm);
7004
+ background: var(--bg-elevated);
7005
+ color: var(--text-secondary);
7006
+ cursor: pointer;
7007
+ }
7008
+
7009
+ .page-map-copy-btn:hover {
7010
+ background: var(--bg-secondary);
7011
+ color: var(--text-primary);
7012
+ }
7013
+
7014
+ .page-map-copy-btn.copied {
7015
+ color: var(--accent-secondary);
7016
+ border-color: var(--accent-secondary);
7017
+ }
7018
+
7019
+ .page-map-filter-row {
7020
+ display: flex;
7021
+ align-items: center;
7022
+ gap: 8px;
7023
+ padding: 6px 12px;
7024
+ border-bottom: 1px solid var(--border-subtle);
7025
+ }
7026
+
7027
+ .page-map-filter {
7028
+ flex: 1;
7029
+ font-family: var(--font-ui);
7030
+ font-size: 11px;
7031
+ padding: 4px 8px;
7032
+ border: 1px solid var(--border-visible);
7033
+ border-radius: var(--radius-sm);
7034
+ background: var(--bg-elevated);
7035
+ color: var(--text-primary);
7036
+ }
7037
+
7038
+ .page-map-filter:focus {
7039
+ outline: none;
7040
+ border-color: var(--accent-primary);
7041
+ }
7042
+
7043
+ .page-map-filter-count {
7044
+ flex-shrink: 0;
7045
+ font-family: var(--font-ui);
7046
+ font-size: 10px;
7047
+ color: var(--text-muted);
7048
+ font-variant-numeric: tabular-nums;
7049
+ }
7050
+
7051
+ .page-map-reveal-status {
7052
+ padding: 5px 12px;
7053
+ font-family: var(--font-ui);
7054
+ font-size: 10px;
7055
+ color: var(--error);
7056
+ background: color-mix(in srgb, var(--status-error) 6%, transparent);
7057
+ border-bottom: 1px solid var(--border-subtle);
7058
+ }
7059
+
7060
+ .page-map-row.blocked {
7061
+ background: color-mix(in srgb, var(--status-error) 4%, transparent);
7062
+ }
7063
+
7064
+ .page-map-row.ready .page-map-element-tag {
7065
+ color: var(--accent-secondary);
7066
+ }
7067
+
7068
+ .page-map-element-tag {
7069
+ font-weight: 700;
7070
+ color: var(--accent-primary);
7071
+ }
7072
+
7073
+ .page-map-element-label {
7074
+ color: var(--text-primary);
7075
+ min-width: 0;
7076
+ }
7077
+
7078
+ .page-map-element-bounds {
7079
+ color: var(--text-muted);
7080
+ }
7081
+
7082
+ .page-map-element-state {
7083
+ font-family: var(--font-ui);
7084
+ font-size: 10px;
7085
+ font-weight: 700;
7086
+ }
7087
+
7088
+ .page-map-element-state.ready {
7089
+ color: var(--accent-secondary);
7090
+ }
7091
+
7092
+ .page-map-element-state.blocked {
7093
+ color: var(--error);
7094
+ }
7095
+
7096
+ .page-map-empty {
7097
+ min-height: 120px;
7098
+ }
7099
+
6673
7100
  /* Export dropdown */
6674
7101
  .devtools-export-wrap {
6675
7102
  position: relative;
@@ -6824,26 +7251,38 @@
6824
7251
  /* Scrollbar styling */
6825
7252
  .devtools-console::-webkit-scrollbar,
6826
7253
  .devtools-network::-webkit-scrollbar,
6827
- .devtools-activity::-webkit-scrollbar {
7254
+ .devtools-activity::-webkit-scrollbar,
7255
+ .devtools-agent-trace::-webkit-scrollbar,
7256
+ .devtools-page-map::-webkit-scrollbar,
7257
+ .page-map-elements::-webkit-scrollbar {
6828
7258
  width: 6px;
6829
7259
  }
6830
7260
 
6831
7261
  .devtools-console::-webkit-scrollbar-track,
6832
7262
  .devtools-network::-webkit-scrollbar-track,
6833
- .devtools-activity::-webkit-scrollbar-track {
7263
+ .devtools-activity::-webkit-scrollbar-track,
7264
+ .devtools-agent-trace::-webkit-scrollbar-track,
7265
+ .devtools-page-map::-webkit-scrollbar-track,
7266
+ .page-map-elements::-webkit-scrollbar-track {
6834
7267
  background: transparent;
6835
7268
  }
6836
7269
 
6837
7270
  .devtools-console::-webkit-scrollbar-thumb,
6838
7271
  .devtools-network::-webkit-scrollbar-thumb,
6839
- .devtools-activity::-webkit-scrollbar-thumb {
7272
+ .devtools-activity::-webkit-scrollbar-thumb,
7273
+ .devtools-agent-trace::-webkit-scrollbar-thumb,
7274
+ .devtools-page-map::-webkit-scrollbar-thumb,
7275
+ .page-map-elements::-webkit-scrollbar-thumb {
6840
7276
  background: var(--bg-elevated);
6841
7277
  border-radius: 3px;
6842
7278
  }
6843
7279
 
6844
7280
  .devtools-console::-webkit-scrollbar-thumb:hover,
6845
7281
  .devtools-network::-webkit-scrollbar-thumb:hover,
6846
- .devtools-activity::-webkit-scrollbar-thumb:hover {
7282
+ .devtools-activity::-webkit-scrollbar-thumb:hover,
7283
+ .devtools-agent-trace::-webkit-scrollbar-thumb:hover,
7284
+ .devtools-page-map::-webkit-scrollbar-thumb:hover,
7285
+ .page-map-elements::-webkit-scrollbar-thumb:hover {
6847
7286
  background: var(--border-visible);
6848
7287
  }
6849
7288
  .settings-panel {