evalution 1.0.2 → 1.0.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/index.js +430 -180
- package/dist/client/assets/{index-CORbBplP.js → index-C4XXh0na.js} +38 -38
- package/dist/client/assets/{index-CgcFVsRZ.css → index-CHPZsnKo.css} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/index.d.ts +86 -56
- package/dist/index.js +92 -126
- package/dist/{vercel-ai-sdk-CareWPDM.js → vercel-ai-sdk-B8ivuOzP.js} +129 -35
- package/package.json +3 -3
|
@@ -29,4 +29,4 @@
|
|
|
29
29
|
* The original design remains. The terminal itself
|
|
30
30
|
* has been extended to include xterm CSI codes, among
|
|
31
31
|
* other features.
|
|
32
|
-
*/.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;-webkit-user-select:text;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}:root{--accent: #000;--accent-hover: #1a1a1a;--accent-faint: rgba(0, 0, 0, .1);--on-accent: #fff;--link: #3478f6;--chrome-bg: #fff;--chrome-text: rgba(0, 0, 0, .45);--sidebar-bg: #f5f5f7;--sidebar-border: #e0e0e0;--sidebar-heading: #888;--tree-text: #1d1d1f;--tree-text-secondary: #86868b;--tree-hover: rgba(0, 0, 0, .04);--tree-selected-bg: rgba(0, 0, 0, .06);--tree-selected-text: #1d1d1f;--tree-folder-icon: #4a9eff;--tree-file-icon: #86868b;--tree-prompt-icon: var(--accent);--tree-disclosure: #86868b;--tree-toolbar-bg: #f5f5f7;--tree-toolbar-border: #e0e0e2;--input-bg: rgba(0, 0, 0, .04);--input-border: #ddd;--input-text: #333;--input-focus-bg: #fff;--content-bg: #fff;--content-card-bg: #fff;--content-card-shadow: 0 -2px 0 rgba(255, 255, 255, .07), 0 -1px 5px rgba(0, 0, 0, .2);--panel-bg: #f9fafb;--panel-border: #e5e7eb;--panel-card-bg: #fff;--panel-card-border: #e5e7eb;--panel-title: #9ca3af;--panel-text: #111827;--panel-text-secondary: #9ca3af;--panel-text-muted: #d1d5db;--prompt-header-bg: #f0f0f5;--prompt-header-border: #e0e0e8;--prompt-header-text: #1d1d1f;--exec-bg: #f0f0f5;--exec-border: #e0e0e8;--pill-bg: #fff;--pill-border: #e5e7eb;--pill-text: #374151;--pill-hover-bg: #f0f0f2;--dropdown-bg: white;--dropdown-border: #e5e7eb;--dropdown-shadow: 0 4px 16px rgba(0, 0, 0, .1);--dropdown-mode-bg: #fafafa;--dropdown-mode-border: #f3f4f6;--dropdown-mode-active-bg: #111827;--dropdown-option-hover: #f9fafb;--dropdown-option-selected: #f0f7ff;--dropdown-text: #374151;--dropdown-text-muted: #6b7280;--dropdown-text-faint: #b0b7c3;--tool-call-bg: #fafafa;--tool-call-border: #e8e8e8;--token-text: #2563eb;--error-bg: #fff0f0;--error-border: #f5c6c6;--error-text: #c62828;--delete-hover-bg: #fef2f2;--delete-hover-text: #ef4444}@media (prefers-color-scheme: dark){:root{--accent: #fff;--accent-hover: rgba(255, 255, 255, .85);--accent-faint: rgba(255, 255, 255, .15);--on-accent: #000;--link: #4c9ef5;--chrome-bg: #000;--chrome-text: rgba(255, 255, 255, .5);--sidebar-bg: #1c1c1e;--sidebar-border: rgba(255, 255, 255, .08);--sidebar-heading: #9aa3b8;--tree-text: #e5e5e7;--tree-text-secondary: #9aa3b8;--tree-hover: rgba(255, 255, 255, .06);--tree-selected-bg: rgba(255, 255, 255, .1);--tree-selected-text: #fff;--tree-folder-icon: #5a9ef5;--tree-file-icon: #9aa3b8;--tree-prompt-icon: #7b8ef5;--tree-disclosure: #9aa3b8;--tree-toolbar-bg: #1c1c1e;--tree-toolbar-border: rgba(255, 255, 255, .08);--input-bg: rgba(255, 255, 255, .06);--input-border: rgba(255, 255, 255, .1);--input-text: #e5e5e7;--input-focus-bg: #2c2c2e;--content-bg: #292d3e;--content-card-bg: #181b2c;--content-card-shadow: none;--panel-bg: #252838;--panel-border: rgba(255, 255, 255, .08);--panel-card-bg: #202433;--panel-card-border: rgba(255, 255, 255, .08);--panel-title: #9aa3b8;--panel-text: #e5e5e7;--panel-text-secondary: #9aa3b8;--panel-text-muted: #6e7280;--prompt-header-bg: #1f2133;--prompt-header-border: rgba(255, 255, 255, .08);--prompt-header-text: #e5e5e7;--exec-bg: #1f2133;--exec-border: rgba(255, 255, 255, .08);--pill-bg: #2c2c2e;--pill-border: rgba(255, 255, 255, .1);--pill-text: #e5e5e7;--pill-hover-bg: #3a3a3c;--dropdown-bg: #20222c;--dropdown-border: rgba(255, 255, 255, .1);--dropdown-shadow: 0 4px 24px rgba(0, 0, 0, .5);--dropdown-mode-bg: #181b2c;--dropdown-mode-active-bg: #3a3d52;--dropdown-mode-border: rgba(255, 255, 255, .06);--dropdown-option-hover: rgba(255, 255, 255, .06);--dropdown-option-selected: rgba(52, 120, 246, .18);--dropdown-text: #e5e5e7;--dropdown-text-muted: #9aa3b8;--dropdown-text-faint: #636366;--tool-call-bg: #1f2238;--tool-call-border: rgba(255, 255, 255, .08);--token-text: #58a6ff;--error-bg: rgba(220, 38, 38, .1);--error-border: rgba(220, 38, 38, .3);--error-text: #f87171;--delete-hover-bg: rgba(239, 68, 68, .1);--delete-hover-text: #f87171;--proppy-border: rgba(255, 255, 255, .1);--proppy-container-bg: #1f2238;--proppy-button-bg: #2c2c2e;--proppy-button-color: #e5e5e7;--proppy-input-bg: #1c1c1e;--proppy-input-color: #e5e5e7;--proppy-text-primary: #e5e5e7;--proppy-text-muted: #6e7280;--proppy-text-secondary: #9aa3b8;--proppy-danger-bg: rgba(220, 38, 38, .12);--proppy-danger-border: rgba(220, 38, 38, .3);--proppy-danger-color: #f87171}}.pg-openai-icon{color:#000}@media (prefers-color-scheme: dark){.pg-openai-icon{color:#fff}}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--chrome-bg)}code,pre{font-family:Menlo,Monaco,Courier New,monospace}.app{display:flex;flex-direction:column;height:100vh}.app-titlebar{height:36px;flex-shrink:0;display:flex;flex-direction:row;align-items:center;background:var(--chrome-bg)}.app-titlebar-icon{width:46px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--chrome-text);z-index:10}@media (prefers-color-scheme: dark){.app-titlebar-icon img{filter:invert(1)}}.app-main{flex:1;min-height:0;display:flex;flex-direction:row;margin-top:-36px}.icon-strip{width:46px;flex-shrink:0;display:flex;flex-direction:column;background:var(--chrome-bg)}.icon-nav{flex:1;background:transparent;width:auto;display:flex;flex-direction:column;align-items:center;padding-top:64px;flex-shrink:0}.content-area{flex:1;min-width:0;display:flex;flex-direction:column}.content-header{height:36px;flex-shrink:0;display:flex;align-items:flex-end;gap:0;position:relative;z-index:10}.content-header-spacer{flex-shrink:0;height:100%}.content-card{flex:1;min-height:0;display:flex;flex-direction:row;border-radius:12px 0 0;box-shadow:var(--content-card-shadow);overflow:hidden;background:var(--prompt-header-bg)}.icon-nav-btn{width:40px;height:34px;border:none;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:6px;color:#00000059;margin-bottom:2px;align-self:flex-end;transition:color .15s,background .15s;padding-right:11px}.icon-nav-btn:hover{color:#000000b3;background:#0000000f}.icon-nav-btn.active{color:var(--accent);background:var(--sidebar-bg);border-radius:4px 0 0 4px;box-shadow:inset 0 1px #0000000f,inset 0 -1px #0000000a,inset 1px 0 0 var(--accent);position:relative;z-index:5}.icon-nav-btn.active:hover{background:var(--sidebar-bg)}@media (prefers-color-scheme: dark){.icon-nav-btn{color:#7a7a9a}.icon-nav-btn:hover{color:#e0e0f0;background:#ffffff14}.icon-nav-btn.active{box-shadow:inset 0 1px #ffffff24,inset 1px 0 #ffffff12,inset 0 -1px #ffffff12,inset 1px 0 0 var(--accent)}}.resize-handle{width:4px;cursor:col-resize;background:transparent;flex-shrink:0;transition:background .15s}.resize-handle:hover,.resize-handle:active{background:var(--accent-faint)}.section-panel{border-right:1px solid var(--sidebar-border);overflow:hidden;background:var(--sidebar-bg);flex-shrink:0;display:flex;flex-direction:column}.section-panel-header{height:32px;box-sizing:border-box;padding:0 10px;font-family:Geist Mono,ui-monospace,monospace;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--sidebar-heading);flex-shrink:0;display:flex;align-items:center;justify-content:space-between}.section-panel-header-actions{display:flex;align-items:center;gap:2px;margin-right:-4px}.tree-header-search{flex-shrink:0;padding:0 6px 5px;border-bottom:1px solid var(--tree-toolbar-border)}.tree-header-search input{width:100%;box-sizing:border-box;border:1px solid var(--input-border);background:var(--input-bg);color:var(--input-text);border-radius:5px;font-size:11.5px;font-family:inherit;padding:3px 7px;outline:none}.tree-header-search input::placeholder{color:var(--tree-text-secondary)}.tree-header-search input:focus{border-color:var(--accent);background:var(--input-focus-bg)}.section-panel-body{flex:1;overflow:auto;padding:4px 0}.file-tree{padding:2px 0}.tree-row{display:flex;align-items:center;gap:6px;height:28px;padding-right:8px;cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;margin:1px 6px}.tree-row:hover{background:var(--tree-hover)}.tree-row-selected{background:var(--tree-selected-bg);color:var(--tree-selected-text)}.tree-row-selected:hover{background:var(--tree-selected-bg)}.tree-row-selected .tree-row-params{color:var(--tree-text-secondary)}.tree-disclosure{flex-shrink:0;color:var(--tree-disclosure);width:8px;height:8px}.tree-icon{flex-shrink:0}.tree-icon-folder{color:var(--tree-folder-icon);display:flex;align-items:center;flex-shrink:0}.tree-icon-file{color:var(--tree-file-icon);display:flex;align-items:center;flex-shrink:0}.tree-icon-prompt{color:var(--tree-prompt-icon);display:flex;align-items:center;flex-shrink:0}.tree-row-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px;line-height:26px;color:var(--tree-text)}.tree-row-params{font-size:10px;color:var(--tree-text-secondary);white-space:nowrap;flex-shrink:0}.tree-status{padding:12px 10px;font-size:12px;color:var(--tree-text-secondary)}.tree-error{color:var(--error-text)}.tree-empty-state{padding:24px 12px;font-size:12px;color:var(--tree-text-secondary);text-align:center}.tree-empty-state p{margin:0 0 12px}.tree-add-prompt-btn{background:var(--accent);color:var(--on-accent);border:none;border-radius:5px;padding:5px 14px;font-size:12px;cursor:pointer}.tree-add-prompt-btn:hover{background:var(--accent-hover)}.tree-toolbar{flex-shrink:0;display:flex;align-items:center;gap:6px;border-top:1px solid var(--tree-toolbar-border);padding:5px 6px;background:var(--tree-toolbar-bg)}.tree-toolbar-btn{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:none;color:var(--tree-text-secondary);border-radius:4px;cursor:pointer;flex-shrink:0}.tree-toolbar-btn:hover{background:var(--tree-hover);color:var(--tree-text)}.tree-filter{flex:1;display:flex;align-items:center;gap:4px;background:var(--input-bg);border:1px solid var(--input-border);border-radius:5px;padding:2px 6px;color:var(--tree-text-secondary);min-width:0}.tree-filter input{flex:1;border:none;background:none;font-size:11.5px;color:var(--input-text);outline:none;min-width:0;padding:1px 0}.tree-filter input::placeholder{color:var(--tree-text-secondary)}.tree-filter:focus-within{border-color:var(--accent);background:var(--input-focus-bg)}.tree-rename-input{flex:1;min-width:0;border:1px solid var(--accent);border-radius:3px;background:var(--panel-card-bg);color:var(--tree-text);font-size:13px;font-family:inherit;padding:0 4px;height:20px;outline:none;box-shadow:0 0 0 2px var(--accent-faint)}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.dialog{background:var(--chrome-bg);border:1px solid var(--sidebar-border);border-radius:8px;width:380px;max-width:90vw;box-shadow:0 8px 32px #0003}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 10px;border-bottom:1px solid var(--panel-border)}.dialog-header h3{margin:0;font-size:14px;font-weight:600;color:var(--panel-text)}.dialog-close{background:none;border:none;color:var(--panel-text-secondary);font-size:18px;cursor:pointer;padding:0 2px;line-height:1}.dialog-close:hover{color:var(--panel-text)}.dialog-body{padding:14px 16px 16px}.dialog-status{font-size:12px;color:var(--panel-text-secondary);padding:8px 0}.dialog-error{font-size:12px;color:var(--error-text);margin-bottom:10px}.dialog-field{margin-bottom:12px}.dialog-field label{display:block;font-size:11px;color:var(--panel-text-secondary);margin-bottom:4px}.dialog-field input,.dialog-field select{width:100%;background:var(--input-bg);border:1px solid var(--input-border);border-radius:4px;color:var(--panel-text);font-size:13px;padding:6px 8px;outline:none;font-family:inherit}.dialog-field input:focus,.dialog-field select:focus{border-color:var(--accent)}.dialog-field input::placeholder{color:var(--panel-text-muted)}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.dialog-btn-cancel{background:none;border:1px solid var(--panel-border);border-radius:4px;color:var(--panel-text-secondary);font-size:12px;padding:6px 14px;cursor:pointer;font-family:inherit}.dialog-btn-cancel:hover{background:var(--pill-hover-bg)}.dialog-btn-create{background:var(--accent);border:none;border-radius:4px;color:var(--on-accent);font-size:12px;padding:6px 14px;cursor:pointer;font-family:inherit}.dialog-btn-create:hover{background:var(--accent-hover)}.dialog-providers{display:flex;flex-direction:column;gap:6px}.dialog-provider-btn{display:flex;align-items:center;gap:10px;width:100%;background:var(--input-bg);border:1px solid var(--panel-border);border-radius:6px;padding:10px 12px;color:var(--panel-text);cursor:pointer;text-align:left;font-family:inherit}.dialog-provider-btn:hover{background:var(--tree-hover)}.dialog-provider-icon{flex-shrink:0;color:var(--panel-text-secondary)}.dialog-provider-name{font-size:13px;font-weight:500}.dialog-provider-desc{font-size:11px;color:var(--panel-text-secondary);margin-top:2px}.main-content{display:flex;flex-direction:column;overflow:hidden}.pane-tabbar{position:relative;display:flex;align-items:flex-end;min-width:0}.pane-tabs-scroll{display:flex;align-items:flex-end;flex:1;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;padding-right:48px}.pane-tabs-scroll::-webkit-scrollbar{display:none}.pane-drop-target{background:#667eea26;border-radius:4px 4px 0 0}.pane-resize-divider{width:4px;flex-shrink:0;cursor:col-resize;align-self:stretch;transition:background .15s}.pane-resize-divider:hover{background:var(--accent-faint)}.tab-split-btn{position:absolute;right:10px;bottom:2px;width:26px;height:26px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--chrome-text);cursor:pointer;border-radius:4px;transition:color .15s,background .15s}.tab-split-btn:hover{color:#0009;background:#00000014}@media (prefers-color-scheme: dark){.tab-split-btn:hover{color:#ffffffb3;background:#ffffff14}}.tab{position:relative;flex-shrink:0;height:30px;margin-top:6px;padding:0 18px;display:flex;align-items:center;gap:6px;background:#00000012;color:#0006;border:none;box-shadow:inset 0 1px #0000000d,inset 1px 0 #0000000a,inset -1px 0 #0000000a;cursor:pointer;font-size:12px;font-family:inherit;white-space:nowrap;clip-path:polygon(8px 0%,calc(100% - 8px) 0%,100% 100%,0% 100%);z-index:1;margin-left:-5px;transition:background .15s,color .15s}.tab:first-child{margin-left:0}.tab:hover:not(.tab-active){background:#0000001c;color:#0009}@media (prefers-color-scheme: dark){.tab{background:#4a4a68;color:#b8b8d0;box-shadow:inset 0 1px #ffffff24,inset 1px 0 #ffffff12,inset -1px 0 #ffffff12}.tab:hover:not(.tab-active){background:#565678;color:#d8d8ec}}.tab.tab-active{background:var(--prompt-header-bg);color:var(--prompt-header-text);border-top:1px solid var(--accent);z-index:2}.tab-icon{display:flex;align-items:center;opacity:.7}.tab.tab-active .tab-icon{opacity:1;color:var(--accent)}.welcome-tab-emoji{font-size:13px;line-height:1}.tab-label{max-width:120px;overflow:hidden;text-overflow:ellipsis}.tab-close,.tab-dirty{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;margin-left:2px;margin-right:-9px;border-radius:3px;line-height:1;flex-shrink:0}.tab-close{font-size:14px;opacity:.45}.tab-close:hover{opacity:1;background:#0000001a}.tab-dirty{font-size:7px;opacity:.7}.header-path{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--chrome-text);font-family:Menlo,Monaco,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-path .icloud-icon{color:var(--chrome-text);flex-shrink:0}.pg-prompt-header{flex-shrink:0;display:flex;align-items:center;gap:12px;padding:0 20px;height:52px;background:var(--prompt-header-bg);border-bottom:1px solid var(--prompt-header-border)}.pg-prompt-header-identity{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.pg-prompt-header-right{flex-shrink:0;display:flex;align-items:center;gap:8px}.pg-prompt-name{font-size:15px;font-weight:600;color:var(--prompt-header-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pg-prompt-path{font-size:11px;color:var(--panel-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.pg-header-btn{display:inline-flex;align-items:center;justify-content:center;border-radius:7px;border:1px solid var(--prompt-header-border);background:#0000000d;color:var(--prompt-header-text);cursor:pointer;transition:background .1s}.pg-header-btn--icon{width:30px;height:30px;padding:0}.pg-header-btn:hover{background:#0000001a}@media (prefers-color-scheme: dark){.pg-header-btn{background:#ffffff0f}.pg-header-btn:hover{background:#ffffff1c}}.pg-header-error{margin-left:auto;display:flex;align-items:center;gap:6px;font-size:12px;color:var(--error-text);white-space:nowrap}.pg-playground-wrapper{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden;container-type:inline-size;container-name:playground}.pg-content{flex:1;min-height:0;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;background:var(--content-bg)}.pg-editor-col{flex:1;min-width:0;padding:14px 16px}.pg-exec-col{background:var(--exec-bg);border-top:1px solid var(--exec-border)}.pg-exec-inner{display:flex;flex-direction:row;align-items:center;padding:10px 0;min-height:66px;box-sizing:border-box}.pg-exec-header{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:3px;padding:0 16px;flex-shrink:0;border-bottom:none}.pg-exec-title{font-family:Geist Mono,ui-monospace,monospace;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--panel-text-secondary)}.pg-exec-param-count{font-family:Geist Mono,ui-monospace,monospace;font-size:10.5px;font-weight:500;color:var(--panel-text-secondary)}.pg-exec-body{flex:1;min-width:0;padding:0 12px}.pg-exec-body>div{display:flex!important;flex-direction:row!important;flex-wrap:wrap;gap:8px 16px!important;align-items:flex-end}.pg-exec-footer{flex-shrink:0;padding:0 16px;border-top:none}.pg-run-btn{width:auto;height:38px;background:#111827;color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;padding:0 18px;font-family:inherit;white-space:nowrap;transition:background .1s}.pg-run-btn:hover:not(:disabled){background:#1f2937}.pg-run-btn:disabled{opacity:.5;cursor:not-allowed}@media (prefers-color-scheme: dark){.pg-run-btn{background:#e5e7eb;color:#111827}.pg-run-btn:hover:not(:disabled){background:#d1d5db}}.pg-exec-error{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;color:var(--error-text);margin-top:8px}@container playground (min-width: 620px){.pg-content{flex-direction:row;overflow:hidden}.pg-editor-col{overflow-y:auto;height:100%;box-sizing:border-box}.pg-exec-col{width:280px;flex-shrink:0;border-top:none;border-left:1px solid var(--exec-border);overflow:hidden;display:flex;flex-direction:column}.pg-exec-inner{flex-direction:column!important;align-items:stretch!important;padding:0!important;height:auto!important}.pg-exec-header{flex-direction:row!important;align-items:center!important;justify-content:space-between!important;border-bottom:none!important;padding:12px 16px 10px!important;gap:0!important}.pg-exec-body{padding:14px 16px!important;overflow-y:auto;flex:none!important}.pg-exec-body>div{display:flex!important;flex-direction:column!important;align-items:stretch!important;flex-wrap:nowrap!important;gap:12px!important}.pg-exec-footer{padding:0 16px 14px!important;border-top:none!important}.pg-run-btn{width:100%!important;height:42px}}.pg-editor{padding:0;display:flex;flex-direction:column;gap:0}.pg-card{background:var(--panel-card-bg);border:1px solid var(--panel-card-border);border-radius:10px;margin-bottom:8px;overflow:hidden}.pg-model-picker{position:relative;padding:0;flex:1;min-width:200px}.pg-model-picker-trigger{display:flex;align-items:center;gap:8px;width:100%;height:30px;box-sizing:border-box;padding:0 9px;border:1px solid var(--prompt-header-border);border-radius:7px;background:#0000000a;cursor:pointer;font-family:inherit;text-align:left;transition:background .1s}.pg-model-picker-trigger:hover{background:#00000014}@media (prefers-color-scheme: dark){.pg-model-picker-trigger{background:#ffffff0d}.pg-model-picker-trigger:hover{background:#ffffff17}}.pg-model-picker-label{font-size:13px;font-weight:500;color:var(--prompt-header-text);white-space:nowrap}.pg-model-picker-source{font-size:11px;color:var(--panel-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;flex:1}.pg-model-picker-trigger svg:last-child{margin-left:auto;flex-shrink:0}.pg-model-picker-dropdown{background:var(--dropdown-bg);border:1px solid var(--dropdown-border);border-radius:10px;box-shadow:var(--dropdown-shadow);max-height:380px;overflow-y:auto;padding:4px 0}.pg-mode-toggle{display:flex;gap:2px;padding:8px 10px;border-bottom:1px solid var(--dropdown-mode-border);background:var(--dropdown-mode-bg);border-radius:10px 10px 0 0}.pg-mode-btn{flex:1;padding:5px 12px;border:none;background:transparent;color:var(--dropdown-text-muted);font-size:13px;font-weight:500;font-family:inherit;border-radius:6px;cursor:pointer;transition:background .1s,color .1s}.pg-mode-btn:hover{background:var(--dropdown-option-hover)}.pg-mode-btn.active{background:var(--dropdown-mode-active-bg);color:#fff}.pg-provider-group{padding:4px 0}.pg-provider-group+.pg-provider-group{border-top:1px solid var(--dropdown-mode-border)}.pg-provider-group-header{display:flex;align-items:center;gap:6px;padding:8px 12px 4px;font-size:11px;font-weight:600;color:var(--dropdown-text-muted);text-transform:uppercase;letter-spacing:.04em}.pg-model-option{display:flex;align-items:center;gap:4px;width:100%;padding:7px 12px;border:none;background:none;cursor:pointer;font-family:inherit;font-size:14px;color:var(--dropdown-text);text-align:left;transition:background .08s}.pg-model-option:hover{background:var(--dropdown-option-hover)}.pg-model-option.selected{background:var(--dropdown-option-selected)}.pg-model-option-check{width:18px;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--dropdown-text)}.pg-model-option-label{font-weight:450}.pg-model-option-source{flex:1;text-align:right;font-size:11px;color:var(--dropdown-text-faint);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pg-custom-model-row,.pg-custom-gateway-row{display:flex;align-items:center;gap:6px;padding:5px 12px}.pg-custom-gateway-row{border-top:1px solid var(--dropdown-mode-border);padding-top:8px;padding-bottom:8px}.pg-custom-model-row input,.pg-custom-gateway-row input{flex:1;min-width:0;padding:4px 8px;border:1px solid var(--dropdown-border);border-radius:5px;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--dropdown-text);background:var(--dropdown-bg);outline:none}.pg-custom-model-row input:focus,.pg-custom-gateway-row input:focus{border-color:var(--accent);box-shadow:0 0 0 2px #a5b4fc40}.pg-custom-model-use{padding:4px 10px;border:1px solid var(--dropdown-border);border-radius:5px;background:var(--dropdown-bg);font-size:12px;font-weight:500;color:var(--dropdown-text-muted);cursor:pointer;font-family:inherit;white-space:nowrap}.pg-custom-model-use:hover{background:var(--dropdown-option-hover);border-color:var(--dropdown-border)}.pg-model-overlay-select{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none}.pg-msg-header{display:flex;align-items:center;padding:10px 0 5px}.pg-role-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--panel-text-secondary);font-family:Geist Mono,ui-monospace,monospace}.pg-role-wrapper{display:flex;align-items:center;gap:3px;position:relative}.pg-role-select{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer;width:100%}.pg-role-select:focus{outline:none}.pg-delete-msg{margin-left:auto;background:none;border:none;cursor:pointer;color:var(--panel-text-muted);font-size:17px;line-height:1;padding:2px 4px;border-radius:4px;font-family:inherit}.pg-delete-msg:hover{color:var(--delete-hover-text);background:var(--delete-hover-bg)}.pg-property-card{padding:10px 12px}.pg-param-description{font-size:11.5px;color:var(--panel-text-secondary);line-height:1.45;margin-top:2px;white-space:pre-line}.pg-desc-toggle{display:inline;background:none;border:none;padding:0;margin-left:4px;font-size:11.5px;color:var(--panel-text-secondary);cursor:pointer;text-decoration:underline;text-underline-offset:2px}.pg-desc-toggle:hover{color:var(--panel-text)}.pg-param-input-inline{padding:0 0 10px;display:block}.pg-add-param-btn{position:relative}.pg-param-card{padding:11px 14px}.pg-param-label{font-size:12px;font-weight:600;color:#9ca3af;margin-bottom:5px}.pg-param-type{font-weight:400;color:#d1d5db}.pg-param-input{width:100%;border:none;outline:none;font-size:14px;color:var(--panel-text);font-family:inherit;background:transparent}.pg-param-input::placeholder{color:var(--panel-text-muted)}.pg-output-error{border-color:#f5c6c6}.pg-output-header{padding:8px 12px 7px;font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--panel-text-secondary);border-bottom:1px solid var(--panel-card-border)}.pg-output-error .pg-output-header{color:#e53935}.pg-output-body{padding:10px 12px;font-size:13.5px;line-height:1.6;color:var(--panel-text)}.pg-output-body pre{margin:0;font-family:Menlo,Monaco,monospace;font-size:12.5px;white-space:pre-wrap;word-wrap:break-word}.pg-toolbar{display:flex;align-items:center;justify-content:space-between;padding:6px 0 2px;gap:6px}.pg-toolbar-left,.pg-toolbar-right{display:flex;gap:6px}.pg-pill-btn{display:inline-flex;align-items:center;gap:5px;height:30px;box-sizing:border-box;padding:0 12px;border-radius:8px;border:1px solid var(--pill-border);background:var(--pill-bg);font-size:12px;color:var(--pill-text);cursor:pointer;font-family:inherit;font-weight:500;transition:background .12s,border-color .12s;white-space:nowrap}.pg-pill-btn:hover:not(:disabled){background:var(--pill-hover-bg);border-color:var(--pill-border)}.pg-pill-btn:disabled{opacity:.4;cursor:not-allowed}.pg-pill-primary{background:#1a1a2e;border-color:#1a1a2e;color:#fff;font-weight:600}.pg-pill-primary:hover:not(:disabled){background:#2d2d4e;border-color:#2d2d4e}.pg-status-bar{font-size:11.5px;color:#aaa;padding:0 0 6px;min-height:20px;opacity:0;transition:opacity .12s ease}.pg-status-bar.visible{opacity:1}.pg-error-bar{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;background:var(--error-bg);border:1px solid var(--error-border);border-radius:8px;font-size:12.5px;color:var(--error-text);margin-bottom:8px}.pg-dismiss{background:none;border:none;cursor:pointer;color:#e53935;font-size:16px;line-height:1;padding:0 2px}.pg-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:500}.pg-modal{background:var(--content-bg);border:1px solid var(--panel-border);border-radius:12px;box-shadow:0 8px 32px #0000002e;width:420px;max-width:calc(100vw - 48px);display:flex;flex-direction:column;overflow:hidden}.pg-modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 12px;border-bottom:1px solid var(--panel-border);flex-shrink:0}.pg-modal-title{font-size:13px;font-weight:600;color:var(--panel-text)}.pg-modal-body{overflow-y:auto;max-height:60vh;padding:4px 16px}.pg-modal-empty{padding:20px 0;font-size:13px;color:var(--panel-text-secondary);text-align:center}.pg-modal-body .pg-msg-header{padding:10px 0 5px}.pg-modal-body .token-editor,.pg-modal-body .pg-msg-content,.pg-modal-body .pg-param-input-inline{padding-left:0;padding-right:0}.pg-modal-footer{padding:10px 16px 12px;border-top:1px solid var(--panel-border);flex-shrink:0}.pg-spinner{color:#aaa;font-size:13px}.empty-state{display:flex;align-items:center;justify-content:center;height:100%;color:#666}.empty-state h2{color:#333;margin-bottom:1rem}.prompt-editor{background:#fff;border-radius:8px;padding:2rem;margin-bottom:2rem;box-shadow:0 2px 4px #0000001a;position:relative}.editor-header h2{margin:0 0 .5rem;color:#333}.file-info{font-size:.85rem;color:#666;font-family:monospace}.update-status{padding:.75rem;margin:1rem 0;border-radius:4px;font-size:.9rem}.update-status.success{background:#e8f5e9;color:#2e7d32;border:1px solid #a5d6a7}.update-status.error{background:#ffebee;color:#c62828;border:1px solid #ef9a9a}.function-params-section{margin:1.5rem 0;padding:1rem;background:#f9f9f9;border-radius:4px}.function-params-section h3{margin:0 0 .5rem;font-size:1.1rem}.params-info{font-size:.85rem;color:#666;margin-bottom:1rem}.params-table{width:100%;border-collapse:collapse;font-size:.9rem}.params-table th{text-align:left;padding:.5rem;background:#e0e0e0;font-weight:600}.params-table td{padding:.5rem;border-bottom:1px solid #e0e0e0}.properties-section h3{margin:1.5rem 0 1rem;font-size:1.1rem;color:#333}.property-item{margin-bottom:1.5rem}.property-item h4{margin:0 0 .5rem;font-size:1rem;color:#555}.parameter-editor label{display:block;font-weight:600;margin-bottom:.5rem;color:#333}.parameter-editor input,.parameter-editor textarea,.parameter-editor select{width:100%;padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem;font-family:inherit}.parameter-editor textarea{font-family:Menlo,Monaco,monospace;resize:vertical}.parameter-editor textarea.has-tokens{border-color:var(--accent);background:#f0f4ff}.token-indicator{font-size:.8rem;color:var(--accent);font-weight:400}.read-only-label{display:inline-block;font-size:.8rem;color:#999;font-weight:400;margin-left:.5rem}.value-display{background:#f5f5f5;padding:.75rem;border-radius:4px;font-size:.85rem;overflow-x:auto}.json-editor{font-family:Menlo,Monaco,monospace}.error-message{color:#e53935;font-size:.85rem;margin-top:.5rem}.checkbox{display:flex;align-items:center;gap:.5rem}.checkbox input[type=checkbox]{width:auto}.model-selector{border:1px solid #ddd;border-radius:4px;padding:1rem}.mode-tabs{display:flex;gap:.5rem;margin-bottom:1rem;border-bottom:1px solid #e0e0e0}.mode-tabs button{padding:.5rem 1rem;background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;font-size:.9rem;color:#666}.mode-tabs button.active{border-bottom-color:var(--accent);color:var(--accent);font-weight:600}.current-value{margin-bottom:1rem;font-size:.9rem;color:#666}.current-value code{background:#f0f0f0;padding:.25rem .5rem;border-radius:3px}.selection-content{display:flex;flex-direction:column;gap:1rem}.selection-content label{display:flex;flex-direction:column;gap:.25rem;font-size:.9rem}.selection-content button{padding:.5rem 1rem;background:var(--accent);color:var(--on-accent);border:none;border-radius:4px;cursor:pointer;font-size:.9rem}.selection-content button:hover{background:var(--accent-hover)}.format-toggle{font-size:.85rem}.message-builder{border:1px solid #ddd;border-radius:4px;padding:1rem}.message-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.message-header label{font-weight:600;color:#333}.add-button{padding:.5rem 1rem;background:var(--accent);color:var(--on-accent);border:none;border-radius:4px;cursor:pointer;font-size:.85rem}.message-item{border:1px solid #e0e0e0;border-radius:4px;padding:1rem;margin-bottom:1rem}.message-controls{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.message-controls select{padding:.25rem .5rem;border:1px solid #ddd;border-radius:4px}.delete-button{padding:.25rem .75rem;background:#e53935;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.85rem}.delete-button:hover{background:#c62828}.empty-messages{text-align:center;color:#999;padding:1rem}.updating-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:#ffffffe6;display:flex;align-items:center;justify-content:center;border-radius:8px}.execution-panel{background:#fff;border-radius:8px;padding:2rem;box-shadow:0 2px 4px #0000001a}.execution-panel h3{margin:0 0 1rem;color:#333}.execution-panel h4{margin:0 0 .75rem;font-size:1rem;color:#555}.param-inputs{margin-bottom:1.5rem;padding:1rem;background:#f9f9f9;border-radius:4px}.param-input{margin-bottom:1rem}.param-input label{display:block;font-weight:600;margin-bottom:.5rem;color:#333}.param-type,.param-default{font-weight:400;color:#666;font-size:.85rem}.param-input input{width:100%;padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem}.execution-controls{display:flex;gap:1rem;margin-bottom:1.5rem}.execute-button{padding:.75rem 1.5rem;background:var(--accent);color:var(--on-accent);border:none;border-radius:4px;cursor:pointer;font-size:1rem;font-weight:600}.execute-button:hover:not(:disabled){background:var(--accent-hover)}.execute-button:disabled{opacity:.6;cursor:not-allowed}.execute-button.stream{background:#764ba2}.execute-button.stream:hover:not(:disabled){background:#663a8e}.execution-error{padding:1rem;background:#ffebee;color:#c62828;border:1px solid #ef9a9a;border-radius:4px;margin-bottom:1rem}.execution-result{margin-top:1.5rem}.execution-result pre{background:#f5f5f5;padding:1rem;border-radius:4px;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word}.execution-loading{display:flex;justify-content:center;padding:2rem}.spinner{color:var(--accent);font-weight:600}.pg-panel{break-inside:avoid;padding-bottom:4px}.pg-panel+.pg-panel{border-top:1px solid var(--panel-border);padding-top:12px}.pg-panel-header{padding:0 0 8px}.pg-panel-title{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--panel-title)}.pg-panel-body{padding:0;display:flex;flex-direction:column;gap:0}.pg-panel-footer{padding:8px 0 4px;display:flex;gap:8px;flex-wrap:wrap}.pg-panel-header+.pg-panel-footer{padding-top:4px}.pg-panel-model-row{display:flex;align-items:center;gap:8px;padding-bottom:8px;flex-wrap:wrap}.pg-panel-model-row-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.pg-panel-error{border-color:var(--error-border)}.pg-panel-title-error{color:var(--error-text)}.pg-panel-card{border-top:1px solid var(--panel-border)}.pg-panel-card:first-child{border-top:none}.pg-msg-textarea{display:block;width:100%;border:none;outline:none;resize:none;overflow:hidden;padding:0 0 10px;font-family:inherit;font-size:14px;font-weight:400;color:var(--panel-text);line-height:1.55;background:transparent;min-height:36px}.pg-msg-textarea::placeholder{color:var(--panel-text-muted)}.pg-msg-content{padding:0 0 10px;font-size:14px;font-weight:400;color:var(--panel-text);line-height:1.55}.pg-placeholder{color:var(--panel-text-secondary);font-style:italic}.token-editor{display:block;width:100%;padding:0 0 10px;font-family:inherit;font-size:14px;font-weight:400;color:var(--panel-text);line-height:1.55;background:transparent;min-height:36px;outline:none;border:none;white-space:pre-wrap;word-break:break-word;box-sizing:border-box}.token-editor[data-placeholder]:empty:before{content:attr(data-placeholder);color:var(--panel-text-muted);font-weight:400;pointer-events:none;display:block}.te-token{color:var(--token-text);font-weight:600}.te-suggest{--proppy-menu-bg: var(--panel-bg);--proppy-menu-color: var(--panel-text);--proppy-border: var(--panel-border);--proppy-menu-active-bg: color-mix( in srgb, var(--token-text) 16%, transparent );font-family:inherit}.te-suggest-item.active{color:var(--token-text)}.te-suggest-action{color:var(--panel-text-secondary)}.pg-tool-calls{padding:0 0 10px;display:flex;flex-direction:column;gap:6px}.pg-tool-call{border:1px solid var(--tool-call-border);border-radius:7px;overflow:hidden;background:var(--tool-call-bg)}.pg-tool-call-header{display:flex;align-items:center;justify-content:space-between;padding:5px 10px 4px;border-bottom:1px solid var(--tool-call-border)}.pg-tool-call-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--panel-text-secondary)}.pg-tool-call-fields{display:flex;gap:0;padding:6px 10px 7px}.pg-tool-name-input,.pg-tool-args-input{border:none;outline:none;background:transparent;font-family:Menlo,Monaco,monospace;font-size:12px;color:var(--panel-text);padding:0}.pg-tool-name-input{width:30%;min-width:80px;color:var(--accent);font-weight:600;border-right:1px solid var(--tool-call-border);padding-right:10px;margin-right:10px}.pg-tool-name-input::placeholder,.pg-tool-args-input::placeholder{color:var(--panel-text-muted)}.pg-tool-args-input{flex:1;min-width:0}.pg-add-tool-call-btn{align-self:flex-start;background:none;border:1px dashed var(--panel-text-muted);border-radius:6px;padding:4px 10px;font-size:12px;color:var(--panel-text-secondary);cursor:pointer;font-family:inherit;transition:border-color .12s,color .12s}.pg-add-tool-call-btn:hover{border-color:var(--panel-text-secondary);color:var(--panel-text)}.pg-add-message-row{padding:8px 12px}.pg-add-msg-btn{display:flex;align-items:center;gap:7px;background:none;border:none;cursor:pointer;font-size:13px;color:var(--panel-text-secondary);font-family:inherit;padding:6px 0 4px;width:100%}.pg-add-msg-btn:hover{color:var(--panel-text)}.trace-list{padding:2px 0}.trace-list-row{padding:8px 12px;border-bottom:1px solid var(--sidebar-border);cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;flex-direction:column;gap:4px}.trace-list-row:hover{background:var(--tree-hover)}.trace-list-row-selected{background:var(--tree-selected-bg)}.trace-list-row-top{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--tree-text)}.trace-list-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.trace-list-row-meta{display:flex;gap:8px;font-size:11px;color:var(--tree-text-secondary)}.trace-list-hint{color:var(--tree-text-secondary);font-size:11.5px}.trace-status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;background:var(--tree-text-secondary)}.trace-status-running{background:#f5a623;animation:trace-pulse 1.2s ease-in-out infinite}.trace-status-ok{background:#34c759}.trace-status-error{background:#ef4444}@keyframes trace-pulse{0%,to{opacity:1}50%{opacity:.35}}:root{--trace-bg: #fafbfc;--trace-row-bg: #ffffff;--trace-row-alt: #f5f6f8;--trace-row-hover: #eef0f4;--trace-text: #1d1d1f;--trace-text-dim: #6b7280;--trace-border: rgba(0, 0, 0, .07);--trace-bar-track: rgba(0, 0, 0, .05);--trace-code-bg: rgba(0, 0, 0, .05);--trace-message-bg: #f3f4f6;--trace-error-text: #b91c1c}@media (prefers-color-scheme: dark){:root{--trace-bg: #1e1e2a;--trace-row-bg: #262635;--trace-row-alt: #2d2d3e;--trace-row-hover: #30304a;--trace-text: #e4e6f0;--trace-text-dim: #8a92a8;--trace-border: rgba(255, 255, 255, .06);--trace-bar-track: rgba(255, 255, 255, .04);--trace-code-bg: rgba(0, 0, 0, .25);--trace-message-bg: rgba(0, 0, 0, .22);--trace-error-text: #ff8a8a}}.trace-view{display:flex;flex-direction:column;height:100%;background:var(--trace-bg);color:var(--trace-text);overflow:hidden;font-size:12.5px}.trace-view-error,.trace-view-loading{padding:24px;color:var(--trace-text-dim)}.trace-view-error{color:var(--trace-error-text)}.trace-view-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;height:52px;background:var(--prompt-header-bg);border-bottom:1px solid var(--prompt-header-border);flex-shrink:0}.trace-view-title{display:flex;align-items:center;gap:8px;font-weight:600}.trace-view-timestamp{color:var(--trace-text-dim);font-weight:400;font-size:11.5px}.trace-view-meta{display:flex;gap:12px;color:var(--trace-text-dim);font-size:11.5px}.trace-waterfall{flex:1;overflow:auto}.trace-row{border-bottom:1px solid var(--trace-border)}.trace-row-main{display:grid;grid-template-columns:minmax(120px,1fr) 70px minmax(80px,200px);align-items:center;gap:12px;padding:6px 16px 6px 13px;min-height:32px}.trace-row-expanded>.trace-row-main{background:var(--trace-row-hover)}.trace-row-error>.trace-row-main{background:var(--error-bg)}.trace-row-error>.trace-row-main:hover,.trace-row-error.trace-row-expanded>.trace-row-main{background:color-mix(in srgb,var(--error-bg) 85%,var(--trace-row-hover) 15%)}.trace-row-label{display:flex;align-items:center;gap:8px;overflow:hidden;min-width:0}.trace-row-disclosure{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;border:none;background:none;color:var(--trace-text-dim);cursor:pointer;border-radius:3px}.trace-row-disclosure:hover{background:var(--trace-row-hover);color:var(--color-text)}.trace-disclosure-icon{transition:transform .15s ease;transform:rotate(-90deg)}.trace-disclosure-icon-open{transform:rotate(0)}.trace-row-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trace-row-name-linked{cursor:pointer}.trace-row-name-linked:hover{text-decoration:underline;text-underline-offset:2px}.trace-row-prompt-btn{flex-shrink:0;display:flex;align-items:center;justify-content:center;padding:2px;border:none;background:none;color:var(--trace-text-dim);cursor:pointer;border-radius:3px;opacity:0;transition:opacity .1s}.trace-row-label:hover .trace-row-prompt-btn{opacity:1}.trace-row-prompt-btn:hover{color:var(--color-text);background:var(--trace-row-hover)}.trace-row-duration{color:var(--trace-text-dim);font-variant-numeric:tabular-nums;text-align:right;font-size:11.5px}.trace-row-bar-track{position:relative;height:16px;background:var(--trace-bar-track);border-radius:3px}.trace-row-bar{position:absolute;top:2px;bottom:2px;border-radius:2px;background:#7b8ef5;min-width:2px}.trace-row-bar-LLM{background:#7b8ef5}.trace-row-bar-TOOL{background:#f59e0b}.trace-row-bar-AGENT{background:#34d399}.trace-row-bar-EMBEDDING{background:#ec4899}.trace-row-bar-DEFAULT{background:#9aa3b8}.trace-row-bar-running{background-image:linear-gradient(90deg,rgba(255,255,255,.18) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.18) 50%,rgba(255,255,255,.18) 75%,transparent 75%);background-size:12px 12px;animation:trace-bar-stripe .9s linear infinite}@keyframes trace-bar-stripe{0%{background-position:0 0}to{background-position:12px 0}}.span-error-icon{flex-shrink:0;width:14px;height:14px;color:var(--error-text)}.span-kind-pill{display:inline-flex;align-items:center;padding:1px 7px;border-radius:9px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;line-height:1.5;flex-shrink:0;background:var(--trace-bar-track);color:var(--trace-text-dim)}.span-kind-LLM{background:#7b8ef533;color:#4338ca}.span-kind-TOOL{background:#f59e0b33;color:#b45309}.span-kind-AGENT{background:#34d3992e;color:#047857}.span-kind-EMBEDDING{background:#ec48992e;color:#be185d}.span-kind-DEFAULT{background:#9aa3b82e;color:#64748b}@media (prefers-color-scheme: dark){.span-kind-LLM{color:#a5b4fc}.span-kind-TOOL{color:#fcd34d}.span-kind-AGENT{color:#6ee7b7}.span-kind-EMBEDDING{color:#f9a8d4}.span-kind-DEFAULT{color:#94a3b8}}.trace-row-details{background:var(--trace-row-bg);padding:12px 20px 16px;border-top:1px solid var(--trace-border)}.span-details-list{display:grid;grid-template-columns:110px 1fr;gap:4px 16px;margin:0 0 12px}.span-details-row{display:contents}.span-details-row dt{color:var(--trace-text-dim);font-size:11.5px;text-transform:uppercase;letter-spacing:.04em}.span-details-row dd{margin:0;font-size:12.5px;min-width:0;overflow:hidden}.span-details-error{margin:0;padding:8px 10px;background:var(--trace-code-bg);border-radius:4px;font-size:11.5px;white-space:pre-wrap;word-break:break-word;max-height:6em;overflow-y:auto}.span-details-json{margin:0;padding:8px 10px;background:var(--trace-code-bg);border-radius:4px;font-size:11.5px;overflow:auto;max-height:240px}.span-details-section{margin-top:12px}.span-details-section-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--trace-text-dim);margin-bottom:6px}.span-message{background:var(--trace-message-bg);border-radius:4px;padding:8px 10px;margin-bottom:6px}.span-message-role{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--trace-text-dim);margin-bottom:4px}.span-message-content{white-space:pre-wrap;word-break:break-word;font-size:12.5px;line-height:1.5}.welcome{flex:1;overflow-y:auto;display:flex;justify-content:center;align-items:flex-start;padding:48px 24px;background:var(--prompt-header-bg)}.welcome-card{width:100%;max-width:560px;background:var(--panel-card-bg);border:1px solid var(--panel-card-border);border-radius:12px;box-shadow:0 1px 3px #0000000f,0 8px 24px #0000000f;overflow:hidden}.welcome-header{display:flex;flex-direction:column;align-items:center;text-align:center;padding:32px 32px 24px;border-bottom:1px solid var(--panel-border)}.welcome-logo{display:block;margin-bottom:12px}.welcome-header h1{margin:0 0 20px;font-size:22px;font-weight:700;color:var(--panel-text)}.welcome-progress{display:flex;align-items:center;gap:8px;margin:0;padding:0;list-style:none}.welcome-progress li{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--panel-text-secondary)}.welcome-progress li+li:before{content:"";width:24px;height:1px;background:var(--panel-border);margin-right:2px}.welcome-progress-btn{display:inline-flex;align-items:center;gap:6px;background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer}.welcome-progress-btn:hover .welcome-progress-label{color:var(--link);text-decoration:underline}.welcome-progress-dot{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;border:1px solid var(--panel-border);font-size:11px;font-weight:600;background:#fff}.welcome-progress-active .welcome-progress-dot{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.welcome-progress-active .welcome-progress-label{color:var(--panel-text);font-weight:600}.welcome-progress-done .welcome-progress-dot{background:#d6f5e3;border-color:#a3dfc0;color:#1a7f4b}.welcome-step-body{padding:28px 32px 32px;position:relative}.welcome-step-body h2{margin:0 0 6px;font-size:17px;font-weight:700;color:var(--panel-text)}.welcome-step-body h3{margin:0 0 6px;font-size:14px;font-weight:600;color:var(--panel-text)}.welcome-subtitle{margin:0 0 16px;font-size:13px;line-height:1.5;color:var(--panel-text-secondary)}.welcome-subtitle code{background:var(--input-bg);border-radius:3px;padding:1px 5px;font-size:12px}.welcome-field{display:block;margin-bottom:14px}.welcome-field>span{display:block;font-size:12px;font-weight:500;color:var(--panel-text);margin-bottom:5px}.welcome-field input,.welcome-field select{width:100%;box-sizing:border-box;background:#fff;border:1px solid var(--panel-border);border-radius:6px;color:var(--panel-text);font-size:13px;padding:8px 10px;outline:none}.welcome-field input:focus,.welcome-field select:focus{border-color:var(--accent)}.setup-sdk-options{display:flex;flex-wrap:wrap;gap:8px}.setup-sdk-option{min-height:40px;display:inline-flex;align-items:center;gap:9px;background:var(--content-card-bg);color:var(--panel-text);border:1px solid var(--panel-border);border-radius:6px;padding:8px 12px;font-size:13px;font-weight:500;text-decoration:none;cursor:pointer}.setup-sdk-option:hover{background:var(--pill-hover-bg)}.setup-sdk-option:focus-visible{outline:2px solid var(--link);outline-offset:2px}.setup-sdk-option-selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.setup-sdk-icon{display:inline-flex;width:20px;height:20px;color:var(--accent)}.setup-sdk-icon svg{display:block;width:100%;height:100%}.setup-sdk-icon .vercel-square{fill:currentColor}.setup-sdk-icon .vercel-triangle{fill:var(--on-accent)}.welcome-btn-primary{width:100%;background:var(--accent);color:var(--on-accent);border:none;border-radius:6px;font-size:13px;font-weight:600;padding:10px 16px;cursor:pointer;margin-top:4px}.welcome-btn-primary:hover{background:var(--accent-hover)}.welcome-btn-secondary{background:#fff;color:var(--panel-text);border:1px solid var(--panel-border);border-radius:6px;font-size:12px;font-weight:500;padding:8px 14px;cursor:pointer}.welcome-btn-secondary:hover:not(:disabled){background:var(--pill-hover-bg)}.welcome-btn-secondary:disabled{opacity:.6;cursor:default}.welcome-link{background:none;border:none;color:var(--link);font-size:12px;cursor:pointer;padding:0;text-decoration:none}.welcome-link:hover{text-decoration:underline}.welcome-forgot{display:block;text-align:right;margin:-6px 0 14px}.welcome-login-footer{display:flex;align-items:center;justify-content:space-between;margin-top:16px}.welcome-skip{background:none;border:none;color:var(--panel-text-secondary);font-size:12px;font-weight:500;cursor:pointer;padding:0}.welcome-skip:hover{color:var(--panel-text)}.setup-split,.setup-pane{display:flex;flex-direction:column}.setup-pane h3+.welcome-field{margin-top:4px}.setup-divider{display:flex;align-items:center;text-align:center;margin:22px 0;color:var(--panel-text-secondary);font-size:11px;text-transform:uppercase;letter-spacing:.05em}.setup-divider:before,.setup-divider:after{content:"";flex:1;height:1px;background:var(--panel-border)}.setup-divider span{padding:0 12px}.setup-actions{display:flex;align-items:center;gap:14px;margin-top:12px}.setup-file-status{margin-top:10px;font-size:12px}.setup-file-created{color:#1a7f37}.setup-file-error{color:#cf222e}.setup-allset{display:flex;flex-direction:column}.setup-allset .setup-actions{margin-top:20px}.setup-steps{list-style:none;margin:4px 0 0;padding:0}.setup-step{padding:10px 0;border-bottom:1px solid var(--panel-border)}.setup-step:last-child{border-bottom:none}.setup-step-row{display:flex;align-items:center;gap:12px}.setup-step-label{flex:1;display:flex;align-items:center;gap:8px;font-size:13px;color:var(--panel-text)}.setup-step-label:before{content:"";flex-shrink:0;width:14px;height:14px;border:1px solid var(--panel-border);border-radius:3px;background:var(--input-bg)}.setup-step-done .setup-step-label:before{content:"✓";display:flex;align-items:center;justify-content:center;font-size:10px;line-height:1;color:var(--panel-bg);border-color:var(--accent);background:var(--accent)}.setup-step-running .setup-step-label:before{content:"";background:transparent;border-color:var(--panel-border);border-top-color:var(--accent);border-radius:50%;animation:setup-step-spin .6s linear infinite}@keyframes setup-step-spin{to{transform:rotate(360deg)}}.setup-step-label code{font-size:12px;background:var(--input-bg);padding:1px 5px;border-radius:4px}.setup-step-action{display:flex;align-items:center;gap:12px;flex-shrink:0}.setup-step-action>*+*{border-left:1px solid var(--panel-border);padding-left:12px}.setup-step-status{font-size:12px;display:inline-flex;align-items:center;gap:4px}.setup-step-status:before{content:"✓"}.setup-step-done .setup-step-label{color:var(--panel-text-secondary)}.setup-step .copy-box{margin-top:8px}.setup-config-snippet{position:relative}.setup-config-snippet .copy-box{padding-bottom:26px}.setup-config-docs{position:absolute;right:12px;bottom:8px;font-size:12px}.terminal-view{flex:1;min-height:0;padding:8px 10px;background:var(--panel-bg);overflow:hidden}.terminal-view .xterm,.terminal-view .xterm-viewport,.terminal-view .xterm-screen{height:100%!important}.copy-box{display:flex;align-items:center;gap:8px;background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:6px;padding:8px 8px 8px 12px}.copy-box-multiline{align-items:flex-start}.copy-box-text{flex:1;font-size:12.5px;color:var(--panel-text);word-break:break-word}.copy-box pre{flex:1;margin:0;font-family:Geist Mono,ui-monospace,monospace;font-size:11.5px;line-height:1.5;color:var(--panel-text);white-space:pre;overflow-x:auto}.copy-box-btn{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;background:none;border:none;border-radius:5px;color:var(--link);padding:5px;cursor:pointer}.copy-box-btn:hover{background:#3478f61f}
|
|
32
|
+
*/.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;-webkit-user-select:text;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}:root{--accent: #000;--accent-hover: #1a1a1a;--accent-faint: rgba(0, 0, 0, .1);--on-accent: #fff;--link: #3478f6;--chrome-bg: #fff;--chrome-text: rgba(0, 0, 0, .45);--sidebar-bg: #f5f5f7;--sidebar-border: #e0e0e0;--sidebar-heading: #888;--tree-text: #1d1d1f;--tree-text-secondary: #86868b;--tree-hover: rgba(0, 0, 0, .04);--tree-selected-bg: rgba(0, 0, 0, .06);--tree-selected-text: #1d1d1f;--tree-folder-icon: #4a9eff;--tree-file-icon: #86868b;--tree-prompt-icon: var(--accent);--tree-disclosure: #86868b;--tree-toolbar-bg: #f5f5f7;--tree-toolbar-border: #e0e0e2;--input-bg: rgba(0, 0, 0, .04);--input-border: #ddd;--input-text: #333;--input-focus-bg: #fff;--content-bg: #fff;--content-card-bg: #fff;--content-card-shadow: 0 -2px 0 rgba(255, 255, 255, .07), 0 -1px 5px rgba(0, 0, 0, .2);--panel-bg: #f9fafb;--panel-border: #e5e7eb;--panel-card-bg: #fff;--panel-card-border: #e5e7eb;--panel-title: #9ca3af;--panel-text: #111827;--panel-text-secondary: #9ca3af;--panel-text-muted: #d1d5db;--prompt-header-bg: #f0f0f5;--prompt-header-border: #e0e0e8;--prompt-header-text: #1d1d1f;--exec-bg: #f0f0f5;--exec-border: #e0e0e8;--pill-bg: #fff;--pill-border: #e5e7eb;--pill-text: #374151;--pill-hover-bg: #f0f0f2;--dropdown-bg: white;--dropdown-border: #e5e7eb;--dropdown-shadow: 0 4px 16px rgba(0, 0, 0, .1);--dropdown-mode-bg: #fafafa;--dropdown-mode-border: #f3f4f6;--dropdown-mode-active-bg: #111827;--dropdown-option-hover: #f9fafb;--dropdown-option-selected: #f0f7ff;--dropdown-text: #374151;--dropdown-text-muted: #6b7280;--dropdown-text-faint: #b0b7c3;--tool-call-bg: #fafafa;--tool-call-border: #e8e8e8;--token-text: #2563eb;--error-bg: #fff0f0;--error-border: #f5c6c6;--error-text: #c62828;--delete-hover-bg: #fef2f2;--delete-hover-text: #ef4444}@media (prefers-color-scheme: dark){:root{--accent: #fff;--accent-hover: rgba(255, 255, 255, .85);--accent-faint: rgba(255, 255, 255, .15);--on-accent: #000;--link: #4c9ef5;--chrome-bg: #000;--chrome-text: rgba(255, 255, 255, .5);--sidebar-bg: #1c1c1e;--sidebar-border: rgba(255, 255, 255, .08);--sidebar-heading: #9aa3b8;--tree-text: #e5e5e7;--tree-text-secondary: #9aa3b8;--tree-hover: rgba(255, 255, 255, .06);--tree-selected-bg: rgba(255, 255, 255, .1);--tree-selected-text: #fff;--tree-folder-icon: #5a9ef5;--tree-file-icon: #9aa3b8;--tree-prompt-icon: #7b8ef5;--tree-disclosure: #9aa3b8;--tree-toolbar-bg: #1c1c1e;--tree-toolbar-border: rgba(255, 255, 255, .08);--input-bg: rgba(255, 255, 255, .06);--input-border: rgba(255, 255, 255, .1);--input-text: #e5e5e7;--input-focus-bg: #2c2c2e;--content-bg: #292d3e;--content-card-bg: #181b2c;--content-card-shadow: none;--panel-bg: #252838;--panel-border: rgba(255, 255, 255, .08);--panel-card-bg: #202433;--panel-card-border: rgba(255, 255, 255, .08);--panel-title: #9aa3b8;--panel-text: #e5e5e7;--panel-text-secondary: #9aa3b8;--panel-text-muted: #6e7280;--prompt-header-bg: #1f2133;--prompt-header-border: rgba(255, 255, 255, .08);--prompt-header-text: #e5e5e7;--exec-bg: #1f2133;--exec-border: rgba(255, 255, 255, .08);--pill-bg: #2c2c2e;--pill-border: rgba(255, 255, 255, .1);--pill-text: #e5e5e7;--pill-hover-bg: #3a3a3c;--dropdown-bg: #20222c;--dropdown-border: rgba(255, 255, 255, .1);--dropdown-shadow: 0 4px 24px rgba(0, 0, 0, .5);--dropdown-mode-bg: #181b2c;--dropdown-mode-active-bg: #3a3d52;--dropdown-mode-border: rgba(255, 255, 255, .06);--dropdown-option-hover: rgba(255, 255, 255, .06);--dropdown-option-selected: rgba(52, 120, 246, .18);--dropdown-text: #e5e5e7;--dropdown-text-muted: #9aa3b8;--dropdown-text-faint: #636366;--tool-call-bg: #1f2238;--tool-call-border: rgba(255, 255, 255, .08);--token-text: #58a6ff;--error-bg: rgba(220, 38, 38, .1);--error-border: rgba(220, 38, 38, .3);--error-text: #f87171;--delete-hover-bg: rgba(239, 68, 68, .1);--delete-hover-text: #f87171;--proppy-border: rgba(255, 255, 255, .1);--proppy-container-bg: #1f2238;--proppy-button-bg: #2c2c2e;--proppy-button-color: #e5e5e7;--proppy-input-bg: #1c1c1e;--proppy-input-color: #e5e5e7;--proppy-text-primary: #e5e5e7;--proppy-text-muted: #6e7280;--proppy-text-secondary: #9aa3b8;--proppy-danger-bg: rgba(220, 38, 38, .12);--proppy-danger-border: rgba(220, 38, 38, .3);--proppy-danger-color: #f87171}}.pg-openai-icon{color:#000}@media (prefers-color-scheme: dark){.pg-openai-icon{color:#fff}}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--chrome-bg)}code,pre{font-family:Menlo,Monaco,Courier New,monospace}.app{display:flex;flex-direction:column;height:100vh}.app-titlebar{height:36px;flex-shrink:0;display:flex;flex-direction:row;align-items:center;background:var(--chrome-bg)}.app-titlebar-icon{width:46px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--chrome-text);z-index:10}@media (prefers-color-scheme: dark){.app-titlebar-icon img{filter:invert(1)}}.app-main{flex:1;min-height:0;display:flex;flex-direction:row;margin-top:-36px}.icon-strip{width:46px;flex-shrink:0;display:flex;flex-direction:column;background:var(--chrome-bg)}.icon-nav{flex:1;background:transparent;width:auto;display:flex;flex-direction:column;align-items:center;padding-top:64px;flex-shrink:0}.content-area{flex:1;min-width:0;display:flex;flex-direction:column}.content-header{height:36px;flex-shrink:0;display:flex;align-items:flex-end;gap:0;position:relative;z-index:10}.content-header-spacer{flex-shrink:0;height:100%}.content-card{flex:1;min-height:0;display:flex;flex-direction:row;border-radius:12px 0 0;box-shadow:var(--content-card-shadow);overflow:hidden;background:var(--prompt-header-bg)}.icon-nav-btn{width:40px;height:34px;border:none;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:6px;color:#00000059;margin-bottom:2px;align-self:flex-end;transition:color .15s,background .15s;padding-right:11px}.icon-nav-btn:hover{color:#000000b3;background:#0000000f}.icon-nav-btn.active{color:var(--accent);background:var(--sidebar-bg);border-radius:4px 0 0 4px;box-shadow:inset 0 1px #0000000f,inset 0 -1px #0000000a,inset 1px 0 0 var(--accent);position:relative;z-index:5}.icon-nav-btn.active:hover{background:var(--sidebar-bg)}@media (prefers-color-scheme: dark){.icon-nav-btn{color:#7a7a9a}.icon-nav-btn:hover{color:#e0e0f0;background:#ffffff14}.icon-nav-btn.active{box-shadow:inset 0 1px #ffffff24,inset 1px 0 #ffffff12,inset 0 -1px #ffffff12,inset 1px 0 0 var(--accent)}}.resize-handle{width:4px;cursor:col-resize;background:transparent;flex-shrink:0;transition:background .15s}.resize-handle:hover,.resize-handle:active{background:var(--accent-faint)}.section-panel{border-right:1px solid var(--sidebar-border);overflow:hidden;background:var(--sidebar-bg);flex-shrink:0;display:flex;flex-direction:column}.section-panel-header{height:32px;box-sizing:border-box;padding:0 10px;font-family:Geist Mono,ui-monospace,monospace;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--sidebar-heading);flex-shrink:0;display:flex;align-items:center;justify-content:space-between}.section-panel-header-actions{display:flex;align-items:center;gap:2px;margin-right:-4px}.tree-header-search{flex-shrink:0;padding:0 6px 5px;border-bottom:1px solid var(--tree-toolbar-border)}.tree-header-search input{width:100%;box-sizing:border-box;border:1px solid var(--input-border);background:var(--input-bg);color:var(--input-text);border-radius:5px;font-size:11.5px;font-family:inherit;padding:3px 7px;outline:none}.tree-header-search input::placeholder{color:var(--tree-text-secondary)}.tree-header-search input:focus{border-color:var(--accent);background:var(--input-focus-bg)}.section-panel-body{flex:1;overflow:auto;padding:4px 0}.file-tree{padding:2px 0}.tree-row{display:flex;align-items:center;gap:6px;height:28px;padding-right:8px;cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;margin:1px 6px}.tree-row:hover{background:var(--tree-hover)}.tree-row-selected{background:var(--tree-selected-bg);color:var(--tree-selected-text)}.tree-row-selected:hover{background:var(--tree-selected-bg)}.tree-row-selected .tree-row-params{color:var(--tree-text-secondary)}.tree-disclosure{flex-shrink:0;color:var(--tree-disclosure);width:8px;height:8px}.tree-icon{flex-shrink:0}.tree-icon-folder{color:var(--tree-folder-icon);display:flex;align-items:center;flex-shrink:0}.tree-icon-file{color:var(--tree-file-icon);display:flex;align-items:center;flex-shrink:0}.tree-icon-prompt{color:var(--tree-prompt-icon);display:flex;align-items:center;flex-shrink:0}.tree-row-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px;line-height:26px;color:var(--tree-text)}.tree-row-params{font-size:10px;color:var(--tree-text-secondary);white-space:nowrap;flex-shrink:0}.tree-status{padding:12px 10px;font-size:12px;color:var(--tree-text-secondary)}.tree-error{color:var(--error-text)}.tree-empty-state{padding:24px 12px;font-size:12px;color:var(--tree-text-secondary);text-align:center}.tree-empty-state p{margin:0 0 12px}.tree-add-prompt-btn{background:var(--accent);color:var(--on-accent);border:none;border-radius:5px;padding:5px 14px;font-size:12px;cursor:pointer}.tree-add-prompt-btn:hover{background:var(--accent-hover)}.tree-toolbar{flex-shrink:0;display:flex;align-items:center;gap:6px;border-top:1px solid var(--tree-toolbar-border);padding:5px 6px;background:var(--tree-toolbar-bg)}.tree-toolbar-btn{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:none;color:var(--tree-text-secondary);border-radius:4px;cursor:pointer;flex-shrink:0}.tree-toolbar-btn:hover{background:var(--tree-hover);color:var(--tree-text)}.tree-filter{flex:1;display:flex;align-items:center;gap:4px;background:var(--input-bg);border:1px solid var(--input-border);border-radius:5px;padding:2px 6px;color:var(--tree-text-secondary);min-width:0}.tree-filter input{flex:1;border:none;background:none;font-size:11.5px;color:var(--input-text);outline:none;min-width:0;padding:1px 0}.tree-filter input::placeholder{color:var(--tree-text-secondary)}.tree-filter:focus-within{border-color:var(--accent);background:var(--input-focus-bg)}.tree-rename-input{flex:1;min-width:0;border:1px solid var(--accent);border-radius:3px;background:var(--panel-card-bg);color:var(--tree-text);font-size:13px;font-family:inherit;padding:0 4px;height:20px;outline:none;box-shadow:0 0 0 2px var(--accent-faint)}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.dialog{background:var(--chrome-bg);border:1px solid var(--sidebar-border);border-radius:8px;width:380px;max-width:90vw;box-shadow:0 8px 32px #0003}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 10px;border-bottom:1px solid var(--panel-border)}.dialog-header h3{margin:0;font-size:14px;font-weight:600;color:var(--panel-text)}.dialog-close{background:none;border:none;color:var(--panel-text-secondary);font-size:18px;cursor:pointer;padding:0 2px;line-height:1}.dialog-close:hover{color:var(--panel-text)}.dialog-body{padding:14px 16px 16px}.dialog-status{font-size:12px;color:var(--panel-text-secondary);padding:8px 0}.dialog-error{font-size:12px;color:var(--error-text);margin-bottom:10px}.dialog-field{margin-bottom:12px}.dialog-field label{display:block;font-size:11px;color:var(--panel-text-secondary);margin-bottom:4px}.dialog-field input,.dialog-field select{width:100%;background:var(--input-bg);border:1px solid var(--input-border);border-radius:4px;color:var(--panel-text);font-size:13px;padding:6px 8px;outline:none;font-family:inherit}.dialog-field input:focus,.dialog-field select:focus{border-color:var(--accent)}.dialog-field input::placeholder{color:var(--panel-text-muted)}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.dialog-btn-cancel{background:none;border:1px solid var(--panel-border);border-radius:4px;color:var(--panel-text-secondary);font-size:12px;padding:6px 14px;cursor:pointer;font-family:inherit}.dialog-btn-cancel:hover{background:var(--pill-hover-bg)}.dialog-btn-create{background:var(--accent);border:none;border-radius:4px;color:var(--on-accent);font-size:12px;padding:6px 14px;cursor:pointer;font-family:inherit}.dialog-btn-create:hover{background:var(--accent-hover)}.dialog-providers{display:flex;flex-direction:column;gap:6px}.dialog-provider-btn{display:flex;align-items:center;gap:10px;width:100%;background:var(--input-bg);border:1px solid var(--panel-border);border-radius:6px;padding:10px 12px;color:var(--panel-text);cursor:pointer;text-align:left;font-family:inherit}.dialog-provider-btn:hover{background:var(--tree-hover)}.dialog-provider-icon{flex-shrink:0;color:var(--panel-text-secondary)}.dialog-provider-name{font-size:13px;font-weight:500}.dialog-provider-desc{font-size:11px;color:var(--panel-text-secondary);margin-top:2px}.main-content{display:flex;flex-direction:column;overflow:hidden}.pane-tabbar{position:relative;display:flex;align-items:flex-end;min-width:0}.pane-tabs-scroll{display:flex;align-items:flex-end;flex:1;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;padding-right:48px}.pane-tabs-scroll::-webkit-scrollbar{display:none}.pane-drop-target{background:#667eea26;border-radius:4px 4px 0 0}.pane-resize-divider{width:4px;flex-shrink:0;cursor:col-resize;align-self:stretch;transition:background .15s}.pane-resize-divider:hover{background:var(--accent-faint)}.tab-split-btn{position:absolute;right:10px;bottom:2px;width:26px;height:26px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--chrome-text);cursor:pointer;border-radius:4px;transition:color .15s,background .15s}.tab-split-btn:hover{color:#0009;background:#00000014}@media (prefers-color-scheme: dark){.tab-split-btn:hover{color:#ffffffb3;background:#ffffff14}}.tab{position:relative;flex-shrink:0;height:30px;margin-top:6px;padding:0 18px;display:flex;align-items:center;gap:6px;background:#00000012;color:#0006;border:none;box-shadow:inset 0 1px #0000000d,inset 1px 0 #0000000a,inset -1px 0 #0000000a;cursor:pointer;font-size:12px;font-family:inherit;white-space:nowrap;clip-path:polygon(8px 0%,calc(100% - 8px) 0%,100% 100%,0% 100%);z-index:1;margin-left:-5px;transition:background .15s,color .15s}.tab:first-child{margin-left:0}.tab:hover:not(.tab-active){background:#0000001c;color:#0009}@media (prefers-color-scheme: dark){.tab{background:#4a4a68;color:#b8b8d0;box-shadow:inset 0 1px #ffffff24,inset 1px 0 #ffffff12,inset -1px 0 #ffffff12}.tab:hover:not(.tab-active){background:#565678;color:#d8d8ec}}.tab.tab-active{background:var(--prompt-header-bg);color:var(--prompt-header-text);border-top:1px solid var(--accent);z-index:2}.tab-icon{display:flex;align-items:center;opacity:.7}.tab.tab-active .tab-icon{opacity:1;color:var(--accent)}.welcome-tab-emoji{font-size:13px;line-height:1}.tab-label{max-width:120px;overflow:hidden;text-overflow:ellipsis}.tab-close,.tab-dirty{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;margin-left:2px;margin-right:-9px;border-radius:3px;line-height:1;flex-shrink:0}.tab-close{font-size:14px;opacity:.45}.tab-close:hover{opacity:1;background:#0000001a}.tab-dirty{font-size:7px;opacity:.7}.header-path{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--chrome-text);font-family:Menlo,Monaco,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-path .icloud-icon{color:var(--chrome-text);flex-shrink:0}.pg-prompt-header{flex-shrink:0;display:flex;align-items:center;gap:12px;padding:0 20px;height:52px;background:var(--prompt-header-bg);border-bottom:1px solid var(--prompt-header-border)}.pg-prompt-header-identity{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.pg-prompt-header-right{flex-shrink:0;display:flex;align-items:center;gap:8px}.pg-prompt-name{font-size:15px;font-weight:600;color:var(--prompt-header-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pg-prompt-path{font-size:11px;color:var(--panel-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.pg-header-btn{display:inline-flex;align-items:center;justify-content:center;border-radius:7px;border:1px solid var(--prompt-header-border);background:#0000000d;color:var(--prompt-header-text);cursor:pointer;transition:background .1s}.pg-header-btn--icon{width:30px;height:30px;padding:0}.pg-header-btn:hover{background:#0000001a}@media (prefers-color-scheme: dark){.pg-header-btn{background:#ffffff0f}.pg-header-btn:hover{background:#ffffff1c}}.pg-header-error{margin-left:auto;display:flex;align-items:center;gap:6px;font-size:12px;color:var(--error-text);white-space:nowrap}.pg-playground-wrapper{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden;container-type:inline-size;container-name:playground}.pg-content{flex:1;min-height:0;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;background:var(--content-bg)}.pg-editor-col{flex:1;min-width:0;padding:14px 16px}.pg-exec-col{background:var(--exec-bg);border-top:1px solid var(--exec-border)}.pg-exec-inner{display:flex;flex-direction:row;align-items:center;padding:10px 0;min-height:66px;box-sizing:border-box}.pg-exec-header{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:3px;padding:0 16px;flex-shrink:0;border-bottom:none}.pg-exec-title{font-family:Geist Mono,ui-monospace,monospace;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--panel-text-secondary)}.pg-exec-param-count{font-family:Geist Mono,ui-monospace,monospace;font-size:10.5px;font-weight:500;color:var(--panel-text-secondary)}.pg-exec-body{flex:1;min-width:0;padding:0 12px}.pg-exec-body>div{display:flex!important;flex-direction:row!important;flex-wrap:wrap;gap:8px 16px!important;align-items:flex-end}.pg-exec-footer{flex-shrink:0;padding:0 16px;border-top:none}.pg-run-btn{width:auto;height:38px;background:#111827;color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;padding:0 18px;font-family:inherit;white-space:nowrap;transition:background .1s}.pg-run-btn:hover:not(:disabled){background:#1f2937}.pg-run-btn:disabled{opacity:.5;cursor:not-allowed}@media (prefers-color-scheme: dark){.pg-run-btn{background:#e5e7eb;color:#111827}.pg-run-btn:hover:not(:disabled){background:#d1d5db}}.pg-exec-error{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;color:var(--error-text);margin-top:8px}@container playground (min-width: 620px){.pg-content{flex-direction:row;overflow:hidden}.pg-editor-col{overflow-y:auto;height:100%;box-sizing:border-box}.pg-exec-col{width:280px;flex-shrink:0;border-top:none;border-left:1px solid var(--exec-border);overflow:hidden;display:flex;flex-direction:column}.pg-exec-inner{flex-direction:column!important;align-items:stretch!important;padding:0!important;height:auto!important}.pg-exec-header{flex-direction:row!important;align-items:center!important;justify-content:space-between!important;border-bottom:none!important;padding:12px 16px 10px!important;gap:0!important}.pg-exec-body{padding:14px 16px!important;overflow-y:auto;flex:none!important}.pg-exec-body>div{display:flex!important;flex-direction:column!important;align-items:stretch!important;flex-wrap:nowrap!important;gap:12px!important}.pg-exec-footer{padding:0 16px 14px!important;border-top:none!important}.pg-run-btn{width:100%!important;height:42px}}.pg-editor{padding:0;display:flex;flex-direction:column;gap:0}.pg-card{background:var(--panel-card-bg);border:1px solid var(--panel-card-border);border-radius:10px;margin-bottom:8px;overflow:hidden}.pg-model-picker{position:relative;padding:0;flex:1;min-width:200px}.pg-model-picker-trigger{display:flex;align-items:center;gap:8px;width:100%;height:30px;box-sizing:border-box;padding:0 9px;border:1px solid var(--prompt-header-border);border-radius:7px;background:#0000000a;cursor:pointer;font-family:inherit;text-align:left;transition:background .1s}.pg-model-picker-trigger:hover{background:#00000014}@media (prefers-color-scheme: dark){.pg-model-picker-trigger{background:#ffffff0d}.pg-model-picker-trigger:hover{background:#ffffff17}}.pg-model-picker-label{font-size:13px;font-weight:500;color:var(--prompt-header-text);white-space:nowrap}.pg-model-picker-source{font-size:11px;color:var(--panel-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;flex:1}.pg-model-picker-trigger svg:last-child{margin-left:auto;flex-shrink:0}.pg-model-picker-dropdown{background:var(--dropdown-bg);border:1px solid var(--dropdown-border);border-radius:10px;box-shadow:var(--dropdown-shadow);max-height:380px;overflow-y:auto;padding:4px 0}.pg-mode-toggle{display:flex;gap:2px;padding:8px 10px;border-bottom:1px solid var(--dropdown-mode-border);background:var(--dropdown-mode-bg);border-radius:10px 10px 0 0}.pg-mode-btn{flex:1;padding:5px 12px;border:none;background:transparent;color:var(--dropdown-text-muted);font-size:13px;font-weight:500;font-family:inherit;border-radius:6px;cursor:pointer;transition:background .1s,color .1s}.pg-mode-btn:hover{background:var(--dropdown-option-hover)}.pg-mode-btn.active{background:var(--dropdown-mode-active-bg);color:#fff}.pg-provider-group{padding:4px 0}.pg-provider-group+.pg-provider-group{border-top:1px solid var(--dropdown-mode-border)}.pg-provider-group-header{display:flex;align-items:center;gap:6px;padding:8px 12px 4px;font-size:11px;font-weight:600;color:var(--dropdown-text-muted);text-transform:uppercase;letter-spacing:.04em}.pg-model-option{display:flex;align-items:center;gap:4px;width:100%;padding:7px 12px;border:none;background:none;cursor:pointer;font-family:inherit;font-size:14px;color:var(--dropdown-text);text-align:left;transition:background .08s}.pg-model-option:hover{background:var(--dropdown-option-hover)}.pg-model-option.selected{background:var(--dropdown-option-selected)}.pg-model-option-check{width:18px;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--dropdown-text)}.pg-model-option-label{font-weight:450}.pg-model-option-source{flex:1;text-align:right;font-size:11px;color:var(--dropdown-text-faint);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pg-custom-model-row,.pg-custom-gateway-row{display:flex;align-items:center;gap:6px;padding:5px 12px}.pg-custom-gateway-row{border-top:1px solid var(--dropdown-mode-border);padding-top:8px;padding-bottom:8px}.pg-custom-model-row input,.pg-custom-gateway-row input{flex:1;min-width:0;padding:4px 8px;border:1px solid var(--dropdown-border);border-radius:5px;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--dropdown-text);background:var(--dropdown-bg);outline:none}.pg-custom-model-row input:focus,.pg-custom-gateway-row input:focus{border-color:var(--accent);box-shadow:0 0 0 2px #a5b4fc40}.pg-custom-model-use{padding:4px 10px;border:1px solid var(--dropdown-border);border-radius:5px;background:var(--dropdown-bg);font-size:12px;font-weight:500;color:var(--dropdown-text-muted);cursor:pointer;font-family:inherit;white-space:nowrap}.pg-custom-model-use:hover{background:var(--dropdown-option-hover);border-color:var(--dropdown-border)}.pg-model-overlay-select{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none}.pg-msg-header{display:flex;align-items:center;padding:10px 0 5px}.pg-role-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--panel-text-secondary);font-family:Geist Mono,ui-monospace,monospace}.pg-role-wrapper{display:flex;align-items:center;gap:3px;position:relative}.pg-role-select{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer;width:100%}.pg-role-select:focus{outline:none}.pg-delete-msg{margin-left:auto;background:none;border:none;cursor:pointer;color:var(--panel-text-muted);font-size:17px;line-height:1;padding:2px 4px;border-radius:4px;font-family:inherit}.pg-delete-msg:hover{color:var(--delete-hover-text);background:var(--delete-hover-bg)}.pg-property-card{padding:10px 12px}.pg-param-description{font-size:11.5px;color:var(--panel-text-secondary);line-height:1.45;margin-top:2px;white-space:pre-line}.pg-desc-toggle{display:inline;background:none;border:none;padding:0;margin-left:4px;font-size:11.5px;color:var(--panel-text-secondary);cursor:pointer;text-decoration:underline;text-underline-offset:2px}.pg-desc-toggle:hover{color:var(--panel-text)}.pg-param-input-inline{padding:0 0 10px;display:block}.pg-add-param-btn{position:relative}.pg-param-card{padding:11px 14px}.pg-param-label{font-size:12px;font-weight:600;color:#9ca3af;margin-bottom:5px}.pg-param-type{font-weight:400;color:#d1d5db}.pg-param-input{width:100%;border:none;outline:none;font-size:14px;color:var(--panel-text);font-family:inherit;background:transparent}.pg-param-input::placeholder{color:var(--panel-text-muted)}.pg-output-error{border-color:#f5c6c6}.pg-output-header{padding:8px 12px 7px;font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--panel-text-secondary);border-bottom:1px solid var(--panel-card-border)}.pg-output-error .pg-output-header{color:#e53935}.pg-output-body{padding:10px 12px;font-size:13.5px;line-height:1.6;color:var(--panel-text)}.pg-output-body pre{margin:0;font-family:Menlo,Monaco,monospace;font-size:12.5px;white-space:pre-wrap;word-wrap:break-word}.pg-toolbar{display:flex;align-items:center;justify-content:space-between;padding:6px 0 2px;gap:6px}.pg-toolbar-left,.pg-toolbar-right{display:flex;gap:6px}.pg-pill-btn{display:inline-flex;align-items:center;gap:5px;height:30px;box-sizing:border-box;padding:0 12px;border-radius:8px;border:1px solid var(--pill-border);background:var(--pill-bg);font-size:12px;color:var(--pill-text);cursor:pointer;font-family:inherit;font-weight:500;transition:background .12s,border-color .12s;white-space:nowrap}.pg-pill-btn:hover:not(:disabled){background:var(--pill-hover-bg);border-color:var(--pill-border)}.pg-pill-btn:disabled{opacity:.4;cursor:not-allowed}.pg-pill-primary{background:#1a1a2e;border-color:#1a1a2e;color:#fff;font-weight:600}.pg-pill-primary:hover:not(:disabled){background:#2d2d4e;border-color:#2d2d4e}.pg-status-bar{font-size:11.5px;color:#aaa;padding:0 0 6px;min-height:20px;opacity:0;transition:opacity .12s ease}.pg-status-bar.visible{opacity:1}.pg-error-bar{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;background:var(--error-bg);border:1px solid var(--error-border);border-radius:8px;font-size:12.5px;color:var(--error-text);margin-bottom:8px}.pg-dismiss{background:none;border:none;cursor:pointer;color:#e53935;font-size:16px;line-height:1;padding:0 2px}.pg-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:500}.pg-modal{background:var(--content-bg);border:1px solid var(--panel-border);border-radius:12px;box-shadow:0 8px 32px #0000002e;width:420px;max-width:calc(100vw - 48px);display:flex;flex-direction:column;overflow:hidden}.pg-modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 12px;border-bottom:1px solid var(--panel-border);flex-shrink:0}.pg-modal-title{font-size:13px;font-weight:600;color:var(--panel-text)}.pg-modal-body{overflow-y:auto;max-height:60vh;padding:4px 16px}.pg-modal-empty{padding:20px 0;font-size:13px;color:var(--panel-text-secondary);text-align:center}.pg-modal-body .pg-msg-header{padding:10px 0 5px}.pg-modal-body .token-editor,.pg-modal-body .pg-msg-content,.pg-modal-body .pg-param-input-inline{padding-left:0;padding-right:0}.pg-modal-footer{padding:10px 16px 12px;border-top:1px solid var(--panel-border);flex-shrink:0}.pg-spinner{color:#aaa;font-size:13px}.empty-state{display:flex;align-items:center;justify-content:center;height:100%;color:#666}.empty-state h2{color:#333;margin-bottom:1rem}.prompt-editor{background:#fff;border-radius:8px;padding:2rem;margin-bottom:2rem;box-shadow:0 2px 4px #0000001a;position:relative}.editor-header h2{margin:0 0 .5rem;color:#333}.file-info{font-size:.85rem;color:#666;font-family:monospace}.update-status{padding:.75rem;margin:1rem 0;border-radius:4px;font-size:.9rem}.update-status.success{background:#e8f5e9;color:#2e7d32;border:1px solid #a5d6a7}.update-status.error{background:#ffebee;color:#c62828;border:1px solid #ef9a9a}.function-params-section{margin:1.5rem 0;padding:1rem;background:#f9f9f9;border-radius:4px}.function-params-section h3{margin:0 0 .5rem;font-size:1.1rem}.params-info{font-size:.85rem;color:#666;margin-bottom:1rem}.params-table{width:100%;border-collapse:collapse;font-size:.9rem}.params-table th{text-align:left;padding:.5rem;background:#e0e0e0;font-weight:600}.params-table td{padding:.5rem;border-bottom:1px solid #e0e0e0}.properties-section h3{margin:1.5rem 0 1rem;font-size:1.1rem;color:#333}.property-item{margin-bottom:1.5rem}.property-item h4{margin:0 0 .5rem;font-size:1rem;color:#555}.parameter-editor label{display:block;font-weight:600;margin-bottom:.5rem;color:#333}.parameter-editor input,.parameter-editor textarea,.parameter-editor select{width:100%;padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem;font-family:inherit}.parameter-editor textarea{font-family:Menlo,Monaco,monospace;resize:vertical}.parameter-editor textarea.has-tokens{border-color:var(--accent);background:#f0f4ff}.token-indicator{font-size:.8rem;color:var(--accent);font-weight:400}.read-only-label{display:inline-block;font-size:.8rem;color:#999;font-weight:400;margin-left:.5rem}.value-display{background:#f5f5f5;padding:.75rem;border-radius:4px;font-size:.85rem;overflow-x:auto}.json-editor{font-family:Menlo,Monaco,monospace}.error-message{color:#e53935;font-size:.85rem;margin-top:.5rem}.checkbox{display:flex;align-items:center;gap:.5rem}.checkbox input[type=checkbox]{width:auto}.model-selector{border:1px solid #ddd;border-radius:4px;padding:1rem}.mode-tabs{display:flex;gap:.5rem;margin-bottom:1rem;border-bottom:1px solid #e0e0e0}.mode-tabs button{padding:.5rem 1rem;background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;font-size:.9rem;color:#666}.mode-tabs button.active{border-bottom-color:var(--accent);color:var(--accent);font-weight:600}.current-value{margin-bottom:1rem;font-size:.9rem;color:#666}.current-value code{background:#f0f0f0;padding:.25rem .5rem;border-radius:3px}.selection-content{display:flex;flex-direction:column;gap:1rem}.selection-content label{display:flex;flex-direction:column;gap:.25rem;font-size:.9rem}.selection-content button{padding:.5rem 1rem;background:var(--accent);color:var(--on-accent);border:none;border-radius:4px;cursor:pointer;font-size:.9rem}.selection-content button:hover{background:var(--accent-hover)}.format-toggle{font-size:.85rem}.message-builder{border:1px solid #ddd;border-radius:4px;padding:1rem}.message-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.message-header label{font-weight:600;color:#333}.add-button{padding:.5rem 1rem;background:var(--accent);color:var(--on-accent);border:none;border-radius:4px;cursor:pointer;font-size:.85rem}.message-item{border:1px solid #e0e0e0;border-radius:4px;padding:1rem;margin-bottom:1rem}.message-controls{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.message-controls select{padding:.25rem .5rem;border:1px solid #ddd;border-radius:4px}.delete-button{padding:.25rem .75rem;background:#e53935;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.85rem}.delete-button:hover{background:#c62828}.empty-messages{text-align:center;color:#999;padding:1rem}.updating-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:#ffffffe6;display:flex;align-items:center;justify-content:center;border-radius:8px}.execution-panel{background:#fff;border-radius:8px;padding:2rem;box-shadow:0 2px 4px #0000001a}.execution-panel h3{margin:0 0 1rem;color:#333}.execution-panel h4{margin:0 0 .75rem;font-size:1rem;color:#555}.param-inputs{margin-bottom:1.5rem;padding:1rem;background:#f9f9f9;border-radius:4px}.param-input{margin-bottom:1rem}.param-input label{display:block;font-weight:600;margin-bottom:.5rem;color:#333}.param-type,.param-default{font-weight:400;color:#666;font-size:.85rem}.param-input input{width:100%;padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem}.execution-controls{display:flex;gap:1rem;margin-bottom:1.5rem}.execute-button{padding:.75rem 1.5rem;background:var(--accent);color:var(--on-accent);border:none;border-radius:4px;cursor:pointer;font-size:1rem;font-weight:600}.execute-button:hover:not(:disabled){background:var(--accent-hover)}.execute-button:disabled{opacity:.6;cursor:not-allowed}.execute-button.stream{background:#764ba2}.execute-button.stream:hover:not(:disabled){background:#663a8e}.execution-error{padding:1rem;background:#ffebee;color:#c62828;border:1px solid #ef9a9a;border-radius:4px;margin-bottom:1rem}.execution-result{margin-top:1.5rem}.execution-result pre{background:#f5f5f5;padding:1rem;border-radius:4px;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word}.execution-loading{display:flex;justify-content:center;padding:2rem}.spinner{color:var(--accent);font-weight:600}.pg-panel{break-inside:avoid;padding-bottom:4px}.pg-panel+.pg-panel{border-top:1px solid var(--panel-border);padding-top:12px}.pg-panel-header{padding:0 0 8px}.pg-panel-title{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--panel-title)}.pg-panel-body{padding:0;display:flex;flex-direction:column;gap:0}.pg-panel-footer{padding:8px 0 4px;display:flex;gap:8px;flex-wrap:wrap}.pg-panel-header+.pg-panel-footer{padding-top:4px}.pg-panel-model-row{display:flex;align-items:center;gap:8px;padding-bottom:8px;flex-wrap:wrap}.pg-panel-model-row-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.pg-panel-error{border-color:var(--error-border)}.pg-panel-title-error{color:var(--error-text)}.pg-panel-card{border-top:1px solid var(--panel-border)}.pg-panel-card:first-child{border-top:none}.pg-msg-textarea{display:block;width:100%;border:none;outline:none;resize:none;overflow:hidden;padding:0 0 10px;font-family:inherit;font-size:14px;font-weight:400;color:var(--panel-text);line-height:1.55;background:transparent;min-height:36px}.pg-msg-textarea::placeholder{color:var(--panel-text-muted)}.pg-msg-content{padding:0 0 10px;font-size:14px;font-weight:400;color:var(--panel-text);line-height:1.55}.pg-placeholder{color:var(--panel-text-secondary);font-style:italic}.token-editor{display:block;width:100%;padding:0 0 10px;font-family:inherit;font-size:14px;font-weight:400;color:var(--panel-text);line-height:1.55;background:transparent;min-height:36px;outline:none;border:none;white-space:pre-wrap;word-break:break-word;box-sizing:border-box}.token-editor[data-placeholder]:empty:before{content:attr(data-placeholder);color:var(--panel-text-muted);font-weight:400;pointer-events:none;display:block}.te-token{color:var(--token-text);font-weight:600}.te-suggest{--proppy-menu-bg: var(--panel-bg);--proppy-menu-color: var(--panel-text);--proppy-border: var(--panel-border);--proppy-menu-active-bg: color-mix( in srgb, var(--token-text) 16%, transparent );font-family:inherit}.te-suggest-item.active{color:var(--token-text)}.te-suggest-action{color:var(--panel-text-secondary)}.pg-tool-calls{padding:0 0 10px;display:flex;flex-direction:column;gap:6px}.pg-tool-call{border:1px solid var(--tool-call-border);border-radius:7px;overflow:hidden;background:var(--tool-call-bg)}.pg-tool-call-header{display:flex;align-items:center;justify-content:space-between;padding:5px 10px 4px;border-bottom:1px solid var(--tool-call-border)}.pg-tool-call-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--panel-text-secondary)}.pg-tool-call-fields{display:flex;gap:0;padding:6px 10px 7px}.pg-tool-name-input,.pg-tool-args-input{border:none;outline:none;background:transparent;font-family:Menlo,Monaco,monospace;font-size:12px;color:var(--panel-text);padding:0}.pg-tool-name-input{width:30%;min-width:80px;color:var(--accent);font-weight:600;border-right:1px solid var(--tool-call-border);padding-right:10px;margin-right:10px}.pg-tool-name-input::placeholder,.pg-tool-args-input::placeholder{color:var(--panel-text-muted)}.pg-tool-args-input{flex:1;min-width:0}.pg-add-tool-call-btn{align-self:flex-start;background:none;border:1px dashed var(--panel-text-muted);border-radius:6px;padding:4px 10px;font-size:12px;color:var(--panel-text-secondary);cursor:pointer;font-family:inherit;transition:border-color .12s,color .12s}.pg-add-tool-call-btn:hover{border-color:var(--panel-text-secondary);color:var(--panel-text)}.pg-add-message-row{padding:8px 12px}.pg-add-msg-btn{display:flex;align-items:center;gap:7px;background:none;border:none;cursor:pointer;font-size:13px;color:var(--panel-text-secondary);font-family:inherit;padding:6px 0 4px;width:100%}.pg-add-msg-btn:hover{color:var(--panel-text)}.trace-list{padding:2px 0}.trace-list-row{padding:8px 12px;border-bottom:1px solid var(--sidebar-border);cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;flex-direction:column;gap:4px}.trace-list-row:hover{background:var(--tree-hover)}.trace-list-row-selected{background:var(--tree-selected-bg)}.trace-list-row-top{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--tree-text)}.trace-list-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.trace-list-row-meta{display:flex;gap:8px;font-size:11px;color:var(--tree-text-secondary)}.trace-list-hint{color:var(--tree-text-secondary);font-size:11.5px}.trace-status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;background:var(--tree-text-secondary)}.trace-status-running{background:#f5a623;animation:trace-pulse 1.2s ease-in-out infinite}.trace-status-ok{background:#34c759}.trace-status-error{background:#ef4444}@keyframes trace-pulse{0%,to{opacity:1}50%{opacity:.35}}:root{--trace-bg: #fafbfc;--trace-row-bg: #ffffff;--trace-row-alt: #f5f6f8;--trace-row-hover: #eef0f4;--trace-text: #1d1d1f;--trace-text-dim: #6b7280;--trace-border: rgba(0, 0, 0, .07);--trace-bar-track: rgba(0, 0, 0, .05);--trace-code-bg: rgba(0, 0, 0, .05);--trace-message-bg: #f3f4f6;--trace-error-text: #b91c1c}@media (prefers-color-scheme: dark){:root{--trace-bg: #1e1e2a;--trace-row-bg: #262635;--trace-row-alt: #2d2d3e;--trace-row-hover: #30304a;--trace-text: #e4e6f0;--trace-text-dim: #8a92a8;--trace-border: rgba(255, 255, 255, .06);--trace-bar-track: rgba(255, 255, 255, .04);--trace-code-bg: rgba(0, 0, 0, .25);--trace-message-bg: rgba(0, 0, 0, .22);--trace-error-text: #ff8a8a}}.trace-view{display:flex;flex-direction:column;height:100%;background:var(--trace-bg);color:var(--trace-text);overflow:hidden;font-size:12.5px}.trace-view-error,.trace-view-loading{padding:24px;color:var(--trace-text-dim)}.trace-view-error{color:var(--trace-error-text)}.trace-view-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;height:52px;background:var(--prompt-header-bg);border-bottom:1px solid var(--prompt-header-border);flex-shrink:0}.trace-view-title{display:flex;align-items:center;gap:8px;font-weight:600}.trace-view-timestamp{color:var(--trace-text-dim);font-weight:400;font-size:11.5px}.trace-view-meta{display:flex;gap:12px;color:var(--trace-text-dim);font-size:11.5px}.trace-waterfall{flex:1;overflow:auto}.trace-row{border-bottom:1px solid var(--trace-border)}.trace-row-main{display:grid;grid-template-columns:minmax(120px,1fr) 70px minmax(80px,200px);align-items:center;gap:12px;padding:6px 16px 6px 13px;min-height:32px}.trace-row-expanded>.trace-row-main{background:var(--trace-row-hover)}.trace-row-error>.trace-row-main{background:var(--error-bg)}.trace-row-error>.trace-row-main:hover,.trace-row-error.trace-row-expanded>.trace-row-main{background:color-mix(in srgb,var(--error-bg) 85%,var(--trace-row-hover) 15%)}.trace-row-label{display:flex;align-items:center;gap:8px;overflow:hidden;min-width:0}.trace-row-disclosure{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;border:none;background:none;color:var(--trace-text-dim);cursor:pointer;border-radius:3px}.trace-row-disclosure:hover{background:var(--trace-row-hover);color:var(--color-text)}.trace-disclosure-icon{transition:transform .15s ease;transform:rotate(-90deg)}.trace-disclosure-icon-open{transform:rotate(0)}.trace-row-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trace-row-name-linked{cursor:pointer}.trace-row-name-linked:hover{text-decoration:underline;text-underline-offset:2px}.trace-row-prompt-btn{flex-shrink:0;display:flex;align-items:center;justify-content:center;padding:2px;border:none;background:none;color:var(--trace-text-dim);cursor:pointer;border-radius:3px;opacity:0;transition:opacity .1s}.trace-row-label:hover .trace-row-prompt-btn{opacity:1}.trace-row-prompt-btn:hover{color:var(--color-text);background:var(--trace-row-hover)}.trace-row-duration{color:var(--trace-text-dim);font-variant-numeric:tabular-nums;text-align:right;font-size:11.5px}.trace-row-bar-track{position:relative;height:16px;background:var(--trace-bar-track);border-radius:3px}.trace-row-bar{position:absolute;top:2px;bottom:2px;border-radius:2px;background:#7b8ef5;min-width:2px}.trace-row-bar-LLM{background:#7b8ef5}.trace-row-bar-TOOL{background:#f59e0b}.trace-row-bar-AGENT{background:#34d399}.trace-row-bar-EMBEDDING{background:#ec4899}.trace-row-bar-DEFAULT{background:#9aa3b8}.trace-row-bar-running{background-image:linear-gradient(90deg,rgba(255,255,255,.18) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.18) 50%,rgba(255,255,255,.18) 75%,transparent 75%);background-size:12px 12px;animation:trace-bar-stripe .9s linear infinite}@keyframes trace-bar-stripe{0%{background-position:0 0}to{background-position:12px 0}}.span-error-icon{flex-shrink:0;width:14px;height:14px;color:var(--error-text)}.span-kind-pill{display:inline-flex;align-items:center;padding:1px 7px;border-radius:9px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;line-height:1.5;flex-shrink:0;background:var(--trace-bar-track);color:var(--trace-text-dim)}.span-kind-LLM{background:#7b8ef533;color:#4338ca}.span-kind-TOOL{background:#f59e0b33;color:#b45309}.span-kind-AGENT{background:#34d3992e;color:#047857}.span-kind-EMBEDDING{background:#ec48992e;color:#be185d}.span-kind-DEFAULT{background:#9aa3b82e;color:#64748b}@media (prefers-color-scheme: dark){.span-kind-LLM{color:#a5b4fc}.span-kind-TOOL{color:#fcd34d}.span-kind-AGENT{color:#6ee7b7}.span-kind-EMBEDDING{color:#f9a8d4}.span-kind-DEFAULT{color:#94a3b8}}.trace-row-details{background:var(--trace-row-bg);padding:12px 20px 16px;border-top:1px solid var(--trace-border)}.span-details-list{display:grid;grid-template-columns:110px 1fr;gap:4px 16px;margin:0 0 12px}.span-details-row{display:contents}.span-details-row dt{color:var(--trace-text-dim);font-size:11.5px;text-transform:uppercase;letter-spacing:.04em}.span-details-row dd{margin:0;font-size:12.5px;min-width:0;overflow:hidden}.span-details-error{margin:0;padding:8px 10px;background:var(--trace-code-bg);border-radius:4px;font-size:11.5px;white-space:pre-wrap;word-break:break-word;max-height:6em;overflow-y:auto}.span-details-json{margin:0;padding:8px 10px;background:var(--trace-code-bg);border-radius:4px;font-size:11.5px;overflow:auto;max-height:240px}.span-details-section{margin-top:12px}.span-details-section-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--trace-text-dim);margin-bottom:6px}.span-message{background:var(--trace-message-bg);border-radius:4px;padding:8px 10px;margin-bottom:6px}.span-message-role{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--trace-text-dim);margin-bottom:4px}.span-message-content{white-space:pre-wrap;word-break:break-word;font-size:12.5px;line-height:1.5}.welcome{flex:1;overflow-y:auto;display:flex;justify-content:center;align-items:flex-start;padding:48px 24px;background:var(--prompt-header-bg)}.welcome-card{width:100%;max-width:560px;background:var(--panel-card-bg);border:1px solid var(--panel-card-border);border-radius:12px;box-shadow:0 1px 3px #0000000f,0 8px 24px #0000000f;overflow:hidden}.welcome-header{display:flex;flex-direction:column;align-items:center;text-align:center;padding:32px 32px 24px;border-bottom:1px solid var(--panel-border)}.welcome-logo{display:block;margin-bottom:12px}.welcome-header h1{margin:0 0 20px;font-size:22px;font-weight:700;color:var(--panel-text)}.welcome-progress{display:flex;align-items:center;gap:8px;margin:0;padding:0;list-style:none}.welcome-progress li{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--panel-text-secondary)}.welcome-progress li+li:before{content:"";width:24px;height:1px;background:var(--panel-border);margin-right:2px}.welcome-progress-btn{display:inline-flex;align-items:center;gap:6px;background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer}.welcome-progress-btn:hover .welcome-progress-label{color:var(--link);text-decoration:underline}.welcome-progress-dot{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;border:1px solid var(--panel-border);font-size:11px;font-weight:600;background:#fff}.welcome-progress-active .welcome-progress-dot{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.welcome-progress-active .welcome-progress-label{color:var(--panel-text);font-weight:600}.welcome-progress-done .welcome-progress-dot{background:#d6f5e3;border-color:#a3dfc0;color:#1a7f4b}.welcome-step-body{padding:28px 32px 32px;position:relative}.welcome-step-body h2{margin:0 0 6px;font-size:17px;font-weight:700;color:var(--panel-text)}.welcome-step-body h3{margin:0 0 6px;font-size:14px;font-weight:600;color:var(--panel-text)}.welcome-subtitle{margin:0 0 16px;font-size:13px;line-height:1.5;color:var(--panel-text-secondary)}.welcome-subtitle code{background:var(--input-bg);border-radius:3px;padding:1px 5px;font-size:12px}.welcome-field{display:block;margin-bottom:14px}.welcome-field>span{display:block;font-size:12px;font-weight:500;color:var(--panel-text);margin-bottom:5px}.welcome-field input,.welcome-field select{width:100%;box-sizing:border-box;background:#fff;border:1px solid var(--panel-border);border-radius:6px;color:var(--panel-text);font-size:13px;padding:8px 10px;outline:none}.welcome-field input:focus,.welcome-field select:focus{border-color:var(--accent)}.setup-sdk-options{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.setup-agent-option-wrap,.setup-step-action-wrap{display:inline-flex}.setup-step-action-wrap{cursor:not-allowed}.setup-sdk-option:disabled{opacity:.5;cursor:not-allowed}.setup-sdk-option:disabled:hover{background:var(--content-card-bg)}.setup-sdk-option{min-height:40px;display:inline-flex;align-items:center;gap:9px;background:var(--content-card-bg);color:var(--panel-text);border:1px solid var(--panel-border);border-radius:6px;padding:8px 12px;font-size:13px;font-weight:500;text-decoration:none;cursor:pointer}.setup-sdk-option:hover{background:var(--pill-hover-bg)}.setup-sdk-option:focus-visible{outline:2px solid var(--link);outline-offset:2px}.setup-sdk-option-selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.setup-sdk-icon{display:inline-flex;width:20px;height:20px;color:var(--accent)}.setup-sdk-icon svg{display:block;width:100%;height:100%}.setup-sdk-icon .vercel-square{fill:currentColor}.setup-sdk-icon .vercel-triangle{fill:var(--on-accent)}.welcome-btn-primary{width:100%;background:var(--accent);color:var(--on-accent);border:none;border-radius:6px;font-size:13px;font-weight:600;padding:10px 16px;cursor:pointer;margin-top:4px}.welcome-btn-primary:hover{background:var(--accent-hover)}.welcome-btn-secondary{background:#fff;color:var(--panel-text);border:1px solid var(--panel-border);border-radius:6px;font-size:12px;font-weight:500;padding:8px 14px;cursor:pointer}.welcome-btn-secondary:hover:not(:disabled){background:var(--pill-hover-bg)}.welcome-btn-secondary:disabled{opacity:.6;cursor:default}.welcome-link{background:none;border:none;color:var(--link);font-size:12px;cursor:pointer;padding:0;text-decoration:none}.welcome-link:hover{text-decoration:underline}.welcome-forgot{display:block;text-align:right;margin:-6px 0 14px}.welcome-login-footer{display:flex;align-items:center;justify-content:space-between;margin-top:16px}.welcome-skip{background:none;border:none;color:var(--panel-text-secondary);font-size:12px;font-weight:500;cursor:pointer;padding:0}.welcome-skip:hover{color:var(--panel-text)}.setup-split,.setup-pane{display:flex;flex-direction:column}.setup-pane h3+.welcome-field{margin-top:4px}.setup-divider{display:flex;align-items:center;text-align:center;margin:22px 0;color:var(--panel-text-secondary);font-size:11px;text-transform:uppercase;letter-spacing:.05em}.setup-divider:before,.setup-divider:after{content:"";flex:1;height:1px;background:var(--panel-border)}.setup-divider span{padding:0 12px}.setup-actions{display:flex;align-items:center;gap:14px;margin-top:12px}.setup-file-status{margin-top:10px;font-size:12px}.setup-file-created{color:#1a7f37}.setup-file-error{color:#cf222e}.setup-allset{display:flex;flex-direction:column}.setup-allset .setup-actions{margin-top:20px}.setup-steps{list-style:none;margin:4px 0 0;padding:0}.setup-step{padding:6px 0;border-bottom:1px solid var(--panel-border)}.setup-step:last-child{border-bottom:none}.setup-step-row{display:flex;align-items:center;gap:12px}.setup-step-label{flex:1;display:flex;align-items:center;gap:8px;font-size:13px;color:var(--panel-text)}.setup-step-label:before{content:"";flex-shrink:0;width:14px;height:14px;border:1px solid var(--panel-border);border-radius:3px;background:var(--input-bg)}.setup-step-done .setup-step-label:before{content:"✓";display:flex;align-items:center;justify-content:center;font-size:10px;line-height:1;color:var(--panel-bg);border-color:var(--accent);background:var(--accent)}.setup-step-running .setup-step-label:before{content:"";background:transparent;border-color:var(--panel-border);border-top-color:var(--accent);border-radius:50%;animation:setup-step-spin .6s linear infinite}@keyframes setup-step-spin{to{transform:rotate(360deg)}}.setup-step-label code{font-size:12px;background:var(--input-bg);padding:1px 5px;border-radius:4px}.setup-step-action{display:flex;align-items:center;gap:12px;flex-shrink:0}.setup-step-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:85px;background:var(--content-card-bg);color:var(--panel-text);border:1px solid var(--panel-border);border-radius:6px;font-size:12px;font-weight:500;padding:8px 12px;cursor:pointer}.setup-step-btn:hover:not(:disabled){background:var(--pill-hover-bg)}.setup-step-btn:disabled{opacity:.5;cursor:not-allowed}.setup-step-btn-icon{flex-shrink:0;color:var(--link)}.setup-step-status{font-size:12px;display:inline-flex;align-items:center;gap:4px}.setup-step-status:before{content:"✓"}.setup-step-done .setup-step-label{color:var(--panel-text-secondary)}.setup-step .copy-box{margin-top:8px}.setup-config-snippet{position:relative}.setup-config-snippet .copy-box{padding-bottom:26px}.setup-config-docs{position:absolute;right:12px;bottom:8px;font-size:12px}.terminal-view{flex:1;min-height:0;padding:8px 10px;background:var(--panel-bg);overflow:hidden}.terminal-view .xterm,.terminal-view .xterm-viewport,.terminal-view .xterm-screen{height:100%!important}.copy-box{display:flex;align-items:center;gap:8px;background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:6px;padding:8px 8px 8px 12px}.copy-box-multiline{align-items:flex-start}.copy-box-text{flex:1;font-size:12.5px;color:var(--panel-text);word-break:break-word}.copy-box pre{flex:1;margin:0;font-family:Geist Mono,ui-monospace,monospace;font-size:11.5px;line-height:1.5;color:var(--panel-text);white-space:pre;overflow-x:auto}.copy-box-btn{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;background:none;border:none;border-radius:5px;color:var(--link);padding:5px;cursor:pointer}.copy-box-btn:hover{background:#3478f61f}
|
package/dist/client/index.html
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
9
9
|
<title>Evalution</title>
|
|
10
10
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
|
11
|
-
<script type="module" crossorigin src="/assets/index-
|
|
12
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
11
|
+
<script type="module" crossorigin src="/assets/index-C4XXh0na.js"></script>
|
|
12
|
+
<link rel="stylesheet" crossorigin href="/assets/index-CHPZsnKo.css">
|
|
13
13
|
</head>
|
|
14
14
|
<body>
|
|
15
15
|
<div id="root"></div>
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Tracer } from "@opentelemetry/api";
|
|
1
|
+
import { AttributeValue, Attributes, Tracer } from "@opentelemetry/api";
|
|
2
2
|
import { SpanProcessor } from "@opentelemetry/sdk-trace-base";
|
|
3
3
|
import { CalleeBinding, ExtractedProps, PropDefinition, PropDefinition as PropDefinition$1, PropValue, PropValue as PropValue$1, SourceSpan } from "ts-proppy";
|
|
4
4
|
import { GoogleGenAI } from "@google/genai";
|
|
@@ -230,7 +230,7 @@ interface LLMSpanDetails {
|
|
|
230
230
|
/** Dollar cost of the call, if known. */
|
|
231
231
|
cost?: number;
|
|
232
232
|
/** Model parameters (temperature, max_tokens, …). */
|
|
233
|
-
|
|
233
|
+
modelParameters?: Record<string, unknown>;
|
|
234
234
|
}
|
|
235
235
|
/**
|
|
236
236
|
* A span in a {@link Trace}. Spans form a tree via {@link parentId}.
|
|
@@ -438,14 +438,12 @@ interface PromptProvider<TPrompt extends NormalizedPrompt = NormalizedPrompt> {
|
|
|
438
438
|
*/
|
|
439
439
|
updatePromptProperties?(promptId: string, updates: NormalizedPromptUpdates): Promise<TPrompt>;
|
|
440
440
|
/**
|
|
441
|
-
* Executes a prompt
|
|
442
|
-
* `false`) or an async text iterable (when `stream` is `true`).
|
|
441
|
+
* Executes a prompt.
|
|
443
442
|
*
|
|
444
443
|
* @param promptId - ID of the prompt to run.
|
|
445
444
|
* @param params - Positional arguments forwarded to the prompt function.
|
|
446
|
-
* @param stream - When `true`, the return value is an async text iterator.
|
|
447
445
|
*/
|
|
448
|
-
execute(promptId: string, params: any[]
|
|
446
|
+
execute(promptId: string, params: any[]): Promise<void>;
|
|
449
447
|
/**
|
|
450
448
|
* Returns the model catalog (known providers and popular models) for this
|
|
451
449
|
* provider's underlying SDK.
|
|
@@ -496,6 +494,18 @@ interface PromptProvider<TPrompt extends NormalizedPrompt = NormalizedPrompt> {
|
|
|
496
494
|
}
|
|
497
495
|
//#endregion
|
|
498
496
|
//#region src/trace/prompt-tracer.d.ts
|
|
497
|
+
interface PromptsHelperOptions {
|
|
498
|
+
/**
|
|
499
|
+
* Globally-unique identifier for this group of prompts.
|
|
500
|
+
*/
|
|
501
|
+
readonly id: string;
|
|
502
|
+
}
|
|
503
|
+
type PromptsFactory<Args extends any[] = never[], Prompt = unknown> = (...args: Args) => Record<string, (...args: any[]) => Prompt>;
|
|
504
|
+
/**
|
|
505
|
+
* Intended to be used in the `satisfies` clause of a `prompts` export from an
|
|
506
|
+
* SDK adapter package.
|
|
507
|
+
*/
|
|
508
|
+
type PromptsHelper = (opts: PromptsHelperOptions, factory: PromptsFactory<any[], any>) => PromptsFactory<any[], any>;
|
|
499
509
|
/**
|
|
500
510
|
* Attribute name a span can set to pick one of evalution's span-kind values
|
|
501
511
|
* (`'LLM'`, `'TOOL'`, `'AGENT'`, `'EMBEDDING'`, `'DEFAULT'`). Falls back to
|
|
@@ -503,10 +513,9 @@ interface PromptProvider<TPrompt extends NormalizedPrompt = NormalizedPrompt> {
|
|
|
503
513
|
*/
|
|
504
514
|
declare const SPAN_KIND_ATTRIBUTE = "evalution.span.type";
|
|
505
515
|
/**
|
|
506
|
-
* Attribute name a span can set to
|
|
507
|
-
* specific prompt provider. When absent, the prompt ID is treated as global.
|
|
516
|
+
* Attribute name a span can set to give a human-readable name to the prompt.
|
|
508
517
|
*/
|
|
509
|
-
declare const
|
|
518
|
+
declare const PROMPT_NAME_ATTRIBUTE = "gen_ai.prompt.name";
|
|
510
519
|
/**
|
|
511
520
|
* Attribute name a span can set to link itself to a specific prompt. The value
|
|
512
521
|
* is a globally-unique prompt ID unless {@link PROMPT_PROVIDER_ID_ATTRIBUTE} is
|
|
@@ -514,9 +523,21 @@ declare const PROMPT_PROVIDER_ID_ATTRIBUTE = "evalution.prompt.provider.id";
|
|
|
514
523
|
*/
|
|
515
524
|
declare const PROMPT_ID_ATTRIBUTE = "evalution.prompt.id";
|
|
516
525
|
/**
|
|
517
|
-
* Attribute name a span can set to
|
|
526
|
+
* Attribute name a span can set to scope its {@link PROMPT_ID_ATTRIBUTE} to a
|
|
527
|
+
* specific prompt provider. When absent, the prompt ID is treated as global.
|
|
518
528
|
*/
|
|
519
|
-
declare const
|
|
529
|
+
declare const PROMPT_PROVIDER_ID_ATTRIBUTE = "evalution.prompt.provider.id";
|
|
530
|
+
/**
|
|
531
|
+
* Attribute name a span can set to include an array of input parameters used
|
|
532
|
+
* to construct the final prompt.
|
|
533
|
+
*/
|
|
534
|
+
declare const PROMPT_INPUTS_ATTRIBUTE = "evalution.prompt.inputs";
|
|
535
|
+
interface PromptSpanInfo {
|
|
536
|
+
name: string;
|
|
537
|
+
id?: string;
|
|
538
|
+
functionParameters?: any[];
|
|
539
|
+
}
|
|
540
|
+
declare function getPromptSpanAttributes(prompt: PromptSpanInfo, attributes?: Attributes): Record<string, AttributeValue>;
|
|
520
541
|
/**
|
|
521
542
|
* Wraps a {@link Tracer} so that every span it produces is tagged with the
|
|
522
543
|
* attributes that associate it with a prompt — the prompt's name
|
|
@@ -537,10 +558,7 @@ declare const PROMPT_NAME_ATTRIBUTE = "gen_ai.prompt.name";
|
|
|
537
558
|
* @returns A tracer that forwards to `tracer` while attaching the prompt
|
|
538
559
|
* attributes to each span it creates.
|
|
539
560
|
*/
|
|
540
|
-
declare function createTracerForPrompt(prompt:
|
|
541
|
-
name: string;
|
|
542
|
-
id?: string;
|
|
543
|
-
}, tracer?: Tracer): Tracer;
|
|
561
|
+
declare function createTracerForPrompt(prompt: PromptSpanInfo, tracer?: Tracer): Tracer;
|
|
544
562
|
//#endregion
|
|
545
563
|
//#region src/trace/trace-provider.d.ts
|
|
546
564
|
/**
|
|
@@ -682,8 +700,10 @@ type FileWatchCallback = (eventType: ChangeEventType, filePath: string) => void;
|
|
|
682
700
|
* Abstraction over file system I/O used throughout Evalution.
|
|
683
701
|
*
|
|
684
702
|
* Swap in a different implementation to adapt Evalution to non-local
|
|
685
|
-
* environments or to make tests fully in-memory
|
|
686
|
-
* {@link
|
|
703
|
+
* environments or to make tests fully in-memory. The
|
|
704
|
+
* {@link MemoryFileProvider} (in `./file-provider-memory.ts`) keeps everything
|
|
705
|
+
* in-process with no Node-only dependencies; {@link LocalFileProvider} (in
|
|
706
|
+
* `./file-provider-local.ts`) is the default implementation for production use.
|
|
687
707
|
*/
|
|
688
708
|
interface FileProvider {
|
|
689
709
|
/**
|
|
@@ -725,12 +745,37 @@ interface FileProvider {
|
|
|
725
745
|
*/
|
|
726
746
|
watch(patterns: readonly string[], options: FileWatchOptions, callback: FileWatchCallback): () => void;
|
|
727
747
|
}
|
|
748
|
+
//#endregion
|
|
749
|
+
//#region src/file-provider-local.d.ts
|
|
750
|
+
/**
|
|
751
|
+
* A {@link FileProvider} backed by the local file system.
|
|
752
|
+
*
|
|
753
|
+
* Uses `fs/promises` for I/O, `fs/promises.glob` (Node.js ≥ 22) for pattern
|
|
754
|
+
* matching, and [chokidar](https://github.com/paulmillr/chokidar) for file
|
|
755
|
+
* watching.
|
|
756
|
+
*
|
|
757
|
+
* This is the default implementation used by {@link FilePromptProvider} and
|
|
758
|
+
* {@link TSPromptFileType} when no custom provider is supplied.
|
|
759
|
+
*/
|
|
760
|
+
declare class LocalFileProvider implements FileProvider {
|
|
761
|
+
readFile(filePath: string): Promise<string>;
|
|
762
|
+
writeFile(filePath: string, content: string): Promise<void>;
|
|
763
|
+
deleteFile(filePath: string): Promise<void>;
|
|
764
|
+
import(filePath: string): Promise<any>;
|
|
765
|
+
glob(pattern: string, options?: GlobOptions): AsyncIterableIterator<string>;
|
|
766
|
+
watch(patterns: readonly string[], options: FileWatchOptions, callback: FileWatchCallback): () => void;
|
|
767
|
+
}
|
|
768
|
+
//#endregion
|
|
769
|
+
//#region src/file-provider-memory.d.ts
|
|
728
770
|
/**
|
|
729
771
|
* An in-memory {@link FileProvider} backed by a `Map<string, string>`.
|
|
730
772
|
*
|
|
731
|
-
* Intended for unit tests
|
|
732
|
-
*
|
|
733
|
-
*
|
|
773
|
+
* Intended for unit tests and non-local environments (e.g. a browser or
|
|
774
|
+
* service-worker bundle) — all file I/O stays in-process with no disk access.
|
|
775
|
+
* It depends only on `node:path` and `minimatch`, so it carries no Node-only
|
|
776
|
+
* runtime dependencies (no `node:fs`, `chokidar`, etc.). Calling
|
|
777
|
+
* {@link writeFile} triggers any active {@link watch} callbacks synchronously,
|
|
778
|
+
* making it easy to test reactive code paths.
|
|
734
779
|
*
|
|
735
780
|
* @example
|
|
736
781
|
* ```ts
|
|
@@ -755,24 +800,6 @@ declare class MemoryFileProvider implements FileProvider {
|
|
|
755
800
|
watch(patterns: readonly string[], options: FileWatchOptions, callback: FileWatchCallback): () => void;
|
|
756
801
|
private notifyWatchers;
|
|
757
802
|
}
|
|
758
|
-
/**
|
|
759
|
-
* A {@link FileProvider} backed by the local file system.
|
|
760
|
-
*
|
|
761
|
-
* Uses `fs/promises` for I/O, `fs/promises.glob` (Node.js ≥ 22) for pattern
|
|
762
|
-
* matching, and [chokidar](https://github.com/paulmillr/chokidar) for file
|
|
763
|
-
* watching.
|
|
764
|
-
*
|
|
765
|
-
* This is the default implementation used by {@link FilePromptProvider} and
|
|
766
|
-
* {@link TSPromptFileType} when no custom provider is supplied.
|
|
767
|
-
*/
|
|
768
|
-
declare class LocalFileProvider implements FileProvider {
|
|
769
|
-
readFile(filePath: string): Promise<string>;
|
|
770
|
-
writeFile(filePath: string, content: string): Promise<void>;
|
|
771
|
-
deleteFile(filePath: string): Promise<void>;
|
|
772
|
-
import(filePath: string): Promise<any>;
|
|
773
|
-
glob(pattern: string, options?: GlobOptions): AsyncIterableIterator<string>;
|
|
774
|
-
watch(patterns: readonly string[], options: FileWatchOptions, callback: FileWatchCallback): () => void;
|
|
775
|
-
}
|
|
776
803
|
//#endregion
|
|
777
804
|
//#region src/sdk/sdk-adapter.d.ts
|
|
778
805
|
/**
|
|
@@ -780,6 +807,14 @@ declare class LocalFileProvider implements FileProvider {
|
|
|
780
807
|
*
|
|
781
808
|
* Pass an instance of this to {@link FilePromptProvider} via the
|
|
782
809
|
* `sdk` option.
|
|
810
|
+
*
|
|
811
|
+
* Each `SDKAdapter` implementation should be paired with a companion package
|
|
812
|
+
* (named by {@link SDKAdapter.promptsHelperImport}) that exports a `prompts`
|
|
813
|
+
* function satisfying the {@link PromptsHelper} type. That function is the user-facing entry
|
|
814
|
+
* point for defining prompts that work with Evalution. It accepts a {@link PromptsHelperOptions}
|
|
815
|
+
* and a factory that can optionally receive SDK-specific parameters. The factory should return a
|
|
816
|
+
* record of prompt functions. Prompt functions should return a configuration that enables OpenTelemetry
|
|
817
|
+
* reporting, if possible, with the attributes returned by {@link getPromptSpanAttributes}.
|
|
783
818
|
*/
|
|
784
819
|
interface SDKAdapter {
|
|
785
820
|
/**
|
|
@@ -801,13 +836,11 @@ interface SDKAdapter {
|
|
|
801
836
|
*/
|
|
802
837
|
getModelParameters(rootDir: string): PropDefinition$1[];
|
|
803
838
|
/**
|
|
804
|
-
* Executes a prompt config object
|
|
805
|
-
* `stream` is `false`) or an async text iterable (when `stream` is `true`).
|
|
839
|
+
* Executes a prompt config object.
|
|
806
840
|
*
|
|
807
841
|
* @param config - The config object returned by the prompt function.
|
|
808
|
-
* @param stream - When `true`, returns a streaming text iterator.
|
|
809
842
|
*/
|
|
810
|
-
executeConfig(config: any
|
|
843
|
+
executeConfig(config: any): Promise<void>;
|
|
811
844
|
/**
|
|
812
845
|
* Convert a low-level {@link ParsedPrompt} produced by a
|
|
813
846
|
* {@link PromptFileType} into a {@link NormalizedPrompt} that the UI can
|
|
@@ -988,7 +1021,6 @@ declare class FilePromptProvider implements PromptProvider<NormalizedFilePrompt>
|
|
|
988
1021
|
private includePatterns;
|
|
989
1022
|
private ignorePatterns;
|
|
990
1023
|
private sdkAdapter;
|
|
991
|
-
private suppressedWatchEvents;
|
|
992
1024
|
constructor({
|
|
993
1025
|
id,
|
|
994
1026
|
rootDir,
|
|
@@ -1005,13 +1037,11 @@ declare class FilePromptProvider implements PromptProvider<NormalizedFilePrompt>
|
|
|
1005
1037
|
private normalizeFilePrompt;
|
|
1006
1038
|
getModelCatalog(): Promise<ModelCatalog>;
|
|
1007
1039
|
getModelParameters(): PropDefinition[];
|
|
1008
|
-
execute(promptId: string, params: any[]
|
|
1040
|
+
execute(promptId: string, params: any[]): Promise<void>;
|
|
1009
1041
|
renamePrompt(promptId: string, newName: string): Promise<NormalizedFilePrompt>;
|
|
1010
1042
|
addPrompt(partial: Partial<NormalizedFilePrompt>): Promise<NormalizedFilePrompt | AddPromptContext>;
|
|
1011
1043
|
watch(callback: (event: PromptChangeEvent) => void): () => void;
|
|
1012
1044
|
private ensureFiles;
|
|
1013
|
-
private suppressNextWatchEvent;
|
|
1014
|
-
private consumeSuppressedWatchEvent;
|
|
1015
1045
|
private findPromptFiles;
|
|
1016
1046
|
private parsePromptId;
|
|
1017
1047
|
private listDirectories;
|
|
@@ -1234,7 +1264,7 @@ declare class GeminiInteractionsSDK implements SDKAdapter {
|
|
|
1234
1264
|
}];
|
|
1235
1265
|
}>;
|
|
1236
1266
|
getModelParameters(rootDir: string): PropDefinition$1[];
|
|
1237
|
-
executeConfig(config: BaseCreateInteractionParams
|
|
1267
|
+
executeConfig(config: BaseCreateInteractionParams): Promise<void>;
|
|
1238
1268
|
normalizePrompt(prompt: ParsedPrompt): NormalizedPrompt;
|
|
1239
1269
|
denormalizeUpdates(updates: NormalizedPromptUpdates, currentValues?: Record<string, PropValue$1>): Record<string, ModelPropValue | null>;
|
|
1240
1270
|
}
|
|
@@ -1295,12 +1325,9 @@ interface SetupInstallPackageStep extends SetupStepBase {
|
|
|
1295
1325
|
* step's `id`; the client references a step only by those ids when asking the
|
|
1296
1326
|
* server to run it.
|
|
1297
1327
|
*/
|
|
1298
|
-
type SetupStep =
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
* `npm i <package>`; `run_command` steps carry their command verbatim.
|
|
1302
|
-
*/
|
|
1303
|
-
declare function setupStepCommand(step: SetupRunCommandStep | SetupInstallPackageStep): string;
|
|
1328
|
+
type SetupStep = {
|
|
1329
|
+
disabledReason?: string;
|
|
1330
|
+
} & (SetupCreateConfigStep | SetupRunCommandStep | SetupInstallPackageStep);
|
|
1304
1331
|
/**
|
|
1305
1332
|
* A named onboarding task for a single AI SDK: what to show in the manual-setup
|
|
1306
1333
|
* picker, plus the ordered steps that wire the SDK up.
|
|
@@ -1327,7 +1354,10 @@ interface SetupTask {
|
|
|
1327
1354
|
*/
|
|
1328
1355
|
declare class VercelAISDK implements SDKAdapter {
|
|
1329
1356
|
readonly promptsHelperImport: "@evalution/vercel-ai-sdk";
|
|
1330
|
-
/**
|
|
1357
|
+
/**
|
|
1358
|
+
* Onboarding task: install the SDK package, then drop a starter config.
|
|
1359
|
+
* @internal
|
|
1360
|
+
*/
|
|
1331
1361
|
static readonly setupTask: SetupTask;
|
|
1332
1362
|
getModelCatalog(): Promise<{
|
|
1333
1363
|
modelValueTypes: {
|
|
@@ -1360,7 +1390,7 @@ declare class VercelAISDK implements SDKAdapter {
|
|
|
1360
1390
|
models: ModelInfo[];
|
|
1361
1391
|
}>;
|
|
1362
1392
|
getModelParameters(rootDir: string): PropDefinition$1[];
|
|
1363
|
-
executeConfig(config: any
|
|
1393
|
+
executeConfig(config: any): Promise<void>;
|
|
1364
1394
|
normalizePrompt(prompt: ParsedPrompt): NormalizedPrompt;
|
|
1365
1395
|
denormalizeUpdates(updates: NormalizedPromptUpdates, _currentValues?: Record<string, PropValue$1>): Record<string, ModelPropValue | null>;
|
|
1366
1396
|
}
|
|
@@ -1437,4 +1467,4 @@ declare class MemoryTraceProvider extends BaseOTelTraceProvider {
|
|
|
1437
1467
|
protected addOrUpdateSpan(span: Span): Promise<Span>;
|
|
1438
1468
|
}
|
|
1439
1469
|
//#endregion
|
|
1440
|
-
export { type AddPromptContext, type AddPromptField, type CalleeBinding, type ChangeEventType, type EvalutionConfig, type ExecuteRequest, type ExecuteResponse, type ExtractedProps, type FilePromptMetadata, FilePromptProvider, type FilePromptProviderOptions, type FileProvider, type FileWatchCallback, type FileWatchOptions, GeminiInteractionsSDK, type GlobOptions, type LLMSpanDetails, LocalFileProvider, MemoryFileProvider, MemoryTraceProvider, type ModelCatalog, type ModelGroupInfo, type ModelInfo, type ModelPropValue, type ModelValueType, type NormalizedFilePrompt, type NormalizedMessage, type NormalizedParameter, type NormalizedPrompt, type NormalizedPromptUpdates, type NormalizedToolCall, PROMPT_ID_ATTRIBUTE, PROMPT_NAME_ATTRIBUTE, PROMPT_PROVIDER_ID_ATTRIBUTE, type ParsedFilePrompt, type ParsedPrompt, type PromptChangeEvent, type PromptFileType, type PromptID, type PromptProvider, type PromptProviderInfo, type
|
|
1470
|
+
export { type AddPromptContext, type AddPromptField, type CalleeBinding, type ChangeEventType, type EvalutionConfig, type ExecuteRequest, type ExecuteResponse, type ExtractedProps, type FilePromptMetadata, FilePromptProvider, type FilePromptProviderOptions, type FileProvider, type FileWatchCallback, type FileWatchOptions, GeminiInteractionsSDK, type GlobOptions, type LLMSpanDetails, LocalFileProvider, MemoryFileProvider, MemoryTraceProvider, type ModelCatalog, type ModelGroupInfo, type ModelInfo, type ModelPropValue, type ModelValueType, type NormalizedFilePrompt, type NormalizedMessage, type NormalizedParameter, type NormalizedPrompt, type NormalizedPromptUpdates, type NormalizedToolCall, PROMPT_ID_ATTRIBUTE, PROMPT_INPUTS_ATTRIBUTE, PROMPT_NAME_ATTRIBUTE, PROMPT_PROVIDER_ID_ATTRIBUTE, type ParsedFilePrompt, type ParsedPrompt, type PromptChangeEvent, type PromptFileType, type PromptID, type PromptProvider, type PromptProviderInfo, type PromptSpanInfo, type PromptsFactory, type PromptsHelper, type PromptsHelperOptions, type PropDefinition, type PropValue, type SDKAdapter, SPAN_KIND_ATTRIBUTE, type SourceSpan, type Span, type SpanKind, type SpanMessage, TSPromptFileType, type Trace, type TraceChangeEvent, type TraceChangeType, type TraceProvider, type TraceProviderInfo, type TraceStreamEvent, type TraceSummary, type TraceWithSpans, VercelAISDK, createTracerForPrompt, getPromptSpanAttributes };
|