local-operator-ui 0.23.2 → 0.23.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.
Files changed (72) hide show
  1. package/bin/local-operator-ui.js +11 -1
  2. package/out/main/index.js +11488 -7981
  3. package/out/preload/index.js +110 -0
  4. package/out/renderer/assets/{_basePickBy-BVR8NHkD.js → _basePickBy-CN0rbl_B.js} +1 -1
  5. package/out/renderer/assets/{_baseUniq-onZkstHq.js → _baseUniq-Ug-U3Vbc.js} +1 -1
  6. package/out/renderer/assets/{agent-details-page-DC13Jibh.js → agent-details-page-CxpR2VPm.js} +1 -1
  7. package/out/renderer/assets/{agent-hub-page-iulwy94G.js → agent-hub-page-uDPA0Kvg.js} +1 -1
  8. package/out/renderer/assets/{agents-page-BSegINKc.js → agents-page-CRqdRl1t.js} +2 -2
  9. package/out/renderer/assets/{arc-DAb06JtB.js → arc-CUFswKSd.js} +1 -1
  10. package/out/renderer/assets/{architectureDiagram-IEHRJDOE-sSe348HD.js → architectureDiagram-IEHRJDOE-pFcFaTc3.js} +1 -1
  11. package/out/renderer/assets/{blockDiagram-JOT3LUYC-DB0hhoP8.js → blockDiagram-JOT3LUYC-BG2832Q4.js} +1 -1
  12. package/out/renderer/assets/{c4Diagram-VJAJSXHY-CcMWb5_5.js → c4Diagram-VJAJSXHY-C2r12sfW.js} +1 -1
  13. package/out/renderer/assets/channel-Ch9urzYS.js +1 -0
  14. package/out/renderer/assets/{chunk-4BMEZGHF-SRkv1Dzw.js → chunk-4BMEZGHF-BPR6t5J9.js} +1 -1
  15. package/out/renderer/assets/{chunk-A2AXSNBT-BBdcJhkk.js → chunk-A2AXSNBT-CS00ya_c.js} +1 -1
  16. package/out/renderer/assets/{chunk-AEK57VVT-BFLmAuIk.js → chunk-AEK57VVT-C-kEZamD.js} +1 -1
  17. package/out/renderer/assets/{chunk-D6G4REZN--QHGDmI-.js → chunk-D6G4REZN-OOhJ7t5s.js} +1 -1
  18. package/out/renderer/assets/{chunk-RZ5BOZE2-Cy8U6l3Q.js → chunk-RZ5BOZE2-Bwlq47qc.js} +1 -1
  19. package/out/renderer/assets/{chunk-XZIHB7SX-DFfpTr7O.js → chunk-XZIHB7SX-CfqURoNC.js} +1 -1
  20. package/out/renderer/assets/classDiagram-GIVACNV2-CYp4Jnv5.js +1 -0
  21. package/out/renderer/assets/classDiagram-v2-COTLJTTW-CYp4Jnv5.js +1 -0
  22. package/out/renderer/assets/clone-DVZHur_7.js +1 -0
  23. package/out/renderer/assets/{compact-pagination-DERWPPOM.js → compact-pagination-BGWcLBUD.js} +1 -1
  24. package/out/renderer/assets/{dagre-OKDRZEBW-DfjKcX6M.js → dagre-OKDRZEBW-tY8jrcZH.js} +1 -1
  25. package/out/renderer/assets/{diagram-SSKATNLV-Bm1j7Y3r.js → diagram-SSKATNLV-J3cstXcu.js} +1 -1
  26. package/out/renderer/assets/{diagram-VNBRO52H-BRx5TiDX.js → diagram-VNBRO52H-p4X-p-ki.js} +1 -1
  27. package/out/renderer/assets/{erDiagram-Q7BY3M3F-BSxbIo11.js → erDiagram-Q7BY3M3F-S7pKke2V.js} +1 -1
  28. package/out/renderer/assets/{flowDiagram-4HSFHLVR-R2ILhUKR.js → flowDiagram-4HSFHLVR-pbGx4rN2.js} +1 -1
  29. package/out/renderer/assets/{ganttDiagram-APWFNJXF-Gd7TZJFy.js → ganttDiagram-APWFNJXF-DEtmnS5-.js} +1 -1
  30. package/out/renderer/assets/{gitGraphDiagram-7IBYFJ6S-BAs2K2WV.js → gitGraphDiagram-7IBYFJ6S-BWF8FWhs.js} +1 -1
  31. package/out/renderer/assets/{graph-zm35SWuR.js → graph-B7m4xk9H.js} +1 -1
  32. package/out/renderer/assets/icon-BmwuYXQI.css +1 -0
  33. package/out/renderer/assets/{icon-mKHwnRNs.js → icon-tKUcWuiZ.js} +1 -1
  34. package/out/renderer/assets/{index-DF2zdD6_.js → index-BsXIxBXM.js} +365 -367
  35. package/out/renderer/assets/{index-CqIP2mt3.js → index-CsaoIvUd.js} +1 -1
  36. package/out/renderer/assets/{index-DXx2j7ov.js → index-TxI73G4w.js} +1 -1
  37. package/out/renderer/assets/{infoDiagram-PH2N3AL5-BcAWGJ1_.js → infoDiagram-PH2N3AL5-8h2TmkIW.js} +1 -1
  38. package/out/renderer/assets/{installer-DcKqSMWJ.js → installer-DuzWPi6f.js} +1 -1
  39. package/out/renderer/assets/{journeyDiagram-U35MCT3I-VfDkAwaY.js → journeyDiagram-U35MCT3I-CPf3fMXH.js} +1 -1
  40. package/out/renderer/assets/{kanban-definition-NDS4AKOZ-BVgW6OQK.js → kanban-definition-NDS4AKOZ-DW2otqaN.js} +1 -1
  41. package/out/renderer/assets/{layout-jfvNOQNg.js → layout-BRcJiSkq.js} +1 -1
  42. package/out/renderer/assets/{legacy-agents-page-yObswBd2.js → legacy-agents-page-qF731keW.js} +4 -4
  43. package/out/renderer/assets/{mermaid.core-w7CiwIS9.js → mermaid.core-B5hEqKH7.js} +5 -5
  44. package/out/renderer/assets/{mindmap-definition-ALO5MXBD-Ck5fBAvP.js → mindmap-definition-ALO5MXBD-CUqtz9Ze.js} +1 -1
  45. package/out/renderer/assets/{page-header-DmGvvMe3.js → page-header-YNWzPx-u.js} +1 -1
  46. package/out/renderer/assets/{parseISO-BfcDJeSX.js → parseISO-CMaINYL9.js} +1 -1
  47. package/out/renderer/assets/{pieDiagram-IB7DONF6-xuxf3Is5.js → pieDiagram-IB7DONF6-CIqN6Dpx.js} +1 -1
  48. package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-B4UU5d5n.js → quadrantDiagram-7GDLP6J5-PXHdER5s.js} +1 -1
  49. package/out/renderer/assets/{radar-MK3ICKWK-BUD9nsvK.js → radar-MK3ICKWK-8W9weQXH.js} +1 -1
  50. package/out/renderer/assets/radient-auth-buttons-Bws-4a4y.js +6 -0
  51. package/out/renderer/assets/{requirementDiagram-KVF5MWMF-0fsS7ohi.js → requirementDiagram-KVF5MWMF-C2W25Iz8.js} +1 -1
  52. package/out/renderer/assets/{sankeyDiagram-QLVOVGJD-CUjpA8gC.js → sankeyDiagram-QLVOVGJD-WNXESQ-v.js} +1 -1
  53. package/out/renderer/assets/{schedules-page-xXMGrdrg.js → schedules-page-Dm47JYr-.js} +8 -8
  54. package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-CX6mfjEg.js → sequenceDiagram-X6HHIX6F-BQsRwpcA.js} +1 -1
  55. package/out/renderer/assets/settings-page-Cy_psxNy.js +97 -0
  56. package/out/renderer/assets/{square-pen-717nTWtU.js → square-pen-D2Fexv_6.js} +1 -1
  57. package/out/renderer/assets/{stateDiagram-DGXRK772-DlOrLmRF.js → stateDiagram-DGXRK772-CrrBOqYj.js} +1 -1
  58. package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-CyDSRETw.js +1 -0
  59. package/out/renderer/assets/{timeline-definition-BDJGKUSR-B6_9nD67.js → timeline-definition-BDJGKUSR-DZkzCCzg.js} +1 -1
  60. package/out/renderer/assets/{use-agent-like-mutation-Ckg2HQQI.js → use-agent-like-mutation-dXDrGfiV.js} +1 -1
  61. package/out/renderer/assets/{xychartDiagram-VJFVF3MP-B2JoquLl.js → xychartDiagram-VJFVF3MP-McxfRz1N.js} +1 -1
  62. package/out/renderer/index.html +3 -3
  63. package/out/renderer/installer.html +3 -3
  64. package/package.json +53 -21
  65. package/out/renderer/assets/channel-Dl22yt_O.js +0 -1
  66. package/out/renderer/assets/classDiagram-GIVACNV2-BguqLYlr.js +0 -1
  67. package/out/renderer/assets/classDiagram-v2-COTLJTTW-BguqLYlr.js +0 -1
  68. package/out/renderer/assets/clone-C0R1R8sa.js +0 -1
  69. package/out/renderer/assets/icon-DC3rStnR.css +0 -1
  70. package/out/renderer/assets/radient-auth-buttons-BtcEZuSY.js +0 -6
  71. package/out/renderer/assets/settings-page-PLBi7GEM.js +0 -91
  72. package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-CsUzDnIT.js +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "local-operator-ui",
3
- "version": "0.23.2",
3
+ "version": "0.23.4",
4
4
  "productName": "Local Operator",
5
5
  "description": "User interface for AI agent assistants that run Python code safely on your device through an intuitive chat interface. Supports local and cloud LLM models with built-in security features.",
6
6
  "main": "./out/main/index.js",
@@ -69,8 +69,8 @@
69
69
  "check-types:main": "tsc --noEmit -p tsconfig.node.json",
70
70
  "check-types:renderer": "tsc --noEmit -p tsconfig.app.json",
71
71
  "check-types": "pnpm run check-types:main && pnpm run check-types:renderer",
72
- "test:desktop": "node scripts/run-desktop-tests.mjs scripts/owned-serve-lifecycle.test.mjs scripts/linux-sandbox.test.mjs scripts/capture-evidence.test.mjs scripts/desktop-contract.test.mjs scripts/transcript-reducer.test.mjs scripts/transcript-paging.test.mjs scripts/provider-state.test.mjs scripts/stale-agent.test.mjs scripts/desktop-renderer-transport.test.mjs scripts/desktop-proxy.test.mjs scripts/session-stream-token.test.mjs scripts/session-load-recovery.test.mjs scripts/provider-grid-error-copy.test.mjs scripts/settings-time-to-error.test.mjs scripts/backend-error-surfaces.test.mjs scripts/canonical-chat.test.mjs scripts/session-switch.test.mjs scripts/chat-search.test.mjs scripts/run-detail-model.test.mjs scripts/subagent-pulse.test.mjs scripts/chat-title.test.mjs scripts/clear-search.test.mjs scripts/tool-row.test.mjs scripts/attachment-url.test.mjs scripts/desktop-notifier.test.mjs scripts/python-bytecode-cache.test.mjs scripts/update-affirmation.test.mjs scripts/update-robustness.test.mjs scripts/prune-python-resource.test.mjs scripts/managed-python.test.mjs scripts/usage-view.test.mjs scripts/usage-container.test.mjs scripts/session-status.test.mjs scripts/composer-readings.test.mjs scripts/composer-tabs.test.mjs scripts/ask-options.test.mjs scripts/window-mode.test.mjs scripts/evidence-manifest.test.mjs scripts/canonical-notice.test.mjs scripts/evidence-run-guard.test.mjs scripts/desktop-test-concurrency.test.mjs scripts/run-desktop-tests.test.mjs scripts/mcp-foreign-config-origin.test.mjs scripts/mentioned-files.test.mjs scripts/picker-feedback.test.mjs scripts/panel-chart-motion.test.mjs scripts/panel-info-credentials.test.mjs scripts/warm-session.test.mjs scripts/submit-latency.test.mjs scripts/completion-view-ack.test.mjs scripts/echo-delivery.test.mjs scripts/check-runtime-deps.test.mjs scripts/new-chat-row.test.mjs scripts/new-chat-row-evidence.test.mjs scripts/reconnect-page-gap.test.mjs scripts/browser-host.test.mjs scripts/check-vendored.test.mjs scripts/chat-session-status.test.mjs scripts/draft-selection.test.mjs",
73
- "check-themes": "node scripts/generate-theme-css.mjs --check && node scripts/contrast-contract.mjs",
72
+ "test:session-cookies": "node scripts/session-cookie-electron.test.mjs",
73
+ "test:desktop": "node scripts/run-desktop-tests.mjs scripts/slash-token.test.mjs scripts/slash-rank.test.mjs scripts/slash-submit.test.mjs scripts/slash-contract.test.mjs scripts/slash-row-format.test.mjs scripts/owned-serve-lifecycle.test.mjs scripts/linux-sandbox.test.mjs scripts/capture-evidence.test.mjs scripts/desktop-contract.test.mjs scripts/transcript-reducer.test.mjs scripts/transcript-paging.test.mjs scripts/provider-state.test.mjs scripts/stale-agent.test.mjs scripts/desktop-renderer-transport.test.mjs scripts/desktop-proxy.test.mjs scripts/session-stream-token.test.mjs scripts/session-load-recovery.test.mjs scripts/provider-grid-error-copy.test.mjs scripts/settings-time-to-error.test.mjs scripts/backend-error-surfaces.test.mjs scripts/canonical-chat.test.mjs scripts/stale-caption.test.mjs scripts/desktop-watch-lease.test.mjs scripts/session-switch.test.mjs scripts/chat-search.test.mjs scripts/run-detail-model.test.mjs scripts/subagent-pulse.test.mjs scripts/chat-title.test.mjs scripts/clear-search.test.mjs scripts/tool-row.test.mjs scripts/attachment-url.test.mjs scripts/desktop-notifier.test.mjs scripts/launch-session.test.mjs scripts/desktop-feed.test.mjs scripts/viewer-record.test.mjs scripts/desktop-stream.test.mjs scripts/python-bytecode-cache.test.mjs scripts/update-affirmation.test.mjs scripts/update-robustness.test.mjs scripts/prune-python-resource.test.mjs scripts/managed-python.test.mjs scripts/usage-view.test.mjs scripts/usage-container.test.mjs scripts/session-status.test.mjs scripts/composer-readings.test.mjs scripts/composer-tabs.test.mjs scripts/ask-options.test.mjs scripts/window-mode.test.mjs scripts/evidence-manifest.test.mjs scripts/canonical-notice.test.mjs scripts/evidence-run-guard.test.mjs scripts/desktop-test-concurrency.test.mjs scripts/run-desktop-tests.test.mjs scripts/mcp-foreign-config-origin.test.mjs scripts/mentioned-files.test.mjs scripts/picker-feedback.test.mjs scripts/panel-chart-motion.test.mjs scripts/panel-info-credentials.test.mjs scripts/warm-session.test.mjs scripts/submit-latency.test.mjs scripts/completion-view-ack.test.mjs scripts/echo-delivery.test.mjs scripts/check-runtime-deps.test.mjs scripts/new-chat-row.test.mjs scripts/new-chat-row-evidence.test.mjs scripts/reconnect-page-gap.test.mjs scripts/browser-host.test.mjs scripts/check-vendored.test.mjs scripts/chat-session-status.test.mjs scripts/draft-selection.test.mjs scripts/toast-lifetime.test.mjs scripts/storybook-query-fixture.test.mjs scripts/mcp-list-query.test.mjs scripts/mcp-target-resolution.test.mjs scripts/mcp-auth-surface.test.mjs scripts/daemon-discovery.test.mjs scripts/daemon-health-state.test.mjs scripts/daemon-observation.test.mjs scripts/session-cookies.test.mjs", "check-themes": "node scripts/generate-theme-css.mjs --check && node scripts/contrast-contract.mjs",
74
74
  "check-vendored": "node scripts/check-vendored.mjs",
75
75
  "check-evidence": "node scripts/check-evidence.mjs",
76
76
  "check-edit-diffs": "node scripts/check-edit-diffs.mjs",
@@ -100,7 +100,7 @@
100
100
  "posthog-node": "^4.11.3",
101
101
  "zod": "^3.24.2"
102
102
  },
103
- "//types-node-pin": "Declared in devDependencies and pinned exactly, rather than left to the peer that used to supply it. @electron-toolkit/tsconfig peers on `@types/node: *`, so a full re-resolution floats it to whatever major is current; a range here would re-float the same way. It matters because the renderer typecheck compiles against the lib level this package implies: 22.x carries the es2020 compatibility shims that declare `Array.prototype.at`, 24.x dropped them, and floating it surfaced two TS2550 errors in files nothing here touches. Declaring it makes that a reviewed line instead of a resolution accident.",
103
+ "//types-node-pin": "Declared in devDependencies and pinned exactly, rather than left to the peer that used to supply it. @electron-toolkit/tsconfig peers on `@types/node: *`, so a full re-resolution floats it to whatever major is current; a range here would re-float the same way. It matters because the renderer typecheck compiles against the lib level this package implies: 22.x carries the es2020 compatibility shims that declare `Array.prototype.at`, 24.x dropped them, and floating it surfaced two TS2550 errors in files nothing here touches. Declaring it makes that a reviewed line instead of a resolution accident.",
104
104
  "//packaged-node-modules-exclusions": "The list above excludes Electron's own dependency tree from the packaged app, which electron-builder copies because `electron` is in optionalDependencies (the npm/npx channel needs it at install time). `@electron/get`, `@electron-internal/extract-zip` and their deps exist to download and unpack the Electron runtime during an INSTALL; a packaged app never runs them. Measured on a --dir artifact of 0.19.7: 8 packages outside the production closure, 7.0 MB of them unpacked into app.asar.unpacked and the rest inside a 26 MB app.asar (@types/node alone 2.4 MB). None is a module request anywhere in out/**, and the closure scripts/check-packaged-closure.mjs computes over the six declared runtime dependencies contains none of them. They are named rather than pattern-matched because electron-builder has no 'skip this dependency's tree' switch: a future Electron bump that adds a dependency needs this list re-derived from the same diff.",
105
105
  "//electron-pin": "Two pins, one runtime, and they must move together. optionalDependencies.electron is what the npm/npx channel installs and what bin/local-operator-ui.js checks at launch; build.electronVersion is what electron-builder packages into the installers. electron-builder does NOT read optionalDependencies (findFromPackageMetadata inspects devDependencies then dependencies only), so without the explicit build.electronVersion it silently falls back to whatever electron happens to sit in node_modules, and a bump against a stale tree keeps building the old runtime. Bump both, or scripts/test-publish-workflow.mjs fails. dmg-builder and electron-builder-squirrel-windows are app-builder-lib's peers and the builder refuses to resolve when they disagree with it, so all three move as one version.",
106
106
  "optionalDependencies": {
@@ -228,25 +228,25 @@
228
228
  "output": "dist",
229
229
  "buildResources": "build"
230
230
  },
