@nexface/tools 0.1.15-alpha.0 → 0.1.15-alpha.10

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 (92) hide show
  1. package/dist/browser/actions.js +34 -10
  2. package/dist/browser/controller.js +53 -74
  3. package/dist/browser/diagnostics.js +8 -3
  4. package/dist/browser/dom.js +12 -28
  5. package/dist/browser/feedback.js +6 -5
  6. package/dist/browser/focus.d.ts +0 -1
  7. package/dist/browser/focus.js +1 -13
  8. package/dist/browser/locator.js +3 -9
  9. package/dist/browser/prompt.d.ts +1 -1
  10. package/dist/browser/prompt.generated.d.ts +1 -1
  11. package/dist/browser/prompt.generated.js +6 -3
  12. package/dist/browser/prompt.js +0 -1
  13. package/dist/browser/snapshot.js +141 -120
  14. package/dist/browser/toolset.js +42 -36
  15. package/dist/browser/types.d.ts +1 -1
  16. package/dist/browser/types.js +0 -1
  17. package/dist/browser/worker-runner.js +0 -1
  18. package/dist/definition.d.ts +1 -3
  19. package/dist/definition.js +2 -2
  20. package/dist/index.browser.js +0 -1
  21. package/dist/index.d.ts +1 -1
  22. package/dist/index.js +1 -2
  23. package/dist/internal-react.d.ts +1 -1
  24. package/dist/internal-react.js +3 -4
  25. package/dist/internal-types.js +0 -1
  26. package/dist/navigation.js +0 -1
  27. package/dist/operation-lock.d.ts +1 -1
  28. package/dist/operation-lock.js +36 -19
  29. package/dist/operation-runtime.js +41 -13
  30. package/dist/operation-surface.js +118 -41
  31. package/dist/operation-types.js +0 -1
  32. package/dist/operation-view.d.ts +1 -1
  33. package/dist/operation-view.js +232 -82
  34. package/dist/react.js +12 -17
  35. package/dist/registration.d.ts +3 -6
  36. package/dist/registration.js +8 -27
  37. package/dist/runtime.d.ts +19 -4
  38. package/dist/runtime.js +127 -52
  39. package/dist/shared/definition.js +2 -3
  40. package/dist/shared/errors.d.ts +1 -1
  41. package/dist/shared/errors.js +0 -1
  42. package/dist/shared/page-protocol.js +0 -1
  43. package/dist/shared/page-tools.js +2 -3
  44. package/dist/shared/runtime-controller.d.ts +1 -0
  45. package/dist/shared/runtime-controller.js +0 -1
  46. package/dist/shared/runtime-execution.js +0 -1
  47. package/dist/shared/schema.js +45 -19
  48. package/dist/styles.css +882 -109
  49. package/dist/tool-search.d.ts +11 -0
  50. package/dist/tool-search.js +117 -0
  51. package/dist/types.js +0 -1
  52. package/dist/webmcp.js +39 -13
  53. package/package.json +8 -4
  54. package/dist/browser/actions.js.map +0 -1
  55. package/dist/browser/controller.js.map +0 -1
  56. package/dist/browser/diagnostics.js.map +0 -1
  57. package/dist/browser/dom.js.map +0 -1
  58. package/dist/browser/feedback.js.map +0 -1
  59. package/dist/browser/focus.js.map +0 -1
  60. package/dist/browser/locator.js.map +0 -1
  61. package/dist/browser/prompt.generated.js.map +0 -1
  62. package/dist/browser/prompt.js.map +0 -1
  63. package/dist/browser/snapshot.js.map +0 -1
  64. package/dist/browser/toolset.js.map +0 -1
  65. package/dist/browser/types.js.map +0 -1
  66. package/dist/browser/worker-runner.js.map +0 -1
  67. package/dist/definition.js.map +0 -1
  68. package/dist/index.browser.js.map +0 -1
  69. package/dist/index.js.map +0 -1
  70. package/dist/internal-react.js.map +0 -1
  71. package/dist/internal-types.js.map +0 -1
  72. package/dist/navigation.js.map +0 -1
  73. package/dist/operation-lock.js.map +0 -1
  74. package/dist/operation-runtime.js.map +0 -1
  75. package/dist/operation-surface.js.map +0 -1
  76. package/dist/operation-types.js.map +0 -1
  77. package/dist/operation-view.js.map +0 -1
  78. package/dist/react.js.map +0 -1
  79. package/dist/registration.js.map +0 -1
  80. package/dist/runtime.js.map +0 -1
  81. package/dist/shared/definition.js.map +0 -1
  82. package/dist/shared/errors.js.map +0 -1
  83. package/dist/shared/page-protocol.js.map +0 -1
  84. package/dist/shared/page-tools.js.map +0 -1
  85. package/dist/shared/runtime-controller.js.map +0 -1
  86. package/dist/shared/runtime-execution.js.map +0 -1
  87. package/dist/shared/schema.js.map +0 -1
  88. package/dist/shared/tool-registry.d.ts +0 -6
  89. package/dist/shared/tool-registry.js +0 -10
  90. package/dist/shared/tool-registry.js.map +0 -1
  91. package/dist/types.js.map +0 -1
  92. package/dist/webmcp.js.map +0 -1
