@tutti-os/agent-gui 0.0.92 → 0.0.94

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/agent-conversation/index.d.ts +4 -4
  2. package/dist/agent-conversation/index.js +6 -6
  3. package/dist/agent-env/index.d.ts +4 -2
  4. package/dist/agent-env/index.js +1 -1
  5. package/dist/agent-message-center/index.d.ts +5 -3
  6. package/dist/agent-message-center/index.js +122 -105
  7. package/dist/agent-message-center/index.js.map +1 -1
  8. package/dist/{agentConversationVM-CfXN_TQ2.d.ts → agentConversationVM-Cl4G0Lln.d.ts} +1 -1
  9. package/dist/{agentGuiNodeTypes-rGaDqxVR.d.ts → agentGuiNodeTypes-CAioPXK9.d.ts} +8 -3
  10. package/dist/app/renderer/agentactivity.css +312 -2
  11. package/dist/app/renderer/assets/icons/agent-vinyl-player-chassis.png +0 -0
  12. package/dist/app/renderer/assets/icons/agent-vinyl-tonearm.png +0 -0
  13. package/dist/app/renderer/assets/icons/agent-vinyls/claude-vinyl.png +0 -0
  14. package/dist/app/renderer/assets/icons/agent-vinyls/codex-vinyl.png +0 -0
  15. package/dist/app/renderer/assets/icons/agent-vinyls/cursor-vinyl.png +0 -0
  16. package/dist/app/renderer/assets/icons/agent-vinyls/hermes-vinyl.png +0 -0
  17. package/dist/app/renderer/assets/icons/agent-vinyls/openclaw-vinyl.png +0 -0
  18. package/dist/app/renderer/assets/icons/agent-vinyls/opencode-vinyl.png +0 -0
  19. package/dist/app/renderer/assets/icons/agent-vinyls/tutti-vinyl.png +0 -0
  20. package/dist/{chunk-AOVPGJBC.js → chunk-554VG7ZW.js} +2 -2
  21. package/dist/{chunk-U7D7G3UU.js → chunk-5FE7M42A.js} +2 -2
  22. package/dist/{chunk-XQUUELKF.js → chunk-7BUYFVRI.js} +2 -2
  23. package/dist/{chunk-M2LWH54R.js → chunk-AWAIUYG4.js} +45 -15
  24. package/dist/{chunk-M2LWH54R.js.map → chunk-AWAIUYG4.js.map} +1 -1
  25. package/dist/{chunk-KQE5KV2V.js → chunk-BXVPOGYK.js} +2 -2
  26. package/dist/{chunk-3HARXLAZ.js → chunk-E5FOXRUM.js} +2 -2
  27. package/dist/{chunk-4SQNOOJ3.js → chunk-IGY4ASUF.js} +4 -4
  28. package/dist/{chunk-SXDLSEHO.js → chunk-MATIJPGF.js} +3 -3
  29. package/dist/{chunk-7QHBFRG5.js → chunk-P72YLKC6.js} +25 -13
  30. package/dist/chunk-P72YLKC6.js.map +1 -0
  31. package/dist/{chunk-PSLAWU25.js → chunk-R2EWECUP.js} +7 -1
  32. package/dist/chunk-R2EWECUP.js.map +1 -0
  33. package/dist/{chunk-HOSX5C5V.js → chunk-SCLLP5DO.js} +2 -2
  34. package/dist/{chunk-VWXFFSIM.js → chunk-UBDPV34P.js} +7 -1
  35. package/dist/chunk-UBDPV34P.js.map +1 -0
  36. package/dist/{chunk-UNO7CEAF.js → chunk-ZUW4B5AT.js} +2 -2
  37. package/dist/context-mention-palette/index.js +6 -6
  38. package/dist/i18n/index.d.ts +6 -0
  39. package/dist/i18n/index.js +2 -2
  40. package/dist/index.d.ts +4 -4
  41. package/dist/index.js +1068 -810
  42. package/dist/index.js.map +1 -1
  43. package/dist/plan-decision-ops.d.ts +2 -2
  44. package/dist/queued-prompt-runtime.d.ts +3 -3
  45. package/dist/workbench/contribution.js +1 -1
  46. package/dist/workbench/index.d.ts +4 -1
  47. package/dist/workbench/index.js +4 -4
  48. package/dist/workbench/sessionTitle.js +3 -3
  49. package/dist/workspace-agent-generated-files.d.ts +1 -1
  50. package/dist/workspace-agent-generated-files.js +3 -3
  51. package/dist/{workspaceAgentActivityListViewModel-TXH1VXrk.d.ts → workspaceAgentActivityListViewModel-BzV-cf0D.d.ts} +1 -0
  52. package/package.json +14 -14
  53. package/dist/chunk-7QHBFRG5.js.map +0 -1
  54. package/dist/chunk-PSLAWU25.js.map +0 -1
  55. package/dist/chunk-VWXFFSIM.js.map +0 -1
  56. /package/dist/{chunk-AOVPGJBC.js.map → chunk-554VG7ZW.js.map} +0 -0
  57. /package/dist/{chunk-U7D7G3UU.js.map → chunk-5FE7M42A.js.map} +0 -0
  58. /package/dist/{chunk-XQUUELKF.js.map → chunk-7BUYFVRI.js.map} +0 -0
  59. /package/dist/{chunk-KQE5KV2V.js.map → chunk-BXVPOGYK.js.map} +0 -0
  60. /package/dist/{chunk-3HARXLAZ.js.map → chunk-E5FOXRUM.js.map} +0 -0
  61. /package/dist/{chunk-4SQNOOJ3.js.map → chunk-IGY4ASUF.js.map} +0 -0
  62. /package/dist/{chunk-SXDLSEHO.js.map → chunk-MATIJPGF.js.map} +0 -0
  63. /package/dist/{chunk-HOSX5C5V.js.map → chunk-SCLLP5DO.js.map} +0 -0
  64. /package/dist/{chunk-UNO7CEAF.js.map → chunk-ZUW4B5AT.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import { W as WorkspaceAgentActivityCard, n as WorkspaceAgentActivitySession, T as ToolCallStatusKind, q as WorkspaceAgentActivityTimelineItem } from './workspaceAgentActivityListViewModel-TXH1VXrk.js';
1
+ import { W as WorkspaceAgentActivityCard, n as WorkspaceAgentActivitySession, T as ToolCallStatusKind, q as WorkspaceAgentActivityTimelineItem } from './workspaceAgentActivityListViewModel-BzV-cf0D.js';
2
2
 
3
3
  interface WorkspaceAgentSessionDetailMessage {
4
4
  id: string;
@@ -1,7 +1,7 @@
1
1
  import { AgentActivityUsage } from '@tutti-os/agent-activity-core';
2
2
  import { k as AgentHostAgentSessionCommand, l as AgentHostAgentSessionComposerSettings, n as AgentHostAgentSessionReasoningEffort, o as AgentHostAgentSessionSpeed, m as AgentHostAgentSessionPermissionConfig, p as AgentHostAgentSessionState, h as AgentGUIProvider, s as AgentPromptContentBlock, g as AgentGUINodeData, e as AgentGUIAgentTarget, i as AgentGUIProviderReadinessGate } from './types-PLFZ8SBX.js';
3
- import { A as AgentHostBatchUserInfoInput, a as AgentHostBatchUserInfoResult, b as AgentHostDeleteWorkspaceAgentSessionInput, k as AgentHostWorkspaceAgentSessionSummaryInput, j as AgentHostWorkspaceAgentSessionSummary, e as AgentHostWorkspaceAgentListInput, l as AgentHostWorkspaceAgentSnapshot, i as AgentHostWorkspaceAgentSessionMessagesInput, h as AgentHostWorkspaceAgentSessionMessages, p as WorkspaceAgentActivitySyncState } from './workspaceAgentActivityListViewModel-TXH1VXrk.js';
4
- import { A as AgentApprovalItemVM, a as AgentAskUserQuestionVM, b as AgentConversationPromptVM, c as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from './agentConversationVM-CfXN_TQ2.js';
3
+ import { A as AgentHostBatchUserInfoInput, a as AgentHostBatchUserInfoResult, b as AgentHostDeleteWorkspaceAgentSessionInput, k as AgentHostWorkspaceAgentSessionSummaryInput, j as AgentHostWorkspaceAgentSessionSummary, e as AgentHostWorkspaceAgentListInput, l as AgentHostWorkspaceAgentSnapshot, i as AgentHostWorkspaceAgentSessionMessagesInput, h as AgentHostWorkspaceAgentSessionMessages, p as WorkspaceAgentActivitySyncState } from './workspaceAgentActivityListViewModel-BzV-cf0D.js';
4
+ import { A as AgentApprovalItemVM, a as AgentAskUserQuestionVM, b as AgentConversationPromptVM, c as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from './agentConversationVM-Cl4G0Lln.js';
5
5
  import { WorkspaceUserProjectService } from '@tutti-os/workspace-user-project/contracts';
6
6
 
7
7
  declare const APP_ERROR_CODES: readonly ["common.invalid_input", "common.approved_path_required", "common.unavailable", "common.unexpected", "session.not_found", "control_surface.unauthorized", "workspace.select_directory_failed", "workspace.select_files_failed", "workspace.ensure_directory_failed", "workspace.import_files_failed", "workspace.read_file_failed", "workspace.write_file_failed", "workspace.export_file_failed", "workspace.copy_path_failed", "workspace.host_unsupported", "workspace.runtime_artifact_unavailable", "runtime.guest_agent_lane_unavailable", "workspace.room_full", "workspace.room_delete_forbidden", "workspace.room_delete_not_found", "filesystem.create_directory_failed", "filesystem.read_file_bytes_failed", "filesystem.read_file_text_failed", "filesystem.write_file_text_failed", "filesystem.copy_entry_failed", "filesystem.move_entry_failed", "filesystem.rename_entry_failed", "filesystem.delete_entry_failed", "filesystem.read_directory_failed", "filesystem.stat_failed", "terminal.spawn_failed", "terminal.write_failed", "terminal.resize_failed", "terminal.close_failed", "terminal.attach_failed", "terminal.detach_failed", "terminal.snapshot_failed", "agent.list_models_failed", "agent.launch_failed", "agent.read_last_message_failed", "agent.provider_session_not_found", "agent.resume_session_not_local", "agent.resume_session_resolve_failed", "agent.settings_require_new_session", "task.suggest_title_failed", "persistence.unavailable", "persistence.quota_exceeded", "persistence.payload_too_large", "persistence.io_failed", "persistence.invalid_state", "persistence.invalid_node_id", "update.get_state_failed", "update.configure_failed", "update.check_failed", "update.download_failed", "update.install_failed", "PACKAGE_DOWNLOAD_INTERRUPTED", "PACKAGE_DOWNLOAD_HTTP_STATUS", "PACKAGE_DOWNLOAD_INVALID", "PACKAGE_DOWNLOAD_DISK_ERROR"];
@@ -463,7 +463,12 @@ interface AgentGUISessionChrome {
463
463
  kind: "activating" | "failed" | "warning";
464
464
  message: string;
465
465
  canRetry?: boolean;
466
- followupAction?: "continue-in-new-conversation";
466
+ followupAction?: never;
467
+ } | {
468
+ kind: "resume-unavailable";
469
+ message: string;
470
+ followupAction: "continue-in-new-conversation";
471
+ canRetry?: never;
467
472
  } | null;
468
473
  rawState: AgentSessionState | null;
469
474
  }
@@ -604,6 +604,7 @@
604
604
 
605
605
  .agent-gui-chrome__card--warning,
606
606
  .agent-gui-chrome__card--danger,
607
+ .agent-gui-chrome__card--success,
607
608
  .agent-gui-chrome__card--muted,
608
609
  .agent-gui-chrome__card--connecting {
609
610
  animation: none !important;
@@ -2750,6 +2751,7 @@ aside.workspace-agents-status-panel
2750
2751
 
2751
2752
  .agent-gui-chrome__card--warning,
2752
2753
  .agent-gui-chrome__card--danger,
2754
+ .agent-gui-chrome__card--success,
2753
2755
  .agent-gui-chrome__card--muted,
2754
2756
  .agent-gui-chrome__card--connecting {
2755
2757
  --agent-gui-chrome-card-spring: cubic-bezier(0.22, 1.18, 0.36, 1);
@@ -2915,6 +2917,58 @@ aside.workspace-agents-status-panel
2915
2917
  color: var(--status-danger-hover, var(--state-danger-hover));
2916
2918
  }
2917
2919
 
2920
+ .agent-gui-chrome__card--success {
2921
+ /* --state-success alone reads ~2:1 against the light-theme card wash;
2922
+ mixing toward --text-primary keeps the hue while adapting the contrast
2923
+ in both themes (45% keeps 13px text past the 4.5:1 target). Borders and
2924
+ backgrounds stay on the raw token. */
2925
+ --agent-gui-chrome-success-foreground: color-mix(
2926
+ in srgb,
2927
+ var(--state-success) 45%,
2928
+ var(--text-primary)
2929
+ );
2930
+
2931
+ border-color: color-mix(in srgb, var(--state-success) 28%, transparent);
2932
+ border-bottom: 0;
2933
+ border-top-left-radius: 8px;
2934
+ border-top-right-radius: 8px;
2935
+ border-bottom-right-radius: 0;
2936
+ border-bottom-left-radius: 0;
2937
+ background: color-mix(
2938
+ in srgb,
2939
+ var(--state-success) 10%,
2940
+ var(--background-fronted)
2941
+ );
2942
+ grid-template-columns: minmax(0, 1fr) auto;
2943
+ align-items: center;
2944
+ min-height: 36px;
2945
+ padding: 6px 16px;
2946
+ cursor: default;
2947
+ }
2948
+
2949
+ .agent-gui-chrome__card--success .agent-gui-chrome__icon,
2950
+ .agent-gui-chrome__card--success .agent-gui-chrome__message {
2951
+ color: var(--agent-gui-chrome-success-foreground, var(--state-success));
2952
+ }
2953
+
2954
+ .agent-gui-chrome__success-ghost-button {
2955
+ background: transparent;
2956
+ color: var(--agent-gui-chrome-success-foreground, var(--state-success));
2957
+ font-size: 13px;
2958
+ font-weight: 400;
2959
+ }
2960
+
2961
+ .agent-gui-chrome__success-ghost-button:hover:not(:disabled) {
2962
+ background: color-mix(in srgb, var(--state-success) 14%, transparent);
2963
+ }
2964
+
2965
+ .agent-gui-chrome__success-ghost-button:focus-visible {
2966
+ border-color: var(--state-success);
2967
+ color: var(--agent-gui-chrome-success-foreground, var(--state-success));
2968
+ box-shadow: 0 0 0 2px
2969
+ color-mix(in srgb, var(--state-success) 25%, transparent);
2970
+ }
2971
+
2918
2972
  .agent-gui-chrome__danger-ghost-button:focus-visible {
2919
2973
  border-color: var(--status-danger, var(--state-danger));
2920
2974
  color: var(--status-danger, var(--state-danger));
@@ -2959,6 +3013,8 @@ aside.workspace-agents-status-panel
2959
3013
  .agent-gui-chrome__message:not(.agent-gui-chrome__notice-message),
2960
3014
  .agent-gui-chrome__card--danger
2961
3015
  .agent-gui-chrome__message:not(.agent-gui-chrome__notice-message),
3016
+ .agent-gui-chrome__card--success
3017
+ .agent-gui-chrome__message:not(.agent-gui-chrome__notice-message),
2962
3018
  .agent-gui-chrome__card--muted
2963
3019
  .agent-gui-chrome__message:not(.agent-gui-chrome__notice-message),
2964
3020
  .agent-gui-chrome__card--connecting
@@ -4763,6 +4819,33 @@ aside.workspace-agents-status-panel
4763
4819
  gap: 8px;
4764
4820
  }
4765
4821
 
4822
+ .agent-gui-workbench-header__primary-accessory {
4823
+ display: inline-flex;
4824
+ min-width: 0;
4825
+ flex: 0 0 auto;
4826
+ align-items: center;
4827
+ -webkit-app-region: no-drag;
4828
+ }
4829
+
4830
+ .agent-gui-workbench-header__detail {
4831
+ display: flex;
4832
+ width: 100%;
4833
+ height: 100%;
4834
+ min-width: 0;
4835
+ align-items: center;
4836
+ }
4837
+
4838
+ .agent-gui-workbench-header__secondary-accessory {
4839
+ display: inline-flex;
4840
+ min-width: 0;
4841
+ flex: 0 0 auto;
4842
+ align-items: center;
4843
+ margin-left: auto;
4844
+ padding-right: var(--agent-gui-workbench-header-padding-x);
4845
+ pointer-events: auto;
4846
+ -webkit-app-region: no-drag;
4847
+ }
4848
+
4766
4849
  .agent-gui-workbench-header__agent-name,
4767
4850
  .agent-gui-workbench-header__session-title,
4768
4851
  .agent-gui-workbench-header__detail-title {
@@ -4821,6 +4904,7 @@ aside.workspace-agents-status-panel
4821
4904
  .agent-gui-workbench-header__detail-title {
4822
4905
  display: flex;
4823
4906
  height: 100%;
4907
+ flex: 1 1 auto;
4824
4908
  max-width: min(100%, var(--agent-gui-workbench-header-title-max-width));
4825
4909
  min-width: 0;
4826
4910
  align-items: center;
@@ -8967,7 +9051,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8967
9051
  display: flex;
8968
9052
  width: 100%;
8969
9053
  min-height: 100%;
8970
- align-items: flex-start;
9054
+ align-items: center;
8971
9055
  justify-content: center;
8972
9056
  padding: 24px clamp(32px, 4vw, 48px) 40px;
8973
9057
  }
@@ -9000,6 +9084,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
9000
9084
 
9001
9085
  .agent-gui-node__empty-hero-carousel-stage {
9002
9086
  position: relative;
9087
+ top: -24px;
9003
9088
  width: 100%;
9004
9089
  min-height: 100%;
9005
9090
  }
@@ -9007,7 +9092,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
9007
9092
  .agent-gui-node__empty-hero-carousel-layer {
9008
9093
  position: absolute;
9009
9094
  z-index: 1;
9010
- top: 24px;
9095
+ top: calc(50% - 210px);
9011
9096
  left: 50%;
9012
9097
  width: min(400px, calc(100% - 64px));
9013
9098
  transform: translateX(-50%);
@@ -9110,6 +9195,230 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
9110
9195
  both;
9111
9196
  }
9112
9197
 
9198
+ /* Reference VinylPlayer structure, scaled from 440px to the 112px hero slot. */
9199
+ .agent-gui-vinyl-player {
9200
+ position: absolute;
9201
+ top: 50%;
9202
+ left: 50%;
9203
+ z-index: 2;
9204
+ width: 440px;
9205
+ height: 440px;
9206
+ overflow: visible;
9207
+ border-radius: 40px;
9208
+ background: transparent;
9209
+ pointer-events: none;
9210
+ transform: translate(-50%, -50%) scale(0.25);
9211
+ transform-origin: center;
9212
+ }
9213
+
9214
+ .agent-gui-vinyl-player__chassis {
9215
+ position: absolute;
9216
+ top: 12px;
9217
+ left: 0;
9218
+ z-index: 0;
9219
+ width: 440px;
9220
+ height: 416px;
9221
+ object-fit: fill;
9222
+ pointer-events: none;
9223
+ }
9224
+
9225
+ .agent-gui-vinyl-player__indicator {
9226
+ position: absolute;
9227
+ top: 32px;
9228
+ left: 32px;
9229
+ display: grid;
9230
+ width: 26px;
9231
+ height: 26px;
9232
+ place-items: center;
9233
+ border: 1px solid #c0c2c4;
9234
+ border-radius: 50%;
9235
+ background: #9ea0a3;
9236
+ box-shadow:
9237
+ 0 2px 4px rgb(0 0 0 / 10%),
9238
+ inset 0 1px 2px rgb(255 255 255 / 80%);
9239
+ display: none;
9240
+ }
9241
+
9242
+ .agent-gui-vinyl-player__indicator-light {
9243
+ display: flex;
9244
+ width: 20px;
9245
+ height: 20px;
9246
+ align-items: center;
9247
+ justify-content: center;
9248
+ gap: 2px;
9249
+ border: 1px solid #384a3c;
9250
+ border-radius: 50%;
9251
+ background: #4b6652;
9252
+ box-shadow: inset 0 2px 6px rgb(0 0 0 / 40%);
9253
+ }
9254
+
9255
+ .agent-gui-vinyl-player__indicator-light--playing {
9256
+ border-color: #86f0a6;
9257
+ background: #5edb84;
9258
+ box-shadow:
9259
+ 0 0 12px rgb(74 222 128 / 70%),
9260
+ inset 0 1px 4px rgb(255 255 255 / 60%);
9261
+ }
9262
+
9263
+ .agent-gui-vinyl-player__indicator-light > span {
9264
+ width: 1px;
9265
+ height: 8px;
9266
+ background: rgb(255 255 255 / 80%);
9267
+ }
9268
+
9269
+ .agent-gui-vinyl-player__platter {
9270
+ position: absolute;
9271
+ top: 29px;
9272
+ left: 24px;
9273
+ display: grid;
9274
+ width: 370px;
9275
+ height: 370px;
9276
+ place-items: center;
9277
+ border-radius: 50%;
9278
+ background: transparent;
9279
+ box-shadow: none;
9280
+ }
9281
+
9282
+ .agent-gui-vinyl-player__platter-inner {
9283
+ display: grid;
9284
+ width: 340px;
9285
+ height: 340px;
9286
+ place-items: center;
9287
+ border-radius: 50%;
9288
+ background: transparent;
9289
+ box-shadow: none;
9290
+ }
9291
+
9292
+ .agent-gui-vinyl-player__record {
9293
+ position: relative;
9294
+ display: grid;
9295
+ width: 326px;
9296
+ height: 326px;
9297
+ place-items: center;
9298
+ overflow: hidden;
9299
+ border-radius: 50%;
9300
+ background:
9301
+ repeating-radial-gradient(
9302
+ circle at center,
9303
+ rgb(255 255 255 / 9%) 0 2px,
9304
+ rgb(0 0 0 / 0%) 2px 8px
9305
+ ),
9306
+ #111;
9307
+ box-shadow: 0 4px 15px rgb(0 0 0 / 60%);
9308
+ }
9309
+
9310
+ .agent-gui-vinyl-player__groove,
9311
+ .agent-gui-vinyl-player__reflection,
9312
+ .agent-gui-vinyl-player__label,
9313
+ .agent-gui-vinyl-player__hole {
9314
+ position: absolute;
9315
+ border-radius: 50%;
9316
+ }
9317
+
9318
+ .agent-gui-vinyl-player__groove {
9319
+ border: 2px solid rgb(255 255 255 / 12%);
9320
+ }
9321
+
9322
+ .agent-gui-vinyl-player__reflection {
9323
+ inset: 0;
9324
+ background: conic-gradient(
9325
+ from 0deg,
9326
+ transparent 0deg,
9327
+ rgb(255 255 255 / 15%) 45deg,
9328
+ transparent 90deg,
9329
+ transparent 180deg,
9330
+ rgb(255 255 255 / 15%) 225deg,
9331
+ transparent 270deg
9332
+ );
9333
+ mix-blend-mode: screen;
9334
+ opacity: 0.35;
9335
+ }
9336
+
9337
+ .agent-gui-vinyl-player__label {
9338
+ display: grid;
9339
+ width: 144px;
9340
+ height: 144px;
9341
+ place-items: center;
9342
+ overflow: hidden;
9343
+ background: #2a2a2a;
9344
+ box-shadow: inset 0 0 12px rgb(0 0 0 / 60%);
9345
+ }
9346
+
9347
+ .agent-gui-vinyl-player__label > img {
9348
+ width: 100%;
9349
+ height: 100%;
9350
+ object-fit: cover;
9351
+ }
9352
+
9353
+ .agent-gui-vinyl-player__tonearm {
9354
+ position: absolute;
9355
+ top: -20px;
9356
+ right: 14px;
9357
+ z-index: 4;
9358
+ width: 140px;
9359
+ height: 400px;
9360
+ object-fit: contain;
9361
+ pointer-events: none;
9362
+ transform: rotate(15deg);
9363
+ transform-origin: 50% 8%;
9364
+ }
9365
+
9366
+ .agent-gui-vinyl-player__hole {
9367
+ width: 12px;
9368
+ height: 12px;
9369
+ border: 0.5px solid #717171;
9370
+ background: #e0e2e5;
9371
+ box-shadow: inset 0 1px 4px rgb(0 0 0 / 80%);
9372
+ }
9373
+
9374
+ .agent-gui-vinyl-player__power-control {
9375
+ position: absolute;
9376
+ bottom: 32px;
9377
+ left: 32px;
9378
+ display: none;
9379
+ flex-direction: column;
9380
+ align-items: center;
9381
+ gap: 8px;
9382
+ }
9383
+
9384
+ .agent-gui-vinyl-player__lever {
9385
+ display: block;
9386
+ width: 16px;
9387
+ height: 44px;
9388
+ border: 1px solid #111;
9389
+ border-radius: 10px;
9390
+ background: linear-gradient(90deg, #1a1a1a, #3a3a3a, #1a1a1a);
9391
+ box-shadow: 4px 2px 8px rgb(0 0 0 / 40%);
9392
+ transform-origin: bottom;
9393
+ }
9394
+
9395
+ .agent-gui-vinyl-player__power-label {
9396
+ color: #3f4144;
9397
+ font-size: 10px;
9398
+ font-weight: 700;
9399
+ }
9400
+
9401
+ .agent-gui-vinyl-player__tone-control {
9402
+ position: absolute;
9403
+ right: 32px;
9404
+ bottom: 32px;
9405
+ display: none;
9406
+ align-items: center;
9407
+ gap: 12px;
9408
+ color: #65676b;
9409
+ font-size: 10px;
9410
+ font-weight: 700;
9411
+ }
9412
+
9413
+ .agent-gui-vinyl-player__tone-control > span:first-child {
9414
+ width: 30px;
9415
+ height: 52px;
9416
+ border: 1px solid #a0a2a4;
9417
+ border-radius: 6px;
9418
+ background: linear-gradient(#b0b2b5, #ced0d3);
9419
+ box-shadow: inset 0 2px 5px rgb(0 0 0 / 30%);
9420
+ }
9421
+
9113
9422
  .agent-gui-node__empty-hero-carousel:has(:focus-visible) {
9114
9423
  border-radius: 12px;
9115
9424
  box-shadow: 0 0 0 1.5px var(--tutti-purple);
@@ -9169,6 +9478,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
9169
9478
  .agent-gui-node__empty-provider-gate {
9170
9479
  max-width: 520px;
9171
9480
  gap: 8px;
9481
+ transform: translateY(-40px);
9172
9482
  }
9173
9483
 
9174
9484
  /* Gate gap is 8px; add 16px so the icon-to-title spacing is 24px. */