docs-i18n 0.7.2 → 0.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/admin/dist/client/assets/main-Ds-UH1id.js +17 -0
- package/admin/dist/client/assets/routes-C369Oboq.js +3 -0
- package/admin/dist/client/assets/styles-DJ6QEJmN.css +1 -0
- package/admin/dist/server/assets/_tanstack-start-manifest_v-sC90W3ET.js +17 -0
- package/admin/dist/server/assets/createServerRpc-CMjjCE8A.js +12 -0
- package/admin/dist/server/assets/init-AJSQ7K_l.js +41740 -0
- package/admin/dist/server/assets/jobs-CwDb0Zyp.js +50 -0
- package/admin/dist/server/assets/misc-CqYhnW23.js +94 -0
- package/admin/dist/server/assets/models-D9Sd95EX.js +49 -0
- package/admin/dist/server/assets/router-D00bP5CU.js +67 -0
- package/admin/dist/server/assets/routes-C2UFxDWZ.js +24 -0
- package/admin/dist/server/assets/routes-vEKXnl0r.js +1574 -0
- package/admin/dist/server/assets/start-BrsoKfWS.js +4 -0
- package/admin/dist/server/assets/status-D48jcwYI.js +81 -0
- package/admin/dist/server/server.js +5374 -0
- package/admin/package.json +7 -3
- package/admin/serve.mjs +87 -0
- package/dist/cli.js +36 -10
- package/package.json +2 -2
- package/template/package.json +1 -1
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { t as createServerFn } from "../server.js";
|
|
2
|
+
import { t as createServerRpc } from "./createServerRpc-CMjjCE8A.js";
|
|
3
|
+
import { ensureInit, l as jobManager } from "./init-AJSQ7K_l.js";
|
|
4
|
+
//#region server/functions/jobs.ts?tss-serverfn-split
|
|
5
|
+
var fetchJobs_createServerFn_handler = createServerRpc({
|
|
6
|
+
id: "421de02ce39dde6e27cf4689e837ec072cbd01e63f8cdd5c2a3f42f0bd5ca613",
|
|
7
|
+
name: "fetchJobs",
|
|
8
|
+
filename: "server/functions/jobs.ts"
|
|
9
|
+
}, (opts) => fetchJobs.__executeServer(opts));
|
|
10
|
+
var fetchJobs = createServerFn({ method: "GET" }).handler(fetchJobs_createServerFn_handler, async () => {
|
|
11
|
+
await ensureInit();
|
|
12
|
+
return jobManager.list().map((j) => ({
|
|
13
|
+
...j,
|
|
14
|
+
logLines: (j.logLines ?? []).slice(-20)
|
|
15
|
+
}));
|
|
16
|
+
});
|
|
17
|
+
var createJob_createServerFn_handler = createServerRpc({
|
|
18
|
+
id: "c08559ac758aa0d315deaca7a0d7d923a9a44d997c8cb811151417c1f221ddd6",
|
|
19
|
+
name: "createJob",
|
|
20
|
+
filename: "server/functions/jobs.ts"
|
|
21
|
+
}, (opts) => createJob.__executeServer(opts));
|
|
22
|
+
var createJob = createServerFn({ method: "POST" }).inputValidator((d) => d).handler(createJob_createServerFn_handler, async ({ data }) => {
|
|
23
|
+
await ensureInit();
|
|
24
|
+
if (!data.lang || !data.version) throw new Error("Missing lang or version");
|
|
25
|
+
return jobManager.start(data);
|
|
26
|
+
});
|
|
27
|
+
var fetchJob_createServerFn_handler = createServerRpc({
|
|
28
|
+
id: "8a56694c9d7b29422a3e7d2f6b803be100d79d3853d92d465cb55ed572781e62",
|
|
29
|
+
name: "fetchJob",
|
|
30
|
+
filename: "server/functions/jobs.ts"
|
|
31
|
+
}, (opts) => fetchJob.__executeServer(opts));
|
|
32
|
+
var fetchJob = createServerFn({ method: "GET" }).inputValidator((d) => d).handler(fetchJob_createServerFn_handler, async ({ data }) => {
|
|
33
|
+
const job = jobManager.get(data.id);
|
|
34
|
+
if (!job) throw new Error("Job not found");
|
|
35
|
+
return job;
|
|
36
|
+
});
|
|
37
|
+
var deleteJob_createServerFn_handler = createServerRpc({
|
|
38
|
+
id: "88c2855c84e91504070bfecc50ddfa50339d22c305626800b6d9b05d79385d71",
|
|
39
|
+
name: "deleteJob",
|
|
40
|
+
filename: "server/functions/jobs.ts"
|
|
41
|
+
}, (opts) => deleteJob.__executeServer(opts));
|
|
42
|
+
var deleteJob = createServerFn({ method: "POST" }).inputValidator((d) => d).handler(deleteJob_createServerFn_handler, async ({ data }) => {
|
|
43
|
+
const job = jobManager.get(data.id);
|
|
44
|
+
if (!job) throw new Error("Job not found");
|
|
45
|
+
if (job.status === "running") jobManager.cancel(data.id);
|
|
46
|
+
else jobManager.remove(data.id);
|
|
47
|
+
return { ok: true };
|
|
48
|
+
});
|
|
49
|
+
//#endregion
|
|
50
|
+
export { createJob_createServerFn_handler, deleteJob_createServerFn_handler, fetchJob_createServerFn_handler, fetchJobs_createServerFn_handler };
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { t as createServerFn } from "../server.js";
|
|
2
|
+
import { t as createServerRpc } from "./createServerRpc-CMjjCE8A.js";
|
|
3
|
+
import { c as getPackageVersion, ensureInit, getConfig } from "./init-AJSQ7K_l.js";
|
|
4
|
+
import { spawn } from "node:child_process";
|
|
5
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
6
|
+
import { resolve } from "node:path";
|
|
7
|
+
//#region server/functions/misc.ts?tss-serverfn-split
|
|
8
|
+
var fetchVersion_createServerFn_handler = createServerRpc({
|
|
9
|
+
id: "a3d81974aeece150d4b02be5b91590b8187442ebea56be4a89dcbf053626d22b",
|
|
10
|
+
name: "fetchVersion",
|
|
11
|
+
filename: "server/functions/misc.ts"
|
|
12
|
+
}, (opts) => fetchVersion.__executeServer(opts));
|
|
13
|
+
var fetchVersion = createServerFn({ method: "GET" }).handler(fetchVersion_createServerFn_handler, async () => {
|
|
14
|
+
return { version: getPackageVersion() };
|
|
15
|
+
});
|
|
16
|
+
var fetchLlmConfig_createServerFn_handler = createServerRpc({
|
|
17
|
+
id: "3bf4ba50ca8ccc3c8c60d8f2e53307a320940d68c478df494552066904c5cd74",
|
|
18
|
+
name: "fetchLlmConfig",
|
|
19
|
+
filename: "server/functions/misc.ts"
|
|
20
|
+
}, (opts) => fetchLlmConfig.__executeServer(opts));
|
|
21
|
+
var fetchLlmConfig = createServerFn({ method: "GET" }).handler(fetchLlmConfig_createServerFn_handler, async () => {
|
|
22
|
+
await ensureInit();
|
|
23
|
+
const llm = getConfig()?.llm;
|
|
24
|
+
let envVars = {};
|
|
25
|
+
try {
|
|
26
|
+
const { getProjectRoot } = await import("./init-AJSQ7K_l.js");
|
|
27
|
+
const envPath = resolve(getProjectRoot(), ".env");
|
|
28
|
+
if (existsSync(envPath)) {
|
|
29
|
+
const envContent = readFileSync(envPath, "utf-8");
|
|
30
|
+
for (const line of envContent.split("\n")) {
|
|
31
|
+
const match = line.match(/^\s*([A-Z_][A-Z0-9_]*)\s*=\s*(.*)\s*$/);
|
|
32
|
+
if (match) envVars[match[1]] = match[2];
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
} catch {}
|
|
36
|
+
const hasApiKey = !!(llm?.apiKey || process.env.OPENROUTER_API_KEY || process.env.OPENAI_API_KEY || envVars.OPENROUTER_API_KEY || envVars.OPENAI_API_KEY);
|
|
37
|
+
return {
|
|
38
|
+
model: llm?.model || process.env.OPENROUTER_MODEL || envVars.OPENROUTER_MODEL || "deepseek/deepseek-chat-v3-0324:free",
|
|
39
|
+
provider: llm?.provider || "openrouter",
|
|
40
|
+
hasApiKey
|
|
41
|
+
};
|
|
42
|
+
});
|
|
43
|
+
var fetchConfig_createServerFn_handler = createServerRpc({
|
|
44
|
+
id: "e0b4116f6b2c8d096830102e36458acf9c616a056fcdddda956a4d66984ef58c",
|
|
45
|
+
name: "fetchConfig",
|
|
46
|
+
filename: "server/functions/misc.ts"
|
|
47
|
+
}, (opts) => fetchConfig.__executeServer(opts));
|
|
48
|
+
var fetchConfig = createServerFn({ method: "GET" }).handler(fetchConfig_createServerFn_handler, async () => {
|
|
49
|
+
return { projectRoot: process.cwd() };
|
|
50
|
+
});
|
|
51
|
+
var openFile_createServerFn_handler = createServerRpc({
|
|
52
|
+
id: "a054a04356fe9987891efee8b7a11cd2dedb00f6b2e8f26d1c642e001e553d53",
|
|
53
|
+
name: "openFile",
|
|
54
|
+
filename: "server/functions/misc.ts"
|
|
55
|
+
}, (opts) => openFile.__executeServer(opts));
|
|
56
|
+
var openFile = createServerFn({ method: "POST" }).inputValidator((d) => d).handler(openFile_createServerFn_handler, async ({ data }) => {
|
|
57
|
+
const { file } = data;
|
|
58
|
+
if (!file) throw new Error("Missing file");
|
|
59
|
+
const fullPath = resolve(process.cwd(), file);
|
|
60
|
+
if (!fullPath.startsWith(process.cwd())) throw new Error("Invalid path");
|
|
61
|
+
const candidates = process.env.EDITOR_CMD ? [process.env.EDITOR_CMD] : [
|
|
62
|
+
"code",
|
|
63
|
+
"cursor",
|
|
64
|
+
"zed"
|
|
65
|
+
];
|
|
66
|
+
for (const cmd of candidates) if (await new Promise((r) => {
|
|
67
|
+
const p = spawn("which", [cmd], { stdio: "ignore" });
|
|
68
|
+
p.on("exit", (code) => r(code === 0));
|
|
69
|
+
p.on("error", () => r(false));
|
|
70
|
+
})) {
|
|
71
|
+
spawn(cmd, [fullPath], {
|
|
72
|
+
stdio: "ignore",
|
|
73
|
+
detached: true
|
|
74
|
+
}).unref();
|
|
75
|
+
return {
|
|
76
|
+
opened: fullPath,
|
|
77
|
+
editor: cmd
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
const fallback = {
|
|
81
|
+
darwin: "open",
|
|
82
|
+
win32: "start"
|
|
83
|
+
}[process.platform] || "xdg-open";
|
|
84
|
+
spawn(fallback, [fullPath], {
|
|
85
|
+
stdio: "ignore",
|
|
86
|
+
detached: true
|
|
87
|
+
}).unref();
|
|
88
|
+
return {
|
|
89
|
+
opened: fullPath,
|
|
90
|
+
editor: fallback
|
|
91
|
+
};
|
|
92
|
+
});
|
|
93
|
+
//#endregion
|
|
94
|
+
export { fetchConfig_createServerFn_handler, fetchLlmConfig_createServerFn_handler, fetchVersion_createServerFn_handler, openFile_createServerFn_handler };
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { t as createServerFn } from "../server.js";
|
|
2
|
+
import { t as createServerRpc } from "./createServerRpc-CMjjCE8A.js";
|
|
3
|
+
//#region server/functions/models.ts?tss-serverfn-split
|
|
4
|
+
var cachedResult = null;
|
|
5
|
+
var cacheTime = 0;
|
|
6
|
+
var CACHE_TTL = 300 * 1e3;
|
|
7
|
+
function formatModels(models) {
|
|
8
|
+
return models.filter((m) => {
|
|
9
|
+
if (!m.pricing) return false;
|
|
10
|
+
const pp = Number.parseFloat(m.pricing.prompt);
|
|
11
|
+
const cp = Number.parseFloat(m.pricing.completion);
|
|
12
|
+
if (pp < 0 || cp < 0) return false;
|
|
13
|
+
if (!m.architecture?.modality?.startsWith("text")) return false;
|
|
14
|
+
if (!m.architecture.output_modalities?.includes("text")) return false;
|
|
15
|
+
return true;
|
|
16
|
+
}).map((m) => {
|
|
17
|
+
const pp = Number.parseFloat(m.pricing.prompt) * 1e6;
|
|
18
|
+
const cp = Number.parseFloat(m.pricing.completion) * 1e6;
|
|
19
|
+
return {
|
|
20
|
+
id: m.id,
|
|
21
|
+
name: m.name,
|
|
22
|
+
promptPrice: pp,
|
|
23
|
+
completionPrice: cp,
|
|
24
|
+
contextLength: m.context_length,
|
|
25
|
+
maxOutput: m.top_provider?.max_completion_tokens ?? 0,
|
|
26
|
+
isFree: pp === 0 && cp === 0,
|
|
27
|
+
supportsJson: m.supported_parameters?.includes("response_format") || m.supported_parameters?.includes("structured_outputs"),
|
|
28
|
+
supportsTools: m.supported_parameters?.includes("tools"),
|
|
29
|
+
provider: m.id.split("/")[0]
|
|
30
|
+
};
|
|
31
|
+
}).sort((a, b) => a.promptPrice - b.promptPrice);
|
|
32
|
+
}
|
|
33
|
+
var fetchModels_createServerFn_handler = createServerRpc({
|
|
34
|
+
id: "5080dc3f2f2309ec6981b94c431969637130c657e8a1dfb10400b4614eecc1ea",
|
|
35
|
+
name: "fetchModels",
|
|
36
|
+
filename: "server/functions/models.ts"
|
|
37
|
+
}, (opts) => fetchModels.__executeServer(opts));
|
|
38
|
+
var fetchModels = createServerFn({ method: "GET" }).handler(fetchModels_createServerFn_handler, async () => {
|
|
39
|
+
const now = Date.now();
|
|
40
|
+
if (cachedResult && now - cacheTime < CACHE_TTL) return cachedResult;
|
|
41
|
+
const res = await fetch("https://openrouter.ai/api/v1/models");
|
|
42
|
+
if (!res.ok) throw new Error(`OpenRouter API error: ${res.status}`);
|
|
43
|
+
const { data } = await res.json();
|
|
44
|
+
cachedResult = formatModels(data);
|
|
45
|
+
cacheTime = now;
|
|
46
|
+
return cachedResult;
|
|
47
|
+
});
|
|
48
|
+
//#endregion
|
|
49
|
+
export { fetchModels_createServerFn_handler };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { t as Route$1 } from "./routes-C2UFxDWZ.js";
|
|
2
|
+
import "react";
|
|
3
|
+
import { HeadContent, Outlet, Scripts, createRootRouteWithContext, createRouter } from "@tanstack/react-router";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
6
|
+
//#region app/styles.css?url
|
|
7
|
+
var styles_default = "/assets/styles-DJ6QEJmN.css";
|
|
8
|
+
//#endregion
|
|
9
|
+
//#region app/routes/__root.tsx
|
|
10
|
+
var Route = createRootRouteWithContext()({
|
|
11
|
+
head: () => ({
|
|
12
|
+
meta: [{ charSet: "utf-8" }, {
|
|
13
|
+
name: "viewport",
|
|
14
|
+
content: "width=device-width, initial-scale=1"
|
|
15
|
+
}],
|
|
16
|
+
links: [{
|
|
17
|
+
rel: "stylesheet",
|
|
18
|
+
href: styles_default
|
|
19
|
+
}]
|
|
20
|
+
}),
|
|
21
|
+
component: RootComponent,
|
|
22
|
+
notFoundComponent: () => /* @__PURE__ */ jsx("div", {
|
|
23
|
+
style: { padding: 20 },
|
|
24
|
+
children: "Page not found"
|
|
25
|
+
})
|
|
26
|
+
});
|
|
27
|
+
function RootComponent() {
|
|
28
|
+
const { queryClient } = Route.useRouteContext();
|
|
29
|
+
return /* @__PURE__ */ jsx(RootDocument, { children: /* @__PURE__ */ jsx(QueryClientProvider, {
|
|
30
|
+
client: queryClient,
|
|
31
|
+
children: /* @__PURE__ */ jsx(Outlet, {})
|
|
32
|
+
}) });
|
|
33
|
+
}
|
|
34
|
+
function RootDocument({ children }) {
|
|
35
|
+
return /* @__PURE__ */ jsxs("html", {
|
|
36
|
+
lang: "en",
|
|
37
|
+
"data-theme": "dark",
|
|
38
|
+
suppressHydrationWarning: true,
|
|
39
|
+
children: [/* @__PURE__ */ jsx("head", { children: /* @__PURE__ */ jsx(HeadContent, {}) }), /* @__PURE__ */ jsxs("body", { children: [
|
|
40
|
+
/* @__PURE__ */ jsx("script", { dangerouslySetInnerHTML: { __html: `document.documentElement.dataset.theme=localStorage.getItem('theme')||'dark'` } }),
|
|
41
|
+
children,
|
|
42
|
+
/* @__PURE__ */ jsx(Scripts, {})
|
|
43
|
+
] })]
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
//#endregion
|
|
47
|
+
//#region app/routeTree.gen.ts
|
|
48
|
+
var rootRouteChildren = { IndexRoute: Route$1.update({
|
|
49
|
+
id: "/",
|
|
50
|
+
path: "/",
|
|
51
|
+
getParentRoute: () => Route
|
|
52
|
+
}) };
|
|
53
|
+
var routeTree = Route._addFileChildren(rootRouteChildren)._addFileTypes();
|
|
54
|
+
//#endregion
|
|
55
|
+
//#region app/router.tsx
|
|
56
|
+
function getRouter() {
|
|
57
|
+
return createRouter({
|
|
58
|
+
routeTree,
|
|
59
|
+
context: { queryClient: new QueryClient({ defaultOptions: { queries: {
|
|
60
|
+
refetchOnWindowFocus: false,
|
|
61
|
+
retry: 1
|
|
62
|
+
} } }) },
|
|
63
|
+
scrollRestoration: true
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
//#endregion
|
|
67
|
+
export { getRouter };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
|
|
2
|
+
//#region app/routes/index.tsx
|
|
3
|
+
var $$splitComponentImporter = () => import("./routes-vEKXnl0r.js");
|
|
4
|
+
/**
|
|
5
|
+
* Parse version keys into project/version structure.
|
|
6
|
+
* Multi-project keys look like "query/v5", single-project keys look like "v5".
|
|
7
|
+
*/
|
|
8
|
+
var Route = createFileRoute("/")({
|
|
9
|
+
validateSearch: (search) => ({
|
|
10
|
+
project: search.project || void 0,
|
|
11
|
+
v: search.v || void 0,
|
|
12
|
+
lang: search.lang || void 0,
|
|
13
|
+
file: search.file || void 0,
|
|
14
|
+
files: search.files || void 0,
|
|
15
|
+
view: search.view || void 0,
|
|
16
|
+
toc: search.toc || void 0,
|
|
17
|
+
nodes: search.nodes || void 0,
|
|
18
|
+
status: search.status || void 0,
|
|
19
|
+
section: search.section || void 0
|
|
20
|
+
}),
|
|
21
|
+
component: lazyRouteComponent($$splitComponentImporter, "component")
|
|
22
|
+
});
|
|
23
|
+
//#endregion
|
|
24
|
+
export { Route as t };
|