livedesk 0.1.447 → 0.1.449
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/bin/livedesk.js +150 -17
- package/bootstrap/legacy-client-update.js +1 -7
- package/client/README.md +3 -3
- package/client/bin/livedesk-client-node.js +70 -190
- package/client/bin/livedesk-client.js +71 -31
- package/client/package.json +5 -6
- package/hub/package.json +1 -1
- package/hub/src/agents/agent-manager.js +123 -175
- package/hub/src/agents/agent-settings.js +9 -100
- package/hub/src/agents/agent-tool-registry.js +1 -1
- package/hub/src/agents/codex-agent-runtime.js +14 -16
- package/hub/src/remote-hub.js +92 -124
- package/hub/src/server.js +58 -46
- package/package.json +8 -9
- package/web/dist/assets/icons-CCS0Avce.js +1 -0
- package/web/dist/assets/index-CDA-kp_V.js +25 -0
- package/web/dist/assets/{react-C7a9r614.js → react-Cg5haagh.js} +1 -1
- package/web/dist/index.html +3 -3
- package/hub/src/agents/opencode-go-provider.js +0 -260
- package/hub/src/agents/secret-store.js +0 -165
- package/web/dist/assets/icons-BIyRF-ou.js +0 -1
- package/web/dist/assets/index-5opXQY8X.js +0 -25
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as O}from"./icons-
|
|
1
|
+
import{r as O}from"./icons-CCS0Avce.js";var y={exports:{}},n={};var o;function S(){if(o)return n;o=1;var u=O();function g(r){var e="https://react.dev/errors/"+r;if(1<arguments.length){e+="?args[]="+encodeURIComponent(arguments[1]);for(var t=2;t<arguments.length;t++)e+="&args[]="+encodeURIComponent(arguments[t])}return"Minified React error #"+r+"; visit "+e+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function c(){}var i={d:{f:c,r:function(){throw Error(g(522))},D:c,C:c,L:c,m:c,X:c,S:c,M:c},p:0,findDOMNode:null},m=Symbol.for("react.portal");function v(r,e,t){var a=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:m,key:a==null?null:""+a,children:r,containerInfo:e,implementation:t}}var f=u.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function d(r,e){if(r==="font")return"";if(typeof e=="string")return e==="use-credentials"?e:""}return n.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=i,n.createPortal=function(r,e){var t=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)throw Error(g(299));return v(r,e,null,t)},n.flushSync=function(r){var e=f.T,t=i.p;try{if(f.T=null,i.p=2,r)return r()}finally{f.T=e,i.p=t,i.d.f()}},n.preconnect=function(r,e){typeof r=="string"&&(e?(e=e.crossOrigin,e=typeof e=="string"?e==="use-credentials"?e:"":void 0):e=null,i.d.C(r,e))},n.prefetchDNS=function(r){typeof r=="string"&&i.d.D(r)},n.preinit=function(r,e){if(typeof r=="string"&&e&&typeof e.as=="string"){var t=e.as,a=d(t,e.crossOrigin),s=typeof e.integrity=="string"?e.integrity:void 0,l=typeof e.fetchPriority=="string"?e.fetchPriority:void 0;t==="style"?i.d.S(r,typeof e.precedence=="string"?e.precedence:void 0,{crossOrigin:a,integrity:s,fetchPriority:l}):t==="script"&&i.d.X(r,{crossOrigin:a,integrity:s,fetchPriority:l,nonce:typeof e.nonce=="string"?e.nonce:void 0})}},n.preinitModule=function(r,e){if(typeof r=="string")if(typeof e=="object"&&e!==null){if(e.as==null||e.as==="script"){var t=d(e.as,e.crossOrigin);i.d.M(r,{crossOrigin:t,integrity:typeof e.integrity=="string"?e.integrity:void 0,nonce:typeof e.nonce=="string"?e.nonce:void 0})}}else e==null&&i.d.M(r)},n.preload=function(r,e){if(typeof r=="string"&&typeof e=="object"&&e!==null&&typeof e.as=="string"){var t=e.as,a=d(t,e.crossOrigin);i.d.L(r,t,{crossOrigin:a,integrity:typeof e.integrity=="string"?e.integrity:void 0,nonce:typeof e.nonce=="string"?e.nonce:void 0,type:typeof e.type=="string"?e.type:void 0,fetchPriority:typeof e.fetchPriority=="string"?e.fetchPriority:void 0,referrerPolicy:typeof e.referrerPolicy=="string"?e.referrerPolicy:void 0,imageSrcSet:typeof e.imageSrcSet=="string"?e.imageSrcSet:void 0,imageSizes:typeof e.imageSizes=="string"?e.imageSizes:void 0,media:typeof e.media=="string"?e.media:void 0})}},n.preloadModule=function(r,e){if(typeof r=="string")if(e){var t=d(e.as,e.crossOrigin);i.d.m(r,{as:typeof e.as=="string"&&e.as!=="script"?e.as:void 0,crossOrigin:t,integrity:typeof e.integrity=="string"?e.integrity:void 0})}else i.d.m(r)},n.requestFormReset=function(r){i.d.r(r)},n.unstable_batchedUpdates=function(r,e){return r(e)},n.useFormState=function(r,e,t){return f.H.useFormState(r,e,t)},n.useFormStatus=function(){return f.H.useHostTransitionStatus()},n.version="19.2.7",n}var _;function T(){if(_)return y.exports;_=1;function u(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(u)}catch(g){console.error(g)}}return u(),y.exports=S(),y.exports}export{T as r};
|
package/web/dist/index.html
CHANGED
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
<link rel="icon" href="/favicon.ico" sizes="any" />
|
|
9
9
|
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
|
|
10
10
|
<title>LiveDesk</title>
|
|
11
|
-
<script type="module" crossorigin src="/assets/index-
|
|
12
|
-
<link rel="modulepreload" crossorigin href="/assets/icons-
|
|
13
|
-
<link rel="modulepreload" crossorigin href="/assets/react-
|
|
11
|
+
<script type="module" crossorigin src="/assets/index-CDA-kp_V.js"></script>
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/icons-CCS0Avce.js">
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/react-Cg5haagh.js">
|
|
14
14
|
<link rel="modulepreload" crossorigin href="/assets/supabase-C7qjtLN3.js">
|
|
15
15
|
<link rel="stylesheet" crossorigin href="/assets/index-BPpXtm8K.css">
|
|
16
16
|
</head>
|
|
@@ -1,260 +0,0 @@
|
|
|
1
|
-
import { AgentProviderError, isRetryableProviderError } from './provider-errors.js';
|
|
2
|
-
import { DEFAULT_AGENT_BASE_URL } from './agent-settings.js';
|
|
3
|
-
|
|
4
|
-
export const OPENCODE_GO_DEFAULT_MODEL_ID = 'deepseek-v4-flash';
|
|
5
|
-
|
|
6
|
-
const AGENT_OPERATIONS = new Set([
|
|
7
|
-
'system.health',
|
|
8
|
-
'gpu.status',
|
|
9
|
-
'disk.status',
|
|
10
|
-
'process.list',
|
|
11
|
-
'service.status',
|
|
12
|
-
'diagnostics.collect'
|
|
13
|
-
]);
|
|
14
|
-
|
|
15
|
-
function normalizeBaseUrl(value) {
|
|
16
|
-
try {
|
|
17
|
-
const url = new URL(String(value || DEFAULT_AGENT_BASE_URL));
|
|
18
|
-
if (!['http:', 'https:'].includes(url.protocol)) throw new Error('protocol');
|
|
19
|
-
return url.toString().replace(/\/+$/, '');
|
|
20
|
-
} catch {
|
|
21
|
-
throw new AgentProviderError('agent-invalid-base-url', 'The Agent provider URL is invalid.', { status: 400 });
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function normalizeCapabilities(source = {}) {
|
|
26
|
-
const capabilities = source.capabilities && typeof source.capabilities === 'object' ? source.capabilities : source;
|
|
27
|
-
return {
|
|
28
|
-
supportsReasoningLevel: capabilities.supportsReasoningLevel === true || capabilities.reasoning === true,
|
|
29
|
-
reasoningParameter: typeof capabilities.reasoningParameter === 'string' ? capabilities.reasoningParameter : '',
|
|
30
|
-
supportsTemperature: capabilities.supportsTemperature !== false,
|
|
31
|
-
supportsTopP: capabilities.supportsTopP !== false,
|
|
32
|
-
supportsStreaming: capabilities.supportsStreaming !== false,
|
|
33
|
-
supportsTools: capabilities.supportsTools === true,
|
|
34
|
-
supportsJsonSchema: capabilities.supportsJsonSchema === true
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
function normalizeModel(model) {
|
|
39
|
-
const id = String(model?.id || model?.model || '').trim();
|
|
40
|
-
if (!id) return null;
|
|
41
|
-
const protocolValue = String(model?.protocol || model?.api?.protocol || model?.type || '').trim().toLowerCase();
|
|
42
|
-
const protocol = /anthropic|messages/.test(protocolValue) ? 'anthropic-messages' : 'openai-chat-completions';
|
|
43
|
-
return {
|
|
44
|
-
id,
|
|
45
|
-
name: String(model?.name || model?.display_name || id).trim().slice(0, 200),
|
|
46
|
-
protocol,
|
|
47
|
-
available: model?.available !== false && protocol === 'openai-chat-completions',
|
|
48
|
-
capabilities: normalizeCapabilities(model)
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export function normalizeModelList(payload) {
|
|
53
|
-
const source = Array.isArray(payload) ? payload : Array.isArray(payload?.data) ? payload.data : [];
|
|
54
|
-
return source.map(normalizeModel).filter(Boolean);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
function delay(ms) {
|
|
58
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
function contentFromCompletion(payload) {
|
|
62
|
-
const content = payload?.choices?.[0]?.message?.content ?? payload?.choices?.[0]?.text ?? '';
|
|
63
|
-
if (Array.isArray(content)) return content.map(item => typeof item === 'string' ? item : String(item?.text || '')).join('');
|
|
64
|
-
return String(content || '');
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
function parsePlan(content) {
|
|
68
|
-
const trimmed = String(content || '').trim().replace(/^```(?:json)?\s*/i, '').replace(/\s*```$/i, '').trim();
|
|
69
|
-
let candidate = trimmed;
|
|
70
|
-
try {
|
|
71
|
-
return JSON.parse(candidate);
|
|
72
|
-
} catch {
|
|
73
|
-
const start = trimmed.indexOf('{');
|
|
74
|
-
const end = trimmed.lastIndexOf('}');
|
|
75
|
-
if (start < 0 || end <= start) throw new AgentProviderError('agent-provider-invalid-response', 'The Agent provider returned an invalid plan.', { status: 502 });
|
|
76
|
-
candidate = trimmed.slice(start, end + 1);
|
|
77
|
-
try {
|
|
78
|
-
return JSON.parse(candidate);
|
|
79
|
-
} catch {
|
|
80
|
-
throw new AgentProviderError('agent-provider-invalid-response', 'The Agent provider returned an invalid plan.', { status: 502 });
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
function validatePlan(value) {
|
|
86
|
-
const operation = String(value?.operation || '').trim();
|
|
87
|
-
if (!AGENT_OPERATIONS.has(operation)) {
|
|
88
|
-
throw new AgentProviderError('agent-provider-invalid-plan', 'The Agent provider returned an unsupported operation.', { status: 502 });
|
|
89
|
-
}
|
|
90
|
-
const targetQuery = operation === 'process.list' && typeof value?.targetQuery === 'string'
|
|
91
|
-
? value.targetQuery.replace(/[\0\r\n]/g, ' ').trim().slice(0, 120)
|
|
92
|
-
: '';
|
|
93
|
-
return {
|
|
94
|
-
operation,
|
|
95
|
-
targetQuery: targetQuery || undefined,
|
|
96
|
-
title: typeof value?.title === 'string' ? value.title.replace(/[\0\r\n]/g, ' ').trim().slice(0, 120) || undefined : undefined
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
export function createOpenCodeGoProvider() {
|
|
101
|
-
async function requestJson({ settings, apiKey, endpoint, method = 'GET', body, timeoutMs }) {
|
|
102
|
-
if (!apiKey) throw new AgentProviderError('agent-api-key-missing', 'OpenCode Go API key is not configured.', { status: 401 });
|
|
103
|
-
const url = `${normalizeBaseUrl(settings.baseUrl)}/${String(endpoint).replace(/^\/+/, '')}`;
|
|
104
|
-
const retryCount = Math.max(0, Math.min(4, Number(settings.retryCount) || 0));
|
|
105
|
-
const retryDelayMs = Math.max(100, Math.min(10000, Number(settings.retryDelayMs) || 1000));
|
|
106
|
-
for (let attempt = 0; attempt <= retryCount; attempt += 1) {
|
|
107
|
-
const controller = new AbortController();
|
|
108
|
-
const timer = setTimeout(() => controller.abort(), Math.max(1000, Number(timeoutMs) || 60000));
|
|
109
|
-
try {
|
|
110
|
-
const response = await fetch(url, {
|
|
111
|
-
method,
|
|
112
|
-
headers: { Authorization: `Bearer ${apiKey}`, 'Content-Type': 'application/json' },
|
|
113
|
-
body: body === undefined ? undefined : JSON.stringify(body),
|
|
114
|
-
signal: controller.signal
|
|
115
|
-
});
|
|
116
|
-
clearTimeout(timer);
|
|
117
|
-
if (response.ok) return await response.json();
|
|
118
|
-
const status = response.status;
|
|
119
|
-
const retryable = status === 408 || status === 429 || status >= 500;
|
|
120
|
-
if (retryable && attempt < retryCount) {
|
|
121
|
-
await delay(retryDelayMs * (attempt + 1));
|
|
122
|
-
continue;
|
|
123
|
-
}
|
|
124
|
-
if (status === 401 || status === 403) throw new AgentProviderError('agent-api-key-invalid', 'OpenCode Go rejected the API key.', { status: 401 });
|
|
125
|
-
if (status === 429) throw new AgentProviderError('agent-provider-rate-limited', 'OpenCode Go is rate limiting requests.', { status: 429, retryable: true });
|
|
126
|
-
throw new AgentProviderError(status >= 500 ? 'agent-provider-upstream' : 'agent-provider-request-invalid', 'OpenCode Go rejected the request.', { status: status >= 500 ? 502 : 400, retryable });
|
|
127
|
-
} catch (error) {
|
|
128
|
-
clearTimeout(timer);
|
|
129
|
-
if (error instanceof AgentProviderError) {
|
|
130
|
-
if (isRetryableProviderError(error) && attempt < retryCount) {
|
|
131
|
-
await delay(retryDelayMs * (attempt + 1));
|
|
132
|
-
continue;
|
|
133
|
-
}
|
|
134
|
-
throw error;
|
|
135
|
-
}
|
|
136
|
-
const code = error?.name === 'AbortError' ? 'agent-provider-timeout' : 'agent-provider-network';
|
|
137
|
-
const message = code === 'agent-provider-timeout' ? 'OpenCode Go request timed out.' : 'OpenCode Go could not be reached.';
|
|
138
|
-
const providerError = new AgentProviderError(code, message, { status: code === 'agent-provider-timeout' ? 504 : 502, retryable: true });
|
|
139
|
-
if (attempt < retryCount) {
|
|
140
|
-
await delay(retryDelayMs * (attempt + 1));
|
|
141
|
-
continue;
|
|
142
|
-
}
|
|
143
|
-
throw providerError;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
throw new AgentProviderError('agent-provider-network', 'OpenCode Go could not be reached.', { status: 502, retryable: true });
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
async function getModels(settings, apiKey) {
|
|
150
|
-
return normalizeModelList(await requestJson({ settings, apiKey, endpoint: 'models', timeoutMs: settings.summaryTimeoutMs }));
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
async function selectedModel(settings, apiKey, modelId) {
|
|
154
|
-
const models = await getModels(settings, apiKey);
|
|
155
|
-
const selected = models.find(model => model.id === modelId);
|
|
156
|
-
if (models.length > 0 && (!selected || !selected.available)) {
|
|
157
|
-
throw new AgentProviderError('agent-model-unavailable', 'The selected model is not available for LiveDesk.', { status: 409 });
|
|
158
|
-
}
|
|
159
|
-
return { models, model: selected || { id: modelId, name: modelId, available: true, protocol: 'openai-chat-completions', capabilities: normalizeCapabilities() } };
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
function completionBody({ model, messages, temperature, topP, maxTokens, reasoningLevel }) {
|
|
163
|
-
const body = { model: model.id, messages, max_tokens: maxTokens };
|
|
164
|
-
if (model.capabilities.supportsTemperature) body.temperature = temperature;
|
|
165
|
-
if (model.capabilities.supportsTopP) body.top_p = topP;
|
|
166
|
-
if (reasoningLevel !== 'auto' && model.capabilities.supportsReasoningLevel && model.capabilities.reasoningParameter) {
|
|
167
|
-
body[model.capabilities.reasoningParameter] = reasoningLevel;
|
|
168
|
-
}
|
|
169
|
-
return body;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
async function testConnection(settings, apiKey) {
|
|
173
|
-
const startedAt = Date.now();
|
|
174
|
-
const modelId = settings.defaultModelId || OPENCODE_GO_DEFAULT_MODEL_ID;
|
|
175
|
-
const { model } = await selectedModel(settings, apiKey, modelId);
|
|
176
|
-
const payload = await requestJson({
|
|
177
|
-
settings,
|
|
178
|
-
apiKey,
|
|
179
|
-
endpoint: 'chat/completions',
|
|
180
|
-
method: 'POST',
|
|
181
|
-
timeoutMs: settings.planTimeoutMs,
|
|
182
|
-
body: completionBody({
|
|
183
|
-
model,
|
|
184
|
-
messages: [
|
|
185
|
-
{ role: 'system', content: 'Return only the JSON object {"ok":true}. Do not add markdown.' },
|
|
186
|
-
{ role: 'user', content: 'Connection test.' }
|
|
187
|
-
],
|
|
188
|
-
temperature: 0,
|
|
189
|
-
topP: 1,
|
|
190
|
-
maxTokens: 32,
|
|
191
|
-
reasoningLevel: 'auto'
|
|
192
|
-
})
|
|
193
|
-
});
|
|
194
|
-
if (!contentFromCompletion(payload)) throw new AgentProviderError('agent-provider-invalid-response', 'OpenCode Go returned an empty response.', { status: 502 });
|
|
195
|
-
return { ok: true, modelId: model.id, modelName: model.name, latencyMs: Date.now() - startedAt };
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
async function createPlan({ instruction }, settings, apiKey) {
|
|
199
|
-
const normalizedInstruction = String(instruction || '').replace(/[\0]/g, ' ').trim().slice(0, 2000);
|
|
200
|
-
if (!normalizedInstruction) throw new AgentProviderError('agent-invalid-instruction', 'Instruction is required.', { status: 400 });
|
|
201
|
-
const modelId = settings.planModelId || settings.defaultModelId || OPENCODE_GO_DEFAULT_MODEL_ID;
|
|
202
|
-
const { model } = await selectedModel(settings, apiKey, modelId);
|
|
203
|
-
const payload = await requestJson({
|
|
204
|
-
settings,
|
|
205
|
-
apiKey,
|
|
206
|
-
endpoint: 'chat/completions',
|
|
207
|
-
method: 'POST',
|
|
208
|
-
timeoutMs: settings.planTimeoutMs,
|
|
209
|
-
body: completionBody({
|
|
210
|
-
model,
|
|
211
|
-
messages: [
|
|
212
|
-
{
|
|
213
|
-
role: 'system',
|
|
214
|
-
content: 'You are the LiveDesk read-only task planner. Return JSON only with exactly these keys: operation, targetQuery, title. Allowed operation values are system.health, gpu.status, disk.status, process.list, service.status, diagnostics.collect. Never suggest shell commands, PowerShell, Bash, file changes, installs, deletion, reboot, credentials, or arbitrary tools. Use targetQuery only for process.list; otherwise use null. If the request is outside the allowlist, return {"operation":null,"targetQuery":null,"title":"Unsupported request"}.'
|
|
215
|
-
},
|
|
216
|
-
{ role: 'user', content: normalizedInstruction }
|
|
217
|
-
],
|
|
218
|
-
temperature: settings.planTemperature,
|
|
219
|
-
topP: settings.topP,
|
|
220
|
-
maxTokens: settings.planMaxOutputTokens,
|
|
221
|
-
reasoningLevel: settings.reasoningLevel
|
|
222
|
-
})
|
|
223
|
-
});
|
|
224
|
-
return validatePlan(parsePlan(contentFromCompletion(payload)));
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
async function createSummary({ instruction, operation, summary }, settings, apiKey) {
|
|
228
|
-
const modelId = settings.summaryModelId || settings.defaultModelId || OPENCODE_GO_DEFAULT_MODEL_ID;
|
|
229
|
-
const { model } = await selectedModel(settings, apiKey, modelId);
|
|
230
|
-
const payload = await requestJson({
|
|
231
|
-
settings,
|
|
232
|
-
apiKey,
|
|
233
|
-
endpoint: 'chat/completions',
|
|
234
|
-
method: 'POST',
|
|
235
|
-
timeoutMs: settings.summaryTimeoutMs,
|
|
236
|
-
body: completionBody({
|
|
237
|
-
model,
|
|
238
|
-
messages: [
|
|
239
|
-
{
|
|
240
|
-
role: 'system',
|
|
241
|
-
content: 'You summarize completed LiveDesk read-only checks. Return plain text only, in at most three short sentences. Never include or invent commands, credentials, file paths, or remediation instructions.'
|
|
242
|
-
},
|
|
243
|
-
{
|
|
244
|
-
role: 'user',
|
|
245
|
-
content: JSON.stringify({ instruction: String(instruction || '').slice(0, 500), operation, summary })
|
|
246
|
-
}
|
|
247
|
-
],
|
|
248
|
-
temperature: settings.summaryTemperature,
|
|
249
|
-
topP: settings.topP,
|
|
250
|
-
maxTokens: settings.summaryMaxOutputTokens,
|
|
251
|
-
reasoningLevel: 'auto'
|
|
252
|
-
})
|
|
253
|
-
});
|
|
254
|
-
const text = contentFromCompletion(payload).replace(/[\0]/g, ' ').trim().slice(0, 1200);
|
|
255
|
-
if (!text) throw new AgentProviderError('agent-provider-invalid-response', 'OpenCode Go returned an empty summary.', { status: 502 });
|
|
256
|
-
return { summary: text, modelId: model.id };
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
return { getModels, testConnection, createPlan, createSummary };
|
|
260
|
-
}
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import { spawn } from 'node:child_process';
|
|
2
|
-
import { access, mkdir, readFile, rename, unlink, writeFile } from 'node:fs/promises';
|
|
3
|
-
import os from 'node:os';
|
|
4
|
-
import path from 'node:path';
|
|
5
|
-
|
|
6
|
-
const DEFAULT_SERVICE = 'livedesk.agent.opencode-go';
|
|
7
|
-
const DEFAULT_ACCOUNT = (() => {
|
|
8
|
-
try {
|
|
9
|
-
return os.userInfo().username || 'livedesk-user';
|
|
10
|
-
} catch {
|
|
11
|
-
return 'livedesk-user';
|
|
12
|
-
}
|
|
13
|
-
})();
|
|
14
|
-
|
|
15
|
-
function secretStoreError(message = 'Secure API key storage is unavailable on this system.') {
|
|
16
|
-
const error = new Error(message);
|
|
17
|
-
error.code = 'agent-secret-store-unavailable';
|
|
18
|
-
error.status = 503;
|
|
19
|
-
return error;
|
|
20
|
-
}
|
|
21
|
-
function runCommand(command, args, input = '') {
|
|
22
|
-
return new Promise((resolve, reject) => {
|
|
23
|
-
const child = spawn(command, args, { windowsHide: true, stdio: ['pipe', 'pipe', 'pipe'] });
|
|
24
|
-
let stdout = '';
|
|
25
|
-
let stderr = '';
|
|
26
|
-
child.stdout.setEncoding('utf8');
|
|
27
|
-
child.stderr.setEncoding('utf8');
|
|
28
|
-
child.stdout.on('data', chunk => { stdout += chunk; });
|
|
29
|
-
child.stderr.on('data', chunk => { stderr += chunk; });
|
|
30
|
-
child.once('error', () => reject(secretStoreError()));
|
|
31
|
-
child.once('close', code => {
|
|
32
|
-
if (code === 0) {
|
|
33
|
-
resolve(stdout.trim());
|
|
34
|
-
} else {
|
|
35
|
-
reject(secretStoreError());
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
child.stdin.end(input);
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
function providerGuard(provider) {
|
|
43
|
-
if (String(provider || '').trim() !== 'opencode-go') {
|
|
44
|
-
const error = new Error('Unsupported agent provider.');
|
|
45
|
-
error.code = 'agent-unsupported-provider';
|
|
46
|
-
error.status = 400;
|
|
47
|
-
throw error;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
function windowsScript(action) {
|
|
52
|
-
const source = "$encoded = [Console]::In.ReadToEnd().Trim(); $bytes = [Convert]::FromBase64String($encoded);";
|
|
53
|
-
if (action === 'protect') {
|
|
54
|
-
return `${source} Add-Type -AssemblyName System.Security; $protected = [Security.Cryptography.ProtectedData]::Protect($bytes, $null, [Security.Cryptography.DataProtectionScope]::CurrentUser); [Convert]::ToBase64String($protected)`;
|
|
55
|
-
}
|
|
56
|
-
return `${source} Add-Type -AssemblyName System.Security; $plain = [Security.Cryptography.ProtectedData]::Unprotect($bytes, $null, [Security.Cryptography.DataProtectionScope]::CurrentUser); [Convert]::ToBase64String($plain)`;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
async function protectWindows(value) {
|
|
60
|
-
const encoded = Buffer.from(value, 'utf8').toString('base64');
|
|
61
|
-
return runCommand('powershell.exe', ['-NoProfile', '-NonInteractive', '-ExecutionPolicy', 'Bypass', '-Command', windowsScript('protect')], `${encoded}\n`);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
async function unprotectWindows(value) {
|
|
65
|
-
const encoded = await runCommand('powershell.exe', ['-NoProfile', '-NonInteractive', '-ExecutionPolicy', 'Bypass', '-Command', windowsScript('unprotect')], `${String(value).trim()}\n`);
|
|
66
|
-
try {
|
|
67
|
-
return Buffer.from(encoded, 'base64').toString('utf8');
|
|
68
|
-
} catch {
|
|
69
|
-
throw secretStoreError();
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
export function createOsSecretStore({ dataDir = path.join(os.homedir(), '.livedesk'), service = DEFAULT_SERVICE, account = DEFAULT_ACCOUNT } = {}) {
|
|
74
|
-
const dpapiPath = path.join(dataDir, 'agent-opencode-go.dpapi');
|
|
75
|
-
|
|
76
|
-
async function setApiKey(provider, value) {
|
|
77
|
-
providerGuard(provider);
|
|
78
|
-
const apiKey = String(value || '').trim();
|
|
79
|
-
if (!apiKey || apiKey.length > 1000) {
|
|
80
|
-
const error = new Error('API key is required.');
|
|
81
|
-
error.code = 'agent-api-key-invalid';
|
|
82
|
-
error.status = 400;
|
|
83
|
-
throw error;
|
|
84
|
-
}
|
|
85
|
-
if (process.platform === 'win32') {
|
|
86
|
-
const encrypted = await protectWindows(apiKey);
|
|
87
|
-
await mkdir(dataDir, { recursive: true });
|
|
88
|
-
const temporaryPath = `${dpapiPath}.${process.pid}.${Date.now()}.tmp`;
|
|
89
|
-
await writeFile(temporaryPath, `${encrypted}\n`, { encoding: 'utf8', mode: 0o600 });
|
|
90
|
-
await rename(temporaryPath, dpapiPath);
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
if (process.platform === 'darwin') {
|
|
94
|
-
await runCommand('security', ['add-generic-password', '-U', '-a', account, '-s', service, '-w', apiKey]);
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
await runCommand('secret-tool', ['store', '--label=LiveDesk Agent API key', 'service', service, 'account', account], `${apiKey}\n`);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
async function getApiKey(provider) {
|
|
101
|
-
providerGuard(provider);
|
|
102
|
-
if (process.platform === 'win32') {
|
|
103
|
-
try {
|
|
104
|
-
const encrypted = await readFile(dpapiPath, 'utf8');
|
|
105
|
-
return await unprotectWindows(encrypted);
|
|
106
|
-
} catch (error) {
|
|
107
|
-
if (error?.code === 'ENOENT') return null;
|
|
108
|
-
throw secretStoreError();
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
if (process.platform === 'darwin') {
|
|
112
|
-
try {
|
|
113
|
-
return await runCommand('security', ['find-generic-password', '-a', account, '-s', service, '-w']);
|
|
114
|
-
} catch (error) {
|
|
115
|
-
if (error?.code === 'agent-secret-store-unavailable') return null;
|
|
116
|
-
throw error;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
try {
|
|
120
|
-
return await runCommand('secret-tool', ['lookup', 'service', service, 'account', account]);
|
|
121
|
-
} catch {
|
|
122
|
-
return null;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
async function hasApiKey(provider) {
|
|
127
|
-
providerGuard(provider);
|
|
128
|
-
if (process.platform === 'win32') {
|
|
129
|
-
try {
|
|
130
|
-
await access(dpapiPath);
|
|
131
|
-
return true;
|
|
132
|
-
} catch {
|
|
133
|
-
return false;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
return Boolean(await getApiKey(provider));
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
async function deleteApiKey(provider) {
|
|
140
|
-
providerGuard(provider);
|
|
141
|
-
if (process.platform === 'win32') {
|
|
142
|
-
try {
|
|
143
|
-
await unlink(dpapiPath);
|
|
144
|
-
} catch (error) {
|
|
145
|
-
if (error?.code !== 'ENOENT') throw secretStoreError();
|
|
146
|
-
}
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
if (process.platform === 'darwin') {
|
|
150
|
-
try {
|
|
151
|
-
await runCommand('security', ['delete-generic-password', '-a', account, '-s', service]);
|
|
152
|
-
} catch {
|
|
153
|
-
return;
|
|
154
|
-
}
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
try {
|
|
158
|
-
await runCommand('secret-tool', ['clear', 'service', service, 'account', account]);
|
|
159
|
-
} catch {
|
|
160
|
-
return;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
return { setApiKey, getApiKey, hasApiKey, deleteApiKey };
|
|
165
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function t1(y){return y&&y.__esModule&&Object.prototype.hasOwnProperty.call(y,"default")?y.default:y}var R={exports:{}},a={};var Y;function o1(){if(Y)return a;Y=1;var y=Symbol.for("react.transitional.element"),d=Symbol.for("react.portal"),p=Symbol.for("react.fragment"),k=Symbol.for("react.strict_mode"),m=Symbol.for("react.profiler"),f=Symbol.for("react.consumer"),$=Symbol.for("react.context"),x=Symbol.for("react.forward_ref"),N=Symbol.for("react.suspense"),C=Symbol.for("react.memo"),g=Symbol.for("react.lazy"),K=Symbol.for("react.activity"),T=Symbol.iterator;function W(e){return e===null||typeof e!="object"?null:(e=T&&e[T]||e["@@iterator"],typeof e=="function"?e:null)}var j={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},S=Object.assign,L={};function _(e,o,c){this.props=e,this.context=o,this.refs=L,this.updater=c||j}_.prototype.isReactComponent={},_.prototype.setState=function(e,o){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,o,"setState")},_.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function V(){}V.prototype=_.prototype;function E(e,o,c){this.props=e,this.context=o,this.refs=L,this.updater=c||j}var b=E.prototype=new V;b.constructor=E,S(b,_.prototype),b.isPureReactComponent=!0;var P=Array.isArray;function A(){}var i={H:null,A:null,T:null,S:null},O=Object.prototype.hasOwnProperty;function H(e,o,c){var n=c.ref;return{$$typeof:y,type:e,key:o,ref:n!==void 0?n:null,props:c}}function G(e,o){return H(e.type,o,e.props)}function q(e){return typeof e=="object"&&e!==null&&e.$$typeof===y}function F(e){var o={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(c){return o[c]})}var U=/\/+/g;function z(e,o){return typeof e=="object"&&e!==null&&e.key!=null?F(""+e.key):o.toString(36)}function Q(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(A,A):(e.status="pending",e.then(function(o){e.status==="pending"&&(e.status="fulfilled",e.value=o)},function(o){e.status==="pending"&&(e.status="rejected",e.reason=o)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}function v(e,o,c,n,r){var s=typeof e;(s==="undefined"||s==="boolean")&&(e=null);var h=!1;if(e===null)h=!0;else switch(s){case"bigint":case"string":case"number":h=!0;break;case"object":switch(e.$$typeof){case y:case d:h=!0;break;case g:return h=e._init,v(h(e._payload),o,c,n,r)}}if(h)return r=r(e),h=n===""?"."+z(e,0):n,P(r)?(c="",h!=null&&(c=h.replace(U,"$&/")+"/"),v(r,o,c,"",function(e1){return e1})):r!=null&&(q(r)&&(r=G(r,c+(r.key==null||e&&e.key===r.key?"":(""+r.key).replace(U,"$&/")+"/")+h)),o.push(r)),1;h=0;var l=n===""?".":n+":";if(P(e))for(var u=0;u<e.length;u++)n=e[u],s=l+z(n,u),h+=v(n,o,c,s,r);else if(u=W(e),typeof u=="function")for(e=u.call(e),u=0;!(n=e.next()).done;)n=n.value,s=l+z(n,u++),h+=v(n,o,c,s,r);else if(s==="object"){if(typeof e.then=="function")return v(Q(e),o,c,n,r);throw o=String(e),Error("Objects are not valid as a React child (found: "+(o==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":o)+"). If you meant to render a collection of children, use an array instead.")}return h}function w(e,o,c){if(e==null)return e;var n=[],r=0;return v(e,n,"","",function(s){return o.call(c,s,r++)}),n}function X(e){if(e._status===-1){var o=e._result;o=o(),o.then(function(c){(e._status===0||e._status===-1)&&(e._status=1,e._result=c)},function(c){(e._status===0||e._status===-1)&&(e._status=2,e._result=c)}),e._status===-1&&(e._status=0,e._result=o)}if(e._status===1)return e._result.default;throw e._result}var I=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var o=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(o))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},J={map:w,forEach:function(e,o,c){w(e,function(){o.apply(this,arguments)},c)},count:function(e){var o=0;return w(e,function(){o++}),o},toArray:function(e){return w(e,function(o){return o})||[]},only:function(e){if(!q(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};return a.Activity=K,a.Children=J,a.Component=_,a.Fragment=p,a.Profiler=m,a.PureComponent=E,a.StrictMode=k,a.Suspense=N,a.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=i,a.__COMPILER_RUNTIME={__proto__:null,c:function(e){return i.H.useMemoCache(e)}},a.cache=function(e){return function(){return e.apply(null,arguments)}},a.cacheSignal=function(){return null},a.cloneElement=function(e,o,c){if(e==null)throw Error("The argument must be a React element, but you passed "+e+".");var n=S({},e.props),r=e.key;if(o!=null)for(s in o.key!==void 0&&(r=""+o.key),o)!O.call(o,s)||s==="key"||s==="__self"||s==="__source"||s==="ref"&&o.ref===void 0||(n[s]=o[s]);var s=arguments.length-2;if(s===1)n.children=c;else if(1<s){for(var h=Array(s),l=0;l<s;l++)h[l]=arguments[l+2];n.children=h}return H(e.type,r,n)},a.createContext=function(e){return e={$$typeof:$,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:f,_context:e},e},a.createElement=function(e,o,c){var n,r={},s=null;if(o!=null)for(n in o.key!==void 0&&(s=""+o.key),o)O.call(o,n)&&n!=="key"&&n!=="__self"&&n!=="__source"&&(r[n]=o[n]);var h=arguments.length-2;if(h===1)r.children=c;else if(1<h){for(var l=Array(h),u=0;u<h;u++)l[u]=arguments[u+2];r.children=l}if(e&&e.defaultProps)for(n in h=e.defaultProps,h)r[n]===void 0&&(r[n]=h[n]);return H(e,s,r)},a.createRef=function(){return{current:null}},a.forwardRef=function(e){return{$$typeof:x,render:e}},a.isValidElement=q,a.lazy=function(e){return{$$typeof:g,_payload:{_status:-1,_result:e},_init:X}},a.memo=function(e,o){return{$$typeof:C,type:e,compare:o===void 0?null:o}},a.startTransition=function(e){var o=i.T,c={};i.T=c;try{var n=e(),r=i.S;r!==null&&r(c,n),typeof n=="object"&&n!==null&&typeof n.then=="function"&&n.then(A,I)}catch(s){I(s)}finally{o!==null&&c.types!==null&&(o.types=c.types),i.T=o}},a.unstable_useCacheRefresh=function(){return i.H.useCacheRefresh()},a.use=function(e){return i.H.use(e)},a.useActionState=function(e,o,c){return i.H.useActionState(e,o,c)},a.useCallback=function(e,o){return i.H.useCallback(e,o)},a.useContext=function(e){return i.H.useContext(e)},a.useDebugValue=function(){},a.useDeferredValue=function(e,o){return i.H.useDeferredValue(e,o)},a.useEffect=function(e,o){return i.H.useEffect(e,o)},a.useEffectEvent=function(e){return i.H.useEffectEvent(e)},a.useId=function(){return i.H.useId()},a.useImperativeHandle=function(e,o,c){return i.H.useImperativeHandle(e,o,c)},a.useInsertionEffect=function(e,o){return i.H.useInsertionEffect(e,o)},a.useLayoutEffect=function(e,o){return i.H.useLayoutEffect(e,o)},a.useMemo=function(e,o){return i.H.useMemo(e,o)},a.useOptimistic=function(e,o){return i.H.useOptimistic(e,o)},a.useReducer=function(e,o,c){return i.H.useReducer(e,o,c)},a.useRef=function(e){return i.H.useRef(e)},a.useState=function(e){return i.H.useState(e)},a.useSyncExternalStore=function(e,o,c){return i.H.useSyncExternalStore(e,o,c)},a.useTransition=function(){return i.H.useTransition()},a.version="19.2.7",a}var D;function a1(){return D||(D=1,R.exports=o1()),R.exports}var M=a1();const Ze=t1(M);const n1=y=>y.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),c1=y=>y.replace(/^([A-Z])|[\s-_]+(\w)/g,(d,p,k)=>k?k.toUpperCase():p.toLowerCase()),B=y=>{const d=c1(y);return d.charAt(0).toUpperCase()+d.slice(1)},Z=(...y)=>y.filter((d,p,k)=>!!d&&d.trim()!==""&&k.indexOf(d)===p).join(" ").trim(),r1=y=>{for(const d in y)if(d.startsWith("aria-")||d==="role"||d==="title")return!0};var s1={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const y1=M.forwardRef(({color:y="currentColor",size:d=24,strokeWidth:p=2,absoluteStrokeWidth:k,className:m="",children:f,iconNode:$,...x},N)=>M.createElement("svg",{ref:N,...s1,width:d,height:d,stroke:y,strokeWidth:k?Number(p)*24/Number(d):p,className:Z("lucide",m),...!f&&!r1(x)&&{"aria-hidden":"true"},...x},[...$.map(([C,g])=>M.createElement(C,g)),...Array.isArray(f)?f:[f]]));const t=(y,d)=>{const p=M.forwardRef(({className:k,...m},f)=>M.createElement(y1,{ref:f,iconNode:d,className:Z(`lucide-${n1(B(y))}`,`lucide-${y}`,k),...m}));return p.displayName=B(y),p};const i1=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],Ke=t("activity",i1);const h1=[["path",{d:"M12 17V3",key:"1cwfxf"}],["path",{d:"m6 11 6 6 6-6",key:"12ii2o"}],["path",{d:"M19 21H5",key:"150jfl"}]],We=t("arrow-down-to-line",h1);const d1=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],Ge=t("arrow-right",d1);const u1=[["path",{d:"m18 9-6-6-6 6",key:"kcunyi"}],["path",{d:"M12 3v14",key:"7cf3v8"}],["path",{d:"M5 21h14",key:"11awu3"}]],Fe=t("arrow-up-from-line",u1);const p1=[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]],Qe=t("arrow-up",p1);const k1=[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],Xe=t("badge-check",k1);const l1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m4.9 4.9 14.2 14.2",key:"1m5liu"}]],Je=t("ban",l1);const f1=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]],et=t("bell",f1);const _1=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],tt=t("book-open",_1);const v1=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],ot=t("bot",v1);const M1=[["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M9 7.13v-1a3.003 3.003 0 1 1 6 0v1",key:"d7y7pr"}],["path",{d:"M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6",key:"xs1cw7"}],["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M6.53 9C4.6 8.8 3 7.1 3 5",key:"32zzws"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"M3 21c0-2.1 1.7-3.9 3.8-4",key:"4p0ekp"}],["path",{d:"M20.97 5c0 2.1-1.6 3.8-3.5 4",key:"18gb23"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M17.2 17c2.1.1 3.8 1.9 3.8 4",key:"k3fwyw"}]],at=t("bug",M1);const m1=[["path",{d:"M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z",key:"1tc9qg"}],["circle",{cx:"12",cy:"13",r:"3",key:"1vg3eu"}]],nt=t("camera",m1);const x1=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],ct=t("check",x1);const g1=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],rt=t("chevron-down",g1);const w1=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],st=t("chevron-left",w1);const $1=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],yt=t("chevron-right",$1);const N1=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],it=t("chevron-up",N1);const C1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],ht=t("circle-alert",C1);const E1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],dt=t("circle-check",E1);const b1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],ut=t("circle-question-mark",b1);const A1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],pt=t("circle-x",A1);const H1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],kt=t("circle",H1);const q1=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M11 9h4a2 2 0 0 0 2-2V3",key:"1ve2rv"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"M7 21v-4a2 2 0 0 1 2-2h4",key:"1fwkro"}],["circle",{cx:"15",cy:"15",r:"2",key:"3i40o0"}]],lt=t("circuit-board",q1);const z1=[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}]],ft=t("clipboard",z1);const R1=[["path",{d:"M12 6v6h4",key:"135r8i"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],_t=t("clock-3",R1);const T1=[["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M17 20v2",key:"1rnc9c"}],["path",{d:"M17 2v2",key:"11trls"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M2 17h2",key:"7oei6x"}],["path",{d:"M2 7h2",key:"asdhe0"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"M20 17h2",key:"1fpfkl"}],["path",{d:"M20 7h2",key:"1o8tra"}],["path",{d:"M7 20v2",key:"4gnj0m"}],["path",{d:"M7 2v2",key:"1i4yhu"}],["rect",{x:"4",y:"4",width:"16",height:"16",rx:"2",key:"1vbyd7"}],["rect",{x:"8",y:"8",width:"8",height:"8",rx:"1",key:"z9xiuo"}]],vt=t("cpu",T1);const j1=[["rect",{width:"20",height:"14",x:"2",y:"5",rx:"2",key:"ynyp8z"}],["line",{x1:"2",x2:"22",y1:"10",y2:"10",key:"1b3vmo"}]],Mt=t("credit-card",j1);const S1=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],mt=t("database",S1);const L1=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],xt=t("download",L1);const V1=[["path",{d:"M21.54 15H17a2 2 0 0 0-2 2v4.54",key:"1djwo0"}],["path",{d:"M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17",key:"1tzkfa"}],["path",{d:"M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05",key:"14pb5j"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],gt=t("earth",V1);const P1=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],wt=t("external-link",P1);const O1=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],$t=t("eye-off",O1);const U1=[["path",{d:"M17.5 22h.5a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3",key:"rslqgf"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M2 19a2 2 0 1 1 4 0v1a2 2 0 1 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 1 1-4 0v-1a2 2 0 1 1 4 0",key:"9f7x3i"}]],Nt=t("file-audio",U1);const I1=[["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"m2.305 15.53.923-.382",key:"yfp9st"}],["path",{d:"m3.228 12.852-.924-.383",key:"bckynb"}],["path",{d:"M4.677 21.5a2 2 0 0 0 1.313.5H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v2.5",key:"1yo3oz"}],["path",{d:"m4.852 11.228-.383-.923",key:"1j88i9"}],["path",{d:"m4.852 16.772-.383.924",key:"sag1dv"}],["path",{d:"m7.148 11.228.383-.923",key:"rj39hk"}],["path",{d:"m7.53 17.696-.382-.924",key:"1uu5cs"}],["path",{d:"m8.772 12.852.923-.383",key:"13811l"}],["path",{d:"m8.772 15.148.923.383",key:"z1a5l0"}],["circle",{cx:"6",cy:"14",r:"3",key:"a1xfv6"}]],Ct=t("file-cog",I1);const Y1=[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M12 12v6",key:"3ahymv"}],["path",{d:"m15 15-3-3-3 3",key:"15xj92"}]],Et=t("file-up",Y1);const D1=[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]],bt=t("folder-open",D1);const B1=[["path",{d:"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v.5",key:"1dkoa9"}],["path",{d:"M12 10v4h4",key:"1czhmt"}],["path",{d:"m12 14 1.535-1.605a5 5 0 0 1 8 1.5",key:"lvuxfi"}],["path",{d:"M22 22v-4h-4",key:"1ewp4q"}],["path",{d:"m22 18-1.535 1.605a5 5 0 0 1-8-1.5",key:"14ync0"}]],At=t("folder-sync",B1);const Z1=[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}],["path",{d:"M12 10v6",key:"1bos4e"}],["path",{d:"m9 13 3-3 3 3",key:"1pxg3c"}]],Ht=t("folder-up",Z1);const K1=[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]],qt=t("funnel",K1);const W1=[["line",{x1:"22",x2:"2",y1:"12",y2:"12",key:"1y58io"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}],["line",{x1:"6",x2:"6.01",y1:"16",y2:"16",key:"sgf278"}],["line",{x1:"10",x2:"10.01",y1:"16",y2:"16",key:"1l4acy"}]],zt=t("hard-drive",W1);const G1=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]],Rt=t("history",G1);const F1=[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]],Tt=t("key-round",F1);const Q1=[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]],jt=t("layout-grid",Q1);const X1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m4.93 4.93 4.24 4.24",key:"1ymg45"}],["path",{d:"m14.83 9.17 4.24-4.24",key:"1cb5xl"}],["path",{d:"m14.83 14.83 4.24 4.24",key:"q42g0n"}],["path",{d:"m9.17 14.83-4.24 4.24",key:"bqpfvv"}],["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}]],St=t("life-buoy",X1);const J1=[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]],Lt=t("lightbulb",J1);const ee=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],Vt=t("loader-circle",ee);const te=[["circle",{cx:"12",cy:"16",r:"1",key:"1au0dj"}],["rect",{x:"3",y:"10",width:"18",height:"12",rx:"2",key:"6s8ecr"}],["path",{d:"M7 10V7a5 5 0 0 1 10 0v3",key:"1pqi11"}]],Pt=t("lock-keyhole",te);const oe=[["path",{d:"m10 17 5-5-5-5",key:"1bsop3"}],["path",{d:"M15 12H3",key:"6jk70r"}],["path",{d:"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4",key:"u53s6r"}]],Ot=t("log-in",oe);const ae=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],Ut=t("lock",ae);const ne=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],It=t("log-out",ne);const ce=[["path",{d:"M11 6a13 13 0 0 0 8.4-2.8A1 1 0 0 1 21 4v12a1 1 0 0 1-1.6.8A13 13 0 0 0 11 14H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2z",key:"q8bfy3"}],["path",{d:"M6 14a12 12 0 0 0 2.4 7.2 2 2 0 0 0 3.2-2.4A8 8 0 0 1 10 14",key:"1853fq"}],["path",{d:"M8 6v8",key:"15ugcq"}]],Yt=t("megaphone",ce);const re=[["path",{d:"M6 19v-3",key:"1nvgqn"}],["path",{d:"M10 19v-3",key:"iu8nkm"}],["path",{d:"M14 19v-3",key:"kcehxu"}],["path",{d:"M18 19v-3",key:"1vh91z"}],["path",{d:"M8 11V9",key:"63erz4"}],["path",{d:"M16 11V9",key:"fru6f3"}],["path",{d:"M12 11V9",key:"ha00sb"}],["path",{d:"M2 15h20",key:"16ne18"}],["path",{d:"M2 7a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v1.1a2 2 0 0 0 0 3.837V17a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-5.1a2 2 0 0 0 0-3.837Z",key:"lhddv3"}]],Dt=t("memory-stick",re);const se=[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}],["path",{d:"M13 8H7",key:"14i4kc"}],["path",{d:"M17 12H7",key:"16if0g"}]],Bt=t("message-square-text",se);const ye=[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]],Zt=t("message-square",ye);const ie=[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]],Kt=t("monitor",ie);const he=[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]],Wt=t("moon",he);const de=[["path",{d:"M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z",key:"edeuup"}]],Gt=t("mouse-pointer-2",de);const ue=[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]],Ft=t("network",ue);const pe=[["rect",{x:"14",y:"4",width:"4",height:"16",rx:"1",key:"zuxfzm"}],["rect",{x:"6",y:"4",width:"4",height:"16",rx:"1",key:"1okwgv"}]],Qt=t("pause",pe);const ke=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],Xt=t("pencil",ke);const le=[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]],Jt=t("pin",le);const fe=[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]],e2=t("play",fe);const _e=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],t2=t("plus",_e);const ve=[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]],o2=t("power",ve);const Me=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],a2=t("refresh-cw",Me);const me=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],n2=t("rotate-ccw",me);const xe=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],c2=t("save",xe);const ge=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],r2=t("search",ge);const we=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],s2=t("send",we);const $e=[["path",{d:"m10.852 14.772-.383.923",key:"11vil6"}],["path",{d:"M13.148 14.772a3 3 0 1 0-2.296-5.544l-.383-.923",key:"1v3clb"}],["path",{d:"m13.148 9.228.383-.923",key:"t2zzyc"}],["path",{d:"m13.53 15.696-.382-.924a3 3 0 1 1-2.296-5.544",key:"1bxfiv"}],["path",{d:"m14.772 10.852.923-.383",key:"k9m8cz"}],["path",{d:"m14.772 13.148.923.383",key:"1xvhww"}],["path",{d:"M4.5 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-.5",key:"tn8das"}],["path",{d:"M4.5 14H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-.5",key:"1g2pve"}],["path",{d:"M6 18h.01",key:"uhywen"}],["path",{d:"M6 6h.01",key:"1utrut"}],["path",{d:"m9.228 10.852-.923-.383",key:"1wtb30"}],["path",{d:"m9.228 13.148-.923.383",key:"1a830x"}]],y2=t("server-cog",$e);const Ne=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],i2=t("server",Ne);const Ce=[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]],h2=t("settings-2",Ce);const Ee=[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],d2=t("settings",Ee);const be=[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]],u2=t("share-2",be);const Ae=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]],p2=t("shield-alert",Ae);const He=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],k2=t("shield-check",He);const qe=[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]],l2=t("sparkles",qe);const ze=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]],f2=t("square",ze);const Re=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],_2=t("star",Re);const Te=[["path",{d:"M11 2v2",key:"1539x4"}],["path",{d:"M5 2v2",key:"1yf1q8"}],["path",{d:"M5 3H4a2 2 0 0 0-2 2v4a6 6 0 0 0 12 0V5a2 2 0 0 0-2-2h-1",key:"rb5t3r"}],["path",{d:"M8 15a6 6 0 0 0 12 0v-3",key:"x18d4x"}],["circle",{cx:"20",cy:"10",r:"2",key:"ts1r5v"}]],v2=t("stethoscope",Te);const je=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],M2=t("terminal",je);const Se=[["path",{d:"M21 7 6.82 21.18a2.83 2.83 0 0 1-3.99-.01a2.83 2.83 0 0 1 0-4L17 3",key:"1ub6xw"}],["path",{d:"m16 2 6 6",key:"1gw87d"}],["path",{d:"M12 16H4",key:"1cjfip"}]],m2=t("test-tube-diagonal",Se);const Le=[["path",{d:"M7 10v12",key:"1qc93n"}],["path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z",key:"emmmcr"}]],x2=t("thumbs-up",Le);const Ve=[["line",{x1:"10",x2:"14",y1:"2",y2:"2",key:"14vaq8"}],["line",{x1:"12",x2:"15",y1:"14",y2:"11",key:"17fdiu"}],["circle",{cx:"12",cy:"14",r:"8",key:"1e1u0o"}]],g2=t("timer",Ve);const Pe=[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]],w2=t("trash-2",Pe);const Oe=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],$2=t("triangle-alert",Oe);const Ue=[["circle",{cx:"10",cy:"7",r:"1",key:"dypaad"}],["circle",{cx:"4",cy:"20",r:"1",key:"22iqad"}],["path",{d:"M4.7 19.3 19 5",key:"1enqfc"}],["path",{d:"m21 3-3 1 2 2Z",key:"d3ov82"}],["path",{d:"M9.26 7.68 5 12l2 5",key:"1esawj"}],["path",{d:"m10 14 5 2 3.5-3.5",key:"v8oal5"}],["path",{d:"m18 12 1-1 1 1-1 1Z",key:"1bh22v"}]],N2=t("usb",Ue);const Ie=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],C2=t("users",Ie);const Ye=[["path",{d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",key:"uqj9uw"}],["path",{d:"M16 9a5 5 0 0 1 0 6",key:"1q6k2b"}],["path",{d:"M19.364 18.364a9 9 0 0 0 0-12.728",key:"ijwkga"}]],E2=t("volume-2",Ye);const De=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]],b2=t("wifi",De);const Be=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],A2=t("x",Be);export{Ft as $,Qe as A,et as B,ct as C,xt as D,$t as E,qt as F,Nt as G,zt as H,l2 as I,h2 as J,Tt as K,Pt as L,Zt as M,m2 as N,Ut as O,t2 as P,ot as Q,a2 as R,k2 as S,x2 as T,w2 as U,n2 as V,b2 as W,A2 as X,c2 as Y,Ze as Z,N2 as _,M as a,Et as a0,Ht as a1,Vt as a2,ht as a3,yt as a4,p2 as a5,C2 as a6,At as a7,Bt as a8,kt as a9,e2 as aA,Qt as aB,Wt as aC,o2 as aD,it as aa,rt as ab,Je as ac,r2 as ad,_2 as ae,$2 as af,St as ag,Ct as ah,y2 as ai,wt as aj,u2 as ak,nt as al,f2 as am,Rt as an,g2 as ao,v2 as ap,jt as aq,Gt as ar,M2 as as,Ge as at,gt as au,mt as av,ft as aw,Xe as ax,E2 as ay,st as az,s2 as b,Xt as c,Jt as d,dt as e,ut as f,at as g,Lt as h,Yt as i,i2 as j,Kt as k,tt as l,Mt as m,d2 as n,Ot as o,It as p,Ke as q,a1 as r,pt as s,_t as t,vt as u,Dt as v,lt as w,We as x,Fe as y,bt as z};
|