yo-moss-ai 0.0.12 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/bootstrap-deps.mjs +60 -19
- package/bin/runtime-manifest.json +1 -1
- package/bin/yo-moss-ai.mjs +1 -0
- package/dist/assets/esp-flasher-CLKzE7JE.js +2 -2
- package/dist/assets/index-CZ_NROJp.js +8 -8
- package/dist-server/camera.mjs +1 -1
- package/dist-server/ffmpeg.mjs +1 -1
- package/dist-server/index.mjs +1 -1
- package/dist-server/ir-import-validate.mjs +1 -1
- package/dist-server/mcp/backoff.mjs +1 -1
- package/dist-server/mcp/bridge-manager.mjs +1 -1
- package/dist-server/mcp/builtin-tools.mjs +1 -1
- package/dist-server/mcp/dedupe-servers.mjs +1 -1
- package/dist-server/mcp/doctor.mjs +1 -1
- package/dist-server/mcp/fixtures/echo-mcp.mjs +1 -1
- package/dist-server/mcp/fixtures/hotkey-mcp.mjs +1 -1
- package/dist-server/mcp/fixtures/onvif-mcp.mjs +1 -1
- package/dist-server/mcp/fixtures/shell-mcp.mjs +1 -1
- package/dist-server/mcp/hotkey-agent-docs.mjs +1 -1
- package/dist-server/mcp/hotkey-driver.mjs +1 -1
- package/dist-server/mcp/hotkey-handlers.mjs +1 -1
- package/dist-server/mcp/hotkey-import-validate.mjs +1 -1
- package/dist-server/mcp/hotkey-store.mjs +1 -1
- package/dist-server/mcp/http-client.mjs +1 -1
- package/dist-server/mcp/http-pipe.mjs +1 -1
- package/dist-server/mcp/local-probe.mjs +1 -1
- package/dist-server/mcp/marketplace.mjs +1 -1
- package/dist-server/mcp/onvif-handlers.mjs +1 -1
- package/dist-server/mcp/parse-server-json.mjs +1 -1
- package/dist-server/mcp/paths.mjs +1 -1
- package/dist-server/mcp/routes.mjs +1 -1
- package/dist-server/mcp/schema.mjs +1 -1
- package/dist-server/mcp/settings.mjs +1 -1
- package/dist-server/mcp/shell-approval.mjs +1 -1
- package/dist-server/mcp/shell-policy.mjs +1 -1
- package/dist-server/mcp/shell-trash.mjs +1 -1
- package/dist-server/mcp/stdio-pipe.mjs +1 -1
- package/dist-server/mcp/store.mjs +1 -1
- package/dist-server/mcp/task-notify.mjs +1 -1
- package/dist-server/mcp/ws-connect.mjs +1 -1
- package/dist-server/media-cache.mjs +1 -1
- package/package.json +1 -1
- package/dist/models/mediapipe/blaze_face_full_range.tflite +0 -0
- package/dist/models/mediapipe/blaze_face_short_range.tflite +0 -0
- package/dist/models/mediapipe/wasm/vision_wasm_internal.js +0 -8841
- package/dist/models/mediapipe/wasm/vision_wasm_internal.wasm +0 -0
- package/dist/models/mediapipe/wasm/vision_wasm_nosimd_internal.js +0 -8832
- package/dist/models/mediapipe/wasm/vision_wasm_nosimd_internal.wasm +0 -0
- package/dist/stl/moss.stl +0 -0
- package/dist/stl/planetary_engine.stl +0 -0
- package/dist/textures/earth-lights.png +0 -0
- package/dist/textures/earth-night.jpg +0 -0
- package/dist/textures/earth_clouds.jpg +0 -0
- package/dist/textures/moon-base.jpg +0 -0
- package/dist/textures/moon-bump.jpg +0 -0
- package/dist/textures/wandering.png +0 -0
package/bin/bootstrap-deps.mjs
CHANGED
|
@@ -25,8 +25,21 @@ export function formatProgressBar(label, ratio, width = PROGRESS_BAR_WIDTH) {
|
|
|
25
25
|
return `${label} [${bar}] ${pct}%`
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
/** 终端单行刷新;非 TTY(部分 npx 环境)按步进换行,避免长时间无输出 */
|
|
29
|
+
export function createProgressReporter(label) {
|
|
30
|
+
let lastPct = -1
|
|
31
|
+
return (ratio) => {
|
|
32
|
+
const pct = Math.min(100, Math.max(0, Math.round(ratio * 100)))
|
|
33
|
+
const line = formatProgressBar(label, ratio)
|
|
34
|
+
if (process.stdout.isTTY) {
|
|
35
|
+
process.stdout.write(`\r\x1b[2K${line}`)
|
|
36
|
+
return
|
|
37
|
+
}
|
|
38
|
+
if (lastPct < 0 || pct >= lastPct + 10 || pct === 100) {
|
|
39
|
+
console.log(line)
|
|
40
|
+
lastPct = pct
|
|
41
|
+
}
|
|
42
|
+
}
|
|
30
43
|
}
|
|
31
44
|
|
|
32
45
|
/** @deprecated 单文件 CDN 对大体积 npm 包不可靠,保留仅供测试/兜底 */
|
|
@@ -164,10 +177,17 @@ export async function installMediaBundleFromNpm(
|
|
|
164
177
|
)
|
|
165
178
|
|
|
166
179
|
const expected = totalBytes > 0 ? totalBytes : 56_000_000
|
|
180
|
+
let tick = 0
|
|
167
181
|
const poll = setInterval(() => {
|
|
182
|
+
tick += 1
|
|
168
183
|
const size = dirByteSize(path.join(staging, 'node_modules', MEDIA_PACKAGE_NAME))
|
|
169
|
-
|
|
170
|
-
|
|
184
|
+
if (size > 0) {
|
|
185
|
+
onProgress?.(Math.min(0.92, size / expected))
|
|
186
|
+
} else {
|
|
187
|
+
// npm 解压前 node_modules 为空,用轻量动画避免长时间 0%
|
|
188
|
+
onProgress?.(0.02 + (tick % 6) * 0.012)
|
|
189
|
+
}
|
|
190
|
+
}, 350)
|
|
171
191
|
|
|
172
192
|
let lastError
|
|
173
193
|
try {
|
|
@@ -204,7 +224,11 @@ export async function installMediaBundleFromNpm(
|
|
|
204
224
|
onProgress?.(1)
|
|
205
225
|
}
|
|
206
226
|
|
|
207
|
-
export async function ensureRuntimeNpmDeps(
|
|
227
|
+
export async function ensureRuntimeNpmDeps(
|
|
228
|
+
npmDeps,
|
|
229
|
+
depsRoot = runtimeDepsRoot(),
|
|
230
|
+
{ installImpl = runNpmInstall, onProgress } = {},
|
|
231
|
+
) {
|
|
208
232
|
fs.mkdirSync(depsRoot, { recursive: true })
|
|
209
233
|
const pkgPath = path.join(depsRoot, 'package.json')
|
|
210
234
|
const deps = Object.fromEntries(npmDeps.map((item) => [item.name, item.version]))
|
|
@@ -223,7 +247,21 @@ export async function ensureRuntimeNpmDeps(npmDeps, depsRoot = runtimeDepsRoot()
|
|
|
223
247
|
if (fs.existsSync(nutEntry)) return
|
|
224
248
|
}
|
|
225
249
|
|
|
226
|
-
|
|
250
|
+
let tick = 0
|
|
251
|
+
const poll = onProgress
|
|
252
|
+
? setInterval(() => {
|
|
253
|
+
tick += 1
|
|
254
|
+
const size = dirByteSize(path.join(depsRoot, 'node_modules'))
|
|
255
|
+
if (size > 0) onProgress(Math.min(0.95, size / 80_000_000))
|
|
256
|
+
else onProgress(0.02 + (tick % 6) * 0.012)
|
|
257
|
+
}, 350)
|
|
258
|
+
: null
|
|
259
|
+
try {
|
|
260
|
+
await installImpl(depsRoot)
|
|
261
|
+
} finally {
|
|
262
|
+
if (poll) clearInterval(poll)
|
|
263
|
+
}
|
|
264
|
+
onProgress?.(1)
|
|
227
265
|
fs.writeFileSync(marker, nextMarker)
|
|
228
266
|
}
|
|
229
267
|
|
|
@@ -260,7 +298,7 @@ export async function bootstrapRuntimeDeps(opts) {
|
|
|
260
298
|
cacheDir = mediaCacheDir(),
|
|
261
299
|
depsRoot = runtimeDepsRoot(),
|
|
262
300
|
installMediaBundle = installMediaBundleFromNpm,
|
|
263
|
-
installNpmDeps = (npmDeps) => ensureRuntimeNpmDeps(npmDeps, depsRoot),
|
|
301
|
+
installNpmDeps = (npmDeps, onProgress) => ensureRuntimeNpmDeps(npmDeps, depsRoot, { onProgress }),
|
|
264
302
|
} = opts
|
|
265
303
|
|
|
266
304
|
const distDir = path.join(root, 'dist')
|
|
@@ -290,33 +328,36 @@ export async function bootstrapRuntimeDeps(opts) {
|
|
|
290
328
|
console.log('')
|
|
291
329
|
if (needMedia) {
|
|
292
330
|
const mb = (totalBytes / 1024 / 1024).toFixed(0)
|
|
293
|
-
console.log(
|
|
331
|
+
console.log(`首次运行:正在下载 UI 资源(约 ${mb} MB),完成后自动启动…`)
|
|
294
332
|
} else if (needNpm) {
|
|
295
|
-
console.log('
|
|
333
|
+
console.log('首次运行:正在安装扩展组件,完成后自动启动…')
|
|
296
334
|
}
|
|
297
335
|
|
|
298
336
|
if (needMedia) {
|
|
299
|
-
|
|
337
|
+
const reportMedia = createProgressReporter('下载资源')
|
|
338
|
+
reportMedia(0.02)
|
|
300
339
|
await installMediaBundle(mediaVersion, cacheDir, {
|
|
301
340
|
totalBytes,
|
|
302
|
-
onProgress:
|
|
341
|
+
onProgress: reportMedia,
|
|
303
342
|
})
|
|
304
|
-
process.stdout.write('\n')
|
|
343
|
+
if (process.stdout.isTTY) process.stdout.write('\n')
|
|
344
|
+
else console.log(formatProgressBar('下载资源', 1))
|
|
305
345
|
|
|
306
346
|
if (!mediaCacheReady(mediaFiles, cacheDir)) {
|
|
307
|
-
throw new Error('
|
|
347
|
+
throw new Error('资源校验失败,请删除 ~/.moss-desktop/media 文件夹后重试')
|
|
308
348
|
}
|
|
309
349
|
}
|
|
310
350
|
|
|
311
351
|
if (needNpm) {
|
|
312
|
-
|
|
352
|
+
const reportNpm = createProgressReporter('安装扩展依赖')
|
|
353
|
+
reportNpm(0.02)
|
|
313
354
|
try {
|
|
314
|
-
await installNpmDeps(npmDeps)
|
|
315
|
-
|
|
316
|
-
|
|
355
|
+
await installNpmDeps(npmDeps, reportNpm)
|
|
356
|
+
if (process.stdout.isTTY) process.stdout.write('\n')
|
|
357
|
+
else console.log(formatProgressBar('安装扩展依赖', 1))
|
|
317
358
|
} catch (err) {
|
|
318
|
-
process.stdout.write('\n')
|
|
319
|
-
console.warn('
|
|
359
|
+
if (process.stdout.isTTY) process.stdout.write('\n')
|
|
360
|
+
console.warn('扩展组件安装失败,快捷键/媒体键可能不可用:', err.message)
|
|
320
361
|
}
|
|
321
362
|
}
|
|
322
363
|
|
package/bin/yo-moss-ai.mjs
CHANGED