@adhdev/daemon-core 0.9.82-rc.367 → 0.9.82-rc.368

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
@@ -311,10 +311,10 @@ function readInjected(value) {
311
311
  }
312
312
  function getDaemonBuildInfo() {
313
313
  if (cached) return cached;
314
- const commit = readInjected(true ? "bb7e66dbc483232a27d1de42cf8ecba3eb0a818c" : void 0) ?? "unknown";
315
- const commitShort = readInjected(true ? "bb7e66db" : void 0) ?? (commit !== "unknown" ? commit.slice(0, 7) : "unknown");
316
- const version = readInjected(true ? "0.9.82-rc.367" : void 0) ?? readInjected(typeof process !== "undefined" ? process.env?.ADHDEV_PKG_VERSION : void 0) ?? "unknown";
317
- const builtAt = readInjected(true ? "2026-06-24T04:45:13.384Z" : void 0);
314
+ const commit = readInjected(true ? "8cb6cfc5399f55c6b625095bacc9a27e1741df17" : void 0) ?? "unknown";
315
+ const commitShort = readInjected(true ? "8cb6cfc5" : void 0) ?? (commit !== "unknown" ? commit.slice(0, 7) : "unknown");
316
+ const version = readInjected(true ? "0.9.82-rc.368" : void 0) ?? readInjected(typeof process !== "undefined" ? process.env?.ADHDEV_PKG_VERSION : void 0) ?? "unknown";
317
+ const builtAt = readInjected(true ? "2026-06-24T06:14:32.255Z" : void 0);
318
318
  cached = builtAt ? { commit, commitShort, version, builtAt } : { commit, commitShort, version };
319
319
  return cached;
320
320
  }
@@ -12866,13 +12866,25 @@ function tryAssignQueueTask(components, meshId, nodeId, sessionId, providerType)
12866
12866
  const mesh = getMeshWithCache(components, meshId);
12867
12867
  const node = mesh?.nodes.find((n) => readMeshNodeId(n) === nodeId);
12868
12868
  const localClaimAdapter = components.cliManager?.adapters?.get(sessionId);
12869
- if (localClaimAdapter) {
12870
- const sessionWorkspace = normalizeMeshWorkspaceForCompare(localClaimAdapter.workingDir);
12871
- const nodeWorkspace = normalizeMeshWorkspaceForCompare(readNonEmptyString2(node?.workspace));
12872
- if (sessionWorkspace && nodeWorkspace && sessionWorkspace !== nodeWorkspace) {
12873
- LOG.info("MeshQueue", `WTCLAIM: refusing claim for node ${nodeId} (${sessionId}) \u2014 session workspace "${sessionWorkspace}" \u2260 node workspace "${nodeWorkspace}" (cross-workspace dispatch blocked)`);
12869
+ let claimInstanceWorkspace = "";
12870
+ let claimStampedNodeId = "";
12871
+ try {
12872
+ const claimState = components.instanceManager?.getInstance?.(sessionId)?.getState?.();
12873
+ claimInstanceWorkspace = readNonEmptyString2(claimState?.workspace);
12874
+ const claimSettings = claimState?.settings || {};
12875
+ claimStampedNodeId = readNonEmptyString2(claimSettings.meshNodeId);
12876
+ } catch {
12877
+ }
12878
+ const nodeWorkspaceRaw = readNonEmptyString2(node?.workspace);
12879
+ const sessionWorkspaceRaw = readNonEmptyString2(localClaimAdapter?.workingDir) || claimInstanceWorkspace;
12880
+ if (claimStampedNodeId && nodeId) {
12881
+ if (!meshNodeIdMatches({ id: claimStampedNodeId }, nodeId)) {
12882
+ LOG.info("MeshQueue", `WTDISPATCH: refusing claim for node ${nodeId} (${sessionId}) \u2014 session is bound to node "${claimStampedNodeId}" (cross-node claim blocked)`);
12874
12883
  return false;
12875
12884
  }
12885
+ } else if (sessionWorkspaceRaw && nodeWorkspaceRaw && !meshWorkspacesEquivalent(sessionWorkspaceRaw, nodeWorkspaceRaw)) {
12886
+ LOG.info("MeshQueue", `WTCLAIM: refusing claim for node ${nodeId} (${sessionId}) \u2014 session workspace "${normalizeMeshWorkspaceForCompare(sessionWorkspaceRaw)}" \u2260 node workspace "${normalizeMeshWorkspaceForCompare(nodeWorkspaceRaw)}" (cross-workspace dispatch blocked)`);
12887
+ return false;
12876
12888
  }
12877
12889
  const capabilityTags = buildMeshNodeCapabilityTags(node, providerType);
12878
12890
  const providerMaxParallel = resolveProviderMaxParallel(node?.policy, providerType);
@@ -14150,6 +14162,25 @@ function handleMeshForwardEvent(components, payload) {
14150
14162
  metadataEvent: buildRelayMetadataEvent(payload)
14151
14163
  });
14152
14164
  }
