yo-moss-ai 0.0.22 → 0.0.24

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.
Files changed (80) hide show
  1. package/bin/bootstrap-deps.mjs +28 -10
  2. package/bin/runtime-manifest.json +1 -1
  3. package/bin/yo-moss-ai.mjs +1 -1
  4. package/dist/assets/esp-flasher-CLKzE7JE.js +27 -2
  5. package/dist/assets/{index-Bcf5kQZF.css → index-CcIQTHSI.css} +1 -1
  6. package/dist/assets/index-JwpZFyvc.js +692 -0
  7. package/dist/index.html +2 -2
  8. package/dist-server/board-presets.mjs +1 -1
  9. package/dist-server/camera.mjs +1 -1
  10. package/dist-server/dev-ui.mjs +1 -1
  11. package/dist-server/device-chat-sync.mjs +1 -1
  12. package/dist-server/device-config-view.mjs +1 -1
  13. package/dist-server/device-focus.mjs +1 -1
  14. package/dist-server/device-http.mjs +1 -1
  15. package/dist-server/device-identity.mjs +1 -1
  16. package/dist-server/device-presence.mjs +1 -1
  17. package/dist-server/device-probe.mjs +1 -1
  18. package/dist-server/device-registry.mjs +1 -1
  19. package/dist-server/device-routes.mjs +1 -1
  20. package/dist-server/device-runtime.mjs +1 -1
  21. package/dist-server/device-session.mjs +1 -1
  22. package/dist-server/ffmpeg.mjs +1 -1
  23. package/dist-server/gimbal-control.mjs +1 -1
  24. package/dist-server/home-path.mjs +1 -1
  25. package/dist-server/index.mjs +1 -1
  26. package/dist-server/ir-import-validate.mjs +1 -1
  27. package/dist-server/known-scan-device.mjs +1 -1
  28. package/dist-server/lan-discover.mjs +1 -1
  29. package/dist-server/listen-port.mjs +1 -1
  30. package/dist-server/mcp/backoff.mjs +1 -1
  31. package/dist-server/mcp/bridge-manager.mjs +1 -1
  32. package/dist-server/mcp/builtin-tools.mjs +1 -1
  33. package/dist-server/mcp/dedupe-servers.mjs +1 -1
  34. package/dist-server/mcp/doctor.mjs +1 -1
  35. package/dist-server/mcp/fixtures/echo-mcp.mjs +1 -1
  36. package/dist-server/mcp/fixtures/hotkey-mcp.mjs +1 -1
  37. package/dist-server/mcp/fixtures/mihome-mcp.mjs +1 -1
  38. package/dist-server/mcp/fixtures/onvif-mcp.mjs +1 -1
  39. package/dist-server/mcp/fixtures/shell-mcp.mjs +1 -1
  40. package/dist-server/mcp/fixtures/yunxiangji-mcp.mjs +1 -1
  41. package/dist-server/mcp/hotkey-agent-docs.mjs +1 -1
  42. package/dist-server/mcp/hotkey-driver.mjs +1 -1
  43. package/dist-server/mcp/hotkey-handlers.mjs +1 -1
  44. package/dist-server/mcp/hotkey-import-validate.mjs +1 -1
  45. package/dist-server/mcp/hotkey-store.mjs +1 -1
  46. package/dist-server/mcp/http-client.mjs +1 -1
  47. package/dist-server/mcp/http-pipe.mjs +1 -1
  48. package/dist-server/mcp/local-probe.mjs +1 -1
  49. package/dist-server/mcp/marketplace.mjs +1 -1
  50. package/dist-server/mcp/onvif-handlers.mjs +1 -1
  51. package/dist-server/mcp/parse-server-json.mjs +1 -1
  52. package/dist-server/mcp/paths.mjs +1 -1
  53. package/dist-server/mcp/routes.mjs +1 -1
  54. package/dist-server/mcp/schema.mjs +1 -1
  55. package/dist-server/mcp/settings.mjs +1 -1
  56. package/dist-server/mcp/shell-approval.mjs +1 -1
  57. package/dist-server/mcp/shell-policy.mjs +1 -1
  58. package/dist-server/mcp/shell-trash.mjs +1 -1
  59. package/dist-server/mcp/stdio-pipe.mjs +1 -1
  60. package/dist-server/mcp/store.mjs +1 -1
  61. package/dist-server/mcp/task-notify.mjs +1 -1
  62. package/dist-server/mcp/ws-connect.mjs +1 -1
  63. package/dist-server/mcp/yunxiangji.mjs +1 -1
  64. package/dist-server/media-cache.mjs +1 -1
  65. package/dist-server/mihome/cloud.mjs +1 -1
  66. package/dist-server/mihome/devices.mjs +1 -1
  67. package/dist-server/mihome/local.mjs +1 -1
  68. package/dist-server/mihome/mcp-desc.mjs +1 -1
  69. package/dist-server/mihome/queue.mjs +1 -1
  70. package/dist-server/mihome/rc4.mjs +1 -1
  71. package/dist-server/mihome/routes.mjs +1 -1
  72. package/dist-server/mihome/service.mjs +1 -1
  73. package/dist-server/mihome/sign.mjs +1 -1
  74. package/dist-server/mihome/spec.mjs +1 -1
  75. package/dist-server/mihome/store.mjs +1 -1
  76. package/dist-server/onboard-preview.mjs +1 -1
  77. package/dist-server/tab-focus.mjs +1 -1
  78. package/dist-server/voice-wake.mjs +1 -1
  79. package/package.json +1 -1
  80. package/dist/assets/index-BTL1clBe.js +0 -45
