Spaces:
Sleeping
Sleeping
OcDash Deploy commited on
Commit ·
4e705e2
1
Parent(s): cc5137a
feat: initial OcDash deployment - dashboard SPA with project management
Browse files- Standalone SolidJS SPA served via nginx
- Sticky left bar (42px) with Help + Settings
- Dashboard home: project list (left) + orchestrator chat (right)
- Project view: collapsible sessions panel + full chat interface
- HF Spaces API integration for project CRUD
- Global notification system
- Dockerfile +10 -5
- README.md +6 -8
- assets/amoled-CTKLNjMY.js +1 -0
- assets/aura-D4OP0z-q.js +1 -0
- assets/ayu-C-7mtaZC.js +1 -0
- assets/carbonfox-DDZsuZPB.js +1 -0
- assets/catppuccin-frappe-BbhwKQAy.js +1 -0
- assets/catppuccin-macchiato-BG2vmDCz.js +1 -0
- assets/catppuccin-ukvyfYoH.js +1 -0
- assets/cobalt2-DAVdkIoy.js +1 -0
- assets/cursor-CX4xD2IP.js +1 -0
- assets/dracula-Bwy36Hqr.js +1 -0
- assets/everforest-DCRF6ST7.js +1 -0
- assets/flexoki-Cuz5xwiW.js +1 -0
- assets/github-DYnPGtRk.js +1 -0
- assets/gruvbox-D79fVyNx.js +1 -0
- assets/index-BSf9pAXA.css +1 -0
- assets/index-vUWicxNv.js +0 -0
- assets/kanagawa-PkxnAgRP.js +1 -0
- assets/lucent-orng-3zCc1Xf5.js +1 -0
- assets/material-CDQyWXdQ.js +1 -0
- assets/matrix-BQ_S38An.js +1 -0
- assets/mercury-CL9KPSEM.js +1 -0
- assets/monokai-BmT5Sw19.js +1 -0
- assets/nightowl-Pa1W3oWG.js +1 -0
- assets/nord-NfRmCUpk.js +1 -0
- assets/one-dark-Bjk1FzZz.js +1 -0
- assets/onedarkpro-C4eYovZb.js +1 -0
- assets/opencode-D7rBuNi7.js +1 -0
- assets/orng-BM7q_Z0y.js +1 -0
- assets/osaka-jade-LSg9CtTT.js +1 -0
- assets/palenight-Djgtir2l.js +1 -0
- assets/rosepine-DFf5RIYd.js +1 -0
- assets/shadesofpurple-BtwY-YRg.js +1 -0
- assets/solarized-DsjFR-SU.js +1 -0
- assets/synthwave84-mo9EICVe.js +1 -0
- assets/tokyonight-CbcoahaJ.js +1 -0
- assets/vercel-CzCqZjzn.js +1 -0
- assets/vesper-67WFNJYM.js +1 -0
- assets/zenburn-3iKGnI7X.js +1 -0
- index.html +18 -0
- main.py +0 -336
- nginx.conf +8 -0
- requirements.txt +0 -3
- static/index.html +0 -431
Dockerfile
CHANGED
|
@@ -1,7 +1,12 @@
|
|
| 1 |
-
FROM
|
| 2 |
WORKDIR /app
|
| 3 |
-
COPY
|
| 4 |
-
RUN
|
| 5 |
COPY . .
|
| 6 |
-
|
| 7 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
FROM node:20-alpine AS base
|
| 2 |
WORKDIR /app
|
| 3 |
+
COPY package.json ./
|
| 4 |
+
RUN npm install
|
| 5 |
COPY . .
|
| 6 |
+
RUN npm run build
|
| 7 |
+
|
| 8 |
+
FROM nginx:alpine
|
| 9 |
+
COPY --from=base /app/dist /usr/share/nginx/html
|
| 10 |
+
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
| 11 |
+
EXPOSE 80
|
| 12 |
+
CMD ["nginx", "-g", "daemon off;"]
|
README.md
CHANGED
|
@@ -1,15 +1,13 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
-
emoji:
|
| 4 |
colorFrom: indigo
|
| 5 |
-
colorTo:
|
| 6 |
sdk: docker
|
| 7 |
-
app_port:
|
| 8 |
pinned: false
|
| 9 |
---
|
| 10 |
|
| 11 |
-
#
|
| 12 |
|
| 13 |
-
Multi-project
|
| 14 |
-
|
| 15 |
-
Set `HF_TOKEN` as a Space secret to enable Spaces management.
|
|
|
|
| 1 |
---
|
| 2 |
+
title: OcDash
|
| 3 |
+
emoji: ⚡
|
| 4 |
colorFrom: indigo
|
| 5 |
+
colorTo: blue
|
| 6 |
sdk: docker
|
| 7 |
+
app_port: 80
|
| 8 |
pinned: false
|
| 9 |
---
|
| 10 |
|
| 11 |
+
# OcDash
|
| 12 |
|
| 13 |
+
OpenCode Dashboard - Multi-project orchestration hub for Hugging Face Spaces.
|
|
|
|
|
|
assets/amoled-CTKLNjMY.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const f="https://opencode.ai/desktop-theme.json",t="AMOLED",e="amoled",n={palette:{neutral:"#f0f0f0",ink:"#0a0a0a",primary:"#6200ff",accent:"#ff0080",success:"#00e676",warning:"#ffab00",error:"#ff1744",info:"#00b0ff",diffAdd:"#00e676",diffDelete:"#ff1744"},overrides:{"syntax-comment":"#757575","syntax-keyword":"#d500f9","syntax-string":"#00e676","syntax-primitive":"#00b0ff","syntax-property":"#ff9100","syntax-constant":"#6200ff"}},a={palette:{neutral:"#000000",ink:"#ffffff",primary:"#b388ff",accent:"#ff4081",success:"#00ff88",warning:"#ffea00",error:"#ff1744",info:"#18ffff",diffAdd:"#00ff88",diffDelete:"#ff1744"},overrides:{"syntax-comment":"#555555","syntax-keyword":"#ff00ff","syntax-string":"#00ff88","syntax-primitive":"#18ffff","syntax-property":"#ffea00","syntax-constant":"#b388ff"}},s={$schema:f,name:t,id:e,light:n,dark:a};export{f as $schema,a as dark,s as default,e as id,n as light,t as name};
|
assets/aura-D4OP0z-q.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const a="https://opencode.ai/desktop-theme.json",f="Aura",t="aura",e={palette:{neutral:"#f5f0ff",ink:"#2d2640",primary:"#a277ff",accent:"#d94f4f",success:"#40bf7a",warning:"#d9a24a",error:"#d94f4f",info:"#5bb8d9",diffAdd:"#b3e6cc",diffDelete:"#f5b3b3"},overrides:{"syntax-comment":"#8d88a3","syntax-keyword":"#7b5ae0","syntax-string":"#2b8a57","syntax-primitive":"#2f78b8","syntax-property":"#a96a22","syntax-type":"#2b8a57","syntax-constant":"#d94f4f"}},n={palette:{neutral:"#15141b",ink:"#edecee",primary:"#a277ff",accent:"#ff6767",success:"#61ffca",warning:"#ffca85",error:"#ff6767",info:"#82e2ff",diffAdd:"#61ffca",diffDelete:"#ff6767"},overrides:{"syntax-comment":"#6d6a7e","syntax-keyword":"#a277ff","syntax-string":"#61ffca","syntax-primitive":"#82e2ff","syntax-property":"#ffca85","syntax-type":"#61ffca","syntax-constant":"#ff6767"}},s={$schema:a,name:f,id:t,light:e,dark:n};export{a as $schema,n as dark,s as default,t as id,e as light,f as name};
|
assets/ayu-C-7mtaZC.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const a="https://opencode.ai/desktop-theme.json",n="Ayu",f="ayu",e={palette:{neutral:"#fdfaf4",ink:"#4f5964",primary:"#4aa8c8",accent:"#ef7d71",success:"#5fb978",warning:"#ea9f41",error:"#e6656a",info:"#2f9bce",diffAdd:"#b1d780",diffDelete:"#e6656a"},overrides:{"syntax-comment":"#6e7681","syntax-keyword":"#c76a1a","syntax-string":"#6f8f00","syntax-primitive":"#b87500","syntax-property":"#2f86b7","syntax-type":"#227fc0","syntax-constant":"#a37acc"}},t={palette:{neutral:"#0f1419",ink:"#d6dae0",primary:"#3fb7e3",accent:"#f2856f",success:"#78d05c",warning:"#e4a75c",error:"#f58572",info:"#66c6f1",diffAdd:"#59c57c",diffDelete:"#f58572"},overrides:{"syntax-comment":"#5a6673","syntax-keyword":"#ff8f40","syntax-string":"#aad94c","syntax-primitive":"#ffb454","syntax-property":"#39bae6","syntax-type":"#59c2ff","syntax-constant":"#d2a6ff"}},s={$schema:a,name:"Ayu",id:"ayu",light:e,dark:t};export{a as $schema,t as dark,s as default,f as id,e as light,n as name};
|
assets/carbonfox-DDZsuZPB.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const e="https://opencode.ai/desktop-theme.json",t="Carbonfox",f="carbonfox",n={palette:{neutral:"#8e8e8e",ink:"#161616",primary:"#0072c3",accent:"#da1e28",success:"#198038",warning:"#f1c21b",error:"#da1e28",info:"#0043ce",interactive:"#0f62fe",diffAdd:"#198038",diffDelete:"#da1e28"},overrides:{"syntax-comment":"#6f6f6f","syntax-keyword":"#8a3ffc","syntax-string":"#198038","syntax-primitive":"#0f62fe","syntax-property":"#0043ce","syntax-type":"#8a5f00","syntax-constant":"#da1e28"}},a={palette:{neutral:"#393939",ink:"#f2f4f8",primary:"#33b1ff",accent:"#ff8389",success:"#42be65",warning:"#f1c21b",error:"#ff8389",info:"#78a9ff",interactive:"#4589ff",diffAdd:"#42be65",diffDelete:"#ff8389"},overrides:{"syntax-comment":"#6f6f6f","syntax-keyword":"#be95ff","syntax-string":"#42be65","syntax-primitive":"#33b1ff","syntax-property":"#78a9ff","syntax-type":"#f1c21b","syntax-constant":"#ff8389"}},s={$schema:e,name:t,id:f,light:n,dark:a};export{e as $schema,a as dark,s as default,f as id,n as light,t as name};
|
assets/catppuccin-frappe-BbhwKQAy.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const e="https://opencode.ai/desktop-theme.json",a="Catppuccin Frappe",n="catppuccin-frappe",t={palette:{neutral:"#303446",ink:"#c6d0f5",primary:"#8da4e2",accent:"#f4b8e4",success:"#a6d189",warning:"#e5c890",error:"#e78284",info:"#81c8be"},overrides:{"text-weak":"#b5bfe2","syntax-comment":"#949cb8","syntax-keyword":"#ca9ee6","syntax-string":"#a6d189","syntax-primitive":"#8da4e2","syntax-variable":"#e78284","syntax-property":"#99d1db","syntax-type":"#e5c890","syntax-constant":"#ef9f76","syntax-operator":"#99d1db","syntax-punctuation":"#c6d0f5","syntax-object":"#e78284","markdown-heading":"#ca9ee6","markdown-text":"#c6d0f5","markdown-link":"#8da4e2","markdown-link-text":"#99d1db","markdown-code":"#a6d189","markdown-block-quote":"#e5c890","markdown-emph":"#e5c890","markdown-strong":"#ef9f76","markdown-horizontal-rule":"#a5adce","markdown-list-item":"#8da4e2","markdown-list-enumeration":"#99d1db","markdown-image":"#8da4e2","markdown-image-text":"#99d1db","markdown-code-block":"#c6d0f5"}},d={palette:{neutral:"#303446",ink:"#c6d0f5",primary:"#8da4e2",accent:"#f4b8e4",success:"#a6d189",warning:"#e5c890",error:"#e78284",info:"#81c8be"},overrides:{"text-weak":"#b5bfe2","syntax-comment":"#949cb8","syntax-keyword":"#ca9ee6","syntax-string":"#a6d189","syntax-primitive":"#8da4e2","syntax-variable":"#e78284","syntax-property":"#99d1db","syntax-type":"#e5c890","syntax-constant":"#ef9f76","syntax-operator":"#99d1db","syntax-punctuation":"#c6d0f5","syntax-object":"#e78284","markdown-heading":"#ca9ee6","markdown-text":"#c6d0f5","markdown-link":"#8da4e2","markdown-link-text":"#99d1db","markdown-code":"#a6d189","markdown-block-quote":"#e5c890","markdown-emph":"#e5c890","markdown-strong":"#ef9f76","markdown-horizontal-rule":"#a5adce","markdown-list-item":"#8da4e2","markdown-list-enumeration":"#99d1db","markdown-image":"#8da4e2","markdown-image-text":"#99d1db","markdown-code-block":"#c6d0f5"}},o={$schema:e,name:a,id:n,light:t,dark:d};export{e as $schema,d as dark,o as default,n as id,t as light,a as name};
|
assets/catppuccin-macchiato-BG2vmDCz.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const a="https://opencode.ai/desktop-theme.json",e="Catppuccin Macchiato",t="catppuccin-macchiato",n={palette:{neutral:"#24273a",ink:"#cad3f5",primary:"#8aadf4",accent:"#f5bde6",success:"#a6da95",warning:"#eed49f",error:"#ed8796",info:"#8bd5ca"},overrides:{"text-weak":"#b8c0e0","syntax-comment":"#939ab7","syntax-keyword":"#c6a0f6","syntax-string":"#a6da95","syntax-primitive":"#8aadf4","syntax-variable":"#ed8796","syntax-property":"#91d7e3","syntax-type":"#eed49f","syntax-constant":"#f5a97f","syntax-operator":"#91d7e3","syntax-punctuation":"#cad3f5","syntax-object":"#ed8796","markdown-heading":"#c6a0f6","markdown-text":"#cad3f5","markdown-link":"#8aadf4","markdown-link-text":"#91d7e3","markdown-code":"#a6da95","markdown-block-quote":"#eed49f","markdown-emph":"#eed49f","markdown-strong":"#f5a97f","markdown-horizontal-rule":"#a5adcb","markdown-list-item":"#8aadf4","markdown-list-enumeration":"#91d7e3","markdown-image":"#8aadf4","markdown-image-text":"#91d7e3","markdown-code-block":"#cad3f5"}},d={palette:{neutral:"#24273a",ink:"#cad3f5",primary:"#8aadf4",accent:"#f5bde6",success:"#a6da95",warning:"#eed49f",error:"#ed8796",info:"#8bd5ca"},overrides:{"text-weak":"#b8c0e0","syntax-comment":"#939ab7","syntax-keyword":"#c6a0f6","syntax-string":"#a6da95","syntax-primitive":"#8aadf4","syntax-variable":"#ed8796","syntax-property":"#91d7e3","syntax-type":"#eed49f","syntax-constant":"#f5a97f","syntax-operator":"#91d7e3","syntax-punctuation":"#cad3f5","syntax-object":"#ed8796","markdown-heading":"#c6a0f6","markdown-text":"#cad3f5","markdown-link":"#8aadf4","markdown-link-text":"#91d7e3","markdown-code":"#a6da95","markdown-block-quote":"#eed49f","markdown-emph":"#eed49f","markdown-strong":"#f5a97f","markdown-horizontal-rule":"#a5adcb","markdown-list-item":"#8aadf4","markdown-list-enumeration":"#91d7e3","markdown-image":"#8aadf4","markdown-image-text":"#91d7e3","markdown-code-block":"#cad3f5"}},o={$schema:a,name:e,id:t,light:n,dark:d};export{a as $schema,d as dark,o as default,t as id,n as light,e as name};
|
assets/catppuccin-ukvyfYoH.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const e="https://opencode.ai/desktop-theme.json",t="Catppuccin",a="catppuccin",n={palette:{neutral:"#f5e0dc",ink:"#4c4f69",primary:"#7287fd",accent:"#d20f39",success:"#40a02b",warning:"#df8e1d",error:"#d20f39",info:"#04a5e5",diffAdd:"#a6d189",diffDelete:"#e78284"},overrides:{"syntax-comment":"#6c7086","syntax-keyword":"#8839ef","syntax-primitive":"#1e66f5","syntax-constant":"#ca6702"}},c={palette:{neutral:"#1e1e2e",ink:"#cdd6f4",primary:"#b4befe",accent:"#f38ba8",success:"#a6d189",warning:"#f4b8e4",error:"#f38ba8",info:"#89dceb",diffAdd:"#94e2d5",diffDelete:"#f38ba8"},overrides:{"syntax-comment":"#6c7086","syntax-keyword":"#cba6f7","syntax-primitive":"#89b4fa","syntax-constant":"#fab387"}},d={$schema:e,name:t,id:a,light:n,dark:c};export{e as $schema,c as dark,d as default,a as id,n as light,t as name};
|
assets/cobalt2-DAVdkIoy.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const f="https://opencode.ai/desktop-theme.json",a="Cobalt2",t="cobalt2",n={palette:{neutral:"#ffffff",ink:"#193549",primary:"#0066cc",accent:"#00acc1",success:"#4caf50",warning:"#ff9800",error:"#e91e63",info:"#ff5722"},overrides:{"text-weak":"#5c6b7d","syntax-comment":"#5c6b7d","syntax-keyword":"#ff5722","syntax-string":"#4caf50","syntax-primitive":"#ff9800","syntax-variable":"#193549","syntax-property":"#00acc1","syntax-type":"#00acc1","syntax-constant":"#e91e63","syntax-operator":"#ff5722","syntax-punctuation":"#193549","syntax-object":"#193549","markdown-heading":"#ff9800","markdown-text":"#193549","markdown-link":"#0066cc","markdown-link-text":"#00acc1","markdown-code":"#4caf50","markdown-block-quote":"#5c6b7d","markdown-emph":"#ff5722","markdown-strong":"#e91e63","markdown-horizontal-rule":"#d3dae3","markdown-list-item":"#0066cc","markdown-list-enumeration":"#00acc1","markdown-image":"#0066cc","markdown-image-text":"#00acc1","markdown-code-block":"#193549"}},e={palette:{neutral:"#193549",ink:"#ffffff",primary:"#0088ff",accent:"#2affdf",success:"#9eff80",warning:"#ffc600",error:"#ff0088",info:"#ff9d00",diffAdd:"#b9ff9f",diffDelete:"#ff5fb3"},overrides:{"text-weak":"#adb7c9","syntax-comment":"#0088ff","syntax-keyword":"#ff9d00","syntax-string":"#9eff80","syntax-primitive":"#ffc600","syntax-variable":"#ffffff","syntax-property":"#2affdf","syntax-type":"#2affdf","syntax-constant":"#ff628c","syntax-operator":"#ff9d00","syntax-punctuation":"#ffffff","syntax-object":"#ffffff","markdown-heading":"#ffc600","markdown-text":"#ffffff","markdown-link":"#0088ff","markdown-link-text":"#2affdf","markdown-code":"#9eff80","markdown-block-quote":"#adb7c9","markdown-emph":"#ff9d00","markdown-strong":"#ff628c","markdown-horizontal-rule":"#2d5a7b","markdown-list-item":"#0088ff","markdown-list-enumeration":"#2affdf","markdown-image":"#0088ff","markdown-image-text":"#2affdf","markdown-code-block":"#ffffff"}},o={$schema:f,name:a,id:t,light:n,dark:e};export{f as $schema,e as dark,o as default,t as id,n as light,a as name};
|
assets/cursor-CX4xD2IP.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const e="https://opencode.ai/desktop-theme.json",a="Cursor",t="cursor",n={palette:{neutral:"#fcfcfc",ink:"#141414",primary:"#6f9ba6",accent:"#6f9ba6",success:"#1f8a65",warning:"#db704b",error:"#cf2d56",info:"#3c7cab",interactive:"#206595",diffAdd:"#55a583",diffDelete:"#e75e78"},overrides:{"text-weak":"#141414ad","syntax-comment":"#141414ad","syntax-keyword":"#b3003f","syntax-string":"#9e94d5","syntax-primitive":"#db704b","syntax-variable":"#141414","syntax-property":"#141414ad","syntax-type":"#206595","syntax-constant":"#b8448b","syntax-operator":"#141414","syntax-punctuation":"#141414","syntax-object":"#141414","markdown-heading":"#206595","markdown-text":"#141414","markdown-link":"#206595","markdown-link-text":"#141414ad","markdown-code":"#1f8a65","markdown-block-quote":"#141414ad","markdown-emph":"#141414","markdown-strong":"#141414","markdown-horizontal-rule":"#141414ad","markdown-list-item":"#141414","markdown-list-enumeration":"#141414ad","markdown-image":"#206595","markdown-image-text":"#141414ad","markdown-code-block":"#141414"}},o={palette:{neutral:"#181818",ink:"#e4e4e4",primary:"#88c0d0",accent:"#88c0d0",success:"#3fa266",warning:"#f1b467",error:"#e34671",info:"#81a1c1",interactive:"#82D2CE",diffAdd:"#70b489",diffDelete:"#fc6b83"},overrides:{"text-weak":"#e4e4e45e","syntax-comment":"#e4e4e45e","syntax-keyword":"#82D2CE","syntax-string":"#E394DC","syntax-primitive":"#EFB080","syntax-variable":"#e4e4e4","syntax-property":"#81a1c1","syntax-type":"#EFB080","syntax-constant":"#F8C762","syntax-operator":"#e4e4e4","syntax-punctuation":"#e4e4e4","syntax-object":"#e4e4e4","markdown-heading":"#AAA0FA","markdown-text":"#e4e4e4","markdown-link":"#82D2CE","markdown-link-text":"#81a1c1","markdown-code":"#E394DC","markdown-block-quote":"#e4e4e45e","markdown-emph":"#82D2CE","markdown-strong":"#F8C762","markdown-horizontal-rule":"#e4e4e45e","markdown-list-item":"#e4e4e4","markdown-list-enumeration":"#88c0d0","markdown-image":"#88c0d0","markdown-image-text":"#81a1c1","markdown-code-block":"#e4e4e4"}},r={$schema:e,name:a,id:t,light:n,dark:o};export{e as $schema,o as dark,r as default,t as id,n as light,a as name};
|
assets/dracula-Bwy36Hqr.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const f="https://opencode.ai/desktop-theme.json",t="Dracula",e="dracula",a={palette:{neutral:"#f8f8f2",ink:"#1f1f2f",primary:"#7c6bf5",accent:"#d16090",success:"#2fbf71",warning:"#f7a14d",error:"#d9536f",info:"#1d7fc5",diffAdd:"#9fe3b3",diffDelete:"#f8a1b8"},overrides:{"syntax-comment":"#7d7f97","syntax-keyword":"#d16090","syntax-string":"#596600","syntax-primitive":"#2f8f57","syntax-property":"#1d7fc5","syntax-constant":"#7c6bf5"}},n={palette:{neutral:"#1d1e28",ink:"#f8f8f2",primary:"#bd93f9",accent:"#ff79c6",success:"#50fa7b",warning:"#ffb86c",error:"#ff5555",info:"#8be9fd",diffAdd:"#2fb27d",diffDelete:"#ff6b81"},overrides:{"syntax-comment":"#6272a4","syntax-keyword":"#ff79c6","syntax-string":"#f1fa8c","syntax-primitive":"#50fa7b","syntax-property":"#8be9fd","syntax-constant":"#bd93f9"}},s={$schema:f,name:t,id:e,light:a,dark:n};export{f as $schema,n as dark,s as default,e as id,a as light,t as name};
|
assets/everforest-DCRF6ST7.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const a="https://opencode.ai/desktop-theme.json",t="Everforest",e="everforest",n={palette:{neutral:"#fdf6e3",ink:"#5c6a72",primary:"#8da101",accent:"#df69ba",success:"#8da101",warning:"#f57d26",error:"#f85552",info:"#35a77c",diffAdd:"#4db380",diffDelete:"#f52a65"},overrides:{"text-weak":"#a6b0a0","syntax-comment":"#a6b0a0","syntax-keyword":"#df69ba","syntax-string":"#8da101","syntax-primitive":"#8da101","syntax-variable":"#f85552","syntax-property":"#35a77c","syntax-type":"#dfa000","syntax-constant":"#f57d26","syntax-operator":"#35a77c","syntax-punctuation":"#5c6a72","syntax-object":"#f85552","markdown-heading":"#df69ba","markdown-text":"#5c6a72","markdown-link":"#8da101","markdown-link-text":"#35a77c","markdown-code":"#8da101","markdown-block-quote":"#dfa000","markdown-emph":"#dfa000","markdown-strong":"#f57d26","markdown-horizontal-rule":"#a6b0a0","markdown-list-item":"#8da101","markdown-list-enumeration":"#35a77c","markdown-image":"#8da101","markdown-image-text":"#35a77c","markdown-code-block":"#5c6a72"}},d={palette:{neutral:"#2d353b",ink:"#d3c6aa",primary:"#a7c080",accent:"#d699b6",success:"#a7c080",warning:"#e69875",error:"#e67e80",info:"#83c092",diffAdd:"#b8db87",diffDelete:"#e26a75"},overrides:{"text-weak":"#7a8478","syntax-comment":"#7a8478","syntax-keyword":"#d699b6","syntax-string":"#a7c080","syntax-primitive":"#a7c080","syntax-variable":"#e67e80","syntax-property":"#83c092","syntax-type":"#dbbc7f","syntax-constant":"#e69875","syntax-operator":"#83c092","syntax-punctuation":"#d3c6aa","syntax-object":"#e67e80","markdown-heading":"#d699b6","markdown-text":"#d3c6aa","markdown-link":"#a7c080","markdown-link-text":"#83c092","markdown-code":"#a7c080","markdown-block-quote":"#dbbc7f","markdown-emph":"#dbbc7f","markdown-strong":"#e69875","markdown-horizontal-rule":"#7a8478","markdown-list-item":"#a7c080","markdown-list-enumeration":"#83c092","markdown-image":"#a7c080","markdown-image-text":"#83c092","markdown-code-block":"#d3c6aa"}},o={$schema:a,name:t,id:e,light:n,dark:d};export{a as $schema,d as dark,o as default,e as id,n as light,t as name};
|
assets/flexoki-Cuz5xwiW.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const n="https://opencode.ai/desktop-theme.json",t="Flexoki",a="flexoki",o={palette:{neutral:"#FFFCF0",ink:"#100F0F",primary:"#205EA6",accent:"#BC5215",success:"#66800B",warning:"#BC5215",error:"#AF3029",info:"#24837B"},overrides:{"text-weak":"#6F6E69","syntax-comment":"#6F6E69","syntax-keyword":"#66800B","syntax-string":"#24837B","syntax-primitive":"#BC5215","syntax-variable":"#205EA6","syntax-property":"#24837B","syntax-type":"#AD8301","syntax-constant":"#5E409D","syntax-operator":"#6F6E69","syntax-punctuation":"#6F6E69","syntax-object":"#205EA6","markdown-heading":"#5E409D","markdown-text":"#100F0F","markdown-link":"#205EA6","markdown-link-text":"#24837B","markdown-code":"#24837B","markdown-block-quote":"#AD8301","markdown-emph":"#AD8301","markdown-strong":"#BC5215","markdown-horizontal-rule":"#6F6E69","markdown-list-item":"#BC5215","markdown-list-enumeration":"#24837B","markdown-image":"#A02F6F","markdown-image-text":"#24837B","markdown-code-block":"#100F0F"}},e={palette:{neutral:"#100F0F",ink:"#CECDC3",primary:"#DA702C",accent:"#8B7EC8",success:"#879A39",warning:"#DA702C",error:"#D14D41",info:"#3AA99F",interactive:"#4385BE"},overrides:{"text-weak":"#6F6E69","syntax-comment":"#6F6E69","syntax-keyword":"#879A39","syntax-string":"#3AA99F","syntax-primitive":"#DA702C","syntax-variable":"#4385BE","syntax-property":"#3AA99F","syntax-type":"#D0A215","syntax-constant":"#8B7EC8","syntax-operator":"#B7B5AC","syntax-punctuation":"#B7B5AC","syntax-object":"#4385BE","markdown-heading":"#8B7EC8","markdown-text":"#CECDC3","markdown-link":"#4385BE","markdown-link-text":"#3AA99F","markdown-code":"#3AA99F","markdown-block-quote":"#D0A215","markdown-emph":"#D0A215","markdown-strong":"#DA702C","markdown-horizontal-rule":"#6F6E69","markdown-list-item":"#DA702C","markdown-list-enumeration":"#3AA99F","markdown-image":"#CE5D97","markdown-image-text":"#3AA99F","markdown-code-block":"#CECDC3"}},r={$schema:n,name:t,id:a,light:o,dark:e};export{n as $schema,e as dark,r as default,a as id,o as light,t as name};
|
assets/github-DYnPGtRk.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const a="https://opencode.ai/desktop-theme.json",t="GitHub",n="github",e={palette:{neutral:"#ffffff",ink:"#24292f",primary:"#0969da",accent:"#1b7c83",success:"#1a7f37",warning:"#9a6700",error:"#cf222e",info:"#bc4c00"},overrides:{"text-weak":"#57606a","syntax-comment":"#57606a","syntax-keyword":"#cf222e","syntax-string":"#0969da","syntax-primitive":"#8250df","syntax-variable":"#bc4c00","syntax-property":"#1b7c83","syntax-type":"#bc4c00","syntax-constant":"#1b7c83","syntax-operator":"#cf222e","syntax-punctuation":"#24292f","syntax-object":"#bc4c00","markdown-heading":"#0969da","markdown-text":"#24292f","markdown-link":"#0969da","markdown-link-text":"#1b7c83","markdown-code":"#bf3989","markdown-block-quote":"#57606a","markdown-emph":"#9a6700","markdown-strong":"#bc4c00","markdown-horizontal-rule":"#d0d7de","markdown-list-item":"#0969da","markdown-list-enumeration":"#1b7c83","markdown-image":"#0969da","markdown-image-text":"#1b7c83","markdown-code-block":"#24292f"}},o={palette:{neutral:"#0d1117",ink:"#c9d1d9",primary:"#58a6ff",accent:"#39c5cf",success:"#3fb950",warning:"#e3b341",error:"#f85149",info:"#d29922"},overrides:{"text-weak":"#8b949e","syntax-comment":"#8b949e","syntax-keyword":"#ff7b72","syntax-string":"#39c5cf","syntax-primitive":"#bc8cff","syntax-variable":"#d29922","syntax-property":"#39c5cf","syntax-type":"#d29922","syntax-constant":"#58a6ff","syntax-operator":"#ff7b72","syntax-punctuation":"#c9d1d9","syntax-object":"#d29922","markdown-heading":"#58a6ff","markdown-text":"#c9d1d9","markdown-link":"#58a6ff","markdown-link-text":"#39c5cf","markdown-code":"#ff7b72","markdown-block-quote":"#8b949e","markdown-emph":"#e3b341","markdown-strong":"#d29922","markdown-horizontal-rule":"#30363d","markdown-list-item":"#58a6ff","markdown-list-enumeration":"#39c5cf","markdown-image":"#58a6ff","markdown-image-text":"#39c5cf","markdown-code-block":"#c9d1d9"}},r={$schema:a,name:t,id:n,light:e,dark:o};export{a as $schema,o as dark,r as default,n as id,e as light,t as name};
|
assets/gruvbox-D79fVyNx.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const e="https://opencode.ai/desktop-theme.json",t="Gruvbox",n="gruvbox",a={palette:{neutral:"#fbf1c7",ink:"#3c3836",primary:"#076678",accent:"#9d0006",success:"#79740e",warning:"#b57614",error:"#9d0006",info:"#8f3f71",diffAdd:"#79740e",diffDelete:"#9d0006"},overrides:{"syntax-comment":"#928374","syntax-keyword":"#9d0006","syntax-primitive":"#076678","syntax-constant":"#8f3f71"}},s={palette:{neutral:"#282828",ink:"#ebdbb2",primary:"#83a598",accent:"#fb4934",success:"#b8bb26",warning:"#fabd2f",error:"#fb4934",info:"#d3869b",diffAdd:"#b8bb26",diffDelete:"#fb4934"},overrides:{"syntax-comment":"#928374","syntax-keyword":"#fb4934","syntax-primitive":"#83a598","syntax-constant":"#d3869b"}},r={$schema:e,name:t,id:n,light:a,dark:s};export{e as $schema,s as dark,r as default,n as id,a as light,t as name};
|
assets/index-BSf9pAXA.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
[data-component=button-v2]{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:6px;font-style:normal;font-weight:530;font-size:13px;line-height:1;color:var(--v2-text-text-base);text-shadow:none;font-variant-numeric:tabular-nums;letter-spacing:-.04px;user-select:none;cursor:pointer;outline:none}[data-component=button-v2]:focus{outline:none}[data-component=button-v2]:is(:focus-visible,[data-state=focus]):not(:disabled):not([data-variant=loading]){outline:2px solid var(--v2-border-border-focus);outline-offset:2.5px}[data-component=button-v2][data-size=normal]{height:28px;padding:0 11px}[data-component=button-v2][data-size=small]{height:24px;padding:0 9px;border-radius:4px}[data-component=button-v2][data-size=large]{height:32px;padding:0 15px}[data-component=button-v2][data-icon][data-size=small]{padding-left:9px}[data-component=button-v2][data-icon][data-size=normal]{padding-left:11px}[data-component=button-v2][data-icon][data-size=large]{padding-left:15px}[data-component=button-v2] [data-slot=icon-svg]{color:currentColor}[data-component=button-v2][data-variant=neutral]{background-color:var(--v2-background-bg-button-neutral);color:var(--v2-text-text-base);box-shadow:var(--v2-elevation-button-neutral)}[data-component=button-v2][data-variant=neutral]:is(:hover,[data-state=hover]):not(:disabled){background-image:linear-gradient(90deg,var(--v2-overlay-simple-overlay-hover) 0%,var(--v2-overlay-simple-overlay-hover) 100%),linear-gradient(90deg,var(--v2-background-bg-button-neutral) 0%,var(--v2-background-bg-button-neutral) 100%)}[data-component=button-v2][data-variant=neutral]:is(:active,[data-state=pressed]):not(:disabled){background-image:linear-gradient(90deg,var(--v2-overlay-simple-overlay-pressed) 0%,var(--v2-overlay-simple-overlay-pressed) 100%),linear-gradient(90deg,var(--v2-background-bg-button-neutral) 0%,var(--v2-background-bg-button-neutral) 100%)}[data-component=button-v2][data-variant=neutral]:is(:disabled,[data-state=disabled]){opacity:.5;cursor:not-allowed}[data-component=button-v2][data-variant=danger]{background-color:var(--v2-background-bg-button-neutral);color:var(--v2-state-fg-danger);box-shadow:var(--v2-elevation-button-neutral)}[data-component=button-v2][data-variant=danger]:is(:hover,[data-state=hover]):not(:disabled){background-image:linear-gradient(90deg,var(--v2-overlay-simple-overlay-hover) 0%,var(--v2-overlay-simple-overlay-hover) 100%),linear-gradient(90deg,var(--v2-background-bg-button-neutral) 0%,var(--v2-background-bg-button-neutral) 100%)}[data-component=button-v2][data-variant=danger]:is(:active,[data-state=pressed]):not(:disabled){background-image:linear-gradient(90deg,var(--v2-overlay-simple-overlay-pressed) 0%,var(--v2-overlay-simple-overlay-pressed) 100%),linear-gradient(90deg,var(--v2-background-bg-button-neutral) 0%,var(--v2-background-bg-button-neutral) 100%)}[data-component=button-v2][data-variant=danger]:is(:disabled,[data-state=disabled]){opacity:.5;cursor:not-allowed}[data-component=button-v2][data-variant=outline]{background-color:transparent;color:var(--v2-text-text-base);box-shadow:inset 0 0 0 1px var(--v2-border-border-muted)}[data-component=button-v2][data-variant=outline]:is(:hover,[data-state=hover]):not(:disabled){background-color:var(--v2-overlay-simple-overlay-hover)}[data-component=button-v2][data-variant=outline]:is(:active,[data-state=pressed]):not(:disabled){background-color:var(--v2-overlay-simple-overlay-pressed)}[data-component=button-v2][data-variant=outline]:is(:disabled,[data-state=disabled]){opacity:.5;cursor:not-allowed}[data-component=button-v2][data-variant=contrast]{background-image:linear-gradient(180deg,var(--v2-alpha-light-20) 0%,var(--v2-alpha-light-0) 100%),linear-gradient(90deg,var(--v2-background-bg-contrast) 0%,var(--v2-background-bg-contrast) 100%);color:var(--v2-text-text-contrast);text-shadow:0 .5px .5px rgba(0,0,0,.3);box-shadow:var(--v2-elevation-button-contrast)}[data-component=button-v2][data-variant=contrast]:is(:hover,[data-state=hover]):not(:disabled){background-image:linear-gradient(90deg,var(--v2-overlay-simple-overlay-contrast-hover) 0%,var(--v2-overlay-simple-overlay-contrast-hover) 100%),linear-gradient(180deg,var(--v2-alpha-light-20) 0%,var(--v2-alpha-light-0) 100%),linear-gradient(90deg,var(--v2-background-bg-contrast) 0%,var(--v2-background-bg-contrast) 100%)}[data-component=button-v2][data-variant=contrast]:is(:active,[data-state=pressed]):not(:disabled){background-image:linear-gradient(90deg,var(--v2-overlay-simple-overlay-contrast-pressed) 0%,var(--v2-overlay-simple-overlay-contrast-pressed) 100%),linear-gradient(180deg,var(--v2-alpha-light-20) 0%,var(--v2-alpha-light-0) 100%),linear-gradient(90deg,var(--v2-background-bg-contrast) 0%,var(--v2-background-bg-contrast) 100%)}[data-component=button-v2][data-variant=contrast]:is(:disabled,[data-state=disabled]){opacity:.4;cursor:not-allowed}[data-component=button-v2][data-variant=loading]{background:#f2f2f2;color:var(--v2-text-text-base);box-shadow:inset 0 0 0 .5px #00000014;cursor:default;pointer-events:none}[data-component=button-v2][data-variant=ghost]{background-color:transparent;color:var(--v2-text-text-base)}[data-component=button-v2][data-variant=ghost]:is(:hover,[data-state=hover]):not(:disabled):not([data-expanded]){background-color:var(--v2-overlay-simple-overlay-hover)}[data-component=button-v2][data-variant=ghost]:is(:active,[data-state=pressed]):not(:disabled){background-color:var(--v2-overlay-simple-overlay-pressed)}[data-component=button-v2][data-variant=ghost]:where([data-expanded]):not(:disabled){background-color:var(--v2-overlay-simple-overlay-pressed)}[data-component=button-v2][data-variant=ghost]:is(:disabled,[data-state=disabled]){opacity:.5;cursor:not-allowed}[data-component=button-v2][data-variant=ghost-muted]{background-color:transparent;color:var(--v2-text-text-muted)}[data-component=button-v2][data-variant=ghost-muted] [data-slot=icon-svg]{color:var(--v2-icon-icon-muted)}[data-component=button-v2][data-variant=ghost-muted]:is(:hover,[data-state=hover]):not(:disabled):not([data-expanded]){background-color:var(--v2-overlay-simple-overlay-hover)}[data-component=button-v2][data-variant=ghost-muted]:is(:active,[data-state=pressed]):not(:disabled){background-color:var(--v2-overlay-simple-overlay-pressed)}[data-component=button-v2][data-variant=ghost-muted]:where([data-expanded]):not(:disabled){background-color:var(--v2-overlay-simple-overlay-pressed);color:var(--v2-text-text-base)}[data-component=button-v2][data-variant=ghost-muted]:where([data-expanded]):not(:disabled) [data-slot=icon-svg]{color:var(--v2-icon-icon-base)}[data-component=button-v2][data-variant=ghost-muted]:is(:disabled,[data-state=disabled]){opacity:.5;cursor:not-allowed}[data-component=textarea-v2]{box-sizing:border-box;display:flex;flex-direction:column;align-items:stretch;padding:0 2px 2px 0;width:280px;min-height:80px;border:0;border-radius:6px;outline:1px solid transparent;outline-offset:0;background:linear-gradient(180deg,var(--v2-alpha-light-2) 0%,var(--v2-alpha-light-0) 100%),var(--v2-background-bg-base);box-shadow:var(--v2-elevation-button-neutral);flex:none;align-self:stretch;transition:background 85ms ease-out,outline-color 85ms ease-out,box-shadow 85ms ease-out}[data-component=textarea-v2]:where(:hover):not([data-disabled],[data-invalid]):not(:focus-within){background:linear-gradient(0deg,var(--v2-overlay-simple-overlay-hover),var(--v2-overlay-simple-overlay-hover)),linear-gradient(180deg,var(--v2-alpha-light-2) 0%,var(--v2-alpha-light-0) 100%),var(--v2-background-bg-base)}[data-component=textarea-v2]:where(:focus-within):not([data-disabled],[data-invalid]){outline-color:var(--v2-border-border-focus);box-shadow:none}[data-component=textarea-v2]:where([data-invalid]):not([data-disabled]){outline-color:var(--v2-state-fg-danger);box-shadow:none}[data-component=textarea-v2]:where([data-disabled]){opacity:.5;cursor:not-allowed}[data-component=textarea-v2] [data-slot=textarea-v2-textarea]{display:block;width:100%;min-width:0;min-height:80px;height:100%;padding:8px;margin:0;border:0;background:transparent;outline:none;resize:vertical;font-style:normal;font-weight:440;font-size:13px;line-height:1.35;letter-spacing:-.04px;color:var(--v2-text-text-base);font-variation-settings:"slnt" 0}[data-component=textarea-v2] [data-slot=textarea-v2-textarea]::placeholder{color:var(--v2-text-text-faint)}[data-component=textarea-v2][data-invalid]:not([data-disabled]) [data-slot=textarea-v2-textarea]{color:var(--v2-state-fg-danger);caret-color:var(--v2-state-fg-danger)}[data-component=textarea-v2][data-invalid]:not([data-disabled]) [data-slot=textarea-v2-textarea]::placeholder{color:var(--v2-state-fg-danger);opacity:1}*{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:geometricPrecision}[data-component=icon-button-v2]{display:inline-flex;align-items:center;justify-content:center;border-radius:6px;color:var(--v2-text-text-base);user-select:none;outline:none;padding:0;cursor:default}[data-component=icon-button-v2]:focus{outline:none}[data-component=icon-button-v2]:is(:focus-visible,[data-state=focus]):not(:disabled){outline:2px solid var(--v2-border-border-focus);outline-offset:2.5px}[data-component=icon-button-v2][data-size=small]{width:20px;height:20px;border-radius:4px}[data-component=icon-button-v2][data-size=normal]{width:24px;height:24px}[data-component=icon-button-v2][data-size=large]{width:28px;height:28px}[data-component=icon-button-v2] [data-slot=icon-svg]{color:currentColor}[data-component=icon-button-v2][data-variant=neutral]{background-color:var(--v2-background-bg-button-neutral);color:var(--v2-text-text-base);box-shadow:var(--v2-elevation-button-neutral)}[data-component=icon-button-v2][data-variant=neutral]:is(:hover,[data-state=hover]):not(:disabled){background-image:linear-gradient(90deg,var(--v2-overlay-simple-overlay-hover) 0%,var(--v2-overlay-simple-overlay-hover) 100%),linear-gradient(90deg,var(--v2-background-bg-button-neutral) 0%,var(--v2-background-bg-button-neutral) 100%)}[data-component=icon-button-v2][data-variant=neutral]:is(:active,[data-state=pressed]):not(:disabled){background-image:linear-gradient(90deg,var(--v2-overlay-simple-overlay-pressed) 0%,var(--v2-overlay-simple-overlay-pressed) 100%),linear-gradient(90deg,var(--v2-background-bg-button-neutral) 0%,var(--v2-background-bg-button-neutral) 100%)}[data-component=icon-button-v2][data-variant=neutral]:is(:disabled,[data-state=disabled]){opacity:.5;cursor:not-allowed}[data-component=icon-button-v2][data-variant=contrast]{background-image:linear-gradient(180deg,var(--v2-alpha-light-20) 0%,var(--v2-alpha-light-0) 100%),linear-gradient(90deg,var(--v2-background-bg-contrast) 0%,var(--v2-background-bg-contrast) 100%);color:var(--v2-text-text-contrast);text-shadow:0 .5px .5px rgba(0,0,0,.3);box-shadow:var(--v2-elevation-button-contrast)}[data-component=icon-button-v2][data-variant=contrast]:is(:hover,[data-state=hover]):not(:disabled){background-image:linear-gradient(90deg,var(--v2-overlay-simple-overlay-contrast-hover) 0%,var(--v2-overlay-simple-overlay-contrast-hover) 100%),linear-gradient(180deg,var(--v2-alpha-light-20) 0%,var(--v2-alpha-light-0) 100%),linear-gradient(90deg,var(--v2-background-bg-contrast) 0%,var(--v2-background-bg-contrast) 100%)}[data-component=icon-button-v2][data-variant=contrast]:is(:active,[data-state=pressed]):not(:disabled){background-image:linear-gradient(90deg,var(--v2-overlay-simple-overlay-contrast-pressed) 0%,var(--v2-overlay-simple-overlay-contrast-pressed) 100%),linear-gradient(180deg,var(--v2-alpha-light-20) 0%,var(--v2-alpha-light-0) 100%),linear-gradient(90deg,var(--v2-background-bg-contrast) 0%,var(--v2-background-bg-contrast) 100%)}[data-component=icon-button-v2][data-variant=contrast]:is(:disabled,[data-state=disabled]){opacity:.4;cursor:not-allowed}[data-component=icon-button-v2][data-variant=ghost]{background-color:transparent;color:var(--v2-text-text-base)}[data-component=icon-button-v2][data-variant=ghost]:is(:hover,[data-state=hover],[data-expanded]):not(:disabled){background-color:var(--v2-overlay-simple-overlay-hover)}[data-component=icon-button-v2][data-variant=ghost]:is(:active,[data-state=pressed]):not(:disabled){background-color:var(--v2-overlay-simple-overlay-pressed)}[data-component=icon-button-v2][data-variant=ghost]:is(:disabled,[data-state=disabled]){opacity:.5;cursor:not-allowed}[data-component=icon-button-v2][data-variant=ghost-muted]{background-color:transparent;color:var(--v2-icon-icon-muted)}[data-component=icon-button-v2][data-variant=ghost-muted]:is(:hover,[data-state=hover],[data-expanded]):not(:disabled){background-color:var(--v2-overlay-simple-overlay-hover)}[data-component=icon-button-v2][data-variant=ghost-muted]:is(:active,[data-state=pressed]):not(:disabled){background-color:var(--v2-overlay-simple-overlay-pressed);color:var(--v2-icon-icon-base)}[data-component=icon-button-v2][data-variant=ghost-muted]:where([data-expanded]):not(:disabled){background-color:var(--v2-overlay-simple-overlay-pressed);color:var(--v2-icon-icon-base)}[data-component=icon-button-v2][data-variant=ghost-muted]:is(:disabled,[data-state=disabled]){opacity:.5;cursor:not-allowed}@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-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-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}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--text-base:1rem;--text-base--line-height: 1.5 ;--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)}:root{--v2-grey-50:#fff;--v2-grey-100:#fafafa;--v2-grey-200:#f2f2f2;--v2-grey-300:#eee;--v2-grey-400:#dbdbdb;--v2-grey-500:#aeaeae;--v2-grey-600:gray;--v2-grey-700:#5c5c5c;--v2-grey-800:#3a3a3a;--v2-grey-900:#2e2e2e;--v2-grey-1000:#242424;--v2-grey-1100:#161616;--v2-grey-1200:#080808;--v2-alpha-dark-100:#000;--v2-alpha-dark-90:#000000e5;--v2-alpha-dark-80:#000c;--v2-alpha-dark-70:#000000b2;--v2-alpha-dark-60:#0009;--v2-alpha-dark-50:#00000080;--v2-alpha-dark-40:#0006;--v2-alpha-dark-30:#0000004d;--v2-alpha-dark-24:#0000003d;--v2-alpha-dark-20:#0003;--v2-alpha-dark-16:#00000029;--v2-alpha-dark-14:#00000024;--v2-alpha-dark-12:#0000001f;--v2-alpha-dark-10:#0000001a;--v2-alpha-dark-8:#00000014;--v2-alpha-dark-6:#0000000f;--v2-alpha-dark-4:#0000000a;--v2-alpha-dark-2:#00000005;--v2-alpha-dark-0:#0000;--v2-alpha-light-100:#fff;--v2-alpha-light-90:#ffffffe5;--v2-alpha-light-80:#fffc;--v2-alpha-light-70:#ffffffb2;--v2-alpha-light-60:#fff9;--v2-alpha-light-50:#ffffff80;--v2-alpha-light-40:#fff6;--v2-alpha-light-30:#ffffff4d;--v2-alpha-light-24:#ffffff3d;--v2-alpha-light-20:#fff3;--v2-alpha-light-16:#ffffff29;--v2-alpha-light-14:#ffffff24;--v2-alpha-light-12:#ffffff1f;--v2-alpha-light-10:#ffffff1a;--v2-alpha-light-8:#ffffff14;--v2-alpha-light-6:#ffffff0f;--v2-alpha-light-4:#ffffff0a;--v2-alpha-light-2:#ffffff05;--v2-alpha-light-0:#fff0;--v2-red-100:#fceceb;--v2-red-200:#f6d5d3;--v2-red-300:#f2bbb7;--v2-red-400:#f29b96;--v2-red-500:#f17471;--v2-red-600:#f1484f;--v2-red-700:#d92e3c;--v2-red-800:#b82d35;--v2-red-900:#97252b;--v2-red-1000:#7a1f23;--v2-red-1100:#5f1a1c;--v2-red-1200:#461516;--v2-orange-100:#fdf2ed;--v2-orange-200:#ffe7dc;--v2-orange-300:#ffd8c6;--v2-orange-400:#ffc1a4;--v2-orange-500:#ffa478;--v2-orange-600:#ff8648;--v2-orange-700:#ee7330;--v2-orange-800:#d16427;--v2-orange-900:#b35624;--v2-orange-1000:#954c27;--v2-orange-1100:#723d22;--v2-orange-1200:#5a2c14;--v2-yellow-100:#fefaec;--v2-yellow-200:#fcefd0;--v2-yellow-300:#f7e5b5;--v2-yellow-400:#f3da9b;--v2-yellow-500:#f2cf76;--v2-yellow-600:#f6c251;--v2-yellow-700:#e7af36;--v2-yellow-800:#cb9f34;--v2-yellow-900:#ac8833;--v2-yellow-1000:#8e7231;--v2-yellow-1100:#68552b;--v2-yellow-1200:#4b4025;--v2-green-100:#e7f9ea;--v2-green-200:#d0f0d5;--v2-green-300:#b8e9c1;--v2-green-400:#96e3a6;--v2-green-500:#6bd586;--v2-green-600:#49c970;--v2-green-700:#2eaf5a;--v2-green-800:#198b43;--v2-green-900:#1d783c;--v2-green-1000:#196130;--v2-green-1100:#164c26;--v2-green-1200:#14361d;--v2-cyan-100:#e2f7fb;--v2-cyan-200:#c4edf4;--v2-cyan-300:#a3e4ef;--v2-cyan-400:#65d9eb;--v2-cyan-500:#00c5df;--v2-cyan-600:#00abcf;--v2-cyan-700:#0096b8;--v2-cyan-800:#007d9b;--v2-cyan-900:#006c85;--v2-cyan-1000:#005a6e;--v2-cyan-1100:#004756;--v2-cyan-1200:#00353f;--v2-blue-100:#ecf1fe;--v2-blue-200:#d7e2fc;--v2-blue-300:#c3d4fd;--v2-blue-400:#a2bcff;--v2-blue-500:#7698fd;--v2-blue-600:#3b5cf6;--v2-blue-700:#3250df;--v2-blue-800:#2c47c8;--v2-blue-900:#263fa9;--v2-blue-1000:#22388f;--v2-blue-1100:#1c2e70;--v2-blue-1200:#1b2852;--v2-purple-100:#ebecfe;--v2-purple-200:#d5d5fc;--v2-purple-300:#b9b8f5;--v2-purple-400:#9e99f7;--v2-purple-500:#8271f8;--v2-purple-600:#7152f4;--v2-purple-700:#623be2;--v2-purple-800:#5230c2;--v2-purple-900:#442aa1;--v2-purple-1000:#361f83;--v2-purple-1100:#2b1b6a;--v2-purple-1200:#221358;--v2-pink-100:#fdecf3;--v2-pink-200:#f7d5e4;--v2-pink-300:#fabcd8;--v2-pink-400:#f799c6;--v2-pink-500:#f26cb2;--v2-pink-600:#f64aab;--v2-pink-700:#e4429e;--v2-pink-800:#c83d8b;--v2-pink-900:#aa3576;--v2-pink-1000:#8c2d61;--v2-pink-1100:#6f284f;--v2-pink-1200:#5c1d3f}html[data-theme=oc-2] body:not([data-new-layout]){--text-diff-add-base:light-dark(#167517,#c4ffc0);--text-diff-delete-base:light-dark(#fa3012,#ec2f14);--syntax-comment:light-dark(#7a7a7a,#8f8f8f);--syntax-keyword:light-dark(#a753ae,#edb2f1);--syntax-string:#00ceb9;--syntax-primitive:light-dark(#034cff,#8cb0ff);--syntax-property:light-dark(#a753ae,#fab283);--syntax-type:light-dark(#8a6f00,#fcd53a);--syntax-critical:light-dark(#ff8c00,#fab283)}:root{color-scheme:light;--v2-background-bg-base:var(--v2-grey-50);--v2-background-bg-deep:var(--v2-grey-100);--v2-background-bg-layer-01:var(--v2-grey-100);--v2-background-bg-layer-02:var(--v2-grey-200);--v2-background-bg-layer-03:var(--v2-grey-300);--v2-background-bg-layer-04:var(--v2-grey-400);--v2-background-bg-inverse:var(--v2-grey-1100);--v2-background-bg-contrast:var(--v2-grey-1000);--v2-background-bg-button-neutral:var(--v2-grey-50);--v2-background-bg-accent:var(--v2-blue-600);--v2-text-text-base:var(--v2-grey-1100);--v2-text-text-muted:var(--v2-grey-700);--v2-text-text-faint:var(--v2-grey-600);--v2-text-text-inverse:var(--v2-grey-50);--v2-text-text-contrast:var(--v2-grey-50);--v2-text-text-accent:var(--v2-blue-600);--v2-text-text-accent-hover:var(--v2-blue-700);--v2-text-text-code-accent:var(--v2-blue-900);--v2-icon-icon-base:var(--v2-grey-800);--v2-icon-icon-muted:var(--v2-grey-600);--v2-icon-icon-inverse:var(--v2-grey-50);--v2-icon-icon-contrast:var(--v2-grey-100);--v2-icon-icon-accent:var(--v2-blue-600);--v2-icon-icon-accent-hover:var(--v2-blue-700);--v2-border-border-muted:var(--v2-alpha-dark-8);--v2-border-border-base:var(--v2-alpha-dark-10);--v2-border-border-strong:var(--v2-alpha-dark-20);--v2-border-border-inverse:var(--v2-grey-1000);--v2-border-border-focus:var(--v2-blue-500);--v2-overlay-simple-overlay-hover:var(--v2-alpha-dark-4);--v2-overlay-simple-overlay-pressed:var(--v2-alpha-dark-8);--v2-overlay-simple-overlay-contrast-hover:var(--v2-alpha-light-12);--v2-overlay-simple-overlay-contrast-pressed:var(--v2-alpha-light-24);--v2-overlay-simple-overlay-scrim:var(--v2-alpha-dark-40);--v2-overlay-gradient-depth-overlay-depth-top:var(--v2-alpha-light-100);--v2-overlay-gradient-depth-overlay-depth-bot:var(--v2-alpha-light-0);--v2-overlay-simple-tab-active-scrim:#fafafa00;--v2-overlay-simple-tab-hover-scrim:#eee0;--v2-overlay-simple-tab-scrim:#fafafa00;--v2-state-bg-success:var(--v2-green-100);--v2-state-fg-success:var(--v2-green-800);--v2-state-border-success:var(--v2-green-300);--v2-state-bg-warning:var(--v2-yellow-100);--v2-state-fg-warning:var(--v2-yellow-800);--v2-state-border-warning:var(--v2-yellow-300);--v2-state-bg-danger:var(--v2-red-100);--v2-state-fg-danger:var(--v2-red-800);--v2-state-border-danger:var(--v2-red-300);--v2-state-bg-info:var(--v2-blue-100);--v2-state-fg-info:var(--v2-blue-800);--v2-state-border-info:var(--v2-blue-300);--v2-avatar-fg:#fff;--v2-avatar-bg-orange:#ee7330;--v2-avatar-border-orange:#d16427;--v2-avatar-bg-yellow:#e7af36;--v2-avatar-border-yellow:#cb9f34;--v2-avatar-bg-cyan:#0096b8;--v2-avatar-border-cyan:#007d9b;--v2-avatar-bg-green:#2eaf5a;--v2-avatar-border-green:#198b43;--v2-avatar-bg-red:#d92e3c;--v2-avatar-border-red:#b82d35;--v2-avatar-bg-pink:#e4429e;--v2-avatar-border-pink:#c83d8b;--v2-avatar-bg-blue:#3250df;--v2-avatar-border-blue:#2c47c8;--v2-avatar-bg-purple:#623be2;--v2-avatar-border-purple:#5230c2;--v2-avatar-bg-gray:#5c5c5c;--v2-avatar-border-gray:#3a3a3a;--v2-elevation-raised:0px 2px 4px 0px var(--v2-alpha-dark-4), 0px 1px 2px -1px var(--v2-alpha-dark-8), 0px 0px 0px .5px var(--v2-alpha-dark-12), 0px 0px 0px 0px var(--v2-alpha-dark-0);--v2-elevation-floating:0px 8px 16px 0px var(--v2-alpha-dark-4), 0px 4px 8px 0px var(--v2-alpha-dark-8), 0px 0px 0px .5px var(--v2-alpha-dark-12), 0px 0px 0px 0px var(--v2-alpha-dark-0);--v2-elevation-overlay:0px 16px 32px 0px var(--v2-alpha-dark-4), 0px 8px 16px 0px var(--v2-alpha-dark-8), 0px 0px 0px .5px var(--v2-alpha-dark-12), 0px 0px 0px 0px var(--v2-alpha-dark-0);--v2-elevation-button-neutral:0px 1px 1.5px 0px var(--v2-alpha-dark-10), 0px 0px 0px .5px var(--v2-alpha-dark-14), 0px 0px 0px 0px var(--v2-alpha-dark-0);--v2-elevation-button-contrast:0px 1px 1.5px 0px var(--v2-alpha-dark-20), 0px 0px 0px .5px var(--v2-grey-800), inset 0px 1px 2px 0px var(--v2-alpha-light-14), inset 0px -1px 2px 0px var(--v2-alpha-dark-6), 0px 0px 0px 0px var(--v2-alpha-dark-0);--v2-elevation-elements:0px .5px .5px 0px var(--v2-alpha-dark-40);--v2-elevation-switch-off:inset 0px 1px 1px 0px var(--v2-alpha-dark-8), inset 0px .5px .5px 0px var(--v2-alpha-dark-8), inset 0px 0px 0px .5px var(--v2-alpha-dark-10);--v2-elevation-switch-on:inset 0px 2px 2px 0px var(--v2-alpha-dark-10), inset 0px 1px 1px 0px var(--v2-alpha-dark-10), inset 0px 0px 0px .5px var(--v2-alpha-dark-20);--v2-illustration-illustration-layer-01:var(--v2-grey-300);--v2-illustration-illustration-layer-02:var(--v2-grey-400);--v2-illustration-illustration-layer-03:var(--v2-grey-500);--font-family-text:"Inter", sans-serif;--v2-font-family-sans:"Inter", sans-serif}[data-color-scheme=light]{color-scheme:light;--v2-background-bg-base:var(--v2-grey-50);--v2-background-bg-deep:var(--v2-grey-100);--v2-background-bg-layer-01:var(--v2-grey-100);--v2-background-bg-layer-02:var(--v2-grey-200);--v2-background-bg-layer-03:var(--v2-grey-300);--v2-background-bg-layer-04:var(--v2-grey-400);--v2-background-bg-inverse:var(--v2-grey-1100);--v2-background-bg-contrast:var(--v2-grey-1000);--v2-background-bg-button-neutral:var(--v2-grey-50);--v2-background-bg-accent:var(--v2-blue-600);--v2-text-text-base:var(--v2-grey-1100);--v2-text-text-muted:var(--v2-grey-700);--v2-text-text-faint:var(--v2-grey-600);--v2-text-text-inverse:var(--v2-grey-50);--v2-text-text-contrast:var(--v2-grey-50);--v2-text-text-accent:var(--v2-blue-600);--v2-text-text-accent-hover:var(--v2-blue-700);--v2-text-text-code-accent:var(--v2-blue-900);--v2-icon-icon-base:var(--v2-grey-800);--v2-icon-icon-muted:var(--v2-grey-600);--v2-icon-icon-inverse:var(--v2-grey-50);--v2-icon-icon-contrast:var(--v2-grey-100);--v2-icon-icon-accent:var(--v2-blue-600);--v2-icon-icon-accent-hover:var(--v2-blue-700);--v2-border-border-muted:var(--v2-alpha-dark-8);--v2-border-border-base:var(--v2-alpha-dark-10);--v2-border-border-strong:var(--v2-alpha-dark-20);--v2-border-border-inverse:var(--v2-grey-1000);--v2-border-border-focus:var(--v2-blue-500);--v2-overlay-simple-overlay-hover:var(--v2-alpha-dark-4);--v2-overlay-simple-overlay-pressed:var(--v2-alpha-dark-8);--v2-overlay-simple-overlay-contrast-hover:var(--v2-alpha-light-12);--v2-overlay-simple-overlay-contrast-pressed:var(--v2-alpha-light-24);--v2-overlay-simple-overlay-scrim:var(--v2-alpha-dark-40);--v2-overlay-gradient-depth-overlay-depth-top:var(--v2-alpha-light-100);--v2-overlay-gradient-depth-overlay-depth-bot:var(--v2-alpha-light-0);--v2-overlay-simple-tab-active-scrim:#fafafa00;--v2-overlay-simple-tab-hover-scrim:#eee0;--v2-overlay-simple-tab-scrim:#fafafa00;--v2-state-bg-success:var(--v2-green-100);--v2-state-fg-success:var(--v2-green-800);--v2-state-border-success:var(--v2-green-300);--v2-state-bg-warning:var(--v2-yellow-100);--v2-state-fg-warning:var(--v2-yellow-800);--v2-state-border-warning:var(--v2-yellow-300);--v2-state-bg-danger:var(--v2-red-100);--v2-state-fg-danger:var(--v2-red-800);--v2-state-border-danger:var(--v2-red-300);--v2-state-bg-info:var(--v2-blue-100);--v2-state-fg-info:var(--v2-blue-800);--v2-state-border-info:var(--v2-blue-300);--v2-elevation-raised:0px 2px 4px 0px var(--v2-alpha-dark-4), 0px 1px 2px -1px var(--v2-alpha-dark-8), 0px 0px 0px .5px var(--v2-alpha-dark-12), 0px 0px 0px 0px var(--v2-alpha-dark-0);--v2-elevation-floating:0px 8px 16px 0px var(--v2-alpha-dark-4), 0px 4px 8px 0px var(--v2-alpha-dark-8), 0px 0px 0px .5px var(--v2-alpha-dark-12), 0px 0px 0px 0px var(--v2-alpha-dark-0);--v2-elevation-overlay:0px 16px 32px 0px var(--v2-alpha-dark-4), 0px 8px 16px 0px var(--v2-alpha-dark-8), 0px 0px 0px .5px var(--v2-alpha-dark-12), 0px 0px 0px 0px var(--v2-alpha-dark-0);--v2-elevation-button-neutral:0px 1px 1.5px 0px var(--v2-alpha-dark-10), 0px 0px 0px .5px var(--v2-alpha-dark-14), 0px 0px 0px 0px var(--v2-alpha-dark-0);--v2-elevation-button-contrast:0px 1px 1.5px 0px var(--v2-alpha-dark-20), 0px 0px 0px .5px var(--v2-grey-800), inset 0px 1px 2px 0px var(--v2-alpha-light-14), inset 0px -1px 2px 0px var(--v2-alpha-dark-6), 0px 0px 0px 0px var(--v2-alpha-dark-0);--v2-elevation-elements:0px .5px .5px 0px var(--v2-alpha-dark-40);--v2-elevation-switch-off:inset 0px 1px 1px 0px var(--v2-alpha-dark-8), inset 0px .5px .5px 0px var(--v2-alpha-dark-8), inset 0px 0px 0px .5px var(--v2-alpha-dark-10);--v2-elevation-switch-on:inset 0px 2px 2px 0px var(--v2-alpha-dark-10), inset 0px 1px 1px 0px var(--v2-alpha-dark-10), inset 0px 0px 0px .5px var(--v2-alpha-dark-20);--v2-illustration-illustration-layer-01:var(--v2-grey-300);--v2-illustration-illustration-layer-02:var(--v2-grey-400);--v2-illustration-illustration-layer-03:var(--v2-grey-500);--v2-avatar-fg:#fff;--v2-avatar-bg-orange:#ee7330;--v2-avatar-border-orange:#d16427;--v2-avatar-bg-yellow:#e7af36;--v2-avatar-border-yellow:#cb9f34;--v2-avatar-bg-cyan:#0096b8;--v2-avatar-border-cyan:#007d9b;--v2-avatar-bg-green:#2eaf5a;--v2-avatar-border-green:#198b43;--v2-avatar-bg-red:#d92e3c;--v2-avatar-border-red:#b82d35;--v2-avatar-bg-pink:#e4429e;--v2-avatar-border-pink:#c83d8b;--v2-avatar-bg-blue:#3250df;--v2-avatar-border-blue:#2c47c8;--v2-avatar-bg-purple:#623be2;--v2-avatar-border-purple:#5230c2;--v2-avatar-bg-gray:#5c5c5c;--v2-avatar-border-gray:#3a3a3a}[data-color-scheme=dark]{color-scheme:dark;--v2-background-bg-base:var(--v2-grey-1100);--v2-background-bg-deep:var(--v2-grey-1200);--v2-background-bg-layer-01:var(--v2-grey-1000);--v2-background-bg-layer-02:var(--v2-grey-900);--v2-background-bg-layer-03:var(--v2-grey-800);--v2-background-bg-layer-04:var(--v2-grey-700);--v2-background-bg-inverse:var(--v2-grey-50);--v2-background-bg-contrast:var(--v2-grey-700);--v2-background-bg-button-neutral:var(--v2-alpha-light-6);--v2-background-bg-accent:var(--v2-blue-600);--v2-text-text-base:var(--v2-grey-100);--v2-text-text-muted:var(--v2-grey-500);--v2-text-text-faint:var(--v2-grey-600);--v2-text-text-inverse:var(--v2-grey-1100);--v2-text-text-contrast:var(--v2-grey-50);--v2-text-text-accent:var(--v2-blue-400);--v2-text-text-accent-hover:var(--v2-blue-300);--v2-text-text-code-accent:var(--v2-blue-400);--v2-icon-icon-base:var(--v2-grey-400);--v2-icon-icon-muted:var(--v2-grey-600);--v2-icon-icon-inverse:var(--v2-grey-1100);--v2-icon-icon-contrast:var(--v2-grey-100);--v2-icon-icon-accent:var(--v2-blue-400);--v2-icon-icon-accent-hover:var(--v2-blue-300);--v2-border-border-muted:var(--v2-alpha-light-8);--v2-border-border-base:var(--v2-alpha-light-10);--v2-border-border-strong:var(--v2-alpha-light-20);--v2-border-border-inverse:var(--v2-grey-100);--v2-border-border-focus:var(--v2-blue-500);--v2-overlay-simple-overlay-hover:var(--v2-alpha-light-6);--v2-overlay-simple-overlay-pressed:var(--v2-alpha-light-10);--v2-overlay-simple-overlay-contrast-hover:var(--v2-alpha-dark-24);--v2-overlay-simple-overlay-contrast-pressed:var(--v2-alpha-dark-40);--v2-overlay-simple-overlay-scrim:var(--v2-alpha-dark-60);--v2-overlay-gradient-depth-overlay-depth-top:var(--v2-alpha-light-100);--v2-overlay-gradient-depth-overlay-depth-bot:var(--v2-alpha-light-0);--v2-overlay-simple-tab-active-scrim:#24242400;--v2-overlay-simple-tab-hover-scrim:#3a3a3a00;--v2-overlay-simple-tab-scrim:#08080800;--v2-state-bg-success:var(--v2-green-1200);--v2-state-fg-success:var(--v2-green-500);--v2-state-border-success:var(--v2-green-900);--v2-state-bg-warning:var(--v2-yellow-1200);--v2-state-fg-warning:var(--v2-yellow-500);--v2-state-border-warning:var(--v2-yellow-900);--v2-state-bg-danger:var(--v2-red-1200);--v2-state-fg-danger:var(--v2-red-500);--v2-state-border-danger:var(--v2-red-900);--v2-state-bg-info:var(--v2-blue-1200);--v2-state-fg-info:var(--v2-blue-500);--v2-state-border-info:var(--v2-blue-900);--v2-avatar-fg:#fff;--v2-avatar-bg-orange:#723d22;--v2-avatar-border-orange:#ff8648;--v2-avatar-bg-yellow:#68552b;--v2-avatar-border-yellow:#e7af36;--v2-avatar-bg-cyan:#005a6e;--v2-avatar-border-cyan:#0096b8;--v2-avatar-bg-green:#196130;--v2-avatar-border-green:#49c970;--v2-avatar-bg-red:#7a1f23;--v2-avatar-border-red:#d92e3c;--v2-avatar-bg-pink:#8c2d61;--v2-avatar-border-pink:#e4429e;--v2-avatar-bg-blue:#263fa9;--v2-avatar-border-blue:#7698fd;--v2-avatar-bg-purple:#361f83;--v2-avatar-border-purple:#7152f4;--v2-avatar-bg-gray:#5c5c5c;--v2-avatar-border-gray:#aeaeae;--v2-elevation-raised:0px 2px 4px 0px var(--v2-alpha-dark-30), 0px 1px 2px 0px var(--v2-alpha-dark-30), 0px 0px 0px .5px var(--v2-alpha-light-16), 0px -.5px 0px 0px var(--v2-alpha-light-6);--v2-elevation-floating:0px 8px 16px 0px var(--v2-alpha-dark-30), 0px 4px 8px 0px var(--v2-alpha-dark-30), 0px 0px 0px .5px var(--v2-alpha-light-16), 0px -.5px 0px 0px var(--v2-alpha-light-6);--v2-elevation-overlay:0px 16px 32px 0px var(--v2-alpha-dark-30), 0px 8px 16px 0px var(--v2-alpha-dark-30), 0px 0px 0px .5px var(--v2-alpha-light-16), 0px -.5px 0px 0px var(--v2-alpha-light-6);--v2-elevation-button-neutral:0px 1px 2px 0px var(--v2-alpha-dark-40), 0px 0px 0px .5px var(--v2-alpha-light-20), 0px -.5px 0px 0px var(--v2-alpha-light-10);--v2-elevation-button-contrast:0px 1px 2px 0px var(--v2-alpha-dark-40), 0px 0px 0px .5px var(--v2-alpha-light-40), inset 0px 0px 0px 0px var(--v2-alpha-light-0), inset 0px 0px 0px 0px var(--v2-alpha-light-0), 0px -.5px 0px 0px var(--v2-alpha-light-30);--v2-elevation-elements:0px .5px .5px 0px var(--v2-alpha-dark-40);--v2-elevation-switch-off:inset 0px -.5px 0px 0px var(--v2-alpha-light-10), inset 0px 0px 0px 0px var(--v2-alpha-light-0), inset 0px 0px 0px .5px var(--v2-alpha-light-16);--v2-elevation-switch-on:inset 0px -.5px 0px 0px var(--v2-alpha-light-10), inset 0px 0px 0px 0px var(--v2-alpha-light-0), inset 0px 0px 0px .5px var(--v2-alpha-light-16);--v2-illustration-illustration-layer-01:var(--v2-grey-900);--v2-illustration-illustration-layer-02:var(--v2-grey-800);--v2-illustration-illustration-layer-03:var(--v2-grey-700)}}@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,ui-sans-serif, system-ui, 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{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}}@layer components;@layer utilities{.collapse{visibility:collapse}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.block{display:block}.flex{display:flex}.hidden{display:none}.inline{display:inline}.table{display:table}.h-dvh{height:100dvh}.flex-shrink{flex-shrink:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.flex-col{flex-direction:column}.overflow-hidden{overflow:hidden}.overscroll-none{overscroll-behavior:none}.border{border-style:var(--tw-border-style);border-width:1px}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.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,)}.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))}}@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-border-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}
|
assets/index-vUWicxNv.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/kanagawa-PkxnAgRP.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const a="https://opencode.ai/desktop-theme.json",n="Kanagawa",t="kanagawa",e={palette:{neutral:"#F2E9DE",ink:"#54433A",primary:"#2D4F67",accent:"#D27E99",success:"#98BB6C",warning:"#D7A657",error:"#E82424",info:"#76946A",diffAdd:"#89AF5B",diffDelete:"#D61F1F"},overrides:{"text-weak":"#9E9389","syntax-comment":"#9E9389","syntax-keyword":"#957FB8","syntax-string":"#98BB6C","syntax-primitive":"#2D4F67","syntax-variable":"#54433A","syntax-property":"#76946A","syntax-type":"#C38D9D","syntax-constant":"#D7A657","syntax-operator":"#D27E99","syntax-punctuation":"#54433A","syntax-object":"#54433A","markdown-heading":"#957FB8","markdown-text":"#54433A","markdown-link":"#2D4F67","markdown-link-text":"#76946A","markdown-code":"#98BB6C","markdown-block-quote":"#9E9389","markdown-emph":"#C38D9D","markdown-strong":"#D7A657","markdown-horizontal-rule":"#9E9389","markdown-list-item":"#2D4F67","markdown-list-enumeration":"#76946A","markdown-image":"#2D4F67","markdown-image-text":"#76946A","markdown-code-block":"#54433A"}},o={palette:{neutral:"#1F1F28",ink:"#DCD7BA",primary:"#7E9CD8",accent:"#D27E99",success:"#98BB6C",warning:"#D7A657",error:"#E82424",info:"#76946A",diffAdd:"#A9D977",diffDelete:"#F24A4A"},overrides:{"text-weak":"#727169","syntax-comment":"#727169","syntax-keyword":"#957FB8","syntax-string":"#98BB6C","syntax-primitive":"#7E9CD8","syntax-variable":"#DCD7BA","syntax-property":"#76946A","syntax-type":"#C38D9D","syntax-constant":"#D7A657","syntax-operator":"#D27E99","syntax-punctuation":"#DCD7BA","syntax-object":"#DCD7BA","markdown-heading":"#957FB8","markdown-text":"#DCD7BA","markdown-link":"#7E9CD8","markdown-link-text":"#76946A","markdown-code":"#98BB6C","markdown-block-quote":"#727169","markdown-emph":"#C38D9D","markdown-strong":"#D7A657","markdown-horizontal-rule":"#727169","markdown-list-item":"#7E9CD8","markdown-list-enumeration":"#76946A","markdown-image":"#7E9CD8","markdown-image-text":"#76946A","markdown-code-block":"#DCD7BA"}},r={$schema:a,name:n,id:t,light:e,dark:o};export{a as $schema,o as dark,r as default,t as id,e as light,n as name};
|
assets/lucent-orng-3zCc1Xf5.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const a="https://opencode.ai/desktop-theme.json",e="Lucent Orng",n="lucent-orng",t={palette:{neutral:"#fff5f0",ink:"#1a1a1a",primary:"#EC5B2B",accent:"#c94d24",success:"#0062d1",warning:"#EC5B2B",error:"#d1383d",info:"#318795",diffDelete:"#f52a65"},overrides:{"text-weak":"#8a8a8a","syntax-comment":"#8a8a8a","syntax-keyword":"#EC5B2B","syntax-string":"#0062d1","syntax-primitive":"#c94d24","syntax-variable":"#d1383d","syntax-property":"#318795","syntax-type":"#b0851f","syntax-constant":"#EC5B2B","syntax-operator":"#318795","syntax-punctuation":"#1a1a1a","syntax-object":"#d1383d","markdown-heading":"#EC5B2B","markdown-text":"#1a1a1a","markdown-link":"#EC5B2B","markdown-link-text":"#318795","markdown-code":"#0062d1","markdown-block-quote":"#b0851f","markdown-emph":"#b0851f","markdown-strong":"#EC5B2B","markdown-horizontal-rule":"#8a8a8a","markdown-list-item":"#EC5B2B","markdown-list-enumeration":"#318795","markdown-image":"#EC5B2B","markdown-image-text":"#318795","markdown-code-block":"#1a1a1a"}},o={palette:{neutral:"#2a1a15",ink:"#eeeeee",primary:"#EC5B2B",accent:"#FFF7F1",success:"#6ba1e6",warning:"#EC5B2B",error:"#e06c75",info:"#56b6c2",diffDelete:"#e26a75"},overrides:{"text-weak":"#808080","syntax-comment":"#808080","syntax-keyword":"#EC5B2B","syntax-string":"#6ba1e6","syntax-primitive":"#EE7948","syntax-variable":"#e06c75","syntax-property":"#56b6c2","syntax-type":"#e5c07b","syntax-constant":"#FFF7F1","syntax-operator":"#56b6c2","syntax-punctuation":"#eeeeee","syntax-object":"#e06c75","markdown-heading":"#EC5B2B","markdown-text":"#eeeeee","markdown-link":"#EC5B2B","markdown-link-text":"#56b6c2","markdown-code":"#6ba1e6","markdown-block-quote":"#FFF7F1","markdown-emph":"#e5c07b","markdown-strong":"#EE7948","markdown-horizontal-rule":"#808080","markdown-list-item":"#EC5B2B","markdown-list-enumeration":"#56b6c2","markdown-image":"#EC5B2B","markdown-image-text":"#56b6c2","markdown-code-block":"#eeeeee"}},r={$schema:a,name:e,id:n,light:t,dark:o};export{a as $schema,o as dark,r as default,n as id,t as light,e as name};
|
assets/material-CDQyWXdQ.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const a="https://opencode.ai/desktop-theme.json",e="Material",t="material",n={palette:{neutral:"#fafafa",ink:"#263238",primary:"#6182b8",accent:"#39adb5",success:"#91b859",warning:"#ffb300",error:"#e53935",info:"#f4511e",interactive:"#39adb5"},overrides:{"text-weak":"#90a4ae","syntax-comment":"#90a4ae","syntax-keyword":"#7c4dff","syntax-string":"#91b859","syntax-primitive":"#6182b8","syntax-variable":"#263238","syntax-property":"#7c4dff","syntax-type":"#ffb300","syntax-constant":"#f4511e","syntax-operator":"#39adb5","syntax-punctuation":"#263238","syntax-object":"#263238","markdown-heading":"#6182b8","markdown-text":"#263238","markdown-link":"#39adb5","markdown-link-text":"#7c4dff","markdown-code":"#91b859","markdown-block-quote":"#90a4ae","markdown-emph":"#ffb300","markdown-strong":"#f4511e","markdown-horizontal-rule":"#e0e0e0","markdown-list-item":"#6182b8","markdown-list-enumeration":"#39adb5","markdown-image":"#39adb5","markdown-image-text":"#7c4dff","markdown-code-block":"#263238"}},f={palette:{neutral:"#263238",ink:"#eeffff",primary:"#82aaff",accent:"#89ddff",success:"#c3e88d",warning:"#ffcb6b",error:"#f07178",info:"#ffcb6b",interactive:"#89ddff"},overrides:{"text-weak":"#546e7a","syntax-comment":"#546e7a","syntax-keyword":"#c792ea","syntax-string":"#c3e88d","syntax-primitive":"#82aaff","syntax-variable":"#eeffff","syntax-property":"#c792ea","syntax-type":"#ffcb6b","syntax-constant":"#ffcb6b","syntax-operator":"#89ddff","syntax-punctuation":"#eeffff","syntax-object":"#eeffff","markdown-heading":"#82aaff","markdown-text":"#eeffff","markdown-link":"#89ddff","markdown-link-text":"#c792ea","markdown-code":"#c3e88d","markdown-block-quote":"#546e7a","markdown-emph":"#ffcb6b","markdown-strong":"#ffcb6b","markdown-horizontal-rule":"#37474f","markdown-list-item":"#82aaff","markdown-list-enumeration":"#89ddff","markdown-image":"#89ddff","markdown-image-text":"#c792ea","markdown-code-block":"#eeffff"}},o={$schema:a,name:e,id:t,light:n,dark:f};export{a as $schema,f as dark,o as default,t as id,n as light,e as name};
|
assets/matrix-BQ_S38An.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const e="https://opencode.ai/desktop-theme.json",t="Matrix",a="matrix",n={palette:{neutral:"#eef3ea",ink:"#203022",primary:"#1cc24b",accent:"#c770ff",success:"#1cc24b",warning:"#e6ff57",error:"#ff4b4b",info:"#30b3ff",interactive:"#30b3ff",diffAdd:"#5dac7e",diffDelete:"#d53a3a"},overrides:{"text-weak":"#748476","syntax-comment":"#748476","syntax-keyword":"#c770ff","syntax-string":"#1cc24b","syntax-primitive":"#30b3ff","syntax-variable":"#203022","syntax-property":"#24f6d9","syntax-type":"#e6ff57","syntax-constant":"#ffa83d","syntax-operator":"#24f6d9","syntax-punctuation":"#203022","syntax-object":"#203022","markdown-heading":"#24f6d9","markdown-text":"#203022","markdown-link":"#30b3ff","markdown-link-text":"#24f6d9","markdown-code":"#1cc24b","markdown-block-quote":"#748476","markdown-emph":"#ffa83d","markdown-strong":"#e6ff57","markdown-horizontal-rule":"#748476","markdown-list-item":"#30b3ff","markdown-list-enumeration":"#24f6d9","markdown-image":"#30b3ff","markdown-image-text":"#24f6d9","markdown-code-block":"#203022"},v2Overrides:{"v2-text-text-base":"#353535","v2-text-text-muted":"#748476","v2-text-text-faint":"#748476","v2-background-bg-accent":"var(--v2-green-600)","v2-text-text-accent":"var(--v2-green-600)","v2-text-text-accent-hover":"var(--v2-green-700)","v2-icon-icon-accent":"var(--v2-green-600)","v2-icon-icon-accent-hover":"var(--v2-green-700)","v2-border-border-focus":"var(--v2-green-500)"}},r={palette:{neutral:"#0a0e0a",ink:"#62ff94",primary:"#2eff6a",accent:"#c770ff",success:"#62ff94",warning:"#e6ff57",error:"#ff4b4b",info:"#30b3ff",interactive:"#30b3ff",diffAdd:"#77ffaf",diffDelete:"#ff7171"},overrides:{"text-weak":"#8ca391","syntax-comment":"#8ca391","syntax-keyword":"#c770ff","syntax-string":"#1cc24b","syntax-primitive":"#30b3ff","syntax-variable":"#62ff94","syntax-property":"#24f6d9","syntax-type":"#e6ff57","syntax-constant":"#ffa83d","syntax-operator":"#24f6d9","syntax-punctuation":"#62ff94","syntax-object":"#62ff94","markdown-heading":"#00efff","markdown-text":"#62ff94","markdown-link":"#30b3ff","markdown-link-text":"#24f6d9","markdown-code":"#1cc24b","markdown-block-quote":"#8ca391","markdown-emph":"#ffa83d","markdown-strong":"#e6ff57","markdown-horizontal-rule":"#8ca391","markdown-list-item":"#30b3ff","markdown-list-enumeration":"#24f6d9","markdown-image":"#30b3ff","markdown-image-text":"#24f6d9","markdown-code-block":"#62ff94"},v2Overrides:{"v2-text-text-base":"#ececec","v2-text-text-muted":"#8ca391","v2-text-text-faint":"#8ca391","v2-background-bg-accent":"var(--v2-green-600)","v2-text-text-accent":"var(--v2-green-400)","v2-text-text-accent-hover":"var(--v2-green-300)","v2-icon-icon-accent":"var(--v2-green-400)","v2-icon-icon-accent-hover":"var(--v2-green-300)","v2-border-border-focus":"var(--v2-green-500)"}},f={$schema:e,name:t,id:a,light:n,dark:r};export{e as $schema,r as dark,f as default,a as id,n as light,t as name};
|
assets/mercury-CL9KPSEM.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const a="https://opencode.ai/desktop-theme.json",e="Mercury",n="mercury",t={palette:{neutral:"#ffffff",ink:"#363644",primary:"#5266eb",accent:"#8da4f5",success:"#036e43",warning:"#a44200",error:"#b0175f",info:"#007f95",interactive:"#465bd1"},overrides:{"text-weak":"#70707d","syntax-comment":"#70707d","syntax-keyword":"#465bd1","syntax-string":"#036e43","syntax-primitive":"#5266eb","syntax-variable":"#007f95","syntax-property":"#5266eb","syntax-type":"#007f95","syntax-constant":"#a44200","syntax-operator":"#465bd1","syntax-punctuation":"#363644","syntax-object":"#007f95","markdown-heading":"#1e1e2a","markdown-text":"#363644","markdown-link":"#465bd1","markdown-link-text":"#5266eb","markdown-code":"#036e43","markdown-block-quote":"#70707d","markdown-emph":"#a44200","markdown-strong":"#1e1e2a","markdown-horizontal-rule":"#7073931a","markdown-list-item":"#1e1e2a","markdown-list-enumeration":"#5266eb","markdown-image":"#465bd1","markdown-image-text":"#5266eb","markdown-code-block":"#363644"}},d={palette:{neutral:"#171721",ink:"#dddde5",primary:"#8da4f5",accent:"#8da4f5",success:"#77c599",warning:"#fc9b6f",error:"#fc92b4",info:"#77becf"},overrides:{"text-weak":"#9d9da8","syntax-comment":"#9d9da8","syntax-keyword":"#8da4f5","syntax-string":"#77c599","syntax-primitive":"#8da4f5","syntax-variable":"#77becf","syntax-property":"#a7b6f8","syntax-type":"#77becf","syntax-constant":"#fc9b6f","syntax-operator":"#8da4f5","syntax-punctuation":"#dddde5","syntax-object":"#77becf","markdown-heading":"#ffffff","markdown-text":"#dddde5","markdown-link":"#8da4f5","markdown-link-text":"#a7b6f8","markdown-code":"#77c599","markdown-block-quote":"#9d9da8","markdown-emph":"#fc9b6f","markdown-strong":"#f4f5f9","markdown-horizontal-rule":"#b4b7c81f","markdown-list-item":"#ffffff","markdown-list-enumeration":"#8da4f5","markdown-image":"#8da4f5","markdown-image-text":"#a7b6f8","markdown-code-block":"#dddde5"}},o={$schema:a,name:e,id:n,light:t,dark:d};export{a as $schema,d as dark,o as default,n as id,t as light,e as name};
|
assets/monokai-BmT5Sw19.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const e="https://opencode.ai/desktop-theme.json",t="Monokai",a="monokai",n={palette:{neutral:"#fdf8ec",ink:"#292318",primary:"#bf7bff",accent:"#d9487c",success:"#4fb54b",warning:"#f1a948",error:"#e54b4b",info:"#2d9ad7",diffAdd:"#bfe7a3",diffDelete:"#f6a3ae"},overrides:{"syntax-comment":"#8a816f","syntax-keyword":"#d9487c","syntax-string":"#8a6500","syntax-primitive":"#3c8d2f","syntax-property":"#1f88c8","syntax-constant":"#9b5fe0"}},f={palette:{neutral:"#272822",ink:"#f8f8f2",primary:"#ae81ff",accent:"#f92672",success:"#a6e22e",warning:"#fd971f",error:"#f92672",info:"#66d9ef",diffAdd:"#4d7f2a",diffDelete:"#f4477c"},overrides:{"syntax-comment":"#75715e","syntax-keyword":"#f92672","syntax-string":"#e6db74","syntax-primitive":"#a6e22e","syntax-property":"#66d9ef","syntax-constant":"#ae81ff"}},s={$schema:e,name:t,id:a,light:n,dark:f};export{e as $schema,f as dark,s as default,a as id,n as light,t as name};
|
assets/nightowl-Pa1W3oWG.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const e="https://opencode.ai/desktop-theme.json",t="Night Owl",a="nightowl",n={palette:{neutral:"#f0f0f0",ink:"#403f53",primary:"#4876d6",accent:"#aa0982",success:"#2aa298",warning:"#c96765",error:"#de3d3b",info:"#4876d6",diffAdd:"#2aa298",diffDelete:"#de3d3b"},overrides:{"syntax-comment":"#7a8181","syntax-keyword":"#994cc3","syntax-primitive":"#4876d6","syntax-constant":"#c96765"}},c={palette:{neutral:"#011627",ink:"#d6deeb",primary:"#82aaff",accent:"#f78c6c",success:"#c5e478",warning:"#ecc48d",error:"#ef5350",info:"#82aaff",diffAdd:"#c5e478",diffDelete:"#ef5350"},overrides:{"syntax-comment":"#637777","syntax-keyword":"#c792ea","syntax-string":"#ecc48d","syntax-primitive":"#82aaff","syntax-constant":"#f78c6c"}},s={$schema:e,name:t,id:a,light:n,dark:c};export{e as $schema,c as dark,s as default,a as id,n as light,t as name};
|
assets/nord-NfRmCUpk.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const e="https://opencode.ai/desktop-theme.json",a="Nord",t="nord",n={palette:{neutral:"#eceff4",ink:"#2e3440",primary:"#5e81ac",accent:"#bf616a",success:"#8fbcbb",warning:"#d08770",error:"#bf616a",info:"#81a1c1",diffAdd:"#a3be8c",diffDelete:"#bf616a"},overrides:{"syntax-comment":"#6b7282","syntax-keyword":"#5e81ac","syntax-string":"#6f8758","syntax-primitive":"#5e81ac","syntax-constant":"#8d6886"}},c={palette:{neutral:"#2e3440",ink:"#e5e9f0",primary:"#88c0d0",accent:"#d57780",success:"#a3be8c",warning:"#d08770",error:"#bf616a",info:"#81a1c1",diffAdd:"#81a1c1",diffDelete:"#bf616a"},overrides:{"syntax-comment":"#616e88","syntax-keyword":"#81a1c1","syntax-primitive":"#88c0d0","syntax-constant":"#b48ead"}},s={$schema:e,name:a,id:t,light:n,dark:c};export{e as $schema,c as dark,s as default,t as id,n as light,a as name};
|
assets/one-dark-Bjk1FzZz.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const a="https://opencode.ai/desktop-theme.json",n="One Dark",e="one-dark",t={palette:{neutral:"#fafafa",ink:"#383a42",primary:"#4078f2",accent:"#0184bc",success:"#50a14f",warning:"#c18401",error:"#e45649",info:"#986801",diffAdd:"#489447",diffDelete:"#d65145"},overrides:{"text-weak":"#a0a1a7","syntax-comment":"#a0a1a7","syntax-keyword":"#a626a4","syntax-string":"#50a14f","syntax-primitive":"#4078f2","syntax-variable":"#e45649","syntax-property":"#0184bc","syntax-type":"#c18401","syntax-constant":"#986801","syntax-operator":"#0184bc","syntax-punctuation":"#383a42","syntax-object":"#e45649","markdown-heading":"#a626a4","markdown-text":"#383a42","markdown-link":"#4078f2","markdown-link-text":"#0184bc","markdown-code":"#50a14f","markdown-block-quote":"#a0a1a7","markdown-emph":"#c18401","markdown-strong":"#986801","markdown-horizontal-rule":"#a0a1a7","markdown-list-item":"#4078f2","markdown-list-enumeration":"#0184bc","markdown-image":"#4078f2","markdown-image-text":"#0184bc","markdown-code-block":"#383a42"}},o={palette:{neutral:"#282c34",ink:"#abb2bf",primary:"#61afef",accent:"#56b6c2",success:"#98c379",warning:"#e5c07b",error:"#e06c75",info:"#d19a66",diffAdd:"#aad482",diffDelete:"#e8828b"},overrides:{"text-weak":"#5c6370","syntax-comment":"#5c6370","syntax-keyword":"#c678dd","syntax-string":"#98c379","syntax-primitive":"#61afef","syntax-variable":"#e06c75","syntax-property":"#56b6c2","syntax-type":"#e5c07b","syntax-constant":"#d19a66","syntax-operator":"#56b6c2","syntax-punctuation":"#abb2bf","syntax-object":"#e06c75","markdown-heading":"#c678dd","markdown-text":"#abb2bf","markdown-link":"#61afef","markdown-link-text":"#56b6c2","markdown-code":"#98c379","markdown-block-quote":"#5c6370","markdown-emph":"#e5c07b","markdown-strong":"#d19a66","markdown-horizontal-rule":"#5c6370","markdown-list-item":"#61afef","markdown-list-enumeration":"#56b6c2","markdown-image":"#61afef","markdown-image-text":"#56b6c2","markdown-code-block":"#abb2bf"}},r={$schema:a,name:n,id:e,light:t,dark:o};export{a as $schema,o as dark,r as default,e as id,t as light,n as name};
|
assets/onedarkpro-C4eYovZb.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const e="https://opencode.ai/desktop-theme.json",a="One Dark Pro",t="onedarkpro",n={palette:{neutral:"#f5f6f8",ink:"#2b303b",primary:"#528bff",accent:"#d85462",success:"#4fa66d",warning:"#d19a66",error:"#e06c75",info:"#61afef",diffAdd:"#c2ebcf",diffDelete:"#f7c1c5"},overrides:{"syntax-comment":"#6a717d","syntax-keyword":"#a626a4","syntax-primitive":"#4078f2","syntax-constant":"#986801"}},c={palette:{neutral:"#1e222a",ink:"#abb2bf",primary:"#61afef",accent:"#e06c75",success:"#98c379",warning:"#e5c07b",error:"#e06c75",info:"#56b6c2",diffAdd:"#4b815a",diffDelete:"#b2555f"},overrides:{"syntax-comment":"#5c6370","syntax-keyword":"#c678dd","syntax-primitive":"#61afef","syntax-constant":"#d19a66"}},r={$schema:e,name:a,id:t,light:n,dark:c};export{e as $schema,c as dark,r as default,t as id,n as light,a as name};
|
assets/opencode-D7rBuNi7.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const a="https://opencode.ai/desktop-theme.json",e="OpenCode",n="opencode",t={palette:{neutral:"#ffffff",ink:"#1a1a1a",primary:"#3b7dd8",accent:"#d68c27",success:"#3d9a57",warning:"#d68c27",error:"#d1383d",info:"#318795",diffAdd:"#4db380",diffDelete:"#f52a65"},overrides:{"text-weak":"#8a8a8a","syntax-comment":"#8a8a8a","syntax-keyword":"#d68c27","syntax-string":"#3d9a57","syntax-primitive":"#3b7dd8","syntax-variable":"#d1383d","syntax-property":"#318795","syntax-type":"#b0851f","syntax-constant":"#d68c27","syntax-operator":"#318795","syntax-punctuation":"#1a1a1a","syntax-object":"#d1383d","markdown-heading":"#d68c27","markdown-text":"#1a1a1a","markdown-link":"#3b7dd8","markdown-link-text":"#318795","markdown-code":"#3d9a57","markdown-block-quote":"#b0851f","markdown-emph":"#b0851f","markdown-strong":"#d68c27","markdown-horizontal-rule":"#8a8a8a","markdown-list-item":"#3b7dd8","markdown-list-enumeration":"#318795","markdown-image":"#3b7dd8","markdown-image-text":"#318795","markdown-code-block":"#1a1a1a"}},d={palette:{neutral:"#0a0a0a",ink:"#eeeeee",primary:"#fab283",accent:"#9d7cd8",success:"#7fd88f",warning:"#f5a742",error:"#e06c75",info:"#56b6c2",diffAdd:"#b8db87",diffDelete:"#e26a75"},overrides:{"text-weak":"#808080","syntax-comment":"#808080","syntax-keyword":"#9d7cd8","syntax-string":"#7fd88f","syntax-primitive":"#fab283","syntax-variable":"#e06c75","syntax-property":"#56b6c2","syntax-type":"#e5c07b","syntax-constant":"#f5a742","syntax-operator":"#56b6c2","syntax-punctuation":"#eeeeee","syntax-object":"#e06c75","markdown-heading":"#9d7cd8","markdown-text":"#eeeeee","markdown-link":"#fab283","markdown-link-text":"#56b6c2","markdown-code":"#7fd88f","markdown-block-quote":"#e5c07b","markdown-emph":"#e5c07b","markdown-strong":"#f5a742","markdown-horizontal-rule":"#808080","markdown-list-item":"#fab283","markdown-list-enumeration":"#56b6c2","markdown-image":"#fab283","markdown-image-text":"#56b6c2","markdown-code-block":"#eeeeee"}},o={$schema:a,name:e,id:n,light:t,dark:d};export{a as $schema,d as dark,o as default,n as id,t as light,e as name};
|
assets/orng-BM7q_Z0y.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const a="https://opencode.ai/desktop-theme.json",e="Orng",n="orng",t={palette:{neutral:"#ffffff",ink:"#1a1a1a",primary:"#EC5B2B",accent:"#c94d24",success:"#0062d1",warning:"#EC5B2B",error:"#d1383d",info:"#318795",diffDelete:"#f52a65"},overrides:{"text-weak":"#8a8a8a","syntax-comment":"#8a8a8a","syntax-keyword":"#EC5B2B","syntax-string":"#0062d1","syntax-primitive":"#c94d24","syntax-variable":"#d1383d","syntax-property":"#318795","syntax-type":"#b0851f","syntax-constant":"#EC5B2B","syntax-operator":"#318795","syntax-punctuation":"#1a1a1a","syntax-object":"#d1383d","markdown-heading":"#EC5B2B","markdown-text":"#1a1a1a","markdown-link":"#EC5B2B","markdown-link-text":"#318795","markdown-code":"#0062d1","markdown-block-quote":"#b0851f","markdown-emph":"#b0851f","markdown-strong":"#EC5B2B","markdown-horizontal-rule":"#8a8a8a","markdown-list-item":"#EC5B2B","markdown-list-enumeration":"#318795","markdown-image":"#EC5B2B","markdown-image-text":"#318795","markdown-code-block":"#1a1a1a"}},o={palette:{neutral:"#0a0a0a",ink:"#eeeeee",primary:"#EC5B2B",accent:"#FFF7F1",success:"#6ba1e6",warning:"#EC5B2B",error:"#e06c75",info:"#56b6c2",diffDelete:"#e26a75"},overrides:{"text-weak":"#808080","syntax-comment":"#808080","syntax-keyword":"#EC5B2B","syntax-string":"#6ba1e6","syntax-primitive":"#EE7948","syntax-variable":"#e06c75","syntax-property":"#56b6c2","syntax-type":"#e5c07b","syntax-constant":"#FFF7F1","syntax-operator":"#56b6c2","syntax-punctuation":"#eeeeee","syntax-object":"#e06c75","markdown-heading":"#EC5B2B","markdown-text":"#eeeeee","markdown-link":"#EC5B2B","markdown-link-text":"#56b6c2","markdown-code":"#6ba1e6","markdown-block-quote":"#FFF7F1","markdown-emph":"#e5c07b","markdown-strong":"#EE7948","markdown-horizontal-rule":"#808080","markdown-list-item":"#EC5B2B","markdown-list-enumeration":"#56b6c2","markdown-image":"#EC5B2B","markdown-image-text":"#56b6c2","markdown-code-block":"#eeeeee"}},r={$schema:a,name:e,id:n,light:t,dark:o};export{a as $schema,o as dark,r as default,n as id,t as light,e as name};
|
assets/osaka-jade-LSg9CtTT.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const a="https://opencode.ai/desktop-theme.json",n="Osaka Jade",t="osaka-jade",e={palette:{neutral:"#F6F5DD",ink:"#111c18",primary:"#1faa90",accent:"#3d7a52",success:"#3d7a52",warning:"#b5a020",error:"#c7392d",info:"#1faa90"},overrides:{"text-weak":"#53685B","syntax-comment":"#53685B","syntax-keyword":"#1faa90","syntax-string":"#3d7a52","syntax-primitive":"#3d7560","syntax-variable":"#111c18","syntax-property":"#3d7a52","syntax-type":"#3d7a52","syntax-constant":"#a8527a","syntax-operator":"#b5a020","syntax-punctuation":"#111c18","syntax-object":"#111c18","markdown-heading":"#1faa90","markdown-text":"#111c18","markdown-link":"#1faa90","markdown-link-text":"#3d7a52","markdown-code":"#3d7a52","markdown-block-quote":"#53685B","markdown-emph":"#a8527a","markdown-strong":"#111c18","markdown-horizontal-rule":"#53685B","markdown-list-item":"#1faa90","markdown-list-enumeration":"#1faa90","markdown-image":"#1faa90","markdown-image-text":"#3d7a52","markdown-code-block":"#111c18"}},o={palette:{neutral:"#111c18",ink:"#C1C497",primary:"#2DD5B7",accent:"#549e6a",success:"#549e6a",warning:"#E5C736",error:"#FF5345",info:"#2DD5B7",interactive:"#8CD3CB",diffAdd:"#63b07a",diffDelete:"#db9f9c"},overrides:{"text-weak":"#53685B","syntax-comment":"#53685B","syntax-keyword":"#2DD5B7","syntax-string":"#63b07a","syntax-primitive":"#509475","syntax-variable":"#C1C497","syntax-property":"#549e6a","syntax-type":"#549e6a","syntax-constant":"#D2689C","syntax-operator":"#459451","syntax-punctuation":"#C1C497","syntax-object":"#C1C497","markdown-heading":"#2DD5B7","markdown-text":"#C1C497","markdown-link":"#8CD3CB","markdown-link-text":"#549e6a","markdown-code":"#63b07a","markdown-block-quote":"#53685B","markdown-emph":"#D2689C","markdown-strong":"#C1C497","markdown-horizontal-rule":"#53685B","markdown-list-item":"#2DD5B7","markdown-list-enumeration":"#8CD3CB","markdown-image":"#8CD3CB","markdown-image-text":"#549e6a","markdown-code-block":"#C1C497"}},r={$schema:a,name:n,id:t,light:e,dark:o};export{a as $schema,o as dark,r as default,t as id,e as light,n as name};
|
assets/palenight-Djgtir2l.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const a="https://opencode.ai/desktop-theme.json",e="Palenight",n="palenight",t={palette:{neutral:"#fafafa",ink:"#292d3e",primary:"#4976eb",accent:"#00acc1",success:"#91b859",warning:"#ffb300",error:"#e53935",info:"#f4511e"},overrides:{"text-weak":"#8796b0","syntax-comment":"#8796b0","syntax-keyword":"#a854f2","syntax-string":"#91b859","syntax-primitive":"#4976eb","syntax-variable":"#292d3e","syntax-property":"#00acc1","syntax-type":"#ffb300","syntax-constant":"#f4511e","syntax-operator":"#00acc1","syntax-punctuation":"#292d3e","syntax-object":"#292d3e","markdown-heading":"#a854f2","markdown-text":"#292d3e","markdown-link":"#4976eb","markdown-link-text":"#00acc1","markdown-code":"#91b859","markdown-block-quote":"#8796b0","markdown-emph":"#ffb300","markdown-strong":"#f4511e","markdown-horizontal-rule":"#8796b0","markdown-list-item":"#4976eb","markdown-list-enumeration":"#00acc1","markdown-image":"#4976eb","markdown-image-text":"#00acc1","markdown-code-block":"#292d3e"}},o={palette:{neutral:"#292d3e",ink:"#a6accd",primary:"#82aaff",accent:"#89ddff",success:"#c3e88d",warning:"#ffcb6b",error:"#f07178",info:"#f78c6c"},overrides:{"text-weak":"#676e95","syntax-comment":"#676e95","syntax-keyword":"#c792ea","syntax-string":"#c3e88d","syntax-primitive":"#82aaff","syntax-variable":"#a6accd","syntax-property":"#89ddff","syntax-type":"#ffcb6b","syntax-constant":"#f78c6c","syntax-operator":"#89ddff","syntax-punctuation":"#a6accd","syntax-object":"#a6accd","markdown-heading":"#c792ea","markdown-text":"#a6accd","markdown-link":"#82aaff","markdown-link-text":"#89ddff","markdown-code":"#c3e88d","markdown-block-quote":"#676e95","markdown-emph":"#ffcb6b","markdown-strong":"#f78c6c","markdown-horizontal-rule":"#676e95","markdown-list-item":"#82aaff","markdown-list-enumeration":"#89ddff","markdown-image":"#82aaff","markdown-image-text":"#89ddff","markdown-code-block":"#a6accd"}},r={$schema:a,name:e,id:n,light:t,dark:o};export{a as $schema,o as dark,r as default,n as id,t as light,e as name};
|
assets/rosepine-DFf5RIYd.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const a="https://opencode.ai/desktop-theme.json",e="Rose Pine",n="rosepine",t={palette:{neutral:"#faf4ed",ink:"#575279",primary:"#31748f",accent:"#d7827e",success:"#286983",warning:"#ea9d34",error:"#b4637a",info:"#56949f"},overrides:{"text-weak":"#9893a5","syntax-comment":"#9893a5","syntax-keyword":"#286983","syntax-string":"#ea9d34","syntax-primitive":"#d7827e","syntax-variable":"#575279","syntax-property":"#d7827e","syntax-type":"#56949f","syntax-constant":"#907aa9","syntax-operator":"#797593","syntax-punctuation":"#797593","syntax-object":"#575279","markdown-heading":"#907aa9","markdown-text":"#575279","markdown-link":"#31748f","markdown-link-text":"#d7827e","markdown-code":"#286983","markdown-block-quote":"#9893a5","markdown-emph":"#ea9d34","markdown-strong":"#b4637a","markdown-horizontal-rule":"#dfdad9","markdown-list-item":"#31748f","markdown-list-enumeration":"#d7827e","markdown-image":"#31748f","markdown-image-text":"#d7827e","markdown-code-block":"#575279"}},o={palette:{neutral:"#191724",ink:"#e0def4",primary:"#9ccfd8",accent:"#ebbcba",success:"#31748f",warning:"#f6c177",error:"#eb6f92",info:"#9ccfd8"},overrides:{"text-weak":"#6e6a86","syntax-comment":"#6e6a86","syntax-keyword":"#31748f","syntax-string":"#f6c177","syntax-primitive":"#ebbcba","syntax-variable":"#e0def4","syntax-property":"#ebbcba","syntax-type":"#9ccfd8","syntax-constant":"#c4a7e7","syntax-operator":"#908caa","syntax-punctuation":"#908caa","syntax-object":"#e0def4","markdown-heading":"#c4a7e7","markdown-text":"#e0def4","markdown-link":"#9ccfd8","markdown-link-text":"#ebbcba","markdown-code":"#31748f","markdown-block-quote":"#6e6a86","markdown-emph":"#f6c177","markdown-strong":"#eb6f92","markdown-horizontal-rule":"#403d52","markdown-list-item":"#9ccfd8","markdown-list-enumeration":"#ebbcba","markdown-image":"#9ccfd8","markdown-image-text":"#ebbcba","markdown-code-block":"#e0def4"}},r={$schema:a,name:e,id:n,light:t,dark:o};export{a as $schema,o as dark,r as default,n as id,t as light,e as name};
|
assets/shadesofpurple-BtwY-YRg.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const f="https://opencode.ai/desktop-theme.json",e="Shades of Purple",t="shadesofpurple",a={palette:{neutral:"#f7ebff",ink:"#3b2c59",primary:"#7a5af8",accent:"#ff6bd5",success:"#3dd598",warning:"#f7c948",error:"#ff6bd5",info:"#62d4ff",diffAdd:"#c8f8da",diffDelete:"#ffc3ef"},overrides:{"syntax-comment":"#8e4be3","syntax-keyword":"#c45f00","syntax-string":"#2f8b32","syntax-primitive":"#a13bd6","syntax-property":"#008fb8","syntax-type":"#9d7a00","syntax-constant":"#e04d7a"}},n={palette:{neutral:"#1a102b",ink:"#f5f0ff",primary:"#c792ff",accent:"#ff7ac6",success:"#7be0b0",warning:"#ffd580",error:"#ff7ac6",info:"#7dd4ff",diffAdd:"#53c39f",diffDelete:"#d85aa0"},overrides:{"syntax-comment":"#b362ff","syntax-keyword":"#ff9d00","syntax-string":"#a5ff90","syntax-primitive":"#fb94ff","syntax-property":"#9effff","syntax-type":"#fad000","syntax-constant":"#ff628c"}},s={$schema:f,name:e,id:t,light:a,dark:n};export{f as $schema,n as dark,s as default,t as id,a as light,e as name};
|
assets/solarized-DsjFR-SU.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const t="https://opencode.ai/desktop-theme.json",e="Solarized",a="solarized",n={palette:{neutral:"#fdf6e3",ink:"#586e75",primary:"#268bd2",accent:"#d33682",success:"#859900",warning:"#b58900",error:"#dc322f",info:"#2aa198",diffAdd:"#c6dc7a",diffDelete:"#f2a1a1"},overrides:{"syntax-comment":"#657b83","syntax-keyword":"#728600","syntax-string":"#1f8f88","syntax-primitive":"#268bd2","syntax-property":"#268bd2","syntax-constant":"#d33682"}},s={palette:{neutral:"#002b36",ink:"#93a1a1",primary:"#6c71c4",accent:"#d33682",success:"#859900",warning:"#b58900",error:"#dc322f",info:"#2aa198",diffAdd:"#4c7654",diffDelete:"#c34b4b"},overrides:{"syntax-comment":"#586e75","syntax-keyword":"#859900","syntax-string":"#2aa198","syntax-primitive":"#268bd2","syntax-property":"#268bd2","syntax-constant":"#d33682"}},d={$schema:t,name:e,id:a,light:n,dark:s};export{t as $schema,s as dark,d as default,a as id,n as light,e as name};
|
assets/synthwave84-mo9EICVe.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const e="https://opencode.ai/desktop-theme.json",n="Synthwave '84",a="synthwave84",t={palette:{neutral:"#fafafa",ink:"#262335",primary:"#00bcd4",accent:"#9c27b0",success:"#4caf50",warning:"#ff9800",error:"#f44336",info:"#ff5722"},overrides:{"text-weak":"#5c5c8a","syntax-comment":"#5c5c8a","syntax-keyword":"#e91e63","syntax-string":"#ff9800","syntax-primitive":"#ff5722","syntax-variable":"#262335","syntax-property":"#9c27b0","syntax-type":"#00bcd4","syntax-constant":"#9c27b0","syntax-operator":"#e91e63","syntax-punctuation":"#262335","syntax-object":"#262335","markdown-heading":"#e91e63","markdown-text":"#262335","markdown-link":"#00bcd4","markdown-link-text":"#9c27b0","markdown-code":"#4caf50","markdown-block-quote":"#5c5c8a","markdown-emph":"#ff9800","markdown-strong":"#ff5722","markdown-horizontal-rule":"#e0e0e0","markdown-list-item":"#00bcd4","markdown-list-enumeration":"#9c27b0","markdown-image":"#00bcd4","markdown-image-text":"#9c27b0","markdown-code-block":"#262335"}},f={palette:{neutral:"#262335",ink:"#ffffff",primary:"#36f9f6",accent:"#b084eb",success:"#72f1b8",warning:"#fede5d",error:"#fe4450",info:"#ff8b39",diffAdd:"#97f1d8",diffDelete:"#ff5e5b"},overrides:{"text-weak":"#848bbd","syntax-comment":"#848bbd","syntax-keyword":"#ff7edb","syntax-string":"#fede5d","syntax-primitive":"#ff8b39","syntax-variable":"#ffffff","syntax-property":"#b084eb","syntax-type":"#36f9f6","syntax-constant":"#b084eb","syntax-operator":"#ff7edb","syntax-punctuation":"#ffffff","syntax-object":"#ffffff","markdown-heading":"#ff7edb","markdown-text":"#ffffff","markdown-link":"#36f9f6","markdown-link-text":"#b084eb","markdown-code":"#72f1b8","markdown-block-quote":"#848bbd","markdown-emph":"#fede5d","markdown-strong":"#ff8b39","markdown-horizontal-rule":"#495495","markdown-list-item":"#36f9f6","markdown-list-enumeration":"#b084eb","markdown-image":"#36f9f6","markdown-image-text":"#b084eb","markdown-code-block":"#ffffff"}},o={$schema:e,name:n,id:a,light:t,dark:f};export{e as $schema,f as dark,o as default,a as id,t as light,n as name};
|
assets/tokyonight-CbcoahaJ.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const e="https://opencode.ai/desktop-theme.json",t="Tokyonight",n="tokyonight",a={palette:{neutral:"#e1e2e7",ink:"#273153",primary:"#2e7de9",accent:"#b15c00",success:"#587539",warning:"#8c6c3e",error:"#c94060",info:"#007197",diffAdd:"#4f8f7b",diffDelete:"#d05f7c"},overrides:{"syntax-comment":"#6b6f7a","syntax-keyword":"#9854f1","syntax-primitive":"#1f6fd4","syntax-property":"#007197","syntax-constant":"#b15c00"}},f={palette:{neutral:"#1a1b26",ink:"#c0caf5",primary:"#7aa2f7",accent:"#ff9e64",success:"#9ece6a",warning:"#e0af68",error:"#f7768e",info:"#7dcfff",diffAdd:"#41a6b5",diffDelete:"#c34043"},overrides:{"syntax-comment":"#565f89","syntax-keyword":"#bb9af7","syntax-primitive":"#7aa2f7","syntax-property":"#7dcfff","syntax-constant":"#ff9e64"}},c={$schema:e,name:t,id:n,light:a,dark:f};export{e as $schema,f as dark,c as default,n as id,a as light,t as name};
|
assets/vercel-CzCqZjzn.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const t="https://opencode.ai/desktop-theme.json",n="Vercel",a="vercel",e={palette:{neutral:"#FFFFFF",ink:"#171717",primary:"#0070F3",accent:"#8E4EC6",success:"#388E3C",warning:"#FF9500",error:"#DC3545",info:"#0070F3",diffAdd:"#46A758",diffDelete:"#E5484D"},overrides:{"text-weak":"#666666","syntax-comment":"#888888","syntax-keyword":"#E93D82","syntax-string":"#46A758","syntax-primitive":"#8E4EC6","syntax-variable":"#0070F3","syntax-property":"#12A594","syntax-type":"#12A594","syntax-constant":"#FFB224","syntax-operator":"#E93D82","syntax-punctuation":"#171717","syntax-object":"#0070F3","markdown-heading":"#8E4EC6","markdown-text":"#171717","markdown-link":"#0070F3","markdown-link-text":"#12A594","markdown-code":"#46A758","markdown-block-quote":"#666666","markdown-emph":"#FFB224","markdown-strong":"#E93D82","markdown-horizontal-rule":"#999999","markdown-list-item":"#171717","markdown-list-enumeration":"#0070F3","markdown-image":"#12A594","markdown-image-text":"#12A594","markdown-code-block":"#171717"}},o={palette:{neutral:"#000000",ink:"#EDEDED",primary:"#0070F3",accent:"#8E4EC6",success:"#46A758",warning:"#FFB224",error:"#E5484D",info:"#52A8FF",interactive:"#52A8FF",diffAdd:"#63C46D",diffDelete:"#FF6166"},overrides:{"text-weak":"#878787","syntax-comment":"#878787","syntax-keyword":"#F75590","syntax-string":"#63C46D","syntax-primitive":"#BF7AF0","syntax-variable":"#52A8FF","syntax-property":"#0AC7AC","syntax-type":"#0AC7AC","syntax-constant":"#F2A700","syntax-operator":"#F75590","syntax-punctuation":"#EDEDED","syntax-object":"#52A8FF","markdown-heading":"#BF7AF0","markdown-text":"#EDEDED","markdown-link":"#52A8FF","markdown-link-text":"#0AC7AC","markdown-code":"#63C46D","markdown-block-quote":"#878787","markdown-emph":"#F2A700","markdown-strong":"#F75590","markdown-horizontal-rule":"#454545","markdown-list-item":"#EDEDED","markdown-list-enumeration":"#52A8FF","markdown-image":"#0AC7AC","markdown-image-text":"#50E3C2","markdown-code-block":"#EDEDED"}},r={$schema:t,name:n,id:a,light:e,dark:o};export{t as $schema,o as dark,r as default,a as id,e as light,n as name};
|
assets/vesper-67WFNJYM.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const e="https://opencode.ai/desktop-theme.json",t="Vesper",n="vesper",s={palette:{neutral:"#F0F0F0",ink:"#101010",primary:"#FFC799",accent:"#B30000",success:"#99FFE4",warning:"#FFC799",error:"#FF8080",info:"#FFC799",diffAdd:"#99FFE4",diffDelete:"#FF8080"},overrides:{"syntax-comment":"#7a7a7a","syntax-keyword":"#6e6e6e","syntax-string":"#117e69","syntax-primitive":"#8d541c","syntax-property":"#101010","syntax-type":"#8d541c","syntax-constant":"#8d541c"}},a={palette:{neutral:"#101010",ink:"#FFF",primary:"#FFC799",accent:"#FF8080",success:"#99FFE4",warning:"#FFC799",error:"#FF8080",info:"#FFC799",diffAdd:"#99FFE4",diffDelete:"#FF8080"},overrides:{"syntax-comment":"#8b8b8b","syntax-keyword":"#a0a0a0","syntax-string":"#99ffe4","syntax-primitive":"#ffc799","syntax-property":"#ffffff","syntax-type":"#ffc799","syntax-constant":"#ffc799"}},F={$schema:e,name:t,id:n,light:s,dark:a};export{e as $schema,a as dark,F as default,n as id,s as light,t as name};
|
assets/zenburn-3iKGnI7X.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const f="https://opencode.ai/desktop-theme.json",n="Zenburn",a="zenburn",t={palette:{neutral:"#ffffef",ink:"#3f3f3f",primary:"#5f7f8f",accent:"#5f8f8f",success:"#5f8f5f",warning:"#8f8f5f",error:"#8f5f5f",info:"#8f7f5f"},overrides:{"text-weak":"#6f6f6f","syntax-comment":"#5f7f5f","syntax-keyword":"#8f8f5f","syntax-string":"#8f5f5f","syntax-primitive":"#5f7f8f","syntax-variable":"#3f3f3f","syntax-property":"#5f8f8f","syntax-type":"#5f8f8f","syntax-constant":"#5f8f5f","syntax-operator":"#8f8f5f","syntax-punctuation":"#3f3f3f","syntax-object":"#3f3f3f","markdown-heading":"#8f8f5f","markdown-text":"#3f3f3f","markdown-link":"#5f7f8f","markdown-link-text":"#5f8f8f","markdown-code":"#5f8f5f","markdown-block-quote":"#6f6f6f","markdown-emph":"#8f8f5f","markdown-strong":"#8f7f5f","markdown-horizontal-rule":"#6f6f6f","markdown-list-item":"#5f7f8f","markdown-list-enumeration":"#5f8f8f","markdown-image":"#5f7f8f","markdown-image-text":"#5f8f8f","markdown-code-block":"#3f3f3f"}},e={palette:{neutral:"#3f3f3f",ink:"#dcdccc",primary:"#8cd0d3",accent:"#93e0e3",success:"#7f9f7f",warning:"#f0dfaf",error:"#cc9393",info:"#dfaf8f",diffAdd:"#8fb28f",diffDelete:"#dca3a3"},overrides:{"text-weak":"#9f9f9f","syntax-comment":"#7f9f7f","syntax-keyword":"#f0dfaf","syntax-string":"#cc9393","syntax-primitive":"#8cd0d3","syntax-variable":"#dcdccc","syntax-property":"#93e0e3","syntax-type":"#93e0e3","syntax-constant":"#8fb28f","syntax-operator":"#f0dfaf","syntax-punctuation":"#dcdccc","syntax-object":"#dcdccc","markdown-heading":"#f0dfaf","markdown-text":"#dcdccc","markdown-link":"#8cd0d3","markdown-link-text":"#93e0e3","markdown-code":"#7f9f7f","markdown-block-quote":"#9f9f9f","markdown-emph":"#e0cf9f","markdown-strong":"#dfaf8f","markdown-horizontal-rule":"#9f9f9f","markdown-list-item":"#8cd0d3","markdown-list-enumeration":"#93e0e3","markdown-image":"#8cd0d3","markdown-image-text":"#93e0e3","markdown-code-block":"#dcdccc"}},o={$schema:f,name:n,id:a,light:t,dark:e};export{f as $schema,e as dark,o as default,a as id,t as light,n as name};
|
index.html
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!doctype html>
|
| 2 |
+
<html lang="en" style="background-color: var(--v2-background-bg-deep, #fafafa)">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="utf-8" />
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1, interactive-widget=resizes-content, viewport-fit=cover" />
|
| 6 |
+
<title>OpenCode Dashboard</title>
|
| 7 |
+
<link rel="icon" type="image/png" href="/favicon-96x96-v3.png" sizes="96x96" />
|
| 8 |
+
<link rel="icon" type="image/svg+xml" href="/favicon-v3.svg" />
|
| 9 |
+
<link rel="shortcut icon" href="/favicon-v3.ico" />
|
| 10 |
+
<meta name="theme-color" content="#fafafa" />
|
| 11 |
+
<script type="module" crossorigin src="/assets/index-vUWicxNv.js"></script>
|
| 12 |
+
<link rel="stylesheet" crossorigin href="/assets/index-BSf9pAXA.css">
|
| 13 |
+
</head>
|
| 14 |
+
<body class="antialiased overscroll-none overflow-hidden bg-v2-background-bg-deep">
|
| 15 |
+
<noscript>You need to enable JavaScript to run this app.</noscript>
|
| 16 |
+
<div id="root" class="flex flex-col h-dvh bg-v2-background-bg-deep"></div>
|
| 17 |
+
</body>
|
| 18 |
+
</html>
|
main.py
DELETED
|
@@ -1,336 +0,0 @@
|
|
| 1 |
-
from __future__ import annotations
|
| 2 |
-
|
| 3 |
-
import asyncio
|
| 4 |
-
import json
|
| 5 |
-
import os
|
| 6 |
-
import uuid
|
| 7 |
-
from collections.abc import AsyncIterator
|
| 8 |
-
from dataclasses import dataclass
|
| 9 |
-
from datetime import datetime, timezone
|
| 10 |
-
from enum import Enum
|
| 11 |
-
from typing import Any
|
| 12 |
-
|
| 13 |
-
from fastapi import FastAPI, HTTPException
|
| 14 |
-
from fastapi.responses import HTMLResponse, StreamingResponse
|
| 15 |
-
from pydantic import BaseModel
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
# ── Types ─────────────────────────────────────────────────────
|
| 19 |
-
|
| 20 |
-
class State(str, Enum):
|
| 21 |
-
CREATED = "created"
|
| 22 |
-
PLANNING = "planning"
|
| 23 |
-
BUILDING = "building"
|
| 24 |
-
RUNNING = "running"
|
| 25 |
-
DONE = "done"
|
| 26 |
-
FAILED = "failed"
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
@dataclass
|
| 30 |
-
class Entry:
|
| 31 |
-
id: str
|
| 32 |
-
name: str
|
| 33 |
-
goal: str
|
| 34 |
-
state: State = State.CREATED
|
| 35 |
-
created: str = ""
|
| 36 |
-
error: str | None = None
|
| 37 |
-
space_id: str = ""
|
| 38 |
-
space_url: str = ""
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
# ── Event Bus ─────────────────────────────────────────────────
|
| 42 |
-
|
| 43 |
-
class Bus:
|
| 44 |
-
def __init__(self) -> None:
|
| 45 |
-
self._qs: list[asyncio.Queue[bytes]] = []
|
| 46 |
-
|
| 47 |
-
def sub(self) -> asyncio.Queue[bytes]:
|
| 48 |
-
q: asyncio.Queue[bytes] = asyncio.Queue(500)
|
| 49 |
-
self._qs.append(q)
|
| 50 |
-
return q
|
| 51 |
-
|
| 52 |
-
def unsub(self, q: asyncio.Queue[bytes]) -> None:
|
| 53 |
-
if q in self._qs:
|
| 54 |
-
self._qs.remove(q)
|
| 55 |
-
|
| 56 |
-
async def pub(self, kind: str, payload: dict[str, Any]) -> None:
|
| 57 |
-
msg = json.dumps({"cat": kind, "payload": payload, "ts": datetime.now(timezone.utc).isoformat()}).encode()
|
| 58 |
-
for q in self._qs:
|
| 59 |
-
try:
|
| 60 |
-
q.put_nowait(msg)
|
| 61 |
-
except asyncio.QueueFull:
|
| 62 |
-
pass
|
| 63 |
-
|
| 64 |
-
async def stream(self) -> AsyncIterator[bytes]:
|
| 65 |
-
q = self.sub()
|
| 66 |
-
try:
|
| 67 |
-
while True:
|
| 68 |
-
try:
|
| 69 |
-
yield b"data: " + await asyncio.wait_for(q.get(), 30) + b"\n\n"
|
| 70 |
-
except asyncio.TimeoutError:
|
| 71 |
-
yield b": keep\n\n"
|
| 72 |
-
finally:
|
| 73 |
-
self.unsub(q)
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
bus = Bus()
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
# ── Store ─────────────────────────────────────────────────────
|
| 80 |
-
|
| 81 |
-
class Store:
|
| 82 |
-
def __init__(self) -> None:
|
| 83 |
-
self._data: dict[str, Entry] = {}
|
| 84 |
-
|
| 85 |
-
async def add(self, goal: str, name: str | None = None) -> Entry:
|
| 86 |
-
e = Entry(
|
| 87 |
-
id=uuid.uuid4().hex[:12],
|
| 88 |
-
name=name or goal[:30],
|
| 89 |
-
goal=goal,
|
| 90 |
-
created=datetime.now(timezone.utc).isoformat(),
|
| 91 |
-
)
|
| 92 |
-
self._data[e.id] = e
|
| 93 |
-
await bus.pub("project.created", {"id": e.id, "goal": goal})
|
| 94 |
-
return e
|
| 95 |
-
|
| 96 |
-
def get(self, eid: str) -> Entry | None:
|
| 97 |
-
return self._data.get(eid)
|
| 98 |
-
|
| 99 |
-
def all(self) -> list[Entry]:
|
| 100 |
-
return list(self._data.values())
|
| 101 |
-
|
| 102 |
-
async def drop(self, eid: str) -> bool:
|
| 103 |
-
e = self._data.pop(eid, None)
|
| 104 |
-
if e:
|
| 105 |
-
await bus.pub("notification", {"message": f"Deleted {e.name}"})
|
| 106 |
-
return True
|
| 107 |
-
return False
|
| 108 |
-
|
| 109 |
-
|
| 110 |
-
store = Store()
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
# ── HF Manager ────────────────────────────────────────────────
|
| 114 |
-
|
| 115 |
-
class HF:
|
| 116 |
-
def __init__(self) -> None:
|
| 117 |
-
self._token: str | None = None
|
| 118 |
-
self._user: str | None = None
|
| 119 |
-
self._ok = False
|
| 120 |
-
|
| 121 |
-
async def setup(self) -> None:
|
| 122 |
-
self._token = os.environ.get("HF_TOKEN")
|
| 123 |
-
if not self._token:
|
| 124 |
-
await bus.pub("notification", {"message": "Set HF_TOKEN to enable Spaces"})
|
| 125 |
-
return
|
| 126 |
-
try:
|
| 127 |
-
import httpx
|
| 128 |
-
async with httpx.AsyncClient() as c:
|
| 129 |
-
r = await c.get("https://huggingface.co/api/whoami", headers={"Authorization": f"Bearer {self._token}"})
|
| 130 |
-
if r.is_success:
|
| 131 |
-
self._user = r.json().get("name", "")
|
| 132 |
-
self._ok = True
|
| 133 |
-
await bus.pub("notification", {"message": f"HF: {self._user}"})
|
| 134 |
-
except Exception:
|
| 135 |
-
pass
|
| 136 |
-
|
| 137 |
-
@property
|
| 138 |
-
def ready(self) -> bool:
|
| 139 |
-
return self._ok
|
| 140 |
-
|
| 141 |
-
@property
|
| 142 |
-
def user(self) -> str | None:
|
| 143 |
-
return self._user
|
| 144 |
-
|
| 145 |
-
async def create(self, name: str, secrets: dict[str, str] | None = None, template_repo: str | None = None) -> dict[str, Any]:
|
| 146 |
-
if not self._ok:
|
| 147 |
-
return {"error": "no hf token"}
|
| 148 |
-
try:
|
| 149 |
-
import httpx
|
| 150 |
-
sn = name.lower().replace(" ", "-").replace("_", "-")
|
| 151 |
-
rid = f"{self._user}/{sn}"
|
| 152 |
-
async with httpx.AsyncClient() as c:
|
| 153 |
-
if template_repo:
|
| 154 |
-
# Duplicate from template
|
| 155 |
-
r = await c.post(
|
| 156 |
-
f"https://huggingface.co/api/repos/{template_repo}/duplicate",
|
| 157 |
-
headers={"Authorization": f"Bearer {self._token}", "Content-Type": "application/json"},
|
| 158 |
-
json={"name": sn, "type": "space"},
|
| 159 |
-
)
|
| 160 |
-
else:
|
| 161 |
-
# Create blank
|
| 162 |
-
r = await c.post(
|
| 163 |
-
"https://huggingface.co/api/repos/create",
|
| 164 |
-
headers={"Authorization": f"Bearer {self._token}", "Content-Type": "application/json"},
|
| 165 |
-
json={"name": sn, "type": "space", "sdk": "docker"},
|
| 166 |
-
)
|
| 167 |
-
|
| 168 |
-
if not r.is_success:
|
| 169 |
-
return {"error": r.text[:200]}
|
| 170 |
-
|
| 171 |
-
if secrets:
|
| 172 |
-
for k, v in secrets.items():
|
| 173 |
-
await c.post(
|
| 174 |
-
f"https://huggingface.co/api/spaces/{rid}/secrets",
|
| 175 |
-
headers={"Authorization": f"Bearer {self._token}", "Content-Type": "application/json"},
|
| 176 |
-
json={"key": k, "value": v},
|
| 177 |
-
)
|
| 178 |
-
await bus.pub("notification", {"message": f"Space ready: {rid}"})
|
| 179 |
-
return {"space": rid, "url": f"https://huggingface.co/spaces/{rid}"}
|
| 180 |
-
except Exception as e:
|
| 181 |
-
return {"error": str(e)}
|
| 182 |
-
|
| 183 |
-
async def delete(self, name: str) -> dict[str, Any]:
|
| 184 |
-
if not self._ok:
|
| 185 |
-
return {"error": "no hf token"}
|
| 186 |
-
try:
|
| 187 |
-
import httpx
|
| 188 |
-
rid = f"{self._user}/{name}" if "/" not in name else name
|
| 189 |
-
async with httpx.AsyncClient() as c:
|
| 190 |
-
await c.delete(
|
| 191 |
-
f"https://huggingface.co/api/repos/{rid}",
|
| 192 |
-
headers={"Authorization": f"Bearer {self._token}"},
|
| 193 |
-
)
|
| 194 |
-
return {"ok": True}
|
| 195 |
-
except Exception as e:
|
| 196 |
-
return {"error": str(e)}
|
| 197 |
-
|
| 198 |
-
async def status(self) -> dict[str, Any]:
|
| 199 |
-
return {"ok": self._ok, "user": self._user or ""}
|
| 200 |
-
|
| 201 |
-
|
| 202 |
-
hf = HF()
|
| 203 |
-
|
| 204 |
-
|
| 205 |
-
# ── FastAPI ───────────────────────────────────────────────────
|
| 206 |
-
|
| 207 |
-
app = FastAPI(title="OpenCode")
|
| 208 |
-
|
| 209 |
-
|
| 210 |
-
@app.on_event("startup")
|
| 211 |
-
async def boot() -> None:
|
| 212 |
-
await hf.setup()
|
| 213 |
-
|
| 214 |
-
|
| 215 |
-
class ChatIn(BaseModel):
|
| 216 |
-
message: str
|
| 217 |
-
|
| 218 |
-
class CreateIn(BaseModel):
|
| 219 |
-
goal: str
|
| 220 |
-
name: str | None = None
|
| 221 |
-
|
| 222 |
-
class SettingsIn(BaseModel):
|
| 223 |
-
provider: str = ""
|
| 224 |
-
api_key: str = ""
|
| 225 |
-
model: str = ""
|
| 226 |
-
|
| 227 |
-
class SpaceIn(BaseModel):
|
| 228 |
-
name: str
|
| 229 |
-
secrets: dict[str, str] | None = None
|
| 230 |
-
|
| 231 |
-
|
| 232 |
-
@app.get("/")
|
| 233 |
-
async def root():
|
| 234 |
-
return HTMLResponse(open("static/index.html").read())
|
| 235 |
-
|
| 236 |
-
|
| 237 |
-
@app.get("/api/events")
|
| 238 |
-
async def events():
|
| 239 |
-
return StreamingResponse(bus.stream(), media_type="text/event-stream")
|
| 240 |
-
|
| 241 |
-
|
| 242 |
-
@app.post("/api/chat")
|
| 243 |
-
async def chat(body: ChatIn):
|
| 244 |
-
m = body.message.lower()
|
| 245 |
-
|
| 246 |
-
if m.startswith("create ") or m.startswith("build "):
|
| 247 |
-
goal = m[7:] if m.startswith("create ") else m[6:]
|
| 248 |
-
e = await store.add(goal)
|
| 249 |
-
return {"type": "created", "id": e.id, "goal": goal}
|
| 250 |
-
|
| 251 |
-
if m.startswith("delete "):
|
| 252 |
-
eid = m[7:].strip()
|
| 253 |
-
await store.drop(eid)
|
| 254 |
-
return {"type": "info", "message": f"Removed {eid}"}
|
| 255 |
-
|
| 256 |
-
return {"type": "info", "message": "Try: create <goal> or build <goal>"}
|
| 257 |
-
|
| 258 |
-
|
| 259 |
-
@app.get("/api/projects")
|
| 260 |
-
async def list_all():
|
| 261 |
-
return [
|
| 262 |
-
{"id": e.id, "name": e.name, "goal": e.goal, "status": e.state.value,
|
| 263 |
-
"created": e.created, "error": e.error, "space_url": e.space_url}
|
| 264 |
-
for e in store.all()
|
| 265 |
-
]
|
| 266 |
-
|
| 267 |
-
|
| 268 |
-
@app.post("/api/projects")
|
| 269 |
-
async def new_project(body: CreateIn):
|
| 270 |
-
e = await store.add(body.goal, body.name)
|
| 271 |
-
sp = None
|
| 272 |
-
if hf.ready:
|
| 273 |
-
try:
|
| 274 |
-
sp = await hf.create(
|
| 275 |
-
body.name or f"oc-{e.id}",
|
| 276 |
-
{"HF_TOKEN": os.environ.get("HF_TOKEN", ""), "PROJECT": e.id},
|
| 277 |
-
template_repo="asterioskryos/opencode-agent-template"
|
| 278 |
-
)
|
| 279 |
-
if "error" not in sp:
|
| 280 |
-
e.space_id = sp["space"]
|
| 281 |
-
e.space_url = sp["url"]
|
| 282 |
-
except Exception:
|
| 283 |
-
pass
|
| 284 |
-
return {"id": e.id, "goal": e.goal, "space": sp}
|
| 285 |
-
|
| 286 |
-
|
| 287 |
-
@app.delete("/api/projects/{eid}")
|
| 288 |
-
async def delete_entry(eid: str):
|
| 289 |
-
e = store.get(eid)
|
| 290 |
-
if not e:
|
| 291 |
-
raise HTTPException(404)
|
| 292 |
-
if e.space_id and hf.ready:
|
| 293 |
-
await hf.delete(e.space_id)
|
| 294 |
-
await store.drop(eid)
|
| 295 |
-
return {"ok": True}
|
| 296 |
-
|
| 297 |
-
|
| 298 |
-
@app.get("/api/hf/status")
|
| 299 |
-
async def hf_stat():
|
| 300 |
-
return await hf.status()
|
| 301 |
-
|
| 302 |
-
|
| 303 |
-
@app.post("/api/hf/create")
|
| 304 |
-
async def hf_mk(body: SpaceIn):
|
| 305 |
-
r = await hf.create(body.name, body.secrets)
|
| 306 |
-
if "error" in r:
|
| 307 |
-
raise HTTPException(400, r["error"])
|
| 308 |
-
return r
|
| 309 |
-
|
| 310 |
-
|
| 311 |
-
@app.delete("/api/hf/space/{name}")
|
| 312 |
-
async def hf_rm(name: str):
|
| 313 |
-
r = await hf.delete(name)
|
| 314 |
-
if "error" in r:
|
| 315 |
-
raise HTTPException(400, r["error"])
|
| 316 |
-
return r
|
| 317 |
-
|
| 318 |
-
|
| 319 |
-
@app.post("/api/settings")
|
| 320 |
-
async def set_cfg(body: SettingsIn):
|
| 321 |
-
if body.api_key:
|
| 322 |
-
os.environ["OC_KEY"] = body.api_key
|
| 323 |
-
if body.provider:
|
| 324 |
-
os.environ["OC_PROVIDER"] = body.provider
|
| 325 |
-
if body.model:
|
| 326 |
-
os.environ["OC_MODEL"] = body.model
|
| 327 |
-
return {"ok": True}
|
| 328 |
-
|
| 329 |
-
|
| 330 |
-
@app.get("/api/settings")
|
| 331 |
-
async def get_cfg():
|
| 332 |
-
return {
|
| 333 |
-
"provider": os.environ.get("OC_PROVIDER", "openrouter"),
|
| 334 |
-
"model": os.environ.get("OC_MODEL", "gpt-4o"),
|
| 335 |
-
"token_set": bool(os.environ.get("HF_TOKEN")),
|
| 336 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
nginx.conf
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
server {
|
| 2 |
+
listen 80;
|
| 3 |
+
root /usr/share/nginx/html;
|
| 4 |
+
index index.html;
|
| 5 |
+
location / {
|
| 6 |
+
try_files $uri $uri/ /index.html;
|
| 7 |
+
}
|
| 8 |
+
}
|
requirements.txt
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
fastapi>=0.115,<1
|
| 2 |
-
uvicorn>=0.32,<1
|
| 3 |
-
httpx>=0.27,<1
|
|
|
|
|
|
|
|
|
|
|
|
static/index.html
DELETED
|
@@ -1,431 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html lang="en">
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset="UTF-8">
|
| 5 |
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
-
<title>OpenCode</title>
|
| 7 |
-
<style>
|
| 8 |
-
*{margin:0;padding:0;box-sizing:border-box}
|
| 9 |
-
body{font-family:system-ui,-apple-system,sans-serif;background:#0b1120;color:#e2e8f0;height:100vh;display:flex;overflow:hidden}
|
| 10 |
-
|
| 11 |
-
/* ── Sticky Left Bar ── */
|
| 12 |
-
.sbar{width:42px;min-width:42px;background:#080e1a;border-right:1px solid #1e293b;display:flex;flex-direction:column;align-items:center;padding:6px 0;z-index:20}
|
| 13 |
-
.sbar .spc{flex:1}
|
| 14 |
-
.sbar button{width:32px;height:32px;border:none;border-radius:6px;background:transparent;color:#475569;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;margin:2px 0}
|
| 15 |
-
.sbar button:hover{background:#1e293b;color:#e2e8f0}
|
| 16 |
-
|
| 17 |
-
/* ── Main ── */
|
| 18 |
-
.main{flex:1;display:flex;overflow:hidden}
|
| 19 |
-
|
| 20 |
-
/* ── Dashboard ── */
|
| 21 |
-
#dash{display:flex;width:100%;height:100%}
|
| 22 |
-
.dl{width:280px;min-width:280px;border-right:1px solid #1e293b;display:flex;flex-direction:column;background:#0b1120}
|
| 23 |
-
.dlh{padding:14px 16px;border-bottom:1px solid #1e293b;display:flex;justify-content:space-between;align-items:center}
|
| 24 |
-
.dlh h2{font-size:12px;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.6px}
|
| 25 |
-
.dlh button{padding:5px 12px;border:none;border-radius:5px;background:#6366f1;color:#fff;cursor:pointer;font-size:12px;font-weight:600}
|
| 26 |
-
.dlh button:hover{background:#4f46e5}
|
| 27 |
-
.pl{flex:1;overflow-y:auto;padding:8px}
|
| 28 |
-
.pi{padding:9px 12px;border-radius:6px;cursor:pointer;margin-bottom:3px;position:relative}
|
| 29 |
-
.pi:hover{background:#131d31}
|
| 30 |
-
.pi.act{background:#131d31;border-left:2px solid #6366f1}
|
| 31 |
-
.pi .nm{font-size:13px;font-weight:500}
|
| 32 |
-
.pi .st{font-size:11px;margin-top:1px}
|
| 33 |
-
.pi .st.s0{color:#64748b}
|
| 34 |
-
.pi .st.s1{color:#fbbf24}
|
| 35 |
-
.pi .st.s2{color:#60a5fa}
|
| 36 |
-
.pi .st.s3{color:#22d3ee}
|
| 37 |
-
.pi .st.s4{color:#34d399}
|
| 38 |
-
.pi .st.s5{color:#f87171}
|
| 39 |
-
.pi .del{position:absolute;top:6px;right:6px;background:none;border:none;color:#ef4444;cursor:pointer;font-size:13px;opacity:0;padding:2px 4px;border-radius:3px}
|
| 40 |
-
.pi:hover .del{opacity:1}
|
| 41 |
-
.pi .del:hover{background:rgba(239,68,68,.15)}
|
| 42 |
-
|
| 43 |
-
.dr{flex:1;display:flex;align-items:center;justify-content:center}
|
| 44 |
-
.hero{text-align:center}
|
| 45 |
-
.hero .ic{width:80px;height:80px;margin:0 auto 20px;background:#131d31;border:2px solid #1e293b;border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:32px;color:#6366f1}
|
| 46 |
-
.hero h1{font-size:22px;font-weight:700;margin-bottom:6px}
|
| 47 |
-
.hero p{color:#64748b;font-size:13px;margin-bottom:8px}
|
| 48 |
-
.hero .ln{color:#6366f1;font-size:12px;font-family:monospace}
|
| 49 |
-
|
| 50 |
-
/* ── Project View ── */
|
| 51 |
-
#pview{display:none;width:100%;height:100%}
|
| 52 |
-
.pvi{display:flex;width:100%;height:100%}
|
| 53 |
-
.sp{width:260px;min-width:260px;border-right:1px solid #1e293b;display:flex;flex-direction:column;background:#0b1120;transition:margin-left .2s,width .2s,min-width .2s}
|
| 54 |
-
.sp.c{ margin-left:-260px;width:0;min-width:0;border-right:none}
|
| 55 |
-
.sph{padding:10px 14px;border-bottom:1px solid #1e293b;display:flex;justify-content:space-between;align-items:center}
|
| 56 |
-
.sph h3{font-size:11px;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.5px}
|
| 57 |
-
.sph button{background:none;border:none;color:#475569;cursor:pointer;font-size:15px;padding:2px 6px;border-radius:4px}
|
| 58 |
-
.sph button:hover{color:#e2e8f0;background:#1e293b}
|
| 59 |
-
.sl{flex:1;overflow-y:auto;padding:6px}
|
| 60 |
-
.si{padding:7px 10px;border-radius:5px;cursor:pointer;font-size:12px;color:#64748b;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
| 61 |
-
.si:hover{background:#131d31;color:#e2e8f0}
|
| 62 |
-
.si.act{background:#131d31;color:#e2e8f0;border-left:2px solid #6366f1}
|
| 63 |
-
|
| 64 |
-
.ca{flex:1;display:flex;flex-direction:column;min-width:0}
|
| 65 |
-
.ct{padding:8px 14px;border-bottom:1px solid #1e293b;display:flex;align-items:center;gap:6px;background:#0b1120}
|
| 66 |
-
.ct button{background:none;border:none;color:#64748b;cursor:pointer;font-size:12px;padding:4px 8px;border-radius:5px;display:flex;align-items:center;gap:4px}
|
| 67 |
-
.ct button:hover{color:#e2e8f0;background:#131d31}
|
| 68 |
-
.ct .ttl{font-size:12px;font-weight:600;color:#94a3b8;margin-left:2px}
|
| 69 |
-
|
| 70 |
-
.cm{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px}
|
| 71 |
-
.msg{max-width:78%;padding:9px 13px;border-radius:10px;font-size:13px;line-height:1.5;white-space:pre-wrap}
|
| 72 |
-
.msg.u{align-self:flex-end;background:#6366f1;color:#fff;border-bottom-right-radius:3px}
|
| 73 |
-
.msg.a{align-self:flex-start;background:#131d31;color:#e2e8f0;border-bottom-left-radius:3px}
|
| 74 |
-
.msg.s{align-self:center;background:transparent;color:#475569;font-size:11px}
|
| 75 |
-
|
| 76 |
-
.ci{padding:10px 14px;border-top:1px solid #1e293b;background:#0b1120}
|
| 77 |
-
.cir{display:flex;gap:8px}
|
| 78 |
-
.cir input{flex:1;padding:9px 13px;border:1px solid #1e293b;border-radius:7px;background:#0b1120;color:#e2e8f0;font-size:13px;outline:none}
|
| 79 |
-
.cir input:focus{border-color:#6366f1}
|
| 80 |
-
.cir button{padding:9px 18px;border:none;border-radius:7px;background:#6366f1;color:#fff;cursor:pointer;font-weight:600;font-size:12px}
|
| 81 |
-
.cir button:hover{background:#4f46e5}
|
| 82 |
-
|
| 83 |
-
/* ── Notification ── */
|
| 84 |
-
#nbar{display:none;position:fixed;top:0;left:42px;right:0;background:#1e293b;border-bottom:1px solid #fbbf24;padding:7px 14px;z-index:100;font-size:12px;align-items:center;gap:8px}
|
| 85 |
-
#nbar.s{display:flex}
|
| 86 |
-
#nbar .nc{color:#fbbf24}
|
| 87 |
-
#nbar .nx{margin-left:auto;background:none;border:none;color:#475569;cursor:pointer;font-size:15px;padding:2px 6px;border-radius:4px}
|
| 88 |
-
#nbar .nx:hover{color:#e2e8f0;background:#334155}
|
| 89 |
-
|
| 90 |
-
/* ── Overlays ── */
|
| 91 |
-
.ov{display:none;position:fixed;top:0;left:42px;right:0;bottom:0;z-index:150}
|
| 92 |
-
.ov.s{display:block}
|
| 93 |
-
.ov .bg{position:absolute;inset:0;background:rgba(0,0,0,.45)}
|
| 94 |
-
.ov .pnl{position:absolute;top:0;left:0;bottom:0;width:380px;background:#131d31;border-right:1px solid #1e293b;padding:18px;overflow-y:auto}
|
| 95 |
-
.ov .pnl h2{font-size:14px;margin-bottom:14px;display:flex;align-items:center;gap:8px}
|
| 96 |
-
.ov .pnl h2 button{margin-left:auto;background:none;border:none;color:#475569;cursor:pointer;font-size:17px;padding:2px 6px;border-radius:4px}
|
| 97 |
-
.sec{margin-bottom:16px}
|
| 98 |
-
.sec h3{font-size:11px;color:#64748b;margin-bottom:6px;text-transform:uppercase;letter-spacing:.5px}
|
| 99 |
-
.sr{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid #0b1120;font-size:12px}
|
| 100 |
-
.sr .vl{color:#64748b;font-family:monospace;font-size:11px}
|
| 101 |
-
.sr select,.sr input{padding:4px 8px;border:1px solid #1e293b;border-radius:4px;background:#0b1120;color:#e2e8f0;font-size:11px;outline:none}
|
| 102 |
-
.sr select:focus,.sr input:focus{border-color:#6366f1}
|
| 103 |
-
.hi{padding:8px 0;border-bottom:1px solid #0b1120}
|
| 104 |
-
.hi h4{font-size:13px;margin-bottom:3px}
|
| 105 |
-
.hi p{font-size:12px;color:#64748b;line-height:1.5}
|
| 106 |
-
|
| 107 |
-
/* ── Modals ── */
|
| 108 |
-
.mod{display:none;position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:200;align-items:center;justify-content:center}
|
| 109 |
-
.mod.s{display:flex}
|
| 110 |
-
.mod .bx{background:#131d31;border:1px solid #1e293b;border-radius:10px;padding:20px;width:420px;max-height:75vh;overflow-y:auto}
|
| 111 |
-
.mod .bx h2{font-size:15px;margin-bottom:14px}
|
| 112 |
-
.fg{margin-bottom:10px}
|
| 113 |
-
.fg label{display:block;font-size:11px;color:#64748b;margin-bottom:3px}
|
| 114 |
-
.fg input,.fg textarea{width:100%;padding:7px 11px;border:1px solid #1e293b;border-radius:5px;background:#0b1120;color:#e2e8f0;font-size:12px;outline:none}
|
| 115 |
-
.fg textarea{resize:vertical;min-height:50px;font-family:inherit}
|
| 116 |
-
.fg input:focus,.fg textarea:focus{border-color:#6366f1}
|
| 117 |
-
.ma{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}
|
| 118 |
-
.ma button{padding:7px 14px;border:none;border-radius:5px;cursor:pointer;font-weight:600;font-size:12px}
|
| 119 |
-
.bp{background:#6366f1;color:#fff}
|
| 120 |
-
.bp:hover{background:#4f46e5}
|
| 121 |
-
.bs{background:#1e293b;color:#e2e8f0}
|
| 122 |
-
.bs:hover{background:#334155}
|
| 123 |
-
.bd{background:#ef4444;color:#fff}
|
| 124 |
-
.bd:hover{background:#dc2626}
|
| 125 |
-
|
| 126 |
-
::-webkit-scrollbar{width:5px}
|
| 127 |
-
::-webkit-scrollbar-track{background:transparent}
|
| 128 |
-
::-webkit-scrollbar-thumb{background:#1e293b;border-radius:3px}
|
| 129 |
-
</style>
|
| 130 |
-
</head>
|
| 131 |
-
<body>
|
| 132 |
-
|
| 133 |
-
<div id="nbar"><span class="nc">⚠</span><span id="ntxt"></span><button class="nx" onclick="hiden()">×</button></div>
|
| 134 |
-
|
| 135 |
-
<div class="sbar">
|
| 136 |
-
<div class="spc"></div>
|
| 137 |
-
<button onclick="tset()" title="Settings">⚙</button>
|
| 138 |
-
<button onclick="thelp()" title="Help">❓</button>
|
| 139 |
-
</div>
|
| 140 |
-
|
| 141 |
-
<div class="main">
|
| 142 |
-
|
| 143 |
-
<!-- Dashboard -->
|
| 144 |
-
<div id="dash">
|
| 145 |
-
<div class="dl">
|
| 146 |
-
<div class="dlh"><h2>Projects</h2><button onclick="mcreate()">+ New</button></div>
|
| 147 |
-
<div class="pl" id="pl"></div>
|
| 148 |
-
</div>
|
| 149 |
-
<div class="dr">
|
| 150 |
-
<div class="hero">
|
| 151 |
-
<div class="ic">◆</div>
|
| 152 |
-
<h1>OpenCode</h1>
|
| 153 |
-
<p>Create or open a project to start</p>
|
| 154 |
-
<div class="ln" id="hln">▶ Ready</div>
|
| 155 |
-
</div>
|
| 156 |
-
</div>
|
| 157 |
-
</div>
|
| 158 |
-
|
| 159 |
-
<!-- Project View -->
|
| 160 |
-
<div id="pview">
|
| 161 |
-
<div class="pvi">
|
| 162 |
-
<div class="sp" id="sp">
|
| 163 |
-
<div class="sph"><h3>Sessions</h3><button onclick="nsess()">+</button></div>
|
| 164 |
-
<div class="sl" id="sl"></div>
|
| 165 |
-
</div>
|
| 166 |
-
<div class="ca">
|
| 167 |
-
<div class="ct">
|
| 168 |
-
<button onclick="bdash()">← Dashboard</button>
|
| 169 |
-
<button onclick="tsess()" title="Toggle Sessions">☰</button>
|
| 170 |
-
<span class="ttl" id="cttl">Project</span>
|
| 171 |
-
</div>
|
| 172 |
-
<div class="cm" id="cm"></div>
|
| 173 |
-
<div class="ci">
|
| 174 |
-
<div class="cir">
|
| 175 |
-
<input id="ci" placeholder="Type a message..." onkeydown="if(event.key==='Enter')send()">
|
| 176 |
-
<button onclick="send()">Send</button>
|
| 177 |
-
</div>
|
| 178 |
-
</div>
|
| 179 |
-
</div>
|
| 180 |
-
</div>
|
| 181 |
-
</div>
|
| 182 |
-
|
| 183 |
-
</div><!-- /main -->
|
| 184 |
-
|
| 185 |
-
<!-- Settings -->
|
| 186 |
-
<div class="ov" id="setov">
|
| 187 |
-
<div class="bg" onclick="tset()"></div>
|
| 188 |
-
<div class="pnl">
|
| 189 |
-
<h2>Settings <button onclick="tset()">×</button></h2>
|
| 190 |
-
<div class="sec">
|
| 191 |
-
<h3>Provider</h3>
|
| 192 |
-
<div class="sr"><span>Provider</span><select id="sprov" onchange="sv()"><option value="openrouter">OpenRouter</option><option value="nvidia">NVIDIA</option><option value="gemini">Gemini</option><option value="custom">Custom</option></select></div>
|
| 193 |
-
<div class="sr"><span>API Key</span><input type="password" id="sapi" placeholder="sk-..." style="width:170px" onchange="sv()"></div>
|
| 194 |
-
<div class="sr"><span>Model</span><select id="smod" onchange="sv()"><option value="gpt-4o">GPT-4o</option><option value="gpt-4o-mini">GPT-4o Mini</option><option value="claude-3.5-sonnet">Claude 3.5 Sonnet</option><option value="gemini-2.0-flash">Gemini 2.0 Flash</option></select></div>
|
| 195 |
-
</div>
|
| 196 |
-
<div class="sec">
|
| 197 |
-
<h3>Hugging Face</h3>
|
| 198 |
-
<div class="sr"><span>Token</span><span class="vl" id="hftok">-</span></div>
|
| 199 |
-
<div class="sr"><span>User</span><span class="vl" id="hfus">-</span></div>
|
| 200 |
-
</div>
|
| 201 |
-
</div>
|
| 202 |
-
</div>
|
| 203 |
-
|
| 204 |
-
<!-- Help -->
|
| 205 |
-
<div class="ov" id="hlpov">
|
| 206 |
-
<div class="bg" onclick="thelp()"></div>
|
| 207 |
-
<div class="pnl">
|
| 208 |
-
<h2>Help <button onclick="thelp()">×</button></h2>
|
| 209 |
-
<div class="hi"><h4>Getting Started</h4><p>Click "+ New" to create a project. Select it to open the chat. Type messages or commands to interact.</p></div>
|
| 210 |
-
<div class="hi"><h4>Commands</h4><p><b>create <goal></b> or <b>build <goal></b> - create a project from chat<br><b>delete <id></b> - remove a project</p></div>
|
| 211 |
-
<div class="hi"><h4>Spaces</h4><p>Each project can have a Hugging Face Space. Set HF_TOKEN in Space secrets to enable this.</p></div>
|
| 212 |
-
<div class="hi"><h4>Settings</h4><p>Configure provider, API key, and model in the Settings panel. These apply across all projects.</p></div>
|
| 213 |
-
</div>
|
| 214 |
-
</div>
|
| 215 |
-
|
| 216 |
-
<!-- Create Modal -->
|
| 217 |
-
<div class="mod" id="cmod">
|
| 218 |
-
<div class="bx">
|
| 219 |
-
<h2>New Project</h2>
|
| 220 |
-
<div class="fg"><label>Goal</label><textarea id="cg" rows="2" placeholder="What do you want to build?"></textarea></div>
|
| 221 |
-
<div class="fg"><label>Name (optional)</label><input id="cn" placeholder="my-project"></div>
|
| 222 |
-
<div class="ma"><button class="bs" onclick="mcreatec()">Cancel</button><button class="bp" onclick="mk()">Create</button></div>
|
| 223 |
-
</div>
|
| 224 |
-
</div>
|
| 225 |
-
|
| 226 |
-
<!-- Delete Modal -->
|
| 227 |
-
<div class="mod" id="dmod">
|
| 228 |
-
<div class="bx">
|
| 229 |
-
<h2>Delete Project</h2>
|
| 230 |
-
<p style="font-size:13px;color:#64748b;margin-bottom:14px">This will also delete the associated HF Space.</p>
|
| 231 |
-
<div class="ma"><button class="bs" onclick="deldc()">Cancel</button><button class="bd" id="deldb" onclick="deld()">Delete</button></div>
|
| 232 |
-
</div>
|
| 233 |
-
</div>
|
| 234 |
-
|
| 235 |
-
<script>
|
| 236 |
-
// ── State ──
|
| 237 |
-
let cur = null
|
| 238 |
-
let cses = null
|
| 239 |
-
let sess = []
|
| 240 |
-
let msgs = []
|
| 241 |
-
let sc = false
|
| 242 |
-
let items = []
|
| 243 |
-
let dtar = null
|
| 244 |
-
|
| 245 |
-
// ── SSE ──
|
| 246 |
-
new EventSource('/api/events').onmessage = e => {
|
| 247 |
-
try {
|
| 248 |
-
const d = JSON.parse(e.data)
|
| 249 |
-
if (['notification','project.created','project.error','project.done'].includes(d.cat)) {
|
| 250 |
-
notif(d.payload?.message || d.cat)
|
| 251 |
-
}
|
| 252 |
-
} catch(_) {}
|
| 253 |
-
}
|
| 254 |
-
|
| 255 |
-
// ── Notifications ──
|
| 256 |
-
function notif(t) {
|
| 257 |
-
document.getElementById('ntxt').textContent = t
|
| 258 |
-
document.getElementById('nbar').classList.add('s')
|
| 259 |
-
}
|
| 260 |
-
function hiden() { document.getElementById('nbar').classList.remove('s') }
|
| 261 |
-
|
| 262 |
-
// ── Views ──
|
| 263 |
-
function dash() {
|
| 264 |
-
document.getElementById('dash').style.display = 'flex'
|
| 265 |
-
document.getElementById('pview').style.display = 'none'
|
| 266 |
-
cur = null
|
| 267 |
-
load()
|
| 268 |
-
}
|
| 269 |
-
|
| 270 |
-
function pview(id) {
|
| 271 |
-
cur = id
|
| 272 |
-
document.getElementById('dash').style.display = 'none'
|
| 273 |
-
document.getElementById('pview').style.display = 'flex'
|
| 274 |
-
const e = items.find(x => x.id === id)
|
| 275 |
-
document.getElementById('cttl').textContent = e ? e.goal : 'Project'
|
| 276 |
-
sess = [{id:'d',name:'Session 1'}]
|
| 277 |
-
cses = 'd'
|
| 278 |
-
msgs = []
|
| 279 |
-
rsess()
|
| 280 |
-
rmsgs()
|
| 281 |
-
addm('Agent ready. Type a message.', 's')
|
| 282 |
-
}
|
| 283 |
-
function bdash() { dash() }
|
| 284 |
-
|
| 285 |
-
// ── Projects ──
|
| 286 |
-
async function load() {
|
| 287 |
-
try {
|
| 288 |
-
const r = await fetch('/api/projects')
|
| 289 |
-
items = await r.json()
|
| 290 |
-
rlist()
|
| 291 |
-
} catch(_) {}
|
| 292 |
-
}
|
| 293 |
-
|
| 294 |
-
function rlist() {
|
| 295 |
-
const el = document.getElementById('pl')
|
| 296 |
-
if (!items.length) {
|
| 297 |
-
el.innerHTML = '<div style="color:#475569;font-size:12px;padding:16px;text-align:center">No projects yet.</div>'
|
| 298 |
-
return
|
| 299 |
-
}
|
| 300 |
-
const st = {created:'s0',planning:'s1',building:'s2',running:'s3',done:'s4',failed:'s5'}
|
| 301 |
-
el.innerHTML = items.map(e => `
|
| 302 |
-
<div class="pi ${e.id===cur?'act':''}" onclick="openp('${e.id}')">
|
| 303 |
-
<div class="nm">${esc(e.goal)}</div>
|
| 304 |
-
<div class="st ${st[e.status]||'s0'}">${e.status}${e.space_url?' \u2197':''}</div>
|
| 305 |
-
<button class="del" onclick="event.stopPropagation();deldm('${e.id}')">🗑</button>
|
| 306 |
-
</div>
|
| 307 |
-
`).join('')
|
| 308 |
-
const h = document.getElementById('hln')
|
| 309 |
-
if (items.length) h.textContent = items.length + ' project' + (items.length>1?'s':'') + ' \u2022 Ready'
|
| 310 |
-
else h.textContent = '\u25b6 Ready'
|
| 311 |
-
}
|
| 312 |
-
|
| 313 |
-
function openp(id) { pview(id) }
|
| 314 |
-
|
| 315 |
-
function mcreate() { document.getElementById('cmod').classList.add('s'); document.getElementById('cg').value=''; document.getElementById('cn').value='' }
|
| 316 |
-
function mcreatec() { document.getElementById('cmod').classList.remove('s') }
|
| 317 |
-
|
| 318 |
-
async function mk() {
|
| 319 |
-
const g = document.getElementById('cg').value.trim()
|
| 320 |
-
const n = document.getElementById('cn').value.trim()
|
| 321 |
-
if (!g) return
|
| 322 |
-
mcreatec()
|
| 323 |
-
try {
|
| 324 |
-
await fetch('/api/projects',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({goal:g,name:n||undefined})})
|
| 325 |
-
notif('Created: ' + g)
|
| 326 |
-
load()
|
| 327 |
-
} catch(_) {}
|
| 328 |
-
}
|
| 329 |
-
|
| 330 |
-
function deldm(id) { dtar=id; document.getElementById('dmod').classList.add('s') }
|
| 331 |
-
function deldc() { document.getElementById('dmod').classList.remove('s'); dtar=null }
|
| 332 |
-
async function deld() {
|
| 333 |
-
if (!dtar) return
|
| 334 |
-
deldc()
|
| 335 |
-
try {
|
| 336 |
-
await fetch('/api/projects/'+dtar,{method:'DELETE'})
|
| 337 |
-
if (cur===dtar) dash()
|
| 338 |
-
load()
|
| 339 |
-
} catch(_) {}
|
| 340 |
-
}
|
| 341 |
-
|
| 342 |
-
// ── Sessions ──
|
| 343 |
-
function rsess() {
|
| 344 |
-
document.getElementById('sl').innerHTML = sess.map(s =>
|
| 345 |
-
`<div class="si ${s.id===cses?'act':''}" onclick="ssel('${s.id}')">${esc(s.name)}</div>`
|
| 346 |
-
).join('')
|
| 347 |
-
}
|
| 348 |
-
|
| 349 |
-
function ssel(id) {
|
| 350 |
-
cses = id
|
| 351 |
-
rsess()
|
| 352 |
-
msgs = []
|
| 353 |
-
rmsgs()
|
| 354 |
-
addm('Switched session.', 's')
|
| 355 |
-
}
|
| 356 |
-
|
| 357 |
-
function nsess() {
|
| 358 |
-
const id = 's'+Date.now().toString(36)
|
| 359 |
-
sess.push({id,name:'Session '+sess.length})
|
| 360 |
-
cses = id
|
| 361 |
-
rsess()
|
| 362 |
-
msgs = []
|
| 363 |
-
rmsgs()
|
| 364 |
-
addm('New session.', 's')
|
| 365 |
-
}
|
| 366 |
-
|
| 367 |
-
function tsess() {
|
| 368 |
-
sc = !sc
|
| 369 |
-
document.getElementById('sp').classList.toggle('c',sc)
|
| 370 |
-
}
|
| 371 |
-
|
| 372 |
-
// ── Chat ──
|
| 373 |
-
function addm(t, ty='a') { msgs.push({t,ty}); rmsgs() }
|
| 374 |
-
function rmsgs() {
|
| 375 |
-
const el = document.getElementById('cm')
|
| 376 |
-
el.innerHTML = msgs.map(m => `<div class="msg ${m.ty==='u'?'u':m.ty==='s'?'s':'a'}">${esc(m.t)}</div>`).join('')
|
| 377 |
-
el.scrollTop = el.scrollHeight
|
| 378 |
-
}
|
| 379 |
-
|
| 380 |
-
async function send() {
|
| 381 |
-
const inp = document.getElementById('ci')
|
| 382 |
-
const m = inp.value.trim()
|
| 383 |
-
if (!m) return
|
| 384 |
-
inp.value = ''
|
| 385 |
-
addm(m, 'u')
|
| 386 |
-
try {
|
| 387 |
-
const r = await fetch('/api/chat',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({message:m})})
|
| 388 |
-
const d = await r.json()
|
| 389 |
-
if (d.type==='created') {
|
| 390 |
-
addm('Project created: ' + d.goal, 's')
|
| 391 |
-
load()
|
| 392 |
-
} else {
|
| 393 |
-
addm(d.message || JSON.stringify(d), 'a')
|
| 394 |
-
}
|
| 395 |
-
} catch(e) { addm('Error: '+e.message, 'a') }
|
| 396 |
-
}
|
| 397 |
-
|
| 398 |
-
// ── Settings ──
|
| 399 |
-
function tset() {
|
| 400 |
-
const o = document.getElementById('setov')
|
| 401 |
-
o.classList.toggle('s')
|
| 402 |
-
if (o.classList.contains('s')) refreshSettings()
|
| 403 |
-
}
|
| 404 |
-
async function refreshSettings() {
|
| 405 |
-
try {
|
| 406 |
-
const r = await fetch('/api/settings')
|
| 407 |
-
const d = await r.json()
|
| 408 |
-
document.getElementById('hftok').textContent = d.token_set ? 'Set' : 'Not set'
|
| 409 |
-
const s = await fetch('/api/hf/status').then(r=>r.json()).catch(()=>({}))
|
| 410 |
-
document.getElementById('hfus').textContent = s.user || '-'
|
| 411 |
-
} catch(_) {}
|
| 412 |
-
}
|
| 413 |
-
function sv() {
|
| 414 |
-
fetch('/api/settings',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({
|
| 415 |
-
provider:document.getElementById('sprov').value,
|
| 416 |
-
api_key:document.getElementById('sapi').value,
|
| 417 |
-
model:document.getElementById('smod').value
|
| 418 |
-
})})
|
| 419 |
-
}
|
| 420 |
-
|
| 421 |
-
// ── Help ──
|
| 422 |
-
function thelp() { document.getElementById('hlpov').classList.toggle('s') }
|
| 423 |
-
|
| 424 |
-
// ── Util ──
|
| 425 |
-
function esc(s) { const d=document.createElement('div'); d.textContent=s; return d.innerHTML }
|
| 426 |
-
|
| 427 |
-
// ── Init ──
|
| 428 |
-
dash()
|
| 429 |
-
</script>
|
| 430 |
-
</body>
|
| 431 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|