@adhdev/mesh-shared 1.0.60-rc.73 → 1.0.60-rc.74

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/dist/index.mjs CHANGED
@@ -2,6 +2,9 @@
2
2
  function readRecord(value) {
3
3
  return value && typeof value === "object" && !Array.isArray(value) ? value : {};
4
4
  }
5
+ function readOptionalRecord(value) {
6
+ return value && typeof value === "object" && !Array.isArray(value) ? value : void 0;
7
+ }
5
8
  function readString(...values) {
6
9
  for (const value of values) {
7
10
  if (typeof value !== "string") continue;
@@ -10,6 +13,9 @@ function readString(...values) {
10
13
  }
11
14
  return void 0;
12
15
  }
16
+ function readText(...values) {
17
+ return readString(...values) ?? "";
18
+ }
13
19
  function readNumber(...values) {
14
20
  for (const value of values) {
15
21
  if (typeof value === "number" && Number.isFinite(value)) return value;
@@ -377,8 +383,29 @@ function summarizeGitShape(status) {
377
383
  };
378
384
  }
379
385
 
380
- // src/magi.ts
381
- var MAGI_RAW_ANSWER_CAP = 4e3;
386
+ // src/git-diff.ts
387
+ function truncateDiffText(text, maxLines) {
388
+ const lines = text.split("\n");
389
+ const truncated = lines.length > maxLines;
390
+ return {
391
+ diff: truncated ? lines.slice(0, maxLines).join("\n") + "\n... (truncated)" : text,
392
+ truncated
393
+ };
394
+ }
395
+ function projectFileDiffRow(file, rawResult, maxLines) {
396
+ const raw = readRecord(rawResult);
397
+ const d = readRecord(raw.diff ?? rawResult);
398
+ const text = typeof d.diff === "string" ? d.diff : "";
399
+ const { diff, truncated } = truncateDiffText(text, maxLines);
400
+ return {
401
+ path: file.path,
402
+ old_path: file.oldPath ?? null,
403
+ status: file.status ?? "M",
404
+ diff,
405
+ truncated,
406
+ binary: typeof d.binary === "boolean" ? d.binary : false
407
+ };
408
+ }
382
409
 
383
410
  // src/brain-routing.ts
384
411
  var MESH_TASK_DIFFICULTIES = ["easy", "medium", "difficult", "freeform"];
@@ -619,23 +646,6 @@ function buildSlotProposal(detected, currentSlots = []) {
619
646
  destructive: droppedSlots.length > 0
620
647
  };
621
648
  }
622
- function buildMagiPanelProposal(detected, opts = {}) {
623
- const providers = dedupeDetected(detected ?? []);
624
- const tableOrder = Object.keys(CLI_SLOT_RECIPES);
625
- const rank = (type) => {
626
- const i = tableOrder.indexOf(type);
627
- return i === -1 ? Number.MAX_SAFE_INTEGER : i;
628
- };
629
- const ordered = [...providers].sort((a, b) => rank(a.type) - rank(b.type));
630
- const limit = Number.isFinite(opts.maxSlots) && opts.maxSlots > 0 ? Math.floor(opts.maxSlots) : ordered.length;
631
- return ordered.slice(0, limit).map((p) => ({
632
- ...opts.nodeId ? { nodeId: opts.nodeId } : {},
633
- provider: p.type
634
- // A model is intentionally NOT pinned: the panel's job is cross-provider
635
- // independence, and pinning models here would silently couple the panel
636
- // to this table's cost assumptions rather than to review quality.
637
- }));
638
- }
639
649
 
640
650
  // src/interpolation.ts
641
651
  function interpolateString(template, ctx) {
@@ -650,14 +660,10 @@ var CANONICAL_MESH_TOOL_NAMES = [
650
660
  "mesh_status",
651
661
  "mesh_route_preview",
652
662
  "mesh_list_nodes",
653
- // GRAPH-ORCHESTRATION Phase F — batch before task, mirroring ALL_MESH_TOOLS.
663
+ // Batch before task, mirroring ALL_MESH_TOOLS.
654
664
  "mesh_enqueue_batch",
655
665
  "mesh_enqueue_task",
656
666
  "mesh_view_queue",
657
- // GRAPH-ORCHESTRATION Phase E — the coordinator gate + graph view surface.
658
- "mesh_graph_view",
659
- "mesh_graph_gate",
660
- "mesh_graph_node_patch",
661
667
  "mesh_queue_cancel",
662
668
  "mesh_queue_requeue",
663
669
  "mesh_send_task",
@@ -692,29 +698,14 @@ var CANONICAL_MESH_TOOL_NAMES = [
692
698
  "mesh_mission_upsert",
693
699
  "mesh_mission_list",
694
700
  "mesh_review_inbox",
695
- "mesh_magi_review",
696
- "mesh_magi_collect",
697
- "mesh_magi_kind_panel",
698
701
  "mesh_node_slots",
699
702
  "mesh_coordinator_prompt_append"
700
703
  ];
701
704
  var CANONICAL_MESH_TOOL_COUNT = CANONICAL_MESH_TOOL_NAMES.length;
702
705
  var RETIRED_MESH_TOOLS = {
703
- mesh_graph_gate_claim: {
704
- tool: "mesh_graph_gate",
705
- args: { action: "claim" },
706
- note: 'The extend-only form (claim with extend_seconds) is now action: "extend" with the same extend_seconds.'
707
- },
708
- mesh_graph_gate_release: { tool: "mesh_graph_gate", args: { action: "release" } },
709
- mesh_graph_gate_abandon: { tool: "mesh_graph_gate", args: { action: "abandon" } },
710
- // Never a published tool (it is the daemon command behind the extend verb),
711
- // but an older gate-expiry notice told coordinators to call it by this name.
712
- mesh_graph_gate_extend: { tool: "mesh_graph_gate", args: { action: "extend" } },
713
706
  mesh_node_slots_set: { tool: "mesh_node_slots", args: { action: "set" } },
714
707
  mesh_node_slots_list: { tool: "mesh_node_slots", args: { action: "list" } },
715
708
  mesh_node_slots_propose: { tool: "mesh_node_slots", args: { action: "propose" } },
716
- mesh_magi_kind_panel_set: { tool: "mesh_magi_kind_panel", args: { action: "set" } },
717
- mesh_magi_kind_panel_list: { tool: "mesh_magi_kind_panel", args: { action: "list" } },
718
709
  mesh_coordinator_prompt_append_get: { tool: "mesh_coordinator_prompt_append", args: { action: "get" } },
719
710
  mesh_coordinator_prompt_append_set: { tool: "mesh_coordinator_prompt_append", args: { action: "set" } },
720
711
  mesh_record_note: { tool: "mesh_note", args: { action: "record" } },
@@ -726,7 +717,17 @@ var RETIRED_MESH_TOOLS = {
726
717
  mesh_plan_onboarding: { tool: "mesh_create", args: { mode: "plan" } },
727
718
  mesh_prune_stale_direct: { tool: "mesh_cleanup_sessions", args: { mode: "prune_stale_direct" } }
728
719
  };
720
+ var REMOVED_MESH_TOOLS = {
721
+ mesh_magi_review: "For a multi-perspective review, send the same question to 2-3 workers on different providers with mesh_send_task, wait for their report_completion, then synthesize the answers yourself.",
722
+ mesh_magi_collect: "Worker answers arrive as report_completion events; synthesize them yourself.",
723
+ mesh_magi_kind_panel: "There are no review panels any more; pick the workers per review with mesh_send_task.",
724
+ mesh_magi_kind_panel_set: "There are no review panels any more; pick the workers per review with mesh_send_task.",
725
+ mesh_magi_kind_panel_list: "There are no review panels any more; pick the workers per review with mesh_send_task."
726
+ };
729
727
  function retiredMeshToolError(name) {
728
+ if (Object.prototype.hasOwnProperty.call(REMOVED_MESH_TOOLS, name)) {
729
+ return `Tool "${name}" was removed. ${REMOVED_MESH_TOOLS[name]}`;
730
+ }
730
731
  const entry = Object.prototype.hasOwnProperty.call(RETIRED_MESH_TOOLS, name) ? RETIRED_MESH_TOOLS[name] : void 0;
731
732
  if (!entry) return null;
732
733
  const discriminator = Object.entries(entry.args).map(([k, v]) => `${k}: "${v}"`).join(", ");
@@ -1023,7 +1024,6 @@ var DAEMON_TO_SERVER_TYPES = [
1023
1024
  "command_result",
1024
1025
  "error",
1025
1026
  "agent_event",
1026
- "beacon_vectors",
1027
1027
  "daemon_mesh_command",
1028
1028
  "p2p_offer",
1029
1029
  "p2p_ice"
@@ -1056,7 +1056,6 @@ var SERVER_TO_DAEMON_CONTROL_TYPES = [
1056
1056
  "command",
1057
1057
  "agent_command",
1058
1058
  "resolve_action",
1059
- "beacon_vectors_result",
1060
1059
  "daemon_mesh_result",
1061
1060
  "p2p_ready",
1062
1061
  "p2p_offer",
@@ -1081,18 +1080,9 @@ function decodeServerToDaemon(raw) {
1081
1080
  ...readEnvelopeFields(raw),
1082
1081
  ...isNonEmptyString(raw.source) ? { source: raw.source } : {}
1083
1082
  };
1084
- if (raw.type === "beacon_vectors_result" || raw.type === "daemon_mesh_result") {
1083
+ if (raw.type === "daemon_mesh_result") {
1085
1084
  if (!isNonEmptyString(raw.requestId)) return null;
1086
1085
  const base = { requestId: raw.requestId, success: raw.success === true };
1087
- if (raw.type === "beacon_vectors_result") {
1088
- return {
1089
- type: "beacon_vectors_result",
1090
- ...base,
1091
- ...Array.isArray(raw.reports) ? { reports: raw.reports } : {},
1092
- ...typeof raw.truncated === "number" ? { truncated: raw.truncated } : {},
1093
- ...typeof raw.error === "string" ? { error: raw.error } : {}
1094
- };
1095
- }
1096
1086
  return {
1097
1087
  type: "daemon_mesh_result",
1098
1088
  ...base,
@@ -2069,9 +2059,6 @@ function sanitizeModelIdentifier(value) {
2069
2059
  const trimmed = value.trim();
2070
2060
  return MODEL_IDENTIFIER_PATTERN.test(trimmed) ? trimmed : void 0;
2071
2061
  }
2072
- function readString2(value) {
2073
- return typeof value === "string" && value.trim() ? value.trim() : void 0;
2074
- }
2075
2062
  function readFiniteNumber(value) {
2076
2063
  return typeof value === "number" && Number.isFinite(value) ? value : void 0;
2077
2064
  }
@@ -2083,17 +2070,17 @@ function parseModelSelection(raw) {
2083
2070
  for (const entry of record.history) {
2084
2071
  if (!entry || typeof entry !== "object") continue;
2085
2072
  const e = entry;
2086
- const value = readString2(e.value);
2073
+ const value = readString(e.value);
2087
2074
  const at = readFiniteNumber(e.at);
2088
2075
  const via = e.via === "launch" || e.via === "change_model" || e.via === "observed" ? e.via : void 0;
2089
2076
  if (value && at !== void 0 && via) history.push({ at, value, via });
2090
2077
  }
2091
2078
  }
2092
- const requested = readString2(record.requested);
2093
- const launchValue = readString2(record.launchValue);
2094
- const resolvedDefault = readString2(record.resolvedDefault);
2095
- const current = readString2(record.current);
2096
- const observed = readString2(record.observed);
2079
+ const requested = readString(record.requested);
2080
+ const launchValue = readString(record.launchValue);
2081
+ const resolvedDefault = readString(record.resolvedDefault);
2082
+ const current = readString(record.current);
2083
+ const observed = readString(record.observed);
2097
2084
  const observedAt = readFiniteNumber(record.observedAt);
2098
2085
  return {
2099
2086
  source: isModelAxisSource(record.source) ? record.source : "unspecified",
@@ -2109,15 +2096,15 @@ function parseModelSelection(raw) {
2109
2096
  function parseSessionLaunchRecord(raw) {
2110
2097
  if (!raw || typeof raw !== "object") return void 0;
2111
2098
  const record = raw;
2112
- const sessionId = readString2(record.sessionId);
2113
- const providerType = readString2(record.providerType);
2099
+ const sessionId = readString(record.sessionId);
2100
+ const providerType = readString(record.providerType);
2114
2101
  const launchedAt = readFiniteNumber(record.launchedAt);
2115
2102
  const model = parseModelSelection(record.model);
2116
2103
  const thinkingLevel = parseModelSelection(record.thinkingLevel);
2117
2104
  if (!sessionId || !providerType || launchedAt === void 0 || !model || !thinkingLevel) return void 0;
2118
- const providerVersion = readString2(record.providerVersion);
2119
- const workspace = readString2(record.workspace);
2120
- const autoApproveModeId = readString2(record.autoApproveModeId);
2105
+ const providerVersion = readString(record.providerVersion);
2106
+ const workspace = readString(record.workspace);
2107
+ const autoApproveModeId = readString(record.autoApproveModeId);
2121
2108
  return {
2122
2109
  sessionId,
2123
2110
  providerType,
@@ -2405,8 +2392,6 @@ function decodeMeshIndexQueryResponse(value) {
2405
2392
  // src/turn-ipc-mission.ts
2406
2393
  var MESH_MISSION_STATUSES = ["active", "paused", "completed", "abandoned"];
2407
2394
  var isMeshMissionStatusValue = makeGuard3(MESH_MISSION_STATUSES);
2408
- var MESH_MISSION_SOURCES = ["magi", "coordinator"];
2409
- var isMeshMissionSourceValue = makeGuard3(MESH_MISSION_SOURCES);
2410
2395
  function isMissionBriefWire(value) {
2411
2396
  if (!isRecord(value) || !hasOnlyKeys2(value, ["goal", "constraints", "doneCriteria", "handoffNotes", "ownedPaths"])) return false;
2412
2397
  if (typeof value.goal !== "string" || value.goal.trim().length === 0) return false;
@@ -2416,23 +2401,21 @@ function isMissionBriefWire(value) {
2416
2401
  return true;
2417
2402
  }
2418
2403
  function isMeshMissionRecordWire(value) {
2419
- if (!isRecord(value) || !hasOnlyKeys2(value, ["id", "meshId", "title", "goal", "status", "source", "brief"])) return false;
2404
+ if (!isRecord(value) || !hasOnlyKeys2(value, ["id", "meshId", "title", "goal", "status", "brief"])) return false;
2420
2405
  if (!isEvidenceIdentifier(value.id) || !isEvidenceIdentifier(value.meshId)) return false;
2421
2406
  if (typeof value.title !== "string" || typeof value.goal !== "string") return false;
2422
2407
  if (!isMeshMissionStatusValue(value.status)) return false;
2423
- if (value.source !== void 0 && !isMeshMissionSourceValue(value.source)) return false;
2424
2408
  if (value.brief !== void 0 && !isMissionBriefWire(value.brief)) return false;
2425
2409
  return true;
2426
2410
  }
2427
2411
  function isMissionUpsertRequest(value) {
2428
- if (!isRecord(value) || !hasOnlyKeys2(value, ["v", "meshId", "id", "title", "goal", "status", "source", "brief"])) return false;
2412
+ if (!isRecord(value) || !hasOnlyKeys2(value, ["v", "meshId", "id", "title", "goal", "status", "brief"])) return false;
2429
2413
  if (value.v !== TURN_IPC_PROTOCOL_VERSION) return false;
2430
2414
  if (!isEvidenceIdentifier(value.meshId)) return false;
2431
2415
  if (value.id !== void 0 && !isEvidenceIdentifier(value.id)) return false;
2432
2416
  if (typeof value.title !== "string" || value.title.trim().length === 0) return false;
2433
2417
  if (value.goal !== void 0 && typeof value.goal !== "string") return false;
2434
2418
  if (value.status !== void 0 && !isMeshMissionStatusValue(value.status)) return false;
2435
- if (value.source !== void 0 && !isMeshMissionSourceValue(value.source)) return false;
2436
2419
  if (value.brief !== void 0 && value.brief !== null && !isMissionBriefWire(value.brief)) return false;
2437
2420
  return true;
2438
2421
  }
@@ -2466,7 +2449,7 @@ function decodeMissionQueryResponse(value) {
2466
2449
  return isMissionQueryResponse(value) ? value : null;
2467
2450
  }
2468
2451
  function isMissionListQueryRequest(value) {
2469
- if (!isRecord(value) || !hasOnlyKeys2(value, ["v", "meshId", "statuses", "verbose", "includeMagi", "withStats", "limit", "historyIdLimit", "meshStatusView"])) return false;
2452
+ if (!isRecord(value) || !hasOnlyKeys2(value, ["v", "meshId", "statuses", "verbose", "withStats", "limit", "historyIdLimit", "meshStatusView"])) return false;
2470
2453
  if (value.meshStatusView !== void 0 && value.meshStatusView !== "compact" && value.meshStatusView !== "verbose") return false;
2471
2454
  if (value.v !== TURN_IPC_PROTOCOL_VERSION) return false;
2472
2455
  if (!isEvidenceIdentifier(value.meshId)) return false;
@@ -2475,7 +2458,6 @@ function isMissionListQueryRequest(value) {
2475
2458
  if (!value.statuses.every(isMeshMissionStatusValue)) return false;
2476
2459
  }
2477
2460
  if (value.verbose !== void 0 && typeof value.verbose !== "boolean") return false;
2478
- if (value.includeMagi !== void 0 && typeof value.includeMagi !== "boolean") return false;
2479
2461
  if (value.withStats !== void 0 && typeof value.withStats !== "boolean") return false;
2480
2462
  if (value.limit !== void 0 && !isNonNegativeInt(value.limit)) return false;
2481
2463
  if (value.historyIdLimit !== void 0 && !isNonNegativeInt(value.historyIdLimit)) return false;
@@ -2508,13 +2490,12 @@ function isMissionListSummaryWire(value) {
2508
2490
  const hasGoal = "goal" in value;
2509
2491
  const hasPreview = "goalPreview" in value && "goalTruncated" in value;
2510
2492
  if (hasGoal === hasPreview) return false;
2511
- const baseKeys = ["id", "meshId", "title", "status", "source", "tasks", "stats", "brief", "createdAt", "updatedAt", "closeCandidateEmittedAt"];
2493
+ const baseKeys = ["id", "meshId", "title", "status", "tasks", "stats", "brief", "createdAt", "updatedAt", "closeCandidateEmittedAt"];
2512
2494
  const allowed = hasGoal ? [...baseKeys, "goal"] : [...baseKeys, "goalPreview", "goalTruncated"];
2513
2495
  if (!hasOnlyKeys2(value, allowed)) return false;
2514
2496
  if (!isEvidenceIdentifier(value.id) || !isEvidenceIdentifier(value.meshId)) return false;
2515
2497
  if (typeof value.title !== "string") return false;
2516
2498
  if (!isMeshMissionStatusValue(value.status)) return false;
2517
- if (value.source !== void 0 && !isMeshMissionSourceValue(value.source)) return false;
2518
2499
  if (!isMeshMissionTaskAggregateWire(value.tasks)) return false;
2519
2500
  if (value.stats !== void 0 && !isMeshMissionStatsWire(value.stats)) return false;
2520
2501
  if (value.brief !== void 0 && !isMissionBriefWire(value.brief)) return false;
@@ -2667,7 +2648,7 @@ function decodeQueueQueryRequest(value) {
2667
2648
  return isQueueQueryRequest(value) ? value : null;
2668
2649
  }
2669
2650
  function isQueueDependencyHeadWire(value) {
2670
- return isRecord(value) && hasOnlyKeys2(value, ["id", "status", "blockedReason", "cancelReason"]) && typeof value.id === "string" && typeof value.status === "string" && (value.blockedReason === void 0 || typeof value.blockedReason === "string") && (value.cancelReason === void 0 || typeof value.cancelReason === "string");
2651
+ return isRecord(value) && hasOnlyKeys2(value, ["id", "status", "cancelReason"]) && typeof value.id === "string" && typeof value.status === "string" && (value.cancelReason === void 0 || typeof value.cancelReason === "string");
2671
2652
  }
2672
2653
  function isQueueQueryResponse(value) {
2673
2654
  if (!isRecord(value) || !hasOnlyKeys2(value, ["entries", "counts", "oldHistoricalCount", "dependencyHeads"])) return false;
@@ -2681,7 +2662,7 @@ function decodeQueueQueryResponse(value) {
2681
2662
  return isQueueQueryResponse(value) ? value : null;
2682
2663
  }
2683
2664
  function isQueueEnqueueRequest(value) {
2684
- return isRecord(value) && hasOnlyKeys2(value, ["v", "meshId", "message", "options", "decision"]) && value.v === TURN_IPC_PROTOCOL_VERSION && isEvidenceIdentifier(value.meshId) && typeof value.message === "string" && isOptionalRecord(value.options) && isOptionalRecord(value.decision);
2665
+ return isRecord(value) && hasOnlyKeys2(value, ["v", "meshId", "message", "options"]) && value.v === TURN_IPC_PROTOCOL_VERSION && isEvidenceIdentifier(value.meshId) && typeof value.message === "string" && isOptionalRecord(value.options);
2685
2666
  }
2686
2667
  function decodeQueueEnqueueRequest(value) {
2687
2668
  return isQueueEnqueueRequest(value) ? value : null;
@@ -2692,28 +2673,24 @@ function isQueueEnqueueResponse(value) {
2692
2673
  function decodeQueueEnqueueResponse(value) {
2693
2674
  return isQueueEnqueueResponse(value) ? value : null;
2694
2675
  }
2695
- function isQueueEnqueueGraphRequest(value) {
2696
- if (!isRecord(value) || !hasOnlyKeys2(value, ["v", "meshId", "mode", "specs", "plan", "audit"])) return false;
2697
- if (value.v !== TURN_IPC_PROTOCOL_VERSION || !isEvidenceIdentifier(value.meshId)) return false;
2698
- if (value.mode === "compat") return isRecordArray(value.specs) && value.plan === void 0 && isOptionalRecord(value.audit);
2699
- if (value.mode === "graph") return isRecord(value.plan) && value.specs === void 0 && isOptionalRecord(value.audit);
2700
- return false;
2676
+ function isQueueEnqueueBatchRequest(value) {
2677
+ return isRecord(value) && hasOnlyKeys2(value, ["v", "meshId", "specs"]) && value.v === TURN_IPC_PROTOCOL_VERSION && isEvidenceIdentifier(value.meshId) && isRecordArray(value.specs);
2701
2678
  }
2702
- function decodeQueueEnqueueGraphRequest(value) {
2703
- return isQueueEnqueueGraphRequest(value) ? value : null;
2679
+ function decodeQueueEnqueueBatchRequest(value) {
2680
+ return isQueueEnqueueBatchRequest(value) ? value : null;
2704
2681
  }
2705
- function isQueueEnqueueGraphResponse(value) {
2682
+ function isQueueEnqueueBatchResponse(value) {
2706
2683
  if (!isRecord(value)) return false;
2707
2684
  if (value.ok === true) {
2708
- return hasOnlyKeys2(value, ["ok", "tasks", "graph"]) && Array.isArray(value.tasks) && value.tasks.every(isQueueEntryWire) && isOptionalRecord(value.graph);
2685
+ return hasOnlyKeys2(value, ["ok", "tasks"]) && Array.isArray(value.tasks) && value.tasks.every(isQueueEntryWire);
2709
2686
  }
2710
2687
  if (value.ok === false) {
2711
2688
  return hasOnlyKeys2(value, ["ok", "refusalCode", "message", "extra"]) && typeof value.message === "string" && isOptionalString(value.refusalCode) && isOptionalRecord(value.extra);
2712
2689
  }
2713
2690
  return false;
2714
2691
  }
2715
- function decodeQueueEnqueueGraphResponse(value) {
2716
- return isQueueEnqueueGraphResponse(value) ? value : null;
2692
+ function decodeQueueEnqueueBatchResponse(value) {
2693
+ return isQueueEnqueueBatchResponse(value) ? value : null;
2717
2694
  }
2718
2695
  function isQueueCancelRequest(value) {
2719
2696
  return isRecord(value) && hasOnlyKeys2(value, ["v", "meshId", "taskId", "reason"]) && value.v === TURN_IPC_PROTOCOL_VERSION && isEvidenceIdentifier(value.meshId) && isEvidenceIdentifier(value.taskId) && isOptionalString(value.reason);
@@ -2740,31 +2717,17 @@ function decodeQueueRequeueResponse(value) {
2740
2717
  return isQueueRequeueResponse(value) ? value : null;
2741
2718
  }
2742
2719
  function isDirectDispatchRecordRequest(value) {
2743
- return isRecord(value) && hasOnlyKeys2(value, ["v", "meshId", "taskId", "message", "task", "decision"]) && value.v === TURN_IPC_PROTOCOL_VERSION && isEvidenceIdentifier(value.meshId) && isEvidenceIdentifier(value.taskId) && typeof value.message === "string" && isOptionalRecord(value.task) && isOptionalRecord(value.decision);
2720
+ return isRecord(value) && hasOnlyKeys2(value, ["v", "meshId", "taskId", "message", "task"]) && value.v === TURN_IPC_PROTOCOL_VERSION && isEvidenceIdentifier(value.meshId) && isEvidenceIdentifier(value.taskId) && typeof value.message === "string" && isOptionalRecord(value.task);
2744
2721
  }
2745
2722
  function decodeDirectDispatchRecordRequest(value) {
2746
2723
  return isDirectDispatchRecordRequest(value) ? value : null;
2747
2724
  }
2748
2725
  function isDirectDispatchRecordResponse(value) {
2749
- return isRecord(value) && hasOnlyKeys2(value, ["taskRecorded", "decisionRecorded"]) && typeof value.taskRecorded === "boolean" && typeof value.decisionRecorded === "boolean";
2726
+ return isRecord(value) && hasOnlyKeys2(value, ["taskRecorded"]) && typeof value.taskRecorded === "boolean";
2750
2727
  }
2751
2728
  function decodeDirectDispatchRecordResponse(value) {
2752
2729
  return isDirectDispatchRecordResponse(value) ? value : null;
2753
2730
  }
2754
- var GRAPH_AUDIT_EVENTS = ["gate_claimed", "gate_released", "gate_abandoned", "node_patched"];
2755
- var isGraphAuditEvent = makeGuard3(GRAPH_AUDIT_EVENTS);
2756
- function isGraphAuditRecordRequest(value) {
2757
- return isRecord(value) && hasOnlyKeys2(value, ["v", "meshId", "event", "fields"]) && value.v === TURN_IPC_PROTOCOL_VERSION && isEvidenceIdentifier(value.meshId) && isGraphAuditEvent(value.event) && isRecord(value.fields);
2758
- }
2759
- function decodeGraphAuditRecordRequest(value) {
2760
- return isGraphAuditRecordRequest(value) ? value : null;
2761
- }
2762
- function isGraphAuditRecordResponse(value) {
2763
- return isRecord(value) && hasOnlyKeys2(value, ["recorded"]) && typeof value.recorded === "boolean";
2764
- }
2765
- function decodeGraphAuditRecordResponse(value) {
2766
- return isGraphAuditRecordResponse(value) ? value : null;
2767
- }
2768
2731
  function isActiveWorkQueryRequest(value) {
2769
2732
  if (!isRecord(value) || !hasOnlyKeys2(value, ["v", "meshId", "nodes", "queue", "recordTail", "includeTerminalDirect", "compute", "includeInputs", "includeSummary", "includeSchedulingRuntime", "mesh"])) return false;
2770
2733
  if (value.v !== TURN_IPC_PROTOCOL_VERSION || !isEvidenceIdentifier(value.meshId)) return false;
@@ -2813,123 +2776,7 @@ function decodeRecoveryContextQueryResponse(value) {
2813
2776
  return isRecoveryContextQueryResponse(value) ? value : null;
2814
2777
  }
2815
2778
 
2816
- // src/turn-ipc-graph.ts
2817
- function isGraphGateClaimRequest(value) {
2818
- if (!isRecord(value) || !hasOnlyKeys2(value, ["v", "meshId", "gateId", "coordinatorSessionId", "leaseSeconds", "extendDeadlineSeconds", "probeConvergenceEvidence"])) return false;
2819
- if (value.v !== TURN_IPC_PROTOCOL_VERSION || !isEvidenceIdentifier(value.meshId) || !isEvidenceIdentifier(value.gateId) || !isEvidenceIdentifier(value.coordinatorSessionId)) return false;
2820
- if (value.leaseSeconds !== void 0 && !isFiniteNumber3(value.leaseSeconds)) return false;
2821
- if (value.extendDeadlineSeconds !== void 0 && !isFiniteNumber3(value.extendDeadlineSeconds)) return false;
2822
- return isOptionalBoolean(value.probeConvergenceEvidence);
2823
- }
2824
- function decodeGraphGateClaimRequest(value) {
2825
- return isGraphGateClaimRequest(value) ? value : null;
2826
- }
2827
- function isGraphGateClaimResponse(value) {
2828
- if (!isRecord(value) || !hasOnlyKeys2(value, ["claimed", "reason", "gate", "leaseGeneration", "fencingToken", "leaseExpiresAt", "deadlineAt", "ambiguousExternalOutcome", "previousLeaseOwnerSessionId", "convergenceEvidence"])) return false;
2829
- if (typeof value.claimed !== "boolean") return false;
2830
- return isOptionalRecord(value.gate) && isOptionalRecord(value.convergenceEvidence) && isOptionalBoolean(value.ambiguousExternalOutcome);
2831
- }
2832
- function decodeGraphGateClaimResponse(value) {
2833
- return isGraphGateClaimResponse(value) ? value : null;
2834
- }
2835
- function isGraphGateReleaseRequest(value) {
2836
- if (!isRecord(value) || !hasOnlyKeys2(value, ["v", "meshId", "gateId", "fencingToken", "leaseGeneration", "idempotencyKey", "outcome", "result", "evidence", "patches"])) return false;
2837
- if (value.v !== TURN_IPC_PROTOCOL_VERSION || !isEvidenceIdentifier(value.meshId) || !isEvidenceIdentifier(value.gateId)) return false;
2838
- if (typeof value.fencingToken !== "string" || !value.fencingToken) return false;
2839
- if (!isFiniteNumber3(value.leaseGeneration)) return false;
2840
- if (typeof value.idempotencyKey !== "string" || !value.idempotencyKey) return false;
2841
- if (typeof value.outcome !== "string" || !value.outcome) return false;
2842
- if (value.patches !== void 0) {
2843
- if (!Array.isArray(value.patches)) return false;
2844
- for (const p of value.patches) {
2845
- if (!isRecord(p) || typeof p.node !== "string" || !p.node || !isRecord(p.baseSpecPatch)) return false;
2846
- }
2847
- }
2848
- return true;
2849
- }
2850
- function decodeGraphGateReleaseRequest(value) {
2851
- return isGraphGateReleaseRequest(value) ? value : null;
2852
- }
2853
- function isGraphGateReleaseResponse(value) {
2854
- if (!isRecord(value)) return false;
2855
- if (value.released === true) {
2856
- if (!hasOnlyKeys2(value, ["released", "duplicate", "gate", "materializedNodeIds", "downstreamNodeCount", "graphCompleted"])) return false;
2857
- if (typeof value.duplicate !== "boolean") return false;
2858
- if (!Array.isArray(value.materializedNodeIds) || !value.materializedNodeIds.every((n) => typeof n === "string")) return false;
2859
- if (value.downstreamNodeCount !== void 0 && !isNonNegativeInt(value.downstreamNodeCount)) return false;
2860
- return isOptionalRecord(value.gate) && isOptionalBoolean(value.graphCompleted);
2861
- }
2862
- if (value.released === false) {
2863
- return hasOnlyKeys2(value, ["released", "refusalCode", "message"]) && typeof value.message === "string" && isOptionalString(value.refusalCode);
2864
- }
2865
- return false;
2866
- }
2867
- function decodeGraphGateReleaseResponse(value) {
2868
- return isGraphGateReleaseResponse(value) ? value : null;
2869
- }
2870
- function isGraphGateAbandonRequest(value) {
2871
- if (!isRecord(value) || !hasOnlyKeys2(value, ["v", "meshId", "gateId", "reason", "coordinatorSessionId", "force"])) return false;
2872
- if (value.v !== TURN_IPC_PROTOCOL_VERSION || !isEvidenceIdentifier(value.meshId) || !isEvidenceIdentifier(value.gateId)) return false;
2873
- if (typeof value.reason !== "string" || !value.reason) return false;
2874
- if (value.coordinatorSessionId !== void 0 && !isEvidenceIdentifier(value.coordinatorSessionId)) return false;
2875
- return isOptionalBoolean(value.force);
2876
- }
2877
- function decodeGraphGateAbandonRequest(value) {
2878
- return isGraphGateAbandonRequest(value) ? value : null;
2879
- }
2880
- function isGraphGateAbandonResponse(value) {
2881
- if (!isRecord(value) || !hasOnlyKeys2(value, ["abandoned", "reason", "gate", "cancelledNodeIds", "cancelledTaskIds", "graphStatus"])) return false;
2882
- if (typeof value.abandoned !== "boolean") return false;
2883
- if (!Array.isArray(value.cancelledNodeIds) || !value.cancelledNodeIds.every((n) => typeof n === "string")) return false;
2884
- if (!Array.isArray(value.cancelledTaskIds) || !value.cancelledTaskIds.every((n) => typeof n === "string")) return false;
2885
- return isOptionalRecord(value.gate);
2886
- }
2887
- function decodeGraphGateAbandonResponse(value) {
2888
- return isGraphGateAbandonResponse(value) ? value : null;
2889
- }
2890
- function isGraphNodePatchRequest(value) {
2891
- if (!isRecord(value) || !hasOnlyKeys2(value, ["v", "meshId", "node", "graphId", "baseSpecPatch"])) return false;
2892
- if (value.v !== TURN_IPC_PROTOCOL_VERSION || !isEvidenceIdentifier(value.meshId)) return false;
2893
- if (typeof value.node !== "string" || !value.node) return false;
2894
- if (value.graphId !== void 0 && !isEvidenceIdentifier(value.graphId)) return false;
2895
- return isRecord(value.baseSpecPatch) && Object.keys(value.baseSpecPatch).length > 0;
2896
- }
2897
- function decodeGraphNodePatchRequest(value) {
2898
- return isGraphNodePatchRequest(value) ? value : null;
2899
- }
2900
- function isGraphNodePatchResponse(value) {
2901
- if (!isRecord(value)) return false;
2902
- if (value.patched === true) {
2903
- if (!hasOnlyKeys2(value, ["patched", "graphId", "nodeId", "ref", "queueTaskId", "materializationVersion", "state", "outcomeKind", "skippedReason", "blockedReason"])) return false;
2904
- if (!isEvidenceIdentifier(value.graphId) || !isEvidenceIdentifier(value.nodeId)) return false;
2905
- if (!isNonNegativeInt(value.materializationVersion)) return false;
2906
- return typeof value.state === "string" && typeof value.outcomeKind === "string";
2907
- }
2908
- if (value.patched === false) {
2909
- return hasOnlyKeys2(value, ["patched", "refusalCode", "message"]) && typeof value.message === "string" && isOptionalString(value.refusalCode);
2910
- }
2911
- return false;
2912
- }
2913
- function decodeGraphNodePatchResponse(value) {
2914
- return isGraphNodePatchResponse(value) ? value : null;
2915
- }
2916
- function isGraphViewQueryRequest(value) {
2917
- if (!isRecord(value) || !hasOnlyKeys2(value, ["v", "meshId", "graphId", "batchId", "activeOnly", "limit", "probeGateEvidence"])) return false;
2918
- if (value.v !== TURN_IPC_PROTOCOL_VERSION || !isEvidenceIdentifier(value.meshId)) return false;
2919
- if (value.graphId !== void 0 && !isEvidenceIdentifier(value.graphId)) return false;
2920
- if (value.batchId !== void 0 && !isEvidenceIdentifier(value.batchId)) return false;
2921
- if (value.limit !== void 0 && !isNonNegativeInt(value.limit)) return false;
2922
- return isOptionalBoolean(value.activeOnly) && isOptionalBoolean(value.probeGateEvidence);
2923
- }
2924
- function decodeGraphViewQueryRequest(value) {
2925
- return isGraphViewQueryRequest(value) ? value : null;
2926
- }
2927
- function isGraphViewQueryResponse(value) {
2928
- return isRecord(value) && hasOnlyKeys2(value, ["graphs"]) && isRecordArray(value.graphs);
2929
- }
2930
- function decodeGraphViewQueryResponse(value) {
2931
- return isGraphViewQueryResponse(value) ? value : null;
2932
- }
2779
+ // src/turn-ipc-stats.ts
2933
2780
  function isTaskStatsQueryRequest(value) {
2934
2781
  if (!isRecord(value) || !hasOnlyKeys2(value, ["v", "meshId", "taskIds", "missionId", "tail", "rollup", "missionIds"])) return false;
2935
2782
  if (value.v !== TURN_IPC_PROTOCOL_VERSION || !isEvidenceIdentifier(value.meshId)) return false;
@@ -3023,21 +2870,15 @@ var TURN_IPC_COMMANDS = [
3023
2870
  "record_local",
3024
2871
  "queue_query",
3025
2872
  "queue_enqueue",
3026
- "queue_enqueue_graph",
2873
+ "queue_enqueue_batch",
3027
2874
  "queue_cancel",
3028
2875
  "queue_requeue",
3029
2876
  "direct_dispatch_record",
3030
- "graph_audit_record",
3031
2877
  "active_work_query",
3032
2878
  "recovery_context_query",
3033
2879
  // C-W9c additions (2026-09-24 19:00 stamp — the last mcp-server in-process
3034
- // daemon-core paths: graph gates/plan/patch, mission reads (MAGI), task/
3035
- // mission stats, orphaned-pin helpers, one prune audit):
3036
- "graph_gate_claim",
3037
- "graph_gate_release",
3038
- "graph_gate_abandon",
3039
- "graph_node_patch",
3040
- "graph_view_query",
2880
+ // daemon-core paths: mission reads, task/mission stats, orphaned-pin
2881
+ // helpers, one prune audit):
3041
2882
  "task_stats_query",
3042
2883
  "prune_stale_direct",
3043
2884
  "orphaned_pin_notify"
@@ -3486,10 +3327,8 @@ export {
3486
3327
  DISPATCH_FAILURE_REASONS,
3487
3328
  EVIDENCE_ENVELOPE_FIELD_SPECS,
3488
3329
  EVIDENCE_SOURCE_IDS,
3489
- GRAPH_AUDIT_EVENTS,
3490
3330
  HOLD_REASONS,
3491
3331
  LIVENESS_RESULTS,
3492
- MAGI_RAW_ANSWER_CAP,
3493
3332
  MAX_MESH_RECORD_STRING,
3494
3333
  MAX_OWNED_PATHS,
3495
3334
  MESH_CHUNK_KIND,
@@ -3500,7 +3339,6 @@ export {
3500
3339
  MESH_MAX_CHUNKS,
3501
3340
  MESH_MAX_INLINE_FRAME_BYTES,
3502
3341
  MESH_MAX_REASSEMBLED_BYTES,
3503
- MESH_MISSION_SOURCES,
3504
3342
  MESH_MISSION_STATUSES,
3505
3343
  MESH_P2P_SIGNAL_TYPES,
3506
3344
  MESH_RECORD_PAYLOAD_KEYS,
@@ -3534,6 +3372,7 @@ export {
3534
3372
  RECENT_SESSION_BUCKETS,
3535
3373
  RECLAIMING_SEND_REFUSALS,
3536
3374
  RELEASE_CHANNELS,
3375
+ REMOVED_MESH_TOOLS,
3537
3376
  RETIRED_MESH_TOOLS,
3538
3377
  SEND_POLICY_MODES,
3539
3378
  SEND_REFUSAL_REASONS,
@@ -3577,7 +3416,6 @@ export {
3577
3416
  WORKER_TOOLS,
3578
3417
  appendWorkerProtocolFooter,
3579
3418
  argsCarryStatusProbeMarker,
3580
- buildMagiPanelProposal,
3581
3419
  buildSlotProposal,
3582
3420
  canonicalDaemonId,
3583
3421
  classifySessionStatus,
@@ -3593,18 +3431,6 @@ export {
3593
3431
  decodeDashboardToUserSession,
3594
3432
  decodeDirectDispatchRecordRequest,
3595
3433
  decodeDirectDispatchRecordResponse,
3596
- decodeGraphAuditRecordRequest,
3597
- decodeGraphAuditRecordResponse,
3598
- decodeGraphGateAbandonRequest,
3599
- decodeGraphGateAbandonResponse,
3600
- decodeGraphGateClaimRequest,
3601
- decodeGraphGateClaimResponse,
3602
- decodeGraphGateReleaseRequest,
3603
- decodeGraphGateReleaseResponse,
3604
- decodeGraphNodePatchRequest,
3605
- decodeGraphNodePatchResponse,
3606
- decodeGraphViewQueryRequest,
3607
- decodeGraphViewQueryResponse,
3608
3434
  decodeLedgerQueryRequest,
3609
3435
  decodeLedgerQueryResponse,
3610
3436
  decodeMeshIndexQueryRequest,
@@ -3629,8 +3455,8 @@ export {
3629
3455
  decodePruneStaleDirectResponse,
3630
3456
  decodeQueueCancelRequest,
3631
3457
  decodeQueueCancelResponse,
3632
- decodeQueueEnqueueGraphRequest,
3633
- decodeQueueEnqueueGraphResponse,
3458
+ decodeQueueEnqueueBatchRequest,
3459
+ decodeQueueEnqueueBatchResponse,
3634
3460
  decodeQueueEnqueueRequest,
3635
3461
  decodeQueueEnqueueResponse,
3636
3462
  decodeQueueQueryRequest,
@@ -3687,7 +3513,6 @@ export {
3687
3513
  isDowngrade,
3688
3514
  isEvidenceIdentifier,
3689
3515
  isFiniteNumber,
3690
- isGraphViewQueryRequest,
3691
3516
  isIdleSessionState,
3692
3517
  isInputEnvelopeWire,
3693
3518
  isMeshDeliveryMode,
@@ -3766,14 +3591,17 @@ export {
3766
3591
  parseSessionLaunchRecord,
3767
3592
  pathsOverlap,
3768
3593
  pickBestTransitGitStatus,
3594
+ projectFileDiffRow,
3769
3595
  projectTurnEvidenceEntry,
3770
3596
  readBoolean,
3771
3597
  readEnvelopeFields,
3772
3598
  readGitSubmodules,
3773
3599
  readNumber,
3600
+ readOptionalRecord,
3774
3601
  readRecord,
3775
3602
  readString,
3776
3603
  readStringArray,
3604
+ readText,
3777
3605
  renderCoordinatorWorkerSection,
3778
3606
  renderMissionBriefBlock,
3779
3607
  renderWorkerProtocolFooter,