@meridiona/meridian-darwin-arm64 1.49.2 → 1.51.0
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 +1 -1
- package/bin/meridian +0 -0
- package/package.json +1 -1
- package/scripts/meridian-cli.sh +1 -1
- package/services/agents/pm_worklog_update/agents.py +1 -1
- package/services/agents/run_task_linker_mlx.py +28 -12
- package/services/agents/server.py +7 -3
- package/services/pyproject.toml +1 -1
- package/ui.tar.gz +0 -0
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.
|
|
1
|
+
1.51.0
|
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.
|
|
3
|
+
"version": "1.51.0",
|
|
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": {
|
package/scripts/meridian-cli.sh
CHANGED
|
@@ -816,7 +816,7 @@ case "$CMD" in
|
|
|
816
816
|
uninstall) cmd_uninstall ;;
|
|
817
817
|
permissions) cmd_permissions ;;
|
|
818
818
|
version|--version|-v) cat "${REPO_ROOT}/VERSION" 2>/dev/null || echo "unknown" ;;
|
|
819
|
-
worklog-status|pm-worklog|coding-agent-hook|coding-agent-summarise|coding-agent-classify|coding-agent-install-skill|oauth-login|tasks-sync) cmd_daemon_passthrough "$CMD" "$@" ;;
|
|
819
|
+
worklog-status|pm-worklog|coding-agent-hook|coding-agent-summarise|coding-agent-classify|coding-agent-install-skill|oauth-login|tasks-sync|ticket-update|ticket-parents) cmd_daemon_passthrough "$CMD" "$@" ;;
|
|
820
820
|
--help|-h|help|"") cmd_help ;;
|
|
821
821
|
*) err "unknown command: ${CMD}"; echo; cmd_help; exit 1 ;;
|
|
822
822
|
esac
|
|
@@ -94,11 +94,11 @@ def build_synth_agent(
|
|
|
94
94
|
# tools.get_earlier_today_summaries,
|
|
95
95
|
# ],
|
|
96
96
|
pre_hooks=[
|
|
97
|
-
PIIDetectionGuardrail(),
|
|
98
97
|
ProjectSecretGuard(),
|
|
99
98
|
SessionBundleSizeGuard(max_tokens=80_000),
|
|
100
99
|
],
|
|
101
100
|
post_hooks=[
|
|
101
|
+
PIIDetectionGuardrail(),
|
|
102
102
|
time_spent_sanity_check,
|
|
103
103
|
],
|
|
104
104
|
output_schema=JiraUpdate,
|
|
@@ -484,18 +484,34 @@ def _fetch_recent_sessions(
|
|
|
484
484
|
|
|
485
485
|
|
|
486
486
|
def _fetch_pm_tasks(con: _sqlite3.Connection) -> list[dict[str, Any]]:
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
"
|
|
495
|
-
" COALESCE(
|
|
496
|
-
" COALESCE(
|
|
497
|
-
"
|
|
498
|
-
|
|
487
|
+
# Candidate set for classification. Tickets the user explicitly EXCLUDED during
|
|
488
|
+
# onboarding board-cleanup (pm_task_curation.decision = 'excluded') are dropped
|
|
489
|
+
# so a cleaned-up dead ticket can never be a classification target. Everything
|
|
490
|
+
# else flows through, including not-yet-decided `looks_stale` rows — the triage
|
|
491
|
+
# only *proposes*; nothing is removed without the human's confirmed decision.
|
|
492
|
+
# LEFT JOIN keeps this safe if curation has no row for a ticket yet.
|
|
493
|
+
base_cols = (
|
|
494
|
+
"SELECT t.task_key, t.title,"
|
|
495
|
+
" COALESCE(t.description_text,'') AS description_text,"
|
|
496
|
+
" COALESCE(t.status_raw,'') AS status_raw,"
|
|
497
|
+
" COALESCE(t.is_terminal,0) AS is_terminal,"
|
|
498
|
+
" COALESCE(t.issue_type,'') AS issue_type,"
|
|
499
|
+
" COALESCE(t.parent_key,'') AS parent_key,"
|
|
500
|
+
" COALESCE(t.epic_title,'') AS epic_title,"
|
|
501
|
+
" COALESCE(t.sprint_name,'') AS sprint_name,"
|
|
502
|
+
" COALESCE(t.tags,'') AS tags"
|
|
503
|
+
" FROM pm_tasks t"
|
|
504
|
+
)
|
|
505
|
+
try:
|
|
506
|
+
rows = con.execute(
|
|
507
|
+
base_cols
|
|
508
|
+
+ " LEFT JOIN pm_task_curation c ON c.task_key = t.task_key"
|
|
509
|
+
" WHERE c.decision IS NULL OR c.decision != 'excluded'",
|
|
510
|
+
).fetchall()
|
|
511
|
+
except _sqlite3.OperationalError:
|
|
512
|
+
# Pre-migration-038 DB (no pm_task_curation): degrade to the unfiltered
|
|
513
|
+
# candidate set rather than crashing the whole /classify_sessions call.
|
|
514
|
+
rows = con.execute(base_cols).fetchall()
|
|
499
515
|
return [dict(r) for r in rows]
|
|
500
516
|
|
|
501
517
|
|
|
@@ -603,15 +603,19 @@ async def synthesise_worklog(req: _SynthWorklogRequest) -> dict:
|
|
|
603
603
|
try:
|
|
604
604
|
response = await run_in_threadpool(_run)
|
|
605
605
|
except Exception as exc: # noqa: BLE001 — never crash the shared server
|
|
606
|
-
last_detail = f"agent run
|
|
606
|
+
last_detail = f"agent run raised {type(exc).__name__}: {exc}"
|
|
607
607
|
log.warning("synthesise_worklog: attempt %d %s", attempt, last_detail)
|
|
608
608
|
continue
|
|
609
609
|
raw = getattr(response, "content", response)
|
|
610
|
+
if raw is None:
|
|
611
|
+
last_detail = "agent returned no content (guardrail likely blocked the run)"
|
|
612
|
+
log.warning("synthesise_worklog: attempt %d %s", attempt, last_detail)
|
|
613
|
+
continue
|
|
610
614
|
update = pm_workflow._coerce_jira(raw)
|
|
611
615
|
if update is not None:
|
|
612
616
|
break
|
|
613
|
-
last_detail = "agent output did not parse into a JiraUpdate"
|
|
614
|
-
log.warning("synthesise_worklog: attempt %d %s", attempt, last_detail)
|
|
617
|
+
last_detail = f"agent output did not parse into a JiraUpdate (raw type={type(raw).__name__})"
|
|
618
|
+
log.warning("synthesise_worklog: attempt %d %s | raw=%.200s", attempt, last_detail, str(raw))
|
|
615
619
|
|
|
616
620
|
if update is None:
|
|
617
621
|
raise HTTPException(
|
package/services/pyproject.toml
CHANGED
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "meridian-agents"
|
|
7
|
-
version = "1.
|
|
7
|
+
version = "1.51.0"
|
|
8
8
|
description = "Meridian agents — MLX classifier server and Jira worklog synthesis for meridian.db"
|
|
9
9
|
requires-python = ">=3.11"
|
|
10
10
|
authors = [{ name = "Meridiona" }]
|
package/ui.tar.gz
CHANGED
|
Binary file
|