14165
+ function enqueueCoordinatorForwardPush(coordinatorDaemonId, run) {
14166
+ let lane = coordinatorForwardLanes.get(coordinatorDaemonId);
14167
+ if (!lane) {
14168
+ lane = { tail: Promise.resolve(), depth: 0 };
14169
+ coordinatorForwardLanes.set(coordinatorDaemonId, lane);
14170
+ }
14171
+ const wasIdle = lane.depth === 0;
14172
+ lane.depth += 1;
14173
+ const dec = () => {
14174
+ lane.depth -= 1;
14175
+ };
14176
+ if (wasIdle) {
14177
+ lane.tail = Promise.resolve(run()).catch(() => {
14178
+ }).then(dec, dec);
14179
+ } else {
14180
+ lane.tail = lane.tail.then(() => run()).catch(() => {
14181
+ }).then(dec, dec);
14182
+ }
14183
+ }
14153
14184
  function forwardUnresolvedDelegateEvent(components, routing, event) {
14154
14185
  const coordinatorDaemonId = readNonEmptyString2(routing.coordinatorDaemonId);
14155
14186
  if (!coordinatorDaemonId) return false;
@@ -14181,7 +14212,8 @@ function forwardUnresolvedDelegateEvent(components, routing, event) {
14181
14212
  };
14182
14213
  traceMeshEventStage("outbox_enqueue", fwdTraceCtx, `coordinatorDaemon=${coordinatorDaemonId} meshId=absent`);
14183
14214
  traceMeshEventStage("forward_send", fwdTraceCtx, "immediate push");
14184
- Promise.resolve(components.dispatchMeshCommand(coordinatorDaemonId, "mesh_forward_event", payload)).then((result) => {
14215
+ const dispatchMeshCommand = components.dispatchMeshCommand;
14216
+ enqueueCoordinatorForwardPush(coordinatorDaemonId, () => Promise.resolve(dispatchMeshCommand(coordinatorDaemonId, "mesh_forward_event", payload)).then((result) => {
14185
14217
  if (result && result.success === false) {
14186
14218
  LOG.warn("MeshEvents", `Immediate forward of ${eventName} to coordinator ${coordinatorDaemonId} rejected (${readNonEmptyString2(result.error) || "no reason"}) \u2014 left queued for retry`);
14187
14219
  traceMeshEventDrop("immediate_forward_rejected", fwdTraceCtx, readNonEmptyString2(result.error) || "no reason");
@@ -14190,7 +14222,7 @@ function forwardUnresolvedDelegateEvent(components, routing, event) {
14190
14222
  if (persisted) ackUnresolvedDelegateForwardByFingerprint(coordinatorDaemonId, eventName, payload);
14191
14223
  }).catch((e) => {
14192
14224
  LOG.warn("MeshEvents", `Immediate forward of ${eventName} to coordinator ${coordinatorDaemonId} failed: ${e?.message || e} \u2014 left queued for retry`);
14193
- });
14225
+ }));
14194
14226
  LOG.info("MeshEvents", `Durably forwarded ${eventName} for unresolved-mesh worker at ${routing.workspace || "(no workspace)"} to coordinator daemon ${coordinatorDaemonId}`);
14195
14227
  return true;
14196
14228
  }
@@ -14273,7 +14305,7 @@ function setupMeshEventForwarding(components) {
14273
14305
  });
14274
14306
  });
