@elizaos/plugin-knowledge 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.html
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
2
|
+
<html lang="en" class="dark">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>Agent Plugin View</title>
|
|
8
|
-
<script type="module" crossorigin src="./assets/index-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
8
|
+
<script type="module" crossorigin src="./assets/index-BwFQYb4z.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="./assets/index-Bjc7mMWy.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elizaos/plugin-knowledge",
|
|
3
3
|
"description": "Plugin for Knowledge",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.4",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"module": "dist/index.js",
|
|
@@ -31,7 +31,6 @@
|
|
|
31
31
|
"@ai-sdk/google": "^1.2.18",
|
|
32
32
|
"@ai-sdk/openai": "^1.3.22",
|
|
33
33
|
"@elizaos/core": "^1.0.0",
|
|
34
|
-
"@elizaos/plugin-sql": "^1.0.0-beta",
|
|
35
34
|
"@openrouter/ai-sdk-provider": "^0.4.5",
|
|
36
35
|
"@tanstack/react-query": "^5.51.1",
|
|
37
36
|
"@vitejs/plugin-react-swc": "^3.10.0",
|
|
@@ -54,9 +53,10 @@
|
|
|
54
53
|
"tsup": "8.5.0",
|
|
55
54
|
"typescript": "5.8.3",
|
|
56
55
|
"prettier": "3.5.3",
|
|
57
|
-
"tailwindcss": "^
|
|
56
|
+
"@tailwindcss/vite": "^4.1.0",
|
|
57
|
+
"tailwindcss": "^4.1.0",
|
|
58
58
|
"tailwindcss-animate": "^1.0.7",
|
|
59
|
-
"postcss": "^8.
|
|
59
|
+
"postcss": "^8.5.3",
|
|
60
60
|
"autoprefixer": "^10.4.19"
|
|
61
61
|
},
|
|
62
62
|
"scripts": {
|
|
@@ -78,128 +78,155 @@
|
|
|
78
78
|
"agentConfig": {
|
|
79
79
|
"pluginType": "elizaos:plugin:1.0.0",
|
|
80
80
|
"pluginParameters": {
|
|
81
|
-
"OPENAI_API_KEY": {
|
|
82
|
-
"type": "string",
|
|
83
|
-
"description": "API key for authenticating requests to OpenAI services used by the Knowledge plugin.",
|
|
84
|
-
"required": false
|
|
85
|
-
},
|
|
86
|
-
"OPENAI_EMBEDDING_MODEL": {
|
|
87
|
-
"type": "string",
|
|
88
|
-
"description": "Specifies the OpenAI embedding model to use when generating vector embeddings.",
|
|
89
|
-
"required": false
|
|
90
|
-
},
|
|
91
81
|
"CTX_KNOWLEDGE_ENABLED": {
|
|
92
82
|
"type": "boolean",
|
|
93
|
-
"description": "Enables contextual knowledge functionality
|
|
94
|
-
"required": false
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
"type": "string",
|
|
98
|
-
"description": "LLM provider for text generation (e.g., openai, anthropic, openrouter, google).",
|
|
99
|
-
"required": false
|
|
100
|
-
},
|
|
101
|
-
"TEXT_MODEL": {
|
|
102
|
-
"type": "string",
|
|
103
|
-
"description": "Name of the text generation model to use with the selected provider.",
|
|
104
|
-
"required": false
|
|
105
|
-
},
|
|
106
|
-
"OPENROUTER_API_KEY": {
|
|
107
|
-
"type": "string",
|
|
108
|
-
"description": "API key for authenticating with the OpenRouter service when TEXT_PROVIDER=openrouter.",
|
|
109
|
-
"required": false
|
|
83
|
+
"description": "Enables or disables contextual knowledge functionality; when set to 'true' additional text-generation settings are validated.",
|
|
84
|
+
"required": false,
|
|
85
|
+
"default": "false",
|
|
86
|
+
"sensitive": false
|
|
110
87
|
},
|
|
111
|
-
"
|
|
88
|
+
"EMBEDDING_PROVIDER": {
|
|
112
89
|
"type": "string",
|
|
113
|
-
"description": "
|
|
114
|
-
"required": false
|
|
90
|
+
"description": "Specifies which provider to use for generating embeddings (e.g., openai, google). If omitted the code assumes 'openai' through plugin-openai.",
|
|
91
|
+
"required": false,
|
|
92
|
+
"default": "openai",
|
|
93
|
+
"sensitive": false
|
|
115
94
|
},
|
|
116
|
-
"
|
|
95
|
+
"OPENAI_API_KEY": {
|
|
117
96
|
"type": "string",
|
|
118
|
-
"description": "API key
|
|
119
|
-
"required": false
|
|
97
|
+
"description": "API key used to authenticate requests to OpenAI services for embeddings or text generation.",
|
|
98
|
+
"required": false,
|
|
99
|
+
"sensitive": true
|
|
120
100
|
},
|
|
121
|
-
"
|
|
101
|
+
"OPENAI_EMBEDDING_MODEL": {
|
|
122
102
|
"type": "string",
|
|
123
|
-
"description": "
|
|
124
|
-
"required": false
|
|
103
|
+
"description": "Name of the OpenAI embedding model; also used as a fallback for TEXT_EMBEDDING_MODEL when EMBEDDING_PROVIDER defaults to openai.",
|
|
104
|
+
"required": false,
|
|
105
|
+
"sensitive": false
|
|
125
106
|
},
|
|
126
107
|
"TEXT_EMBEDDING_MODEL": {
|
|
127
108
|
"type": "string",
|
|
128
|
-
"description": "Embedding model name to use with the
|
|
129
|
-
"required": false
|
|
109
|
+
"description": "Embedding model name to use with the configured EMBEDDING_PROVIDER.",
|
|
110
|
+
"required": false,
|
|
111
|
+
"default": "text-embedding-3-small",
|
|
112
|
+
"sensitive": false
|
|
130
113
|
},
|
|
131
114
|
"EMBEDDING_DIMENSION": {
|
|
132
115
|
"type": "number",
|
|
133
|
-
"description": "Custom dimension size
|
|
134
|
-
"required": false
|
|
116
|
+
"description": "Custom embedding dimension size.",
|
|
117
|
+
"required": false,
|
|
118
|
+
"default": 1536,
|
|
119
|
+
"sensitive": false
|
|
135
120
|
},
|
|
136
|
-
"
|
|
121
|
+
"OPENAI_EMBEDDING_DIMENSIONS": {
|
|
137
122
|
"type": "number",
|
|
138
|
-
"description": "
|
|
123
|
+
"description": "Alternative variable to supply embedding dimension when using OpenAI.",
|
|
139
124
|
"required": false,
|
|
140
|
-
"default":
|
|
125
|
+
"default": 1536,
|
|
126
|
+
"sensitive": false
|
|
141
127
|
},
|
|
142
|
-
"
|
|
143
|
-
"type": "
|
|
144
|
-
"description": "
|
|
128
|
+
"TEXT_PROVIDER": {
|
|
129
|
+
"type": "string",
|
|
130
|
+
"description": "Provider to use for text generation when contextual knowledge is enabled (e.g., openai, anthropic, openrouter, google).",
|
|
145
131
|
"required": false,
|
|
146
|
-
"
|
|
132
|
+
"sensitive": false
|
|
147
133
|
},
|
|
148
|
-
"
|
|
149
|
-
"type": "
|
|
150
|
-
"description": "
|
|
134
|
+
"ANTHROPIC_API_KEY": {
|
|
135
|
+
"type": "string",
|
|
136
|
+
"description": "API key for Anthropic text generation models.",
|
|
151
137
|
"required": false,
|
|
152
|
-
"
|
|
138
|
+
"sensitive": true
|
|
139
|
+
},
|
|
140
|
+
"OPENROUTER_API_KEY": {
|
|
141
|
+
"type": "string",
|
|
142
|
+
"description": "API key for OpenRouter when using it as a text provider.",
|
|
143
|
+
"required": false,
|
|
144
|
+
"sensitive": true
|
|
145
|
+
},
|
|
146
|
+
"GOOGLE_API_KEY": {
|
|
147
|
+
"type": "string",
|
|
148
|
+
"description": "API key for Google AI services used for embeddings or text generation.",
|
|
149
|
+
"required": false,
|
|
150
|
+
"sensitive": true
|
|
153
151
|
},
|
|
154
152
|
"OPENAI_BASE_URL": {
|
|
155
153
|
"type": "string",
|
|
156
154
|
"description": "Custom base URL for routing OpenAI API requests (useful for proxies).",
|
|
157
|
-
"required": false
|
|
155
|
+
"required": false,
|
|
156
|
+
"sensitive": false
|
|
158
157
|
},
|
|
159
158
|
"ANTHROPIC_BASE_URL": {
|
|
160
159
|
"type": "string",
|
|
161
160
|
"description": "Custom base URL for Anthropic API requests.",
|
|
162
|
-
"required": false
|
|
161
|
+
"required": false,
|
|
162
|
+
"sensitive": false
|
|
163
163
|
},
|
|
164
164
|
"OPENROUTER_BASE_URL": {
|
|
165
165
|
"type": "string",
|
|
166
166
|
"description": "Custom base URL for OpenRouter API requests.",
|
|
167
|
-
"required": false
|
|
167
|
+
"required": false,
|
|
168
|
+
"sensitive": false
|
|
168
169
|
},
|
|
169
170
|
"GOOGLE_BASE_URL": {
|
|
170
171
|
"type": "string",
|
|
171
172
|
"description": "Custom base URL for Google AI API requests.",
|
|
172
|
-
"required": false
|
|
173
|
+
"required": false,
|
|
174
|
+
"sensitive": false
|
|
173
175
|
},
|
|
174
|
-
"
|
|
176
|
+
"TEXT_MODEL": {
|
|
175
177
|
"type": "string",
|
|
176
|
-
"description": "
|
|
178
|
+
"description": "The specific text generation model to use with the selected TEXT_PROVIDER.",
|
|
177
179
|
"required": false,
|
|
178
|
-
"
|
|
180
|
+
"sensitive": false
|
|
179
181
|
},
|
|
180
182
|
"MAX_INPUT_TOKENS": {
|
|
181
183
|
"type": "number",
|
|
182
|
-
"description": "Maximum number of input tokens
|
|
184
|
+
"description": "Maximum number of input tokens permitted per request.",
|
|
183
185
|
"required": false,
|
|
184
|
-
"default": 4000
|
|
186
|
+
"default": 4000,
|
|
187
|
+
"sensitive": false
|
|
185
188
|
},
|
|
186
189
|
"MAX_OUTPUT_TOKENS": {
|
|
187
190
|
"type": "number",
|
|
188
|
-
"description": "Maximum number of output tokens that
|
|
191
|
+
"description": "Maximum number of output tokens that can be generated.",
|
|
189
192
|
"required": false,
|
|
190
|
-
"default": 4096
|
|
193
|
+
"default": 4096,
|
|
194
|
+
"sensitive": false
|
|
191
195
|
},
|
|
192
|
-
"
|
|
196
|
+
"MAX_CONCURRENT_REQUESTS": {
|
|
197
|
+
"type": "number",
|
|
198
|
+
"description": "Upper bound on concurrent API requests for rate limiting.",
|
|
199
|
+
"required": false,
|
|
200
|
+
"default": 30,
|
|
201
|
+
"sensitive": false
|
|
202
|
+
},
|
|
203
|
+
"REQUESTS_PER_MINUTE": {
|
|
204
|
+
"type": "number",
|
|
205
|
+
"description": "Maximum number of API requests allowed per minute.",
|
|
206
|
+
"required": false,
|
|
207
|
+
"default": 60,
|
|
208
|
+
"sensitive": false
|
|
209
|
+
},
|
|
210
|
+
"TOKENS_PER_MINUTE": {
|
|
193
211
|
"type": "number",
|
|
194
|
-
"description": "
|
|
212
|
+
"description": "Maximum number of tokens that can be processed per minute.",
|
|
213
|
+
"required": false,
|
|
214
|
+
"default": 150000,
|
|
215
|
+
"sensitive": false
|
|
216
|
+
},
|
|
217
|
+
"KNOWLEDGE_PATH": {
|
|
218
|
+
"type": "string",
|
|
219
|
+
"description": "Filesystem path where the knowledge loader searches for documents. Overrides the default ./docs directory.",
|
|
195
220
|
"required": false,
|
|
196
|
-
"default":
|
|
221
|
+
"default": "./docs",
|
|
222
|
+
"sensitive": false
|
|
197
223
|
},
|
|
198
224
|
"LOAD_DOCS_ON_STARTUP": {
|
|
199
225
|
"type": "boolean",
|
|
200
|
-
"description": "
|
|
226
|
+
"description": "Controls whether the plugin should automatically load documents from the docs folder when the agent starts. Any value other than the string 'false' enables loading.",
|
|
201
227
|
"required": false,
|
|
202
|
-
"default": true
|
|
228
|
+
"default": true,
|
|
229
|
+
"sensitive": false
|
|
203
230
|
}
|
|
204
231
|
}
|
|
205
232
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 0 0% 97.65%;--foreground: 0 0% 12.55%;--muted: 0 0% 93.73%;--muted-foreground: 0 0% 39.22%;--popover: 0 0% 98.82%;--popover-foreground: 0 0% 12.55%;--card: 0 0% 98.82%;--card-foreground: 0 0% 12.55%;--border: 0 0% 84.71%;--input: 0 0% 94.12%;--primary: 22.93 92.59% 52.35%;--primary-foreground: 44 0% 100%;--secondary: 34.05 100% 85.49%;--secondary-foreground: 16.27 50.43% 22.94%;--accent: 0 0% 90.98%;--accent-foreground: 0 0% 12.55%;--destructive: 10.16 77.87% 53.92%;--destructive-foreground: 0 0% 100%;--ring: 24.8 79.79% 63.14%;--chart-1: 22.93 92.59% 52.35%;--chart-2: 34.05 100% 85.49%;--chart-3: 0 0% 90.98%;--chart-4: 34.05 100% 88.49%;--chart-5: 22.93 95.59% 52.35%;--radius: .5rem}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}.container{width:100%;margin-right:auto;margin-left:auto}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.left-3{left:.75rem}.left-4{left:1rem}.right-4{right:1rem}.top-16{top:4rem}.top-3{top:.75rem}.top-4{top:1rem}.z-50{z-index:50}.col-span-2{grid-column:span 2 / span 2}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.size-6{width:1.5rem;height:1.5rem}.h-1\/3{height:33.333333%}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-2\/3{height:66.666667%}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-9{height:2.25rem}.h-full{height:100%}.max-h-40{max-height:10rem}.max-h-\[95vh\]{max-height:95vh}.max-h-full{max-height:100%}.w-10{width:2.5rem}.w-12{width:3rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-6{width:1.5rem}.w-full{width:100%}.min-w-\[60px\]{min-width:60px}.min-w-full{min-width:100%}.max-w-\[95vw\]{max-width:95vw}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-border{border-color:hsl(var(--border))}.border-gray-500\/60{border-color:#6b728099}.border-input{border-color:hsl(var(--input))}.border-orange-600\/60{border-color:#ea580c99}.bg-accent{background-color:hsl(var(--accent))}.bg-accent\/20{background-color:hsl(var(--accent) / .2)}.bg-background{background-color:hsl(var(--background))}.bg-background\/80{background-color:hsl(var(--background) / .8)}.bg-card{background-color:hsl(var(--card))}.bg-card\/50{background-color:hsl(var(--card) / .5)}.bg-card\/90{background-color:hsl(var(--card) / .9)}.bg-destructive{background-color:hsl(var(--destructive))}.bg-destructive\/10{background-color:hsl(var(--destructive) / .1)}.bg-gray-400\/90{background-color:#9ca3afe6}.bg-muted{background-color:hsl(var(--muted))}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-orange-500\/90{background-color:#f97316e6}.bg-primary{background-color:hsl(var(--primary))}.bg-secondary{background-color:hsl(var(--secondary))}.p-0{padding:0}.p-1{padding:.25rem}.p-12{padding:3rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pb-2{padding-bottom:.5rem}.pb-4{padding-bottom:1rem}.pl-10{padding-left:2.5rem}.pt-0{padding-top:0}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[10px\]{font-size:10px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-foreground{color:hsl(var(--foreground))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary\/80{color:hsl(var(--primary) / .8)}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.opacity-0{opacity:0}.opacity-20{opacity:.2}.opacity-70{opacity:.7}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300{transition-duration:.3s}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.duration-300{animation-duration:.3s}*{--background: 0 0% 6.67%;--foreground: 0 0% 93.33%;--muted: 0 0% 13.33%;--muted-foreground: 0 0% 70.59%;--popover: 0 0% 9.8%;--popover-foreground: 0 0% 93.33%;--card: 0 0% 9.8%;--card-foreground: 0 0% 93.33%;--border: 44 14% 11%;--input: 0 0% 28.24%;--primary: 22.93 92.59% 52.35%;--primary-foreground: 29.51 0% 100%;--secondary: 28.5 64.52% 12.16%;--secondary-foreground: 29.51 100% 88.04%;--accent: 0 0% 16.47%;--accent-foreground: 0 0% 93.33%;--destructive: 10.16 77.87% 53.92%;--destructive-foreground: 0 0% 100%;--ring: 23.11 59.8% 40%;--chart-1: 22.93 92.59% 52.35%;--chart-2: 28.5 64.52% 12.16%;--chart-3: 0 0% 16.47%;--chart-4: 28.5 64.52% 15.16%;--chart-5: 22.93 95.59% 52.35%;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/10:hover{background-color:hsl(var(--accent) / .1)}.hover\:bg-destructive\/10:hover{background-color:hsl(var(--destructive) / .1)}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-destructive:hover{color:hsl(var(--destructive))}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:opacity-100{opacity:1}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}
|