package/dist/styles.css CHANGED
@@ -1,80 +1,725 @@
1
- .agent-operation { --agent-operation-accent: #6366f1; --agent-operation-glow: #22d3ee; position: fixed; z-index: 9999; inset: 0; pointer-events: none; }
2
- .agent-operation__surface { position: fixed; z-index: 0; overflow: hidden; contain: paint; border: 1px solid rgba(96,156,245,.9); border-radius: 8px; background: rgba(96,156,245,.06); pointer-events: none; box-shadow: inset 0 0 0 1px rgba(255,255,255,.72),0 0 8px rgba(96,156,245,.2); }
3
- .agent-operation__surface::before,.agent-operation__surface::after { position: absolute; z-index: 2; inset: 0; border-radius: inherit; content: ""; pointer-events: none; -webkit-mask-image: linear-gradient(to bottom,#000 0,rgba(0,0,0,.7) 7px,transparent 28px),linear-gradient(to left,#000 0,rgba(0,0,0,.7) 7px,transparent 28px),linear-gradient(to top,#000 0,rgba(0,0,0,.7) 7px,transparent 28px),linear-gradient(to right,#000 0,rgba(0,0,0,.7) 7px,transparent 28px); mask-image: linear-gradient(to bottom,#000 0,rgba(0,0,0,.7) 7px,transparent 28px),linear-gradient(to left,#000 0,rgba(0,0,0,.7) 7px,transparent 28px),linear-gradient(to top,#000 0,rgba(0,0,0,.7) 7px,transparent 28px),linear-gradient(to right,#000 0,rgba(0,0,0,.7) 7px,transparent 28px); }
4
- .agent-operation__surface::before { --agent-operation-edge-primary-angle: 0deg; background: conic-gradient(from var(--agent-operation-edge-primary-angle) at 50% 50%,transparent 0% 8%,rgba(139,92,246,.24) 11%,rgba(139,92,246,.76) 17%,rgba(34,211,238,.9) 23%,#3b82f6 26%,rgba(191,219,254,.92) 27.5%,transparent 31% 56%,rgba(139,92,246,.3) 61%,rgba(34,211,238,.46) 66%,transparent 72% 100%); filter: blur(32px); opacity: .68; animation: agent-operation-surface-edge-primary 6s linear infinite; }
5
- .agent-operation__surface::after { --agent-operation-edge-secondary-angle: 0deg; z-index: 3; background: conic-gradient(from var(--agent-operation-edge-secondary-angle) at 50% 50%,transparent 0% 18%,rgba(139,92,246,.5) 23%,rgba(34,211,238,.58) 30%,rgba(59,130,246,.88) 35%,transparent 41% 75%,rgba(34,211,238,.28) 80%,rgba(167,139,250,.46) 86%,transparent 91% 100%); filter: blur(44px); opacity: .52; mix-blend-mode: screen; animation: agent-operation-surface-edge-secondary 8s linear infinite; }
6
- .agent-operation__surface[style*="--agent-operation-cutout"] { -webkit-mask-image: linear-gradient(#000 0 0),linear-gradient(#000 0 0); -webkit-mask-position: 0 0,var(--agent-operation-cutout-left) var(--agent-operation-cutout-top); -webkit-mask-repeat: no-repeat; -webkit-mask-size: 100% 100%,var(--agent-operation-cutout-width) var(--agent-operation-cutout-height); -webkit-mask-composite: xor; mask-image: linear-gradient(#000 0 0),linear-gradient(#000 0 0); mask-position: 0 0,var(--agent-operation-cutout-left) var(--agent-operation-cutout-top); mask-repeat: no-repeat; mask-size: 100% 100%,var(--agent-operation-cutout-width) var(--agent-operation-cutout-height); mask-composite: exclude; }
7
- .agent-operation__target { position: fixed; z-index: 1; overflow: hidden; border: 2px solid #4f7cff; border-radius: 10px; background: transparent; pointer-events: none; box-shadow: 0 0 0 4px rgba(99,102,241,.16),0 0 22px rgba(34,211,238,.34),0 0 48px rgba(79,70,229,.2); transition: inset .12s ease,width .12s ease,height .12s ease; animation: agent-operation-pulse 2.6s ease-in-out infinite; }
8
- .agent-operation__pointer-effect { position: fixed; z-index: 2; top: 0; left: 0; width: 0; height: 0; opacity: 1; pointer-events: none; transform: translate3d(var(--agent-operation-pointer-x),var(--agent-operation-pointer-y),0); transition: transform var(--agent-operation-pointer-duration) cubic-bezier(.22,1,.36,1),opacity .12s ease-out; will-change: transform,opacity; }
9
- .agent-operation__pointer-cursor { position: absolute; z-index: 1; top: -4px; left: -3px; display: block; width: 24px; height: 24px; transform-origin: 4px 4px; }
10
- .agent-operation__pointer { position: relative; z-index: 2; display: block; color: #111827; filter: drop-shadow(0 0 1px #fff) drop-shadow(0 1px 2px rgba(15,23,42,.32)); }
11
- .agent-operation__pointer-label { position: absolute; z-index: 2; top: 27px; left: 19px; display: flex; max-width: min(300px,48vw); overflow: hidden; align-items: center; gap: 9px; border: 1px solid rgba(24,24,27,.1); border-radius: 11px; padding: 7px 11px; color: #27272a; background: rgba(255,255,255,.97); box-shadow: 0 6px 20px rgba(15,23,42,.13); font: 500 13px/1.35 Inter,ui-sans-serif,system-ui,sans-serif; white-space: nowrap; }
12
- .agent-operation__pointer-label:is([data-operation-effect="read"],[data-operation-effect="navigate"]) { top: 12px; left: 10px; overflow: visible; gap: 5px; border: 0; padding: 0; background: transparent; box-shadow: none; }
13
- .agent-operation__pointer-label[data-browser-tool="true"] { top: 0; left: 0; transform: translate(-50%,-50%); }
14
- .agent-operation__pointer-label-text { overflow: hidden; text-overflow: ellipsis; }
15
- .agent-operation__pointer-label:is([data-operation-effect="read"],[data-operation-effect="navigate"]) .agent-operation__pointer-label-text { display: flex; box-sizing: border-box; height: 32px; align-items: center; border: 1px solid rgba(24,24,27,.08); border-radius: 12px; padding: 6px 12px; background: rgba(255,255,255,.97); box-shadow: 0 6px 20px rgba(15,23,42,.13); }
16
- .agent-operation__pointer-read-scan { display: flex; width: 36px; height: 32px; flex: none; align-items: center; justify-content: center; gap: 4px; pointer-events: none; }
17
- .agent-operation__pointer-read-scan i { width: 3px; height: 11px; border-radius: 999px; background: #609cf5; opacity: .34; transform: scaleY(.58); transform-origin: center; animation: agent-operation-pointer-read-bar 1.05s ease-in-out infinite; }
18
- .agent-operation__pointer-read-scan i:nth-child(2) { animation-delay: .1s; }
19
- .agent-operation__pointer-read-scan i:nth-child(3) { animation-delay: .2s; }
20
- .agent-operation__pointer-read-scan i:nth-child(4) { animation-delay: .3s; }
21
- .agent-operation__pointer-read-scan i:nth-child(5) { animation-delay: .4s; }
22
- .agent-operation__pointer-navigation-trail { position: relative; width: 36px; height: 32px; flex: none; filter: drop-shadow(0 1px 3px rgba(96,156,245,.32)); pointer-events: none; }
23
- .agent-operation__pointer-navigation-trail::before,.agent-operation__pointer-navigation-trail::after { position: absolute; top: 9px; width: 10px; height: 10px; border-top: 2px solid #609cf5; border-right: 2px solid #609cf5; border-radius: 2px; content: ""; transform: rotate(45deg); animation: agent-operation-pointer-navigation-chevron .9s ease-in-out infinite; }
24
- .agent-operation__pointer-navigation-trail::before { left: 1px; opacity: .3; }
25
- .agent-operation__pointer-navigation-trail::after { left: 11px; animation-delay: .15s; }
26
- .agent-operation__controller { --agent-operation-controller-x: -50%; position: fixed; z-index: 3; left: 50%; bottom: 22px; display: flex; width: 760px; min-width: min(760px,calc(100vw - 32px)); max-width: calc(100vw - 32px); align-items: center; gap: 10px; border: 1px solid rgba(165,180,252,.28); border-radius: 15px; padding: 9px 10px 9px 12px; color: #fff; background: linear-gradient(135deg,#3a3a40 0%,#303036 48%,#29292e 100%); box-shadow: inset 0 0 0 1px rgba(103,232,249,.06),0 16px 38px rgba(0,0,0,.28); pointer-events: auto; transform: translate(var(--agent-operation-controller-x),0); font-family: Inter,ui-sans-serif,system-ui,sans-serif; animation: agent-operation-controller-enter .4s cubic-bezier(.22,1,.36,1) both,agent-operation-edge-breathe 2.8s ease-in-out .4s infinite; will-change: transform,opacity; }
27
- .agent-operation__controller[data-visibility="exiting"] { pointer-events: none; animation: agent-operation-controller-exit .3s cubic-bezier(.4,0,1,1) both; }
28
- .agent-operation__controller::after { position: absolute; z-index: 0; inset: 1px; border-radius: 13px; background: linear-gradient(110deg,rgba(255,255,255,.13),transparent 30%,transparent 68%,rgba(129,140,248,.15)); content: ""; pointer-events: none; }
29
- .agent-operation__controller>:not(.agent-operation__edge-flow) { position: relative; z-index: 2; }
30
- .agent-operation__edge-flow { position: absolute; z-index: 1; inset: -1px; overflow: hidden; border-radius: inherit; pointer-events: none; }
31
- .agent-operation__edge-flow::before,.agent-operation__edge-flow::after { position: absolute; height: 2px; content: ""; }
32
- .agent-operation__edge-flow::before { top: 0; left: -34%; width: 34%; background: linear-gradient(90deg,transparent,rgba(165,180,252,.72),#e0f2fe,rgba(34,211,238,.9),transparent); animation: agent-operation-edge-flow 2.65s ease-in-out infinite; }
33
- .agent-operation__edge-flow::after { right: -12%; bottom: 0; width: 28%; background: linear-gradient(90deg,transparent,rgba(129,140,248,.78),rgba(103,232,249,.68),transparent); animation: agent-operation-edge-flow-reverse 3.1s ease-in-out infinite; }
34
- .agent-operation__pause-mark { display: flex; width: 9px; flex: 0 0 9px; justify-content: center; gap: 2px; opacity: .52; }
35
- .agent-operation__pause-mark i { width: 2px; height: 9px; border-radius: 2px; background: #d4d4d8; }
36
- .agent-operation__activity { position: relative; display: grid; width: 26px; height: 26px; flex: 0 0 26px; place-items: center; }
37
- .agent-operation__activity-icon { display: none; }
38
- .agent-operation__activity i { position: absolute; inset: 3px; border: 1px solid rgba(255,255,255,.14); border-top-color: #c7d2fe; border-radius: 50%; animation: agent-operation-spin 1.8s linear infinite; }
39
- .agent-operation__activity b { color: #eef2ff; font-size: 17px; font-weight: 400; line-height: 1; }
40
- .agent-operation__controller>div { display: grid; min-width: 0; flex: 1; gap: 1px; }
41
- .agent-operation__heading { display: flex; min-width: 0; align-items: center; gap: 7px; }
42
- .agent-operation__controller strong { overflow: hidden; font-size: 12px; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }
43
- .agent-operation__controller code { overflow: hidden; padding: 1px 5px; border-radius: 5px; color: #a1a1aa; background: rgba(255,255,255,.07); font: 500 8px/1.45 ui-monospace,SFMono-Regular,Menlo,monospace; text-overflow: ellipsis; white-space: nowrap; }
44
- .agent-operation__description { display: flex; min-width: 0; overflow: hidden; align-items: center; color: #e4e4e7; font-size: 10px; white-space: nowrap; }
45
- .agent-operation__compact-status { display: none; }
46
- .agent-operation__controller button { border: 0; border-radius: 9px; padding: 7px 10px; color: #e4e4e7; background: #3f3f46; font-size: 10px; font-weight: 650; }
47
- .agent-operation__controller .agent-operation__activity { border: 0; padding: 0; cursor: pointer; }
48
- .agent-operation__controller .agent-operation__activity:disabled { cursor: default; opacity: .55; }
49
- .agent-operation__controller>.agent-operation__history { position: absolute; z-index: 4; bottom: calc(100% + 10px); left: 0; display: grid; width: 360px; max-width: 100%; max-height: min(320px,50vh); overflow: hidden; border: 1px solid rgba(165,180,252,.28); border-radius: 14px; color: #f4f4f5; background: #303036; box-shadow: 0 16px 38px rgba(0,0,0,.28); pointer-events: auto; }
50
- .agent-operation__history header { display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid rgba(255,255,255,.08); padding: 11px 13px; }
51
- .agent-operation__history header span { display: grid; min-width: 20px; height: 20px; place-items: center; border-radius: 10px; color: #c7d2fe; background: rgba(129,140,248,.16); font-size: 10px; }
52
- .agent-operation__history ol { display: grid; overflow: auto; margin: 0; padding: 5px 0; list-style: none; }
53
- .agent-operation__history li { display: grid; grid-template-columns: 22px minmax(0,1fr); align-items: start; gap: 8px; padding: 8px 13px; }
54
- .agent-operation__history li>span { display: grid; width: 20px; height: 20px; place-items: center; border-radius: 50%; color: #c7d2fe; background: rgba(129,140,248,.12); font-size: 9px; }
55
- .agent-operation__history p { margin: 1px 0 0; overflow-wrap: anywhere; color: #e4e4e7; font-size: 11px; line-height: 18px; }
56
- .agent-operation__controller .agent-operation__stop { color: #fecaca; background: #7f1d1d; }
57
- .agent-operation[data-status="completed"] .agent-operation__target { border-color: #609cf5; }
58
- .agent-operation[data-status="failed"] .agent-operation__target { border-color: #dc2626; animation: none; }
59
- .agent-operation[data-run-active="false"] .agent-operation__activity i,.agent-operation[data-run-active="false"] .agent-operation__edge-flow::before,.agent-operation[data-run-active="false"] .agent-operation__edge-flow::after,.agent-operation[data-run-active="false"] .agent-operation__surface::before,.agent-operation[data-run-active="false"] .agent-operation__surface::after { animation: none; }
60
- @keyframes agent-operation-spin { to { transform: rotate(360deg); } }
61
- @keyframes agent-operation-edge-flow { 0% { left: -24%; opacity: 0; } 12%,78% { opacity: 1; } 100% { left: 100%; opacity: 0; } }
62
- @keyframes agent-operation-edge-flow-reverse { 0% { right: -20%; opacity: 0; } 18%,76% { opacity: .8; } 100% { right: 100%; opacity: 0; } }
63
- @keyframes agent-operation-edge-breathe { 50% { border-color: rgba(103,232,249,.42); } }
64
- @keyframes agent-operation-pulse { 50% { border-color: #38bdf8; box-shadow: 0 0 0 6px rgba(99,102,241,.12),0 0 28px rgba(34,211,238,.4),0 0 58px rgba(79,70,229,.24); } }
65
- @property --agent-operation-edge-primary-angle { syntax: "<angle>"; inherits: false; initial-value: 0deg; }
66
- @property --agent-operation-edge-secondary-angle { syntax: "<angle>"; inherits: false; initial-value: 0deg; }
67
- @keyframes agent-operation-surface-edge-primary { 0% { --agent-operation-edge-primary-angle: 0deg; animation-timing-function: cubic-bezier(.4,.25,.6,.75); } 100% { --agent-operation-edge-primary-angle: 360deg; } }
68
- @keyframes agent-operation-surface-edge-secondary { 0% { --agent-operation-edge-secondary-angle: 0deg; animation-timing-function: cubic-bezier(.4,.3,.6,.7); } 100% { --agent-operation-edge-secondary-angle: 360deg; } }
69
- @keyframes agent-operation-controller-enter { 0% { opacity: 0; transform: translate(var(--agent-operation-controller-x),calc(100% + 28px)); } 100% { opacity: 1; transform: translate(var(--agent-operation-controller-x),0); } }
70
- @keyframes agent-operation-controller-exit { 0% { opacity: 1; transform: translate(var(--agent-operation-controller-x),0); } 100% { opacity: 0; transform: translate(var(--agent-operation-controller-x),calc(100% + 28px)); } }
71
- @keyframes agent-operation-pointer-read-bar { 0%,18%,100% { opacity: .34; transform: scaleY(.58); box-shadow: none; } 42% { opacity: 1; transform: scaleY(1.27); box-shadow: 0 0 6px rgba(96,156,245,.52); } 68% { opacity: .58; transform: scaleY(.78); box-shadow: none; } }
72
- @keyframes agent-operation-pointer-navigation-chevron { 0%,100% { opacity: .24; transform: translateX(-3px) rotate(45deg); } 48% { opacity: 1; transform: translateX(2px) rotate(45deg); } 72% { opacity: .62; transform: translateX(4px) rotate(45deg); } }
73
- @media (prefers-reduced-motion: reduce) { .agent-operation__surface,.agent-operation__target,.agent-operation__controller,.agent-operation__activity i,.agent-operation__edge-flow::before,.agent-operation__edge-flow::after,.agent-operation__pointer-read-scan i,.agent-operation__pointer-navigation-trail::before,.agent-operation__pointer-navigation-trail::after { animation: none; } .agent-operation__pointer-effect { transition: none; } .agent-operation__surface::before,.agent-operation__surface::after { display: none; } }
74
- @media (max-width:520px) { .agent-operation__controller { --agent-operation-controller-x: 0%; right: 12px; bottom: 12px; left: 12px; width: auto; min-width: 0; } .agent-operation__controller>.agent-operation__history { width: 100%; } }
1
+ .agent-operation {
2
+ --agent-operation-accent: #6366f1;
3
+ --agent-operation-glow: #22d3ee;
4
+ position: fixed;
5
+ z-index: 9999;
6
+ inset: 0;
7
+ pointer-events: none;
8
+ }
9
+ .agent-operation__surface {
10
+ position: fixed;
11
+ z-index: 0;
12
+ overflow: hidden;
13
+ contain: paint;
14
+ border: 1px solid rgba(96, 156, 245, 0.9);
15
+ border-radius: 8px;
16
+ background: rgba(96, 156, 245, 0.06);
17
+ pointer-events: none;
18
+ box-shadow:
19
+ inset 0 0 0 1px rgba(255, 255, 255, 0.72),
20
+ 0 0 8px rgba(96, 156, 245, 0.2);
21
+ }
22
+ .agent-operation__surface::before,
23
+ .agent-operation__surface::after {
24
+ position: absolute;
25
+ z-index: 2;
26
+ inset: 0;
27
+ border-radius: inherit;
28
+ content: "";
29
+ pointer-events: none;
30
+ -webkit-mask-image:
31
+ linear-gradient(to bottom, #000 0, rgba(0, 0, 0, 0.7) 7px, transparent 28px),
32
+ linear-gradient(to left, #000 0, rgba(0, 0, 0, 0.7) 7px, transparent 28px),
33
+ linear-gradient(to top, #000 0, rgba(0, 0, 0, 0.7) 7px, transparent 28px),
34
+ linear-gradient(to right, #000 0, rgba(0, 0, 0, 0.7) 7px, transparent 28px);
35
+ mask-image:
36
+ linear-gradient(to bottom, #000 0, rgba(0, 0, 0, 0.7) 7px, transparent 28px),
37
+ linear-gradient(to left, #000 0, rgba(0, 0, 0, 0.7) 7px, transparent 28px),
38
+ linear-gradient(to top, #000 0, rgba(0, 0, 0, 0.7) 7px, transparent 28px),
39
+ linear-gradient(to right, #000 0, rgba(0, 0, 0, 0.7) 7px, transparent 28px);
40
+ }
41
+ .agent-operation__surface::before {
42
+ --agent-operation-edge-primary-angle: 0deg;
43
+ background: conic-gradient(
44
+ from var(--agent-operation-edge-primary-angle) at 50% 50%,
45
+ transparent 0% 8%,
46
+ rgba(139, 92, 246, 0.24) 11%,
47
+ rgba(139, 92, 246, 0.76) 17%,
48
+ rgba(34, 211, 238, 0.9) 23%,
49
+ #3b82f6 26%,
50
+ rgba(191, 219, 254, 0.92) 27.5%,
51
+ transparent 31% 56%,
52
+ rgba(139, 92, 246, 0.3) 61%,
53
+ rgba(34, 211, 238, 0.46) 66%,
54
+ transparent 72% 100%
55
+ );
56
+ filter: blur(32px);
57
+ opacity: 0.68;
58
+ animation: agent-operation-surface-edge-primary 6s linear infinite;
59
+ }
60
+ .agent-operation__surface::after {
61
+ --agent-operation-edge-secondary-angle: 0deg;
62
+ z-index: 3;
63
+ background: conic-gradient(
64
+ from var(--agent-operation-edge-secondary-angle) at 50% 50%,
65
+ transparent 0% 18%,
66
+ rgba(139, 92, 246, 0.5) 23%,
67
+ rgba(34, 211, 238, 0.58) 30%,
68
+ rgba(59, 130, 246, 0.88) 35%,
69
+ transparent 41% 75%,
70
+ rgba(34, 211, 238, 0.28) 80%,
71
+ rgba(167, 139, 250, 0.46) 86%,
72
+ transparent 91% 100%
73
+ );
74
+ filter: blur(44px);
75
+ opacity: 0.52;
76
+ mix-blend-mode: screen;
77
+ animation: agent-operation-surface-edge-secondary 8s linear infinite;
78
+ }
79
+ .agent-operation__surface[style*="--agent-operation-cutout"] {
80
+ -webkit-mask-image: linear-gradient(#000 0 0), linear-gradient(#000 0 0);
81
+ -webkit-mask-position:
82
+ 0 0,
83
+ var(--agent-operation-cutout-left) var(--agent-operation-cutout-top);
84
+ -webkit-mask-repeat: no-repeat;
85
+ -webkit-mask-size:
86
+ 100% 100%,
87
+ var(--agent-operation-cutout-width) var(--agent-operation-cutout-height);
88
+ -webkit-mask-composite: xor;
89
+ mask-image: linear-gradient(#000 0 0), linear-gradient(#000 0 0);
90
+ mask-position:
91
+ 0 0,
92
+ var(--agent-operation-cutout-left) var(--agent-operation-cutout-top);
93
+ mask-repeat: no-repeat;
94
+ mask-size:
95
+ 100% 100%,
96
+ var(--agent-operation-cutout-width) var(--agent-operation-cutout-height);
97
+ mask-composite: exclude;
98
+ }
99
+ .agent-operation__target {
100
+ position: fixed;
101
+ z-index: 1;
102
+ overflow: hidden;
103
+ border: 2px solid #4f7cff;
104
+ border-radius: 10px;
105
+ background: transparent;
106
+ pointer-events: none;
107
+ box-shadow:
108
+ 0 0 0 4px rgba(99, 102, 241, 0.16),
109
+ 0 0 22px rgba(34, 211, 238, 0.34),
110
+ 0 0 48px rgba(79, 70, 229, 0.2);
111
+ animation: agent-operation-pulse 2.6s ease-in-out infinite;
112
+ }
113
+ .agent-operation__pointer-effect,
114
+ .agent-operation__floating-label {
115
+ position: fixed;
116
+ z-index: 2;
117
+ top: 0;
118
+ left: 0;
119
+ width: 0;
120
+ height: 0;
121
+ opacity: 1;
122
+ pointer-events: none;
123
+ transform: translate3d(var(--agent-operation-pointer-x), var(--agent-operation-pointer-y), 0);
124
+ transition:
125
+ transform var(--agent-operation-pointer-duration) cubic-bezier(0.22, 1, 0.36, 1),
126
+ opacity 0.12s ease-out;
127
+ will-change: transform, opacity;
128
+ }
129
+ .agent-operation__floating-label {
130
+ z-index: 10001;
131
+ }
132
+ .agent-operation__pointer-cursor {
133
+ position: absolute;
134
+ z-index: 1;
135
+ top: -4px;
136
+ left: -3px;
137
+ display: block;
138
+ width: 24px;
139
+ height: 24px;
140
+ transform-origin: 4px 4px;
141
+ }
142
+ .agent-operation__pointer {
143
+ position: relative;
144
+ z-index: 2;
145
+ display: block;
146
+ color: #111827;
147
+ filter: drop-shadow(0 0 1px #fff) drop-shadow(0 1px 2px rgba(15, 23, 42, 0.32));
148
+ }
149
+ .agent-operation__pointer-label {
150
+ position: absolute;
151
+ z-index: 2;
152
+ top: 27px;
153
+ left: 19px;
154
+ display: flex;
155
+ max-width: min(300px, 48vw, calc(100vw - 24px));
156
+ box-sizing: border-box;
157
+ overflow: hidden;
158
+ align-items: center;
159
+ gap: 9px;
160
+ border: 1px solid rgba(24, 24, 27, 0.1);
161
+ border-radius: 11px;
162
+ padding: 7px 11px;
163
+ color: #27272a;
164
+ background: rgba(255, 255, 255, 0.97);
165
+ box-shadow: 0 6px 20px rgba(15, 23, 42, 0.13);
166
+ font:
167
+ 500 13px / 1.35 Inter,
168
+ ui-sans-serif,
169
+ system-ui,
170
+ sans-serif;
171
+ white-space: nowrap;
172
+ }
173
+ .agent-operation__pointer-label:is(
174
+ [data-operation-effect="read"],
175
+ [data-operation-effect="navigate"]
176
+ ) {
177
+ top: 12px;
178
+ left: 10px;
179
+ overflow: visible;
180
+ gap: 5px;
181
+ border: 0;
182
+ padding: 0;
183
+ background: transparent;
184
+ box-shadow: none;
185
+ }
186
+ .agent-operation__pointer-label[data-browser-tool="true"] {
187
+ top: 0;
188
+ left: 0;
189
+ transform: translate(-50%, -50%);
190
+ }
191
+ .agent-operation__pointer-label-text {
192
+ min-width: 0;
193
+ overflow: hidden;
194
+ text-overflow: ellipsis;
195
+ }
196
+ .agent-operation__pointer-label:is(
197
+ [data-operation-effect="read"],
198
+ [data-operation-effect="navigate"]
199
+ )
200
+ .agent-operation__pointer-label-text {
201
+ min-width: 0;
202
+ display: flex;
203
+ box-sizing: border-box;
204
+ height: 32px;
205
+ align-items: center;
206
+ border: 1px solid rgba(24, 24, 27, 0.08);
207
+ border-radius: 12px;
208
+ padding: 6px 12px;
209
+ background: rgba(255, 255, 255, 0.97);
210
+ box-shadow: 0 6px 20px rgba(15, 23, 42, 0.13);
211
+ }
212
+ .agent-operation__pointer-read-scan {
213
+ display: flex;
214
+ width: 36px;
215
+ height: 32px;
216
+ flex: none;
217
+ align-items: center;
218
+ justify-content: center;
219
+ gap: 4px;
220
+ pointer-events: none;
221
+ }
222
+ .agent-operation__pointer-read-scan i {
223
+ width: 3px;
224
+ height: 11px;
225
+ border-radius: 999px;
226
+ background: #609cf5;
227
+ opacity: 0.34;
228
+ transform: scaleY(0.58);
229
+ transform-origin: center;
230
+ animation: agent-operation-pointer-read-bar 1.05s ease-in-out infinite;
231
+ }
232
+ .agent-operation__pointer-read-scan i:nth-child(2) {
233
+ animation-delay: 0.1s;
234
+ }
235
+ .agent-operation__pointer-read-scan i:nth-child(3) {
236
+ animation-delay: 0.2s;
237
+ }
238
+ .agent-operation__pointer-read-scan i:nth-child(4) {
239
+ animation-delay: 0.3s;
240
+ }
241
+ .agent-operation__pointer-read-scan i:nth-child(5) {
242
+ animation-delay: 0.4s;
243
+ }
244
+ .agent-operation__pointer-navigation-trail {
245
+ position: relative;
246
+ width: 36px;
247
+ height: 32px;
248
+ flex: none;
249
+ filter: drop-shadow(0 1px 3px rgba(96, 156, 245, 0.32));
250
+ pointer-events: none;
251
+ }
252
+ .agent-operation__pointer-navigation-trail::before,
253
+ .agent-operation__pointer-navigation-trail::after {
254
+ position: absolute;
255
+ top: 9px;
256
+ width: 10px;
257
+ height: 10px;
258
+ border-top: 2px solid #609cf5;
259
+ border-right: 2px solid #609cf5;
260
+ border-radius: 2px;
261
+ content: "";
262
+ transform: rotate(45deg);
263
+ animation: agent-operation-pointer-navigation-chevron 0.9s ease-in-out infinite;
264
+ }
265
+ .agent-operation__pointer-navigation-trail::before {
266
+ left: 1px;
267
+ opacity: 0.3;
268
+ }
269
+ .agent-operation__pointer-navigation-trail::after {
270
+ left: 11px;
271
+ animation-delay: 0.15s;
272
+ }
273
+ .agent-operation__controller {
274
+ --agent-operation-controller-x: -50%;
275
+ position: fixed;
276
+ z-index: 3;
277
+ left: 50%;
278
+ bottom: 22px;
279
+ display: flex;
280
+ width: 760px;
281
+ min-width: min(760px, calc(100vw - 32px));
282
+ max-width: calc(100vw - 32px);
283
+ align-items: center;
284
+ gap: 10px;
285
+ border: 1px solid rgba(165, 180, 252, 0.28);
286
+ border-radius: 15px;
287
+ padding: 9px 10px 9px 12px;
288
+ color: #fff;
289
+ background: linear-gradient(135deg, #3a3a40 0%, #303036 48%, #29292e 100%);
290
+ box-shadow:
291
+ inset 0 0 0 1px rgba(103, 232, 249, 0.06),
292
+ 0 16px 38px rgba(0, 0, 0, 0.28);
293
+ pointer-events: auto;
294
+ transform: translate(var(--agent-operation-controller-x), 0);
295
+ font-family: Inter, ui-sans-serif, system-ui, sans-serif;
296
+ animation:
297
+ agent-operation-controller-enter 0.4s cubic-bezier(0.22, 1, 0.36, 1) both,
298
+ agent-operation-edge-breathe 2.8s ease-in-out 0.4s infinite;
299
+ will-change: transform, opacity;
300
+ }
301
+ .agent-operation__controller[data-visibility="exiting"] {
302
+ pointer-events: none;
303
+ animation: agent-operation-controller-exit 0.3s cubic-bezier(0.4, 0, 1, 1) both;
304
+ }
305
+ .agent-operation__controller::after {
306
+ position: absolute;
307
+ z-index: 0;
308
+ inset: 1px;
309
+ border-radius: 13px;
310
+ background: linear-gradient(
311
+ 110deg,
312
+ rgba(255, 255, 255, 0.13),
313
+ transparent 30%,
314
+ transparent 68%,
315
+ rgba(129, 140, 248, 0.15)
316
+ );
317
+ content: "";
318
+ pointer-events: none;
319
+ }
320
+ .agent-operation__controller > :not(.agent-operation__edge-flow) {
321
+ position: relative;
322
+ z-index: 2;
323
+ }
324
+ .agent-operation__edge-flow {
325
+ position: absolute;
326
+ z-index: 1;
327
+ inset: -1px;
328
+ overflow: hidden;
329
+ border-radius: inherit;
330
+ pointer-events: none;
331
+ }
332
+ .agent-operation__edge-flow::before,
333
+ .agent-operation__edge-flow::after {
334
+ position: absolute;
335
+ height: 2px;
336
+ content: "";
337
+ }
338
+ .agent-operation__edge-flow::before {
339
+ top: 0;
340
+ left: -34%;
341
+ width: 34%;
342
+ background: linear-gradient(
343
+ 90deg,
344
+ transparent,
345
+ rgba(165, 180, 252, 0.72),
346
+ #e0f2fe,
347
+ rgba(34, 211, 238, 0.9),
348
+ transparent
349
+ );
350
+ animation: agent-operation-edge-flow 2.65s ease-in-out infinite;
351
+ }
352
+ .agent-operation__edge-flow::after {
353
+ right: -12%;
354
+ bottom: 0;
355
+ width: 28%;
356
+ background: linear-gradient(
357
+ 90deg,
358
+ transparent,
359
+ rgba(129, 140, 248, 0.78),
360
+ rgba(103, 232, 249, 0.68),
361
+ transparent
362
+ );
363
+ animation: agent-operation-edge-flow-reverse 3.1s ease-in-out infinite;
364
+ }
365
+ .agent-operation__pause-mark {
366
+ display: flex;
367
+ width: 9px;
368
+ flex: 0 0 9px;
369
+ justify-content: center;
370
+ gap: 2px;
371
+ opacity: 0.52;
372
+ }
373
+ .agent-operation__pause-mark i {
374
+ width: 2px;
375
+ height: 9px;
376
+ border-radius: 2px;
377
+ background: #d4d4d8;
378
+ }
379
+ .agent-operation__activity {
380
+ position: relative;
381
+ display: grid;
382
+ width: 26px;
383
+ height: 26px;
384
+ flex: 0 0 26px;
385
+ place-items: center;
386
+ }
387
+ .agent-operation__activity-icon {
388
+ display: none;
389
+ }
390
+ .agent-operation__activity i {
391
+ position: absolute;
392
+ inset: 3px;
393
+ border: 1px solid rgba(255, 255, 255, 0.14);
394
+ border-top-color: #c7d2fe;
395
+ border-radius: 50%;
396
+ animation: agent-operation-spin 1.8s linear infinite;
397
+ }
398
+ .agent-operation__activity b {
399
+ color: #eef2ff;
400
+ font-size: 17px;
401
+ font-weight: 400;
402
+ line-height: 1;
403
+ }
404
+ .agent-operation__controller > div {
405
+ display: grid;
406
+ min-width: 0;
407
+ flex: 1;
408
+ gap: 1px;
409
+ }
410
+ .agent-operation__heading {
411
+ display: flex;
412
+ min-width: 0;
413
+ align-items: center;
414
+ gap: 7px;
415
+ }
416
+ .agent-operation__controller strong {
417
+ overflow: hidden;
418
+ font-size: 12px;
419
+ font-weight: 650;
420
+ text-overflow: ellipsis;
421
+ white-space: nowrap;
422
+ }
423
+ .agent-operation__controller code {
424
+ overflow: hidden;
425
+ padding: 1px 5px;
426
+ border-radius: 5px;
427
+ color: #a1a1aa;
428
+ background: rgba(255, 255, 255, 0.07);
429
+ font:
430
+ 500 8px / 1.45 ui-monospace,
431
+ SFMono-Regular,
432
+ Menlo,
433
+ monospace;
434
+ text-overflow: ellipsis;
435
+ white-space: nowrap;
436
+ }
437
+ .agent-operation__description {
438
+ display: flex;
439
+ min-width: 0;
440
+ overflow: hidden;
441
+ align-items: center;
442
+ color: #e4e4e7;
443
+ font-size: 10px;
444
+ white-space: nowrap;
445
+ }
446
+ .agent-operation__compact-status {
447
+ display: none;
448
+ }
449
+ .agent-operation__controller button {
450
+ border: 0;
451
+ border-radius: 9px;
452
+ padding: 7px 10px;
453
+ color: #e4e4e7;
454
+ background: #3f3f46;
455
+ font-size: 10px;
456
+ font-weight: 650;
457
+ }
458
+ .agent-operation__controller .agent-operation__activity {
459
+ border: 0;
460
+ padding: 0;
461
+ cursor: pointer;
462
+ }
463
+ .agent-operation__controller .agent-operation__activity:disabled {
464
+ cursor: default;
465
+ opacity: 0.55;
466
+ }
467
+ .agent-operation__controller > .agent-operation__history {
468
+ position: absolute;
469
+ z-index: 4;
470
+ bottom: calc(100% + 10px);
471
+ left: 0;
472
+ display: grid;
473
+ width: 360px;
474
+ max-width: 100%;
475
+ max-height: min(320px, 50vh);
476
+ overflow: hidden;
477
+ border: 1px solid rgba(165, 180, 252, 0.28);
478
+ border-radius: 14px;
479
+ color: #f4f4f5;
480
+ background: #303036;
481
+ box-shadow: 0 16px 38px rgba(0, 0, 0, 0.28);
482
+ pointer-events: auto;
483
+ }
484
+ .agent-operation__history header {
485
+ display: flex;
486
+ align-items: center;
487
+ justify-content: space-between;
488
+ border-bottom: 1px solid rgba(255, 255, 255, 0.08);
489
+ padding: 11px 13px;
490
+ }
491
+ .agent-operation__history header span {
492
+ display: grid;
493
+ min-width: 20px;
494
+ height: 20px;
495
+ place-items: center;
496
+ border-radius: 10px;
497
+ color: #c7d2fe;
498
+ background: rgba(129, 140, 248, 0.16);
499
+ font-size: 10px;
500
+ }
501
+ .agent-operation__history ol {
502
+ display: grid;
503
+ overflow: auto;
504
+ margin: 0;
505
+ padding: 5px 0;
506
+ list-style: none;
507
+ }
508
+ .agent-operation__history li {
509
+ display: grid;
510
+ grid-template-columns: 22px minmax(0, 1fr);
511
+ align-items: start;
512
+ gap: 8px;
513
+ padding: 8px 13px;
514
+ }
515
+ .agent-operation__history li > span {
516
+ display: grid;
517
+ width: 20px;
518
+ height: 20px;
519
+ place-items: center;
520
+ border-radius: 50%;
521
+ color: #c7d2fe;
522
+ background: rgba(129, 140, 248, 0.12);
523
+ font-size: 9px;
524
+ }
525
+ .agent-operation__history p {
526
+ margin: 1px 0 0;
527
+ overflow-wrap: anywhere;
528
+ color: #e4e4e7;
529
+ font-size: 11px;
530
+ line-height: 18px;
531
+ }
532
+ .agent-operation__controller .agent-operation__stop {
533
+ color: #fecaca;
534
+ background: #7f1d1d;
535
+ }
536
+ .agent-operation[data-status="completed"] .agent-operation__target {
537
+ border-color: #609cf5;
538
+ }
539
+ .agent-operation[data-status="failed"] .agent-operation__target {
540
+ border-color: #dc2626;
541
+ animation: none;
542
+ }
543
+ .agent-operation[data-run-active="false"] .agent-operation__activity i,
544
+ .agent-operation[data-run-active="false"] .agent-operation__edge-flow::before,
545
+ .agent-operation[data-run-active="false"] .agent-operation__edge-flow::after,
546
+ .agent-operation[data-run-active="false"] .agent-operation__surface::before,
547
+ .agent-operation[data-run-active="false"] .agent-operation__surface::after {
548
+ animation: none;
549
+ }
550
+ @keyframes agent-operation-spin {
551
+ to {
552
+ transform: rotate(360deg);
553
+ }
554
+ }
555
+ @keyframes agent-operation-edge-flow {
556
+ 0% {
557
+ left: -24%;
558
+ opacity: 0;
559
+ }
560
+ 12%,
561
+ 78% {
562
+ opacity: 1;
563
+ }
564
+ 100% {
565
+ left: 100%;
566
+ opacity: 0;
567
+ }
568
+ }
569
+ @keyframes agent-operation-edge-flow-reverse {
570
+ 0% {
571
+ right: -20%;
572
+ opacity: 0;
573
+ }
574
+ 18%,
575
+ 76% {
576
+ opacity: 0.8;
577
+ }
578
+ 100% {
579
+ right: 100%;
580
+ opacity: 0;
581
+ }
582
+ }
583
+ @keyframes agent-operation-edge-breathe {
584
+ 50% {
585
+ border-color: rgba(103, 232, 249, 0.42);
586
+ }
587
+ }
588
+ @keyframes agent-operation-pulse {
589
+ 50% {
590
+ border-color: #38bdf8;
591
+ box-shadow:
592
+ 0 0 0 6px rgba(99, 102, 241, 0.12),
593
+ 0 0 28px rgba(34, 211, 238, 0.4),
594
+ 0 0 58px rgba(79, 70, 229, 0.24);
595
+ }
596
+ }
597
+ @property --agent-operation-edge-primary-angle {
598
+ syntax: "<angle>";
599
+ inherits: false;
600
+ initial-value: 0deg;
601
+ }
602
+ @property --agent-operation-edge-secondary-angle {
603
+ syntax: "<angle>";
604
+ inherits: false;
605
+ initial-value: 0deg;
606
+ }
607
+ @keyframes agent-operation-surface-edge-primary {
608
+ 0% {
609
+ --agent-operation-edge-primary-angle: 0deg;
610
+ animation-timing-function: cubic-bezier(0.4, 0.25, 0.6, 0.75);
611
+ }
612
+ 100% {
613
+ --agent-operation-edge-primary-angle: 360deg;
614
+ }
615
+ }
616
+ @keyframes agent-operation-surface-edge-secondary {
617
+ 0% {
618
+ --agent-operation-edge-secondary-angle: 0deg;
619
+ animation-timing-function: cubic-bezier(0.4, 0.3, 0.6, 0.7);
620
+ }
621
+ 100% {
622
+ --agent-operation-edge-secondary-angle: 360deg;
623
+ }
624
+ }
625
+ @keyframes agent-operation-controller-enter {
626
+ 0% {
627
+ opacity: 0;
628
+ transform: translate(var(--agent-operation-controller-x), calc(100% + 28px));
629
+ }
630
+ 100% {
631
+ opacity: 1;
632
+ transform: translate(var(--agent-operation-controller-x), 0);
633
+ }
634
+ }
635
+ @keyframes agent-operation-controller-exit {
636
+ 0% {
637
+ opacity: 1;
638
+ transform: translate(var(--agent-operation-controller-x), 0);
639
+ }
640
+ 100% {
641
+ opacity: 0;
642
+ transform: translate(var(--agent-operation-controller-x), calc(100% + 28px));
643
+ }
644
+ }
645
+ @keyframes agent-operation-pointer-read-bar {
646
+ 0%,
647
+ 18%,
648
+ 100% {
649
+ opacity: 0.34;
650
+ transform: scaleY(0.58);
651
+ box-shadow: none;
652
+ }
653
+ 42% {
654
+ opacity: 1;
655
+ transform: scaleY(1.27);
656
+ box-shadow: 0 0 6px rgba(96, 156, 245, 0.52);
657
+ }
658
+ 68% {
659
+ opacity: 0.58;
660
+ transform: scaleY(0.78);
661
+ box-shadow: none;
662
+ }
663
+ }
664
+ @keyframes agent-operation-pointer-navigation-chevron {
665
+ 0%,
666
+ 100% {
667
+ opacity: 0.24;
668
+ transform: translateX(-3px) rotate(45deg);
669
+ }
670
+ 48% {
671
+ opacity: 1;
672
+ transform: translateX(2px) rotate(45deg);
673
+ }
674
+ 72% {
675
+ opacity: 0.62;
676
+ transform: translateX(4px) rotate(45deg);
677
+ }
678
+ }
679
+ @media (prefers-reduced-motion: reduce) {
680
+ .agent-operation__surface,
681
+ .agent-operation__target,
682
+ .agent-operation__controller,
683
+ .agent-operation__activity i,
684
+ .agent-operation__edge-flow::before,
685
+ .agent-operation__edge-flow::after,
686
+ .agent-operation__pointer-read-scan i,
687
+ .agent-operation__pointer-navigation-trail::before,
688
+ .agent-operation__pointer-navigation-trail::after {
689
+ animation: none;
690
+ }
691
+ .agent-operation__pointer-effect {
692
+ transition: none;
693
+ }
694
+ .agent-operation__surface::before,
695
+ .agent-operation__surface::after {
696
+ display: none;
697
+ }
698
+ }
699
+ @media (max-width: 520px) {
700
+ .agent-operation__controller {
701
+ --agent-operation-controller-x: 0%;
702
+ right: 12px;
703
+ bottom: 12px;
704
+ left: 12px;
705
+ width: auto;
706
+ min-width: 0;
707
+ }
708
+ .agent-operation__controller > .agent-operation__history {
709
+ width: 100%;
710
+ }
711
+ }
75
712
 
76
- .nexface-operation-surface { width: 100%; height: 100%; min-width: 0; min-height: 0; }
77
- .agent-operation .agent-operation__controller { box-sizing: border-box; min-width: 0; }
713
+ .nexface-operation-surface {
714
+ width: 100%;
715
+ height: 100%;
716
+ min-width: 0;
717
+ min-height: 0;
718
+ }
719
+ .agent-operation .agent-operation__controller {
720
+ box-sizing: border-box;
721
+ min-width: 0;
722
+ }
78
723
  .agent-operation__controller {
79
724
  top: auto;
80
725
  bottom: 14px;
@@ -103,7 +748,9 @@
103
748
  }
104
749
  .agent-operation__controller .agent-operation__edge-flow,
105
750
  .agent-operation__controller .agent-operation__pause-mark,
106
- .agent-operation__controller .agent-operation__compact-status { display: none; }
751
+ .agent-operation__controller .agent-operation__compact-status {
752
+ display: none;
753
+ }
107
754
  .agent-operation__controller .agent-operation__activity {
108
755
  width: 38px;
109
756
  height: 38px;
@@ -117,16 +764,57 @@
117
764
  cursor: pointer;
118
765
  }
119
766
  .agent-operation__controller .agent-operation__activity:not(:disabled):hover,
120
- .agent-operation__controller .agent-operation__activity[data-open="true"] { border-color: rgb(169 201 255 / 38%); background: rgb(169 201 255 / 14%); }
121
- .agent-operation__controller .agent-operation__activity:disabled { cursor: default; opacity: .82; }
122
- .agent-operation__controller .agent-operation__activity i { display: none; }
123
- .agent-operation__controller .agent-operation__activity-icon { display: block; }
124
- .agent-operation__controller .agent-operation__activity b { display: none; }
125
- .agent-operation__controller > div { display: grid; min-width: 0; flex: 1; gap: 1px; }
126
- .agent-operation__controller .agent-operation__heading { display: block; min-width: 0; }
127
- .agent-operation__controller .agent-operation__heading strong { display: block; overflow: hidden; color: rgb(255 255 255 / 96%); font-size: 12px; font-weight: 500; line-height: 16px; text-overflow: ellipsis; white-space: nowrap; }
128
- .agent-operation__controller .agent-operation__description { display: block; overflow: hidden; color: rgb(255 255 255 / 58%); font-size: 10px; line-height: 13px; text-overflow: ellipsis; white-space: nowrap; }
129
- .agent-operation[data-human-control="true"] .agent-operation__controller .agent-operation__description { color: #9fc3ff; }
767
+ .agent-operation__controller .agent-operation__activity[data-open="true"] {
768
+ border-color: rgb(169 201 255 / 38%);
769
+ background: rgb(169 201 255 / 14%);
770
+ }
771
+ .agent-operation__controller .agent-operation__activity:disabled {
772
+ cursor: default;
773
+ opacity: 0.82;
774
+ }
775
+ .agent-operation__controller .agent-operation__activity i {
776
+ display: none;
777
+ }
778
+ .agent-operation__controller .agent-operation__activity-icon {
779
+ display: block;
780
+ }
781
+ .agent-operation__controller .agent-operation__activity b {
782
+ display: none;
783
+ }
784
+ .agent-operation__controller > div {
785
+ display: grid;
786
+ min-width: 0;
787
+ flex: 1;
788
+ gap: 1px;
789
+ }
790
+ .agent-operation__controller .agent-operation__heading {
791
+ display: block;
792
+ min-width: 0;
793
+ }
794
+ .agent-operation__controller .agent-operation__heading strong {
795
+ display: block;
796
+ overflow: hidden;
797
+ color: rgb(255 255 255 / 96%);
798
+ font-size: 12px;
799
+ font-weight: 500;
800
+ line-height: 16px;
801
+ text-overflow: ellipsis;
802
+ white-space: nowrap;
803
+ }
804
+ .agent-operation__controller .agent-operation__description {
805
+ display: block;
806
+ overflow: hidden;
807
+ color: rgb(255 255 255 / 58%);
808
+ font-size: 10px;
809
+ line-height: 13px;
810
+ text-overflow: ellipsis;
811
+ white-space: nowrap;
812
+ }
813
+ .agent-operation[data-human-control="true"]
814
+ .agent-operation__controller
815
+ .agent-operation__description {
816
+ color: #9fc3ff;
817
+ }
130
818
  .agent-operation__controller .agent-operation__stop {
131
819
  min-width: 84px;
132
820
  height: 38px;
@@ -139,8 +827,13 @@
139
827
  font-size: 11px;
140
828
  font-weight: 500;
141
829
  }
142
- .agent-operation__controller .agent-operation__stop:focus:not(:focus-visible) { outline: none; }
143
- .agent-operation__controller .agent-operation__stop:focus-visible { outline: 2px solid #ff7187; outline-offset: 2px; }
830
+ .agent-operation__controller .agent-operation__stop:focus:not(:focus-visible) {
831
+ outline: none;
832
+ }
833
+ .agent-operation__controller .agent-operation__stop:focus-visible {
834
+ outline: 2px solid #ff7187;
835
+ outline-offset: 2px;
836
+ }
144
837
  .agent-operation__controller > .agent-operation__history {
145
838
  width: 360px;
146
839
  border: 1px solid rgb(255 255 255 / 12%);
@@ -151,36 +844,116 @@
151
844
  backdrop-filter: blur(16px) saturate(120%);
152
845
  -webkit-backdrop-filter: blur(16px) saturate(120%);
153
846
  }
154
- .agent-operation__history header { border-bottom-color: rgb(255 255 255 / 9%); padding: 12px 14px; }
155
- .agent-operation__history header strong { color: rgb(255 255 255 / 96%); font-size: 12px; font-weight: 600; }
156
- .agent-operation__history header span { color: #a9c9ff; background: rgb(169 201 255 / 14%); }
157
- .agent-operation__history li { padding: 8px 14px; }
158
- .agent-operation__history li > span { color: #a9c9ff; background: rgb(169 201 255 / 11%); }
159
- .agent-operation__history p { color: rgb(255 255 255 / 76%); font-size: 12px; line-height: 20px; }
160
- .agent-operation[data-interaction-pending="true"] .agent-operation__controller { box-shadow: none; }
161
- .agent-operation[data-interaction-pending="true"] .agent-operation__activity b { color: #609cf5; text-shadow: none; }
162
- .agent-operation__target { border: 1px solid #4f9cff; border-radius: 10px; box-shadow: 0 0 0 1px rgb(79 156 255 / 14%); animation: store-operation-target-in .16s ease-out both; }
163
- .agent-operation__pointer-label { border-color: #ebecf0; color: #525252; box-shadow: 0 4px 16px rgb(29 41 57 / 12%); }
847
+ .agent-operation__history header {
848
+ border-bottom-color: rgb(255 255 255 / 9%);
849
+ padding: 12px 14px;
850
+ }
851
+ .agent-operation__history header strong {
852
+ color: rgb(255 255 255 / 96%);
853
+ font-size: 12px;
854
+ font-weight: 600;
855
+ }
856
+ .agent-operation__history header span {
857
+ color: #a9c9ff;
858
+ background: rgb(169 201 255 / 14%);
859
+ }
860
+ .agent-operation__history li {
861
+ padding: 8px 14px;
862
+ }
863
+ .agent-operation__history li > span {
864
+ color: #a9c9ff;
865
+ background: rgb(169 201 255 / 11%);
866
+ }
867
+ .agent-operation__history p {
868
+ color: rgb(255 255 255 / 76%);
869
+ font-size: 12px;
870
+ line-height: 20px;
871
+ }
872
+ .agent-operation[data-interaction-pending="true"] .agent-operation__controller {
873
+ box-shadow: none;
874
+ }
875
+ .agent-operation[data-interaction-pending="true"] .agent-operation__activity b {
876
+ color: #609cf5;
877
+ text-shadow: none;
878
+ }
879
+ .agent-operation__target {
880
+ border: 1px solid #4f9cff;
881
+ border-radius: 10px;
882
+ box-shadow: 0 0 0 1px rgb(79 156 255 / 14%);
883
+ animation: store-operation-target-in 0.16s ease-out both;
884
+ }
885
+ .agent-operation__pointer-label {
886
+ border-color: #ebecf0;
887
+ color: #525252;
888
+ box-shadow: 0 4px 16px rgb(29 41 57 / 12%);
889
+ }
164
890
  .agent-operation__surface {
165
891
  border: 1px solid rgb(96 156 245 / 90%);
166
892
  border-radius: 12px;
167
893
  background: rgb(96 156 245 / 6%);
168
- box-shadow: inset 0 0 0 1px rgb(255 255 255 / 72%), 0 0 8px rgb(96 156 245 / 20%);
169
- animation: store-operation-mask-in .18s ease-out both;
894
+ box-shadow:
895
+ inset 0 0 0 1px rgb(255 255 255 / 72%),
896
+ 0 0 8px rgb(96 156 245 / 20%);
897
+ animation: store-operation-mask-in 0.18s ease-out both;
170
898
  }
171
899
  .agent-operation__surface[style*="--agent-operation-cutout"] {
172
900
  -webkit-mask-image: none;
173
901
  mask-image: none;
174
902
  }
175
- @keyframes store-operation-mask-in { from { opacity: 0; } to { opacity: 1; } }
176
- @keyframes store-operation-target-in { from { opacity: 0; transform: scale(.985); } to { opacity: 1; transform: scale(1); } }
903
+ @keyframes store-operation-mask-in {
904
+ from {
905
+ opacity: 0;
906
+ }
907
+ to {
908
+ opacity: 1;
909
+ }
910
+ }
911
+ @keyframes store-operation-target-in {
912
+ from {
913
+ opacity: 0;
914
+ transform: scale(0.985);
915
+ }
916
+ to {
917
+ opacity: 1;
918
+ transform: scale(1);
919
+ }
920
+ }
177
921
  @media (prefers-reduced-motion: reduce) {
178
922
  .agent-operation__surface,
179
- .agent-operation__target { animation: none; }
923
+ .agent-operation__target {
924
+ animation: none;
925
+ }
926
+ }
927
+ .agent-operation,
928
+ .agent-operation *,
929
+ .agent-operation::before,
930
+ .agent-operation::after,
931
+ .agent-operation *::before,
932
+ .agent-operation *::after {
933
+ box-sizing: border-box;
934
+ }
935
+ .agent-operation__pointer-navigation-trail::before,
936
+ .agent-operation__pointer-navigation-trail::after {
937
+ box-sizing: content-box;
180
938
  }
181
- .agent-operation, .agent-operation *, .agent-operation::before, .agent-operation::after, .agent-operation *::before, .agent-operation *::after { box-sizing: border-box; }
182
- .agent-operation__pointer-navigation-trail::before,.agent-operation__pointer-navigation-trail::after { box-sizing: content-box; }
183
939
 
184
- .agent-operation__pointer-processing { display: inline-block; flex: none; width: 16px; height: 16px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: agent-operation-processing-spin .8s linear infinite; }
185
- @keyframes agent-operation-processing-spin { to { transform: rotate(360deg); } }
186
- @media (prefers-reduced-motion: reduce) { .agent-operation__pointer-processing { animation: none; } }
940
+ .agent-operation__pointer-processing {
941
+ display: inline-block;
942
+ flex: none;
943
+ width: 16px;
944
+ height: 16px;
945
+ border: 2px solid currentColor;
946
+ border-right-color: transparent;
947
+ border-radius: 50%;
948
+ animation: agent-operation-processing-spin 0.8s linear infinite;
949
+ }
950
+ @keyframes agent-operation-processing-spin {
951
+ to {
952
+ transform: rotate(360deg);
953
+ }
954
+ }
955
+ @media (prefers-reduced-motion: reduce) {
956
+ .agent-operation__pointer-processing {
957
+ animation: none;
958
+ }
959
+ }