14275
14307
  }
14276
- var REMOTE_IDLE_SESSION_TTL_MS, meshByWorkspaceCache, MESH_WORKSPACE_CACHE_TTL_MS, IDLE_AUTO_FAST_FORWARD_THROTTLE_MS, idleAutoFastForwardLastAttempt, INTENTIONAL_CLEANUP_STOP_SUPPRESSION_MS, RECENT_COMPLETION_FINGERPRINT_TTL_MS, DISPATCH_CONFIRM_TIMEOUT_MS, autoLaunchInProgress, autoLaunchCooldownUntil, AUTO_LAUNCH_COOLDOWN_MS, AUTO_LAUNCH_AWAIT_CLAIM_MS, lastAutoLaunchLedgerKey, AUTO_LAUNCH_LEDGER_DEDUP_MAX, MESH_COORDINATOR_EVENTS, EVENT_TO_LEDGER_KIND, MESH_FORCE_INJECT_EVENTS;
14308
+ var REMOTE_IDLE_SESSION_TTL_MS, meshByWorkspaceCache, MESH_WORKSPACE_CACHE_TTL_MS, IDLE_AUTO_FAST_FORWARD_THROTTLE_MS, idleAutoFastForwardLastAttempt, INTENTIONAL_CLEANUP_STOP_SUPPRESSION_MS, RECENT_COMPLETION_FINGERPRINT_TTL_MS, DISPATCH_CONFIRM_TIMEOUT_MS, autoLaunchInProgress, autoLaunchCooldownUntil, AUTO_LAUNCH_COOLDOWN_MS, AUTO_LAUNCH_AWAIT_CLAIM_MS, lastAutoLaunchLedgerKey, AUTO_LAUNCH_LEDGER_DEDUP_MAX, MESH_COORDINATOR_EVENTS, EVENT_TO_LEDGER_KIND, MESH_FORCE_INJECT_EVENTS, coordinatorForwardLanes;
14277
14309
  var init_mesh_events_coordinator = __esm({
14278
14310
  "src/mesh/mesh-events-coordinator.ts"() {
14279
14311
  "use strict";
@@ -14337,6 +14369,7 @@ var init_mesh_events_coordinator = __esm({
14337
14369
  "worktree_bootstrap_complete",
14338
14370
  "worktree_bootstrap_failed"
14339
14371
  ]);
14372
+ coordinatorForwardLanes = /* @__PURE__ */ new Map();
14340
14373
  }
14341
14374
  });
14342
14375
 
@@ -41173,6 +41206,18 @@ var DaemonCliManager = class {
41173
41206
  throw new Error(`Failed to start ${provider.displayName || provider.name || cliType}: ${spawnErr?.message}`);
41174
41207
  }
41175
41208
  this.adapters.set(key, cliInstance.getAdapter());
41209
+ const launchMeshNodeId = typeof settings?.meshNodeId === "string" ? settings.meshNodeId.trim() : "";
41210
+ const launchMeshNodeFor = typeof settings?.meshNodeFor === "string" ? settings.meshNodeFor.trim() : "";
41211
+ if (launchMeshNodeId || launchMeshNodeFor) {
41212
+ try {
41213
+ cliInstance.getAdapter().updateRuntimeMeta?.({
41214
+ ...launchMeshNodeId ? { meshNodeId: launchMeshNodeId } : {},
41215
+ ...launchMeshNodeFor ? { meshNodeFor: launchMeshNodeFor } : {},
41216
+ ...settings?.launchedByCoordinator === true ? { launchedByCoordinator: true } : {}
41217
+ });
41218
+ } catch {
41219
+ }
41220
+ }
41176
41221
  this.startCliExitMonitor(key, cliType);
41177
41222
  }
41178
41223
  // ─── Session start/management ──────────────────────────────