browsentic 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +136 -64
- package/dist/daemon-main.js +7 -3
- package/extension/chrome-mv3/assets/globals-gUnqG7C4.css +2 -0
- package/extension/chrome-mv3/chunks/{popup-Bv3LKSQA.js → popup-DBnq_NvX.js} +1 -1
- package/extension/chrome-mv3/chunks/{sidepanel-BfxbkWaC.js → sidepanel-CrG8wCdP.js} +1 -1
- package/extension/chrome-mv3/manifest.json +1 -1
- package/extension/chrome-mv3/popup.html +3 -3
- package/extension/chrome-mv3/sidepanel.html +3 -3
- package/package.json +7 -3
- package/extension/chrome-mv3/assets/globals-Bj_wgW8U.css +0 -2
- /package/extension/chrome-mv3/chunks/{globals-BlPE2up2.js → globals-RKxmETMG.js} +0 -0
package/dist/cli.js
CHANGED
|
@@ -2131,7 +2131,7 @@ var require_extension = __commonJS({
|
|
|
2131
2131
|
let inQuotes = false;
|
|
2132
2132
|
let extensionName;
|
|
2133
2133
|
let paramName;
|
|
2134
|
-
let
|
|
2134
|
+
let start2 = -1;
|
|
2135
2135
|
let code = -1;
|
|
2136
2136
|
let end = -1;
|
|
2137
2137
|
let i = 0;
|
|
@@ -2139,45 +2139,45 @@ var require_extension = __commonJS({
|
|
|
2139
2139
|
code = header.charCodeAt(i);
|
|
2140
2140
|
if (extensionName === void 0) {
|
|
2141
2141
|
if (end === -1 && tokenChars[code] === 1) {
|
|
2142
|
-
if (
|
|
2142
|
+
if (start2 === -1) start2 = i;
|
|
2143
2143
|
} else if (i !== 0 && (code === 32 || code === 9)) {
|
|
2144
|
-
if (end === -1 &&
|
|
2144
|
+
if (end === -1 && start2 !== -1) end = i;
|
|
2145
2145
|
} else if (code === 59 || code === 44) {
|
|
2146
|
-
if (
|
|
2146
|
+
if (start2 === -1) {
|
|
2147
2147
|
throw new SyntaxError(`Unexpected character at index ${i}`);
|
|
2148
2148
|
}
|
|
2149
2149
|
if (end === -1) end = i;
|
|
2150
|
-
const name = header.slice(
|
|
2150
|
+
const name = header.slice(start2, end);
|
|
2151
2151
|
if (code === 44) {
|
|
2152
2152
|
push(offers, name, params);
|
|
2153
2153
|
params = /* @__PURE__ */ Object.create(null);
|
|
2154
2154
|
} else {
|
|
2155
2155
|
extensionName = name;
|
|
2156
2156
|
}
|
|
2157
|
-
|
|
2157
|
+
start2 = end = -1;
|
|
2158
2158
|
} else {
|
|
2159
2159
|
throw new SyntaxError(`Unexpected character at index ${i}`);
|
|
2160
2160
|
}
|
|
2161
2161
|
} else if (paramName === void 0) {
|
|
2162
2162
|
if (end === -1 && tokenChars[code] === 1) {
|
|
2163
|
-
if (
|
|
2163
|
+
if (start2 === -1) start2 = i;
|
|
2164
2164
|
} else if (code === 32 || code === 9) {
|
|
2165
|
-
if (end === -1 &&
|
|
2165
|
+
if (end === -1 && start2 !== -1) end = i;
|
|
2166
2166
|
} else if (code === 59 || code === 44) {
|
|
2167
|
-
if (
|
|
2167
|
+
if (start2 === -1) {
|
|
2168
2168
|
throw new SyntaxError(`Unexpected character at index ${i}`);
|
|
2169
2169
|
}
|
|
2170
2170
|
if (end === -1) end = i;
|
|
2171
|
-
push(params, header.slice(
|
|
2171
|
+
push(params, header.slice(start2, end), true);
|
|
2172
2172
|
if (code === 44) {
|
|
2173
2173
|
push(offers, extensionName, params);
|
|
2174
2174
|
params = /* @__PURE__ */ Object.create(null);
|
|
2175
2175
|
extensionName = void 0;
|
|
2176
2176
|
}
|
|
2177
|
-
|
|
2178
|
-
} else if (code === 61 &&
|
|
2179
|
-
paramName = header.slice(
|
|
2180
|
-
|
|
2177
|
+
start2 = end = -1;
|
|
2178
|
+
} else if (code === 61 && start2 !== -1 && end === -1) {
|
|
2179
|
+
paramName = header.slice(start2, i);
|
|
2180
|
+
start2 = end = -1;
|
|
2181
2181
|
} else {
|
|
2182
2182
|
throw new SyntaxError(`Unexpected character at index ${i}`);
|
|
2183
2183
|
}
|
|
@@ -2186,13 +2186,13 @@ var require_extension = __commonJS({
|
|
|
2186
2186
|
if (tokenChars[code] !== 1) {
|
|
2187
2187
|
throw new SyntaxError(`Unexpected character at index ${i}`);
|
|
2188
2188
|
}
|
|
2189
|
-
if (
|
|
2189
|
+
if (start2 === -1) start2 = i;
|
|
2190
2190
|
else if (!mustUnescape) mustUnescape = true;
|
|
2191
2191
|
isEscaping = false;
|
|
2192
2192
|
} else if (inQuotes) {
|
|
2193
2193
|
if (tokenChars[code] === 1) {
|
|
2194
|
-
if (
|
|
2195
|
-
} else if (code === 34 &&
|
|
2194
|
+
if (start2 === -1) start2 = i;
|
|
2195
|
+
} else if (code === 34 && start2 !== -1) {
|
|
2196
2196
|
inQuotes = false;
|
|
2197
2197
|
end = i;
|
|
2198
2198
|
} else if (code === 92) {
|
|
@@ -2203,15 +2203,15 @@ var require_extension = __commonJS({
|
|
|
2203
2203
|
} else if (code === 34 && header.charCodeAt(i - 1) === 61) {
|
|
2204
2204
|
inQuotes = true;
|
|
2205
2205
|
} else if (end === -1 && tokenChars[code] === 1) {
|
|
2206
|
-
if (
|
|
2207
|
-
} else if (
|
|
2206
|
+
if (start2 === -1) start2 = i;
|
|
2207
|
+
} else if (start2 !== -1 && (code === 32 || code === 9)) {
|
|
2208
2208
|
if (end === -1) end = i;
|
|
2209
2209
|
} else if (code === 59 || code === 44) {
|
|
2210
|
-
if (
|
|
2210
|
+
if (start2 === -1) {
|
|
2211
2211
|
throw new SyntaxError(`Unexpected character at index ${i}`);
|
|
2212
2212
|
}
|
|
2213
2213
|
if (end === -1) end = i;
|
|
2214
|
-
let value = header.slice(
|
|
2214
|
+
let value = header.slice(start2, end);
|
|
2215
2215
|
if (mustUnescape) {
|
|
2216
2216
|
value = value.replace(/\\/g, "");
|
|
2217
2217
|
mustUnescape = false;
|
|
@@ -2223,17 +2223,17 @@ var require_extension = __commonJS({
|
|
|
2223
2223
|
extensionName = void 0;
|
|
2224
2224
|
}
|
|
2225
2225
|
paramName = void 0;
|
|
2226
|
-
|
|
2226
|
+
start2 = end = -1;
|
|
2227
2227
|
} else {
|
|
2228
2228
|
throw new SyntaxError(`Unexpected character at index ${i}`);
|
|
2229
2229
|
}
|
|
2230
2230
|
}
|
|
2231
2231
|
}
|
|
2232
|
-
if (
|
|
2232
|
+
if (start2 === -1 || inQuotes || code === 32 || code === 9) {
|
|
2233
2233
|
throw new SyntaxError("Unexpected end of input");
|
|
2234
2234
|
}
|
|
2235
2235
|
if (end === -1) end = i;
|
|
2236
|
-
const token = header.slice(
|
|
2236
|
+
const token = header.slice(start2, end);
|
|
2237
2237
|
if (extensionName === void 0) {
|
|
2238
2238
|
push(offers, token, params);
|
|
2239
2239
|
} else {
|
|
@@ -3268,34 +3268,34 @@ var require_subprotocol = __commonJS({
|
|
|
3268
3268
|
var { tokenChars } = require_validation();
|
|
3269
3269
|
function parse3(header) {
|
|
3270
3270
|
const protocols = /* @__PURE__ */ new Set();
|
|
3271
|
-
let
|
|
3271
|
+
let start2 = -1;
|
|
3272
3272
|
let end = -1;
|
|
3273
3273
|
let i = 0;
|
|
3274
3274
|
for (i; i < header.length; i++) {
|
|
3275
3275
|
const code = header.charCodeAt(i);
|
|
3276
3276
|
if (end === -1 && tokenChars[code] === 1) {
|
|
3277
|
-
if (
|
|
3277
|
+
if (start2 === -1) start2 = i;
|
|
3278
3278
|
} else if (i !== 0 && (code === 32 || code === 9)) {
|
|
3279
|
-
if (end === -1 &&
|
|
3279
|
+
if (end === -1 && start2 !== -1) end = i;
|
|
3280
3280
|
} else if (code === 44) {
|
|
3281
|
-
if (
|
|
3281
|
+
if (start2 === -1) {
|
|
3282
3282
|
throw new SyntaxError(`Unexpected character at index ${i}`);
|
|
3283
3283
|
}
|
|
3284
3284
|
if (end === -1) end = i;
|
|
3285
|
-
const protocol2 = header.slice(
|
|
3285
|
+
const protocol2 = header.slice(start2, end);
|
|
3286
3286
|
if (protocols.has(protocol2)) {
|
|
3287
3287
|
throw new SyntaxError(`The "${protocol2}" subprotocol is duplicated`);
|
|
3288
3288
|
}
|
|
3289
3289
|
protocols.add(protocol2);
|
|
3290
|
-
|
|
3290
|
+
start2 = end = -1;
|
|
3291
3291
|
} else {
|
|
3292
3292
|
throw new SyntaxError(`Unexpected character at index ${i}`);
|
|
3293
3293
|
}
|
|
3294
3294
|
}
|
|
3295
|
-
if (
|
|
3295
|
+
if (start2 === -1 || end !== -1) {
|
|
3296
3296
|
throw new SyntaxError("Unexpected end of input");
|
|
3297
3297
|
}
|
|
3298
|
-
const protocol = header.slice(
|
|
3298
|
+
const protocol = header.slice(start2, i);
|
|
3299
3299
|
if (protocols.has(protocol)) {
|
|
3300
3300
|
throw new SyntaxError(`The "${protocol}" subprotocol is duplicated`);
|
|
3301
3301
|
}
|
|
@@ -11285,9 +11285,9 @@ function nullish(input2) {
|
|
|
11285
11285
|
return input2 === null || input2 === void 0;
|
|
11286
11286
|
}
|
|
11287
11287
|
function cleanRegex(source) {
|
|
11288
|
-
const
|
|
11288
|
+
const start2 = source.startsWith("^") ? 1 : 0;
|
|
11289
11289
|
const end = source.endsWith("$") ? source.length - 1 : source.length;
|
|
11290
|
-
return source.slice(
|
|
11290
|
+
return source.slice(start2, end);
|
|
11291
11291
|
}
|
|
11292
11292
|
function floatSafeRemainder(val, step) {
|
|
11293
11293
|
const ratio = val / step;
|
|
@@ -14773,9 +14773,9 @@ var $ZodTemplateLiteral = /* @__PURE__ */ $constructor("$ZodTemplateLiteral", (i
|
|
|
14773
14773
|
const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;
|
|
14774
14774
|
if (!source)
|
|
14775
14775
|
throw new Error(`Invalid template literal part: ${part._zod.traits}`);
|
|
14776
|
-
const
|
|
14776
|
+
const start2 = source.startsWith("^") ? 1 : 0;
|
|
14777
14777
|
const end = source.endsWith("$") ? source.length - 1 : source.length;
|
|
14778
|
-
regexParts.push(source.slice(
|
|
14778
|
+
regexParts.push(source.slice(start2, end));
|
|
14779
14779
|
} else if (part === null || primitiveTypes.has(typeof part)) {
|
|
14780
14780
|
regexParts.push(escapeRegex(`${part}`));
|
|
14781
14781
|
} else {
|
|
@@ -27722,14 +27722,14 @@ async function travel(from, to, steps, buttons, onStep) {
|
|
|
27722
27722
|
else firePointer(elementAt(at), "pointermove", "mousemove", at, buttons);
|
|
27723
27723
|
}
|
|
27724
27724
|
}
|
|
27725
|
-
async function approachFrom(
|
|
27726
|
-
await travel(
|
|
27725
|
+
async function approachFrom(start2, grip, over) {
|
|
27726
|
+
await travel(start2, grip, APPROACH_STEPS, 0);
|
|
27727
27727
|
hoverSequence(over ?? document.body, grip);
|
|
27728
27728
|
}
|
|
27729
27729
|
async function pointerDrag(source, plan) {
|
|
27730
|
-
const { approach:
|
|
27730
|
+
const { approach: start2, grip, drop, steps, holdMs, settleMs } = plan;
|
|
27731
27731
|
const held = source ?? elementAt(grip);
|
|
27732
|
-
await approachFrom(
|
|
27732
|
+
await approachFrom(start2, grip, held);
|
|
27733
27733
|
firePointer(held, "pointerdown", "mousedown", grip, 1);
|
|
27734
27734
|
await settle(holdMs);
|
|
27735
27735
|
await travel(grip, drop, steps, 1);
|
|
@@ -27739,9 +27739,9 @@ async function pointerDrag(source, plan) {
|
|
|
27739
27739
|
return { landedOn: landing ? cssPath(landing) : void 0 };
|
|
27740
27740
|
}
|
|
27741
27741
|
async function nativeDrag(source, plan) {
|
|
27742
|
-
const { approach:
|
|
27742
|
+
const { approach: start2, grip, drop, steps, holdMs, settleMs } = plan;
|
|
27743
27743
|
const dataTransfer = new DataTransfer();
|
|
27744
|
-
await approachFrom(
|
|
27744
|
+
await approachFrom(start2, grip, source);
|
|
27745
27745
|
firePointer(source, "pointerdown", "mousedown", grip, 1);
|
|
27746
27746
|
await settle(holdMs);
|
|
27747
27747
|
const started = fireDrag(source, "dragstart", grip, dataTransfer);
|
|
@@ -27836,14 +27836,14 @@ function digestOf(text3) {
|
|
|
27836
27836
|
}
|
|
27837
27837
|
return (hash3 >>> 0).toString(16).padStart(8, "0");
|
|
27838
27838
|
}
|
|
27839
|
-
function groupEnd(text3,
|
|
27840
|
-
if (text3.length -
|
|
27841
|
-
const window2 = text3.slice(
|
|
27839
|
+
function groupEnd(text3, start2, budget) {
|
|
27840
|
+
if (text3.length - start2 <= budget) return text3.length;
|
|
27841
|
+
const window2 = text3.slice(start2, start2 + budget);
|
|
27842
27842
|
for (const { pattern, floor } of BOUNDARIES) {
|
|
27843
27843
|
const cut = lastBoundary(window2, pattern, Math.floor(budget * floor));
|
|
27844
|
-
if (cut > 0) return
|
|
27844
|
+
if (cut > 0) return start2 + cut;
|
|
27845
27845
|
}
|
|
27846
|
-
return
|
|
27846
|
+
return start2 + budget;
|
|
27847
27847
|
}
|
|
27848
27848
|
function writeCursor(offset, delivered) {
|
|
27849
27849
|
return `${offset}.${digestOf(delivered)}`;
|
|
@@ -28967,12 +28967,12 @@ var pressKey = defineAction({
|
|
|
28967
28967
|
el.dispatchEvent(new KeyboardEvent("keypress", init));
|
|
28968
28968
|
}
|
|
28969
28969
|
if (printable && (el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement)) {
|
|
28970
|
-
const
|
|
28970
|
+
const start2 = el.selectionStart ?? el.value.length;
|
|
28971
28971
|
const end = el.selectionEnd ?? el.value.length;
|
|
28972
|
-
const next = el.value.slice(0,
|
|
28972
|
+
const next = el.value.slice(0, start2) + key + el.value.slice(end);
|
|
28973
28973
|
const proto = el instanceof HTMLInputElement ? HTMLInputElement.prototype : HTMLTextAreaElement.prototype;
|
|
28974
28974
|
Object.getOwnPropertyDescriptor(proto, "value")?.set?.call(el, next);
|
|
28975
|
-
const caret =
|
|
28975
|
+
const caret = start2 + key.length;
|
|
28976
28976
|
try {
|
|
28977
28977
|
el.setSelectionRange(caret, caret);
|
|
28978
28978
|
} catch {
|
|
@@ -29850,7 +29850,7 @@ var typeText = defineAction({
|
|
|
29850
29850
|
}
|
|
29851
29851
|
if (clear) clearContent(el);
|
|
29852
29852
|
focusForTyping(el);
|
|
29853
|
-
const
|
|
29853
|
+
const start2 = performance.now();
|
|
29854
29854
|
const characters = [...text3];
|
|
29855
29855
|
for (const [index, char] of characters.entries()) {
|
|
29856
29856
|
const wait = index ? Math.round(delays[index - 1] * (1 + (Math.random() * 2 - 1) * jitter)) : 0;
|
|
@@ -29872,7 +29872,7 @@ var typeText = defineAction({
|
|
|
29872
29872
|
element: describeElement(el),
|
|
29873
29873
|
typed: characters.length,
|
|
29874
29874
|
charDelayMs: base,
|
|
29875
|
-
elapsedMs: Math.round(performance.now() -
|
|
29875
|
+
elapsedMs: Math.round(performance.now() - start2),
|
|
29876
29876
|
appended: !clear,
|
|
29877
29877
|
submitted
|
|
29878
29878
|
};
|
|
@@ -29906,10 +29906,10 @@ function focusForTyping(el) {
|
|
|
29906
29906
|
}
|
|
29907
29907
|
function insertCharacter(el, char) {
|
|
29908
29908
|
if (el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement) {
|
|
29909
|
-
const
|
|
29909
|
+
const start2 = el.selectionStart ?? el.value.length;
|
|
29910
29910
|
const end = el.selectionEnd ?? el.value.length;
|
|
29911
|
-
setNativeValue(el, el.value.slice(0,
|
|
29912
|
-
const caret =
|
|
29911
|
+
setNativeValue(el, el.value.slice(0, start2) + char + el.value.slice(end));
|
|
29912
|
+
const caret = start2 + char.length;
|
|
29913
29913
|
try {
|
|
29914
29914
|
el.setSelectionRange(caret, caret);
|
|
29915
29915
|
} catch {
|
|
@@ -29955,7 +29955,7 @@ var waitForElement = defineAction({
|
|
|
29955
29955
|
hidden: !el || !isVisible(el),
|
|
29956
29956
|
detached: !el
|
|
29957
29957
|
})[state];
|
|
29958
|
-
const
|
|
29958
|
+
const start2 = performance.now();
|
|
29959
29959
|
let element = find();
|
|
29960
29960
|
if (satisfied(element)) {
|
|
29961
29961
|
return { state, elapsedMs: 0, element: element ? describeElement(element) : void 0 };
|
|
@@ -29988,7 +29988,7 @@ var waitForElement = defineAction({
|
|
|
29988
29988
|
});
|
|
29989
29989
|
return {
|
|
29990
29990
|
state,
|
|
29991
|
-
elapsedMs: Math.round(performance.now() -
|
|
29991
|
+
elapsedMs: Math.round(performance.now() - start2),
|
|
29992
29992
|
element: element ? describeElement(element) : void 0
|
|
29993
29993
|
};
|
|
29994
29994
|
}
|
|
@@ -30291,6 +30291,21 @@ function settingsFor(stored, kind) {
|
|
|
30291
30291
|
};
|
|
30292
30292
|
}
|
|
30293
30293
|
var text = (value) => typeof value === "string" && value.trim() ? value.trim() : void 0;
|
|
30294
|
+
function writeAgentModel(kind, model) {
|
|
30295
|
+
const stored = readStored();
|
|
30296
|
+
const agents = { ...stored.agents ?? {} };
|
|
30297
|
+
const scoped = { ...agents[kind] ?? {} };
|
|
30298
|
+
const value = text(model);
|
|
30299
|
+
if (value) scoped.model = value;
|
|
30300
|
+
else delete scoped.model;
|
|
30301
|
+
if (Object.keys(scoped).length) agents[kind] = scoped;
|
|
30302
|
+
else delete agents[kind];
|
|
30303
|
+
const next = { ...stored };
|
|
30304
|
+
if (Object.keys(agents).length) next.agents = agents;
|
|
30305
|
+
else delete next.agents;
|
|
30306
|
+
if (kind === "claude") delete next.model;
|
|
30307
|
+
write(next);
|
|
30308
|
+
}
|
|
30294
30309
|
function write(config2) {
|
|
30295
30310
|
mkdirSync3(stateDir, { recursive: true, mode: 448 });
|
|
30296
30311
|
writeFileSync2(configPath, `${JSON.stringify(config2, null, 2)}
|
|
@@ -31898,9 +31913,11 @@ import { homedir as homedir7 } from "os";
|
|
|
31898
31913
|
import { dirname as dirname6, join as join15, resolve, sep as sep2 } from "path";
|
|
31899
31914
|
import { fileURLToPath as fileURLToPath5 } from "url";
|
|
31900
31915
|
var packageRoot = resolve(dirname6(fileURLToPath5(import.meta.url)), "..");
|
|
31916
|
+
var APP_MARKER = ".browsentic-app.json";
|
|
31901
31917
|
var inNpxCache = (path) => path.split(sep2).includes("_npx");
|
|
31902
31918
|
function installKind() {
|
|
31903
31919
|
if (inNpxCache(packageRoot)) return "npx";
|
|
31920
|
+
if (existsSync5(join15(packageRoot, APP_MARKER))) return "app";
|
|
31904
31921
|
if (existsSync5(join15(packageRoot, "tsup.config.ts"))) return "repo";
|
|
31905
31922
|
return "global";
|
|
31906
31923
|
}
|
|
@@ -32109,6 +32126,13 @@ async function upgradeCli(current, forward) {
|
|
|
32109
32126
|
console.error(`
|
|
32110
32127
|
! browsentic ${latest} is published; this is ${current}, from a source checkout.`);
|
|
32111
32128
|
console.error(` Update it with "git pull && yarn setup".
|
|
32129
|
+
`);
|
|
32130
|
+
return null;
|
|
32131
|
+
}
|
|
32132
|
+
if (kind === "app") {
|
|
32133
|
+
console.error(`
|
|
32134
|
+
! browsentic ${latest} is published; this is ${current}, installed by Browsentic.app.`);
|
|
32135
|
+
console.error(` Update it from the app, which replaces the command and the extension together.
|
|
32112
32136
|
`);
|
|
32113
32137
|
return null;
|
|
32114
32138
|
}
|
|
@@ -34246,8 +34270,8 @@ function purgeNpxCache(entries) {
|
|
|
34246
34270
|
// package.json
|
|
34247
34271
|
var package_default = {
|
|
34248
34272
|
name: "browsentic",
|
|
34249
|
-
version: "0.
|
|
34250
|
-
description: "
|
|
34273
|
+
version: "0.6.0",
|
|
34274
|
+
description: "A browser extension with an AI side panel that hands your real, logged-in browser to the AI agent you already run. Installs the extension, runs the local daemon, and optionally speaks MCP.",
|
|
34251
34275
|
type: "module",
|
|
34252
34276
|
license: "MIT",
|
|
34253
34277
|
packageManager: "yarn@4.17.1",
|
|
@@ -34259,8 +34283,12 @@ var package_default = {
|
|
|
34259
34283
|
},
|
|
34260
34284
|
bugs: "https://github.com/imshaikot/browsentic/issues",
|
|
34261
34285
|
keywords: [
|
|
34262
|
-
"browser-
|
|
34286
|
+
"browser-extension",
|
|
34263
34287
|
"chrome-extension",
|
|
34288
|
+
"ai-browser-extension",
|
|
34289
|
+
"side-panel",
|
|
34290
|
+
"browser-agent",
|
|
34291
|
+
"browser-automation",
|
|
34264
34292
|
"ai-agent",
|
|
34265
34293
|
"agentic-browsing",
|
|
34266
34294
|
"mcp",
|
|
@@ -34313,6 +34341,7 @@ var USAGE = `browsentic ${package_default.version} \u2014 hand your real browser
|
|
|
34313
34341
|
browsentic agent show which agent runs the side panel, and which are installed
|
|
34314
34342
|
browsentic agent <name> switch to claude, codex or antigravity
|
|
34315
34343
|
browsentic agent fix <name> let Browsentic fix what that agent still needs
|
|
34344
|
+
browsentic agent model <name> [model] pin that agent's model, or omit it for the CLI's default
|
|
34316
34345
|
|
|
34317
34346
|
browsentic skills list the skills the agent can route to, and where they came from
|
|
34318
34347
|
browsentic approvals list the \u201Calways on this site\u201D approvals you have granted
|
|
@@ -34321,9 +34350,12 @@ var USAGE = `browsentic ${package_default.version} \u2014 hand your real browser
|
|
|
34321
34350
|
browsentic downloads clear delete all of them
|
|
34322
34351
|
browsentic tools print the bundled tool manifest (no browser needed)
|
|
34323
34352
|
browsentic logs print the daemon log
|
|
34353
|
+
browsentic start bring the background daemon up, if it is not already
|
|
34324
34354
|
browsentic stop stop the background daemon
|
|
34325
34355
|
browsentic restart stop the daemon and bring up a fresh one
|
|
34326
34356
|
browsentic token print the control token (for MCP clients, not the browser)
|
|
34357
|
+
|
|
34358
|
+
agent, skills, approvals and downloads take --json, which is what the macOS app reads.
|
|
34327
34359
|
browsentic --version print the version
|
|
34328
34360
|
|
|
34329
34361
|
Getting started: browsentic setup
|
|
@@ -34335,6 +34367,8 @@ For MCP clients
|
|
|
34335
34367
|
var invokedAs = basename3(process.argv[1] ?? "").replace(/\.(?:js|cjs|mjs|exe|cmd|ps1)$/i, "");
|
|
34336
34368
|
var servesBare = invokedAs === "browsentic-mcp" || !!process.env.BROWSENTIC_AGENT_RUN;
|
|
34337
34369
|
var [command] = process.argv.slice(2);
|
|
34370
|
+
var wantsJson = process.argv.includes("--json");
|
|
34371
|
+
var positional = process.argv.slice(3).filter((arg) => !arg.startsWith("--"));
|
|
34338
34372
|
switch (command) {
|
|
34339
34373
|
case void 0:
|
|
34340
34374
|
if (servesBare) await serve();
|
|
@@ -34362,7 +34396,7 @@ switch (command) {
|
|
|
34362
34396
|
await revoke(process.argv[3]);
|
|
34363
34397
|
break;
|
|
34364
34398
|
case "agent":
|
|
34365
|
-
await chooseAgent(
|
|
34399
|
+
await chooseAgent(positional[0], positional[1], positional[2]);
|
|
34366
34400
|
break;
|
|
34367
34401
|
case "tools":
|
|
34368
34402
|
printTools();
|
|
@@ -34370,6 +34404,9 @@ switch (command) {
|
|
|
34370
34404
|
case "status":
|
|
34371
34405
|
await showStatus();
|
|
34372
34406
|
break;
|
|
34407
|
+
case "start":
|
|
34408
|
+
await start();
|
|
34409
|
+
break;
|
|
34373
34410
|
case "stop":
|
|
34374
34411
|
await stop();
|
|
34375
34412
|
break;
|
|
@@ -34380,10 +34417,10 @@ switch (command) {
|
|
|
34380
34417
|
printSkills();
|
|
34381
34418
|
break;
|
|
34382
34419
|
case "approvals":
|
|
34383
|
-
manageApprovals(
|
|
34420
|
+
manageApprovals(positional[0], positional[1]);
|
|
34384
34421
|
break;
|
|
34385
34422
|
case "downloads":
|
|
34386
|
-
manageDownloads(
|
|
34423
|
+
manageDownloads(positional[0]);
|
|
34387
34424
|
break;
|
|
34388
34425
|
case "logs":
|
|
34389
34426
|
showLogs();
|
|
@@ -34432,6 +34469,16 @@ function printTools() {
|
|
|
34432
34469
|
}
|
|
34433
34470
|
function printSkills() {
|
|
34434
34471
|
const skills = loadSkills();
|
|
34472
|
+
if (wantsJson) {
|
|
34473
|
+
const config3 = readAgentConfig();
|
|
34474
|
+
const listed = skills.map(({ body: _body, ...skill }) => ({
|
|
34475
|
+
...skill,
|
|
34476
|
+
path: skill.provenance === "generated" ? join18(uploadedSkillsDir(), skill.name) : void 0
|
|
34477
|
+
}));
|
|
34478
|
+
const own2 = agentSkills(config3).map(({ name, description }) => ({ name, description }));
|
|
34479
|
+
console.log(JSON.stringify({ skills: listed, dirs: skillDirNames(), agent: config3.agent, agentSkills: own2 }, null, 2));
|
|
34480
|
+
return;
|
|
34481
|
+
}
|
|
34435
34482
|
if (!skills.length) {
|
|
34436
34483
|
console.log(`No skills found. Looked in:
|
|
34437
34484
|
${skillDirNames().join("\n ")}`);
|
|
@@ -34502,6 +34549,10 @@ async function stop() {
|
|
|
34502
34549
|
if (!stopped.length && !stubborn.length) console.log("No daemon is answering; nothing to stop.");
|
|
34503
34550
|
if (stubborn.length) process.exitCode = 1;
|
|
34504
34551
|
}
|
|
34552
|
+
async function start() {
|
|
34553
|
+
const lock = await ensureDaemon();
|
|
34554
|
+
console.log(`Daemon running on 127.0.0.1:${lock.port} (pid ${lock.pid}, v${lock.daemonVersion}).`);
|
|
34555
|
+
}
|
|
34505
34556
|
async function restart() {
|
|
34506
34557
|
const { stubborn } = await stopDaemons();
|
|
34507
34558
|
if (stubborn.length) {
|
|
@@ -34672,6 +34723,7 @@ async function uninstall(argv) {
|
|
|
34672
34723
|
console.log(" live in extension storage rather than on disk.");
|
|
34673
34724
|
if (kind === "global") console.log("\n the command itself: npm rm -g browsentic");
|
|
34674
34725
|
if (kind === "repo") console.log("\n the global link: yarn daemon:unlink");
|
|
34726
|
+
if (kind === "app") console.log("\n the app itself: drag Browsentic.app from Applications to the Trash");
|
|
34675
34727
|
console.log("\n the entry in your MCP client, e.g. claude mcp remove browsentic");
|
|
34676
34728
|
if (flag("dry-run")) {
|
|
34677
34729
|
console.log("\n --dry-run: nothing was removed.\n");
|
|
@@ -34727,7 +34779,15 @@ async function showSessions() {
|
|
|
34727
34779
|
console.log(` extension v${session.extensionVersion}, paired ${session.pairedAt}, last seen ${session.lastSeenAt}`);
|
|
34728
34780
|
}
|
|
34729
34781
|
}
|
|
34730
|
-
async function chooseAgent(first, second) {
|
|
34782
|
+
async function chooseAgent(first, second, third) {
|
|
34783
|
+
if (first === "model") {
|
|
34784
|
+
if (!isAgentKind(second)) {
|
|
34785
|
+
console.error(`Name the agent whose model to set. Pick one of: ${AGENT_KINDS.join(", ")}`);
|
|
34786
|
+
process.exit(1);
|
|
34787
|
+
}
|
|
34788
|
+
writeAgentModel(second, third ?? null);
|
|
34789
|
+
first = second = void 0;
|
|
34790
|
+
}
|
|
34731
34791
|
const grant = first === "fix" || first === "setup";
|
|
34732
34792
|
const named = grant ? second : first;
|
|
34733
34793
|
if (named !== void 0 && !isAgentKind(named)) {
|
|
@@ -34738,6 +34798,10 @@ async function chooseAgent(first, second) {
|
|
|
34738
34798
|
const bridge = await connect();
|
|
34739
34799
|
const state = await bridge.agent(kind && (grant ? { grant: kind } : { set: kind }));
|
|
34740
34800
|
await bridge.close();
|
|
34801
|
+
if (wantsJson) {
|
|
34802
|
+
console.log(JSON.stringify({ ...state, catalog: AGENT_LIST }, null, 2));
|
|
34803
|
+
return;
|
|
34804
|
+
}
|
|
34741
34805
|
for (const runner of state.runners) {
|
|
34742
34806
|
const agent = AGENTS[runner.kind];
|
|
34743
34807
|
const mark = runner.kind === state.active ? "\u25CF" : "\u25CB";
|
|
@@ -34775,6 +34839,10 @@ function manageDownloads(sub) {
|
|
|
34775
34839
|
return;
|
|
34776
34840
|
}
|
|
34777
34841
|
const downloads = storedDownloads();
|
|
34842
|
+
if (wantsJson) {
|
|
34843
|
+
console.log(JSON.stringify({ dir: downloadDir(), downloads }, null, 2));
|
|
34844
|
+
return;
|
|
34845
|
+
}
|
|
34778
34846
|
if (!downloads.length) {
|
|
34779
34847
|
console.log(`Nothing captured. Files land in ${downloadDir()} when an agent uses page.captureDownload.`);
|
|
34780
34848
|
return;
|
|
@@ -34800,6 +34868,10 @@ function manageApprovals(sub, host) {
|
|
|
34800
34868
|
return;
|
|
34801
34869
|
}
|
|
34802
34870
|
const grants = listGrants();
|
|
34871
|
+
if (wantsJson) {
|
|
34872
|
+
console.log(JSON.stringify({ grants }, null, 2));
|
|
34873
|
+
return;
|
|
34874
|
+
}
|
|
34803
34875
|
if (!grants.length) {
|
|
34804
34876
|
console.log("No standing approvals. Every gated action still asks.");
|
|
34805
34877
|
return;
|
package/dist/daemon-main.js
CHANGED
|
@@ -27244,8 +27244,8 @@ X-Browsentic-Reason: ${reason}\r
|
|
|
27244
27244
|
// package.json
|
|
27245
27245
|
var package_default = {
|
|
27246
27246
|
name: "browsentic",
|
|
27247
|
-
version: "0.
|
|
27248
|
-
description: "
|
|
27247
|
+
version: "0.6.0",
|
|
27248
|
+
description: "A browser extension with an AI side panel that hands your real, logged-in browser to the AI agent you already run. Installs the extension, runs the local daemon, and optionally speaks MCP.",
|
|
27249
27249
|
type: "module",
|
|
27250
27250
|
license: "MIT",
|
|
27251
27251
|
packageManager: "yarn@4.17.1",
|
|
@@ -27257,8 +27257,12 @@ var package_default = {
|
|
|
27257
27257
|
},
|
|
27258
27258
|
bugs: "https://github.com/imshaikot/browsentic/issues",
|
|
27259
27259
|
keywords: [
|
|
27260
|
-
"browser-
|
|
27260
|
+
"browser-extension",
|
|
27261
27261
|
"chrome-extension",
|
|
27262
|
+
"ai-browser-extension",
|
|
27263
|
+
"side-panel",
|
|
27264
|
+
"browser-agent",
|
|
27265
|
+
"browser-automation",
|
|
27262
27266
|
"ai-agent",
|
|
27263
27267
|
"agentic-browsing",
|
|
27264
27268
|
"mcp",
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:"Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", "Fira Code", ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace;--color-black:#000;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-2xl:1rem;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--font-display:"Inter Tight", "Inter", ui-sans-serif, system-ui, -apple-system, sans-serif;--ease-out-expo:cubic-bezier(.16, 1, .3, 1)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}html{background-color:var(--background)}body{background-color:var(--background);font-family:var(--font-sans);color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"cv02", "cv03", "cv04", "ss01";text-rendering:optimizelegibility}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.024em}body:after{content:"";z-index:100;pointer-events:none;opacity:var(--grain);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}::selection{background:var(--brand)}@supports (color:color-mix(in lab, red, red)){::selection{background:color-mix(in oklch, var(--brand) 32%, transparent)}}::selection{color:var(--ink)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--surface-2);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--brand)}@supports (color:color-mix(in lab, red, red)){::-webkit-scrollbar-thumb:hover{background:color-mix(in oklch, var(--brand) 40%, var(--surface-2))}}}@layer components{[data-stream] .tok{animation:browsentic-token .42s var(--ease-out-expo) both}[data-stream=live]>:last-child:after{content:"";vertical-align:-.12em;background:var(--brand);width:.42em;height:.95em;box-shadow:0 0 10px var(--brand);border-radius:1px;margin-left:.14em;display:inline-block}@supports (color:color-mix(in lab, red, red)){[data-stream=live]>:last-child:after{box-shadow:0 0 10px color-mix(in oklch, var(--brand) var(--glow), transparent)}}[data-stream=live]>:last-child:after{animation:1.05s step-end infinite browsentic-caret}.enters{animation:browsentic-enter .34s var(--ease-out-expo) both}.think-dot{animation:1.2s ease-in-out infinite browsentic-think}.think-dot:nth-child(2){animation-delay:.16s}.think-dot:nth-child(3){animation-delay:.32s}.sweep:after{content:"";background:linear-gradient(90deg, transparent, var(--brand), transparent);width:30%;height:1px;animation:browsentic-sweep 1.8s var(--ease-out-expo) infinite;position:absolute;inset-block-start:0;inset-inline-start:0}}@layer utilities{.pointer-events-none{pointer-events:none}.\!visible{visibility:visible!important}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:0}.inset-x-0{inset-inline:0}.top-1{top:var(--spacing)}.right-1{right:var(--spacing)}.right-1\.5{right:calc(var(--spacing) * 1.5)}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-full{bottom:100%}.left-1\/2{left:50%}.z-20{z-index:20}.z-50{z-index:50}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-px{margin-top:1px}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.field-sizing-content{field-sizing:content}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-20{width:calc(var(--spacing) * 20);height:calc(var(--spacing) * 20)}.size-full{width:100%;height:100%}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.max-h-7{max-height:calc(var(--spacing) * 7)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-\[45\%\]{max-height:45%}.max-h-\[60\%\]{max-height:60%}.max-h-\[var\(--radix-select-content-available-height\)\]{max-height:var(--radix-select-content-available-height)}.min-h-0{min-height:0}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-14{min-height:calc(var(--spacing) * 14)}.min-h-16{min-height:calc(var(--spacing) * 16)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-6\/12{width:50%}.w-7{width:calc(var(--spacing) * 7)}.w-9\/12{width:75%}.w-\[22rem\]{width:22rem}.w-fit{width:fit-content}.w-full{width:100%}.max-w-14{max-width:calc(var(--spacing) * 14)}.max-w-\[88\%\]{max-width:88%}.max-w-full{max-width:100%}.min-w-0{min-width:0}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-full{min-width:100%}.flex-1{flex:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0\.5{--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-3\.5{--tw-translate-x:calc(var(--spacing) * 3.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.\[scrollbar-width\:none\]{scrollbar-width:none}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-px{gap:1px}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-line>:not(:last-child)){border-color:var(--line)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-tl-md{border-top-left-radius:calc(var(--radius) - 2px)}.rounded-br-md{border-bottom-right-radius:calc(var(--radius) - 2px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-amber\/25{border-color:var(--amber)}@supports (color:color-mix(in lab, red, red)){.border-amber\/25{border-color:color-mix(in oklab, var(--amber) 25%, transparent)}}.border-amber\/40{border-color:var(--amber)}@supports (color:color-mix(in lab, red, red)){.border-amber\/40{border-color:color-mix(in oklab, var(--amber) 40%, transparent)}}.border-border{border-color:var(--border)}.border-brand\/25{border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.border-brand\/25{border-color:color-mix(in oklab, var(--brand) 25%, transparent)}}.border-brand\/30{border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.border-brand\/30{border-color:color-mix(in oklab, var(--brand) 30%, transparent)}}.border-brand\/35{border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.border-brand\/35{border-color:color-mix(in oklab, var(--brand) 35%, transparent)}}.border-brand\/40{border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.border-brand\/40{border-color:color-mix(in oklab, var(--brand) 40%, transparent)}}.border-brand\/45{border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.border-brand\/45{border-color:color-mix(in oklab, var(--brand) 45%, transparent)}}.border-brand\/50{border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.border-brand\/50{border-color:color-mix(in oklab, var(--brand) 50%, transparent)}}.border-brand\/55{border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.border-brand\/55{border-color:color-mix(in oklab, var(--brand) 55%, transparent)}}.border-brand\/60{border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.border-brand\/60{border-color:color-mix(in oklab, var(--brand) 60%, transparent)}}.border-destructive\/35{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/35{border-color:color-mix(in oklab, var(--destructive) 35%, transparent)}}.border-destructive\/40{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/40{border-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.border-ember\/30{border-color:var(--ember)}@supports (color:color-mix(in lab, red, red)){.border-ember\/30{border-color:color-mix(in oklab, var(--ember) 30%, transparent)}}.border-ember\/40{border-color:var(--ember)}@supports (color:color-mix(in lab, red, red)){.border-ember\/40{border-color:color-mix(in oklab, var(--ember) 40%, transparent)}}.border-ember\/45{border-color:var(--ember)}@supports (color:color-mix(in lab, red, red)){.border-ember\/45{border-color:color-mix(in oklab, var(--ember) 45%, transparent)}}.border-lime\/30{border-color:var(--lime)}@supports (color:color-mix(in lab, red, red)){.border-lime\/30{border-color:color-mix(in oklab, var(--lime) 30%, transparent)}}.border-line{border-color:var(--line)}.border-line-strong{border-color:var(--line-strong)}.border-magenta\/35{border-color:var(--magenta)}@supports (color:color-mix(in lab, red, red)){.border-magenta\/35{border-color:color-mix(in oklab, var(--magenta) 35%, transparent)}}.border-magenta\/60{border-color:var(--magenta)}@supports (color:color-mix(in lab, red, red)){.border-magenta\/60{border-color:color-mix(in oklab, var(--magenta) 60%, transparent)}}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-amber,.bg-amber\/8{background-color:var(--amber)}@supports (color:color-mix(in lab, red, red)){.bg-amber\/8{background-color:color-mix(in oklab, var(--amber) 8%, transparent)}}.bg-amber\/10{background-color:var(--amber)}@supports (color:color-mix(in lab, red, red)){.bg-amber\/10{background-color:color-mix(in oklab, var(--amber) 10%, transparent)}}.bg-amber\/12{background-color:var(--amber)}@supports (color:color-mix(in lab, red, red)){.bg-amber\/12{background-color:color-mix(in oklab, var(--amber) 12%, transparent)}}.bg-amber\/15{background-color:var(--amber)}@supports (color:color-mix(in lab, red, red)){.bg-amber\/15{background-color:color-mix(in oklab, var(--amber) 15%, transparent)}}.bg-background{background-color:var(--background)}.bg-brand,.bg-brand\/5{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.bg-brand\/5{background-color:color-mix(in oklab, var(--brand) 5%, transparent)}}.bg-brand\/8{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.bg-brand\/8{background-color:color-mix(in oklab, var(--brand) 8%, transparent)}}.bg-brand\/10{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.bg-brand\/10{background-color:color-mix(in oklab, var(--brand) 10%, transparent)}}.bg-brand\/12{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.bg-brand\/12{background-color:color-mix(in oklab, var(--brand) 12%, transparent)}}.bg-brand\/20{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.bg-brand\/20{background-color:color-mix(in oklab, var(--brand) 20%, transparent)}}.bg-brand\/70{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.bg-brand\/70{background-color:color-mix(in oklab, var(--brand) 70%, transparent)}}.bg-destructive,.bg-destructive\/8{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/8{background-color:color-mix(in oklab, var(--destructive) 8%, transparent)}}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/10{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.bg-destructive\/12{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/12{background-color:color-mix(in oklab, var(--destructive) 12%, transparent)}}.bg-ember,.bg-ember\/8{background-color:var(--ember)}@supports (color:color-mix(in lab, red, red)){.bg-ember\/8{background-color:color-mix(in oklab, var(--ember) 8%, transparent)}}.bg-ember\/10{background-color:var(--ember)}@supports (color:color-mix(in lab, red, red)){.bg-ember\/10{background-color:color-mix(in oklab, var(--ember) 10%, transparent)}}.bg-ember\/12{background-color:var(--ember)}@supports (color:color-mix(in lab, red, red)){.bg-ember\/12{background-color:color-mix(in oklab, var(--ember) 12%, transparent)}}.bg-ground{background-color:var(--ground)}.bg-ground-2\/70{background-color:var(--ground-2)}@supports (color:color-mix(in lab, red, red)){.bg-ground-2\/70{background-color:color-mix(in oklab, var(--ground-2) 70%, transparent)}}.bg-ground-2\/80{background-color:var(--ground-2)}@supports (color:color-mix(in lab, red, red)){.bg-ground-2\/80{background-color:color-mix(in oklab, var(--ground-2) 80%, transparent)}}.bg-ground\/40{background-color:var(--ground)}@supports (color:color-mix(in lab, red, red)){.bg-ground\/40{background-color:color-mix(in oklab, var(--ground) 40%, transparent)}}.bg-ground\/60{background-color:var(--ground)}@supports (color:color-mix(in lab, red, red)){.bg-ground\/60{background-color:color-mix(in oklab, var(--ground) 60%, transparent)}}.bg-ground\/70{background-color:var(--ground)}@supports (color:color-mix(in lab, red, red)){.bg-ground\/70{background-color:color-mix(in oklab, var(--ground) 70%, transparent)}}.bg-ground\/85{background-color:var(--ground)}@supports (color:color-mix(in lab, red, red)){.bg-ground\/85{background-color:color-mix(in oklab, var(--ground) 85%, transparent)}}.bg-ground\/96{background-color:var(--ground)}@supports (color:color-mix(in lab, red, red)){.bg-ground\/96{background-color:color-mix(in oklab, var(--ground) 96%, transparent)}}.bg-ink{background-color:var(--ink)}.bg-ink-faint,.bg-ink-faint\/50{background-color:var(--ink-faint)}@supports (color:color-mix(in lab, red, red)){.bg-ink-faint\/50{background-color:color-mix(in oklab, var(--ink-faint) 50%, transparent)}}.bg-ink-faint\/60{background-color:var(--ink-faint)}@supports (color:color-mix(in lab, red, red)){.bg-ink-faint\/60{background-color:color-mix(in oklab, var(--ink-faint) 60%, transparent)}}.bg-ink\/30{background-color:var(--ink)}@supports (color:color-mix(in lab, red, red)){.bg-ink\/30{background-color:color-mix(in oklab, var(--ink) 30%, transparent)}}.bg-ink\/75{background-color:var(--ink)}@supports (color:color-mix(in lab, red, red)){.bg-ink\/75{background-color:color-mix(in oklab, var(--ink) 75%, transparent)}}.bg-lime,.bg-lime\/8{background-color:var(--lime)}@supports (color:color-mix(in lab, red, red)){.bg-lime\/8{background-color:color-mix(in oklab, var(--lime) 8%, transparent)}}.bg-magenta,.bg-magenta\/8{background-color:var(--magenta)}@supports (color:color-mix(in lab, red, red)){.bg-magenta\/8{background-color:color-mix(in oklab, var(--magenta) 8%, transparent)}}.bg-magenta\/15{background-color:var(--magenta)}@supports (color:color-mix(in lab, red, red)){.bg-magenta\/15{background-color:color-mix(in oklab, var(--magenta) 15%, transparent)}}.bg-magenta\/25{background-color:var(--magenta)}@supports (color:color-mix(in lab, red, red)){.bg-magenta\/25{background-color:color-mix(in oklab, var(--magenta) 25%, transparent)}}.bg-magenta\/30{background-color:var(--magenta)}@supports (color:color-mix(in lab, red, red)){.bg-magenta\/30{background-color:color-mix(in oklab, var(--magenta) 30%, transparent)}}.bg-surface{background-color:var(--surface)}.bg-surface-2{background-color:var(--surface-2)}.bg-surface\/20{background-color:var(--surface)}@supports (color:color-mix(in lab, red, red)){.bg-surface\/20{background-color:color-mix(in oklab, var(--surface) 20%, transparent)}}.bg-surface\/30{background-color:var(--surface)}@supports (color:color-mix(in lab, red, red)){.bg-surface\/30{background-color:color-mix(in oklab, var(--surface) 30%, transparent)}}.bg-surface\/40{background-color:var(--surface)}@supports (color:color-mix(in lab, red, red)){.bg-surface\/40{background-color:color-mix(in oklab, var(--surface) 40%, transparent)}}.bg-surface\/60{background-color:var(--surface)}@supports (color:color-mix(in lab, red, red)){.bg-surface\/60{background-color:color-mix(in oklab, var(--surface) 60%, transparent)}}.bg-surface\/70{background-color:var(--surface)}@supports (color:color-mix(in lab, red, red)){.bg-surface\/70{background-color:color-mix(in oklab, var(--surface) 70%, transparent)}}.bg-transparent{background-color:#0000}.dot-grid{background-image:radial-gradient(circle at 1px 1px, var(--wash) 1px, transparent 0)}@supports (color:color-mix(in lab, red, red)){.dot-grid{background-image:radial-gradient(circle at 1px 1px, color-mix(in oklch, var(--wash) 9%, transparent) 1px, transparent 0)}}.dot-grid{background-size:22px 22px}.fade-bottom{-webkit-mask-image:linear-gradient(#000 78%,#0000 100%);mask-image:linear-gradient(#000 78%,#0000 100%)}.fill-current{fill:currentColor}.object-cover{object-fit:cover}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-px{padding:1px}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0{padding-block:0}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-px{padding-block:1px}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pb-0{padding-bottom:0}.pb-1{padding-bottom:var(--spacing)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-\[18px\]{padding-left:18px}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-top{vertical-align:top}.font-display{font-family:var(--font-display)}.font-mono{font-family:var(--font-mono)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.85em\]{font-size:.85em}.text-\[0\.95rem\]{font-size:.95rem}.text-\[0\.9375rem\]{font-size:.9375rem}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.1em\]{--tw-tracking:.1em;letter-spacing:.1em}.tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\[0\.14em\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-words{overflow-wrap:break-word}.wrap-anywhere{overflow-wrap:anywhere}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber{color:var(--amber)}.text-brand{color:var(--brand)}.text-destructive{color:var(--destructive)}.text-ember{color:var(--ember)}.text-ground{color:var(--ground)}.text-ink{color:var(--ink)}.text-ink-dim{color:var(--ink-dim)}.text-ink-faint{color:var(--ink-faint)}.text-lime,.text-lime\/80{color:var(--lime)}@supports (color:color-mix(in lab, red, red)){.text-lime\/80{color:color-mix(in oklab, var(--lime) 80%, transparent)}}.text-magenta{color:var(--magenta)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.decoration-1{text-decoration-thickness:1px}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.accent-brand{accent-color:var(--brand)}.accent-destructive{accent-color:var(--destructive)}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.glow-brand{box-shadow:0 6px 26px -10px var(--brand)}@supports (color:color-mix(in lab, red, red)){.glow-brand{box-shadow:0 6px 26px -10px color-mix(in oklch, var(--brand) var(--glow), transparent)}}.glow-destructive{box-shadow:0 6px 26px -10px var(--destructive)}@supports (color:color-mix(in lab, red, red)){.glow-destructive{box-shadow:0 6px 26px -10px color-mix(in oklch, var(--destructive) var(--glow), transparent)}}.glow-dot{box-shadow:0 0 8px 1px}@supports (color:color-mix(in lab, red, red)){.glow-dot{box-shadow:0 0 8px 1px color-mix(in oklch, currentColor var(--glow), transparent)}}.shadow-black\/50{--tw-shadow-color:#00000080}@supports (color:color-mix(in lab, red, red)){.shadow-black\/50{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-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,)}.backdrop-blur-\[2px\]{--tw-backdrop-blur:blur(2px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.outline-none{--tw-outline-style:none;outline-style:none}.panel-card{background:linear-gradient(180deg, var(--wash), var(--wash))}@supports (color:color-mix(in lab, red, red)){.panel-card{background:linear-gradient(180deg, color-mix(in oklch, var(--wash) 4.5%, transparent), color-mix(in oklch, var(--wash) 1.5%, transparent))}}.panel-card{border:1px solid var(--line)}.select-none{-webkit-user-select:none;user-select:none}.blur-in{--tw-enter-blur:20px}.neon-text{text-shadow:0 0 12px}@supports (color:color-mix(in lab, red, red)){.neon-text{text-shadow:0 0 12px color-mix(in oklch, currentColor var(--neon), transparent)}}.running{animation-play-state:running}@media (hover:hover){.group-hover\:opacity-85:is(:where(.group):hover *){opacity:.85}}.selection\:bg-brand\/30 ::selection{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.selection\:bg-brand\/30 ::selection{background-color:color-mix(in oklab, var(--brand) 30%, transparent)}}.selection\:bg-brand\/30::selection{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.selection\:bg-brand\/30::selection{background-color:color-mix(in oklab, var(--brand) 30%, transparent)}}.selection\:text-ink ::selection{color:var(--ink)}.selection\:text-ink::selection{color:var(--ink)}.placeholder\:text-ink-faint::placeholder{color:var(--ink-faint)}@media (hover:hover){.hover\:border-brand\/40:hover{border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.hover\:border-brand\/40:hover{border-color:color-mix(in oklab, var(--brand) 40%, transparent)}}.hover\:border-brand\/45:hover{border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.hover\:border-brand\/45:hover{border-color:color-mix(in oklab, var(--brand) 45%, transparent)}}.hover\:border-brand\/50:hover{border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.hover\:border-brand\/50:hover{border-color:color-mix(in oklab, var(--brand) 50%, transparent)}}.hover\:border-line-strong:hover{border-color:var(--line-strong)}.hover\:bg-brand\/12:hover{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-brand\/12:hover{background-color:color-mix(in oklab, var(--brand) 12%, transparent)}}.hover\:bg-brand\/15:hover{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-brand\/15:hover{background-color:color-mix(in oklab, var(--brand) 15%, transparent)}}.hover\:bg-brand\/20:hover{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-brand\/20:hover{background-color:color-mix(in oklab, var(--brand) 20%, transparent)}}.hover\:bg-brand\/40:hover{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-brand\/40:hover{background-color:color-mix(in oklab, var(--brand) 40%, transparent)}}.hover\:bg-brand\/90:hover{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-brand\/90:hover{background-color:color-mix(in oklab, var(--brand) 90%, transparent)}}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab, var(--destructive) 90%, transparent)}}.hover\:bg-ember\/10:hover{background-color:var(--ember)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-ember\/10:hover{background-color:color-mix(in oklab, var(--ember) 10%, transparent)}}.hover\:bg-ground\/40:hover{background-color:var(--ground)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-ground\/40:hover{background-color:color-mix(in oklab, var(--ground) 40%, transparent)}}.hover\:bg-surface:hover{background-color:var(--surface)}.hover\:bg-surface-2:hover{background-color:var(--surface-2)}.hover\:bg-surface\/60:hover{background-color:var(--surface)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface\/60:hover{background-color:color-mix(in oklab, var(--surface) 60%, transparent)}}.hover\:bg-surface\/70:hover{background-color:var(--surface)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface\/70:hover{background-color:color-mix(in oklab, var(--surface) 70%, transparent)}}.hover\:text-brand:hover{color:var(--brand)}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-ember:hover{color:var(--ember)}.hover\:text-ink:hover{color:var(--ink)}.hover\:text-ink-dim:hover{color:var(--ink-dim)}.hover\:text-magenta:hover{color:var(--magenta)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}}.focus\:bg-brand\/15:focus{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.focus\:bg-brand\/15:focus{background-color:color-mix(in oklab, var(--brand) 15%, transparent)}}.focus\:text-brand:focus{color:var(--brand)}.focus-visible\:border-0:focus-visible{border-style:var(--tw-border-style);border-width:0}.focus-visible\:border-brand\/55:focus-visible{border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:border-brand\/55:focus-visible{border-color:color-mix(in oklab, var(--brand) 55%, transparent)}}.focus-visible\:bg-ground\/80:focus-visible{background-color:var(--ground)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:bg-ground\/80:focus-visible{background-color:color-mix(in oklab, var(--ground) 80%, transparent)}}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-brand\/50:focus-visible{--tw-ring-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-brand\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--brand) 50%, transparent)}}.focus-visible\:ring-ring\/60:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/60:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 60%, transparent)}}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-ground:focus-visible{--tw-ring-offset-color:var(--ground)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}@media (hover:hover){.enabled\:hover\:scale-105:enabled:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.enabled\:hover\:border-line-strong:enabled:hover{border-color:var(--line-strong)}.enabled\:hover\:bg-brand\/20:enabled:hover{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.enabled\:hover\:bg-brand\/20:enabled:hover{background-color:color-mix(in oklab, var(--brand) 20%, transparent)}}.enabled\:hover\:text-ink:enabled:hover{color:var(--ink)}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-45:disabled{opacity:.45}.disabled\:opacity-50:disabled{opacity:.5}.has-\[textarea\:focus\]\:border-brand\/50:has(:is(textarea:focus)){border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.has-\[textarea\:focus\]\:border-brand\/50:has(:is(textarea:focus)){border-color:color-mix(in oklab, var(--brand) 50%, transparent)}}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing) * 2.5)}.has-\[\>svg\]\:px-3\.5:has(>svg){padding-inline:calc(var(--spacing) * 3.5)}.has-\[\>svg\]\:px-5:has(>svg){padding-inline:calc(var(--spacing) * 5)}.aria-invalid\:border-destructive[aria-invalid=true],.aria-invalid\:border-destructive\/60[aria-invalid=true]{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:border-destructive\/60[aria-invalid=true]{border-color:color-mix(in oklab, var(--destructive) 60%, transparent)}}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[side\=bottom\]\:slide-in-from-top-1[data-side=bottom]{--tw-enter-translate-y:calc(1*var(--spacing)*-1)}.data-\[side\=top\]\:slide-in-from-bottom-1[data-side=top]{--tw-enter-translate-y:calc(1*var(--spacing))}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}@media not all and (width>=19rem){.max-\[19rem\]\:hidden{display:none}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}.\[\&\>div\]\:block\!>div{display:block!important}.\[\&\>span\]\:min-w-0>span{min-width:0}.\[\&\>span\]\:truncate>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-2\.5>svg{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--radius:.75rem}[data-theme=ember]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ground:oklch(15.2% .016 52);--ground-2:oklch(18.3% .018 50);--surface:oklch(21.3% .019 48);--surface-2:oklch(25.3% .021 46);--ink:oklch(95.8% .012 70);--ink-dim:oklch(73.5% .018 60);--ink-faint:oklch(57.5% .02 55);--line:oklch(98% .01 60/.1);--line-strong:oklch(98% .01 60/.18);--brand:oklch(83% .13 195);--brand-deep:oklch(62% .12 200);--ember:oklch(73.5% .168 42);--magenta:oklch(70% .21 335);--lime:oklch(84% .18 150);--amber:oklch(84% .15 85);--danger:oklch(64.5% .205 25);--wash:oklch(98% .01 60);--grain:.03;--neon:55%;--glow:72%}[data-theme=midnight]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ground:oklch(15.8% .024 264);--ground-2:oklch(19.2% .028 264);--surface:oklch(22.8% .032 264);--surface-2:oklch(27.2% .036 264);--ink:oklch(95.8% .012 268);--ink-dim:oklch(74.2% .022 266);--ink-faint:oklch(58.5% .026 265);--line:oklch(97% .02 268/.11);--line-strong:oklch(97% .02 268/.19);--brand:oklch(79% .15 288);--brand-deep:oklch(60% .16 288);--ember:oklch(75% .16 22);--magenta:oklch(72% .2 330);--lime:oklch(85% .17 165);--amber:oklch(86% .14 82);--danger:oklch(66% .21 20);--wash:oklch(97% .02 268);--grain:.03;--neon:55%;--glow:72%}[data-theme=phosphor]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ground:oklch(14.2% .022 152);--ground-2:oklch(17.6% .026 152);--surface:oklch(20.8% .03 150);--surface-2:oklch(25% .034 150);--ink:oklch(94.5% .06 150);--ink-dim:oklch(75.5% .075 150);--ink-faint:oklch(60% .062 150);--line:oklch(90% .12 150/.14);--line-strong:oklch(90% .12 150/.24);--brand:oklch(86% .2 152);--brand-deep:oklch(66% .17 152);--ember:oklch(79% .16 48);--magenta:oklch(74% .2 338);--lime:oklch(90% .2 122);--amber:oklch(87% .16 92);--danger:oklch(66% .2 28);--wash:oklch(92% .1 150);--grain:.045;--neon:68%;--glow:85%}[data-theme=daylight]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ground:oklch(98.8% .004 88);--ground-2:oklch(96.8% .006 84);--surface:oklch(94.5% .008 80);--surface-2:oklch(90% .011 78);--ink:oklch(26.5% .018 58);--ink-dim:oklch(45.5% .02 56);--ink-faint:oklch(55.6% .02 55);--line:oklch(30% .02 58/.13);--line-strong:oklch(30% .02 58/.24);--brand:oklch(51.4% .12 214);--brand-deep:oklch(42% .11 218);--ember:oklch(55.2% .17 40);--magenta:oklch(53% .2 335);--lime:oklch(52% .14 148);--amber:oklch(56.2% .13 68);--danger:oklch(54% .2 26);--wash:oklch(32% .02 58);--grain:0;--neon:0%;--glow:26%}:root{--background:var(--ground);--foreground:var(--ink);--card:var(--ground-2);--card-foreground:var(--ink);--popover:var(--surface);--popover-foreground:var(--ink);--primary:var(--brand);--primary-foreground:var(--ground);--secondary:var(--surface);--secondary-foreground:var(--ink);--muted:var(--ground-2);--muted-foreground:var(--ink-dim);--accent:var(--surface-2);--accent-foreground:var(--ink);--destructive:var(--danger);--border:var(--line);--input:var(--line-strong);--ring:var(--brand)}@keyframes browsentic-countdown{0%{width:100%}to{width:0%}}@keyframes browsentic-token{0%{opacity:0;filter:blur(4px);transform:translateY(2px)}to{opacity:1;filter:blur();transform:none}}@keyframes browsentic-enter{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes browsentic-caret{0%,45%{opacity:1}55%,to{opacity:0}}@keyframes browsentic-think{0%,70%,to{opacity:.25;transform:translateY(0)}35%{opacity:1;transform:translateY(-2px)}}@keyframes browsentic-sweep{0%{transform:translate(-100%)}to{transform:translate(320%)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes 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));filter:blur(var(--tw-exit-blur,0))}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{$ as t,Q as n,T as r,Z as i,_ as a,dt as o,et as s,ft as c,h as l,ht as u,it as d,m as f,ot as p,p as m,pt as h,q as g,r as _,st as v,t as y,v as b,y as x}from"./globals-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{$ as t,Q as n,T as r,Z as i,_ as a,dt as o,et as s,ft as c,h as l,ht as u,it as d,m as f,ot as p,p as m,pt as h,q as g,r as _,st as v,t as y,v as b,y as x}from"./globals-RKxmETMG.js";var S=o(`panel-right-open`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}],[`path`,{d:`m10 15-3-3 3-3`,key:`1pgupc`}]]),C=e(h(),1),w=e(u(),1),T=t(),E={unpaired:`Pair this browser to start`,offline:`The daemon isn’t answering — start browsentic`,agent:`That agent cannot run — pick another below`};function D(){let e=x(),t=_(),[r,o]=(0,w.useState)(!1),u=e?.paired??!1;async function h(){let e=await c.windows.getCurrent();e.id!=null&&(await m(e.id),window.close())}let C=y({active:r&&(e?.connected??!1),onSubmit:e=>{o(!1),t.send(e),h()}}),D=n(e,{running:t.running,listening:r&&C.listening}),O=D.ready;function k(){O&&C.submitNow()}function A(){if(C.supported){if(r&&C.error){C.retry();return}o(e=>!e)}}let j=D.blocker?E[D.blocker]:C.error?C.error:r&&C.listening?C.interim||`Listening… speak, then pause`:t.running?`Working — open the side panel to watch`:C.supported?`Tap to talk, or type below`:`Type your instruction below`;return(0,T.jsxs)(`div`,{className:`flex w-[22rem] flex-col`,children:[(0,T.jsxs)(`header`,{className:`flex items-center gap-2 px-4 py-3`,children:[(0,T.jsx)(a,{className:`flex-1`}),(0,T.jsx)(i,{tone:D.tone,children:D.label})]}),u&&(0,T.jsxs)(`main`,{className:`dot-grid flex flex-col items-center gap-4 border-y border-line px-4 py-6`,children:[(0,T.jsxs)(`button`,{type:`button`,"aria-label":r?`Stop listening`:`Start listening`,onClick:A,disabled:!O||!C.supported,className:s(`relative flex size-20 items-center justify-center rounded-full border transition-all outline-none`,`focus-visible:ring-2 focus-visible:ring-ring/60 focus-visible:ring-offset-2 focus-visible:ring-offset-ground`,(!O||!C.supported)&&`opacity-40`,r?`border-magenta/60 bg-magenta/15 text-magenta`:`glow-brand border-brand/50 bg-brand/10 text-brand enabled:hover:scale-105 enabled:hover:bg-brand/20`),children:[r&&C.listening&&(0,T.jsx)(`span`,{className:`absolute inset-0 animate-ping rounded-full bg-magenta/25`}),r?(0,T.jsx)(v,{className:`size-8`}):(0,T.jsx)(p,{className:`size-8`})]}),(0,T.jsx)(`p`,{className:s(`min-h-8 text-center text-xs leading-relaxed`,C.error||!D.ready?`text-amber`:`text-ink-dim`),children:j}),(0,T.jsxs)(`form`,{className:`flex w-full gap-1.5`,onSubmit:e=>{e.preventDefault(),k()},children:[(0,T.jsx)(l,{value:C.input,onChange:e=>C.setInput(e.target.value),placeholder:`What should I do?`,"aria-label":`Instruction for Browsentic`,className:`h-8 text-xs`,disabled:!O}),(0,T.jsx)(g,{type:`submit`,size:`sm`,"aria-label":`Send`,disabled:!O||!C.input.trim(),children:(0,T.jsx)(d,{})})]}),(0,T.jsxs)(g,{variant:`outline`,size:`sm`,className:`w-full`,onClick:h,children:[(0,T.jsx)(S,{}),` Open the side panel`]})]}),(0,T.jsxs)(`div`,{className:`space-y-4 p-4`,children:[(0,T.jsx)(f,{}),(0,T.jsx)(b,{})]})]})}r(),C.createRoot(document.getElementById(`root`)).render((0,T.jsx)(w.StrictMode,{children:(0,T.jsx)(D,{})}));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{$ as t,A as n,B as r,C as i,D as a,E as o,F as s,G as c,H as l,I as u,J as d,K as f,L as p,M as m,N as h,O as g,P as ee,Q as te,R as _,S as v,T as y,U as b,V as x,W as S,X as C,Y as w,Z as T,_ as E,a as D,at as O,b as k,c as A,ct as j,d as ne,dt as M,et as N,f as re,ft as P,g as ie,h as F,ht as I,i as ae,it as L,j as oe,k as R,l as se,lt as z,m as ce,mt as le,n as ue,nt as de,o as fe,ot as pe,pt as me,q as B,r as he,rt as ge,s as V,st as _e,t as ve,tt as ye,u as be,ut as H,v as xe,w as Se,x as Ce,y as we,z as Te}from"./globals-BlPE2up2.js";var Ee=M(`arrow-down`,[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]),U=M(`book-open`,[[`path`,{d:`M12 5v16`,key:`1f6ucr`}],[`path`,{d:`M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z`,key:`1fyvmf`}]]),De=M(`braces`,[[`path`,{d:`M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1`,key:`ezmyqa`}],[`path`,{d:`M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1`,key:`e1hn23`}]]),Oe=M(`camera`,[[`path`,{d:`M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z`,key:`18u6gg`}],[`circle`,{cx:`12`,cy:`13`,r:`3`,key:`1vg3eu`}]]),ke=M(`circle`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),W=M(`clapperboard`,[[`path`,{d:`m12.296 3.464 3.02 3.956`,key:`qash78`}],[`path`,{d:`M20.2 6 3 11l-.9-2.4c-.3-1.1.3-2.2 1.3-2.5l13.5-4c1.1-.3 2.2.3 2.5 1.3z`,key:`1h7j8b`}],[`path`,{d:`M3 11h18v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`4lm6w1`}],[`path`,{d:`m6.18 5.276 3.1 3.899`,key:`zjj9t3`}]]),Ae=M(`code-xml`,[[`path`,{d:`m18 16 4-4-4-4`,key:`1inbqp`}],[`path`,{d:`m6 8-4 4 4 4`,key:`15zrgr`}],[`path`,{d:`m14.5 4-5 16`,key:`e7oirm`}]]),je=M(`compass`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z`,key:`9ktpf1`}]]),Me=M(`corner-down-left`,[[`path`,{d:`M20 4v7a4 4 0 0 1-4 4H4`,key:`6o5b7l`}],[`path`,{d:`m9 10-5 5 5 5`,key:`1kshq7`}]]),Ne=M(`cpu`,[[`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`}]]),Pe=M(`external-link`,[[`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`}]]),Fe=M(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),Ie=M(`file-text`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]),Le=M(`file-up`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M12 12v6`,key:`3ahymv`}],[`path`,{d:`m15 15-3-3-3 3`,key:`15xj92`}]]),Re=M(`folder-open`,[[`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`}]]),ze=M(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),Be=M(`highlighter`,[[`path`,{d:`m9 11-6 6v3h9l3-3`,key:`1a3l36`}],[`path`,{d:`m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4`,key:`14a9rk`}]]),Ve=M(`hourglass`,[[`path`,{d:`M5 22h14`,key:`ehvnwv`}],[`path`,{d:`M5 2h14`,key:`pdyrp9`}],[`path`,{d:`M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22`,key:`1d314k`}],[`path`,{d:`M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2`,key:`1vvvr6`}]]),He=M(`images`,[[`path`,{d:`m22 11-1.296-1.296a2.4 2.4 0 0 0-3.408 0L11 16`,key:`9kzy35`}],[`path`,{d:`M4 8a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2`,key:`1t0f0t`}],[`circle`,{cx:`13`,cy:`7`,r:`1`,fill:`currentColor`,key:`1obus6`}],[`rect`,{x:`8`,y:`2`,width:`14`,height:`14`,rx:`2`,key:`1gvhby`}]]),Ue=M(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),We=M(`key-round`,[[`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`}]]),Ge=M(`keyboard`,[[`path`,{d:`M10 8h.01`,key:`1r9ogq`}],[`path`,{d:`M12 12h.01`,key:`1mp3jc`}],[`path`,{d:`M14 8h.01`,key:`1primd`}],[`path`,{d:`M16 12h.01`,key:`1l6xoz`}],[`path`,{d:`M18 8h.01`,key:`emo2bl`}],[`path`,{d:`M6 8h.01`,key:`x9i8wu`}],[`path`,{d:`M7 16h10`,key:`wp8him`}],[`path`,{d:`M8 12h.01`,key:`czm47f`}],[`rect`,{width:`20`,height:`16`,x:`2`,y:`4`,rx:`2`,key:`18n3k1`}]]),Ke=M(`layers`,[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]]),qe=M(`list-checks`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`path`,{d:`m3 7 2 2 4-4`,key:`1obspn`}]]),Je=M(`lock`,[[`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`}]]),Ye=M(`messages-square`,[[`path`,{d:`M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z`,key:`1n2ejm`}],[`path`,{d:`M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1`,key:`1qfcsi`}]]),Xe=M(`mouse-pointer-click`,[[`path`,{d:`M14 4.1 12 6`,key:`ita8i4`}],[`path`,{d:`m5.1 8-2.9-.8`,key:`1go3kf`}],[`path`,{d:`m6 12-1.9 2`,key:`mnht97`}],[`path`,{d:`M7.2 2.2 8 5.1`,key:`1cfko1`}],[`path`,{d:`M9.037 9.69a.498.498 0 0 1 .653-.653l11 4.5a.5.5 0 0 1-.074.949l-4.349 1.041a1 1 0 0 0-.74.739l-1.04 4.35a.5.5 0 0 1-.95.074z`,key:`s0h3yz`}]]),Ze=M(`move-vertical`,[[`path`,{d:`M12 2v20`,key:`t6zp3m`}],[`path`,{d:`m8 18 4 4 4-4`,key:`bh5tu3`}],[`path`,{d:`m8 6 4-4 4 4`,key:`ybng9g`}]]),Qe=M(`panel-right-close`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}],[`path`,{d:`m8 9 3 3-3 3`,key:`12hl5m`}]]),$e=M(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),et=M(`pencil`,[[`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`}]]),tt=M(`play`,[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]),nt=M(`radar`,[[`path`,{d:`M19.07 4.93A10 10 0 0 0 6.99 3.34`,key:`z3du51`}],[`path`,{d:`M4 6h.01`,key:`oypzma`}],[`path`,{d:`M2.29 9.62A10 10 0 1 0 21.31 8.35`,key:`qzzz0`}],[`path`,{d:`M16.24 7.76A6 6 0 1 0 8.23 16.67`,key:`1yjesh`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}],[`path`,{d:`M17.99 11.66A6 6 0 0 1 15.77 16.67`,key:`1u2y91`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}],[`path`,{d:`m13.41 10.59 5.66-5.66`,key:`mhq4k0`}]]),rt=M(`rotate-ccw-clock`,[[`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`}]]),it=M(`scan-eye`,[[`path`,{d:`M3 7V5a2 2 0 0 1 2-2h2`,key:`aa7l1z`}],[`path`,{d:`M17 3h2a2 2 0 0 1 2 2v2`,key:`4qcy5o`}],[`path`,{d:`M21 17v2a2 2 0 0 1-2 2h-2`,key:`6vwrx8`}],[`path`,{d:`M7 21H5a2 2 0 0 1-2-2v-2`,key:`ioqczr`}],[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`path`,{d:`M18.944 12.33a1 1 0 0 0 0-.66 7.5 7.5 0 0 0-13.888 0 1 1 0 0 0 0 .66 7.5 7.5 0 0 0 13.888 0`,key:`11ak4c`}]]),at=M(`settings-2`,[[`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`}]]),ot=M(`shield-alert`,[[`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`}]]),st=M(`sliders-horizontal`,[[`path`,{d:`M10 5H3`,key:`1qgfaw`}],[`path`,{d:`M12 19H3`,key:`yhmn1j`}],[`path`,{d:`M14 3v4`,key:`1sua03`}],[`path`,{d:`M16 17v4`,key:`1q0r14`}],[`path`,{d:`M21 12h-9`,key:`1o4lsq`}],[`path`,{d:`M21 19h-5`,key:`1rlt1p`}],[`path`,{d:`M21 5h-7`,key:`1oszz2`}],[`path`,{d:`M8 10v4`,key:`tgpxqk`}],[`path`,{d:`M8 12H3`,key:`a7s4jb`}]]),ct=M(`sparkles`,[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}],[`path`,{d:`M20 2v4`,key:`1rf3ol`}],[`path`,{d:`M22 4h-4`,key:`gwowj6`}],[`circle`,{cx:`4`,cy:`20`,r:`2`,key:`6kqj1y`}]]),lt=M(`square-pen`,[[`path`,{d:`M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`,key:`1m0v6g`}],[`path`,{d:`M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z`,key:`ohrbg2`}]]),ut=M(`square-slash`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`line`,{x1:`9`,x2:`15`,y1:`15`,y2:`9`,key:`1dfufj`}]]),dt=M(`square`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]),ft=M(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),pt=M(`text-cursor-input`,[[`path`,{d:`M12 20h-1a2 2 0 0 1-2-2 2 2 0 0 1-2 2H6`,key:`1528k5`}],[`path`,{d:`M13 8h7a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-7`,key:`13ksps`}],[`path`,{d:`M5 16H4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2h1`,key:`1n9rhb`}],[`path`,{d:`M6 4h1a2 2 0 0 1 2 2 2 2 0 0 1 2-2h1`,key:`1mj8rg`}],[`path`,{d:`M9 6v12`,key:`velyjx`}]]),mt=M(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),ht=M(`type`,[[`path`,{d:`M12 4v16`,key:`1654pz`}],[`path`,{d:`M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2`,key:`e0r10z`}],[`path`,{d:`M9 20h6`,key:`s66wpe`}]]),gt=M(`unplug`,[[`path`,{d:`m19 5 3-3`,key:`yk6iyv`}],[`path`,{d:`m2 22 3-3`,key:`19mgm9`}],[`path`,{d:`M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z`,key:`goz73y`}],[`path`,{d:`M7.5 13.5 10 11`,key:`7xgeeb`}],[`path`,{d:`M10.5 16.5 13 14`,key:`10btkg`}],[`path`,{d:`m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z`,key:`1snsnr`}]]),_t=M(`upload`,[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]),vt=M(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),G=M(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),yt=M(`zap`,[[`path`,{d:`M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z`,key:`1v7up4`}]]),K=e(I(),1),bt=e(me(),1),xt=[`general`,`site-exploration`],St=/^[a-z0-9][a-z0-9-]{0,47}$/,Ct=32*1024,wt=/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/,Tt=300,Et=3,Dt=60;function Ot(e){let t=/^---[ \t]*\r?\n([\s\S]*?)\r?\n---[ \t]*\r?\n?/.exec(e);if(!t)return{fields:{},body:e};let n={};for(let e of t[1].split(/\r?\n/)){let t=e.indexOf(`:`);t>0&&(n[e.slice(0,t).trim()]=e.slice(t+1).trim())}return{fields:n,body:e.slice(t[0].length)}}function kt(e){return e?e.replace(/^\[|\]$/g,``).split(`,`).map(e=>e.trim().replace(/^['"]|['"]$/g,``)).filter(Boolean):[]}function At(e){return e?.trim()===`site-exploration`?`site-exploration`:`general`}function jt(e){return e.replace(/[\r\n]+/g,` `).replace(/\s+/g,` `).trim()}function Mt(e){try{return new URL(e).hostname.toLowerCase()}catch{return``}}function Nt(e){let t=e.trim().toLowerCase();return t?(t.includes(`://`)?Mt(t):t).replace(/^\/+|\/+$/g,``).split(`/`)[0].split(`:`)[0].replace(/^\.+|\.+$/g,``):``}function Pt(e){return e===`localhost`||e.length<=253&&wt.test(e)}function Ft(e,t){return It(e,t).length>0}function It(e,t){let n=e.toLowerCase();return n?t.filter(e=>n===e||n.endsWith(`.${e}`)).sort((e,t)=>t.length-e.length):[]}function Lt(e,t={}){let n=e.name.trim().toLowerCase();if(!n)return q(`Give the skill a name.`);if(!St.test(n))return q(`Names use lowercase letters, digits and hyphens only, starting with a letter or digit (max 48).`);if(t.reservedNames?.some(e=>e.toLowerCase()===n))return q(`"${n}" is the name of a built-in skill. Pick another.`);let r=jt(e.description).slice(0,Tt),i=e.category;if(!xt.includes(i))return q(`Unknown category "${String(i)}".`);let a=Bt(e.domains.map(Nt).filter(Boolean));if(i===`site-exploration`){if(!a.length)return q(`A site-exploration skill needs at least one domain, like acme.com.`);if(a.length>20)return q(`At most 20 domains.`);for(let e of a){if(e.includes(`*`))return q(`"${e}" — wildcards are not supported; subdomains match automatically.`);if(!Pt(e))return q(`"${e}" is not a domain. Use something like acme.com.`)}}let o=i===`site-exploration`?[]:Bt(e.triggers.map(e=>jt(e).toLowerCase()).filter(Boolean));if(o.length>30)return q(`At most 30 triggers.`);for(let e of o)if(e.length<Et||e.length>Dt)return q(`Trigger "${e}" must be ${Et}–${Dt} characters.`);let s=Ot(e.body.replace(/\r\n/g,`
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{$ as t,A as n,B as r,C as i,D as a,E as o,F as s,G as c,H as l,I as u,J as d,K as f,L as p,M as m,N as h,O as g,P as ee,Q as te,R as _,S as v,T as y,U as b,V as x,W as S,X as C,Y as w,Z as T,_ as E,a as D,at as O,b as k,c as A,ct as j,d as ne,dt as M,et as N,f as re,ft as P,g as ie,h as F,ht as I,i as ae,it as L,j as oe,k as R,l as se,lt as z,m as ce,mt as le,n as ue,nt as de,o as fe,ot as pe,pt as me,q as B,r as he,rt as ge,s as V,st as _e,t as ve,tt as ye,u as be,ut as H,v as xe,w as Se,x as Ce,y as we,z as Te}from"./globals-RKxmETMG.js";var Ee=M(`arrow-down`,[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]),U=M(`book-open`,[[`path`,{d:`M12 5v16`,key:`1f6ucr`}],[`path`,{d:`M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z`,key:`1fyvmf`}]]),De=M(`braces`,[[`path`,{d:`M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1`,key:`ezmyqa`}],[`path`,{d:`M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1`,key:`e1hn23`}]]),Oe=M(`camera`,[[`path`,{d:`M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z`,key:`18u6gg`}],[`circle`,{cx:`12`,cy:`13`,r:`3`,key:`1vg3eu`}]]),ke=M(`circle`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),W=M(`clapperboard`,[[`path`,{d:`m12.296 3.464 3.02 3.956`,key:`qash78`}],[`path`,{d:`M20.2 6 3 11l-.9-2.4c-.3-1.1.3-2.2 1.3-2.5l13.5-4c1.1-.3 2.2.3 2.5 1.3z`,key:`1h7j8b`}],[`path`,{d:`M3 11h18v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`4lm6w1`}],[`path`,{d:`m6.18 5.276 3.1 3.899`,key:`zjj9t3`}]]),Ae=M(`code-xml`,[[`path`,{d:`m18 16 4-4-4-4`,key:`1inbqp`}],[`path`,{d:`m6 8-4 4 4 4`,key:`15zrgr`}],[`path`,{d:`m14.5 4-5 16`,key:`e7oirm`}]]),je=M(`compass`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z`,key:`9ktpf1`}]]),Me=M(`corner-down-left`,[[`path`,{d:`M20 4v7a4 4 0 0 1-4 4H4`,key:`6o5b7l`}],[`path`,{d:`m9 10-5 5 5 5`,key:`1kshq7`}]]),Ne=M(`cpu`,[[`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`}]]),Pe=M(`external-link`,[[`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`}]]),Fe=M(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),Ie=M(`file-text`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]),Le=M(`file-up`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M12 12v6`,key:`3ahymv`}],[`path`,{d:`m15 15-3-3-3 3`,key:`15xj92`}]]),Re=M(`folder-open`,[[`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`}]]),ze=M(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),Be=M(`highlighter`,[[`path`,{d:`m9 11-6 6v3h9l3-3`,key:`1a3l36`}],[`path`,{d:`m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4`,key:`14a9rk`}]]),Ve=M(`hourglass`,[[`path`,{d:`M5 22h14`,key:`ehvnwv`}],[`path`,{d:`M5 2h14`,key:`pdyrp9`}],[`path`,{d:`M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22`,key:`1d314k`}],[`path`,{d:`M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2`,key:`1vvvr6`}]]),He=M(`images`,[[`path`,{d:`m22 11-1.296-1.296a2.4 2.4 0 0 0-3.408 0L11 16`,key:`9kzy35`}],[`path`,{d:`M4 8a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2`,key:`1t0f0t`}],[`circle`,{cx:`13`,cy:`7`,r:`1`,fill:`currentColor`,key:`1obus6`}],[`rect`,{x:`8`,y:`2`,width:`14`,height:`14`,rx:`2`,key:`1gvhby`}]]),Ue=M(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),We=M(`key-round`,[[`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`}]]),Ge=M(`keyboard`,[[`path`,{d:`M10 8h.01`,key:`1r9ogq`}],[`path`,{d:`M12 12h.01`,key:`1mp3jc`}],[`path`,{d:`M14 8h.01`,key:`1primd`}],[`path`,{d:`M16 12h.01`,key:`1l6xoz`}],[`path`,{d:`M18 8h.01`,key:`emo2bl`}],[`path`,{d:`M6 8h.01`,key:`x9i8wu`}],[`path`,{d:`M7 16h10`,key:`wp8him`}],[`path`,{d:`M8 12h.01`,key:`czm47f`}],[`rect`,{width:`20`,height:`16`,x:`2`,y:`4`,rx:`2`,key:`18n3k1`}]]),Ke=M(`layers`,[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]]),qe=M(`list-checks`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`path`,{d:`m3 7 2 2 4-4`,key:`1obspn`}]]),Je=M(`lock`,[[`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`}]]),Ye=M(`messages-square`,[[`path`,{d:`M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z`,key:`1n2ejm`}],[`path`,{d:`M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1`,key:`1qfcsi`}]]),Xe=M(`mouse-pointer-click`,[[`path`,{d:`M14 4.1 12 6`,key:`ita8i4`}],[`path`,{d:`m5.1 8-2.9-.8`,key:`1go3kf`}],[`path`,{d:`m6 12-1.9 2`,key:`mnht97`}],[`path`,{d:`M7.2 2.2 8 5.1`,key:`1cfko1`}],[`path`,{d:`M9.037 9.69a.498.498 0 0 1 .653-.653l11 4.5a.5.5 0 0 1-.074.949l-4.349 1.041a1 1 0 0 0-.74.739l-1.04 4.35a.5.5 0 0 1-.95.074z`,key:`s0h3yz`}]]),Ze=M(`move-vertical`,[[`path`,{d:`M12 2v20`,key:`t6zp3m`}],[`path`,{d:`m8 18 4 4 4-4`,key:`bh5tu3`}],[`path`,{d:`m8 6 4-4 4 4`,key:`ybng9g`}]]),Qe=M(`panel-right-close`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}],[`path`,{d:`m8 9 3 3-3 3`,key:`12hl5m`}]]),$e=M(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),et=M(`pencil`,[[`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`}]]),tt=M(`play`,[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]),nt=M(`radar`,[[`path`,{d:`M19.07 4.93A10 10 0 0 0 6.99 3.34`,key:`z3du51`}],[`path`,{d:`M4 6h.01`,key:`oypzma`}],[`path`,{d:`M2.29 9.62A10 10 0 1 0 21.31 8.35`,key:`qzzz0`}],[`path`,{d:`M16.24 7.76A6 6 0 1 0 8.23 16.67`,key:`1yjesh`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}],[`path`,{d:`M17.99 11.66A6 6 0 0 1 15.77 16.67`,key:`1u2y91`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}],[`path`,{d:`m13.41 10.59 5.66-5.66`,key:`mhq4k0`}]]),rt=M(`rotate-ccw-clock`,[[`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`}]]),it=M(`scan-eye`,[[`path`,{d:`M3 7V5a2 2 0 0 1 2-2h2`,key:`aa7l1z`}],[`path`,{d:`M17 3h2a2 2 0 0 1 2 2v2`,key:`4qcy5o`}],[`path`,{d:`M21 17v2a2 2 0 0 1-2 2h-2`,key:`6vwrx8`}],[`path`,{d:`M7 21H5a2 2 0 0 1-2-2v-2`,key:`ioqczr`}],[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`path`,{d:`M18.944 12.33a1 1 0 0 0 0-.66 7.5 7.5 0 0 0-13.888 0 1 1 0 0 0 0 .66 7.5 7.5 0 0 0 13.888 0`,key:`11ak4c`}]]),at=M(`settings-2`,[[`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`}]]),ot=M(`shield-alert`,[[`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`}]]),st=M(`sliders-horizontal`,[[`path`,{d:`M10 5H3`,key:`1qgfaw`}],[`path`,{d:`M12 19H3`,key:`yhmn1j`}],[`path`,{d:`M14 3v4`,key:`1sua03`}],[`path`,{d:`M16 17v4`,key:`1q0r14`}],[`path`,{d:`M21 12h-9`,key:`1o4lsq`}],[`path`,{d:`M21 19h-5`,key:`1rlt1p`}],[`path`,{d:`M21 5h-7`,key:`1oszz2`}],[`path`,{d:`M8 10v4`,key:`tgpxqk`}],[`path`,{d:`M8 12H3`,key:`a7s4jb`}]]),ct=M(`sparkles`,[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}],[`path`,{d:`M20 2v4`,key:`1rf3ol`}],[`path`,{d:`M22 4h-4`,key:`gwowj6`}],[`circle`,{cx:`4`,cy:`20`,r:`2`,key:`6kqj1y`}]]),lt=M(`square-pen`,[[`path`,{d:`M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`,key:`1m0v6g`}],[`path`,{d:`M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z`,key:`ohrbg2`}]]),ut=M(`square-slash`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`line`,{x1:`9`,x2:`15`,y1:`15`,y2:`9`,key:`1dfufj`}]]),dt=M(`square`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]),ft=M(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),pt=M(`text-cursor-input`,[[`path`,{d:`M12 20h-1a2 2 0 0 1-2-2 2 2 0 0 1-2 2H6`,key:`1528k5`}],[`path`,{d:`M13 8h7a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-7`,key:`13ksps`}],[`path`,{d:`M5 16H4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2h1`,key:`1n9rhb`}],[`path`,{d:`M6 4h1a2 2 0 0 1 2 2 2 2 0 0 1 2-2h1`,key:`1mj8rg`}],[`path`,{d:`M9 6v12`,key:`velyjx`}]]),mt=M(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),ht=M(`type`,[[`path`,{d:`M12 4v16`,key:`1654pz`}],[`path`,{d:`M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2`,key:`e0r10z`}],[`path`,{d:`M9 20h6`,key:`s66wpe`}]]),gt=M(`unplug`,[[`path`,{d:`m19 5 3-3`,key:`yk6iyv`}],[`path`,{d:`m2 22 3-3`,key:`19mgm9`}],[`path`,{d:`M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z`,key:`goz73y`}],[`path`,{d:`M7.5 13.5 10 11`,key:`7xgeeb`}],[`path`,{d:`M10.5 16.5 13 14`,key:`10btkg`}],[`path`,{d:`m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z`,key:`1snsnr`}]]),_t=M(`upload`,[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]),vt=M(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),G=M(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),yt=M(`zap`,[[`path`,{d:`M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z`,key:`1v7up4`}]]),K=e(I(),1),bt=e(me(),1),xt=[`general`,`site-exploration`],St=/^[a-z0-9][a-z0-9-]{0,47}$/,Ct=32*1024,wt=/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/,Tt=300,Et=3,Dt=60;function Ot(e){let t=/^---[ \t]*\r?\n([\s\S]*?)\r?\n---[ \t]*\r?\n?/.exec(e);if(!t)return{fields:{},body:e};let n={};for(let e of t[1].split(/\r?\n/)){let t=e.indexOf(`:`);t>0&&(n[e.slice(0,t).trim()]=e.slice(t+1).trim())}return{fields:n,body:e.slice(t[0].length)}}function kt(e){return e?e.replace(/^\[|\]$/g,``).split(`,`).map(e=>e.trim().replace(/^['"]|['"]$/g,``)).filter(Boolean):[]}function At(e){return e?.trim()===`site-exploration`?`site-exploration`:`general`}function jt(e){return e.replace(/[\r\n]+/g,` `).replace(/\s+/g,` `).trim()}function Mt(e){try{return new URL(e).hostname.toLowerCase()}catch{return``}}function Nt(e){let t=e.trim().toLowerCase();return t?(t.includes(`://`)?Mt(t):t).replace(/^\/+|\/+$/g,``).split(`/`)[0].split(`:`)[0].replace(/^\.+|\.+$/g,``):``}function Pt(e){return e===`localhost`||e.length<=253&&wt.test(e)}function Ft(e,t){return It(e,t).length>0}function It(e,t){let n=e.toLowerCase();return n?t.filter(e=>n===e||n.endsWith(`.${e}`)).sort((e,t)=>t.length-e.length):[]}function Lt(e,t={}){let n=e.name.trim().toLowerCase();if(!n)return q(`Give the skill a name.`);if(!St.test(n))return q(`Names use lowercase letters, digits and hyphens only, starting with a letter or digit (max 48).`);if(t.reservedNames?.some(e=>e.toLowerCase()===n))return q(`"${n}" is the name of a built-in skill. Pick another.`);let r=jt(e.description).slice(0,Tt),i=e.category;if(!xt.includes(i))return q(`Unknown category "${String(i)}".`);let a=Bt(e.domains.map(Nt).filter(Boolean));if(i===`site-exploration`){if(!a.length)return q(`A site-exploration skill needs at least one domain, like acme.com.`);if(a.length>20)return q(`At most 20 domains.`);for(let e of a){if(e.includes(`*`))return q(`"${e}" — wildcards are not supported; subdomains match automatically.`);if(!Pt(e))return q(`"${e}" is not a domain. Use something like acme.com.`)}}let o=i===`site-exploration`?[]:Bt(e.triggers.map(e=>jt(e).toLowerCase()).filter(Boolean));if(o.length>30)return q(`At most 30 triggers.`);for(let e of o)if(e.length<Et||e.length>Dt)return q(`Trigger "${e}" must be ${Et}–${Dt} characters.`);let s=Ot(e.body.replace(/\r\n/g,`
|
|
2
2
|
`)).body.trim();return s?Rt(s)>32768?q(`The skill is larger than ${Math.round(Ct/1024)} KB. Trim it down.`):{ok:!0,draft:{name:n,description:r,category:i,domains:a,triggers:o,body:s}}:q(`The skill has no instructions — add some markdown below the front matter.`)}function Rt(e){let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);r<128?t+=1:r<2048?t+=2:r>=55296&&r<=56319?(t+=4,n++):t+=3}return t}function zt(e,t){let{fields:n,body:r}=Ot(e.replace(/\r\n/g,`
|
|
3
3
|
`)),i=Nt(t.replace(/\.(md|markdown)$/i,``)).replace(/[^a-z0-9-]+/g,`-`).replace(/^-+|-+$/g,``);return{name:(n.name||i).toLowerCase(),description:n.description??``,category:At(n.category),domains:kt(n.domains).map(Nt).filter(Boolean),triggers:kt(n.triggers).map(e=>e.toLowerCase()),body:r.trim()}}function Bt(e){return[...new Set(e)]}function q(e){return{ok:!1,message:e}}var Vt=48;function Ht(e){let t;try{t=new URL(e)}catch{return null}if(t.protocol!==`http:`&&t.protocol!==`https:`)return null;let n=t.hostname.toLowerCase().replace(/^www\./,``);if(!n)return null;let[r=``]=t.pathname.split(`/`).filter(Boolean);return{host:n,segment:Gt(r)||`root`}}function Ut(e,t){return`${e.host}:${e.segment}:${t}`}function Wt(e,t){let n=Ht(t);return!!n&&n.host===e.host&&n.segment===e.segment}function Gt(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,Vt).replace(/-+$/,``)}var Kt=`/context`,qt=`/remove-tools`,Jt=`Review the tools you saved, and delete any you are done with.`,Yt=e=>e.trim().toLowerCase()===qt,Xt=`See what this conversation carries — messages, files, recordings, tabs.`,J=t(),Zt={tool:0,command:1,site:2,general:3,agent:4,"other-site":5};function Qt(e,t,n,r=[]){let i=Mt(t),a=[{key:`command:context`,group:`command`,name:`context`,description:Xt,command:Kt}];r.length&&a.push({key:`command:remove-tools`,group:`command`,name:`remove-tools`,description:Jt,command:qt});for(let e of r)Wt(e.scope,t)&&a.push({key:`tool:${e.id}`,group:`tool`,name:e.name,description:e.description,savedToolId:e.id});for(let t of e?.skills??[]){let e=t.category===`site-exploration`?i&&Ft(i,t.domains)?`site`:`other-site`:`general`;a.push({key:`${e}:${t.name}`,group:e,name:t.name,description:t.description})}for(let t of e?.agentSkills??[])a.push({key:`agent:${t.id}`,group:`agent`,name:t.name,description:t.description,agentSkillId:t.id});let o=n.trim().toLowerCase();return(o?a.filter(e=>e.name.toLowerCase().includes(o)||e.description.toLowerCase().includes(o)):a).sort((e,t)=>Zt[e.group]-Zt[t.group]||e.name.localeCompare(t.name))}function $t({items:e,agent:t,highlight:n,onHover:r,onSelect:i}){let a={tool:`Your tools`,command:`Commands`,site:`On this site`,general:`Browsentic skills`,agent:`${t?ye[t].label:`Agent`} skills`,"other-site":`Other sites`};return(0,J.jsx)(`div`,{role:`listbox`,"aria-label":`Skills and commands`,className:`enters absolute inset-x-0 bottom-full z-20 mb-2 max-h-64 overflow-y-auto rounded-xl border border-line bg-surface shadow-lg`,children:e.length===0?(0,J.jsx)(`p`,{className:`px-3 py-2.5 text-[11px] text-ink-faint`,children:`Nothing matches — keep typing, or press Escape.`}):e.map((t,o)=>(0,J.jsxs)(`div`,{children:[(o===0||e[o-1].group!==t.group)&&(0,J.jsx)(`p`,{className:`px-3 pt-2 pb-1 font-mono text-[10px] tracking-[0.14em] text-ink-faint uppercase`,children:a[t.group]}),(0,J.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":o===n,onMouseEnter:()=>r(o),onMouseDown:e=>{e.preventDefault(),i(t)},className:N(`flex w-full items-start gap-2 px-3 py-1.5 text-left transition-colors`,o===n?`bg-brand/12`:`hover:bg-ground/40`),children:[t.group===`tool`?(0,J.jsx)(yt,{className:`mt-0.5 size-3 shrink-0 text-lime`}):t.group===`command`?(0,J.jsx)(ut,{className:`mt-0.5 size-3 shrink-0 text-amber`}):t.group===`agent`?(0,J.jsx)(ct,{className:`mt-0.5 size-3 shrink-0 text-brand`}):t.group===`general`?(0,J.jsx)(U,{className:`mt-0.5 size-3 shrink-0 text-ink-faint`}):(0,J.jsx)(ze,{className:`mt-0.5 size-3 shrink-0 text-ink-faint`}),(0,J.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,J.jsx)(`span`,{className:`block truncate text-xs font-medium text-ink`,children:t.name}),t.description&&(0,J.jsx)(`span`,{className:`block truncate text-[11px] text-ink-dim`,children:t.description})]})]})]},t.key))})}function en({className:e,...t}){return(0,J.jsx)(`textarea`,{"data-slot":`textarea`,className:N(`field-sizing-content flex min-h-16 w-full rounded-lg border border-line-strong bg-ground/60 px-3 py-2 text-sm text-ink outline-none transition-colors`,`placeholder:text-ink-faint selection:bg-brand/30 selection:text-ink`,`focus-visible:border-brand/55`,`disabled:cursor-not-allowed disabled:opacity-45`,e),...t})}async function tn(){let[e]=await P.tabs.query({active:!0,currentWindow:!0});if(e?.id==null)return{error:`No active tab to point at`};let t=await k({id:e.id,windowId:e.windowId});if(!t.ok)return t.error.code===`PICK_CANCELLED`?{cancelled:!0}:{error:t.error.message};let{element:n,content:r,truncated:i,url:a,title:o,shot:s}=t.data;return{focus:{tag:n.tag,role:n.role,selector:n.selector,label:n.text,content:r,truncated:i,url:a,title:o,shot:s?.dataUrl}}}var nn=e=>e.label?.trim()||e.role||e.tag;function rn({voice:e,voiceEnabled:t,connected:n,running:r,files:i,attachError:a,catalog:o,tabUrl:s,attachedSkill:c,focus:l,picking:u,liveTools:d,onToggleLiveTools:f,onAttachSkill:p,onCommand:m,tools:h,onRunTool:g,onSend:ee,onStop:te,onToggleVoice:_,onPick:v,onClearFocus:y,onAttachPage:b,onAttachFile:x,onRemoveFile:S}){let C=(0,K.useRef)(null),w=(0,K.useRef)(null),T=e.input.startsWith(`/`)?e.input.slice(1):null,E=T!==null&&n,[D,O]=(0,K.useState)(0),k=(0,K.useMemo)(()=>E?Qt(o,s,T??``,h):[],[E,o,s,T,h]);(0,K.useEffect)(()=>O(0),[T]);let{cancelPending:A}=e;(0,K.useEffect)(()=>{E&&A()},[E,A]);function j(t){t.savedToolId?(e.setInput(``),g(t.savedToolId)):t.command?(e.setInput(``),m(t.command)):t.agentSkillId?(p({id:t.agentSkillId,name:t.name}),e.setInput(``)):e.setInput(`@${t.name} `),w.current?.focus()}function ne(e){e.target.closest(`button, textarea`)||w.current?.focus()}return(0,J.jsxs)(J.Fragment,{children:[a&&(0,J.jsx)(`p`,{className:`mb-2 rounded-lg border border-amber/40 bg-amber/10 px-2.5 py-1.5 text-[11px] text-amber`,children:a}),(0,J.jsx)(an,{focus:l,picking:u,onClear:y}),c&&(0,J.jsxs)(`div`,{className:`mb-2 flex items-center gap-2 rounded-xl border border-brand/35 bg-brand/8 px-2.5 py-1.5 text-xs`,children:[(0,J.jsx)(ct,{className:`size-3.5 shrink-0 text-brand`}),(0,J.jsxs)(`span`,{className:`min-w-0 flex-1 truncate text-ink`,children:[`Skill attached: `,(0,J.jsx)(`span`,{className:`font-medium`,children:c.name})]}),(0,J.jsx)(`button`,{type:`button`,onClick:()=>p(null),"aria-label":`Detach ${c.name}`,className:`shrink-0 rounded-full p-1 text-ink-faint transition-colors hover:bg-surface hover:text-ink`,children:(0,J.jsx)(G,{className:`size-3`})})]}),d&&(0,J.jsxs)(`div`,{className:`enters mb-2 flex items-center gap-2 rounded-xl border border-ember/40 bg-ember/8 px-2.5 py-1.5 text-xs`,children:[(0,J.jsx)(Ae,{className:`size-3.5 shrink-0 text-ember`}),(0,J.jsxs)(`span`,{className:`min-w-0 flex-1 text-ink-dim`,children:[(0,J.jsx)(`span`,{className:`font-medium text-ink`,children:`Live tool on`}),` — the agent may write a script for this page. You approve the code first.`]}),(0,J.jsx)(`button`,{type:`button`,onClick:f,"aria-label":`Turn live tools off`,className:`shrink-0 rounded-full p-1 text-ink-faint transition-colors hover:bg-surface hover:text-ink`,children:(0,J.jsx)(G,{className:`size-3`})})]}),(0,J.jsx)(sn,{files:i,onRemove:S}),(0,J.jsx)(on,{voice:e,voiceEnabled:t}),(0,J.jsxs)(`div`,{onClick:ne,className:N(`panel-card relative flex flex-col rounded-2xl transition-colors has-[textarea:focus]:border-brand/50`,n&&`cursor-text`),children:[E&&(0,J.jsx)($t,{items:k,agent:o?.agent,highlight:D,onHover:O,onSelect:j}),(0,J.jsx)(en,{ref:w,value:e.input,onChange:t=>e.setInput(t.target.value),onKeyDown:t=>{if(E){if(t.key===`Escape`){t.preventDefault(),e.setInput(``);return}if(k.length>0){if(t.key===`ArrowDown`){t.preventDefault(),O(e=>(e+1)%k.length);return}if(t.key===`ArrowUp`){t.preventDefault(),O(e=>(e-1+k.length)%k.length);return}if(t.key===`Enter`||t.key===`Tab`){t.preventDefault(),j(k[Math.min(D,k.length-1)]);return}}}t.key===`Enter`&&!t.shiftKey&&(t.preventDefault(),ee())},placeholder:n?`Tell me what to do on this page…`:`Pair the browser to get started`,disabled:!n,rows:2,className:`max-h-48 min-h-14 resize-none rounded-none border-0 bg-transparent px-3 pt-2.5 pb-0 focus-visible:border-0`}),(0,J.jsxs)(`div`,{className:`flex items-center gap-0.5 px-1.5 pb-1.5`,children:[(0,J.jsx)(B,{variant:l||u?`subtle`:`ghost`,size:`icon-sm`,title:`A-Eye — point at an element on the page and send it with your next message`,"aria-label":`Point at an element with A-Eye`,onClick:v,disabled:!n||u,className:N(l||u?`text-ember`:void 0),children:(0,J.jsx)(it,{className:N(`size-3.5`,u&&`animate-pulse`)})}),(0,J.jsx)(B,{variant:`ghost`,size:`icon-sm`,title:`Add this page’s title, URL and selection to the message`,"aria-label":`Attach page context`,onClick:b,disabled:!n,children:(0,J.jsx)($e,{className:`size-3.5`})}),(0,J.jsx)(B,{variant:`ghost`,size:`icon-sm`,title:`Attach a file for the agent to read`,"aria-label":`Attach a file`,onClick:()=>C.current?.click(),disabled:!n,children:(0,J.jsx)(Le,{className:`size-3.5`})}),(0,J.jsx)(B,{variant:d?`subtle`:`ghost`,size:`icon-sm`,role:`switch`,"aria-checked":d,"aria-label":d?`Turn live tools off`:`Turn live tools on`,title:d?`Live tool is on — the agent may write a small script for this page and ask you to approve it. Turn it off to keep to the built-in tools.`:`Live tool — let the agent write a small script for repetitive work or for something no tool covers. You review and approve the code before it runs.`,onClick:f,disabled:!n,className:N(d?`text-ember`:void 0),children:(0,J.jsx)(Ae,{className:`size-3.5`})}),(0,J.jsxs)(B,{variant:t&&!e.error?`subtle`:`ghost`,size:`icon-sm`,"aria-label":t?`Turn voice off`:`Turn voice on`,title:e.supported?`Speak instead of typing`:`Voice input is not available in this browser`,onClick:_,disabled:!e.supported,className:`relative`,children:[t&&e.listening&&(0,J.jsx)(`span`,{className:`absolute inset-0 animate-ping rounded-full bg-magenta/30`}),t&&!e.error?(0,J.jsx)(pe,{className:`size-3.5`}):(0,J.jsx)(_e,{className:`size-3.5`})]}),r?(0,J.jsx)(B,{size:`icon-sm`,variant:`destructive`,className:`ml-auto`,"aria-label":`Stop the agent`,onClick:te,children:(0,J.jsx)(dt,{className:`size-3 fill-current`})}):(0,J.jsx)(B,{size:`icon-sm`,className:`ml-auto`,"aria-label":`Send message`,onClick:ee,disabled:!e.input.trim()||!n,children:(0,J.jsx)(L,{className:`size-3.5`})})]})]}),(0,J.jsx)(`input`,{ref:C,type:`file`,className:`hidden`,onChange:e=>{let t=e.target.files?.[0];e.target.value=``,t&&x(t)}}),(0,J.jsx)(`p`,{className:`mt-2 text-center font-mono text-[10px] text-ink-faint`,children:t&&e.supported?`Speak and pause to send · Enter sends now`:`Enter to send · Shift + Enter for a new line · / for skills and commands`})]})}function an({focus:e,picking:t,onClear:n}){return!t&&!e?null:(0,J.jsxs)(`div`,{className:`enters mb-2 flex items-center gap-2 rounded-xl border border-ember/40 bg-ember/8 px-2.5 py-1.5 text-xs`,children:[(0,J.jsx)(it,{className:N(`size-3.5 shrink-0 text-ember`,t&&`animate-pulse`)}),t||!e?(0,J.jsxs)(`span`,{className:`min-w-0 flex-1 truncate text-ink-dim`,children:[`Point at anything on the page — `,(0,J.jsx)(`span`,{className:`text-ink-faint`,children:`Esc cancels`})]}):(0,J.jsxs)(J.Fragment,{children:[e.shot&&(0,J.jsx)(`img`,{src:e.shot,alt:`The element you picked`,className:`max-h-7 max-w-14 shrink-0 rounded border border-ember/40 object-cover`}),(0,J.jsxs)(`span`,{className:`min-w-0 flex-1 truncate text-ink`,children:[`A-Eye: `,(0,J.jsx)(`span`,{className:`font-medium`,children:nn(e)})]}),(0,J.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] text-ink-faint`,children:e.tag}),(0,J.jsx)(`button`,{type:`button`,onClick:n,"aria-label":`Drop the A-Eye selection`,className:`shrink-0 rounded-full p-1 text-ink-faint transition-colors hover:bg-surface hover:text-ink`,children:(0,J.jsx)(G,{className:`size-3`})})]})]})}function on({voice:e,voiceEnabled:t}){return t&&e.error?(0,J.jsx)(`p`,{className:`mb-2 rounded-lg border border-amber/40 bg-amber/10 px-2.5 py-1.5 text-[11px] text-amber`,children:e.error}):e.pendingSend?(0,J.jsxs)(`div`,{className:`mb-2 flex items-center gap-2 rounded-lg bg-brand/10 px-2.5 py-1.5 text-[11px] text-brand`,children:[(0,J.jsx)(`span`,{className:`relative flex-1 overflow-hidden rounded-full bg-brand/20`,children:(0,J.jsx)(`span`,{className:`block h-1 rounded-full bg-brand`,style:{animation:`browsentic-countdown ${e.autoSendMs}ms linear forwards`}})}),(0,J.jsx)(`span`,{className:`shrink-0`,children:`Sending…`}),(0,J.jsxs)(`button`,{type:`button`,onClick:e.cancelPending,className:`flex shrink-0 items-center gap-0.5 rounded-full px-1.5 py-0.5 transition-colors hover:bg-brand/15`,"aria-label":`Cancel sending`,children:[(0,J.jsx)(G,{className:`size-3`}),` Edit`]})]}):t&&e.listening?(0,J.jsxs)(`p`,{className:`mb-2 flex items-center gap-1.5 px-1 text-[11px] text-ink-dim`,children:[(0,J.jsx)(`span`,{className:`glow-dot inline-flex size-1.5 shrink-0 animate-pulse rounded-full bg-magenta text-magenta`}),e.interim?(0,J.jsx)(`span`,{className:`truncate italic`,children:e.interim}):(0,J.jsx)(`span`,{children:`Listening…`})]}):t&&!e.supported?(0,J.jsx)(`p`,{className:`mb-2 px-1 text-[11px] text-ink-faint`,children:`Voice input isn’t available in this browser.`}):null}function sn({files:e,onRemove:t}){return e.length===0?null:(0,J.jsx)(`div`,{className:`mb-2 flex max-h-40 flex-col gap-1.5 overflow-y-auto`,children:e.map(e=>(0,J.jsxs)(`div`,{className:`flex items-start gap-2 rounded-xl border border-line bg-ground/40 px-2.5 py-1.5 text-xs`,children:[(0,J.jsx)(Ie,{className:`mt-0.5 size-3.5 shrink-0 text-ink-faint`}),(0,J.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,J.jsx)(`span`,{className:`truncate font-medium text-ink`,children:e.name}),(0,J.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] text-ink-faint`,children:cn(e.size)})]}),e.status===`pending`&&(0,J.jsxs)(`span`,{className:`mt-0.5 flex items-center gap-1 text-[11px] text-ink-faint`,children:[(0,J.jsx)(j,{className:`size-3 animate-spin`}),` Analyzing…`]}),e.status===`ready`&&e.summary&&(0,J.jsx)(`p`,{className:`mt-0.5 line-clamp-2 text-[11px] text-ink-dim`,children:e.summary}),e.status===`error`&&(0,J.jsx)(`span`,{className:`mt-0.5 block text-[11px] text-destructive`,children:e.error??`Analysis failed`})]}),(0,J.jsx)(`button`,{type:`button`,onClick:()=>t(e.id),"aria-label":`Remove ${e.name}`,className:`mt-0.5 shrink-0 rounded-full p-1 text-ink-faint transition-colors hover:bg-surface hover:text-ink`,children:(0,J.jsx)(G,{className:`size-3`})})]},e.id))})}function cn(e){return e<1024?`${e} B`:e<1024*1024?`${Math.round(e/1024)} KB`:`${(e/1024/1024).toFixed(1)} MB`}function ln({onClose:e}){return(0,J.jsxs)(`div`,{className:`enters max-h-[60%] shrink-0 overflow-y-auto border-b border-line bg-ground-2/80 px-3 py-3 backdrop-blur`,children:[(0,J.jsxs)(`div`,{className:`mb-3 flex items-center justify-between gap-2`,children:[(0,J.jsx)(`p`,{className:`text-xs font-medium text-ink`,children:`Connection`}),(0,J.jsx)(B,{variant:`ghost`,size:`icon-sm`,"aria-label":`Close connection settings`,onClick:e,children:(0,J.jsx)(G,{className:`size-3.5`})})]}),(0,J.jsxs)(`div`,{className:`space-y-4`,children:[(0,J.jsx)(ce,{}),(0,J.jsx)(xe,{})]})]})}function un({connected:e,maxBytes:t}){return(0,J.jsx)(`div`,{className:`enters pointer-events-none absolute inset-0 z-50 flex items-center justify-center bg-ground/85 p-4 backdrop-blur-[2px]`,children:(0,J.jsxs)(`div`,{className:N(`flex w-full flex-col items-center gap-2 rounded-2xl border-2 border-dashed px-4 py-8 text-center`,e?`border-brand/55 bg-brand/8`:`border-line-strong bg-surface/40`),children:[e?(0,J.jsx)(Le,{className:`neon-text size-7 text-brand`}):(0,J.jsx)(gt,{className:`size-7 text-ink-faint`}),(0,J.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:e?`Drop to attach`:`Not connected`}),(0,J.jsx)(`p`,{className:`text-[11px] leading-relaxed text-ink-dim`,children:e?`Release anywhere in the panel and I’ll read it with your next message — up to ${t/1024/1024} MB each.`:`Pair the browser before attaching a file.`})]})})}var dn=[`Summarise what this page says`,`Fill this form in with my details`,`Find the unpaid invoices and open the newest`],fn={unpaired:`This browser isn’t paired yet, so nothing can drive it. Pairing takes one command and one code.`,offline:`Paired, but the daemon isn’t answering. Start browsentic and this reconnects on its own.`,agent:`The chosen agent can’t run on this machine. Pick another one, or let Browsentic fix it.`};function pn({blocker:e,voiceOn:t,onGo:n,onFix:r,onUse:i}){return(0,J.jsxs)(`div`,{className:`dot-grid fade-bottom flex flex-col gap-4 p-4`,children:[(0,J.jsxs)(`div`,{className:`flex items-start gap-2.5`,children:[(0,J.jsx)(ie,{className:`mt-0.5 size-7 shrink-0 text-brand`}),(0,J.jsx)(`div`,{className:`panel-card min-w-0 rounded-2xl rounded-tl-md px-3 py-2.5 text-sm leading-relaxed text-ink`,children:e?fn[e]:(0,J.jsxs)(J.Fragment,{children:[t?`Just talk`:`Tell me`,` what to do on this page — read it, fill something in, click through a flow — and every action shows up here as I take it.`]})})]}),e?(0,J.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:(0,J.jsx)(mn,{icon:at,label:e===`agent`?`Choose an agent`:`Set up the link`,onClick:r})}):(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`div`,{className:`flex flex-col gap-1.5`,children:dn.map(e=>(0,J.jsx)(`button`,{type:`button`,onClick:()=>i(e),className:`rounded-xl border border-line bg-ground/40 px-3 py-2 text-left text-xs text-ink-dim transition-colors hover:border-brand/40 hover:bg-surface/60 hover:text-ink`,children:e},e))}),(0,J.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,J.jsx)(mn,{icon:U,label:`Teach it this site`,onClick:()=>n(`skills`)}),(0,J.jsx)(mn,{icon:W,label:`Record a flow`,onClick:()=>n(`recordings`)}),(0,J.jsx)(mn,{icon:rt,label:`Past chats`,onClick:()=>n(`history`)})]})]})]})}function mn({icon:e,label:t,onClick:n}){return(0,J.jsxs)(`button`,{type:`button`,onClick:n,className:`inline-flex items-center gap-1.5 rounded-full border border-line bg-ground-2/70 px-2.5 py-1 text-[11px] text-ink-dim transition-colors hover:border-brand/40 hover:text-ink`,children:[(0,J.jsx)(e,{className:`size-3`}),t]})}function hn({state:e,onStop:t}){let n=_n(e.startedAt),r=Math.max(0,e.timeoutMs-n),i=e.percent==null?null:Math.round(e.percent);return(0,J.jsxs)(`div`,{className:`enters mb-2 rounded-xl border border-magenta/35 bg-magenta/8 p-2.5`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(nt,{className:`size-3.5 shrink-0 animate-pulse text-magenta`}),(0,J.jsxs)(`span`,{className:`min-w-0 flex-1 truncate text-xs font-medium text-ink`,children:[`Watching `,e.label??e.host]}),(0,J.jsxs)(`span`,{className:`shrink-0 font-mono text-[11px] tabular-nums text-ink-faint`,children:[vn(n),i!=null&&` · ${i}%`]}),(0,J.jsxs)(B,{size:`sm`,variant:`ghost`,className:`shrink-0 text-magenta hover:text-magenta`,onClick:t,children:[(0,J.jsx)(dt,{className:`size-3 fill-current`}),` Stop`]})]}),i!=null&&(0,J.jsx)(`div`,{className:`mt-2 h-1 overflow-hidden rounded-full bg-magenta/15`,children:(0,J.jsx)(`div`,{className:`glow-dot h-full rounded-full bg-magenta text-magenta transition-[width] duration-500`,style:{width:`${i}%`}})}),(0,J.jsx)(`p`,{className:`mt-1.5 text-[11px] leading-relaxed text-ink-faint`,children:gn(e,r)})]})}function gn(e,t){return e.stalledForMs==null?e.percent!=null&&e.etaMs!=null?`${Math.round(e.percent)}% · ${p(e.etaMs)} left`:e.logs.at(-1)?.text??`Stops automatically in ${vn(t)}.`:`No change for ${vn(e.stalledForMs)}.`}function _n(e){let[t,n]=(0,K.useState)(()=>Date.now());return(0,K.useEffect)(()=>{let e=setInterval(()=>n(Date.now()),1e3);return()=>clearInterval(e)},[]),Math.max(0,t-e)}function vn(e){let t=Math.floor(e/1e3);return`${Math.floor(t/60)}:${String(t%60).padStart(2,`0`)}`}var yn=[{id:`chat`,label:`Chat`,icon:Ye},{id:`history`,label:`History`,icon:rt},{id:`skills`,label:`Skills`,icon:U},{id:`recordings`,label:`Recordings`,icon:W},{id:`settings`,label:`Settings`,icon:st}];function bn({tab:e,counts:t,onSelect:n}){let r=(0,K.useRef)(null),[i,a]=(0,K.useState)(`full`),o=(0,K.useRef)({full:0,active:0});return(0,K.useLayoutEffect)(()=>{let e=r.current;if(!e)return;let t=!0,n=()=>{if(!t)return;let n=e.clientWidth;i!==`icons`&&(o.current[i]=xn(e));let{full:r,active:s}=o.current;a(r>0&&n>=r?`full`:i===`full`||n>=s?`active`:`icons`)};n();let s=new ResizeObserver(n);return s.observe(e),document.fonts.ready.then(n),()=>{t=!1,s.disconnect()}},[i,e,yn.map(({id:e})=>t[e]??0).join(`·`)]),(0,J.jsx)(`nav`,{ref:r,"aria-label":`Panel sections`,className:`flex shrink-0 items-center gap-0.5 overflow-x-auto border-b border-line px-2 pb-2 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden`,children:yn.map(({id:r,label:a,icon:o})=>{let s=e===r,c=t[r]??0,l=i===`full`||i===`active`&&s;return(0,J.jsxs)(`button`,{type:`button`,onClick:()=>n(r),title:l?void 0:a,"aria-label":a,"aria-current":s?`page`:void 0,className:N(`relative inline-flex shrink-0 items-center gap-1.5 rounded-full px-2.5 py-1.5 text-[11px] font-medium transition-colors`,s?`bg-brand/12 text-brand`:`text-ink-faint hover:bg-surface/60 hover:text-ink-dim`),children:[(0,J.jsx)(o,{className:`size-3.5`}),l&&a,c>0&&(l?(0,J.jsx)(`span`,{className:N(`rounded-full px-1 font-mono text-[9px] tabular-nums`,s?`bg-brand/20`:`bg-surface text-ink-faint`),children:c}):(0,J.jsx)(`span`,{className:N(`absolute top-1 right-1 size-1.5 rounded-full`,s?`bg-brand/70`:`bg-ink-faint/60`)}))]},r)})})}function xn(e){let t=getComputedStyle(e),n=parseFloat(t.columnGap)||0,r=parseFloat(t.paddingLeft)+parseFloat(t.paddingRight),i=Array.from(e.children);return i.reduce((e,t)=>e+t.getBoundingClientRect().width,0)+n*Math.max(0,i.length-1)+r}function Sn({state:e,onStop:t}){let n=Cn(e.startedAt),r=Math.max(0,h-n);return(0,J.jsxs)(`div`,{className:`enters mb-2 rounded-xl border border-destructive/40 bg-destructive/8 p-2.5`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(`span`,{className:`glow-dot size-2 shrink-0 animate-pulse rounded-full bg-destructive text-destructive`}),(0,J.jsxs)(`span`,{className:`min-w-0 flex-1 truncate text-xs font-medium text-ink`,children:[`Recording `,e.host]}),(0,J.jsxs)(`span`,{className:`shrink-0 font-mono text-[11px] tabular-nums text-ink-faint`,children:[wn(n),` · `,e.events,` `,e.events===1?`step`:`steps`]}),(0,J.jsxs)(B,{size:`sm`,variant:`ghost`,className:`shrink-0 text-destructive hover:text-destructive`,onClick:t,children:[(0,J.jsx)(dt,{className:`size-3 fill-current`}),` Stop`]})]}),(0,J.jsxs)(`p`,{className:`mt-1.5 text-[11px] leading-relaxed text-ink-faint`,children:[e.warning??`Stops automatically in ${wn(r)}.`,!e.captureValues&&` Typed values are not being saved.`]})]})}function Cn(e){let[t,n]=(0,K.useState)(()=>Date.now());return(0,K.useEffect)(()=>{let e=setInterval(()=>n(Date.now()),1e3);return()=>clearInterval(e)},[]),Math.max(0,t-e)}function wn(e){let t=Math.floor(e/1e3);return`${Math.floor(t/60)}:${String(t%60).padStart(2,`0`)}`}var Tn=d(`inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border px-2 py-0.5 font-mono text-[10px] tracking-[0.08em] whitespace-nowrap uppercase [&>svg]:pointer-events-none [&>svg]:size-2.5`,{variants:{variant:{default:`border-brand/35 bg-brand/12 text-brand`,secondary:`border-line-strong bg-surface/70 text-ink-dim`,destructive:`border-destructive/40 bg-destructive/12 text-destructive`,warning:`border-amber/40 bg-amber/12 text-amber`,outline:`border-line text-ink-faint`}},defaultVariants:{variant:`default`}});function En({className:e,variant:t,asChild:n=!1,...r}){return(0,J.jsx)(n?w:`span`,{"data-slot":`badge`,className:N(Tn({variant:t}),e),...r})}function Dn({recordings:e,busy:t,onReplay:n,onRemove:r}){return e.length===0?(0,J.jsxs)(`div`,{className:`dot-grid fade-bottom rounded-xl border border-line px-3 py-6 text-center`,children:[(0,J.jsx)(W,{className:`mx-auto size-5 text-ink-faint`}),(0,J.jsx)(`p`,{className:`mt-2 text-[11px] leading-relaxed text-ink-faint`,children:`No recordings yet. Press Record above and walk through the flow you want repeated.`})]}):(0,J.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1.5`,children:[t&&(0,J.jsx)(`p`,{className:`px-1 pb-1 text-[11px] text-ink-faint`,children:`Waiting on the current run — stop it to replay a recording.`}),e.map(e=>(0,J.jsx)(On,{recording:e,busy:t===!0,onReplay:n,onRemove:r},e.id))]})}function On({recording:e,busy:t,onReplay:n,onRemove:r}){let[i,a]=(0,K.useState)(null),o=e.status===`ready`;return(0,J.jsxs)(`div`,{className:`flex items-start gap-2 rounded-xl border border-line bg-ground/40 px-2.5 py-2 text-xs`,children:[(0,J.jsx)(W,{className:`mt-0.5 size-3.5 shrink-0 text-ink-faint`}),(0,J.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[i===null?(0,J.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,J.jsx)(`span`,{className:`truncate font-medium text-ink`,children:e.name}),e.capturedValues&&(0,J.jsxs)(En,{variant:`warning`,children:[(0,J.jsx)(We,{}),` values`]})]}):(0,J.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,J.jsx)(F,{value:i,autoFocus:!0,onChange:e=>a(e.target.value),onKeyDown:t=>{t.key===`Escape`&&a(null),t.key===`Enter`&&(R(e.id,i),a(null))},"aria-label":`Recording name`,className:`h-7 text-xs`}),(0,J.jsx)(`button`,{type:`button`,onClick:()=>{R(e.id,i),a(null)},"aria-label":`Save name`,className:`shrink-0 rounded-full p-1 text-ink-faint transition-colors hover:bg-surface hover:text-ink`,children:(0,J.jsx)(H,{className:`size-3`})})]}),(0,J.jsxs)(`span`,{className:`mt-0.5 flex items-center gap-1 font-mono text-[10px] text-ink-faint`,children:[(0,J.jsx)(ze,{className:`size-2.5 shrink-0`}),(0,J.jsx)(`span`,{className:`truncate`,children:e.host})]}),e.goal&&e.goal!==e.name&&(0,J.jsx)(`p`,{className:`mt-0.5 line-clamp-2 text-[11px] text-ink-dim`,children:e.goal}),(0,J.jsx)(`span`,{className:`mt-0.5 flex items-center gap-1 text-[11px] text-ink-faint`,children:e.status===`analyzing`?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(j,{className:`size-3 animate-spin`}),` Splitting into steps…`]}):e.status===`error`?(0,J.jsx)(`span`,{className:`text-destructive`,children:e.error??`Could not read this recording`}):(0,J.jsxs)(J.Fragment,{children:[e.steps??0,` `,e.steps===1?`step`:`steps`,` · `,Mn(e.durationMs),` ·`,` `,Nn(e.updatedAt)]})}),o&&(0,J.jsxs)(`button`,{type:`button`,onClick:()=>n(e),disabled:t,className:`mt-1.5 inline-flex items-center gap-1 rounded-full bg-brand/12 px-2 py-0.5 text-[11px] text-brand transition-colors hover:bg-brand/20 disabled:opacity-50`,children:[(0,J.jsx)(tt,{className:`size-3`}),` Do this again`]})]}),(0,J.jsxs)(`div`,{className:`mt-0.5 flex shrink-0 gap-0.5`,children:[(0,J.jsx)(`button`,{type:`button`,onClick:()=>a(e.name),"aria-label":`Rename ${e.name}`,className:`rounded-full p-1 text-ink-faint transition-colors hover:bg-surface hover:text-ink`,children:(0,J.jsx)(et,{className:`size-3`})}),(0,J.jsx)(`button`,{type:`button`,onClick:()=>r(e.id),"aria-label":`Delete ${e.name}`,className:`rounded-full p-1 text-ink-faint transition-colors hover:bg-surface hover:text-ink`,children:(0,J.jsx)(G,{className:`size-3`})})]})]})}var kn=6e4,An=60*kn,jn=24*An;function Mn(e){let t=Math.round(e/1e3);return t<60?`${t}s`:`${Math.floor(t/60)}m ${String(t%60).padStart(2,`0`)}s`}function Nn(e){let t=Date.now()-e;return t<kn?`just now`:t<An?`${Math.floor(t/kn)}m ago`:t<jn?`${Math.floor(t/An)}h ago`:t<7*jn?`${Math.floor(t/jn)}d ago`:new Date(e).toLocaleDateString(void 0,{month:`short`,day:`numeric`})}function Pn({tabUrl:e,recordings:t,recording:n,busy:r,onStart:i,onStop:a,onReplay:o,onRemove:s}){let[c,l]=(0,K.useState)(!1),u=Mt(e),d=!r&&!n&&/^https?:/.test(e);return(0,J.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-3 p-3`,children:[(0,J.jsx)(`p`,{className:`text-[11px] leading-relaxed text-ink-dim`,children:`Capture what you do on a site — the clicks, the fields you fill, the pages you move through — and the agent can repeat it later. A recording runs for at most 15 minutes.`}),n?(0,J.jsxs)(B,{variant:`destructive`,onClick:a,children:[(0,J.jsx)(dt,{className:`fill-current`}),` Stop recording`]}):(0,J.jsxs)(B,{variant:`destructive`,onClick:()=>i(c),disabled:!d,title:d?`Record what you do on ${u}`:`Open an http(s) page, with nothing else running`,children:[(0,J.jsx)(ke,{className:`fill-current`}),(0,J.jsxs)(`span`,{className:`truncate`,children:[`Record `,u||`this page`]})]}),!n&&(0,J.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-2 rounded-xl border border-line bg-ground/40 px-2.5 py-2 text-[11px] leading-relaxed text-ink-dim`,children:[(0,J.jsx)(`input`,{type:`checkbox`,checked:c,onChange:e=>l(e.target.checked),className:`mt-0.5 size-3 shrink-0 accent-destructive`}),(0,J.jsxs)(`span`,{children:[(0,J.jsx)(`span`,{className:`font-medium text-ink`,children:`Save what I type.`}),` Off by default — every field becomes a placeholder the agent asks you to fill. Passwords and card numbers are never saved either way.`]})]}),(0,J.jsx)(Dn,{recordings:t,busy:r,onReplay:o,onRemove:s})]})}var Fn=e(le(),1);function In({purpose:e,code:t,site:n,onAllow:r,onDeny:i,onClose:a}){return(0,K.useEffect)(()=>{let e=e=>{e.key===`Escape`&&a()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[a]),(0,Fn.createPortal)((0,J.jsxs)(`div`,{className:`enters fixed inset-0 z-50 flex flex-col bg-ground/96 backdrop-blur`,children:[(0,J.jsxs)(`div`,{className:`flex items-start gap-2 border-b border-ember/30 bg-ember/8 px-3 py-2.5`,children:[(0,J.jsx)(ot,{className:`mt-0.5 size-3.5 shrink-0 text-ember`}),(0,J.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,J.jsx)(`p`,{className:`text-xs font-medium text-ink`,children:`Code the agent wrote`}),(0,J.jsx)(`p`,{className:`mt-0.5 text-[11px] leading-relaxed text-ink-dim`,children:e})]}),(0,J.jsx)(`button`,{type:`button`,onClick:a,title:`Close without deciding`,className:`mt-0.5 shrink-0 rounded p-0.5 text-ink-faint transition-colors hover:text-ink`,children:(0,J.jsx)(G,{className:`size-3.5`})})]}),(0,J.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto bg-ground/70`,children:(0,J.jsx)(`pre`,{className:`min-w-full p-3 font-mono text-[11px] leading-relaxed whitespace-pre text-ink-dim`,children:(0,J.jsx)(`code`,{children:t})})}),(0,J.jsxs)(`div`,{className:`border-t border-line px-3 py-2.5`,children:[(0,J.jsxs)(`p`,{className:`mb-2 text-[11px] leading-relaxed text-ink-faint`,children:[`This runs in `,n?(0,J.jsx)(`span`,{className:`font-mono text-ink`,children:n}):`the page`,` with your logged-in session, and can do anything you could do there. Later calls reuse these functions without asking again.`]}),(0,J.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,J.jsxs)(B,{variant:`ghost`,size:`sm`,className:`flex-1`,onClick:i,children:[(0,J.jsx)(G,{className:`size-3`}),` Deny`]}),(0,J.jsxs)(B,{size:`sm`,className:`flex-1`,onClick:r,children:[(0,J.jsx)(H,{className:`size-3`}),` Allow`]})]})]})]}),document.body)}var Ln=[{key:`user`,label:`you`,color:`bg-brand`},{key:`assistant`,label:`replies`,color:`bg-magenta`},{key:`tools`,label:`tools`,color:`bg-amber`},{key:`notices`,label:`notices`,color:`bg-ink-faint`}];function Rn({breakdown:e}){let{messages:t,files:n,recordings:r,filesOmitted:i,recordingsOmitted:a}=e,o=Ln.reduce((e,n)=>e+t[n.key],0),s=o===0&&n.length===0&&r.length===0;return(0,J.jsxs)(`div`,{className:`enters panel-card min-w-0 rounded-2xl px-3 py-2.5`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(Ke,{className:`size-3.5 shrink-0 text-brand`}),(0,J.jsx)(`span`,{className:`flex-1 truncate font-mono text-[10px] tracking-[0.14em] text-ink uppercase`,children:`Session context`}),(0,J.jsx)(`span`,{className:`shrink-0 rounded-full bg-ground/60 px-2 py-0.5 font-mono text-[9px] tracking-[0.1em] text-ink-faint uppercase`,children:Bn(e)})]}),s?(0,J.jsx)(`p`,{className:`mt-2 text-[11px] text-ink-dim`,children:`This conversation is empty — nothing rides along yet.`}):(0,J.jsxs)(J.Fragment,{children:[o>0&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`div`,{className:`mt-2.5 flex h-1.5 gap-px overflow-hidden rounded-full`,children:Ln.filter(e=>t[e.key]>0).map(e=>(0,J.jsx)(`span`,{className:e.color,style:{flexGrow:t[e.key]}},e.key))}),(0,J.jsx)(`div`,{className:`mt-1.5 flex flex-wrap gap-x-3 gap-y-0.5`,children:Ln.map(e=>(0,J.jsxs)(`span`,{className:`flex items-center gap-1 text-[10px] text-ink-dim`,children:[(0,J.jsx)(`span`,{className:N(`size-1.5 shrink-0 rounded-full`,e.color)}),(0,J.jsx)(`span`,{className:`font-mono`,children:t[e.key]}),` `,e.label]},e.key))})]}),(0,J.jsxs)(`div`,{className:`mt-2.5 flex flex-col gap-1 border-t border-line pt-2`,children:[(0,J.jsxs)(zn,{icon:ze,children:[e.tabCount===1?`1 tab`:`${e.tabCount} tabs`,e.host&&(0,J.jsxs)(J.Fragment,{children:[` · `,e.host]}),` · turn`,` `,(0,J.jsx)(`span`,{className:`font-mono text-[10px]`,children:e.turns}),` ·`,` `,(0,J.jsx)(`span`,{className:`font-mono text-[10px]`,children:Vn(t.chars)}),` characters`]}),(0,J.jsx)(zn,{icon:Ne,children:e.usage?(0,J.jsxs)(J.Fragment,{children:[`Agent window ≈ `,(0,J.jsx)(`span`,{className:`font-mono text-[10px]`,children:Vn(e.usage.contextTokens)}),` `,`tokens · `,(0,J.jsx)(`span`,{className:`font-mono text-[10px]`,children:Vn(e.usage.outputTokens)}),` `,`generated last run`]}):e.agent===`antigravity`?`Antigravity does not report token counts.`:`Token counts appear after the agent’s first reply.`}),n.map((e,t)=>(0,J.jsxs)(zn,{icon:Ie,children:[(0,J.jsx)(`span`,{className:`text-ink`,children:e.name}),(0,J.jsxs)(`span`,{className:`font-mono text-[10px] text-ink-faint`,children:[` · `,Hn(e.size)]}),e.status===`pending`&&(0,J.jsx)(`span`,{className:`text-ink-faint`,children:` · analyzing`}),e.status===`error`&&(0,J.jsx)(`span`,{className:`text-destructive`,children:` · analysis failed`})]},t)),i>0&&(0,J.jsxs)(`p`,{className:`pl-[18px] text-[10px] text-ink-faint`,children:[i,` more `,i===1?`file stays`:`files stay`,` behind — only the first`,` `,n.length,` ride along.`]}),r.map((e,t)=>(0,J.jsxs)(zn,{icon:W,children:[(0,J.jsx)(`span`,{className:`text-ink`,children:e.name}),e.steps!==void 0&&(0,J.jsxs)(`span`,{className:`font-mono text-[10px] text-ink-faint`,children:[` · `,e.steps,` steps`]})]},t)),a>0&&(0,J.jsxs)(`p`,{className:`pl-[18px] text-[10px] text-ink-faint`,children:[a,` more `,a===1?`recording stays`:`recordings stay`,` behind — only the first `,r.length,` ride along.`]})]})]}),(0,J.jsx)(`p`,{className:`mt-2 text-[10px] leading-relaxed text-ink-faint`,children:`Held in this browser — files and ready recordings ride along with your next message.`})]})}function zn({icon:e,children:t}){return(0,J.jsxs)(`div`,{className:`flex min-w-0 items-start gap-1.5 text-[11px] text-ink-dim`,children:[(0,J.jsx)(e,{className:`mt-0.5 size-3 shrink-0 text-ink-faint`}),(0,J.jsx)(`span`,{className:`min-w-0 flex-1 break-words`,children:t})]})}function Bn(e){return e.agent?`${ye[e.agent].label}${e.resumes?` · resumes`:``}`:`no agent yet`}function Vn(e){return e<1e3?String(e):`${(e/1e3).toFixed(+(e<1e4))} k`}function Hn(e){return e<1024?`${e} B`:e<1024*1024?`${Math.round(e/1024)} KB`:`${(e/1024/1024).toFixed(1)} MB`}function Un({text:e,streaming:t,className:n}){let r=(0,K.useRef)(!1);t&&(r.current=!0);let i=(0,K.useMemo)(()=>er(e).map(e=>({block:e,sig:JSON.stringify(e)})),[e]);return(0,J.jsx)(`div`,{"data-stream":t?`live`:r.current?`done`:void 0,className:N(`flex min-w-0 flex-col gap-2`,n),children:i.map(({block:e,sig:t},n)=>(0,J.jsx)(Wn,{block:e,sig:t},n))})}var Wn=(0,K.memo)(({block:e})=>lr(e,`0`),(e,t)=>e.sig===t.sig),Gn=/^ {0,3}(`{3,}|~{3,})[^\n]*$/,Kn=/^ {0,3}(?:`{3,}|~{3,})[ \t]*([^\s`~]*)/,qn=/^ {0,3}(`{3,}|~{3,})[ \t]*$/,Jn=/^ {0,3}(#{1,6})[ \t]+(.*?)[ \t]*#*[ \t]*$/,Yn=/^ {0,3}([-*_])[ \t]*(?:\1[ \t]*){2,}$/,Xn=/^ {0,3}>[ \t]?/,Zn=/^([ \t]*)(?:([-*+])|(\d{1,9})[.)])[ \t]+(.*)$/,Qn=/^ {0,3}\|?[ \t]*:?-+:?[ \t]*(?:\|[ \t]*:?-+:?[ \t]*)+\|?[ \t]*$/,$n=12;function er(e,t=0){let n=e.replace(/\r\n?/g,`
|
|
4
4
|
`).split(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"manifest_version":3,"name":"Browsentic","description":"Reimagine browsing as agentic — driven by the AI agent you already run, in your own logged-in browser.","version":"0.
|
|
1
|
+
{"manifest_version":3,"name":"Browsentic","description":"Reimagine browsing as agentic — driven by the AI agent you already run, in your own logged-in browser.","version":"0.6.0","icons":{"16":"icon/16.png","32":"icon/32.png","48":"icon/48.png","96":"icon/96.png","128":"icon/128.png"},"permissions":["storage","unlimitedStorage","activeTab","sidePanel","contextMenus","alarms","scripting","notifications","debugger","downloads","audioCapture"],"host_permissions":["<all_urls>"],"background":{"service_worker":"background.js"},"action":{"default_title":"Browsentic","default_popup":"popup.html"},"side_panel":{"default_path":"sidepanel.html"},"content_scripts":[{"matches":["*://*/*"],"js":["content-scripts/content.js"]}]}
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
<meta name="color-scheme" content="dark">
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
7
|
<title>Browsentic</title>
|
|
8
|
-
<script type="module" crossorigin src="/chunks/popup-
|
|
8
|
+
<script type="module" crossorigin src="/chunks/popup-DBnq_NvX.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/chunks/rolldown-runtime-Bh1tDfsg.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/chunks/globals-
|
|
11
|
-
<link rel="stylesheet" crossorigin href="/assets/globals-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/chunks/globals-RKxmETMG.js">
|
|
11
|
+
<link rel="stylesheet" crossorigin href="/assets/globals-gUnqG7C4.css">
|
|
12
12
|
</head>
|
|
13
13
|
<body>
|
|
14
14
|
<div id="root"></div>
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
<meta name="color-scheme" content="dark">
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
7
|
<title>Browsentic Chat</title>
|
|
8
|
-
<script type="module" crossorigin src="/chunks/sidepanel-
|
|
8
|
+
<script type="module" crossorigin src="/chunks/sidepanel-CrG8wCdP.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/chunks/rolldown-runtime-Bh1tDfsg.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/chunks/globals-
|
|
11
|
-
<link rel="stylesheet" crossorigin href="/assets/globals-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/chunks/globals-RKxmETMG.js">
|
|
11
|
+
<link rel="stylesheet" crossorigin href="/assets/globals-gUnqG7C4.css">
|
|
12
12
|
</head>
|
|
13
13
|
<body>
|
|
14
14
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "browsentic",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.6.0",
|
|
4
|
+
"description": "A browser extension with an AI side panel that hands your real, logged-in browser to the AI agent you already run. Installs the extension, runs the local daemon, and optionally speaks MCP.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"packageManager": "yarn@4.17.1",
|
|
@@ -13,8 +13,12 @@
|
|
|
13
13
|
},
|
|
14
14
|
"bugs": "https://github.com/imshaikot/browsentic/issues",
|
|
15
15
|
"keywords": [
|
|
16
|
-
"browser-
|
|
16
|
+
"browser-extension",
|
|
17
17
|
"chrome-extension",
|
|
18
|
+
"ai-browser-extension",
|
|
19
|
+
"side-panel",
|
|
20
|
+
"browser-agent",
|
|
21
|
+
"browser-automation",
|
|
18
22
|
"ai-agent",
|
|
19
23
|
"agentic-browsing",
|
|
20
24
|
"mcp",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:"Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", "Fira Code", ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace;--color-black:#000;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-2xl:1rem;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--font-display:"Inter Tight", "Inter", ui-sans-serif, system-ui, -apple-system, sans-serif;--ease-out-expo:cubic-bezier(.16, 1, .3, 1)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}html{background-color:var(--background)}body{background-color:var(--background);font-family:var(--font-sans);color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"cv02", "cv03", "cv04", "ss01";text-rendering:optimizelegibility}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.024em}body:after{content:"";z-index:100;pointer-events:none;opacity:var(--grain);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}::selection{background:var(--brand)}@supports (color:color-mix(in lab, red, red)){::selection{background:color-mix(in oklch, var(--brand) 32%, transparent)}}::selection{color:var(--ink)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--surface-2);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--brand)}@supports (color:color-mix(in lab, red, red)){::-webkit-scrollbar-thumb:hover{background:color-mix(in oklch, var(--brand) 40%, var(--surface-2))}}}@layer components{[data-stream] .tok{animation:browsentic-token .42s var(--ease-out-expo) both}[data-stream=live]>:last-child:after{content:"";vertical-align:-.12em;background:var(--brand);width:.42em;height:.95em;box-shadow:0 0 10px var(--brand);border-radius:1px;margin-left:.14em;display:inline-block}@supports (color:color-mix(in lab, red, red)){[data-stream=live]>:last-child:after{box-shadow:0 0 10px color-mix(in oklch, var(--brand) var(--glow), transparent)}}[data-stream=live]>:last-child:after{animation:1.05s step-end infinite browsentic-caret}.enters{animation:browsentic-enter .34s var(--ease-out-expo) both}.think-dot{animation:1.2s ease-in-out infinite browsentic-think}.think-dot:nth-child(2){animation-delay:.16s}.think-dot:nth-child(3){animation-delay:.32s}.sweep:after{content:"";background:linear-gradient(90deg, transparent, var(--brand), transparent);width:30%;height:1px;animation:browsentic-sweep 1.8s var(--ease-out-expo) infinite;position:absolute;inset-block-start:0;inset-inline-start:0}}@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:0}.inset-x-0{inset-inline:0}.top-1{top:var(--spacing)}.right-1{right:var(--spacing)}.right-1\.5{right:calc(var(--spacing) * 1.5)}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-full{bottom:100%}.left-1\/2{left:50%}.z-20{z-index:20}.z-50{z-index:50}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-px{margin-top:1px}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.field-sizing-content{field-sizing:content}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-20{width:calc(var(--spacing) * 20);height:calc(var(--spacing) * 20)}.size-full{width:100%;height:100%}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.max-h-7{max-height:calc(var(--spacing) * 7)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-\[45\%\]{max-height:45%}.max-h-\[60\%\]{max-height:60%}.max-h-\[var\(--radix-select-content-available-height\)\]{max-height:var(--radix-select-content-available-height)}.min-h-0{min-height:0}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-14{min-height:calc(var(--spacing) * 14)}.min-h-16{min-height:calc(var(--spacing) * 16)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-6\/12{width:50%}.w-7{width:calc(var(--spacing) * 7)}.w-9\/12{width:75%}.w-\[22rem\]{width:22rem}.w-fit{width:fit-content}.w-full{width:100%}.max-w-14{max-width:calc(var(--spacing) * 14)}.max-w-\[88\%\]{max-width:88%}.max-w-full{max-width:100%}.min-w-0{min-width:0}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-full{min-width:100%}.flex-1{flex:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0\.5{--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-3\.5{--tw-translate-x:calc(var(--spacing) * 3.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.\[scrollbar-width\:none\]{scrollbar-width:none}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-px{gap:1px}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-line>:not(:last-child)){border-color:var(--line)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-tl-md{border-top-left-radius:calc(var(--radius) - 2px)}.rounded-br-md{border-bottom-right-radius:calc(var(--radius) - 2px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-amber\/25{border-color:var(--amber)}@supports (color:color-mix(in lab, red, red)){.border-amber\/25{border-color:color-mix(in oklab, var(--amber) 25%, transparent)}}.border-amber\/40{border-color:var(--amber)}@supports (color:color-mix(in lab, red, red)){.border-amber\/40{border-color:color-mix(in oklab, var(--amber) 40%, transparent)}}.border-border{border-color:var(--border)}.border-brand\/25{border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.border-brand\/25{border-color:color-mix(in oklab, var(--brand) 25%, transparent)}}.border-brand\/30{border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.border-brand\/30{border-color:color-mix(in oklab, var(--brand) 30%, transparent)}}.border-brand\/35{border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.border-brand\/35{border-color:color-mix(in oklab, var(--brand) 35%, transparent)}}.border-brand\/40{border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.border-brand\/40{border-color:color-mix(in oklab, var(--brand) 40%, transparent)}}.border-brand\/45{border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.border-brand\/45{border-color:color-mix(in oklab, var(--brand) 45%, transparent)}}.border-brand\/50{border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.border-brand\/50{border-color:color-mix(in oklab, var(--brand) 50%, transparent)}}.border-brand\/55{border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.border-brand\/55{border-color:color-mix(in oklab, var(--brand) 55%, transparent)}}.border-brand\/60{border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.border-brand\/60{border-color:color-mix(in oklab, var(--brand) 60%, transparent)}}.border-destructive\/35{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/35{border-color:color-mix(in oklab, var(--destructive) 35%, transparent)}}.border-destructive\/40{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/40{border-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.border-ember\/30{border-color:var(--ember)}@supports (color:color-mix(in lab, red, red)){.border-ember\/30{border-color:color-mix(in oklab, var(--ember) 30%, transparent)}}.border-ember\/40{border-color:var(--ember)}@supports (color:color-mix(in lab, red, red)){.border-ember\/40{border-color:color-mix(in oklab, var(--ember) 40%, transparent)}}.border-ember\/45{border-color:var(--ember)}@supports (color:color-mix(in lab, red, red)){.border-ember\/45{border-color:color-mix(in oklab, var(--ember) 45%, transparent)}}.border-lime\/30{border-color:var(--lime)}@supports (color:color-mix(in lab, red, red)){.border-lime\/30{border-color:color-mix(in oklab, var(--lime) 30%, transparent)}}.border-line{border-color:var(--line)}.border-line-strong{border-color:var(--line-strong)}.border-magenta\/35{border-color:var(--magenta)}@supports (color:color-mix(in lab, red, red)){.border-magenta\/35{border-color:color-mix(in oklab, var(--magenta) 35%, transparent)}}.border-magenta\/60{border-color:var(--magenta)}@supports (color:color-mix(in lab, red, red)){.border-magenta\/60{border-color:color-mix(in oklab, var(--magenta) 60%, transparent)}}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-amber,.bg-amber\/8{background-color:var(--amber)}@supports (color:color-mix(in lab, red, red)){.bg-amber\/8{background-color:color-mix(in oklab, var(--amber) 8%, transparent)}}.bg-amber\/10{background-color:var(--amber)}@supports (color:color-mix(in lab, red, red)){.bg-amber\/10{background-color:color-mix(in oklab, var(--amber) 10%, transparent)}}.bg-amber\/12{background-color:var(--amber)}@supports (color:color-mix(in lab, red, red)){.bg-amber\/12{background-color:color-mix(in oklab, var(--amber) 12%, transparent)}}.bg-amber\/15{background-color:var(--amber)}@supports (color:color-mix(in lab, red, red)){.bg-amber\/15{background-color:color-mix(in oklab, var(--amber) 15%, transparent)}}.bg-background{background-color:var(--background)}.bg-brand,.bg-brand\/5{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.bg-brand\/5{background-color:color-mix(in oklab, var(--brand) 5%, transparent)}}.bg-brand\/8{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.bg-brand\/8{background-color:color-mix(in oklab, var(--brand) 8%, transparent)}}.bg-brand\/10{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.bg-brand\/10{background-color:color-mix(in oklab, var(--brand) 10%, transparent)}}.bg-brand\/12{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.bg-brand\/12{background-color:color-mix(in oklab, var(--brand) 12%, transparent)}}.bg-brand\/20{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.bg-brand\/20{background-color:color-mix(in oklab, var(--brand) 20%, transparent)}}.bg-brand\/70{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.bg-brand\/70{background-color:color-mix(in oklab, var(--brand) 70%, transparent)}}.bg-destructive,.bg-destructive\/8{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/8{background-color:color-mix(in oklab, var(--destructive) 8%, transparent)}}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/10{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.bg-destructive\/12{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/12{background-color:color-mix(in oklab, var(--destructive) 12%, transparent)}}.bg-ember,.bg-ember\/8{background-color:var(--ember)}@supports (color:color-mix(in lab, red, red)){.bg-ember\/8{background-color:color-mix(in oklab, var(--ember) 8%, transparent)}}.bg-ember\/10{background-color:var(--ember)}@supports (color:color-mix(in lab, red, red)){.bg-ember\/10{background-color:color-mix(in oklab, var(--ember) 10%, transparent)}}.bg-ember\/12{background-color:var(--ember)}@supports (color:color-mix(in lab, red, red)){.bg-ember\/12{background-color:color-mix(in oklab, var(--ember) 12%, transparent)}}.bg-ground{background-color:var(--ground)}.bg-ground-2\/70{background-color:var(--ground-2)}@supports (color:color-mix(in lab, red, red)){.bg-ground-2\/70{background-color:color-mix(in oklab, var(--ground-2) 70%, transparent)}}.bg-ground-2\/80{background-color:var(--ground-2)}@supports (color:color-mix(in lab, red, red)){.bg-ground-2\/80{background-color:color-mix(in oklab, var(--ground-2) 80%, transparent)}}.bg-ground\/40{background-color:var(--ground)}@supports (color:color-mix(in lab, red, red)){.bg-ground\/40{background-color:color-mix(in oklab, var(--ground) 40%, transparent)}}.bg-ground\/60{background-color:var(--ground)}@supports (color:color-mix(in lab, red, red)){.bg-ground\/60{background-color:color-mix(in oklab, var(--ground) 60%, transparent)}}.bg-ground\/70{background-color:var(--ground)}@supports (color:color-mix(in lab, red, red)){.bg-ground\/70{background-color:color-mix(in oklab, var(--ground) 70%, transparent)}}.bg-ground\/85{background-color:var(--ground)}@supports (color:color-mix(in lab, red, red)){.bg-ground\/85{background-color:color-mix(in oklab, var(--ground) 85%, transparent)}}.bg-ground\/96{background-color:var(--ground)}@supports (color:color-mix(in lab, red, red)){.bg-ground\/96{background-color:color-mix(in oklab, var(--ground) 96%, transparent)}}.bg-ink{background-color:var(--ink)}.bg-ink-faint,.bg-ink-faint\/50{background-color:var(--ink-faint)}@supports (color:color-mix(in lab, red, red)){.bg-ink-faint\/50{background-color:color-mix(in oklab, var(--ink-faint) 50%, transparent)}}.bg-ink-faint\/60{background-color:var(--ink-faint)}@supports (color:color-mix(in lab, red, red)){.bg-ink-faint\/60{background-color:color-mix(in oklab, var(--ink-faint) 60%, transparent)}}.bg-ink\/30{background-color:var(--ink)}@supports (color:color-mix(in lab, red, red)){.bg-ink\/30{background-color:color-mix(in oklab, var(--ink) 30%, transparent)}}.bg-ink\/75{background-color:var(--ink)}@supports (color:color-mix(in lab, red, red)){.bg-ink\/75{background-color:color-mix(in oklab, var(--ink) 75%, transparent)}}.bg-lime,.bg-lime\/8{background-color:var(--lime)}@supports (color:color-mix(in lab, red, red)){.bg-lime\/8{background-color:color-mix(in oklab, var(--lime) 8%, transparent)}}.bg-magenta,.bg-magenta\/8{background-color:var(--magenta)}@supports (color:color-mix(in lab, red, red)){.bg-magenta\/8{background-color:color-mix(in oklab, var(--magenta) 8%, transparent)}}.bg-magenta\/15{background-color:var(--magenta)}@supports (color:color-mix(in lab, red, red)){.bg-magenta\/15{background-color:color-mix(in oklab, var(--magenta) 15%, transparent)}}.bg-magenta\/25{background-color:var(--magenta)}@supports (color:color-mix(in lab, red, red)){.bg-magenta\/25{background-color:color-mix(in oklab, var(--magenta) 25%, transparent)}}.bg-magenta\/30{background-color:var(--magenta)}@supports (color:color-mix(in lab, red, red)){.bg-magenta\/30{background-color:color-mix(in oklab, var(--magenta) 30%, transparent)}}.bg-surface{background-color:var(--surface)}.bg-surface-2{background-color:var(--surface-2)}.bg-surface\/20{background-color:var(--surface)}@supports (color:color-mix(in lab, red, red)){.bg-surface\/20{background-color:color-mix(in oklab, var(--surface) 20%, transparent)}}.bg-surface\/30{background-color:var(--surface)}@supports (color:color-mix(in lab, red, red)){.bg-surface\/30{background-color:color-mix(in oklab, var(--surface) 30%, transparent)}}.bg-surface\/40{background-color:var(--surface)}@supports (color:color-mix(in lab, red, red)){.bg-surface\/40{background-color:color-mix(in oklab, var(--surface) 40%, transparent)}}.bg-surface\/60{background-color:var(--surface)}@supports (color:color-mix(in lab, red, red)){.bg-surface\/60{background-color:color-mix(in oklab, var(--surface) 60%, transparent)}}.bg-surface\/70{background-color:var(--surface)}@supports (color:color-mix(in lab, red, red)){.bg-surface\/70{background-color:color-mix(in oklab, var(--surface) 70%, transparent)}}.bg-transparent{background-color:#0000}.dot-grid{background-image:radial-gradient(circle at 1px 1px, var(--wash) 1px, transparent 0)}@supports (color:color-mix(in lab, red, red)){.dot-grid{background-image:radial-gradient(circle at 1px 1px, color-mix(in oklch, var(--wash) 9%, transparent) 1px, transparent 0)}}.dot-grid{background-size:22px 22px}.fade-bottom{-webkit-mask-image:linear-gradient(#000 78%,#0000 100%);mask-image:linear-gradient(#000 78%,#0000 100%)}.fill-current{fill:currentColor}.object-cover{object-fit:cover}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-px{padding:1px}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0{padding-block:0}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-px{padding-block:1px}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pb-0{padding-bottom:0}.pb-1{padding-bottom:var(--spacing)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-\[18px\]{padding-left:18px}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-top{vertical-align:top}.font-display{font-family:var(--font-display)}.font-mono{font-family:var(--font-mono)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.85em\]{font-size:.85em}.text-\[0\.95rem\]{font-size:.95rem}.text-\[0\.9375rem\]{font-size:.9375rem}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.1em\]{--tw-tracking:.1em;letter-spacing:.1em}.tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\[0\.14em\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-words{overflow-wrap:break-word}.wrap-anywhere{overflow-wrap:anywhere}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber{color:var(--amber)}.text-brand{color:var(--brand)}.text-destructive{color:var(--destructive)}.text-ember{color:var(--ember)}.text-ground{color:var(--ground)}.text-ink{color:var(--ink)}.text-ink-dim{color:var(--ink-dim)}.text-ink-faint{color:var(--ink-faint)}.text-lime,.text-lime\/80{color:var(--lime)}@supports (color:color-mix(in lab, red, red)){.text-lime\/80{color:color-mix(in oklab, var(--lime) 80%, transparent)}}.text-magenta{color:var(--magenta)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.decoration-1{text-decoration-thickness:1px}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.accent-brand{accent-color:var(--brand)}.accent-destructive{accent-color:var(--destructive)}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.glow-brand{box-shadow:0 6px 26px -10px var(--brand)}@supports (color:color-mix(in lab, red, red)){.glow-brand{box-shadow:0 6px 26px -10px color-mix(in oklch, var(--brand) var(--glow), transparent)}}.glow-destructive{box-shadow:0 6px 26px -10px var(--destructive)}@supports (color:color-mix(in lab, red, red)){.glow-destructive{box-shadow:0 6px 26px -10px color-mix(in oklch, var(--destructive) var(--glow), transparent)}}.glow-dot{box-shadow:0 0 8px 1px}@supports (color:color-mix(in lab, red, red)){.glow-dot{box-shadow:0 0 8px 1px color-mix(in oklch, currentColor var(--glow), transparent)}}.shadow-black\/50{--tw-shadow-color:#00000080}@supports (color:color-mix(in lab, red, red)){.shadow-black\/50{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-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,)}.backdrop-blur-\[2px\]{--tw-backdrop-blur:blur(2px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.outline-none{--tw-outline-style:none;outline-style:none}.panel-card{background:linear-gradient(180deg, var(--wash), var(--wash))}@supports (color:color-mix(in lab, red, red)){.panel-card{background:linear-gradient(180deg, color-mix(in oklch, var(--wash) 4.5%, transparent), color-mix(in oklch, var(--wash) 1.5%, transparent))}}.panel-card{border:1px solid var(--line)}.select-none{-webkit-user-select:none;user-select:none}.blur-in{--tw-enter-blur:20px}.neon-text{text-shadow:0 0 12px}@supports (color:color-mix(in lab, red, red)){.neon-text{text-shadow:0 0 12px color-mix(in oklch, currentColor var(--neon), transparent)}}.running{animation-play-state:running}@media (hover:hover){.group-hover\:opacity-85:is(:where(.group):hover *){opacity:.85}}.selection\:bg-brand\/30 ::selection{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.selection\:bg-brand\/30 ::selection{background-color:color-mix(in oklab, var(--brand) 30%, transparent)}}.selection\:bg-brand\/30::selection{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.selection\:bg-brand\/30::selection{background-color:color-mix(in oklab, var(--brand) 30%, transparent)}}.selection\:text-ink ::selection{color:var(--ink)}.selection\:text-ink::selection{color:var(--ink)}.placeholder\:text-ink-faint::placeholder{color:var(--ink-faint)}@media (hover:hover){.hover\:border-brand\/40:hover{border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.hover\:border-brand\/40:hover{border-color:color-mix(in oklab, var(--brand) 40%, transparent)}}.hover\:border-brand\/45:hover{border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.hover\:border-brand\/45:hover{border-color:color-mix(in oklab, var(--brand) 45%, transparent)}}.hover\:border-brand\/50:hover{border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.hover\:border-brand\/50:hover{border-color:color-mix(in oklab, var(--brand) 50%, transparent)}}.hover\:border-line-strong:hover{border-color:var(--line-strong)}.hover\:bg-brand\/12:hover{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-brand\/12:hover{background-color:color-mix(in oklab, var(--brand) 12%, transparent)}}.hover\:bg-brand\/15:hover{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-brand\/15:hover{background-color:color-mix(in oklab, var(--brand) 15%, transparent)}}.hover\:bg-brand\/20:hover{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-brand\/20:hover{background-color:color-mix(in oklab, var(--brand) 20%, transparent)}}.hover\:bg-brand\/40:hover{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-brand\/40:hover{background-color:color-mix(in oklab, var(--brand) 40%, transparent)}}.hover\:bg-brand\/90:hover{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-brand\/90:hover{background-color:color-mix(in oklab, var(--brand) 90%, transparent)}}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab, var(--destructive) 90%, transparent)}}.hover\:bg-ember\/10:hover{background-color:var(--ember)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-ember\/10:hover{background-color:color-mix(in oklab, var(--ember) 10%, transparent)}}.hover\:bg-ground\/40:hover{background-color:var(--ground)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-ground\/40:hover{background-color:color-mix(in oklab, var(--ground) 40%, transparent)}}.hover\:bg-surface:hover{background-color:var(--surface)}.hover\:bg-surface-2:hover{background-color:var(--surface-2)}.hover\:bg-surface\/60:hover{background-color:var(--surface)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface\/60:hover{background-color:color-mix(in oklab, var(--surface) 60%, transparent)}}.hover\:bg-surface\/70:hover{background-color:var(--surface)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface\/70:hover{background-color:color-mix(in oklab, var(--surface) 70%, transparent)}}.hover\:text-brand:hover{color:var(--brand)}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-ember:hover{color:var(--ember)}.hover\:text-ink:hover{color:var(--ink)}.hover\:text-ink-dim:hover{color:var(--ink-dim)}.hover\:text-magenta:hover{color:var(--magenta)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}}.focus\:bg-brand\/15:focus{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.focus\:bg-brand\/15:focus{background-color:color-mix(in oklab, var(--brand) 15%, transparent)}}.focus\:text-brand:focus{color:var(--brand)}.focus-visible\:border-0:focus-visible{border-style:var(--tw-border-style);border-width:0}.focus-visible\:border-brand\/55:focus-visible{border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:border-brand\/55:focus-visible{border-color:color-mix(in oklab, var(--brand) 55%, transparent)}}.focus-visible\:bg-ground\/80:focus-visible{background-color:var(--ground)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:bg-ground\/80:focus-visible{background-color:color-mix(in oklab, var(--ground) 80%, transparent)}}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-brand\/50:focus-visible{--tw-ring-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-brand\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--brand) 50%, transparent)}}.focus-visible\:ring-ring\/60:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/60:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 60%, transparent)}}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-ground:focus-visible{--tw-ring-offset-color:var(--ground)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}@media (hover:hover){.enabled\:hover\:scale-105:enabled:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.enabled\:hover\:border-line-strong:enabled:hover{border-color:var(--line-strong)}.enabled\:hover\:bg-brand\/20:enabled:hover{background-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.enabled\:hover\:bg-brand\/20:enabled:hover{background-color:color-mix(in oklab, var(--brand) 20%, transparent)}}.enabled\:hover\:text-ink:enabled:hover{color:var(--ink)}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-45:disabled{opacity:.45}.disabled\:opacity-50:disabled{opacity:.5}.has-\[textarea\:focus\]\:border-brand\/50:has(:is(textarea:focus)){border-color:var(--brand)}@supports (color:color-mix(in lab, red, red)){.has-\[textarea\:focus\]\:border-brand\/50:has(:is(textarea:focus)){border-color:color-mix(in oklab, var(--brand) 50%, transparent)}}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing) * 2.5)}.has-\[\>svg\]\:px-3\.5:has(>svg){padding-inline:calc(var(--spacing) * 3.5)}.has-\[\>svg\]\:px-5:has(>svg){padding-inline:calc(var(--spacing) * 5)}.aria-invalid\:border-destructive[aria-invalid=true],.aria-invalid\:border-destructive\/60[aria-invalid=true]{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:border-destructive\/60[aria-invalid=true]{border-color:color-mix(in oklab, var(--destructive) 60%, transparent)}}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[side\=bottom\]\:slide-in-from-top-1[data-side=bottom]{--tw-enter-translate-y:calc(1*var(--spacing)*-1)}.data-\[side\=top\]\:slide-in-from-bottom-1[data-side=top]{--tw-enter-translate-y:calc(1*var(--spacing))}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}@media not all and (width>=19rem){.max-\[19rem\]\:hidden{display:none}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}.\[\&\>div\]\:block\!>div{display:block!important}.\[\&\>span\]\:min-w-0>span{min-width:0}.\[\&\>span\]\:truncate>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-2\.5>svg{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--radius:.75rem}[data-theme=ember]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ground:oklch(15.2% .016 52);--ground-2:oklch(18.3% .018 50);--surface:oklch(21.3% .019 48);--surface-2:oklch(25.3% .021 46);--ink:oklch(95.8% .012 70);--ink-dim:oklch(73.5% .018 60);--ink-faint:oklch(57.5% .02 55);--line:oklch(98% .01 60/.1);--line-strong:oklch(98% .01 60/.18);--brand:oklch(83% .13 195);--brand-deep:oklch(62% .12 200);--ember:oklch(73.5% .168 42);--magenta:oklch(70% .21 335);--lime:oklch(84% .18 150);--amber:oklch(84% .15 85);--danger:oklch(64.5% .205 25);--wash:oklch(98% .01 60);--grain:.03;--neon:55%;--glow:72%}[data-theme=midnight]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ground:oklch(15.8% .024 264);--ground-2:oklch(19.2% .028 264);--surface:oklch(22.8% .032 264);--surface-2:oklch(27.2% .036 264);--ink:oklch(95.8% .012 268);--ink-dim:oklch(74.2% .022 266);--ink-faint:oklch(58.5% .026 265);--line:oklch(97% .02 268/.11);--line-strong:oklch(97% .02 268/.19);--brand:oklch(79% .15 288);--brand-deep:oklch(60% .16 288);--ember:oklch(75% .16 22);--magenta:oklch(72% .2 330);--lime:oklch(85% .17 165);--amber:oklch(86% .14 82);--danger:oklch(66% .21 20);--wash:oklch(97% .02 268);--grain:.03;--neon:55%;--glow:72%}[data-theme=phosphor]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ground:oklch(14.2% .022 152);--ground-2:oklch(17.6% .026 152);--surface:oklch(20.8% .03 150);--surface-2:oklch(25% .034 150);--ink:oklch(94.5% .06 150);--ink-dim:oklch(75.5% .075 150);--ink-faint:oklch(60% .062 150);--line:oklch(90% .12 150/.14);--line-strong:oklch(90% .12 150/.24);--brand:oklch(86% .2 152);--brand-deep:oklch(66% .17 152);--ember:oklch(79% .16 48);--magenta:oklch(74% .2 338);--lime:oklch(90% .2 122);--amber:oklch(87% .16 92);--danger:oklch(66% .2 28);--wash:oklch(92% .1 150);--grain:.045;--neon:68%;--glow:85%}[data-theme=daylight]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ground:oklch(98.8% .004 88);--ground-2:oklch(96.8% .006 84);--surface:oklch(94.5% .008 80);--surface-2:oklch(90% .011 78);--ink:oklch(26.5% .018 58);--ink-dim:oklch(45.5% .02 56);--ink-faint:oklch(55.6% .02 55);--line:oklch(30% .02 58/.13);--line-strong:oklch(30% .02 58/.24);--brand:oklch(51.4% .12 214);--brand-deep:oklch(42% .11 218);--ember:oklch(55.2% .17 40);--magenta:oklch(53% .2 335);--lime:oklch(52% .14 148);--amber:oklch(56.2% .13 68);--danger:oklch(54% .2 26);--wash:oklch(32% .02 58);--grain:0;--neon:0%;--glow:26%}:root{--background:var(--ground);--foreground:var(--ink);--card:var(--ground-2);--card-foreground:var(--ink);--popover:var(--surface);--popover-foreground:var(--ink);--primary:var(--brand);--primary-foreground:var(--ground);--secondary:var(--surface);--secondary-foreground:var(--ink);--muted:var(--ground-2);--muted-foreground:var(--ink-dim);--accent:var(--surface-2);--accent-foreground:var(--ink);--destructive:var(--danger);--border:var(--line);--input:var(--line-strong);--ring:var(--brand)}@keyframes browsentic-countdown{0%{width:100%}to{width:0%}}@keyframes browsentic-token{0%{opacity:0;filter:blur(4px);transform:translateY(2px)}to{opacity:1;filter:blur();transform:none}}@keyframes browsentic-enter{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes browsentic-caret{0%,45%{opacity:1}55%,to{opacity:0}}@keyframes browsentic-think{0%,70%,to{opacity:.25;transform:translateY(0)}35%{opacity:1;transform:translateY(-2px)}}@keyframes browsentic-sweep{0%{transform:translate(-100%)}to{transform:translate(320%)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes 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));filter:blur(var(--tw-exit-blur,0))}}
|
|
File without changes
|