@tianshu-ai/tianshu 0.46.0 → 0.46.2
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/package.json +5 -2
- package/packages/server/dist/boot/asr-admin.d.ts.map +1 -1
- package/packages/server/dist/boot/asr-admin.js +51 -12
- package/packages/server/dist/boot/asr-admin.js.map +1 -1
- package/packages/server/dist/boot/asr.d.ts.map +1 -1
- package/packages/server/dist/boot/asr.js +31 -34
- package/packages/server/dist/boot/asr.js.map +1 -1
- package/packages/web/dist/assets/{DataSourceConfigForm-C-lie1Ai.js → DataSourceConfigForm-C6qAYr9B.js} +1 -1
- package/packages/web/dist/assets/{bundle-web-BRIxvUoT.js → bundle-web-gP7NgOwl.js} +1 -1
- package/packages/web/dist/assets/{index-DpyTrcwj.js → index-C-8gHF3A.js} +6 -6
- package/packages/web/dist/assets/{index-COZHSDNW.css → index-lev5fQE8.css} +1 -1
- package/packages/web/dist/assets/{react-force-graph-2d-DRTEio1a.js → react-force-graph-2d-JEtQ5vbp.js} +1 -1
- package/packages/web/dist/index.html +2 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tianshu-ai/tianshu",
|
|
3
|
-
"version": "0.46.
|
|
3
|
+
"version": "0.46.2",
|
|
4
4
|
"description": "An open AI agent platform with a sidecar browser. Built in public.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://github.com/tianshu-ai/tianshu",
|
|
@@ -86,5 +86,8 @@
|
|
|
86
86
|
},
|
|
87
87
|
"bundleDependencies": [
|
|
88
88
|
"@tianshu-ai/plugin-sdk"
|
|
89
|
-
]
|
|
89
|
+
],
|
|
90
|
+
"optionalDependencies": {
|
|
91
|
+
"sherpa-onnx-node": "^1.13.7"
|
|
92
|
+
}
|
|
90
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asr-admin.d.ts","sourceRoot":"","sources":["../../src/boot/asr-admin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,OAAO,EAA+B,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"asr-admin.d.ts","sourceRoot":"","sources":["../../src/boot/asr-admin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,OAAO,EAA+B,MAAM,SAAS,CAAC;AAwGpE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CA8ItD"}
|
|
@@ -9,6 +9,7 @@ import * as fs from "node:fs";
|
|
|
9
9
|
import * as path from "node:path";
|
|
10
10
|
import { createWriteStream } from "node:fs";
|
|
11
11
|
import { execSync } from "node:child_process";
|
|
12
|
+
import { getTianshuHome } from "../core/paths.js";
|
|
12
13
|
const MODELS = [
|
|
13
14
|
{
|
|
14
15
|
id: "paraformer-zh-small",
|
|
@@ -49,20 +50,33 @@ const MODELS = [
|
|
|
49
50
|
];
|
|
50
51
|
// Download state
|
|
51
52
|
const downloads = new Map();
|
|
53
|
+
/** Walk up from server dist to find the top-level package.json with the bin field. */
|
|
54
|
+
function findPackageRoot() {
|
|
55
|
+
let dir = path.resolve(import.meta.dirname ?? process.cwd());
|
|
56
|
+
for (let i = 0; i < 10; i++) {
|
|
57
|
+
const pkg = path.join(dir, "package.json");
|
|
58
|
+
if (fs.existsSync(pkg)) {
|
|
59
|
+
try {
|
|
60
|
+
const json = JSON.parse(fs.readFileSync(pkg, "utf8"));
|
|
61
|
+
if (json.bin?.tianshu || json.name === "@tianshu-ai/tianshu")
|
|
62
|
+
return dir;
|
|
63
|
+
}
|
|
64
|
+
catch { }
|
|
65
|
+
}
|
|
66
|
+
const parent = path.dirname(dir);
|
|
67
|
+
if (parent === dir)
|
|
68
|
+
break;
|
|
69
|
+
dir = parent;
|
|
70
|
+
}
|
|
71
|
+
return process.cwd();
|
|
72
|
+
}
|
|
52
73
|
function getModelsDir() {
|
|
53
|
-
//
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
]) {
|
|
58
|
-
const dir = path.join(base, "models");
|
|
59
|
-
if (fs.existsSync(dir))
|
|
60
|
-
return dir;
|
|
74
|
+
// Primary: <TIANSHU_HOME>/models (works for both dev and production)
|
|
75
|
+
const homeDir = path.join(getTianshuHome(), "models");
|
|
76
|
+
if (!fs.existsSync(homeDir)) {
|
|
77
|
+
fs.mkdirSync(homeDir, { recursive: true });
|
|
61
78
|
}
|
|
62
|
-
|
|
63
|
-
const dir = path.resolve(process.cwd(), "..", "..", "models");
|
|
64
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
65
|
-
return dir;
|
|
79
|
+
return homeDir;
|
|
66
80
|
}
|
|
67
81
|
function isInstalled(model) {
|
|
68
82
|
const modelsDir = getModelsDir();
|
|
@@ -172,6 +186,31 @@ export function mountAsrAdminRoutes(app) {
|
|
|
172
186
|
return res.json({ status: "idle" });
|
|
173
187
|
res.json(state);
|
|
174
188
|
});
|
|
189
|
+
// Install sherpa-onnx-node runtime
|
|
190
|
+
app.post("/api/admin/asr/install-runtime", async (_req, res) => {
|
|
191
|
+
try {
|
|
192
|
+
// Find the tianshu package root (where package.json lives)
|
|
193
|
+
const pkgRoot = findPackageRoot();
|
|
194
|
+
if (!pkgRoot) {
|
|
195
|
+
res.status(500).json({ error: "Cannot find tianshu package root" });
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
res.json({ ok: true, message: "installing" });
|
|
199
|
+
// Run in background — don't block the response
|
|
200
|
+
const { exec } = await import("node:child_process");
|
|
201
|
+
exec(`npm install sherpa-onnx-node`, { cwd: pkgRoot, timeout: 120_000 }, (err) => {
|
|
202
|
+
if (err) {
|
|
203
|
+
console.error("[asr-admin] runtime install failed:", err.message);
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
console.log("[asr-admin] sherpa-onnx-node installed successfully");
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
catch (e) {
|
|
211
|
+
res.status(500).json({ error: String(e) });
|
|
212
|
+
}
|
|
213
|
+
});
|
|
175
214
|
// Activate model
|
|
176
215
|
app.post("/api/admin/asr/models/:id/activate", async (req, res) => {
|
|
177
216
|
const paramId = Array.isArray(req.params.id) ? req.params.id[0] : req.params.id;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asr-admin.js","sourceRoot":"","sources":["../../src/boot/asr-admin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"asr-admin.js","sourceRoot":"","sources":["../../src/boot/asr-admin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asr.d.ts","sourceRoot":"","sources":["../../src/boot/asr.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,OAAO,EAA+B,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"asr.d.ts","sourceRoot":"","sources":["../../src/boot/asr.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,OAAO,EAA+B,MAAM,SAAS,CAAC;AASpE,yEAAyE;AACzE,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAGvD;AAkID,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAyDhD"}
|
|
@@ -10,8 +10,7 @@ import { execSync } from "node:child_process";
|
|
|
10
10
|
import * as fs from "node:fs";
|
|
11
11
|
import * as path from "node:path";
|
|
12
12
|
import * as os from "node:os";
|
|
13
|
-
import {
|
|
14
|
-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
13
|
+
import { getTianshuHome } from "../core/paths.js";
|
|
15
14
|
let recognizer = null;
|
|
16
15
|
/** Force reload the recognizer (called when admin activates a model). */
|
|
17
16
|
export async function reloadAsrModel() {
|
|
@@ -26,45 +25,34 @@ const MODEL_CANDIDATES = [
|
|
|
26
25
|
];
|
|
27
26
|
function getModelsRoots() {
|
|
28
27
|
return [
|
|
29
|
-
path.join(
|
|
30
|
-
path.join(process.cwd(), "..", "..", "models"),
|
|
31
|
-
path.join(process.cwd(), "..", "models"),
|
|
32
|
-
path.resolve(__dirname, "..", "..", "..", "..", "models"),
|
|
28
|
+
path.join(getTianshuHome(), "models"),
|
|
33
29
|
];
|
|
34
30
|
}
|
|
35
31
|
function findBestModel() {
|
|
36
|
-
const
|
|
32
|
+
const modelsRoot = getModelsRoots()[0];
|
|
37
33
|
// Check if admin selected a specific model
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
for (const root2 of roots) {
|
|
53
|
-
const dir = path.join(root2, pick.dirName);
|
|
54
|
-
if (fs.existsSync(path.join(dir, pick.model))) {
|
|
55
|
-
return { dir, type: pick.type, model: pick.model, tokens: "tokens.txt" };
|
|
56
|
-
}
|
|
57
|
-
}
|
|
34
|
+
const activeFile = path.join(modelsRoot, "active-asr-model.txt");
|
|
35
|
+
if (fs.existsSync(activeFile)) {
|
|
36
|
+
const activeId = fs.readFileSync(activeFile, "utf8").trim();
|
|
37
|
+
const byId = {
|
|
38
|
+
"paraformer-zh-small": MODEL_CANDIDATES[2],
|
|
39
|
+
"paraformer-zh": MODEL_CANDIDATES[1],
|
|
40
|
+
"sense-voice-zh": MODEL_CANDIDATES[0],
|
|
41
|
+
"whisper-tiny": MODEL_CANDIDATES[3],
|
|
42
|
+
};
|
|
43
|
+
const pick = byId[activeId];
|
|
44
|
+
if (pick) {
|
|
45
|
+
const dir = path.join(modelsRoot, pick.dirName);
|
|
46
|
+
if (fs.existsSync(path.join(dir, pick.model))) {
|
|
47
|
+
return { dir, type: pick.type, model: pick.model, tokens: "tokens.txt" };
|
|
58
48
|
}
|
|
59
49
|
}
|
|
60
50
|
}
|
|
61
51
|
// Fallback: auto-select best available
|
|
62
52
|
for (const c of MODEL_CANDIDATES) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
return { dir, type: c.type, model: c.model, tokens: "tokens.txt" };
|
|
67
|
-
}
|
|
53
|
+
const dir = path.join(modelsRoot, c.dirName);
|
|
54
|
+
if (fs.existsSync(path.join(dir, c.model)) && fs.existsSync(path.join(dir, "tokens.txt"))) {
|
|
55
|
+
return { dir, type: c.type, model: c.model, tokens: "tokens.txt" };
|
|
68
56
|
}
|
|
69
57
|
}
|
|
70
58
|
return null;
|
|
@@ -147,8 +135,17 @@ export function mountAsrRoute(app) {
|
|
|
147
135
|
console.log("[asr] POST /api/transcribe ready");
|
|
148
136
|
});
|
|
149
137
|
// Lightweight check — frontend hides mic button when ASR is unavailable
|
|
150
|
-
app.get("/api/transcribe/status", (_req, res) => {
|
|
151
|
-
|
|
138
|
+
app.get("/api/transcribe/status", async (_req, res) => {
|
|
139
|
+
// Check if sherpa-onnx-node is installed
|
|
140
|
+
let runtimeInstalled = true;
|
|
141
|
+
// @ts-ignore
|
|
142
|
+
try {
|
|
143
|
+
await import("sherpa-onnx-node");
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
runtimeInstalled = false;
|
|
147
|
+
}
|
|
148
|
+
res.json({ available: !!recognizer, runtimeInstalled });
|
|
152
149
|
});
|
|
153
150
|
app.post("/api/transcribe", async (req, res) => {
|
|
154
151
|
if (!recognizer && !(await initRecognizer())) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asr.js","sourceRoot":"","sources":["../../src/boot/asr.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"asr.js","sourceRoot":"","sources":["../../src/boot/asr.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{_ as t,c as n,d as r,f as i,g as a,h as o,l as s,m as c,p as l,u,y as d}from"./index-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{_ as t,c as n,d as r,f as i,g as a,h as o,l as s,m as c,p as l,u,y as d}from"./index-C-8gHF3A.js";var f=e(d(),1),p=s(),m=[{id:`neo4j`,name:`Neo4j`,fields:[{key:`uri`,label:`URI`,placeholder:`bolt://localhost:7687`,required:!0},{key:`username`,label:`Username`,placeholder:`neo4j`,required:!0},{key:`password`,label:`Password`,secret:!0,required:!0},{key:`database`,label:`Database`,placeholder:`neo4j`}]},{id:`mysql`,name:`MySQL`,fields:[{key:`host`,label:`Host`,placeholder:`localhost`,required:!0},{key:`port`,label:`Port`,placeholder:`3306`},{key:`username`,label:`Username`,placeholder:`root`,required:!0},{key:`password`,label:`Password`,secret:!0,required:!0},{key:`database`,label:`Database`,required:!0}]}],h=`w-full rounded-md border border-border-default bg-bg-elevated px-3 py-1.5 text-[12px] text-fg-default outline-none placeholder:text-fg-fainter focus:border-brand-500`;function g({plugin:e}){let s=n(),d=a(e=>e.setPlugins),[g,_]=(0,f.useState)(m),[v,y]=(0,f.useState)({}),[b,x]=(0,f.useState)(!1),[S,C]=(0,f.useState)(!1),[w,T]=(0,f.useState)(null),[E,D]=(0,f.useState)({}),[O,k]=(0,f.useState)(!1),[A,j]=(0,f.useState)(``),[M,N]=(0,f.useState)(m[0]?.id??``);(0,f.useEffect)(()=>{fetch(`/api/p/datasource/types`,{credentials:`include`}).then(e=>e.ok?e.json():null).then(e=>{e?.types?.length>0&&(_(e.types),N(t=>t||e.types[0].id))}).catch(()=>{})},[]),(0,f.useEffect)(()=>{let t=e.config?.connections;t&&typeof t==`object`&&y(t)},[e.config]);function P(e,t,n){y(r=>({...r,[e]:{...r[e],[t]:n}})),x(!0)}function F(e){y(t=>{let n={...t};return delete n[e],n}),x(!0)}function I(){let e=A.trim().replace(/[^a-zA-Z0-9_-]/g,`-`);!e||v[e]||(y(t=>({...t,[e]:{type:M,description:``}})),j(``),k(!1),x(!0))}async function L(){C(!0),T(null);try{let e=await t.setPluginConfig(`datasource`,{connections:v});d(e.plugins),x(!1)}catch(e){T(e instanceof Error?e.message:String(e))}finally{C(!1)}}async function R(e){D(t=>({...t,[e]:{ok:!1,msg:`Testing...`}}));try{let t=await(await fetch(`/api/p/datasource/test/${encodeURIComponent(e)}`,{method:`POST`,credentials:`include`})).json();D(n=>({...n,[e]:{ok:!!t.ok,msg:t.ok?`Connected`:t.error||`Failed`}}))}catch(t){D(n=>({...n,[e]:{ok:!1,msg:t instanceof Error?t.message:String(t)}}))}}let z=Object.keys(v);return(0,p.jsxs)(`div`,{className:`space-y-4`,children:[z.length===0&&!O&&(0,p.jsx)(`p`,{className:`text-[12px] text-fg-faint`,children:`No data sources configured.`}),z.map(e=>{let t=v[e],n=g.find(e=>e.id===t.type),i=E[e];return(0,p.jsxs)(`div`,{className:`rounded-lg border border-border-subtle p-3 space-y-2`,children:[(0,p.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsx)(`span`,{className:`text-[13px] font-medium text-fg-default`,children:e}),(0,p.jsx)(`span`,{className:`rounded bg-bg-raised px-1.5 py-0.5 text-[10px] text-fg-faint`,children:t.type})]}),(0,p.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,p.jsxs)(`button`,{type:`button`,onClick:()=>R(e),disabled:b,className:`inline-flex items-center gap-1 rounded px-2 py-1 text-[11px] text-fg-muted hover:bg-bg-raised disabled:opacity-40`,title:b?`Save first`:`Test connection`,children:[(0,p.jsx)(u,{size:12}),` Test`]}),(0,p.jsx)(`button`,{type:`button`,onClick:()=>F(e),className:`rounded p-1 text-fg-faint hover:bg-bg-raised hover:text-danger`,children:(0,p.jsx)(r,{size:12})})]})]}),i&&(0,p.jsxs)(`div`,{className:`flex items-center gap-1 text-[11px] ${i.ok?`text-success`:`text-danger`}`,children:[i.ok?(0,p.jsx)(o,{size:12}):(0,p.jsx)(c,{size:12}),i.msg]}),(0,p.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,p.jsxs)(`div`,{children:[(0,p.jsx)(`label`,{className:`mb-0.5 block text-[11px] text-fg-faint`,children:`Description`}),(0,p.jsx)(`input`,{className:h,value:String(t.description??``),onChange:t=>P(e,`description`,t.target.value),placeholder:`Optional description`,autoComplete:`off`})]}),n?.fields.map(n=>(0,p.jsxs)(`div`,{children:[(0,p.jsxs)(`label`,{className:`mb-0.5 block text-[11px] text-fg-faint`,children:[n.label,n.required?` *`:``]}),(0,p.jsx)(`input`,{className:h,type:n.secret?`password`:`text`,value:String(t[n.key]??``),onChange:t=>P(e,n.key,t.target.value),placeholder:n.placeholder,autoComplete:`off`,"data-1p-ignore":!0,"data-lpignore":`true`})]},n.key))]})]},e)}),O?(0,p.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-dashed border-border-default p-3`,children:[(0,p.jsx)(`input`,{className:h+` max-w-[160px]`,value:A,onChange:e=>j(e.target.value),placeholder:`Connection name`,autoComplete:`off`,autoFocus:!0,onKeyDown:e=>e.key===`Enter`&&I()}),(0,p.jsx)(`select`,{className:h+` max-w-[120px]`,value:M,onChange:e=>N(e.target.value),children:g.map(e=>(0,p.jsx)(`option`,{value:e.id,children:e.name},e.id))}),(0,p.jsx)(`button`,{type:`button`,onClick:I,disabled:!A.trim(),className:`rounded-md bg-brand-600 px-3 py-1.5 text-[12px] font-medium text-white hover:bg-brand-500 disabled:opacity-40`,children:`Add`}),(0,p.jsx)(`button`,{type:`button`,onClick:()=>k(!1),className:`text-[12px] text-fg-faint hover:text-fg-default`,children:`Cancel`})]}):(0,p.jsxs)(`button`,{type:`button`,onClick:()=>k(!0),className:`inline-flex items-center gap-1 rounded-md border border-dashed border-border-default px-3 py-1.5 text-[12px] text-fg-muted hover:bg-bg-raised`,children:[(0,p.jsx)(i,{size:12}),` Add Data Source`]}),w&&(0,p.jsx)(`div`,{className:`rounded-md border border-rose-700/50 bg-rose-950/40 px-3 py-2 text-[12px] text-danger`,children:w}),(0,p.jsx)(`div`,{className:`flex items-center gap-2 border-t border-border-subtle pt-3`,children:(0,p.jsxs)(`button`,{type:`button`,onClick:L,disabled:!b||S,className:`inline-flex items-center gap-1.5 rounded-md bg-brand-600 px-3 py-1.5 text-[12px] font-medium text-white hover:bg-brand-500 disabled:cursor-not-allowed disabled:opacity-50`,children:[S?(0,p.jsx)(l,{className:`inline h-3 w-3 animate-spin`}):null,s(`common.save`)]})})]})}export{g as DataSourceConfigForm};
|