@adhdev/daemon-core 0.9.82-rc.514 → 0.9.82-rc.515

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
@@ -412,10 +412,10 @@ function readInjected(value) {
412
412
  }
413
413
  function getDaemonBuildInfo() {
414
414
  if (cached) return cached;
415
- const commit = readInjected(true ? "380556d36ec79e6fb92d2323b43226d45f8239a6" : void 0) ?? "unknown";
416
- const commitShort = readInjected(true ? "380556d3" : void 0) ?? (commit !== "unknown" ? commit.slice(0, 7) : "unknown");
417
- const version = readInjected(true ? "0.9.82-rc.514" : void 0) ?? readInjected(typeof process !== "undefined" ? process.env?.ADHDEV_PKG_VERSION : void 0) ?? "unknown";
418
- const builtAt = readInjected(true ? "2026-07-13T06:16:17.656Z" : void 0);
415
+ const commit = readInjected(true ? "6dbb06b08d25abd9e91c2f87d5aa3dee08bcc19c" : void 0) ?? "unknown";
416
+ const commitShort = readInjected(true ? "6dbb06b0" : void 0) ?? (commit !== "unknown" ? commit.slice(0, 7) : "unknown");
417
+ const version = readInjected(true ? "0.9.82-rc.515" : void 0) ?? readInjected(typeof process !== "undefined" ? process.env?.ADHDEV_PKG_VERSION : void 0) ?? "unknown";
418
+ const builtAt = readInjected(true ? "2026-07-13T09:44:33.291Z" : void 0);
419
419
  cached = builtAt ? { commit, commitShort, version, builtAt } : { commit, commitShort, version };
420
420
  return cached;
421
421
  }
