robopark 2.8.30 → 2.8.32

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 (2) hide show
  1. package/package.json +1 -1
  2. package/scheduler/main.py +47 -8
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "robopark",
3
- "version": "2.8.30",
3
+ "version": "2.8.32",
4
4
  "description": "RoboPark fleet control CLI — set up, watch, and drive a fleet of talking robots. The operator front-end over the infinicode mesh.",
5
5
  "type": "module",
6
6
  "bin": {
package/scheduler/main.py CHANGED
@@ -424,6 +424,22 @@ async def init_db():
424
424
  pass
425
425
  await db.commit()
426
426
 
427
+ # ---- voice_stacks: options ROBOVOICE actually reads at runtime but
428
+ # this table didn't expose yet (llm auth + sampling + wake-word tuning) ----
429
+ for _table, _column, _coldef in (
430
+ ("voice_stacks", "llm_api_key", "TEXT"),
431
+ ("voice_stacks", "temperature", "REAL DEFAULT 0.7"),
432
+ ("voice_stacks", "num_ctx", "INTEGER DEFAULT 8192"),
433
+ ("voice_stacks", "wake_word_model", "TEXT"),
434
+ ("voice_stacks", "wake_word_threshold", "REAL DEFAULT 0.5"),
435
+ ("voice_stacks", "wake_word_timeout", "REAL DEFAULT 3.0"),
436
+ ):
437
+ try:
438
+ await db.execute(f"ALTER TABLE {_table} ADD COLUMN {_column} {_coldef}")
439
+ except Exception:
440
+ pass
441
+ await db.commit()
442
+
427
443
  # No demo robots are seeded. Actual robots enroll via the device
428
444
  # enrollment API or are added through the scheduler UI. This keeps the
429
445
  # fleet view honest — only real connected hardware appears.
@@ -2272,6 +2288,9 @@ class VoiceStack(BaseModel):
2272
2288
  stt_language: str = "en"
2273
2289
  llm_provider: str = "ollama"
2274
2290
  llm_model: str = "gemma4:e4b"
2291
+ llm_api_key: Optional[str] = None
2292
+ temperature: float = 0.7
2293
+ num_ctx: int = 8192
2275
2294
  tts_provider: str = "elevenlabs"
2276
2295
  tts_voice: str = "21m00Tcm4TlvDq8ikWAM"
2277
2296
  tts_language: str = "en"
@@ -2279,6 +2298,9 @@ class VoiceStack(BaseModel):
2279
2298
  min_endpointing_delay: float = 0.7
2280
2299
  max_turns: int = 20
2281
2300
  wake_word_enabled: bool = False
2301
+ wake_word_model: Optional[str] = None
2302
+ wake_word_threshold: float = 0.5
2303
+ wake_word_timeout: float = 3.0
2282
2304
  created_at: Optional[datetime] = None
2283
2305
  updated_at: Optional[datetime] = None
2284
2306
 
@@ -2290,6 +2312,9 @@ class VoiceStackCreate(BaseModel):
2290
2312
  stt_language: str = "en"
2291
2313
  llm_provider: str = "ollama"
2292
2314
  llm_model: str = "gemma4:e4b"
2315
+ llm_api_key: Optional[str] = None
2316
+ temperature: float = 0.7
2317
+ num_ctx: int = 8192
2293
2318
  tts_provider: str = "elevenlabs"
2294
2319
  tts_voice: str = "21m00Tcm4TlvDq8ikWAM"
2295
2320
  tts_language: str = "en"
@@ -2297,6 +2322,9 @@ class VoiceStackCreate(BaseModel):
2297
2322
  min_endpointing_delay: float = 0.7
2298
2323
  max_turns: int = 20
2299
2324
  wake_word_enabled: bool = False
2325
+ wake_word_model: Optional[str] = None
2326
+ wake_word_threshold: float = 0.5
2327
+ wake_word_timeout: float = 3.0
2300
2328
 
2301
2329
  # Effective configuration returned to the ROBOVOICE agent for a given room/robot.
2302
2330
  class RobotVoiceConfig(BaseModel):
@@ -2493,14 +2521,20 @@ async def create_voice_stack(payload: VoiceStackCreate):
2493
2521
  await db.execute(
2494
2522
  """INSERT INTO voice_stacks
2495
2523
  (id, name, stt_provider, stt_model, stt_language, llm_provider, llm_model,
2524
+ llm_api_key, temperature, num_ctx,
2496
2525
  tts_provider, tts_voice, tts_language, allow_interruptions,
2497
- min_endpointing_delay, max_turns, wake_word_enabled, created_at, updated_at)
2498
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""",
2526
+ min_endpointing_delay, max_turns, wake_word_enabled,
2527
+ wake_word_model, wake_word_threshold, wake_word_timeout,
2528
+ created_at, updated_at)
2529
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""",
2499
2530
  (
2500
2531
  stack_id, payload.name, payload.stt_provider, payload.stt_model, payload.stt_language,
2501
- payload.llm_provider, payload.llm_model, payload.tts_provider, payload.tts_voice,
2532
+ payload.llm_provider, payload.llm_model, payload.llm_api_key, payload.temperature, payload.num_ctx,
2533
+ payload.tts_provider, payload.tts_voice,
2502
2534
  payload.tts_language, int(payload.allow_interruptions), payload.min_endpointing_delay,
2503
- payload.max_turns, int(payload.wake_word_enabled), now, now,
2535
+ payload.max_turns, int(payload.wake_word_enabled),
2536
+ payload.wake_word_model, payload.wake_word_threshold, payload.wake_word_timeout,
2537
+ now, now,
2504
2538
  ),
2505
2539
  )
2506
2540
  await db.commit()
@@ -2532,15 +2566,20 @@ async def update_voice_stack(stack_id: str, payload: VoiceStackCreate):
2532
2566
  await db.execute(
2533
2567
  """UPDATE voice_stacks SET
2534
2568
  name = ?, stt_provider = ?, stt_model = ?, stt_language = ?, llm_provider = ?,
2535
- llm_model = ?, tts_provider = ?, tts_voice = ?, tts_language = ?,
2569
+ llm_model = ?, llm_api_key = ?, temperature = ?, num_ctx = ?,
2570
+ tts_provider = ?, tts_voice = ?, tts_language = ?,
2536
2571
  allow_interruptions = ?, min_endpointing_delay = ?, max_turns = ?,
2537
- wake_word_enabled = ?, updated_at = ?
2572
+ wake_word_enabled = ?, wake_word_model = ?, wake_word_threshold = ?, wake_word_timeout = ?,
2573
+ updated_at = ?
2538
2574
  WHERE id = ?""",
2539
2575
  (
2540
2576
  payload.name, payload.stt_provider, payload.stt_model, payload.stt_language,
2541
- payload.llm_provider, payload.llm_model, payload.tts_provider, payload.tts_voice,
2577
+ payload.llm_provider, payload.llm_model, payload.llm_api_key, payload.temperature, payload.num_ctx,
2578
+ payload.tts_provider, payload.tts_voice,
2542
2579
  payload.tts_language, int(payload.allow_interruptions), payload.min_endpointing_delay,
2543
- payload.max_turns, int(payload.wake_word_enabled), now, stack_id,
2580
+ payload.max_turns, int(payload.wake_word_enabled),
2581
+ payload.wake_word_model, payload.wake_word_threshold, payload.wake_word_timeout,
2582
+ now, stack_id,
2544
2583
  ),
2545
2584
  )
2546
2585
  await db.commit()