@@ -128,7 +128,9 @@ export function copyTree(src, dest) {
128
128
  }
129
129
  }
130
130
 
131
- function runNpmInstall(cwd, extraArgs = []) {
131
+ export const NPM_INSTALL_TIMEOUT_MS = 60_000
132
+
133
+ function runNpmInstall(cwd, extraArgs = [], timeoutMs = NPM_INSTALL_TIMEOUT_MS) {
132
134
  return new Promise((resolve, reject) => {
133
135
  const npmCmd = process.platform === 'win32' ? 'npm.cmd' : 'npm'
134
136
  const child = spawn(
@@ -141,10 +143,20 @@ function runNpmInstall(cwd, extraArgs = []) {
141
143
  },
142
144
  )
143
145
  let errText = ''
146
+ let settled = false
147
+ const timer = setTimeout(() => {
148
+ if (settled) return
149
+ settled = true
150
+ child.kill()
151
+ reject(new Error(`npm install 超时(${Math.round(timeoutMs / 1000)}s)`))
152
+ }, timeoutMs)
144
153
  child.stderr.on('data', (chunk) => {
145
154
  errText += String(chunk)
146
155
  })
147
156
  child.on('exit', (code) => {
157
+ clearTimeout(timer)
158
+ if (settled) return
159
+ settled = true
148
160
  if (code === 0) resolve()
149
161
  else reject(new Error(errText.trim() || `npm install 失败,退出码 ${code}`))
150
162
  })
@@ -299,6 +311,7 @@ export async function bootstrapRuntimeDeps(opts) {
299
311
  depsRoot = runtimeDepsRoot(),
300
312
  installMediaBundle = installMediaBundleFromNpm,
301
313
  installNpmDeps = (npmDeps, onProgress) => ensureRuntimeNpmDeps(npmDeps, depsRoot, { onProgress }),
314
+ deferNpm = false,
302
315
  } = opts
303
316
 
304
317
  const distDir = path.join(root, 'dist')
@@ -330,8 +343,10 @@ export async function bootstrapRuntimeDeps(opts) {
330
343
  if (needMedia) {
331
344
  const mb = (totalBytes / 1024 / 1024).toFixed(0)
332
345
  console.log(`首次运行:正在下载 UI 资源(约 ${mb} MB),完成后自动启动…`)
333
- } else if (needNpm) {
346
+ } else if (needNpm && !deferNpm) {
334
347
  console.log('首次运行:正在安装扩展组件,完成后自动启动…')
348
+ } else if (needNpm && deferNpm) {
349
+ console.log('正在打开界面;快捷键组件在后台安装,不影响使用。')
335
350
  }
336
351
 
337
352
  if (needMedia) {
@@ -352,14 +367,17 @@ export async function bootstrapRuntimeDeps(opts) {
352
367
  if (needNpm) {
353
368
  const reportNpm = createProgressReporter('安装扩展依赖')
354
369
  reportNpm(0.02)
355
- try {
356
- await installNpmDeps(npmDeps, reportNpm)
357
- if (process.stdout.isTTY) process.stdout.write('\n')
358
- else console.log(formatProgressBar('安装扩展依赖', 1))
359
- } catch (err) {
360
- if (process.stdout.isTTY) process.stdout.write('\n')
361
- console.warn('扩展组件安装失败,快捷键/媒体键可能不可用:', err.message)
362
- }
370
+ const work = Promise.resolve()
371
+ .then(() => installNpmDeps(npmDeps, reportNpm))
372
+ .then(() => {
373
+ if (process.stdout.isTTY) process.stdout.write('\n')
374
+ else console.log(formatProgressBar('安装扩展依赖', 1))
375
+ })
376
+ .catch((err) => {
377
+ if (process.stdout.isTTY) process.stdout.write('\n')
378
+ console.warn('扩展组件安装失败,快捷键/媒体键可能不可用:', err.message)
379
+ })
380
+ if (!deferNpm) await work
363
381
  }
364
382
 
365
383
  process.env.MOSS_MEDIA_ROOT = cacheDir
@@ -1,5 +1,5 @@
1
1
  {
2
- "mediaVersion": "0.0.22",
2
+ "mediaVersion": "0.0.24",
3
3
  "mediaFiles": [
4
4
  {
5
5
  "path": "models/mediapipe/blaze_face_full_range.tflite",
@@ -31,7 +31,7 @@ console.log(`yo-moss-ai${pkgVersion ? ` v${pkgVersion}` : ''}`)
31
31
  if (typeof process.stdout.write === 'function') process.stdout.write('')
32
32
 
33
33
  try {
34
- await bootstrapRuntimeDeps({ root, version: pkg.version })
34
+ await bootstrapRuntimeDeps({ root, version: pkg.version, deferNpm: true })
35
35
  } catch (err) {
36
36
  console.error('\n启动准备失败:', err?.message || err)
37
37
  console.error('请检查网络连接后重新运行:npx yo-moss-ai')