@meridiona/meridian-darwin-arm64 1.24.5 → 1.24.6

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/VERSION CHANGED
@@ -1 +1 @@
1
- 1.24.5
1
+ 1.24.6
package/bin/meridian CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meridiona/meridian-darwin-arm64",
3
- "version": "1.24.5",
3
+ "version": "1.24.6",
4
4
  "description": "Prebuilt Meridian app for macOS arm64 (daemon binary + dashboard + Python services). Installed via @meridiona/meridian.",
5
5
  "homepage": "https://github.com/Meridiona/meridian",
6
6
  "repository": {
@@ -415,7 +415,25 @@ def _classify_apple_fm(messages: list[dict[str, str]]) -> "SessionClassification
415
415
  data = json.loads(text)
416
416
  return SessionClassification.model_validate(_coerce_apple_fm_result(data))
417
417
 
418
- raw = asyncio.run(_run(user_with_hint))
418
+ def _call_apple_fm(prompt: str) -> str:
419
+ # anyio (used by FastAPI's run_in_threadpool) sets up its own event loop
420
+ # machinery in its worker threads. asyncio.run() raises
421
+ # "cannot be called from a running event loop" even inside a threadpool
422
+ # thread. Spawning a genuinely fresh OS thread with its own event loop
423
+ # avoids anyio's loop entirely.
424
+ import concurrent.futures
425
+ def _in_fresh_thread() -> str:
426
+ loop = asyncio.new_event_loop()
427
+ asyncio.set_event_loop(loop)
428
+ try:
429
+ return loop.run_until_complete(_run(prompt))
430
+ finally:
431
+ loop.close()
432
+ asyncio.set_event_loop(None)
433
+ with concurrent.futures.ThreadPoolExecutor(max_workers=1) as ex:
434
+ return ex.submit(_in_fresh_thread).result(timeout=60)
435
+
436
+ raw = _call_apple_fm(user_with_hint)
419
437
  try:
420
438
  return _parse(raw)
421
439
  except Exception:
@@ -425,7 +443,7 @@ def _classify_apple_fm(messages: list[dict[str, str]]) -> "SessionClassification
425
443
  "(category, category_confidence, category_explanation, session_summary). "
426
444
  "Return a complete JSON with ALL fields from the schema:\n" + raw
427
445
  )
428
- raw2 = asyncio.run(_run(fix_prompt))
446
+ raw2 = _call_apple_fm(fix_prompt)
429
447
  return _parse(raw2)
430
448
 
431
449
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "meridian-agents"
7
- version = "1.24.5"
7
+ version = "1.24.6"
8
8
  description = "Meridian agents — hermes task linking and Jira progress updates for meridian.db"
9
9
  requires-python = ">=3.11"
10
10
  authors = [{ name = "Meridiona" }]