231
- "extraResources": [
232
- {
233
- "from": "resources/python",
234
- "to": "python",
235
- "filter": [
236
- "**/*"
237
- ]
238
- },
239
- {
240
- "from": "resources/python_aarch64",
241
- "to": "python_aarch64",
242
- "filter": [
243
- "**/*"
244
- ]
245
- }
246
- ],
247
231
  "afterSign": "scripts/notarize.js",
248
- "afterPack": "scripts/prune-python-resource.mjs",
232
+ "afterPack": "scripts/after-pack.mjs",
249
233
  "mac": {
234
+ "extraResources": [
235
+ {
236
+ "from": "resources/python",
237
+ "to": "python-runtime-seed/x64",
238
+ "filter": [
239
+ "**/*"
240
+ ]
241
+ },
242
+ {
243
+ "from": "resources/python_aarch64",
244
+ "to": "python-runtime-seed/arm64",
245
+ "filter": [
246
+ "**/*"
247
+ ]
248
+ }
249
+ ],
250
250
  "notarize": false,
251
251
  "category": "public.app-category.developer-tools",
252
252
  "hardenedRuntime": true,
@@ -291,6 +291,22 @@
291
291
  }
292
292
  },
293
293
  "win": {
294
+ "extraResources": [
295
+ {
296
+ "from": "resources/python",
297
+ "to": "python",
298
+ "filter": [
299
+ "**/*"
300
+ ]
301
+ },
302
+ {
303
+ "from": "resources/python_aarch64",
304
+ "to": "python_aarch64",
305
+ "filter": [
306
+ "**/*"
307
+ ]
308
+ }
309
+ ],
294
310
  "target": [
295
311
  {
296
312
  "target": "nsis",
@@ -311,6 +327,22 @@
311
327
  "multiLanguageInstaller": true
312
328
  },
313
329
  "linux": {
330
+ "extraResources": [
331
+ {
332
+ "from": "resources/python",
333
+ "to": "python",
334
+ "filter": [
335
+ "**/*"
336
+ ]
337
+ },
338
+ {
339
+ "from": "resources/python_aarch64",
340
+ "to": "python_aarch64",
341
+ "filter": [
342
+ "**/*"
343
+ ]
344
+ }
345
+ ],
314
346
  "category": "ArtificialIntelligence",
315
347
  "icon": "build/",
316
348
  "target": [
@@ -1 +0,0 @@
1
- import{U as a,C as n}from"./mermaid.core-w7CiwIS9.js";const t=(r,o)=>a.lang.round(n.parse(r)[o]);export{t as c};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-A2AXSNBT-BBdcJhkk.js";import{_ as i}from"./mermaid.core-w7CiwIS9.js";import"./chunk-RZ5BOZE2-Cy8U6l3Q.js";import"./index-DF2zdD6_.js";import"./icon-mKHwnRNs.js";var p={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{p as diagram};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-A2AXSNBT-BBdcJhkk.js";import{_ as i}from"./mermaid.core-w7CiwIS9.js";import"./chunk-RZ5BOZE2-Cy8U6l3Q.js";import"./index-DF2zdD6_.js";import"./icon-mKHwnRNs.js";var p={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{p as diagram};
@@ -1 +0,0 @@
1
- import{b as r}from"./_baseUniq-onZkstHq.js";var e=4;function a(o){return r(o,e)}export{a as c};
@@ -1 +0,0 @@
1
- @font-face{font-family:Roboto Mono;font-style:normal;font-weight:400;font-display:swap;src:url(./RobotoMono-Regular-BCiLwUa1.ttf) format("truetype")}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:700;font-display:swap;src:url(./RobotoMono-Bold-CA4NrfZm.ttf) format("truetype")}@font-face{font-family:Geist Mono;src:url(./GeistMonoNerdFontMono-Regular-CWdDX7GJ.otf) format("opentype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(./GeistMonoNerdFontMono-Bold-B9bGosAz.otf) format("opentype");font-weight:700;font-style:normal;font-display:swap}/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--container-7xl:80rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--leading-relaxed:1.625;--radius-xs:2px;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--ease-in-out:cubic-bezier(.65, 0, .35, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-canvas:var(--lo-canvas);--color-surface:var(--lo-surface);--color-elevated:var(--lo-elevated);--color-sunken:var(--lo-sunken);--color-ink:var(--lo-ink);--color-ink-muted:var(--lo-ink-muted);--color-ink-dim:var(--lo-ink-dim);--color-ink-disabled:var(--lo-ink-disabled);--color-hairline:var(--lo-hairline);--color-control:var(--lo-border-control);--color-accent:var(--lo-accent);--color-accent-hover:var(--lo-accent-hover);--color-accent-active:var(--lo-accent-active);--color-accent-wash:var(--lo-accent-wash);--color-on-accent:var(--lo-on-accent);--color-success:var(--lo-success);--color-success-wash:var(--lo-success-wash);--color-success-border:var(--lo-success-border);--color-warning:var(--lo-warning);--color-warning-wash:var(--lo-warning-wash);--color-warning-border:var(--lo-warning-border);--color-danger:var(--lo-danger);--color-danger-wash:var(--lo-danger-wash);--color-danger-border:var(--lo-danger-border);--color-info:var(--lo-info);--color-info-wash:var(--lo-info-wash);--color-info-border:var(--lo-info-border);--text-display:1.75rem;--text-display--line-height:1.2;--text-display--letter-spacing:-.02em;--text-display--font-weight:600;--text-title:1.25rem;--text-title--line-height:1.3;--text-title--letter-spacing:-.012em;--text-title--font-weight:600;--text-heading:1rem;--text-heading--line-height:1.4;--text-heading--letter-spacing:-.006em;--text-heading--font-weight:600;--text-body:.875rem;--text-body--line-height:1.55;--text-body-sm:.8125rem;--text-body-sm--line-height:1.5;--text-meta:.75rem;--text-meta--line-height:1.45;--text-mono:.8125rem;--text-mono--line-height:1.5;--text-mono-sm:.75rem;--text-mono-sm--line-height:1.45;--radius-frame:16px;--transition-duration-instant:80ms;--transition-duration-fast:.12s;--transition-duration-base:.18s;--transition-duration-slow:.24s;--duration-fast:.12s;--duration-slow:.24s;--ease-out-quart:cubic-bezier(.25, 1, .5, 1);--animate-pulse-visible:pulse-visible 2s cubic-bezier(.4, 0, .6, 1) infinite;--color-scrim:var(--lo-scrim);--shadow-overlay:var(--lo-overlay-shadow)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:where(:focus-visible){border-radius:inherit}:where(:disabled,[aria-disabled=true]){opacity:1;cursor:not-allowed}html,body,#app{height:100%;overflow:hidden}body,#app{position:relative}body{background-color:var(--color-canvas);color:var(--color-ink);font-family:var(--font-sans);font-size:var(--text-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;line-height:1.55}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}}@layer components;@layer utilities{.\@container\/chatcol{container:chatcol/inline-size}.\@container\/olderhistory{container:olderhistory/inline-size}.\@container\/toolrow{container:toolrow/inline-size}.\@container{container-type:inline-size}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{inset-inline:0}.inset-y-0{inset-block:0}.-top-0\.5{top:calc(var(--spacing) * -.5)}.-top-2{top:calc(var(--spacing) * -2)}.-top-80{top:calc(var(--spacing) * -80)}.top-0{top:0}.top-1{top:var(--spacing)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-4{top:calc(var(--spacing) * 4)}.top-14{top:calc(var(--spacing) * 14)}.-right-0\.5{right:calc(var(--spacing) * -.5)}.-right-1\.5{right:calc(var(--spacing) * -1.5)}.right-0{right:0}.right-1{right:var(--spacing)}.right-1\.5{right:calc(var(--spacing) * 1.5)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.right-9{right:calc(var(--spacing) * 9)}.-bottom-3{bottom:calc(var(--spacing) * -3)}.bottom-0{bottom:0}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-full{bottom:100%}.-left-1\.5{left:calc(var(--spacing) * -1.5)}.left-0{left:0}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-2\.5{left:calc(var(--spacing) * 2.5)}.left-3{left:calc(var(--spacing) * 3)}.left-4{left:calc(var(--spacing) * 4)}.isolate{isolation:isolate}.z-10{z-index:10}.z-11{z-index:11}.z-12{z-index:12}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-2100{z-index:2100}.z-2200{z-index:2200}.z-\[2\]{z-index:2}.z-\[1300\]{z-index:1300}.z-\[1301\]{z-index:1301}.order-2{order:2}.order-3{order:3}.order-first{order:-9999}.col-span-2{grid-column:span 2/span 2}.col-span-full{grid-column:1/-1}.\!container{width:100%!important}@media (min-width:40rem){.\!container{max-width:40rem!important}}@media (min-width:48rem){.\!container{max-width:48rem!important}}@media (min-width:64rem){.\!container{max-width:64rem!important}}@media (min-width:80rem){.\!container{max-width:80rem!important}}@media (min-width:96rem){.\!container{max-width:96rem!important}}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:0}.m-4{margin:calc(var(--spacing) * 4)}.m-6{margin:calc(var(--spacing) * 6)}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-1\.5{margin-inline:calc(var(--spacing) * -1.5)}.-mx-2{margin-inline:calc(var(--spacing) * -2)}.mx-1{margin-inline:var(--spacing)}.mx-1\.5{margin-inline:calc(var(--spacing) * 1.5)}.mx-3{margin-inline:calc(var(--spacing) * 3)}.mx-auto{margin-inline:auto}.mx-px{margin-inline:1px}.my-1{margin-block:var(--spacing)}.my-2{margin-block:calc(var(--spacing) * 2)}.my-3{margin-block:calc(var(--spacing) * 3)}.my-4{margin-block:calc(var(--spacing) * 4)}.my-6{margin-block:calc(var(--spacing) * 6)}.-mt-4{margin-top:calc(var(--spacing) * -4)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-10{margin-top:calc(var(--spacing) * 10)}.mt-auto{margin-top:auto}.mt-px{margin-top:1px}.mr-0\.5{margin-right:calc(var(--spacing) * .5)}.mr-1{margin-right:var(--spacing)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-2\.5{margin-right:calc(var(--spacing) * 2.5)}.mr-6{margin-right:calc(var(--spacing) * 6)}.-mb-3{margin-bottom:calc(var(--spacing) * -3)}.mb-0{margin-bottom:0}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.-ml-1\.5{margin-left:calc(var(--spacing) * -1.5)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:var(--spacing)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-5{margin-left:calc(var(--spacing) * 5)}.ml-auto{margin-left:auto}.box-border{box-sizing:border-box}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\!block{display:block!important}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.aspect-16\/10{aspect-ratio:16/10}.aspect-square{aspect-ratio:1}.size-1{width:var(--spacing);height:var(--spacing)}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-9\.5{width:calc(var(--spacing) * 9.5);height:calc(var(--spacing) * 9.5)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.size-16{width:calc(var(--spacing) * 16);height:calc(var(--spacing) * 16)}.size-25{width:calc(var(--spacing) * 25);height:calc(var(--spacing) * 25)}.size-75{width:calc(var(--spacing) * 75);height:calc(var(--spacing) * 75)}.size-\[3px\]{width:3px;height:3px}.size-full{width:100%;height:100%}.h-0{height:0}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-9\.5{height:calc(var(--spacing) * 9.5)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-13{height:calc(var(--spacing) * 13)}.h-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-21{height:calc(var(--spacing) * 21)}.h-24{height:calc(var(--spacing) * 24)}.h-30{height:calc(var(--spacing) * 30)}.h-32{height:calc(var(--spacing) * 32)}.h-40{height:calc(var(--spacing) * 40)}.h-44{height:calc(var(--spacing) * 44)}.h-56{height:calc(var(--spacing) * 56)}.h-60{height:calc(var(--spacing) * 60)}.h-62{height:calc(var(--spacing) * 62)}.h-64{height:calc(var(--spacing) * 64)}.h-\[80vh\]{height:80vh}.h-\[90vh\]{height:90vh}.h-\[148px\]{height:148px}.h-\[520px\]{height:520px}.h-\[560px\]{height:560px}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-24{max-height:calc(var(--spacing) * 24)}.max-h-28{max-height:calc(var(--spacing) * 28)}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-75{max-height:calc(var(--spacing) * 75)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[7\.5rem\]{max-height:7.5rem}.max-h-\[45\%\]{max-height:45%}.max-h-\[70\%\]{max-height:70%}.max-h-\[90vh\]{max-height:90vh}.max-h-\[200px\]{max-height:200px}.max-h-\[240px\]{max-height:240px}.max-h-\[300px\]{max-height:300px}.max-h-\[380px\]{max-height:380px}.max-h-\[740px\]{max-height:740px}.max-h-\[calc\(100vh-4rem\)\]{max-height:calc(100vh - 4rem)}.max-h-\[min\(50vh\,420px\)\]{max-height:min(50vh,420px)}.max-h-\[min\(60vh\,520px\)\]{max-height:min(60vh,520px)}.max-h-\[min\(76vh\,760px\)\]{max-height:min(76vh,760px)}.max-h-full{max-height:100%}.\[min-height\:50px\]{min-height:50px}.min-h-0{min-height:0}.min-h-5{min-height:calc(var(--spacing) * 5)}.min-h-5\.5{min-height:calc(var(--spacing) * 5.5)}.min-h-6{min-height:calc(var(--spacing) * 6)}.min-h-7{min-height:calc(var(--spacing) * 7)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-13{min-height:calc(var(--spacing) * 13)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-20{min-height:calc(var(--spacing) * 20)}.min-h-25{min-height:calc(var(--spacing) * 25)}.min-h-36{min-height:calc(var(--spacing) * 36)}.min-h-40{min-height:calc(var(--spacing) * 40)}.min-h-50{min-height:calc(var(--spacing) * 50)}.min-h-52{min-height:calc(var(--spacing) * 52)}.min-h-80{min-height:calc(var(--spacing) * 80)}.min-h-\[50px\]{min-height:50px}.min-h-\[320px\]{min-height:320px}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-\(--radix-popover-trigger-width\){width:var(--radix-popover-trigger-width)}.w-0{width:0}.w-0\.5{width:calc(var(--spacing) * .5)}.w-1\/2{width:50%}.w-1\/3{width:33.3333%}.w-1\/4{width:25%}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-2\/3{width:66.6667%}.w-3{width:calc(var(--spacing) * 3)}.w-3\/4{width:75%}.w-3\/5{width:60%}.w-4{width:calc(var(--spacing) * 4)}.w-4\/5{width:80%}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-9{width:calc(var(--spacing) * 9)}.w-12{width:calc(var(--spacing) * 12)}.w-15{width:calc(var(--spacing) * 15)}.w-16{width:calc(var(--spacing) * 16)}.w-18{width:calc(var(--spacing) * 18)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-30{width:calc(var(--spacing) * 30)}.w-32{width:calc(var(--spacing) * 32)}.w-36{width:calc(var(--spacing) * 36)}.w-40{width:calc(var(--spacing) * 40)}.w-44{width:calc(var(--spacing) * 44)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-55{width:calc(var(--spacing) * 55)}.w-56{width:calc(var(--spacing) * 56)}.w-60{width:calc(var(--spacing) * 60)}.w-64{width:calc(var(--spacing) * 64)}.w-70{width:calc(var(--spacing) * 70)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-90{width:calc(var(--spacing) * 90)}.w-100{width:calc(var(--spacing) * 100)}.w-125{width:calc(var(--spacing) * 125)}.w-150{width:calc(var(--spacing) * 150)}.w-160{width:calc(var(--spacing) * 160)}.w-\[1ch\]{width:1ch}.w-\[5ch\]{width:5ch}.w-\[6ch\]{width:6ch}.w-\[32rem\]{width:32rem}.w-\[70px\]{width:70px}.w-\[380px\]{width:380px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.w-screen{width:100vw}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-32{max-width:calc(var(--spacing) * 32)}.max-w-40{max-width:calc(var(--spacing) * 40)}.max-w-45{max-width:calc(var(--spacing) * 45)}.max-w-64{max-width:calc(var(--spacing) * 64)}.max-w-65{max-width:calc(var(--spacing) * 65)}.max-w-72{max-width:calc(var(--spacing) * 72)}.max-w-80{max-width:calc(var(--spacing) * 80)}.max-w-96{max-width:calc(var(--spacing) * 96)}.max-w-100{max-width:calc(var(--spacing) * 100)}.max-w-110{max-width:calc(var(--spacing) * 110)}.max-w-120{max-width:calc(var(--spacing) * 120)}.max-w-140{max-width:calc(var(--spacing) * 140)}.max-w-150{max-width:calc(var(--spacing) * 150)}.max-w-160{max-width:calc(var(--spacing) * 160)}.max-w-200{max-width:calc(var(--spacing) * 200)}.max-w-\[45\%\]{max-width:45%}.max-w-\[46rem\]{max-width:46rem}.max-w-\[60\%\]{max-width:60%}.max-w-\[75\%\]{max-width:75%}.max-w-\[90vw\]{max-width:90vw}.max-w-\[92\%\]{max-width:92%}.max-w-\[380px\]{max-width:380px}.max-w-\[420px\]{max-width:420px}.max-w-\[480px\]{max-width:480px}.max-w-\[600px\]{max-width:600px}.max-w-\[700px\]{max-width:700px}.max-w-\[720px\]{max-width:720px}.max-w-\[900px\]{max-width:900px}.max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.max-w-\[calc\(100vw-4rem\)\]{max-width:calc(100vw - 4rem)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-\(--radix-select-trigger-width\){min-width:var(--radix-select-trigger-width)}.min-w-0{min-width:0}.min-w-2{min-width:calc(var(--spacing) * 2)}.min-w-4{min-width:calc(var(--spacing) * 4)}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-10{min-width:calc(var(--spacing) * 10)}.min-w-11{min-width:calc(var(--spacing) * 11)}.min-w-14{min-width:calc(var(--spacing) * 14)}.min-w-16{min-width:calc(var(--spacing) * 16)}.min-w-20{min-width:calc(var(--spacing) * 20)}.min-w-24{min-width:calc(var(--spacing) * 24)}.min-w-25{min-width:calc(var(--spacing) * 25)}.min-w-32{min-width:calc(var(--spacing) * 32)}.min-w-45{min-width:calc(var(--spacing) * 45)}.min-w-50{min-width:calc(var(--spacing) * 50)}.min-w-55{min-width:calc(var(--spacing) * 55)}.min-w-60{min-width:calc(var(--spacing) * 60)}.min-w-80{min-width:calc(var(--spacing) * 80)}.min-w-\[220px\]{min-width:220px}.flex-1{flex:1}.flex-none{flex:none}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.\[transform\:translateZ\(0\)\]{transform:translateZ(0)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\[recording-ping_1\.6s_ease-out_infinite\]{animation:1.6s ease-out infinite recording-ping}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-pulse{animation:var(--animate-pulse)}.animate-pulse-visible{animation:var(--animate-pulse-visible)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-help{cursor:help}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.\[scrollbar-width\:none\]{scrollbar-width:none}.\[scrollbar-gutter\:stable\]{scrollbar-gutter:stable}.\[scrollbar-gutter\:stable_both-edges\]{scrollbar-gutter:stable both-edges}.list-disc{list-style-type:disc}.\[appearance\:textfield\]{appearance:textfield}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-\[0\.375rem_minmax\(3rem\,11rem\)_minmax\(1\.5rem\,1fr\)_11rem_7\.5rem\]{grid-template-columns:.375rem minmax(3rem,11rem) minmax(1.5rem,1fr) 11rem 7.5rem}.grid-cols-\[10rem_1fr\]{grid-template-columns:10rem 1fr}.grid-cols-\[repeat\(auto-fill\,minmax\(17\.5rem\,1fr\)\)\]{grid-template-columns:repeat(auto-fill,minmax(17.5rem,1fr))}.grid-cols-\[repeat\(auto-fill\,minmax\(150px\,1fr\)\)\]{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.grid-cols-\[repeat\(auto-fill\,minmax\(240px\,1fr\)\)\]{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.grid-cols-\[repeat\(auto-fit\,minmax\(160px\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.grid-cols-\[repeat\(auto-fit\,minmax\(260px\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0{gap:0}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-24{gap:calc(var(--spacing) * 24)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-1{column-gap:var(--spacing)}.gap-x-1\.5{column-gap:calc(var(--spacing) * 1.5)}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1{row-gap:var(--spacing)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-4{row-gap:calc(var(--spacing) * 4)}.self-center{align-self:center}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-\[1px\]{border-radius:1px}.rounded-\[inherit\]{border-radius:inherit}.rounded-frame{border-radius:var(--radius-frame)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xs{border-radius:var(--radius-xs)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x-0{border-inline-style:var(--tw-border-style);border-inline-width:0}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-dotted{--tw-border-style:dotted;border-style:dotted}.border-accent,.border-accent\/20{border-color:var(--color-accent)}@supports (color:color-mix(in lab,red,red)){.border-accent\/20{border-color:color-mix(in oklab,var(--color-accent) 20%,transparent)}}.border-control{border-color:var(--color-control)}.border-danger{border-color:var(--color-danger)}.border-danger-border{border-color:var(--color-danger-border)}.border-hairline{border-color:var(--color-hairline)}.border-info-border{border-color:var(--color-info-border)}.border-ink-dim{border-color:var(--color-ink-dim)}.border-success-border{border-color:var(--color-success-border)}.border-transparent{border-color:#0000}.border-warning{border-color:var(--color-warning)}.border-warning-border{border-color:var(--color-warning-border)}.border-t-accent{border-top-color:var(--color-accent)}.border-t-on-accent{border-top-color:var(--color-on-accent)}.bg-\[color-mix\(in_oklab\,var\(--color-accent-wash\)_80\%\,var\(--color-accent\)\)\]{background-color:var(--color-accent-wash)}@supports (color:color-mix(in lab,red,red)){.bg-\[color-mix\(in_oklab\,var\(--color-accent-wash\)_80\%\,var\(--color-accent\)\)\]{background-color:color-mix(in oklab,var(--color-accent-wash) 80%,var(--color-accent))}}.bg-\[color-mix\(in_oklab\,var\(--color-danger-wash\)_80\%\,var\(--color-danger\)\)\]{background-color:var(--color-danger-wash)}@supports (color:color-mix(in lab,red,red)){.bg-\[color-mix\(in_oklab\,var\(--color-danger-wash\)_80\%\,var\(--color-danger\)\)\]{background-color:color-mix(in oklab,var(--color-danger-wash) 80%,var(--color-danger))}}.bg-accent{background-color:var(--color-accent)}.bg-accent-active{background-color:var(--color-accent-active)}.bg-accent-hover{background-color:var(--color-accent-hover)}.bg-accent-wash{background-color:var(--color-accent-wash)}.bg-canvas{background-color:var(--color-canvas)}.bg-control{background-color:var(--color-control)}.bg-danger{background-color:var(--color-danger)}.bg-danger-wash{background-color:var(--color-danger-wash)}.bg-elevated{background-color:var(--color-elevated)}.bg-hairline{background-color:var(--color-hairline)}.bg-info-wash{background-color:var(--color-info-wash)}.bg-ink{background-color:var(--color-ink)}.bg-ink-dim{background-color:var(--color-ink-dim)}.bg-ink-muted{background-color:var(--color-ink-muted)}.bg-scrim{background-color:var(--color-scrim)}.bg-success{background-color:var(--color-success)}.bg-success-wash{background-color:var(--color-success-wash)}.bg-sunken{background-color:var(--color-sunken)}.bg-surface,.bg-surface\/85{background-color:var(--color-surface)}@supports (color:color-mix(in lab,red,red)){.bg-surface\/85{background-color:color-mix(in oklab,var(--color-surface) 85%,transparent)}}.bg-transparent{background-color:#0000}.bg-warning{background-color:var(--color-warning)}.bg-warning-wash{background-color:var(--color-warning-wash)}.bg-\[linear-gradient\(to_right\,var\(--color-accent\)_0_var\(--fill\)\,var\(--color-sunken\)_var\(--fill\)_100\%\)\]{background-image:linear-gradient(to right,var(--color-accent) 0 var(--fill),var(--color-sunken) var(--fill) 100%)}.\[mask-image\:linear-gradient\(\.\.\.\)\]{-webkit-mask-image:linear-gradient(...);mask-image:linear-gradient(...)}.\[mask-image\:linear-gradient\(to_bottom\,black_calc\(100\%-20px\)\,transparent\)\]{-webkit-mask-image:linear-gradient(#000 calc(100% - 20px),#0000);mask-image:linear-gradient(#000 calc(100% - 20px),#0000)}.\[mask-image\:linear-gradient\(to_right\,black_calc\(100\%-24px\)\,transparent\)\]{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000)}.bg-\[length\:100\%_6px\]{background-size:100% 6px}.bg-center{background-position:50%}.bg-no-repeat{background-repeat:no-repeat}.fill-accent{fill:var(--color-accent)}.stroke-danger{stroke:var(--color-danger)}.stroke-hairline{stroke:var(--color-hairline)}.stroke-info{stroke:var(--color-info)}.stroke-sunken{stroke:var(--color-sunken)}.stroke-warning{stroke:var(--color-warning)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-10{padding:calc(var(--spacing) * 10)}.p-px{padding:1px}.px-0{padding-inline:0}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-7{padding-inline:calc(var(--spacing) * 7)}.py-0{padding-block:0}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-16{padding-block:calc(var(--spacing) * 16)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:var(--spacing)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-0\.5{padding-right:calc(var(--spacing) * .5)}.pr-1{padding-right:var(--spacing)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-9{padding-right:calc(var(--spacing) * 9)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-12{padding-right:calc(var(--spacing) * 12)}.pr-18{padding-right:calc(var(--spacing) * 18)}.pr-20{padding-right:calc(var(--spacing) * 20)}.pr-28{padding-right:calc(var(--spacing) * 28)}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-1{padding-bottom:var(--spacing)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-64{padding-bottom:calc(var(--spacing) * 64)}.pb-96{padding-bottom:calc(var(--spacing) * 96)}.pl-1\.5{padding-left:calc(var(--spacing) * 1.5)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-7{padding-left:calc(var(--spacing) * 7)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-9{padding-left:calc(var(--spacing) * 9)}.pl-10{padding-left:calc(var(--spacing) * 10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-display{font-size:var(--text-display);line-height:var(--tw-leading,var(--text-display--line-height));letter-spacing:var(--tw-tracking,var(--text-display--letter-spacing));font-weight:var(--tw-font-weight,var(--text-display--font-weight))}.text-heading{font-size:var(--text-heading);line-height:var(--tw-leading,var(--text-heading--line-height));letter-spacing:var(--tw-tracking,var(--text-heading--letter-spacing));font-weight:var(--tw-font-weight,var(--text-heading--font-weight))}.text-title{font-size:var(--text-title);line-height:var(--tw-leading,var(--text-title--line-height));letter-spacing:var(--tw-tracking,var(--text-title--letter-spacing));font-weight:var(--tw-font-weight,var(--text-title--font-weight))}.text-body{font-size:var(--text-body);line-height:var(--tw-leading,var(--text-body--line-height))}.text-body-sm{font-size:var(--text-body-sm);line-height:var(--tw-leading,var(--text-body-sm--line-height))}.text-meta{font-size:var(--text-meta);line-height:var(--tw-leading,var(--text-meta--line-height))}.text-mono{font-size:var(--text-mono);line-height:var(--tw-leading,var(--text-mono--line-height))}.text-mono-sm{font-size:var(--text-mono-sm);line-height:var(--tw-leading,var(--text-mono-sm--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-balance{text-wrap:balance}.text-pretty{text-wrap:pretty}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.text-ellipsis{text-overflow:ellipsis}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent{color:var(--color-accent)}.text-accent-hover{color:var(--color-accent-hover)}.text-current{color:currentColor}.text-danger{color:var(--color-danger)}.text-info{color:var(--color-info)}.text-ink{color:var(--color-ink)}.text-ink-dim{color:var(--color-ink-dim)}.text-ink-disabled{color:var(--color-ink-disabled)}.text-ink-muted{color:var(--color-ink-muted)}.text-on-accent{color:var(--color-on-accent)}.text-success{color:var(--color-success)}.text-warning{color:var(--color-warning)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.decoration-2{text-decoration-thickness:2px}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.accent-accent{accent-color:var(--color-accent)}.accent-on-accent{accent-color:var(--color-on-accent)}.opacity-0{opacity:0}.opacity-60{opacity:.6}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-overlay{--tw-shadow:var(--lo-overlay-shadow);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline,.outline-1{outline-style:var(--tw-outline-style);outline-width:1px}.outline-2{outline-style:var(--tw-outline-style);outline-width:2px}.-outline-offset-1{outline-offset:-1px}.outline-offset-1{outline-offset:1px}.outline-offset-2{outline-offset:2px}.outline-accent{outline-color:var(--color-accent)}.outline-control{outline-color:var(--color-control)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a)) drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[opacity\,background-color\]{transition-property:opacity,background-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[opacity\,visibility\]{transition-property:opacity,visibility;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-base{--tw-duration:var(--transition-duration-base);transition-duration:var(--transition-duration-base)}.duration-fast{--tw-duration:var(--transition-duration-fast);transition-duration:var(--transition-duration-fast)}.duration-instant{--tw-duration:var(--transition-duration-instant);transition-duration:var(--transition-duration-instant)}.duration-slow{--tw-duration:var(--transition-duration-slow);transition-duration:var(--transition-duration-slow)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.ease-out-quart{--tw-ease:var(--ease-out-quart);transition-timing-function:var(--ease-out-quart)}.will-change-\[scroll-position\]{will-change:scroll-position}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.outline-none\!{--tw-outline-style:none!important;outline-style:none!important}.outline-solid{--tw-outline-style:solid;outline-style:solid}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}.\[--md-ink\:var\(--lo-danger\)\]{--md-ink:var(--lo-danger)}.\[--md-ink\:var\(--lo-ink-muted\)\]{--md-ink:var(--lo-ink-muted)}.\[-ms-overflow-style\:none\]{-ms-overflow-style:none}.\[overflow-anchor\:auto\]{overflow-anchor:auto}.fade-in{--tw-enter-opacity:0}.paused{animation-play-state:paused}.running{animation-play-state:running}.group-focus-within\:pointer-events-auto:is(:where(.group):focus-within *){pointer-events:auto}.group-focus-within\:opacity-0:is(:where(.group):focus-within *){opacity:0}.group-focus-within\:opacity-100:is(:where(.group):focus-within *){opacity:1}.group-focus-within\:duration-fast:is(:where(.group):focus-within *){--tw-duration:var(--transition-duration-fast);transition-duration:var(--transition-duration-fast)}@media (hover:hover){.group-hover\:pointer-events-auto:is(:where(.group):hover *){pointer-events:auto}.group-hover\:visible:is(:where(.group):hover *){visibility:visible}.group-hover\:text-ink:is(:where(.group):hover *){color:var(--color-ink)}.group-hover\:opacity-0:is(:where(.group):hover *){opacity:0}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\:delay-\[1500ms\]:is(:where(.group):hover *){transition-delay:1.5s}.group-hover\:duration-fast:is(:where(.group):hover *){--tw-duration:var(--transition-duration-fast);transition-duration:var(--transition-duration-fast)}.group-hover\:delay-\[1500ms\]:is(:where(.group):hover *){--tw-animation-delay:1.5s;animation-delay:1.5s}}.peer-disabled\:text-ink-disabled:is(:where(.peer):disabled~*){color:var(--color-ink-disabled)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-ink::file-selector-button{color:var(--color-ink)}.placeholder\:text-ink-dim::placeholder{color:var(--color-ink-dim)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.hover\:border-control:hover{border-color:var(--color-control)}.hover\:bg-accent-hover:hover{background-color:var(--color-accent-hover)}.hover\:bg-accent-wash:hover{background-color:var(--color-accent-wash)}.hover\:bg-danger-wash:hover{background-color:var(--color-danger-wash)}.hover\:bg-elevated:hover{background-color:var(--color-elevated)}.hover\:bg-success-wash:hover{background-color:var(--color-success-wash)}.hover\:bg-surface:hover{background-color:var(--color-surface)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:text-accent:hover{color:var(--color-accent)}.hover\:text-accent-hover:hover{color:var(--color-accent-hover)}.hover\:text-danger:hover{color:var(--color-danger)}.hover\:text-ink:hover{color:var(--color-ink)}.hover\:text-ink-disabled:hover{color:var(--color-ink-disabled)}.hover\:text-ink-muted:hover{color:var(--color-ink-muted)}.hover\:text-success:hover{color:var(--color-success)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:bg-danger-wash:focus{background-color:var(--color-danger-wash)}.focus\:text-danger:focus{color:var(--color-danger)}.focus-visible\:opacity-100:focus-visible{opacity:1}.focus-visible\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-1\!:focus-visible{outline-offset:1px!important}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-offset-\[-2px\]\!:focus-visible{outline-offset:-2px!important}.focus-visible\:outline-accent:focus-visible{outline-color:var(--color-accent)}.active\:border-accent:active{border-color:var(--color-accent)}.active\:border-danger:active{border-color:var(--color-danger)}.active\:bg-\[color-mix\(in_oklab\,var\(--color-accent-wash\)_80\%\,var\(--color-accent\)\)\]:active{background-color:var(--color-accent-wash)}@supports (color:color-mix(in lab,red,red)){.active\:bg-\[color-mix\(in_oklab\,var\(--color-accent-wash\)_80\%\,var\(--color-accent\)\)\]:active{background-color:color-mix(in oklab,var(--color-accent-wash) 80%,var(--color-accent))}}.active\:bg-\[color-mix\(in_oklab\,var\(--color-danger-wash\)_80\%\,var\(--color-danger\)\)\]:active{background-color:var(--color-danger-wash)}@supports (color:color-mix(in lab,red,red)){.active\:bg-\[color-mix\(in_oklab\,var\(--color-danger-wash\)_80\%\,var\(--color-danger\)\)\]:active{background-color:color-mix(in oklab,var(--color-danger-wash) 80%,var(--color-danger))}}.active\:bg-accent-active:active{background-color:var(--color-accent-active)}.active\:bg-accent-wash:active{background-color:var(--color-accent-wash)}.active\:bg-sunken:active{background-color:var(--color-sunken)}.active\:text-accent:active{color:var(--color-accent)}.active\:text-ink:active{color:var(--color-ink)}.active\:underline:active{text-decoration-line:underline}.active\:decoration-2:active{text-decoration-thickness:2px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-default:disabled{cursor:default}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:resize-none:disabled{resize:none}.disabled\:border-hairline:disabled{border-color:var(--color-hairline)}.disabled\:bg-sunken:disabled{background-color:var(--color-sunken)}.disabled\:bg-transparent:disabled{background-color:#0000}.disabled\:bg-none:disabled{background-image:none}.disabled\:text-ink-disabled:disabled{color:var(--color-ink-disabled)}.disabled\:no-underline:disabled{text-decoration-line:none}.disabled\:accent-ink-disabled:disabled{accent-color:var(--color-ink-disabled)}.disabled\:placeholder\:text-ink-disabled:disabled::placeholder{color:var(--color-ink-disabled)}@media (hover:hover){.disabled\:hover\:bg-transparent:disabled:hover{background-color:#0000}}.has-\[input\:focus-visible\]\:outline-2:has(:is(input:focus-visible)){outline-style:var(--tw-outline-style);outline-width:2px}.has-\[input\:focus-visible\]\:outline-offset-2:has(:is(input:focus-visible)){outline-offset:2px}.has-\[input\:focus-visible\]\:outline-accent:has(:is(input:focus-visible)){outline-color:var(--color-accent)}.has-\[input\:focus-visible\]\:outline-solid:has(:is(input:focus-visible)){--tw-outline-style:solid;outline-style:solid}.has-\[textarea\:focus-visible\]\:outline-2:has(:is(textarea:focus-visible)){outline-style:var(--tw-outline-style);outline-width:2px}.has-\[textarea\:focus-visible\]\:outline-offset-2:has(:is(textarea:focus-visible)){outline-offset:2px}.has-\[textarea\:focus-visible\]\:outline-accent:has(:is(textarea:focus-visible)){outline-color:var(--color-accent)}.has-\[textarea\:focus-visible\]\:outline-solid:has(:is(textarea:focus-visible)){--tw-outline-style:solid;outline-style:solid}.aria-invalid\:border-danger[aria-invalid=true]{border-color:var(--color-danger)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:border-hairline[data-disabled]{border-color:var(--color-hairline)}.data-\[disabled\]\:bg-ink-disabled[data-disabled]{background-color:var(--color-ink-disabled)}.data-\[disabled\]\:bg-sunken[data-disabled]{background-color:var(--color-sunken)}.data-\[disabled\]\:text-ink-disabled[data-disabled]{color:var(--color-ink-disabled)}.data-\[highlighted\]\:bg-accent-wash[data-highlighted]{background-color:var(--color-accent-wash)}.data-\[highlighted\]\:bg-danger-wash[data-highlighted]{background-color:var(--color-danger-wash)}.data-\[highlighted\]\:bg-warning-wash[data-highlighted]{background-color:var(--color-warning-wash)}.data-\[placeholder\]\:not-data-\[disabled\]\:text-ink-dim[data-placeholder]:not([data-disabled]){color:var(--color-ink-dim)}.data-\[side\=bottom\]\:mt-1\.5[data-side=bottom]{margin-top:calc(var(--spacing) * 1.5)}.data-\[side\=top\]\:mb-1\.5[data-side=top]{margin-bottom:calc(var(--spacing) * 1.5)}.data-\[state\=active\]\:bg-surface[data-state=active]{background-color:var(--color-surface)}.data-\[state\=active\]\:text-ink[data-state=active]{color:var(--color-ink)}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:not-data-\[disabled\]\:border-accent[data-state=checked]:not([data-disabled]){border-color:var(--color-accent)}.data-\[state\=checked\]\:not-data-\[disabled\]\:bg-accent[data-state=checked]:not([data-disabled]){background-color:var(--color-accent)}.data-\[state\=checked\]\:not-data-\[disabled\]\:bg-on-accent[data-state=checked]:not([data-disabled]){background-color:var(--color-on-accent)}.data-\[state\=indeterminate\]\:not-data-\[disabled\]\:border-accent[data-state=indeterminate]:not([data-disabled]){border-color:var(--color-accent)}.data-\[state\=indeterminate\]\:not-data-\[disabled\]\:bg-accent[data-state=indeterminate]:not([data-disabled]){background-color:var(--color-accent)}.data-\[state\=open\]\:bg-accent-wash[data-state=open]{background-color:var(--color-accent-wash)}@media (prefers-reduced-motion:no-preference){.motion-safe\:animate-spin{animation:var(--animate-spin)}}@media (min-width:1040px){.min-\[1040px\]\:w-55{width:calc(var(--spacing) * 55)}}@media (min-width:40rem){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:max-w-\[90\%\]{max-width:90%}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}.sm\:self-center{align-self:center}.sm\:p-6{padding:calc(var(--spacing) * 6)}}@media (min-width:48rem){.md\:block{display:block}.md\:max-w-\[900px\]{max-width:900px}.md\:p-8{padding:calc(var(--spacing) * 8)}}@media (min-width:64rem){.lg\:hidden{display:none}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.lg\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.lg\:p-8{padding:calc(var(--spacing) * 8)}.lg\:p-12{padding:calc(var(--spacing) * 12)}}@container not (min-width:520px){.\@max-\[520px\]\:hidden{display:none}}@container olderhistory not (min-width:260px){.\@max-\[260px\]\/olderhistory\:hidden{display:none}}@container chatcol not (min-width:240px){.\@max-\[240px\]\/chatcol\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.\@max-\[240px\]\/chatcol\:w-11{width:calc(var(--spacing) * 11)}.\@max-\[240px\]\/chatcol\:w-full{width:100%}.\@max-\[240px\]\/chatcol\:min-w-11{min-width:calc(var(--spacing) * 11)}.\@max-\[240px\]\/chatcol\:flex-none{flex:none}.\@max-\[240px\]\/chatcol\:flex-col{flex-direction:column}.\@max-\[240px\]\/chatcol\:justify-center{justify-content:center}.\@max-\[240px\]\/chatcol\:px-0{padding-inline:0}}@container olderhistory (min-width:260px){.\@min-\[260px\]\/olderhistory\:hidden{display:none}}@container (min-width:400px){.\@min-\[400px\]\:hidden{display:none}.\@min-\[400px\]\:inline-flex{display:inline-flex}}@container (min-width:560px){.\@min-\[560px\]\:px-8{padding-inline:calc(var(--spacing) * 8)}.\@min-\[560px\]\:py-8{padding-block:calc(var(--spacing) * 8)}}@container chatcol (min-width:620px){.\@min-\[620px\]\/chatcol\:inline{display:inline}}@container chatcol (min-width:750px){.\@min-\[750px\]\/chatcol\:order-2{order:2}.\@min-\[750px\]\/chatcol\:order-3{order:3}.\@min-\[750px\]\/chatcol\:mx-auto{margin-inline:auto}.\@min-\[750px\]\/chatcol\:contents{display:contents}.\@min-\[750px\]\/chatcol\:max-w-\[900px\]{max-width:900px}.\@min-\[750px\]\/chatcol\:shrink-0{flex-shrink:0}.\@min-\[750px\]\/chatcol\:basis-auto{flex-basis:auto}.\@min-\[750px\]\/chatcol\:flex-nowrap{flex-wrap:nowrap}@container chatcol not (min-width:860px){.\@min-\[750px\]\/chatcol\:\@max-\[860px\]\/chatcol\:hidden{display:none}}}@container toolrow (min-width:34rem){.\@\[34rem\]\/toolrow\:flex{display:flex}}.\[\&_\.pointer-events-none\.opacity-0\]\:pointer-events-auto .pointer-events-none.opacity-0{pointer-events:auto}.\[\&_\.pointer-events-none\.opacity-0\]\:opacity-100 .pointer-events-none.opacity-0{opacity:1}.\[\&_\.react-syntax-highlighter-code-block_\*\]\:font-mono\! .react-syntax-highlighter-code-block *{font-family:var(--font-mono)!important}.\[\&_\.recharts-active-dot_circle\]\:fill-accent .recharts-active-dot circle,.\[\&_\.recharts-bar-rectangle\]\:fill-accent .recharts-bar-rectangle{fill:var(--color-accent)}.\[\&_\.recharts-cartesian-axis-tick-value\]\:fill-ink-dim .recharts-cartesian-axis-tick-value{fill:var(--color-ink-dim)}.\[\&_\.recharts-cartesian-axis-tick-value\]\:text-meta .recharts-cartesian-axis-tick-value{font-size:var(--text-meta);line-height:var(--tw-leading,var(--text-meta--line-height))}.\[\&_\.recharts-cartesian-grid_line\]\:stroke-hairline .recharts-cartesian-grid line{stroke:var(--color-hairline)}.\[\&_\.recharts-line-curve\]\:stroke-accent .recharts-line-curve{stroke:var(--color-accent)}.\[\&_\.recharts-tooltip-cursor\]\:stroke-hairline .recharts-tooltip-cursor{stroke:var(--color-hairline)}.\[\&_\:is\(h1\,h2\,h3\,h4\,h5\,h6\)\]\:mt-3 :is(h1,h2,h3,h4,h5,h6){margin-top:calc(var(--spacing) * 3)}.\[\&_\:is\(h1\,h2\,h3\,h4\,h5\,h6\)\]\:mt-4 :is(h1,h2,h3,h4,h5,h6){margin-top:calc(var(--spacing) * 4)}.\[\&_\:is\(h1\,h2\,h3\,h4\,h5\,h6\)\]\:mb-1 :is(h1,h2,h3,h4,h5,h6){margin-bottom:var(--spacing)}.\[\&_\:is\(h1\,h2\,h3\,h4\,h5\,h6\)\]\:mb-2 :is(h1,h2,h3,h4,h5,h6){margin-bottom:calc(var(--spacing) * 2)}.\[\&_\:is\(h1\,h2\,h3\,h4\,h5\,h6\)\]\:font-semibold :is(h1,h2,h3,h4,h5,h6){--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.\[\&_\:is\(h1\,h2\,h3\,h4\,h5\,h6\)\]\:text-ink :is(h1,h2,h3,h4,h5,h6){color:var(--color-ink)}.\[\&_\:is\(h1\,h2\,h3\,h4\,h5\,h6\)\:first-child\]\:mt-0 :is(h1,h2,h3,h4,h5,h6):first-child{margin-top:0}.\[\&_\:is\(th\,td\)\]\:border-b :is(th,td){border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_\:is\(th\,td\)\]\:border-hairline :is(th,td){border-color:var(--color-hairline)}.\[\&_\:is\(th\,td\)\]\:py-1\.5 :is(th,td){padding-block:calc(var(--spacing) * 1.5)}.\[\&_\:is\(th\,td\)\]\:pr-4 :is(th,td){padding-right:calc(var(--spacing) * 4)}.\[\&_\:is\(th\,td\)\]\:text-left :is(th,td){text-align:left}.\[\&_\:is\(th\,td\)\:last-child\]\:pr-0 :is(th,td):last-child{padding-right:0}.\[\&_\:is\(ul\,ol\)\]\:my-1\.5 :is(ul,ol){margin-block:calc(var(--spacing) * 1.5)}.\[\&_\:is\(ul\,ol\)\]\:my-2 :is(ul,ol){margin-block:calc(var(--spacing) * 2)}.\[\&_\:is\(ul\,ol\)\]\:pl-5 :is(ul,ol){padding-left:calc(var(--spacing) * 5)}.\[\&_\:is\(ul\,ol\)\]\:pl-6 :is(ul,ol){padding-left:calc(var(--spacing) * 6)}.\[\&_\[contenteditable\]\]\:min-h-50 [contenteditable]{min-height:calc(var(--spacing) * 50)}.\[\&_\[contenteditable\]\]\:text-body [contenteditable]{font-size:var(--text-body);line-height:var(--tw-leading,var(--text-body--line-height))}.\[\&_\[contenteditable\]\]\:leading-relaxed [contenteditable]{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.\[\&_\[contenteditable\]\]\:text-ink [contenteditable]{color:var(--color-ink)}.\[\&_\[contenteditable\]\]\:outline-none [contenteditable]{--tw-outline-style:none;outline-style:none}.\[\&_\[data-alert-mark\]\]\:text-danger [data-alert-mark]{color:var(--color-danger)}.\[\&_\[data-alert-mark\]\]\:text-info [data-alert-mark]{color:var(--color-info)}.\[\&_\[data-alert-mark\]\]\:text-ink [data-alert-mark]{color:var(--color-ink)}.\[\&_\[data-alert-mark\]\]\:text-success [data-alert-mark]{color:var(--color-success)}.\[\&_\[data-alert-mark\]\]\:text-warning [data-alert-mark]{color:var(--color-warning)}.\[\&_a\]\:text-accent a{color:var(--color-accent)}.\[\&_a\]\:underline a{text-decoration-line:underline}.\[\&_a\]\:underline-offset-4 a{text-underline-offset:4px}@media (hover:hover){.\[\&_a\]\:hover\:underline a:hover,.hover\:\[\&_a\]\:underline:hover a{text-decoration-line:underline}}.\[\&_a\:hover\]\:text-accent-hover a:hover{color:var(--color-accent-hover)}.\[\&_blockquote\]\:my-3 blockquote{margin-block:calc(var(--spacing) * 3)}.\[\&_blockquote\]\:rounded-r-xs blockquote{border-top-right-radius:var(--radius-xs);border-bottom-right-radius:var(--radius-xs)}.\[\&_blockquote\]\:border-l-2 blockquote{border-left-style:var(--tw-border-style);border-left-width:2px}.\[\&_blockquote\]\:border-hairline blockquote{border-color:var(--color-hairline)}.\[\&_blockquote\]\:bg-sunken blockquote{background-color:var(--color-sunken)}.\[\&_blockquote\]\:px-3 blockquote{padding-inline:calc(var(--spacing) * 3)}.\[\&_blockquote\]\:py-2 blockquote{padding-block:calc(var(--spacing) * 2)}.\[\&_blockquote\]\:text-ink-muted blockquote{color:var(--color-ink-muted)}.\[\&_code\]\:rounded-xs code{border-radius:var(--radius-xs)}.\[\&_code\]\:bg-sunken code{background-color:var(--color-sunken)}.\[\&_code\]\:bg-none code{background-image:none}.\[\&_code\]\:p-0\.5 code{padding:calc(var(--spacing) * .5)}.\[\&_code\]\:px-1 code{padding-inline:var(--spacing)}.\[\&_code\]\:font-mono code{font-family:var(--font-mono)}.\[\&_code\]\:text-mono-sm code{font-size:var(--text-mono-sm);line-height:var(--tw-leading,var(--text-mono-sm--line-height))}.\[\&_h1\]\:text-heading h1{font-size:var(--text-heading);line-height:var(--tw-leading,var(--text-heading--line-height));letter-spacing:var(--tw-tracking,var(--text-heading--letter-spacing));font-weight:var(--tw-font-weight,var(--text-heading--font-weight))}.\[\&_h1\]\:text-title h1{font-size:var(--text-title);line-height:var(--tw-leading,var(--text-title--line-height));letter-spacing:var(--tw-tracking,var(--text-title--letter-spacing));font-weight:var(--tw-font-weight,var(--text-title--font-weight))}.\[\&_h2\]\:text-heading h2,.\[\&_h3\]\:text-heading h3{font-size:var(--text-heading);line-height:var(--tw-leading,var(--text-heading--line-height));letter-spacing:var(--tw-tracking,var(--text-heading--letter-spacing));font-weight:var(--tw-font-weight,var(--text-heading--font-weight))}.\[\&_h3\]\:text-body h3,.\[\&_h4\]\:text-body h4,.\[\&_h5\]\:text-body h5{font-size:var(--text-body);line-height:var(--tw-leading,var(--text-body--line-height))}.\[\&_h5\]\:text-body-sm h5,.\[\&_h6\]\:text-body-sm h6{font-size:var(--text-body-sm);line-height:var(--tw-leading,var(--text-body-sm--line-height))}.\[\&_img\]\:my-2 img{margin-block:calc(var(--spacing) * 2)}.\[\&_img\]\:h-auto img{height:auto}.\[\&_img\]\:max-w-full img{max-width:100%}.\[\&_img\]\:rounded-xs img{border-radius:var(--radius-xs)}.\[\&_li\]\:my-0\.5 li{margin-block:calc(var(--spacing) * .5)}.\[\&_li\]\:my-1 li{margin-block:var(--spacing)}.\[\&_li\.task-list-item\]\:list-none li.task-list-item{list-style-type:none}.\[\&_ol_li\]\:list-decimal ol li{list-style-type:decimal}.\[\&_p\]\:m-0 p{margin:0}.\[\&_p\]\:my-1\.5 p{margin-block:calc(var(--spacing) * 1.5)}.\[\&_p\]\:my-2 p{margin-block:calc(var(--spacing) * 2)}.\[\&_p\:first-child\]\:mt-0 p:first-child{margin-top:0}.\[\&_p\:last-child\]\:mb-0 p:last-child{margin-bottom:0}.\[\&_pre\]\:my-3 pre{margin-block:calc(var(--spacing) * 3)}.\[\&_pre\]\:overflow-auto pre{overflow:auto}.\[\&_pre\]\:rounded-sm pre{border-radius:var(--radius-sm)}.\[\&_pre\]\:bg-sunken pre{background-color:var(--color-sunken)}.\[\&_pre\]\:bg-none pre{background-image:none}.\[\&_pre\]\:p-3 pre{padding:calc(var(--spacing) * 3)}.\[\&_pre_code\]\:bg-transparent pre code{background-color:#0000}.\[\&_pre_code\]\:p-0 pre code{padding:0}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-2\.5 svg{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.\[\&_svg\]\:size-3 svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\]\:size-3\.5 svg{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\]\:size-5 svg{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.\[\&_svg\]\:h-auto svg{height:auto}.\[\&_svg\]\:max-h-full svg{max-height:100%}.\[\&_svg\]\:min-h-100 svg{min-height:calc(var(--spacing) * 100)}.\[\&_svg\]\:w-auto svg{width:auto}.\[\&_svg\]\:max-w-full svg{max-width:100%}.\[\&_svg\]\:max-w-none svg{max-width:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\]\:bg-transparent svg{background-color:#0000}.\[\&_table\]\:my-3 table{margin-block:calc(var(--spacing) * 3)}.\[\&_table\]\:w-full table{width:100%}.\[\&_table\]\:border-collapse table{border-collapse:collapse}.\[\&_tbody_tr\:last-child_td\]\:border-b-0 tbody tr:last-child td{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.\[\&_th\]\:font-semibold th{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.\[\&_th\]\:text-ink-muted th{color:var(--color-ink-muted)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&_ul_li\]\:list-disc ul li{list-style-type:disc}.\[\&\:\:-webkit-inner-spin-button\]\:appearance-none::-webkit-inner-spin-button{appearance:none}.\[\&\:\:-webkit-outer-spin-button\]\:appearance-none::-webkit-outer-spin-button{appearance:none}.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}.\[\&\:\:-webkit-slider-thumb\]\:size-4::-webkit-slider-thumb{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\:\:-webkit-slider-thumb\]\:appearance-none::-webkit-slider-thumb{appearance:none}.\[\&\:\:-webkit-slider-thumb\]\:rounded-full::-webkit-slider-thumb{border-radius:3.40282e38px}.\[\&\:\:-webkit-slider-thumb\]\:bg-accent::-webkit-slider-thumb{background-color:var(--color-accent)}.\[\&\:\:-webkit-slider-thumb\]\:transition-colors::-webkit-slider-thumb{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.\[\&\:\:-webkit-slider-thumb\]\:duration-fast::-webkit-slider-thumb{--tw-duration:var(--transition-duration-fast);transition-duration:var(--transition-duration-fast)}.\[\&\:\:-webkit-slider-thumb\]\:ease-out-quart::-webkit-slider-thumb{--tw-ease:var(--ease-out-quart);transition-timing-function:var(--ease-out-quart)}@media (hover:hover){.\[\&\:\:-webkit-slider-thumb\]\:hover\:bg-accent-hover::-webkit-slider-thumb:hover{background-color:var(--color-accent-hover)}}.disabled\:\[\&\:\:-webkit-slider-thumb\]\:bg-ink-disabled:disabled::-webkit-slider-thumb{background-color:var(--color-ink-disabled)}.\[\&\:\:highlight\(current-find-highlight\)\]\:bg-accent::highlight(current-find-highlight){background-color:var(--color-accent)}.\[\&\:\:highlight\(current-find-highlight\)\]\:text-on-accent::highlight(current-find-highlight){color:var(--color-on-accent)}.\[\&\:\:highlight\(find-highlight\)\]\:bg-accent-wash::highlight(find-highlight){background-color:var(--color-accent-wash)}.\[\&\:\:highlight\(find-highlight\)\]\:text-ink::highlight(find-highlight){color:var(--color-ink)}.\[\&\>span\]\:animate-\[waveform-bar_1\.2s_infinite_ease-in-out\]>span{animation:1.2s ease-in-out infinite waveform-bar}.\[\&\>span\]\:truncate>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}[data-theme=dracula]{color-scheme:dark;--lo-canvas:#282a36;--lo-surface:#2f3146;--lo-elevated:#3d4055;--lo-sunken:#21222c;--lo-ink:#f8f8f2;--lo-ink-muted:#bfbfbf;--lo-ink-dim:#a3acc9;--lo-ink-disabled:#6272a4;--lo-hairline:#4a4c5e;--lo-border-control:#7d8bb4;--lo-accent:#bd93f9;--lo-accent-hover:#d1aeff;--lo-accent-active:#a884de;--lo-accent-wash:#3a374d;--lo-on-accent:#282a36;--lo-success:#50fa7b;--lo-success-wash:#2d433e;--lo-success-border:#3e9c5c;--lo-warning:#ffb86c;--lo-warning-wash:#423b3c;--lo-warning-border:#9e7854;--lo-danger:#ff7171;--lo-danger-wash:#422f3a;--lo-danger-border:#be6368;--lo-info:#8be9fd;--lo-info-wash:#34414e;--lo-info-border:#5e93a3;--lo-overlay-shadow:0 12px 32px -12px #0d0e14a6;--lo-scrim:#0d0e1499}[data-theme=dune]{color-scheme:dark;--lo-canvas:#0f0d0b;--lo-surface:#1a1714;--lo-elevated:#261e17;--lo-sunken:#050403;--lo-ink:#f8f3ec;--lo-ink-muted:#bfb3a7;--lo-ink-dim:#9e9285;--lo-ink-disabled:#6b6055;--lo-hairline:#3a2b11;--lo-border-control:#8a7d6e;--lo-accent:#ff8c38;--lo-accent-hover:#ffa75c;--lo-accent-active:#e67016;--lo-accent-wash:#2c1c10;--lo-on-accent:#0f0d0b;--lo-success:#a3c46b;--lo-success-wash:#212317;--lo-success-border:#607240;--lo-warning:#e8c15a;--lo-warning-wash:#292314;--lo-warning-border:#867036;--lo-danger:#e5604c;--lo-danger-wash:#291713;--lo-danger-border:#a74a3b;--lo-info:#ff8c38;--lo-info-wash:#2c1c10;--lo-info-border:#985625;--lo-overlay-shadow:0 12px 32px -12px #050403b3;--lo-scrim:#05040399}[data-theme=iceberg]{color-scheme:light;--lo-canvas:#e8e9ec;--lo-surface:#f2f3f6;--lo-elevated:#fdfdff;--lo-sunken:#e1e2e7;--lo-ink:#33374c;--lo-ink-muted:#4a4e64;--lo-ink-dim:#5b5f74;--lo-ink-disabled:#a0a4b8;--lo-hairline:#cbccd2;--lo-border-control:#787d97;--lo-accent:#2d539e;--lo-accent-hover:#1e3a7d;--lo-accent-active:#162e63;--lo-accent-wash:#d5dae4;--lo-on-accent:#f2f5f9;--lo-success:#4c692d;--lo-success-wash:#dbe0db;--lo-success-border:#718b57;--lo-warning:#8d5229;--lo-warning-wash:#e5ddda;--lo-warning-border:#b87142;--lo-danger:#ab325b;--lo-danger-wash:#e5dae1;--lo-danger-border:#c76286;--lo-info:#316682;--lo-info-wash:#d7dfe5;--lo-info-border:#5289a8;--lo-overlay-shadow:0 12px 32px -12px #262a3f38;--lo-scrim:#262a3f59}[data-theme=localOperatorDark]{color-scheme:dark;--lo-canvas:#16130e;--lo-surface:#1e1a14;--lo-elevated:#282318;--lo-sunken:#0f0c08;--lo-ink:#f1eee6;--lo-ink-muted:#b5afa2;--lo-ink-dim:#918b7d;--lo-ink-disabled:#5f5a4e;--lo-hairline:#353022;--lo-border-control:#837c6d;--lo-accent:#38c96a;--lo-accent-hover:#5ad584;--lo-accent-active:#2bb25c;--lo-accent-wash:#16281d;--lo-on-accent:#16130e;--lo-success:#57c785;--lo-success-wash:#16281d;--lo-success-border:#417557;--lo-warning:#e0b04b;--lo-warning-wash:#2a2213;--lo-warning-border:#857036;--lo-danger:#ef8078;--lo-danger-wash:#2e1b18;--lo-danger-border:#9e5a51;--lo-info:#86b3f2;--lo-info-wash:#192332;--lo-info-border:#5475a2;--lo-overlay-shadow:0 12px 32px -12px #0009;--lo-scrim:#0009}[data-theme=localOperatorLight]{color-scheme:light;--lo-canvas:#f5f0e6;--lo-surface:#faf8f1;--lo-elevated:#fffefb;--lo-sunken:#efe9db;--lo-ink:#211e18;--lo-ink-muted:#565147;--lo-ink-dim:#6c675c;--lo-ink-disabled:#9a9488;--lo-hairline:#ddd8ce;--lo-border-control:#857f70;--lo-accent:#147842;--lo-accent-hover:#116036;--lo-accent-active:#0c4b2a;--lo-accent-wash:#e7f1e8;--lo-on-accent:#f6faf8;--lo-success:#1a774a;--lo-success-wash:#e6f1ea;--lo-success-border:#3e6b4e;--lo-warning:#8a5800;--lo-warning-wash:#f5ecd9;--lo-warning-border:#7a5a1e;--lo-danger:#b23a31;--lo-danger-wash:#f7e7e4;--lo-danger-border:#96544c;--lo-info:#2368a8;--lo-info-wash:#e9ebef;--lo-info-border:#486893;--lo-overlay-shadow:0 12px 32px -12px #14110c40;--lo-scrim:#14110c59}[data-theme=monokai]{color-scheme:dark;--lo-canvas:#272822;--lo-surface:#2e2f28;--lo-elevated:#3e3d32;--lo-sunken:#1e1f1a;--lo-ink:#f8f8f2;--lo-ink-muted:#bfbfbf;--lo-ink-dim:#aca998;--lo-ink-disabled:#75715e;--lo-hairline:#464740;--lo-border-control:#8e8a73;--lo-accent:#a6e22e;--lo-accent-hover:#b6e94e;--lo-accent-active:#8bc220;--lo-accent-wash:#363e23;--lo-on-accent:#272822;--lo-success:#a6e22e;--lo-success-wash:#363e23;--lo-success-border:#6d8e29;--lo-warning:#fd971f;--lo-warning-wash:#413522;--lo-warning-border:#a76c22;--lo-danger:#fb6097;--lo-danger-wash:#40282c;--lo-danger-border:#d04573;--lo-info:#66d9ef;--lo-info-wash:#2f3d3b;--lo-info-border:#4a8993;--lo-overlay-shadow:0 12px 32px -12px #0f0f0ca6;--lo-scrim:#0f0f0c99}[data-theme=neon]{color-scheme:dark;--lo-canvas:#080c18;--lo-surface:#0f1524;--lo-elevated:#182036;--lo-sunken:#03040a;--lo-ink:#e0e0e0;--lo-ink-muted:#a0a0b0;--lo-ink-dim:#8a8a9c;--lo-ink-disabled:#5e5e70;--lo-hairline:#0d3140;--lo-border-control:#6f8f99;--lo-accent:#00efff;--lo-accent-hover:#66f7ff;--lo-accent-active:#00b8d9;--lo-accent-wash:#072734;--lo-on-accent:#000e0f;--lo-success:#2bff88;--lo-success-wash:#0c2925;--lo-success-border:#1b9256;--lo-warning:orange;--lo-warning-wash:#261e15;--lo-warning-border:#90600b;--lo-danger:#ff00a0;--lo-danger-wash:#260b28;--lo-danger-border:#c00784;--lo-info:#00efff;--lo-info-wash:#072734;--lo-info-border:#048997;--lo-overlay-shadow:0 12px 32px -12px #000000bf;--lo-scrim:#020408a6}[data-theme=obsidian]{color-scheme:dark;--lo-canvas:#09090b;--lo-surface:#18181b;--lo-elevated:#27272a;--lo-sunken:#030307;--lo-ink:#fafafa;--lo-ink-muted:#a1a1aa;--lo-ink-dim:#8f8f97;--lo-ink-disabled:#52525b;--lo-hairline:#343436;--lo-border-control:#72727b;--lo-accent:#fafafa;--lo-accent-hover:#e4e4e7;--lo-accent-active:#d4d4d8;--lo-accent-wash:#262628;--lo-on-accent:#09090b;--lo-success:#86bfa1;--lo-success-wash:#181f1d;--lo-success-border:#4e6e5f;--lo-warning:#cbaf7e;--lo-warning-wash:#201d19;--lo-warning-border:#75654a;--lo-danger:#de9391;--lo-danger-wash:#231a1b;--lo-danger-border:#885c5c;--lo-info:#fafafa;--lo-info-wash:#262628;--lo-info-border:#8e8e8e;--lo-overlay-shadow:0 12px 32px -12px #030307cc;--lo-scrim:#030307a6}[data-theme=radient]{color-scheme:dark;--lo-canvas:#10151c;--lo-surface:#1a1f2f;--lo-elevated:#282d47;--lo-sunken:#0a0d12;--lo-ink:#f2f7fc;--lo-ink-muted:#c2d2e0;--lo-ink-dim:#8fa8bc;--lo-ink-disabled:#64748b;--lo-hairline:#343847;--lo-border-control:#7a8ca3;--lo-accent:#91b7e9;--lo-accent-hover:#bdf0fd;--lo-accent-active:#6e9ad4;--lo-accent-wash:#1f2835;--lo-on-accent:#10151c;--lo-success:#63d2a0;--lo-success-wash:#1a2c2c;--lo-success-border:#3e7d65;--lo-warning:#e3b457;--lo-warning-wash:#292823;--lo-warning-border:#846c3c;--lo-danger:#ef7e86;--lo-danger-wash:#2b2229;--lo-danger-border:#9c5960;--lo-info:#91b7e9;--lo-info-wash:#1f2835;--lo-info-border:#576e8d;--lo-overlay-shadow:0 12px 32px -12px #04060ab3;--lo-scrim:#04060a99}[data-theme=sage]{color-scheme:light;--lo-canvas:#f3eee0;--lo-surface:#fbf7ec;--lo-elevated:#fffef9;--lo-sunken:#e9e2d0;--lo-ink:#222c1f;--lo-ink-muted:#454f3a;--lo-ink-dim:#5a674c;--lo-ink-disabled:#96a088;--lo-hairline:#d5d3c5;--lo-border-control:#68865f;--lo-accent:#476e49;--lo-accent-hover:#35563a;--lo-accent-active:#294229;--lo-accent-wash:#e6e9d8;--lo-on-accent:#f4f6f4;--lo-success:#446f26;--lo-success-wash:#e9ebd3;--lo-success-border:#669438;--lo-warning:#825c06;--lo-warning-wash:#eae2cc;--lo-warning-border:#9e8549;--lo-danger:#a8402f;--lo-danger-wash:#edded0;--lo-danger-border:#bf7462;--lo-info:#3a659f;--lo-info-wash:#e9e9e7;--lo-info-border:#6888be;--lo-overlay-shadow:0 12px 32px -12px #222c1f38;--lo-scrim:#222c1f59}[data-theme=synth]{color-scheme:dark;--lo-canvas:#120720;--lo-surface:#1b0a2f;--lo-elevated:#2c1d43;--lo-sunken:#06020d;--lo-ink:#f7f2fb;--lo-ink-muted:#b9aaca;--lo-ink-dim:#9c8cae;--lo-ink-disabled:#6b5c7d;--lo-hairline:#5b1946;--lo-border-control:#8a7ba0;--lo-accent:#ff4081;--lo-accent-hover:#ff79b0;--lo-accent-active:#f50057;--lo-accent-wash:#2e0e2c;--lo-on-accent:#120720;--lo-success:#4de8a8;--lo-success-wash:#192230;--lo-success-border:#32836b;--lo-warning:orange;--lo-warning-wash:#2e1a1c;--lo-warning-border:#945e0e;--lo-danger:#ff6b6b;--lo-danger-wash:#2e1329;--lo-danger-border:#a44551;--lo-info:#00e5ff;--lo-info-wash:#10223b;--lo-info-border:#08819b;--lo-overlay-shadow:0 12px 32px -12px #06020dbf;--lo-scrim:#06020da6}[data-theme=tokyoNight]{color-scheme:dark;--lo-canvas:#1a1b26;--lo-surface:#24283b;--lo-elevated:#2f334d;--lo-sunken:#14141b;--lo-ink:#c0caf5;--lo-ink-muted:#a9b1d6;--lo-ink-dim:#979ebe;--lo-ink-disabled:#565f89;--lo-hairline:#3d4462;--lo-border-control:#757ea9;--lo-accent:#7aa2f7;--lo-accent-hover:#9ebcff;--lo-accent-active:#6d8fda;--lo-accent-wash:#262b3f;--lo-on-accent:#1a1b26;--lo-success:#9ece6a;--lo-success-wash:#2a302e;--lo-success-border:#637d4b;--lo-warning:#e0af68;--lo-warning-wash:#322d2e;--lo-warning-border:#8c704d;--lo-danger:#f7768e;--lo-danger-wash:#352632;--lo-danger-border:#ab5d70;--lo-info:#7dcfff;--lo-info-wash:#263140;--lo-info-border:#507e9d;--lo-overlay-shadow:0 12px 32px -12px #09090eb3;--lo-scrim:#09090e99}[data-theme]:not(:root){--color-canvas:var(--lo-canvas);--color-surface:var(--lo-surface);--color-elevated:var(--lo-elevated);--color-sunken:var(--lo-sunken);--color-ink:var(--lo-ink);--color-ink-muted:var(--lo-ink-muted);--color-ink-dim:var(--lo-ink-dim);--color-ink-disabled:var(--lo-ink-disabled);--color-hairline:var(--lo-hairline);--color-control:var(--lo-border-control);--color-accent:var(--lo-accent);--color-accent-hover:var(--lo-accent-hover);--color-accent-active:var(--lo-accent-active);--color-accent-wash:var(--lo-accent-wash);--color-on-accent:var(--lo-on-accent);--color-success:var(--lo-success);--color-success-wash:var(--lo-success-wash);--color-success-border:var(--lo-success-border);--color-warning:var(--lo-warning);--color-warning-wash:var(--lo-warning-wash);--color-warning-border:var(--lo-warning-border);--color-danger:var(--lo-danger);--color-danger-wash:var(--lo-danger-wash);--color-danger-border:var(--lo-danger-border);--color-info:var(--lo-info);--color-info-wash:var(--lo-info-wash);--color-info-border:var(--lo-info-border);--color-scrim:var(--lo-scrim);--shadow-overlay:var(--lo-overlay-shadow)}.lo-quantity-header .ag-header-cell-label{flex-direction:row;justify-content:flex-end}html :focus-visible,html .Mui-focusVisible{outline-width:2px;outline-style:var(--tw-outline-style,solid);outline-color:var(--color-accent);outline-offset:2px;box-shadow:none!important}[data-radix-popper-content-wrapper]:has(>[data-lo-tooltip-panel]){pointer-events:none!important}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes pulse-visible{0%,to{opacity:1}50%{opacity:.7}}
@@ -1,6 +0,0 @@
1
- import{a as u,j as e,A as d,S as h}from"./icon-mKHwnRNs.js";import{f as m,b,d as x,a2 as v,a3 as k,a4 as y}from"./index-DF2zdD6_.js";/**
2
- * @license lucide-react v0.507.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */const g=[["path",{d:"M13.4 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7.4",key:"re6nr2"}],["path",{d:"M2 6h4",key:"aawbzj"}],["path",{d:"M2 10h4",key:"l0bgd4"}],["path",{d:"M2 14h4",key:"1gsvsf"}],["path",{d:"M2 18h4",key:"1bu2t1"}],["path",{d:"M21.378 5.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z",key:"pqwjuv"}]],N=u("notebook-pen",g),j="radient",w=({onSignInSuccess:o,onAfterCredentialUpdate:c,titleText:t="Sign in to Radient",descriptionText:n="Connect your Radient account to use Radient services."})=>{const l=m(),a=b(),s=x(a.data,"auth"),i=v(s),r=i.data?.find(p=>p.id===j);return a.isSuccess&&!s?e.jsx(d,{variant:"warning",children:"Signing in needs a newer Local Operator backend. Update the backend and restart the app."}):i.isLoading||a.isLoading?e.jsx("div",{className:"flex h-24 items-center justify-center",children:e.jsx(h,{size:"md",label:"Loading sign-in options"})}):r?e.jsxs("div",{className:"mx-auto w-full max-w-md",children:[t&&e.jsx("p",{className:"mb-2 text-center text-heading text-ink",children:t}),n&&e.jsx("p",{className:"mb-6 text-center text-body-sm text-ink-muted",children:n}),e.jsx(k,{provider:r,onConnected:()=>{l.invalidateQueries({queryKey:y.all}),c?.(),o?.()}})]}):e.jsx(d,{variant:"warning",children:"Radient is not available from this backend's provider registry."})};export{N,w as R};
@@ -1,91 +0,0 @@
1
- import{a as A,r as i,j as e,B as w,S as z,G as $e,g as qe,t as me,A as P,I as ee,T as he,J as Be,K as Ve,M as He,N as Ye,O as pe,X as Se,u as Ke,L as se,Q as mt,c as J,U as Qe,x as ht,z as pt,V as xt,i as ft,f as Ge}from"./icon-mKHwnRNs.js";import{bG as gt,bH as Ce,bI as Te,bg as vt,g as re,bh as We,bi as ge,aq as Ze,f as yt,ab as jt,ar as bt,bJ as kt,bK as wt,bL as Nt,bM as St,bN as Je,a5 as Ct,bO as Tt,bP as H,bQ as ve,bR as Xe,bS as L,aH as At,bt as ye,bT as Ae,bu as I,bU as Et,j as xe,b as _t,d as Rt,bV as et,bm as Mt,bW as It,bX as ne,ax as Lt,bY as tt,bZ as X,aK as Pt,b_ as st,b$ as Ut,P as Dt,a9 as Ft,c0 as at,aJ as nt,c1 as Ot,c2 as zt,c3 as $t,av as qt,c4 as rt,bx as fe,bp as Bt,c5 as Vt,i as Ht,c6 as Yt,bk as Kt,c7 as Qt,c8 as Gt,c9 as Wt,bc as Ee,ca as Zt,bo as _e,cb as Jt,cc as Xt,bq as es,br as ts,bn as le,cd as ss,ce as as,cf as ns,cg as rs,ch as is,ci as os,cj as ls,ck as cs}from"./index-DF2zdD6_.js";import{P as ds}from"./page-header-DmGvvMe3.js";import{S as us}from"./square-pen-717nTWtU.js";import{R as ms,N as hs}from"./radient-auth-buttons-BtcEZuSY.js";import{a as ps,H as xs,p as ce}from"./parseISO-BfcDJeSX.js";/**
2
- * @license lucide-react v0.507.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */const fs=[["path",{d:"M2 13a2 2 0 0 0 2-2V7a2 2 0 0 1 4 0v13a2 2 0 0 0 4 0V4a2 2 0 0 1 4 0v13a2 2 0 0 0 4 0v-4a2 2 0 0 1 2-2",key:"57tc96"}]],gs=A("audio-waveform",fs);/**
7
- * @license lucide-react v0.507.0 - ISC
8
- *
9
- * This source code is licensed under the ISC license.
10
- * See the LICENSE file in the root directory of this source tree.
11
- */const vs=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"m19 9-5 5-4-4-3 3",key:"2osh9i"}]],ys=A("chart-line",vs);/**
12
- * @license lucide-react v0.507.0 - ISC
13
- *
14
- * This source code is licensed under the ISC license.
15
- * See the LICENSE file in the root directory of this source tree.
16
- */const js=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"M12 8v8",key:"napkw2"}]],bs=A("circle-plus",js);/**
17
- * @license lucide-react v0.507.0 - ISC
18
- *
19
- * This source code is licensed under the ISC license.
20
- * See the LICENSE file in the root directory of this source tree.
21
- */const ks=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 18a6 6 0 0 0 0-12v12z",key:"j4l70d"}]],it=A("contrast",ks);/**
22
- * @license lucide-react v0.507.0 - ISC
23
- *
24
- * This source code is licensed under the ISC license.
25
- * See the LICENSE file in the root directory of this source tree.
26
- */const ws=[["rect",{width:"20",height:"14",x:"2",y:"5",rx:"2",key:"ynyp8z"}],["line",{x1:"2",x2:"22",y1:"10",y2:"10",key:"1b3vmo"}]],Ns=A("credit-card",ws);/**
27
- * @license lucide-react v0.507.0 - ISC
28
- *
29
- * This source code is licensed under the ISC license.
30
- * See the LICENSE file in the root directory of this source tree.
31
- */const Ss=[["path",{d:"M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z",key:"96xj49"}]],Cs=A("flame",Ss);/**
32
- * @license lucide-react v0.507.0 - ISC
33
- *
34
- * This source code is licensed under the ISC license.
35
- * See the LICENSE file in the root directory of this source tree.
36
- */const Ts=[["path",{d:"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z",key:"yt0hxn"}]],As=A("hexagon",Ts);/**
37
- * @license lucide-react v0.507.0 - ISC
38
- *
39
- * This source code is licensed under the ISC license.
40
- * See the LICENSE file in the root directory of this source tree.
41
- */const Es=[["path",{d:"M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z",key:"nnexq3"}],["path",{d:"M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12",key:"mt58a7"}]],_s=A("leaf",Es);/**
42
- * @license lucide-react v0.507.0 - ISC
43
- *
44
- * This source code is licensed under the ISC license.
45
- * See the LICENSE file in the root directory of this source tree.
46
- */const Rs=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],Ms=A("lock",Rs);/**
47
- * @license lucide-react v0.507.0 - ISC
48
- *
49
- * This source code is licensed under the ISC license.
50
- * See the LICENSE file in the root directory of this source tree.
51
- */const Is=[["path",{d:"M14 9a2 2 0 0 1-2 2H6l-4 4V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2z",key:"p1xzt8"}],["path",{d:"M18 9h2a2 2 0 0 1 2 2v11l-4-4h-6a2 2 0 0 1-2-2v-1",key:"1cx29u"}]],Ls=A("messages-square",Is);/**
52
- * @license lucide-react v0.507.0 - ISC
53
- *
54
- * This source code is licensed under the ISC license.
55
- * See the LICENSE file in the root directory of this source tree.
56
- */const Ps=[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]],Us=A("moon",Ps);/**
57
- * @license lucide-react v0.507.0 - ISC
58
- *
59
- * This source code is licensed under the ISC license.
60
- * See the LICENSE file in the root directory of this source tree.
61
- */const Ds=[["path",{d:"m8 3 4 8 5-5 5 15H2L8 3z",key:"otkl63"}]],Fs=A("mountain",Ds);/**
62
- * @license lucide-react v0.507.0 - ISC
63
- *
64
- * This source code is licensed under the ISC license.
65
- * See the LICENSE file in the root directory of this source tree.
66
- */const Os=[["path",{d:"m12.5 17-.5-1-.5 1h1z",key:"3me087"}],["path",{d:"M15 22a1 1 0 0 0 1-1v-1a2 2 0 0 0 1.56-3.25 8 8 0 1 0-11.12 0A2 2 0 0 0 8 20v1a1 1 0 0 0 1 1z",key:"1o5pge"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}]],zs=A("skull",Os);/**
67
- * @license lucide-react v0.507.0 - ISC
68
- *
69
- * This source code is licensed under the ISC license.
70
- * See the LICENSE file in the root directory of this source tree.
71
- */const $s=[["path",{d:"m10 20-1.25-2.5L6 18",key:"18frcb"}],["path",{d:"M10 4 8.75 6.5 6 6",key:"7mghy3"}],["path",{d:"m14 20 1.25-2.5L18 18",key:"1chtki"}],["path",{d:"m14 4 1.25 2.5L18 6",key:"1b4wsy"}],["path",{d:"m17 21-3-6h-4",key:"15hhxa"}],["path",{d:"m17 3-3 6 1.5 3",key:"11697g"}],["path",{d:"M2 12h6.5L10 9",key:"kv9z4n"}],["path",{d:"m20 10-1.5 2 1.5 2",key:"1swlpi"}],["path",{d:"M22 12h-6.5L14 15",key:"1mxi28"}],["path",{d:"m4 10 1.5 2L4 14",key:"k9enpj"}],["path",{d:"m7 21 3-6-1.5-3",key:"j8hb9u"}],["path",{d:"m7 3 3 6h4",key:"1otusx"}]],qs=A("snowflake",$s);/**
72
- * @license lucide-react v0.507.0 - ISC
73
- *
74
- * This source code is licensed under the ISC license.
75
- * See the LICENSE file in the root directory of this source tree.
76
- */const Bs=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],Vs=A("sun",Bs);/**
77
- * @license lucide-react v0.507.0 - ISC
78
- *
79
- * This source code is licensed under the ISC license.
80
- * See the LICENSE file in the root directory of this source tree.
81
- */const Hs=[["path",{d:"M9 14 4 9l5-5",key:"102s5s"}],["path",{d:"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11",key:"f3b9sd"}]],Ys=A("undo-2",Hs);/**
82
- * @license lucide-react v0.507.0 - ISC
83
- *
84
- * This source code is licensed under the ISC license.
85
- * See the LICENSE file in the root directory of this source tree.
86
- */const Ks=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],Qs=A("zap",Ks),Gs=()=>{const t="https://local-operator.com/download",[o,s]=i.useState(!1),[n,a]=i.useState(!1),[l,u]=i.useState(null),[p,h]=i.useState("info"),[m,d]=i.useState(null),[r,f]=i.useState(null),k=i.useRef(!1),x=i.useRef(!1),c=i.useRef(0),g=i.useRef(!1),j=i.useCallback((E,C)=>{x.current=!1,u(E),h(C),a(!0)},[]),_=i.useCallback(E=>{x.current=!0,u(E),h("success"),a(!0)},[]),b=i.useCallback(()=>{x.current&&(x.current=!1,a(!1),u(null))},[]),{clearDeferredUpdate:M}=gt();i.useEffect(()=>{const E=window.api.updater.onUpdateError(B=>{if(!k.current)return;const oe=["ENOENT: no such file or directory, open","Could not get code signature for running application","Cannot find latest.yml"].some(Y=>B.includes(Y));B.includes("manually")?(d({message:"The server is installed outside the app, so use the tool you installed it with - uv, pipx or pip.",command:""}),x.current=!1,u(null),h("warning"),a(!0)):oe||j(B,"danger")}),C=window.api.updater.onBackendUpdateDevMode(B=>{k.current&&j(B,"info")}),y=()=>{g.current=!0,b()},D=window.api.updater.onUpdateAvailable(y),T=window.api.updater.onUpdateNpxAvailable(y),ie=window.api.updater.onBackendUpdateAvailable(y);return()=>{E(),C(),D(),T(),ie()}},[b,j]),i.useEffect(()=>{let E=!1;const C=()=>{window.api.updater.getLastInstallAttempt().then(D=>{E||f(D)}).catch(()=>{})};C();const y=window.api.updater.onUpdateInstallFailed(()=>C());return()=>{E=!0,y()}},[]);const S=async()=>{const E=++c.current;b(),g.current=!1;try{s(!0),k.current=!0,M(Te.UI),M(Te.BACKEND);const C=await window.api.updater.checkForAllUpdates({manual:!0});if(E!==c.current)return;C?.affirmation&&!g.current?_(C.affirmation):b()}catch(C){if(E!==c.current)return;j(`Error checking for updates: ${C instanceof Error?C.message:String(C)}`,"danger")}finally{E===c.current&&s(!1),setTimeout(()=>{k.current=!1},2e3)}},F=()=>{x.current=!1,a(!1),u(null)};return e.jsxs(e.Fragment,{children:[r&&e.jsxs("div",{className:"mb-3 rounded-sm bg-sunken p-3",children:[e.jsxs("p",{className:"text-body-sm text-ink",children:["The last update to version ",r.targetVersion," didn't finish",r.attempts>1?` (${r.attempts} attempts)`:"",". Version ",r.runningVersion," is running."]}),e.jsxs("p",{className:"mt-1 text-meta text-ink-dim",children:["Detected"," ",r.detectedAt?new Date(r.detectedAt).toLocaleString():"at an unknown time",". ",r.detail]}),e.jsx(w,{variant:"outline",size:"sm",className:"mt-2",onClick:()=>void window.api.openExternal(t),children:"Download a fresh copy"})]}),e.jsxs(w,{variant:"outline",onClick:()=>void S(),disabled:o,children:[o?e.jsx(z,{size:"sm"}):null,o?"Checking...":"Check for updates"]}),m&&e.jsxs(Ce,{open:n,autoHideDuration:1e4,onClose:F,variant:"warning",children:[e.jsx("p",{className:"text-body-sm",children:m.message}),m.command&&e.jsx("code",{className:"mt-2 block rounded-sm bg-sunken p-2 text-mono-sm text-ink",children:m.command})]}),l&&e.jsx(Ce,{open:n,autoHideDuration:6e3,onClose:F,variant:p,children:l})]})},ae=["system-prompt"],Ws=()=>{const{shouldEnableQuery:t}=vt();return re({enabled:t({bypassInternetCheck:!0}),queryKey:ae,queryFn:async()=>{try{const s=await We(ge.baseUrl).config.getSystemPrompt();if(s===null)return null;if(s.status>=400)throw new Error(s.message||"Failed to fetch system prompt");return s.result}catch(o){const s=o instanceof Error?o.message:"An unknown error occurred while fetching system prompt";throw Ze(s),o}},refetchOnWindowFocus:!1,staleTime:5e3})},Zs=()=>{const t=yt(),o=We(ge.baseUrl);return jt({mutationFn:async s=>{try{const n=await o.config.updateSystemPrompt(s);if(n.status>=400)throw new Error(n.message||"Failed to update system prompt");return n.result}catch(n){const a=n instanceof Error?n.message:"An unknown error occurred while updating system prompt";throw Ze(a),n}},onSuccess:async s=>{await t.invalidateQueries({queryKey:ae,refetchType:"none"}),t.setQueryData(ae,n=>n&&{...n,...s}),await t.refetchQueries({queryKey:ae,type:"all"}),bt("System prompt updated")},onError:s=>{console.error("Error updating system prompt:",s)}})},Js=({value:t,label:o,description:s,onChange:n,icon:a,isSaving:l=!1})=>{const[u,p]=i.useState(t),h=i.useId(),m=`${h}-label`,d=`${h}-description`,r=async f=>{if(!l){p(f);try{await n(f)}catch(k){p(!f),console.error("Error toggling setting:",k)}}};return e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("span",{id:m,className:"flex min-h-6 items-center gap-2 text-body text-ink",children:[a&&e.jsx(a,{size:14,"aria-hidden":"true",className:"shrink-0 text-ink-dim"}),o]}),s&&e.jsx("p",{id:d,className:"mt-0.5 max-w-2xl text-body-sm text-ink-muted",children:s})]}),e.jsx("div",{className:"flex h-6 shrink-0 items-center",children:l?e.jsx(z,{size:"md",label:`Saving ${o}`}):e.jsx($e,{checked:u,onCheckedChange:r,"aria-labelledby":m,"aria-describedby":s?d:void 0})})]})};var Xs=kt({chartName:"LineChart",GraphicalChild:Je,axisComponents:[{axisType:"xAxis",AxisComp:wt},{axisType:"yAxis",AxisComp:Nt}],formatAxisMap:St});function Re(t,o){const s=Ct(t,o?.in);if(!Tt(s))throw new RangeError("Invalid time value");const n=H(s.getDate(),2),a=H(s.getMonth()+1,2),l=s.getFullYear(),u=H(s.getHours(),2),p=H(s.getMinutes(),2),h=H(s.getSeconds(),2);let m="",d="";const r=s.getTimezoneOffset();if(r!==0){const f=Math.abs(r),k=H(Math.trunc(f/60),2),x=H(f%60,2);d=`${r<0?"+":"-"}${k}:${x}`}else d="Z";return`${l}-${a}-${n}T${u}:${p}:${h}${m}${d}`}function ea(t,o,s){return ps(t,-30,s)}const ta=["radient","creditBalance"],sa=t=>{const{user:o,isAuthenticated:s}=ve(),n=o?.account?.tenant_id,a=s&&!!n&&t?.enabled;return re({queryKey:[ta,n],queryFn:async()=>{if(!n)throw new Error("Tenant ID not available");const l=await Xe({operation:"credits",tenantId:n});if(!l||typeof l.balance!="number")throw new Error("Invalid credit balance response format");return l},enabled:a,staleTime:5*60*1e3,refetchOnWindowFocus:!0})};function aa(t,o){const[s,n]=i.useState(!1);return i.useEffect(()=>{if(!t){n(!1);return}const a=setTimeout(()=>n(!0),o);return()=>clearTimeout(a)},[t,o]),s}const na=["radient","usageRollup"],ra=(t,o)=>{const{user:s,isAuthenticated:n}=ve(),a=s?.account?.tenant_id,l=n&&!!a&&o?.enabled;return re({queryKey:[...na,a,t],queryFn:async()=>{if(!a)throw new Error("Tenant ID not available");const u={};for(const[h,m]of Object.entries(t))m!=null&&(u[h]=String(m));const p=await Xe({operation:"usage",tenantId:a,query:u});if(!p)throw new Error("Invalid usage rollup response format");return p},enabled:l,staleTime:5*60*1e3,refetchOnWindowFocus:!0})},ia=()=>e.jsx(Gs,{}),oa=()=>{const[t,o]=i.useState("Loading..."),[s,n]=i.useState("Loading..."),[a,l]=i.useState({platform:"Loading...",arch:"...",nodeVersion:"Loading...",electronVersion:"Loading...",chromeVersion:"Loading..."});i.useEffect(()=>{let p=!0;const h=async()=>{try{const[d,r]=await Promise.all([window.api.systemInfo.getAppVersion(),window.api.systemInfo.getPlatformInfo()]);p&&(o(d),l(r))}catch(d){console.error("Error fetching app information:",d)}},m=async()=>{try{const d=await Ae.healthCheck(ge.baseUrl),r=Ae.getServerVersion(d);p&&n(r)}catch(d){console.error("Error fetching server version:",d),p&&n("Unavailable")}};return h(),m(),()=>{p=!1}},[]);const u=(p,h,m)=>e.jsx(I,{label:e.jsx(qe,{content:m,children:e.jsxs("span",{className:"inline-flex cursor-help items-center gap-1.5",children:[e.jsx(me,{size:12,className:"shrink-0"}),p]})}),value:h});return e.jsx(L,{title:"Application updates and info",icon:At,description:"Check for updates and view information about your Local Operator installation.",dataTourTag:"settings-app-updates-section",children:e.jsxs("div",{className:"flex flex-col gap-6",children:[e.jsxs(ye,{children:[u("Application version",t,"The version of the Local Operator user interface application."),u("Server version",s,"The version of the Local Operator API server backend."),u("Platform",`${a.platform} (${a.arch})`,"The operating system and architecture your application is running on."),u("Node.js version",a.nodeVersion,"The JavaScript runtime environment version."),u("Electron version",a.electronVersion,"The framework version enabling this desktop application.")]}),e.jsx(ia,{})]})})},ot="__cascade__";function G(t){return t==null?"":typeof t=="object"?JSON.stringify(t):String(t)}function la(t,o){return t.kind==="cascade"?o!==ot:t.kind==="list"?o!==t.value?.join(`
87
- `):o!==G(t.value)}const ca=({setting:t,scope:o,onSaved:s,children:n})=>{const[a,l]=i.useState({value:t.kind==="list"?(t.value??[]).join(`
88
- `):t.kind==="cascade"?ot:G(t.value),cascadeBase:null,saving:!1,error:null}),u=la(t,a.value)||a.cascadeBase!==null,p=async()=>{let r=null,f;const k=()=>({op:"settings.edit",key:t.key,value:r,...f?{base:f}:{}});switch(t.kind){case"bool":r=a.value==="true";break;case"int":if(r=Number.parseInt(a.value,10),Number.isNaN(r)){l(x=>({...x,error:"Enter a whole number."}));return}break;case"float":{const x=Number.parseFloat(a.value);if(!Number.isFinite(x)){l(c=>({...c,error:"Enter a finite number."}));return}r=x;break}case"enum":{const x=t.choices.find(c=>G(c.value)===a.value);r=x?x.value:a.value;break}case"list":r=a.value.split(`
89
- `).map(x=>x.trim()).filter(Boolean);break;case"cascade":{if(!a.cascadeBase)return;const x={};for(const[c,g]of Object.entries(a.cascadeBase))x[c]=g;r=x,f=t.value??void 0;break}default:t.empty_unsets&&a.value.trim()===""?r=null:r=a.value}l(x=>({...x,saving:!0,error:null}));try{await xe(k()),l(x=>({...x,saving:!1,cascadeBase:null})),await s?.()}catch(x){l(c=>({...c,saving:!1,error:x instanceof Error?x.message:"The setting could not be saved."}))}},h=async()=>{l(r=>({...r,saving:!0,error:null}));try{await xe({op:"settings.reset",key:t.key}),l(r=>({...r,saving:!1})),await s?.()}catch(r){l(f=>({...f,saving:!1,error:r instanceof Error?r.message:"The setting could not be reset."}))}};if(t.redacted)return e.jsx(P,{variant:"neutral",className:"w-full",children:"This value carries inline credentials or query parameters and cannot be edited here. Secrets belong in the credential manager."});if(t.kind==="readonly")return e.jsx("p",{className:"text-body-sm text-ink-muted",children:G(t.value)||"Not set"});let m;switch(t.kind){case"bool":m=e.jsx($e,{checked:a.value==="true",onCheckedChange:r=>l(f=>({...f,value:r?"true":"false"})),"aria-label":t.label});break;case"enum":m=e.jsxs(Be,{value:a.value,onValueChange:r=>l(f=>({...f,value:r})),children:[e.jsx(Ve,{"aria-label":t.label,className:"w-full",children:e.jsx(He,{})}),e.jsx(Ye,{children:t.choices.map(r=>e.jsx(pe,{value:G(r.value),children:r.label},G(r.value)))})]});break;case"int":case"float":m=e.jsx(ee,{type:"number",value:a.value,min:t.minimum??void 0,max:t.maximum??void 0,step:t.kind==="int"?1:"any",onChange:r=>l(f=>({...f,value:r.target.value})),"aria-label":t.label});break;case"list":m=e.jsx(he,{value:a.value,rows:Math.min(6,t.members.length+2),onChange:r=>l(f=>({...f,value:r.target.value})),"aria-label":t.label,className:"font-mono text-body-sm"});break;case"cascade":{const r=a.cascadeBase??t.value??{};m=e.jsxs("div",{className:"flex flex-col gap-3",children:[Object.entries(r).map(([f,k])=>e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("span",{className:"font-mono text-meta text-ink-dim",children:f}),e.jsx(he,{value:k.join(`
90
- `),rows:Math.max(2,k.length+1),onChange:x=>l(c=>({...c,cascadeBase:{...c.cascadeBase??r,[f]:x.target.value.split(`
91
- `).map(g=>g.trim()).filter(Boolean)}})),"aria-label":`${t.label}: ${f}`,className:"font-mono text-body-sm"})]},f)),e.jsx("p",{className:"text-meta text-ink-dim",children:"One hop per line, as provider/model (effort). An empty chain moves to the next provider."})]});break}default:m=e.jsx(ee,{value:a.value,onChange:r=>l(f=>({...f,value:r.target.value})),"aria-label":t.label})}const d=e.jsxs("div",{className:"flex flex-col gap-2","data-setting-key":t.key,children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsxs("div",{className:"flex min-w-0 flex-col gap-0.5",children:[e.jsx("span",{className:"text-body-sm text-ink",children:t.label}),t.help&&e.jsx("span",{className:"text-meta text-ink-dim",children:t.help})]}),e.jsxs("div",{className:"flex shrink-0 items-center gap-2",children:[!t.is_default&&e.jsxs(w,{variant:"ghost",size:"sm",onClick:()=>void h(),disabled:a.saving,children:[e.jsx(Ys,{"aria-hidden":"true"}),"Use default"]}),u&&e.jsx(w,{variant:"primary",size:"sm",onClick:()=>void p(),disabled:a.saving,children:a.saving?"Saving":"Save"})]})]}),m,t.kind!=="bool"&&!t.is_default&&e.jsxs("p",{className:"text-meta text-ink-dim",children:["Changed from the default",o?`; ${o}`:""]}),a.error&&e.jsx(P,{variant:"danger",children:e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsx("span",{children:a.error}),e.jsxs(w,{variant:"secondary",size:"sm",onClick:()=>void p(),disabled:a.saving,children:[e.jsx(Et,{"aria-hidden":"true"}),"Retry"]})]})})]});return n?n(d):d},da={all:["desktop","settings"]},de={live:"Takes effect immediately","new launch":"Takes effect the next time the app starts","new sessions":"Takes effect for new conversations"},ua=({focusKey:t,initialFilter:o=""})=>{const s=_t(),n=Rt(s.data,"settings"),[a,l]=i.useState(o),[u,p]=i.useState(new Set),h=i.useRef(!1),m=re({queryKey:da.all,queryFn:()=>xe({op:"settings.list"}),enabled:n,staleTime:1e4}),d=m.data,r=i.useMemo(()=>{if(!d)return null;const c=j=>j.toLowerCase().replace(/[-_]/g," "),g=c(a.trim());return g?d.settings.filter(j=>c([j.label,j.help,j.key,j.section].join(" ")).includes(g)):d.settings},[d,a]);if(i.useEffect(()=>{if(!t||!d||h.current)return;h.current=!0;const c=d.settings.find(g=>g.key===t);c&&(p(g=>{if(!g.has(c.section))return g;const j=new Set(g);return j.delete(c.section),j}),requestAnimationFrame(()=>{const g=document.querySelector(`[data-setting-key="${CSS.escape(t)}"] input, [data-setting-key="${CSS.escape(t)}"] textarea, [data-setting-key="${CSS.escape(t)}"] button[role="switch"], [data-setting-key="${CSS.escape(t)}"] button`);g?.focus(),g?.scrollIntoView({block:"center"})}))},[t,d]),s.data&&!n)return e.jsx(P,{variant:"warning",children:"Searchable settings need a newer Local Operator server. Update the server and restart the app to manage these settings here."});if(m.isLoading||s.isLoading)return e.jsx("div",{className:"flex h-40 items-center justify-center",children:e.jsx(z,{size:"lg",label:"Loading settings"})});const f=(s.data?null:s.error)??m.error;if(f||!d||!r){const c=s.isFetching||m.isFetching;return e.jsx(P,{variant:"warning",children:e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsx("span",{children:et("Your settings could not be loaded.",f)}),e.jsx(w,{variant:"secondary",size:"sm",className:"shrink-0",onClick:()=>{s.isError?s.refetch():m.refetch()},disabled:c,children:c?"Retrying":"Retry"})]})})}const k=d.sections.filter(c=>r.some(g=>g.section===c.name)),x=c=>p(g=>{const j=new Set(g);return j.has(c)?j.delete(c):j.add(c),j});return e.jsxs("div",{className:"flex flex-col gap-6",children:[e.jsxs("div",{className:"relative",children:[e.jsx(Mt,{size:16,className:"pointer-events-none absolute top-1/2 left-3 -translate-y-1/2 text-ink-dim","aria-hidden":"true"}),e.jsx(ee,{value:a,onChange:c=>l(c.target.value),placeholder:"Search settings by name, description or key","aria-label":"Search settings",className:"pl-9"}),a&&e.jsx(w,{variant:"ghost",size:"icon-sm",className:"absolute top-1/2 right-1 -translate-y-1/2",onClick:()=>l(""),"aria-label":"Clear search",children:e.jsx(Se,{"aria-hidden":"true"})})]}),r.length===0&&e.jsxs("div",{className:"flex flex-col items-center gap-2 py-6 text-center",children:[e.jsx("p",{className:"text-body-sm text-ink-muted",children:"No settings match this search."}),e.jsxs(w,{variant:"secondary",size:"sm",onClick:()=>l(""),children:[e.jsx(Se,{"aria-hidden":"true"}),"Clear search"]})]}),k.map(c=>{const g=r.filter(_=>_.section===c.name),j=u.has(c.name);return e.jsxs("section",{"data-settings-section":c.name,className:"flex flex-col gap-3",children:[e.jsxs("button",{type:"button",onClick:()=>x(c.name),"aria-expanded":!j,className:"flex items-baseline justify-between gap-3 text-left",children:[e.jsxs("span",{className:"flex flex-col gap-0.5",children:[e.jsx("span",{className:"text-heading text-ink",children:c.title}),c.description&&e.jsx("span",{className:"text-meta text-ink-dim",children:c.description})]}),de[c.scope]&&e.jsx(Ke,{variant:"neutral",children:de[c.scope]})]}),!j&&e.jsx("div",{className:"flex flex-col gap-5",children:g.map(_=>e.jsx(ca,{setting:_,scope:de[c.scope],onSaved:()=>m.refetch()},_.key))})]},c.name)})]})},Me=({credentialKey:t,isConfigured:o=!1,onEdit:s,onClear:n,onAdd:a})=>{const l=It(t),u=o?Ms:ne;return e.jsxs("div",{className:"flex flex-col rounded-md p-3 transition-colors duration-fast ease-out-quart hover:bg-elevated",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs("h3",{className:"flex items-center gap-2 text-body font-medium text-ink",children:[e.jsx(u,{className:"size-3.5 shrink-0 text-ink-dim"}),l.name]}),e.jsx("p",{className:"mt-1 break-all text-mono-sm text-ink-dim",children:t}),e.jsx("p",{className:"mt-2 text-body-sm text-ink-muted",children:l.description})]}),e.jsx("div",{className:"mt-auto flex flex-wrap items-center justify-end gap-2 pt-4",children:o?e.jsxs(e.Fragment,{children:[e.jsxs(w,{variant:"ghost",size:"sm",onClick:()=>s?.(t),children:[e.jsx(us,{}),"Update"]}),e.jsxs(w,{variant:"ghost",size:"sm",className:"text-danger hover:bg-danger-wash hover:text-danger",onClick:()=>n?.(t),children:[e.jsx(Lt,{}),"Clear"]})]}):e.jsxs(e.Fragment,{children:[e.jsxs(w,{variant:"outline",size:"sm",onClick:()=>a?.(t),children:[e.jsx(ne,{}),"Configure"]}),l.url&&e.jsx(qe,{content:`Get your ${l.name} key`,children:e.jsx(w,{variant:"ghost",size:"icon-sm",asChild:!0,children:e.jsx("a",{href:l.url,target:"_blank",rel:"noopener noreferrer","aria-label":`Get your ${l.name} key`,children:e.jsx(tt,{})})})})]})})]})},ue="_custom_",Ie="credential-custom-key",Le="credential-custom-key-error",Pe="credential-type",Ue="credential-type-help",De="credential-value",Fe="credential-value-help",Oe=({open:t,onClose:o,onSave:s,initialKey:n="",existingKeys:a,isSaving:l,isEditMode:u})=>{const[p,h]=i.useState(n),[m,d]=i.useState(""),[r,f]=i.useState(""),[k,x]=i.useState(!1);i.useEffect(()=>{if(t){const y=X.some(T=>T.key===n),D=!u&&n&&!y;h(y?n:""),d(""),f(D?n:""),x(D||u&&!y)}},[t,n,u]);const c=()=>{let y="";if(u?y=n:y=k?r.trim():p,!y){console.error("No key provided for credential");return}if(!m.trim()){console.error("No value provided for credential");return}s({key:y,value:m})},g=y=>a.includes(y)&&y!==n,j=g(r),_=u?!0:k?r.trim()!==""&&!j:p!==""&&!g(p),b=m.trim()!=="",M=_&&b&&!l,S=X.find(y=>y.key===p),F=!!S&&!k,E=u?"Update credential":"Add new credential",C=e.jsxs(e.Fragment,{children:[e.jsx(w,{variant:"secondary",onClick:o,children:"Cancel"}),e.jsxs(w,{variant:"primary",onClick:c,disabled:!M,children:[l&&e.jsx(z,{size:"sm",className:"border-t-on-accent"}),l?"Saving...":"Save"]})]});return e.jsx(Pt,{open:t,onClose:o,title:E,actions:C,maxWidth:"sm",fullWidth:!0,children:e.jsxs("div",{className:"flex flex-col gap-4",children:[u?e.jsx(I,{label:"Credential key",value:e.jsx("span",{className:"text-mono-sm",children:n})}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(se,{htmlFor:Pe,children:"Credential type"}),e.jsxs(Be,{value:k?ue:p,onValueChange:y=>{y===ue?(x(!0),h("")):(x(!1),h(y),f(""))},children:[e.jsx(Ve,{id:Pe,"aria-describedby":F?Ue:void 0,children:e.jsx(He,{placeholder:"Select a credential type"})}),e.jsxs(Ye,{children:[X.filter(y=>!y.internal).map(y=>e.jsxs(pe,{value:y.key,disabled:g(y.key),children:[y.name,g(y.key)&&" (configured)"]},y.key)),e.jsx(pe,{value:ue,children:"Custom credential"})]})]}),F&&S&&e.jsxs("div",{id:Ue,className:"flex flex-col items-start gap-1",children:[e.jsx("p",{className:"text-meta text-ink-dim",children:S.description}),S.url&&e.jsxs("a",{href:S.url,target:"_blank",rel:"noopener noreferrer",className:"text-accent text-meta underline-offset-4 hover:text-accent-hover hover:underline",children:["Get your ",S.name," key"]})]})]}),k&&e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(se,{htmlFor:Ie,children:"Custom credential key"}),e.jsx(ee,{id:Ie,value:r,onChange:y=>f(y.target.value),"aria-invalid":j||void 0,"aria-describedby":j?Le:void 0,required:!0,autoFocus:!0}),j&&e.jsx("p",{id:Le,className:"text-danger text-meta",children:"This credential already exists"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(se,{htmlFor:De,children:"Credential value"}),e.jsx(ee,{id:De,type:"password",value:m,onChange:y=>d(y.target.value),onKeyDown:y=>{y.key==="Enter"&&M&&c()},"aria-describedby":u?Fe:void 0,required:!0,autoFocus:u,placeholder:"Enter the credential value or API key"}),u&&e.jsxs("p",{id:Fe,className:"text-ink-dim text-meta",children:["Enter the new value for ",n]})]})]})})},ze=({title:t,description:o,children:s,isEmpty:n=!1,emptyStateType:a="noCredentials"})=>e.jsxs("section",{children:[e.jsx("h3",{className:"text-body font-medium text-ink",children:t}),e.jsx("p",{className:"mt-1 max-w-2xl text-body-sm text-ink-muted",children:o}),e.jsx(mt,{variant:"surface",padding:"sm",className:"mt-3",children:n?e.jsx(ma,{type:a}):e.jsx("div",{className:"grid grid-cols-[repeat(auto-fit,minmax(260px,1fr))] gap-2",children:s})})]}),ma=({type:t,className:o})=>{const s=t==="noCredentials",n=s?ne:Qe;return e.jsxs("div",{className:J("flex flex-col items-center px-4 py-8 text-center",o),children:[e.jsx(n,{size:20,className:"text-ink-dim","aria-hidden":!0}),e.jsx("p",{className:"mt-3 text-body font-medium text-ink",children:s?"No credentials configured":"All available credentials configured"}),e.jsx("p",{className:"mt-1 max-w-sm text-body-sm text-ink-muted",children:s?"You haven't set up any API credentials yet. Add credentials from the available options or add a custom one.":"You've configured all the common API credentials. You can still add custom credentials if needed."})]})},ha=()=>{const{data:t,isLoading:o,error:s,refetch:n}=st(),a=Ut(),[l,u]=i.useState(!1),[p,h]=i.useState(!1),[m,d]=i.useState(null),r=b=>{d(b),u(!0)},f=(b=null)=>{d(b),h(!0)},k=()=>{u(!1),h(!1),d(null)},x=async b=>{try{await a.mutateAsync(b),k(),await n()}catch(M){console.error("Error saving credential:",M)}},c=async b=>{try{await a.mutateAsync({key:b,value:""}),await n()}catch(M){console.error("Error clearing credential:",M)}},g=i.useMemo(()=>t?.keys?.filter(b=>!X.find(M=>M.key===b)?.internal)??[],[t]),j=i.useMemo(()=>X.filter(b=>!g.includes(b.key)&&!b.internal),[g]),_=()=>o?e.jsx("div",{className:"flex min-h-40 items-center justify-center",children:e.jsx(z,{size:"lg",label:"Loading credentials"})}):s||!t?e.jsxs(P,{variant:"danger",role:"alert",children:[e.jsx(ht,{children:"Could not load credentials"}),e.jsx(pt,{children:s instanceof Error?s.message:"The server did not say why. Check that Local Operator is running, then reopen this page."})]}):e.jsxs(e.Fragment,{children:[e.jsx(ze,{title:"Configured credentials",description:"These API credentials are currently configured and available for use.",isEmpty:g.length===0,emptyStateType:"noCredentials",children:g.map(b=>e.jsx(Me,{credentialKey:b,isConfigured:!0,onEdit:r,onClear:c},b))}),e.jsx(ze,{title:"Available credentials",description:"These are common API credentials you can configure to enhance functionality.",isEmpty:j.length===0,emptyStateType:"allConfigured",children:j.map(b=>e.jsx(Me,{credentialKey:b.key,isConfigured:!1,onAdd:()=>f(b.key)},b.key))}),e.jsx("div",{className:"flex justify-center",children:e.jsxs(w,{variant:"secondary",size:"sm",onClick:()=>f(null),children:[e.jsx(Dt,{}),"Add custom credential"]})}),l&&e.jsx(Oe,{open:l,onClose:k,onSave:x,initialKey:m||"",existingKeys:g,isSaving:a.isPending,isEditMode:!0}),p&&e.jsx(Oe,{open:p,onClose:k,onSave:x,initialKey:m||"",existingKeys:g,isSaving:a.isPending,isEditMode:!1})]});return e.jsx("div",{className:"flex flex-col gap-6",children:_()})},pa=({onAfterCredentialUpdate:t})=>{const{isAuthenticated:o,user:s,isLoading:n,error:a,signOut:l}=Ft(),u=at(d=>d.isSigningOut),p=i.useCallback(async()=>{try{await l()}catch(d){console.error("Error signing out:",d)}},[l]),h=i.useMemo(()=>{if(!o||!s?.radientUser)return null;const{account:d,identity:r}=s.radientUser;return e.jsxs(e.Fragment,{children:[e.jsxs(ye,{children:[e.jsx(I,{label:"Status",value:e.jsxs("span",{className:"inline-flex items-center gap-2",children:["Connected",e.jsx(Ke,{variant:"success",className:"capitalize",children:d.status})]})}),e.jsx(I,{label:"Name",value:d.name||"Not provided"}),e.jsx(I,{label:"Email",value:d.email}),e.jsx(I,{label:"Account ID",value:e.jsx("span",{className:"text-mono-sm",children:d.id})}),e.jsx(I,{label:"Tenant ID",value:e.jsx("span",{className:"text-mono-sm",children:d.tenant_id})}),e.jsx(I,{label:"Provider",value:e.jsx("span",{className:"capitalize",children:r.provider})}),e.jsx(I,{label:"Created",value:nt(d.created_at)})]}),e.jsxs("div",{className:"mt-8",children:[e.jsx("p",{className:"text-body-sm text-ink-muted",children:"Need to sign out or switch accounts?"}),e.jsxs(w,{variant:"danger",className:"mt-3",onClick:p,children:[e.jsx(Ot,{}),"Sign out from Radient"]})]})]})},[o,s?.radientUser,p]),m=i.useMemo(()=>o&&s?null:e.jsxs("div",{children:[e.jsx("p",{className:"text-body-sm text-ink-muted",children:"You are not currently signed in to Radient. Sign in to access your account details or sign up to get free credits and unified access to models, tools, and more with Radient Pass. Radient's automatic model router will automatically select the best model for your agents to balance cost and performance. It is often cheaper to use Radient Pass than to use single AI providers due to automatic cost optimization."}),e.jsx("div",{className:"mt-6",children:e.jsx(ms,{titleText:"",onAfterCredentialUpdate:t,descriptionText:"",onSignInSuccess:()=>{}})})]}),[o,s,t]);return n||u?e.jsx("div",{className:"flex min-h-36 items-center justify-center",children:e.jsx(z,{size:"lg",label:"Loading account"})}):o&&s?.radientUser?h:e.jsxs("div",{className:"flex flex-col gap-4",children:[a&&e.jsxs(P,{variant:"danger",children:["Error checking account status:"," ",a instanceof Error?a.message:String(a)]}),m]})};function xa({metric:t,data:o}){return e.jsx(zt,{title:"",heightClassName:"h-62",yAxisWidth:48,unit:t==="credits"?"credits":"tokens",srSummary:`${t==="credits"?"Credits consumed":"Tokens used"} over the last 30 days, plotted per day across ${o.length} days.`,xTickFormatter:s=>s,yTickFormatter:s=>t==="credits"?`$${s.toFixed(2)}`:$t(s),children:e.jsx(Xs,{data:o,children:e.jsx(Je,{type:"monotone",dataKey:"value",strokeWidth:2,dot:!1,activeDot:{r:4,strokeWidth:0},name:t==="credits"?"Credits consumed":"Tokens used"})})})}const fa=()=>{const{data:t,isLoading:o,error:s,refetch:n}=Ws(),a=Zs(),[l,u]=i.useState(""),[p,h]=i.useState(!1);i.useEffect(()=>{u(t?.content??""),h(!1)},[t]);const m=x=>{const c=x.target.value;u(c),h(c!==(t?.content??""))},d=async()=>{if(!(!p||a.isPending))try{const x={content:l};await a.mutateAsync(x),await n(),h(!1)}catch(x){console.error("Error updating system prompt:",x)}},r=()=>{u(t?.content??""),h(!1)},f=a.isPending,k=()=>e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(se,{htmlFor:"app-system-prompt",children:"Instructions"}),e.jsx(he,{id:"app-system-prompt",name:"systemPrompt",value:l,onChange:m,placeholder:"Enter instructions for how all agents should behave and respond to your requests...",className:"min-h-50"})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsxs(w,{variant:"primary",onClick:d,disabled:!p||f,children:[f?e.jsx(z,{size:"sm"}):e.jsx(qt,{}),f?"Saving...":"Save changes"]}),e.jsx(w,{onClick:r,disabled:!p||f,children:"Cancel"})]}),t?.last_modified&&e.jsxs("p",{className:"text-ink-dim text-meta",children:["Last modified:"," ",e.jsx("span",{className:"font-mono text-mono-sm",children:rt(t.last_modified)})]})]});return e.jsx(L,{title:"System prompt",icon:hs,description:"Every Local Operator agent receives this prompt in addition to its own instructions, so it is the place for baseline expectations and for details you want every agent to know about you, such as your name, location, or preferences. It is sent to your selected hosting provider.",children:o?e.jsx("div",{className:"flex min-h-50 items-center justify-center",children:e.jsx(z,{size:"lg",label:"Loading system prompt"})}):s?e.jsxs(P,{variant:"danger",children:["Failed to load system prompt:"," ",s instanceof Error?s.message:"Unknown error"]}):k()})},ga={localOperatorDark:Us,localOperatorLight:Vs,radient:As,dracula:zs,dune:Cs,sage:_s,monokai:ft,tokyoNight:Fs,iceberg:qs,neon:Qs,obsidian:it,synth:gs},va=({id:t})=>e.jsxs("div",{"data-theme":t,"aria-hidden":"true",className:"flex h-full bg-canvas",children:[e.jsxs("div",{className:"flex w-1/4 flex-col gap-1 bg-sunken p-1.5",children:[e.jsx("span",{className:"flex h-2.5 items-center rounded-xs bg-accent-wash px-1",children:e.jsx("span",{className:"h-1 w-full rounded-xs bg-accent"})}),e.jsx("span",{className:"mx-1 h-1 w-2/3 rounded-xs bg-ink-dim"}),e.jsx("span",{className:"mx-1 h-1 w-1/2 rounded-xs bg-ink-dim"})]}),e.jsxs("div",{className:"flex flex-1 flex-col justify-between p-2",children:[e.jsxs("div",{className:"flex flex-col gap-1.5 rounded-sm bg-surface p-2",children:[e.jsx("span",{className:"h-1.5 w-3/5 rounded-xs bg-ink"}),e.jsx("span",{className:"h-1 w-full rounded-xs bg-ink-dim"}),e.jsx("span",{className:"h-1 w-4/5 rounded-xs bg-ink-dim"})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"h-3 w-9 rounded-xs bg-accent"}),e.jsx("span",{className:"h-3 w-6 rounded-xs border border-control"})]})]})]}),ya=({id:t,name:o,description:s,isSelected:n,onSelect:a})=>{const l=ga[t];return e.jsxs("button",{type:"button","aria-pressed":n,onClick:a,className:J("flex flex-col gap-2 rounded-lg p-2 text-left transition-colors duration-fast ease-out-quart",n?"bg-accent-wash":"hover:bg-surface"),children:[e.jsx("span",{className:J("block aspect-16/10 overflow-hidden rounded-md border transition-colors duration-fast ease-out-quart",n?"border-accent":"border-hairline"),children:e.jsx(va,{id:t})}),e.jsxs("span",{className:"flex items-center gap-2 px-1",children:[e.jsx(l,{size:14,className:"shrink-0 text-ink-dim","aria-hidden":"true"}),e.jsx("span",{className:J("min-w-0 flex-1 truncate text-body-sm text-ink",n&&"font-medium"),children:o}),n&&e.jsx(Qe,{size:14,className:"shrink-0 text-accent","aria-hidden":"true"})]}),e.jsx("span",{className:"px-1 pb-1 text-meta text-ink-muted",children:s})]})},ja=()=>{const{themeName:t,setTheme:o}=fe(),s=i.useMemo(()=>{const n=Object.values(xt);return[{label:"Dark",items:n.filter(a=>a.theme.palette.mode==="dark")},{label:"Light",items:n.filter(a=>a.theme.palette.mode==="light")}].filter(a=>a.items.length>0)},[]);return e.jsx("div",{className:"flex flex-col gap-6",children:s.map(n=>e.jsxs("div",{children:[e.jsx("h3",{className:"px-1 pb-2 text-meta text-ink-dim",children:n.label}),e.jsx("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(240px,1fr))] gap-2",children:n.items.map(({id:a,name:l,description:u})=>e.jsx(ya,{id:a,name:l,description:u,isSelected:a===t,onSelect:()=>o(a)},a))})]},n.label))})},ba=()=>{const{data:t,isLoading:o,error:s}=sa({enabled:!0});return e.jsxs("div",{children:[e.jsxs("h3",{className:"mb-3 flex items-center gap-2 text-heading text-ink",children:[e.jsx(Ns,{size:16,className:"shrink-0 text-ink-dim"}),"Radient Pass"]}),o&&e.jsx(Ge,{className:"h-6 w-36"}),s&&e.jsxs(P,{variant:"warning",children:["Could not load your credit balance. ",s.message]}),t&&!o&&!s&&e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center",children:[e.jsxs("p",{className:"flex-1 text-body-sm text-ink-muted",children:["Available credits"," ",e.jsx("span",{className:"font-medium text-ink",children:t.balance.toFixed(2)})]}),e.jsx(w,{variant:"secondary",size:"sm",asChild:!0,children:e.jsxs("a",{href:"https://console.radienthq.com/dashboard/billing",target:"_blank",rel:"noopener noreferrer",children:[e.jsx(bs,{}),"Add credits"]})})]})]})},ka=[{id:"credits",label:"Credits"},{id:"tokens",label:"Tokens"}],wa=()=>{const[t,o]=i.useState("credits"),s=i.useMemo(()=>{const p=new Date,h=ea(p);return{start_date:Re(h),end_date:Re(p),rollup:"daily"}},[]),{data:n,isLoading:a,error:l}=ra(s,{enabled:!0}),u=i.useMemo(()=>n?.data_points?[...n.data_points].sort((h,m)=>ce(h.timestamp).getTime()-ce(m.timestamp).getTime()).map(h=>({bucket:os(ls(ce(h.timestamp),"yyyy-MM-dd")),value:t==="credits"?Number.parseFloat(h.total_cost.toFixed(2)):h.total_tokens})):[],[n,t]);return e.jsxs("div",{children:[e.jsxs("div",{className:"mb-5 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("h3",{className:"flex items-center gap-2 text-heading text-ink",children:[e.jsx(ys,{size:16,className:"shrink-0 text-ink-dim"}),"Usage (last 30 days)"]}),e.jsxs("fieldset",{className:"m-0 w-fit border-0 p-0",children:[e.jsx("legend",{className:"sr-only",children:"Usage metric"}),e.jsx("div",{className:"flex gap-0.5 rounded-md bg-sunken p-0.5",children:ka.map(({id:p,label:h})=>e.jsx(w,{variant:"ghost",size:"sm","aria-pressed":t===p,onClick:()=>o(p),className:J(t===p&&"bg-surface text-ink hover:bg-surface"),children:h},p))})]})]}),a&&e.jsx(Ge,{className:"h-62 w-full"}),l&&e.jsxs(P,{variant:"warning",children:["Could not load your usage data. ",l.message]}),!a&&!l&&n&&u.length>0&&e.jsx(xa,{metric:t,data:u}),!a&&!l&&(!n||u.length===0)&&e.jsx("p",{className:"text-body-sm text-ink-muted",children:"No usage recorded in the last 30 days."})]})},Na=()=>e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("h2",{className:"flex items-center gap-2 text-heading text-ink",children:[e.jsx(cs,{size:16,className:"shrink-0 text-ink-dim"}),"Radient account"]}),e.jsx(w,{variant:"secondary",size:"sm",className:"self-start sm:self-center",asChild:!0,children:e.jsxs("a",{href:"https://console.radienthq.com",target:"_blank",rel:"noopener noreferrer",children:["Go to Radient console",e.jsx(tt,{})]})})]}),Ma=()=>{const t=fe(v=>v.showAgentReasoning),o=fe(v=>v.setShowAgentReasoning),{data:s,isLoading:n,isFetching:a,error:l,refetch:u}=Bt(),p=Vt(),[h,m]=i.useState(null),d=at(),{isAuthenticated:r,isLoading:f}=ve(),k=Ht(v=>v.activeSessionId),[x,c]=i.useState("general"),[g,j]=i.useState(!1),_=i.useRef(null),b=i.useRef(null),{startTour:M}=Yt(),S=Kt(),{data:F,refetch:E}=st(),{refreshModels:C}=Qt(),y=i.useMemo(()=>F?.keys?[...F.keys].sort():[],[F?.keys]),D=i.useRef({keys:"",hosting:void 0});i.useEffect(()=>{const v=y.join(","),R=s?.values?.hosting;(D.current.keys!==v||D.current.hosting!==R)&&(D.current={keys:v,hosting:R},C().catch(N=>{console.error("Failed to refresh models after credentials or hosting change:",N)}))},[y,s?.values?.hosting,C]);const T=i.useRef({general:i.useRef(null),radient:i.useRef(null),integrations:i.useRef(null),appearance:i.useRef(null),credentials:i.useRef(null),providers:i.useRef(null),backend:i.useRef(null),updates:i.useRef(null)}).current,ie=i.useMemo(()=>new URLSearchParams(S.search).get("setting"),[S.search]),B=i.useMemo(()=>new URLSearchParams(S.search).get("filter")??"",[S.search]),je=i.useMemo(()=>new URLSearchParams(S.search).get("mcp")??void 0,[S.search]),oe=i.useMemo(()=>new URLSearchParams(S.search).get("provider"),[S.search]),Y=i.useCallback(v=>{c(v),j(!0);const R=T[v],N=b.current;if(R?.current&&N){const U=R.current.getBoundingClientRect().top-N.getBoundingClientRect().top;N.scrollHeight>N.clientHeight?N.scrollTo({top:Math.max(0,N.scrollTop+U-80),behavior:"smooth"}):window.scrollTo({top:Math.max(0,R.current.getBoundingClientRect().top+window.scrollY-80),behavior:"smooth"}),clearTimeout(_.current??void 0),_.current=setTimeout(()=>{j(!1),_.current=null},800)}else j(!1)},[T]);i.useEffect(()=>{const v=setTimeout(()=>{const R=b.current;if(!R)return;const N=()=>{if(g)return;const K=R.getBoundingClientRect(),U=K.height;let $="",O=0;for(const[te,V]of Object.entries(T))if(V.current){const q=V.current.getBoundingClientRect(),Z=K.top,Q=q.top-Z,lt=q.bottom-Z,ct=q.height,dt=Math.max(0,Q),ut=Math.min(U,lt),we=Math.max(0,ut-dt)/ct,Ne=we+(Q<U*.3?.1:0);Ne>O&&we>.1&&(O=Ne,$=te)}$&&$!==x&&c($)};return N(),R.addEventListener("scroll",N,{passive:!0}),()=>{R.removeEventListener("scroll",N),clearTimeout(_.current??void 0)}},100);return()=>clearTimeout(v)},[T,x,g]),i.useEffect(()=>{const v=new URLSearchParams(S.search),R=v.get("section"),N=v.get("setting")?"backend":R,K=N?T[N]:void 0;if(!N||!K)return;let U=!1,$=Number.NaN,O=0;const te=window.setTimeout(()=>{U||(U=!0,q.disconnect(),Y(N))},2e3),V=()=>{if(U)return;const Z=K.current;if(!Z){O=requestAnimationFrame(V);return}const Q=Math.round(Z.getBoundingClientRect().top+window.scrollY);if(Q===$&&Q>0){U=!0,q.disconnect(),window.clearTimeout(te),Y(N);return}$=Q,O=requestAnimationFrame(V)},q=new ResizeObserver(()=>{U||(cancelAnimationFrame(O),O=requestAnimationFrame(V))});return b.current&&q.observe(b.current),O=requestAnimationFrame(V),()=>{U=!0,cancelAnimationFrame(O),q.disconnect(),window.clearTimeout(te)}},[S.search,T,Y]);const W=async(v,R)=>{m(v);try{await p.mutateAsync({[v]:R}),await u()}catch(N){console.error(`Error updating ${v}:`,N)}finally{m(null)}},be=n||f,ke=aa(be,4e3);return l?e.jsx("div",{className:"flex h-full w-full items-center justify-center bg-canvas p-6",children:e.jsx(P,{variant:"warning",className:"w-full max-w-xl",children:e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsx("span",{children:et("Your settings could not be loaded.",l)}),e.jsx(w,{variant:"secondary",size:"sm",className:"shrink-0",onClick:()=>void u(),disabled:a,children:a?"Retrying":"Retry"})]})})}):be?e.jsxs("div",{role:"status",className:"flex h-full w-full flex-col items-center justify-center gap-3 bg-canvas",children:[e.jsx(z,{size:"lg",label:ke?void 0:"Loading settings"}),ke&&e.jsx("p",{className:"max-w-sm text-center text-body-sm text-ink-muted",children:"The Local Operator server is taking longer than usual to answer. If it does not respond, you will be able to retry from here."})]}):s?e.jsxs("div",{className:"flex h-full w-full overflow-hidden bg-canvas",children:[e.jsx("div",{className:"w-12 shrink-0 overflow-y-auto border-r border-hairline min-[1040px]:w-55",children:e.jsx(Gt,{activeSection:x,onSelectSection:Y,sections:Wt})}),e.jsx("div",{ref:b,"data-settings-content":!0,"data-tour-tag":"settings-general-section",className:"flex-1 overflow-y-auto overflow-x-hidden p-4 sm:p-6 md:p-8",children:e.jsxs("div",{className:"mx-auto flex w-full max-w-4xl flex-col gap-8 pb-8",children:[e.jsx(ds,{title:"Settings",icon:Ee}),e.jsxs("div",{className:"flex flex-col gap-8",children:[e.jsxs("div",{ref:T.general,className:"flex flex-col gap-8",children:[e.jsx(L,{title:"User profile",icon:Zt,description:`Your user profile information displayed in the application. This information is not provided to the agents. ${r?"These details are provided through your Radient account.":""}`,children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx(_e,{value:d.profile.name,label:"Display name",placeholder:"Enter your name...",isSaving:h==="user_name",onSave:async v=>{m("user_name");try{d.updateName(v)}finally{m(null)}},readOnly:r}),e.jsx(_e,{value:d.profile.email,label:"Email address",placeholder:"Enter your email...",isSaving:h==="user_email",onSave:async v=>{m("user_email");try{d.updateEmail(v)}finally{m(null)}},readOnly:r})]})}),e.jsx(L,{title:"Application tour",description:"Missed the application onboarding tour or want a refresher? Start it again here.",children:e.jsxs(w,{variant:"secondary",onClick:()=>{M({forceModalCompleted:!0})},children:[e.jsx(Jt,{}),"Take the tour"]})}),e.jsx(L,{title:"Model settings",icon:Xt,description:"Configure the default AI model and hosting providers used for generating responses. This will be used for all agents that don't have a specific model or hosting provider configured. You can override these settings for individual agents in the agent settings.",children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx(es,{value:s.values.hosting,isSaving:h==="hosting",onSave:v=>W("hosting",v),filterByCredentials:!0,allowCustom:!0,allowDefault:!1,emptyHelperText:"No hosting providers available. Add one in API credentials, in the list on the left."}),e.jsx(ts,{value:s.values.model_name,hostingId:s.values.hosting,isSaving:h==="model_name",onSave:v=>W("model_name",v),allowCustom:!0,allowDefault:!1}),e.jsx(P,{variant:"neutral",icon:e.jsx(me,{className:"size-4","aria-hidden":"true"}),children:"You need a Radient account or your own API keys to reach cloud providers. If you don't see more hosting providers and models here, add credentials or sign in to Radient."})]})}),e.jsx(fa,{}),e.jsx(L,{title:"History settings",icon:xs,description:"Configure how much conversation history is retained and displayed. These are tools to help balance cost and performance by controlling the amount of data used by the agents.",children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx(le,{value:s.values.conversation_length,label:"Maximum conversation history",description:"Number of messages to keep in conversation history for context. More messages will make the agents have longer memory but more expensive to run. Recommended: 100",min:10,max:500,step:10,unit:"msgs",icon:Ls,isSaving:h==="conversation_length",onChange:v=>W("conversation_length",v)}),e.jsx(le,{value:s.values.detail_length,label:"Detail view length",description:"Maximum number of messages to show in the detailed conversation view. Messages beyond this limit will be summarized. Shortening this will decrease costs but some important details could get lost from earlier messages. Recommended: 15",min:10,max:500,step:5,unit:"msgs",icon:ss,isSaving:h==="detail_length",onChange:v=>W("detail_length",v)}),e.jsx(le,{value:s.values.max_learnings_history,label:"Maximum learnings history",description:"Agents note down specific insights and key learnings in memory which persist beyond the maximum conversation history and summarization. This setting controls the maximum number of learning items to retain. More items will make the agents acquire a longer history of knowledge from your conversations but more expensive to run. Recommended: 50",min:10,max:200,step:10,unit:"notes",icon:as,isSaving:h==="max_learnings_history",onChange:v=>W("max_learnings_history",v)})]})}),e.jsx(L,{title:"Configuration information",icon:me,description:"System information about the current configuration.",children:e.jsxs(ye,{children:[e.jsx(I,{label:"Version",value:e.jsx("span",{className:"text-mono-sm",children:s.version})}),e.jsx(I,{label:"Created",value:nt(s.metadata.created_at)}),e.jsx(I,{label:"Last modified",value:rt(s.metadata.last_modified)}),e.jsx(I,{label:"Description",value:s.metadata.description||"No description available"})]})})]}),e.jsx(L,{title:"Appearance",icon:it,description:"Customize the look and feel of Local Operator",sectionRef:T.appearance,dataTourTag:"settings-appearance-section",children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx(ja,{}),e.jsx(Js,{value:t,label:"Show agent reasoning",description:"Adds the agent's Reasoning and Thinking rows to conversations. They stay closed until you open one.",onChange:async v=>o(v)})]})}),e.jsx(L,{title:"Radient account",titleComponent:e.jsx(Na,{}),description:"Manage your Radient account, Radient Pass details, and credits.",sectionRef:T.radient,dataTourTag:"settings-radient-account-section",children:e.jsxs("div",{className:"flex flex-col gap-8",children:[e.jsx(pa,{onAfterCredentialUpdate:()=>{C(),E()}}),r&&e.jsxs(e.Fragment,{children:[e.jsx(ba,{}),e.jsx(wa,{})]})]})}),e.jsx(L,{title:"Providers",icon:ns,description:"Model providers, how you sign in to each, and which are connected.",sectionRef:T.providers,children:e.jsx(rs,{initialProviderId:oe})}),e.jsx(L,{title:"Backend settings",icon:Ee,description:"Every setting the backend registry owns, searchable, with typed editors and scopes.",sectionRef:T.backend,children:e.jsx(ua,{focusKey:ie,initialFilter:B})}),e.jsx(is,{sessionId:k??void 0,sectionRef:T.integrations,highlightServer:je}),e.jsx(L,{title:"API credentials",icon:ne,description:"Manage your API keys for various services and integrations",sectionRef:T.credentials,dataTourTag:"settings-api-credentials-section",children:e.jsx(ha,{})}),e.jsx("div",{ref:T.updates,children:e.jsx(oa,{})})]})]})})]}):e.jsx("div",{className:"flex h-full w-full items-center justify-center bg-canvas p-6",children:e.jsx(P,{variant:"warning",className:"w-full max-w-xl",children:"Your settings could not be loaded."})})};export{Ma as SettingsPage};
@@ -1 +0,0 @@
1
- import{s as e,b as r,a,S as s}from"./chunk-AEK57VVT-BFLmAuIk.js";import{_ as i}from"./mermaid.core-w7CiwIS9.js";import"./chunk-RZ5BOZE2-Cy8U6l3Q.js";import"./index-DF2zdD6_.js";import"./icon-mKHwnRNs.js";var p={parser:a,get db(){return new s(2)},renderer:r,styles:e,init:i(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")};export{p as diagram};