opencami 1.9.1 → 2.0.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/client/assets/{CSPContext-B3PAVjBL.js → CSPContext-CrlIQW7-.js} +1 -1
- package/dist/client/assets/{DirectionContext-CR5CCisG.js → DirectionContext-X-0CRn1O.js} +1 -1
- package/dist/client/assets/_sessionKey-yNQ57svB.js +23 -0
- package/dist/client/assets/agents-WqWjsymD.js +2 -0
- package/dist/client/assets/{agents-screen--ZMzN5cB.js → agents-screen-BhOVp_S6.js} +1 -1
- package/dist/client/assets/bots-DNqiFT7w.js +2 -0
- package/dist/client/assets/{bots-screen-C_uJBNwI.js → bots-screen-DLFd0ydi.js} +1 -1
- package/dist/client/assets/button-D0n2Qsd_.js +1 -0
- package/dist/client/assets/{composite-DArWbFHm.js → composite-GtKwZKbV.js} +1 -1
- package/dist/client/assets/{connect-B48HecjN.js → connect-vQWL0_11.js} +1 -1
- package/dist/client/assets/{dashboard-BVKx9FMy.js → dashboard-Knwc61i1.js} +1 -1
- package/dist/client/assets/{event-BCwqPPkP.js → event-CHpdjYFR.js} +1 -1
- package/dist/client/assets/file-explorer-screen-FoYNs9zK.js +1 -0
- package/dist/client/assets/files-BtR_gArr.js +2 -0
- package/dist/client/assets/follow-up-suggestions-DVXNLqga.js +5 -0
- package/dist/client/assets/{index-0gdwm1_H.js → index-CNPHef4O.js} +1 -1
- package/dist/client/assets/{index-CGeJcqZ3.js → index-CTT0Y1ya.js} +1 -1
- package/dist/client/assets/{keyboard-shortcuts-dialog-CK_XTzLr.js → keyboard-shortcuts-dialog-DP8ptQ7N.js} +1 -1
- package/dist/client/assets/{main-B2CrcRuC.js → main-xPlWrMhO.js} +3 -3
- package/dist/client/assets/{markdown-CdkuX06F.js → markdown-3Js_RbUp.js} +1 -1
- package/dist/client/assets/memory-BRGPq5t6.js +2 -0
- package/dist/client/assets/{memory-screen-C1RfLy-d.js → memory-screen-nzRra2Qi.js} +1 -1
- package/dist/client/assets/{menu-CIwnliij.js → menu-BnSEqetd.js} +1 -1
- package/dist/client/assets/{opencami-logo-SVuYD55V.js → opencami-logo-B_hLbomw.js} +1 -1
- package/dist/client/assets/{proxy-BijR8W1L.js → proxy-BnlGpgC1.js} +1 -1
- package/dist/client/assets/{react-DWx7OvUo.js → react-BgjQyJHw.js} +1 -1
- package/dist/client/assets/{search-dialog-CB4KE8ec.js → search-dialog-Bib2QY9u.js} +1 -1
- package/dist/client/assets/{search-sources-badge-B8Z-8sSf.js → search-sources-badge-COHcYFRB.js} +1 -1
- package/dist/client/assets/{session-export-dialog-tDiFuv3a.js → session-export-dialog-ooPnfHh_.js} +1 -1
- package/dist/client/assets/settings-dialog-B8mz99u-.js +1 -0
- package/dist/client/assets/skills-DA9J_tsC.js +2 -0
- package/dist/client/assets/{skills-panel-fjJQVMog.js → skills-panel-D2uMdCHp.js} +1 -1
- package/dist/client/assets/styles-CWabEzNU.css +1 -0
- package/dist/client/assets/{switch-Bn5uei2k.js → switch-BUQ0qH6r.js} +1 -1
- package/dist/client/assets/{tabs-DOBNAUVE.js → tabs-BEyU6TjN.js} +1 -1
- package/dist/client/assets/{thinking-dfGrFAMV.js → thinking-CA48yhOE.js} +1 -1
- package/dist/client/assets/{tooltip-DOKkNFvu.js → tooltip-CcIdgcV0.js} +1 -1
- package/dist/client/assets/{use-file-explorer-state-BAa6Cxyr.js → use-file-explorer-state-CN_IJGcd.js} +2 -2
- package/dist/client/assets/{useBaseUiId-DFpBD0sg.js → useBaseUiId-ClbEYEil.js} +1 -1
- package/dist/client/assets/useCompositeItem-B_OxfJee.js +1 -0
- package/dist/client/assets/{useControlled-CQHE0ITz.js → useControlled-CyT-lqbs.js} +1 -1
- package/dist/client/assets/{useMutation-BFl-7GnD.js → useMutation-eQUrsn-X.js} +1 -1
- package/dist/client/assets/{useOnFirstRender-DlXHIIGk.js → useOnFirstRender-CR_o2MK_.js} +1 -1
- package/dist/client/assets/{useQuery-D-sF8Tld.js → useQuery-k6EMRoMD.js} +1 -1
- package/dist/server/assets/{_sessionKey-D8TGrDRM.js → _sessionKey-CaFqmyhU.js} +56 -263
- package/dist/server/assets/{_tanstack-start-manifest_v-DalBo2bY.js → _tanstack-start-manifest_v-P3skSR3R.js} +1 -1
- package/dist/server/assets/{follow-up-suggestions-C65ptDij.js → follow-up-suggestions-DHv2_XzB.js} +13 -74
- package/dist/server/assets/{index-gRco4Ina.js → index-C7lmufwX.js} +1 -1
- package/dist/server/assets/{router-DaKDqc9w.js → router-X2L0PDPI.js} +124 -287
- package/dist/server/assets/{search-dialog-DSSK93kq.js → search-dialog-CXhofdoP.js} +2 -2
- package/dist/server/assets/{settings-dialog-DyWNblva.js → settings-dialog-CPdftvjz.js} +1 -254
- package/dist/server/assets/{thinking-CU0FRlzT.js → thinking-YkRSlXtf.js} +2 -2
- package/dist/server/server.js +2 -2
- package/package.json +1 -1
- package/dist/client/assets/_sessionKey-Bg_9uype.js +0 -23
- package/dist/client/assets/agents-BiTHBb6Z.js +0 -2
- package/dist/client/assets/bots-DxhRnQp5.js +0 -2
- package/dist/client/assets/button-BciDmec0.js +0 -1
- package/dist/client/assets/file-explorer-screen-DPs-FWeA.js +0 -1
- package/dist/client/assets/files-SEycwYCa.js +0 -2
- package/dist/client/assets/follow-up-suggestions-BPjWBpiy.js +0 -5
- package/dist/client/assets/memory-C7lKdkmc.js +0 -2
- package/dist/client/assets/settings-dialog-aL-AH4Rt.js +0 -1
- package/dist/client/assets/skills-D1T6uemU.js +0 -2
- package/dist/client/assets/styles-D0L88B64.css +0 -1
- package/dist/client/assets/useCompositeItem-B-Axq9-D.js +0 -1
|
@@ -2,13 +2,12 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useState, useEffect, useRef } from "react";
|
|
3
3
|
import { create } from "zustand";
|
|
4
4
|
import { HugeiconsIcon } from "@hugeicons/react";
|
|
5
|
-
import { Cancel01Icon, Link01Icon, PaintBoardIcon, MessageEdit01Icon, Settings02Icon, UserIcon, VoiceIcon,
|
|
5
|
+
import { Cancel01Icon, Link01Icon, PaintBoardIcon, MessageEdit01Icon, Settings02Icon, UserIcon, VoiceIcon, InformationCircleIcon, ComputerIcon, Sun01Icon, Moon01Icon, Leaf01Icon, DropletIcon } from "@hugeicons/core-free-icons";
|
|
6
6
|
import { B as Button, c as cn } from "./button-kI8fEIZQ.js";
|
|
7
7
|
import { D as DialogRoot, a as DialogContent, b as DialogTitle, c as DialogDescription, d as DialogClose } from "./use-file-explorer-state-E6cUvMva.js";
|
|
8
8
|
import { S as Switch } from "./switch-BZzwkgAQ.js";
|
|
9
9
|
import { T as Tabs, a as TabsList, b as TabsTab } from "./tabs-CWbp3mT4.js";
|
|
10
10
|
import { u as useChatSettings } from "./index-B_F4DTUu.js";
|
|
11
|
-
import { u as useLlmSettings, g as getLlmProviderDefaults } from "./_sessionKey-D8TGrDRM.js";
|
|
12
11
|
import "@base-ui/react/merge-props";
|
|
13
12
|
import "@base-ui/react/use-render";
|
|
14
13
|
import "class-variance-authority";
|
|
@@ -18,35 +17,6 @@ import "@base-ui/react/dialog";
|
|
|
18
17
|
import "@base-ui/react/switch";
|
|
19
18
|
import "@base-ui/react/tabs";
|
|
20
19
|
import "zustand/middleware";
|
|
21
|
-
import "@tanstack/react-router";
|
|
22
|
-
import "@tanstack/react-query";
|
|
23
|
-
import "./tooltip-DOvOrSSS.js";
|
|
24
|
-
import "@base-ui/react/tooltip";
|
|
25
|
-
import "motion/react";
|
|
26
|
-
import "@base-ui/react/alert-dialog";
|
|
27
|
-
import "@base-ui/react/collapsible";
|
|
28
|
-
import "@base-ui/react/scroll-area";
|
|
29
|
-
import "./menu-D8cKTpmN.js";
|
|
30
|
-
import "@base-ui/react/menu";
|
|
31
|
-
import "./opencami-logo-C-43FL3R.js";
|
|
32
|
-
import "./markdown-CFdYXCRQ.js";
|
|
33
|
-
import "marked";
|
|
34
|
-
import "react-markdown";
|
|
35
|
-
import "remark-breaks";
|
|
36
|
-
import "remark-gfm";
|
|
37
|
-
import "react-dom";
|
|
38
|
-
import "./router-DaKDqc9w.js";
|
|
39
|
-
import "node:crypto";
|
|
40
|
-
import "node:fs";
|
|
41
|
-
import "node:os";
|
|
42
|
-
import "node:path";
|
|
43
|
-
import "ws";
|
|
44
|
-
import "@tanstack/router-core/ssr/client";
|
|
45
|
-
import "node:stream";
|
|
46
|
-
import "node:child_process";
|
|
47
|
-
import "node:util";
|
|
48
|
-
import "node:fs/promises";
|
|
49
|
-
import "path";
|
|
50
20
|
function getInitialEnabled() {
|
|
51
21
|
if (typeof window === "undefined") return false;
|
|
52
22
|
try {
|
|
@@ -275,16 +245,7 @@ function SettingsDialog({
|
|
|
275
245
|
onClose
|
|
276
246
|
}) {
|
|
277
247
|
const { settings, updateSettings } = useChatSettings();
|
|
278
|
-
const {
|
|
279
|
-
settings: llmSettings,
|
|
280
|
-
updateSettings: updateLlmSettings,
|
|
281
|
-
status: llmStatus,
|
|
282
|
-
testApiKey
|
|
283
|
-
} = useLlmSettings();
|
|
284
248
|
const [activeTab, setActiveTab] = useState("appearance");
|
|
285
|
-
const [apiKeyInput, setApiKeyInput] = useState(llmSettings.llmApiKey);
|
|
286
|
-
const [testingKey, setTestingKey] = useState(false);
|
|
287
|
-
const [testResult, setTestResult] = useState(null);
|
|
288
249
|
const [textSize, setTextSize] = useState(() => {
|
|
289
250
|
if (typeof window === "undefined") return "16px";
|
|
290
251
|
try {
|
|
@@ -619,29 +580,6 @@ function SettingsDialog({
|
|
|
619
580
|
})
|
|
620
581
|
);
|
|
621
582
|
};
|
|
622
|
-
const handleTestApiKey = async () => {
|
|
623
|
-
if (!apiKeyInput.trim()) return;
|
|
624
|
-
setTestingKey(true);
|
|
625
|
-
setTestResult(null);
|
|
626
|
-
try {
|
|
627
|
-
const result = await testApiKey(apiKeyInput.trim());
|
|
628
|
-
setTestResult(result);
|
|
629
|
-
if (result.valid) {
|
|
630
|
-
updateLlmSettings({ llmApiKey: apiKeyInput.trim() });
|
|
631
|
-
}
|
|
632
|
-
} finally {
|
|
633
|
-
setTestingKey(false);
|
|
634
|
-
}
|
|
635
|
-
};
|
|
636
|
-
const handleSaveApiKey = () => {
|
|
637
|
-
updateLlmSettings({ llmApiKey: apiKeyInput.trim() });
|
|
638
|
-
setTestResult(null);
|
|
639
|
-
};
|
|
640
|
-
const handleClearApiKey = () => {
|
|
641
|
-
setApiKeyInput("");
|
|
642
|
-
updateLlmSettings({ llmApiKey: "" });
|
|
643
|
-
setTestResult(null);
|
|
644
|
-
};
|
|
645
583
|
const themeOptions = [
|
|
646
584
|
{ value: "system", label: "Auto", icon: ComputerIcon },
|
|
647
585
|
{ value: "light", label: "Light", icon: Sun01Icon },
|
|
@@ -721,7 +659,6 @@ function SettingsDialog({
|
|
|
721
659
|
{ id: "workspace", label: "Workspace", icon: Settings02Icon },
|
|
722
660
|
{ id: "personas", label: "Personas", icon: UserIcon },
|
|
723
661
|
{ id: "voice", label: "Voice", icon: VoiceIcon },
|
|
724
|
-
{ id: "llm", label: "LLM Features", icon: AiBrain01Icon },
|
|
725
662
|
{ id: "about", label: "About", icon: InformationCircleIcon }
|
|
726
663
|
].map((tab) => /* @__PURE__ */ jsxs(
|
|
727
664
|
"button",
|
|
@@ -1296,196 +1233,6 @@ function SettingsDialog({
|
|
|
1296
1233
|
)
|
|
1297
1234
|
}
|
|
1298
1235
|
),
|
|
1299
|
-
/* @__PURE__ */ jsxs(
|
|
1300
|
-
SettingsSection,
|
|
1301
|
-
{
|
|
1302
|
-
title: "LLM Features",
|
|
1303
|
-
tabId: "llm",
|
|
1304
|
-
activeTab,
|
|
1305
|
-
children: [
|
|
1306
|
-
/* @__PURE__ */ jsxs("div", { className: "text-xs text-primary-500 mb-3", children: [
|
|
1307
|
-
"Enhance session titles and follow-up suggestions using an LLM provider.",
|
|
1308
|
-
llmStatus.hasEnvKey && /* @__PURE__ */ jsx("span", { className: "block mt-1 text-green-600", children: "✓ Server has OPENAI_API_KEY configured" }),
|
|
1309
|
-
llmStatus.hasOpenRouterKey && /* @__PURE__ */ jsx("span", { className: "block mt-1 text-green-600", children: "✓ Server has OPENROUTER_API_KEY configured" }),
|
|
1310
|
-
llmStatus.hasKilocodeKey && /* @__PURE__ */ jsx("span", { className: "block mt-1 text-green-600", children: "✓ Server has KILOCODE_API_KEY configured" })
|
|
1311
|
-
] }),
|
|
1312
|
-
/* @__PURE__ */ jsx(
|
|
1313
|
-
SettingsRow,
|
|
1314
|
-
{
|
|
1315
|
-
inline: true,
|
|
1316
|
-
label: "Provider",
|
|
1317
|
-
description: "Choose LLM provider for titles & follow-ups",
|
|
1318
|
-
children: /* @__PURE__ */ jsxs(
|
|
1319
|
-
"select",
|
|
1320
|
-
{
|
|
1321
|
-
value: llmSettings.llmProvider,
|
|
1322
|
-
onChange: (e) => {
|
|
1323
|
-
const provider = e.target.value;
|
|
1324
|
-
updateLlmSettings({
|
|
1325
|
-
llmProvider: provider,
|
|
1326
|
-
llmBaseUrl: "",
|
|
1327
|
-
llmModel: ""
|
|
1328
|
-
});
|
|
1329
|
-
},
|
|
1330
|
-
className: "px-2 py-1 text-sm rounded-md border border-primary-200 bg-surface focus:outline-none focus:ring-2 focus:ring-primary-500",
|
|
1331
|
-
children: [
|
|
1332
|
-
/* @__PURE__ */ jsx("option", { value: "openai", children: "OpenAI" }),
|
|
1333
|
-
/* @__PURE__ */ jsx("option", { value: "openrouter", children: "OpenRouter" }),
|
|
1334
|
-
/* @__PURE__ */ jsx("option", { value: "kilocode", children: "Kilo Gateway" }),
|
|
1335
|
-
/* @__PURE__ */ jsx("option", { value: "ollama", children: "Ollama (local)" }),
|
|
1336
|
-
/* @__PURE__ */ jsx("option", { value: "custom", children: "Custom" })
|
|
1337
|
-
]
|
|
1338
|
-
}
|
|
1339
|
-
)
|
|
1340
|
-
}
|
|
1341
|
-
),
|
|
1342
|
-
/* @__PURE__ */ jsx(
|
|
1343
|
-
SettingsRow,
|
|
1344
|
-
{
|
|
1345
|
-
inline: true,
|
|
1346
|
-
label: "Smart session titles",
|
|
1347
|
-
description: "Generate concise titles using AI",
|
|
1348
|
-
children: /* @__PURE__ */ jsx(
|
|
1349
|
-
Switch,
|
|
1350
|
-
{
|
|
1351
|
-
checked: llmSettings.useLlmTitles,
|
|
1352
|
-
onCheckedChange: (checked) => updateLlmSettings({ useLlmTitles: checked }),
|
|
1353
|
-
disabled: !llmStatus.isAvailable
|
|
1354
|
-
}
|
|
1355
|
-
)
|
|
1356
|
-
}
|
|
1357
|
-
),
|
|
1358
|
-
/* @__PURE__ */ jsx(
|
|
1359
|
-
SettingsRow,
|
|
1360
|
-
{
|
|
1361
|
-
inline: true,
|
|
1362
|
-
label: "Smart follow-up suggestions",
|
|
1363
|
-
description: "AI-generated contextual follow-ups",
|
|
1364
|
-
children: /* @__PURE__ */ jsx(
|
|
1365
|
-
Switch,
|
|
1366
|
-
{
|
|
1367
|
-
checked: llmSettings.useLlmFollowUps,
|
|
1368
|
-
onCheckedChange: (checked) => updateLlmSettings({ useLlmFollowUps: checked }),
|
|
1369
|
-
disabled: !llmStatus.isAvailable
|
|
1370
|
-
}
|
|
1371
|
-
)
|
|
1372
|
-
}
|
|
1373
|
-
),
|
|
1374
|
-
/* @__PURE__ */ jsxs("div", { className: "mt-2 space-y-2", children: [
|
|
1375
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
|
1376
|
-
/* @__PURE__ */ jsx("div", { className: "text-xs text-primary-500 mb-1", children: "Model" }),
|
|
1377
|
-
/* @__PURE__ */ jsx(
|
|
1378
|
-
"input",
|
|
1379
|
-
{
|
|
1380
|
-
type: "text",
|
|
1381
|
-
value: llmSettings.llmModel,
|
|
1382
|
-
onChange: (e) => updateLlmSettings({ llmModel: e.target.value }),
|
|
1383
|
-
placeholder: getLlmProviderDefaults(llmSettings.llmProvider).model || "model-name",
|
|
1384
|
-
className: "w-full px-3 py-1.5 text-sm rounded-md border border-primary-200 bg-surface focus:outline-none focus:ring-2 focus:ring-primary-500"
|
|
1385
|
-
}
|
|
1386
|
-
)
|
|
1387
|
-
] }),
|
|
1388
|
-
(llmSettings.llmProvider === "custom" || llmSettings.llmProvider === "ollama") && /* @__PURE__ */ jsxs("div", { children: [
|
|
1389
|
-
/* @__PURE__ */ jsx("div", { className: "text-xs text-primary-500 mb-1", children: "Base URL" }),
|
|
1390
|
-
/* @__PURE__ */ jsx(
|
|
1391
|
-
"input",
|
|
1392
|
-
{
|
|
1393
|
-
type: "text",
|
|
1394
|
-
value: llmSettings.llmBaseUrl,
|
|
1395
|
-
onChange: (e) => updateLlmSettings({ llmBaseUrl: e.target.value }),
|
|
1396
|
-
placeholder: getLlmProviderDefaults(llmSettings.llmProvider).baseUrl || "https://...",
|
|
1397
|
-
className: "w-full px-3 py-1.5 text-sm rounded-md border border-primary-200 bg-surface focus:outline-none focus:ring-2 focus:ring-primary-500"
|
|
1398
|
-
}
|
|
1399
|
-
)
|
|
1400
|
-
] })
|
|
1401
|
-
] }),
|
|
1402
|
-
/* @__PURE__ */ jsxs("div", { className: "mt-4 pt-3 border-t border-primary-100", children: [
|
|
1403
|
-
/* @__PURE__ */ jsx("div", { className: "text-sm text-primary-800 mb-2", children: llmSettings.llmProvider === "ollama" ? "API Key (optional)" : "API Key" }),
|
|
1404
|
-
/* @__PURE__ */ jsx("div", { className: "text-xs text-primary-500 mb-2", children: llmSettings.llmProvider === "ollama" ? "Not required for local Ollama" : llmStatus.hasEnvKey && llmSettings.llmProvider === "openai" ? "Optional: Override server key with your own" : `Required for ${llmSettings.llmProvider === "openrouter" ? "OpenRouter" : llmSettings.llmProvider === "kilocode" ? "Kilo Gateway" : "LLM features"} (stored locally)` }),
|
|
1405
|
-
/* @__PURE__ */ jsxs("div", { className: "text-xs text-amber-600 bg-amber-50 border border-amber-200 rounded-md px-2 py-1.5 mb-2", children: [
|
|
1406
|
-
"⚠️ ",
|
|
1407
|
-
/* @__PURE__ */ jsx("strong", { children: "Security Note:" }),
|
|
1408
|
-
" API keys are stored in your browser's localStorage. This is convenient but not secure for shared computers. For production use, configure keys server-side via environment variables (OPENAI_API_KEY, OPENROUTER_API_KEY, KILOCODE_API_KEY)."
|
|
1409
|
-
] }),
|
|
1410
|
-
/* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
|
|
1411
|
-
/* @__PURE__ */ jsx(
|
|
1412
|
-
"input",
|
|
1413
|
-
{
|
|
1414
|
-
type: "password",
|
|
1415
|
-
value: apiKeyInput,
|
|
1416
|
-
onChange: (e) => {
|
|
1417
|
-
setApiKeyInput(e.target.value);
|
|
1418
|
-
setTestResult(null);
|
|
1419
|
-
},
|
|
1420
|
-
placeholder: "sk-...",
|
|
1421
|
-
className: "flex-1 px-3 py-1.5 text-sm rounded-md border border-primary-200 bg-surface focus:outline-none focus:ring-2 focus:ring-primary-500"
|
|
1422
|
-
}
|
|
1423
|
-
),
|
|
1424
|
-
/* @__PURE__ */ jsx(
|
|
1425
|
-
Button,
|
|
1426
|
-
{
|
|
1427
|
-
size: "sm",
|
|
1428
|
-
variant: "outline",
|
|
1429
|
-
onClick: handleTestApiKey,
|
|
1430
|
-
disabled: !apiKeyInput.trim() || testingKey,
|
|
1431
|
-
className: "min-w-[60px]",
|
|
1432
|
-
children: testingKey ? /* @__PURE__ */ jsx(
|
|
1433
|
-
HugeiconsIcon,
|
|
1434
|
-
{
|
|
1435
|
-
icon: Loading02Icon,
|
|
1436
|
-
size: 16,
|
|
1437
|
-
className: "animate-spin"
|
|
1438
|
-
}
|
|
1439
|
-
) : "Test"
|
|
1440
|
-
}
|
|
1441
|
-
)
|
|
1442
|
-
] }),
|
|
1443
|
-
testResult && /* @__PURE__ */ jsxs(
|
|
1444
|
-
"div",
|
|
1445
|
-
{
|
|
1446
|
-
className: `mt-2 flex items-center gap-1.5 text-xs ${testResult.valid ? "text-green-600" : "text-red-600"}`,
|
|
1447
|
-
children: [
|
|
1448
|
-
/* @__PURE__ */ jsx(
|
|
1449
|
-
HugeiconsIcon,
|
|
1450
|
-
{
|
|
1451
|
-
icon: testResult.valid ? Tick01Icon : Cancel02Icon,
|
|
1452
|
-
size: 14
|
|
1453
|
-
}
|
|
1454
|
-
),
|
|
1455
|
-
testResult.valid ? "API key is valid" : testResult.error || "Invalid API key"
|
|
1456
|
-
]
|
|
1457
|
-
}
|
|
1458
|
-
),
|
|
1459
|
-
llmSettings.llmApiKey && /* @__PURE__ */ jsxs("div", { className: "mt-2 flex items-center justify-between", children: [
|
|
1460
|
-
/* @__PURE__ */ jsxs("span", { className: "text-xs text-green-600 flex items-center gap-1", children: [
|
|
1461
|
-
/* @__PURE__ */ jsx(HugeiconsIcon, { icon: Tick01Icon, size: 14 }),
|
|
1462
|
-
"Key saved"
|
|
1463
|
-
] }),
|
|
1464
|
-
/* @__PURE__ */ jsx(
|
|
1465
|
-
Button,
|
|
1466
|
-
{
|
|
1467
|
-
size: "sm",
|
|
1468
|
-
variant: "ghost",
|
|
1469
|
-
onClick: handleClearApiKey,
|
|
1470
|
-
className: "text-xs text-red-600 hover:text-red-700 hover:bg-red-50",
|
|
1471
|
-
children: "Clear"
|
|
1472
|
-
}
|
|
1473
|
-
)
|
|
1474
|
-
] }),
|
|
1475
|
-
apiKeyInput && apiKeyInput !== llmSettings.llmApiKey && !testResult?.valid && /* @__PURE__ */ jsx(
|
|
1476
|
-
Button,
|
|
1477
|
-
{
|
|
1478
|
-
size: "sm",
|
|
1479
|
-
variant: "outline",
|
|
1480
|
-
onClick: handleSaveApiKey,
|
|
1481
|
-
className: "mt-2 w-full",
|
|
1482
|
-
children: "Save without testing"
|
|
1483
|
-
}
|
|
1484
|
-
)
|
|
1485
|
-
] })
|
|
1486
|
-
]
|
|
1487
|
-
}
|
|
1488
|
-
),
|
|
1489
1236
|
/* @__PURE__ */ jsxs(
|
|
1490
1237
|
SettingsSection,
|
|
1491
1238
|
{
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useState, useEffect } from "react";
|
|
3
|
-
import { C as Collapsible,
|
|
3
|
+
import { C as Collapsible, a as CollapsibleTrigger, b as CollapsiblePanel } from "./_sessionKey-CaFqmyhU.js";
|
|
4
4
|
import { HugeiconsIcon } from "@hugeicons/react";
|
|
5
5
|
import { ArrowDown01Icon } from "@hugeicons/core-free-icons";
|
|
6
6
|
import { B as Button } from "./button-kI8fEIZQ.js";
|
|
@@ -26,7 +26,7 @@ import "remark-gfm";
|
|
|
26
26
|
import "./index-B_F4DTUu.js";
|
|
27
27
|
import "zustand/middleware";
|
|
28
28
|
import "react-dom";
|
|
29
|
-
import "./router-
|
|
29
|
+
import "./router-X2L0PDPI.js";
|
|
30
30
|
import "node:crypto";
|
|
31
31
|
import "node:fs";
|
|
32
32
|
import "node:os";
|
package/dist/server/server.js
CHANGED
|
@@ -184,7 +184,7 @@ function getResponse() {
|
|
|
184
184
|
return event.res;
|
|
185
185
|
}
|
|
186
186
|
async function getStartManifest(matchedRoutes) {
|
|
187
|
-
const { tsrStartManifest } = await import("./assets/_tanstack-start-manifest_v-
|
|
187
|
+
const { tsrStartManifest } = await import("./assets/_tanstack-start-manifest_v-P3skSR3R.js");
|
|
188
188
|
const startManifest = tsrStartManifest();
|
|
189
189
|
const rootRoute = startManifest.routes[rootRouteId] = startManifest.routes[rootRouteId] || {};
|
|
190
190
|
rootRoute.assets = rootRoute.assets || [];
|
|
@@ -753,7 +753,7 @@ let entriesPromise;
|
|
|
753
753
|
let baseManifestPromise;
|
|
754
754
|
let cachedFinalManifestPromise;
|
|
755
755
|
async function loadEntries() {
|
|
756
|
-
const routerEntry = await import("./assets/router-
|
|
756
|
+
const routerEntry = await import("./assets/router-X2L0PDPI.js").then((n) => n.r);
|
|
757
757
|
const startEntry = await import("./assets/start-HYkvq4Ni.js");
|
|
758
758
|
return { startEntry, routerEntry };
|
|
759
759
|
}
|