@@ -3530,6 +3530,9 @@ function updateNode(meshId, nodeId, opts) {
3530
3530
  if (opts.reportedDaemonBuildVersion && opts.reportedDaemonBuildVersion.trim()) {
3531
3531
  node.reportedDaemonBuildVersion = opts.reportedDaemonBuildVersion.trim();
3532
3532
  }
3533
+ if (opts.reportedMemberState) {
3534
+ node.reportedMemberState = opts.reportedMemberState;
3535
+ }
3533
3536
  if (opts.policy) node.policy = { ...node.policy, ...opts.policy };
3534
3537
  if (Object.prototype.hasOwnProperty.call(opts, "capabilities")) {
3535
3538
  const tags = normalizeCapabilityTags(opts.capabilities);
@@ -3666,6 +3669,8 @@ function normalizeProviderPriority(policy) {
3666
3669
  function resolveNodeCapabilitySlots(node) {
3667
3670
  const explicit = normalizeNodeCapabilitySlots(node?.policy?.slots);
3668
3671
  if (explicit.length) return explicit;
3672
+ const mirrored = normalizeNodeCapabilitySlots(node?.reportedMemberState?.slots);
3673
+ if (mirrored.length) return mirrored;
3669
3674
  let difficultyBrains;
3670
3675
  try {
3671
3676
  difficultyBrains = getDifficultyBrains();
@@ -3677,6 +3682,26 @@ function resolveNodeCapabilitySlots(node) {
3677
3682
  difficultyBrains
3678
3683
  });
3679
3684
  }
3685
+ function resolveLocalNodeSlotsForWorkspace(workspace) {
3686
+ const ws = typeof workspace === "string" ? workspace.trim() : "";
3687
+ if (!ws) return [];
3688
+ let meshes;
3689
+ try {
3690
+ meshes = listMeshes();
3691
+ } catch {
3692
+ return [];
3693
+ }
3694
+ for (const mesh of Array.isArray(meshes) ? meshes : []) {
3695
+ for (const node of Array.isArray(mesh?.nodes) ? mesh.nodes : []) {
3696
+ const nodeWs = typeof node?.workspace === "string" ? node.workspace : "";
3697
+ if (nodeWs && meshWorkspacesEquivalent(nodeWs, ws)) {
3698
+ const slots = resolveNodeCapabilitySlots({ policy: node?.policy });
3699
+ if (slots.length) return slots;
3700
+ }
3701
+ }
3702
+ }
3703
+ return [];
3704
+ }
3680
3705
  var init_mesh_node_slots = __esm({
3681
3706
  "src/mesh/mesh-node-slots.ts"() {
3682
3707
  "use strict";
@@ -14592,7 +14617,8 @@ function recordInlineMeshDirectGitTruth(node, git, source) {
14592
14617
  reporterArch: null,
14593
14618
  reporterMachineNickname: null,
14594
14619
  reporterProviderVersions: null,
14595
- reporterDaemonBuildVersion: null
14620
+ reporterDaemonBuildVersion: null,
14621
+ reportedMemberState: null
14596
14622
  };
14597
14623
  }
14598
14624
  const checkedAt = readNumberValue(git.lastCheckedAt) ?? Date.now();
@@ -14620,16 +14646,47 @@ function recordInlineMeshDirectGitTruth(node, git, source) {
14620
14646
  if (reporterArch) node.reportedArch = reporterArch;
14621
14647
  const reporterMachineNickname = readStringValue(git.reporterMachineNickname) ?? null;
14622
14648
  if (reporterMachineNickname) node.machineNickname = reporterMachineNickname;
14623
- const reporterProviderVersions = readProviderVersionsRecord(git.reporterProviderVersions) ?? (isLocalSource ? readLocalReporterProviderVersions() : null);
14649
+ const unified = normalizeReportedMemberState(git.reporterMemberState);
14650
+ const reporterProviderVersions = (unified?.providerVersions ? readProviderVersionsRecord(unified.providerVersions) : null) ?? readProviderVersionsRecord(git.reporterProviderVersions) ?? (isLocalSource ? readLocalReporterProviderVersions() : null);
14624
14651
  if (reporterProviderVersions) node.reportedProviderVersions = reporterProviderVersions;
14625
- const reporterDaemonBuildVersion = readStringValue(git.reporterDaemonBuildVersion) ?? (isLocalSource ? readLocalReporterDaemonBuildVersion() : null) ?? null;
14652
+ const reporterDaemonBuildVersion = readStringValue(unified?.daemonBuildVersion) ?? readStringValue(git.reporterDaemonBuildVersion) ?? (isLocalSource ? readLocalReporterDaemonBuildVersion() : null) ?? null;
14626
14653
  if (reporterDaemonBuildVersion) node.reportedDaemonBuildVersion = reporterDaemonBuildVersion;
14654
+ if (!isLocalSource) {
14655
+ const reportedSlots = normalizeNodeCapabilitySlots(unified?.slots);
14656
+ const mirrored = {
14657
+ ...reporterProviderVersions ? { providerVersions: reporterProviderVersions } : {},
14658
+ ...reporterDaemonBuildVersion ? { daemonBuildVersion: reporterDaemonBuildVersion } : {},
14659
+ ...reportedSlots.length ? { slots: reportedSlots } : {},
14660
+ lastReportedAt: readNumberValue(unified?.lastReportedAt) ?? checkedAt
14661
+ };
14662
+ if (mirrored.providerVersions || mirrored.daemonBuildVersion || mirrored.slots) {
14663
+ node.reportedMemberState = mirrored;
14664
+ }
14665
+ }
14627
14666
  return {
14628
14667
  reporterPlatform,
14629
14668
  reporterArch,
14630
14669
  reporterMachineNickname,
14631
14670
  reporterProviderVersions,
14632
- reporterDaemonBuildVersion
14671
+ reporterDaemonBuildVersion,
14672
+ reportedMemberState: !isLocalSource ? node.reportedMemberState ?? null : null
14673
+ };
14674
+ }
14675
+ function normalizeReportedMemberState(value) {
14676
+ if (!value || typeof value !== "object" || Array.isArray(value)) return null;
14677
+ const raw = value;
14678
+ const providerVersions = readProviderVersionsRecord(raw.providerVersions);
14679
+ const daemonBuildVersion = readStringValue(raw.daemonBuildVersion);
14680
+ const slots = normalizeNodeCapabilitySlots(raw.slots);
14681
+ const lastReportedAt = readNumberValue(raw.lastReportedAt);
14682
+ if (!providerVersions && !daemonBuildVersion && !slots.length && lastReportedAt === void 0) {
14683
+ return null;
14684
+ }
14685
+ return {
14686
+ ...providerVersions ? { providerVersions } : {},
14687
+ ...daemonBuildVersion ? { daemonBuildVersion } : {},
14688
+ ...slots.length ? { slots } : {},
14689
+ ...lastReportedAt !== void 0 ? { lastReportedAt } : {}
14633
14690
  };
14634
14691
  }
14635
14692
  function readProviderVersionsRecord(value) {
@@ -14682,7 +14739,8 @@ function persistNodeReporterPlatform(meshSource, mesh, nodeId, reporter) {
14682
14739
  const reportedMachineNickname = reporter.reporterMachineNickname ?? void 0;
14683
14740
  const reportedProviderVersions = reporter.reporterProviderVersions ?? void 0;
14684
14741
  const reportedDaemonBuildVersion = reporter.reporterDaemonBuildVersion ?? void 0;
14685
- if (!reportedPlatform && !reportedArch && !reportedMachineNickname && !reportedProviderVersions && !reportedDaemonBuildVersion) {
14742
+ const reportedMemberState = reporter.reportedMemberState ?? void 0;
14743
+ if (!reportedPlatform && !reportedArch && !reportedMachineNickname && !reportedProviderVersions && !reportedDaemonBuildVersion && !reportedMemberState) {
14686
14744
  return;
14687
14745
  }
14688
14746
  void Promise.resolve().then(() => (init_mesh_config(), mesh_config_exports)).then(({ updateNode: updateNode2 }) => updateNode2(meshId, nodeId, {
@@ -14690,7 +14748,8 @@ function persistNodeReporterPlatform(meshSource, mesh, nodeId, reporter) {
14690
14748
  reportedArch,
14691
14749
  reportedMachineNickname,
14692
14750
  reportedProviderVersions,
14693
- reportedDaemonBuildVersion
14751
+ reportedDaemonBuildVersion,
14752
+ reportedMemberState
14694
14753
  })).catch(() => {
14695
14754
  });
14696
14755
  }
@@ -15296,6 +15355,8 @@ async function probeRemoteMeshGitStatus(args) {
15296
15355
  if (reporterProviderVersions) git.reporterProviderVersions = reporterProviderVersions;
15297
15356
  const reporterDaemonBuildVersion = readStringValue(remoteResult?.reporterDaemonBuildVersion);
15298
15357
  if (reporterDaemonBuildVersion) git.reporterDaemonBuildVersion = reporterDaemonBuildVersion;
15358
+ const reporterMemberState = normalizeReportedMemberState(remoteResult?.reporterMemberState);
15359
+ if (reporterMemberState) git.reporterMemberState = reporterMemberState;
15299
15360
  return git;
15300
15361
  }
15301
15362
  function readMeshConnectionState(connection) {
@@ -29090,13 +29151,20 @@ async function handleGitCommand(command, args, services = defaultGitCommandServi
29090
29151
  })();
29091
29152
  const reporterVersions = (() => {
29092
29153
  try {
29093
- return services.getReporterProviderVersions?.() ?? {};
29154
+ return services.getReporterProviderVersions?.(workspace) ?? {};
29094
29155
  } catch {
29095
29156
  return {};
29096
29157
  }
29097
29158
  })();
29098
29159
  const reporterProviderVersions = reporterVersions.providerVersions && Object.keys(reporterVersions.providerVersions).length > 0 ? reporterVersions.providerVersions : void 0;
29099
29160
  const reporterDaemonBuildVersion = typeof reporterVersions.daemonBuildVersion === "string" && reporterVersions.daemonBuildVersion.trim() ? reporterVersions.daemonBuildVersion.trim() : void 0;
29161
+ const reporterSlots = Array.isArray(reporterVersions.slots) && reporterVersions.slots.length > 0 ? reporterVersions.slots : void 0;
29162
+ const reporterMemberState = reporterProviderVersions || reporterDaemonBuildVersion || reporterSlots ? {
29163
+ ...reporterProviderVersions ? { providerVersions: reporterProviderVersions } : {},
29164
+ ...reporterDaemonBuildVersion ? { daemonBuildVersion: reporterDaemonBuildVersion } : {},
29165
+ ...reporterSlots ? { slots: reporterSlots } : {},
29166
+ lastReportedAt: Date.now()
29167
+ } : void 0;
29100
29168
  return {
29101
29169
  success: true,
29102
29170
  status,
@@ -29104,7 +29172,8 @@ async function handleGitCommand(command, args, services = defaultGitCommandServi
29104
29172
  reporterArch: process.arch,
29105
29173
  ...reporterMachineNickname ? { reporterMachineNickname } : {},
29106
29174
  ...reporterProviderVersions ? { reporterProviderVersions } : {},
29107
- ...reporterDaemonBuildVersion ? { reporterDaemonBuildVersion } : {}
29175
+ ...reporterDaemonBuildVersion ? { reporterDaemonBuildVersion } : {},
29176
+ ...reporterMemberState ? { reporterMemberState } : {}
29108
29177
  };
29109
29178
  }
29110
29179
  case "git_diff_summary": {
@@ -70442,6 +70511,7 @@ var SessionRegistry = class {
70442
70511
  init_logger();
70443
70512
  init_runtime_defaults();
70444
70513
  init_config();
70514
+ init_mesh_node_slots();
70445
70515
  init_mesh_events();
70446
70516
  init_mesh_reconcile_loop();
70447
70517
  init_coordinator_registry();
@@ -70583,15 +70653,24 @@ async function initDaemonComponents(config) {
70583
70653
  instanceManager,
70584
70654
  sessionRegistry,
70585
70655
  gitCommandServices: createDefaultGitCommandServices({
70586
- // T7: fold this daemon's cached provider versions + build version onto the
70587
- // git_status envelope so the mesh coordinator self-heals each node's
70588
- // providerVersions. Non-blocking: reads a TTL cache, lazily refreshed.
70589
- getReporterProviderVersions: () => {
70656
+ // T7 + Direction-B: fold this daemon's cached provider versions + build
70657
+ // version AND its OWN resolved capability slots for the reported workspace
70658
+ // onto the git_status envelope so the mesh coordinator self-heals each
70659
+ // node's providerVersions AND its slot-cap chips (REMOTE-NODE-SLOT-CAP-CHIP
70660
+ // fix). Non-blocking: reads a TTL cache + local meshes.json, lazily
70661
+ // refreshed. The slots the reporter resolves are its LOCAL real policy's
70662
+ // slots — the coordinator mirrors them wholesale for a remote member whose
70663
+ // join-time policy copy is empty. (setDefaultProviderLoader is registered
70664
+ // above so getCachedProviderVersions/slot resolution is not empty — see
70665
+ // the 380556d3 version-chip lesson.)
70666
+ getReporterProviderVersions: (workspace) => {
70590
70667
  const providerVersions = getCachedProviderVersions(providerLoader);
70591
70668
  const daemonBuildVersion = getDaemonBuildInfo().version;
70669
+ const slots = resolveLocalNodeSlotsForWorkspace(workspace);
70592
70670
  return {
70593
70671
  ...Object.keys(providerVersions).length > 0 ? { providerVersions } : {},
70594
- ...daemonBuildVersion && daemonBuildVersion !== "unknown" ? { daemonBuildVersion } : {}
70672
+ ...daemonBuildVersion && daemonBuildVersion !== "unknown" ? { daemonBuildVersion } : {},
70673
+ ...slots.length > 0 ? { slots } : {}
70595
70674
  };
70596
70675
  }
70597
70676
  }),