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

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.
@@ -5,7 +5,7 @@
5
5
  * Cloud mode syncs these to D1 via server routes; standalone mode
6
6
  * uses this file as the single source of truth.
7
7
  */
8
- import type { LocalMeshEntry, LocalMeshNodeEntry, RepoMeshPolicy, RepoMeshNodePolicy, RepoMeshNodeCapabilities, RepoMeshCoordinatorConfig, RepoMeshHostMetadata, RepoMeshDaemonRole } from '../repo-mesh-types.js';
8
+ import type { LocalMeshEntry, LocalMeshNodeEntry, RepoMeshPolicy, RepoMeshNodePolicy, RepoMeshNodeCapabilities, RepoMeshCoordinatorConfig, RepoMeshHostMetadata, RepoMeshDaemonRole, MeshReportedMemberState } from '../repo-mesh-types.js';
9
9
  import type { MagiKindPanelMap, MagiSlot, DifficultyBrainMap } from '@adhdev/mesh-shared';
10
10
  /**
11
11
  * Migrate a node policy's legacy `providerRoles` cap onto `slots[].maxParallel`,
@@ -159,6 +159,13 @@ export declare function updateNode(meshId: string, nodeId: string, opts: {
159
159
  * is overwritten by the next report. */
160
160
  reportedProviderVersions?: Record<string, string>;
161
161
  reportedDaemonBuildVersion?: string;
162
+ /** Unified mirrored member state (per-machine runtime facts: provider versions
163
+ * + daemon build + lastReportedAt) self-reported by the owning daemon on the
164
+ * git_status envelope. Persisted wholesale so a remote node's version chips
165
+ * survive a coordinator restart, mirroring the per-field reported* self-heal.
166
+ * Slots are NOT carried — they are coordinator-owned config
167
+ * (REMOTE-NODE-SLOTS-COORDINATOR-LOCAL fix). */
168
+ reportedMemberState?: MeshReportedMemberState;
162
169
  }): LocalMeshNodeEntry | undefined;
163
170
  /**
164
171
  * Validate + normalize a kind-panel's slots (the SOLE MAGI slot normalizer): provider
@@ -119,7 +119,7 @@ export interface GitCommandServices {
119
119
  * same way it does platform/arch. Wired at daemon boot from the cached CLI
120
120
  * detection snapshot; omitted (⇒ versions not reported) when unavailable.
121
121
  */
122
- getReporterProviderVersions?: () => {
122
+ getReporterProviderVersions?: (workspace?: string) => {
123
123
  providerVersions?: Record<string, string>;
124
124
  daemonBuildVersion?: string;
125
125
  };
@@ -137,6 +137,11 @@ type GitCommandSuccess = {
137
137
  reporterMachineNickname?: string;
138
138
  reporterProviderVersions?: Record<string, string>;
139
139
  reporterDaemonBuildVersion?: string;
140
+ reporterMemberState?: {
141
+ providerVersions?: Record<string, string>;
142
+ daemonBuildVersion?: string;
143
+ lastReportedAt?: number;
144
+ };
140
145
  } | {
141
146
  success: true;
142
147
  diffSummary: GitDiffSummary;
package/dist/index.js CHANGED
@@ -417,10 +417,10 @@ function readInjected(value) {
417
417
  }
418
418
  function getDaemonBuildInfo() {
419
419
  if (cached) return cached;
420
- const commit = readInjected(true ? "380556d36ec79e6fb92d2323b43226d45f8239a6" : void 0) ?? "unknown";
421
- const commitShort = readInjected(true ? "380556d3" : void 0) ?? (commit !== "unknown" ? commit.slice(0, 7) : "unknown");
422
- const version = readInjected(true ? "0.9.82-rc.514" : void 0) ?? readInjected(typeof process !== "undefined" ? process.env?.ADHDEV_PKG_VERSION : void 0) ?? "unknown";
423
- const builtAt = readInjected(true ? "2026-07-13T06:16:17.656Z" : void 0);
420
+ const commit = readInjected(true ? "44f968ef212752dc22351f84bb98ffd6c4b04718" : void 0) ?? "unknown";
421
+ const commitShort = readInjected(true ? "44f968ef" : void 0) ?? (commit !== "unknown" ? commit.slice(0, 7) : "unknown");
422
+ const version = readInjected(true ? "0.9.82-rc.516" : void 0) ?? readInjected(typeof process !== "undefined" ? process.env?.ADHDEV_PKG_VERSION : void 0) ?? "unknown";
423
+ const builtAt = readInjected(true ? "2026-07-13T10:57:56.058Z" : void 0);
424
424
  cached = builtAt ? { commit, commitShort, version, builtAt } : { commit, commitShort, version };
425
425
  return cached;
426
426
  }
@@ -3533,6 +3533,9 @@ function updateNode(meshId, nodeId, opts) {
3533
3533
  if (opts.reportedDaemonBuildVersion && opts.reportedDaemonBuildVersion.trim()) {
3534
3534
  node.reportedDaemonBuildVersion = opts.reportedDaemonBuildVersion.trim();
3535
3535
  }
3536
+ if (opts.reportedMemberState) {
3537
+ node.reportedMemberState = opts.reportedMemberState;
3538
+ }
3536
3539
  if (opts.policy) node.policy = { ...node.policy, ...opts.policy };
3537
3540
  if (Object.prototype.hasOwnProperty.call(opts, "capabilities")) {
3538
3541
  const tags = normalizeCapabilityTags(opts.capabilities);
@@ -14589,7 +14592,8 @@ function recordInlineMeshDirectGitTruth(node, git, source) {
14589
14592
  reporterArch: null,
14590
14593
  reporterMachineNickname: null,
14591
14594
  reporterProviderVersions: null,
14592
- reporterDaemonBuildVersion: null
14595
+ reporterDaemonBuildVersion: null,
14596
+ reportedMemberState: null
14593
14597
  };
14594
14598
  }
14595
14599
  const checkedAt = readNumberValue(git.lastCheckedAt) ?? Date.now();
@@ -14617,16 +14621,43 @@ function recordInlineMeshDirectGitTruth(node, git, source) {
14617
14621
  if (reporterArch) node.reportedArch = reporterArch;
14618
14622
  const reporterMachineNickname = readStringValue(git.reporterMachineNickname) ?? null;
14619
14623
  if (reporterMachineNickname) node.machineNickname = reporterMachineNickname;
14620
- const reporterProviderVersions = readProviderVersionsRecord(git.reporterProviderVersions) ?? (isLocalSource ? readLocalReporterProviderVersions() : null);
14624
+ const unified = normalizeReportedMemberState(git.reporterMemberState);
14625
+ const reporterProviderVersions = (unified?.providerVersions ? readProviderVersionsRecord(unified.providerVersions) : null) ?? readProviderVersionsRecord(git.reporterProviderVersions) ?? (isLocalSource ? readLocalReporterProviderVersions() : null);
14621
14626
  if (reporterProviderVersions) node.reportedProviderVersions = reporterProviderVersions;
14622
- const reporterDaemonBuildVersion = readStringValue(git.reporterDaemonBuildVersion) ?? (isLocalSource ? readLocalReporterDaemonBuildVersion() : null) ?? null;
14627
+ const reporterDaemonBuildVersion = readStringValue(unified?.daemonBuildVersion) ?? readStringValue(git.reporterDaemonBuildVersion) ?? (isLocalSource ? readLocalReporterDaemonBuildVersion() : null) ?? null;
14623
14628
  if (reporterDaemonBuildVersion) node.reportedDaemonBuildVersion = reporterDaemonBuildVersion;
14629
+ if (!isLocalSource) {
14630
+ const mirrored = {
14631
+ ...reporterProviderVersions ? { providerVersions: reporterProviderVersions } : {},
14632
+ ...reporterDaemonBuildVersion ? { daemonBuildVersion: reporterDaemonBuildVersion } : {},
14633
+ lastReportedAt: readNumberValue(unified?.lastReportedAt) ?? checkedAt
14634
+ };
14635
+ if (mirrored.providerVersions || mirrored.daemonBuildVersion) {
14636
+ node.reportedMemberState = mirrored;
14637
+ }
14638
+ }
14624
14639
  return {
14625
14640
  reporterPlatform,
14626
14641
  reporterArch,
14627
14642
  reporterMachineNickname,
14628
14643
  reporterProviderVersions,
14629
- reporterDaemonBuildVersion
14644
+ reporterDaemonBuildVersion,
14645
+ reportedMemberState: !isLocalSource ? node.reportedMemberState ?? null : null
14646
+ };
14647
+ }
14648
+ function normalizeReportedMemberState(value) {
14649
+ if (!value || typeof value !== "object" || Array.isArray(value)) return null;
14650
+ const raw = value;
14651
+ const providerVersions = readProviderVersionsRecord(raw.providerVersions);
14652
+ const daemonBuildVersion = readStringValue(raw.daemonBuildVersion);
14653
+ const lastReportedAt = readNumberValue(raw.lastReportedAt);
14654
+ if (!providerVersions && !daemonBuildVersion && lastReportedAt === void 0) {
14655
+ return null;
14656
+ }
14657
+ return {
14658
+ ...providerVersions ? { providerVersions } : {},
14659
+ ...daemonBuildVersion ? { daemonBuildVersion } : {},
14660
+ ...lastReportedAt !== void 0 ? { lastReportedAt } : {}
14630
14661
  };
14631
14662
  }
14632
14663
  function readProviderVersionsRecord(value) {
@@ -14679,7 +14710,8 @@ function persistNodeReporterPlatform(meshSource, mesh, nodeId, reporter) {
14679
14710
  const reportedMachineNickname = reporter.reporterMachineNickname ?? void 0;
14680
14711
  const reportedProviderVersions = reporter.reporterProviderVersions ?? void 0;
14681
14712
  const reportedDaemonBuildVersion = reporter.reporterDaemonBuildVersion ?? void 0;
14682
- if (!reportedPlatform && !reportedArch && !reportedMachineNickname && !reportedProviderVersions && !reportedDaemonBuildVersion) {
14713
+ const reportedMemberState = reporter.reportedMemberState ?? void 0;
14714
+ if (!reportedPlatform && !reportedArch && !reportedMachineNickname && !reportedProviderVersions && !reportedDaemonBuildVersion && !reportedMemberState) {
14683
14715
  return;
14684
14716
  }
14685
14717
  void Promise.resolve().then(() => (init_mesh_config(), mesh_config_exports)).then(({ updateNode: updateNode2 }) => updateNode2(meshId, nodeId, {
@@ -14687,7 +14719,8 @@ function persistNodeReporterPlatform(meshSource, mesh, nodeId, reporter) {
14687
14719
  reportedArch,
14688
14720
  reportedMachineNickname,
14689
14721
  reportedProviderVersions,
14690
- reportedDaemonBuildVersion
14722
+ reportedDaemonBuildVersion,
14723
+ reportedMemberState
14691
14724
  })).catch(() => {
14692
14725
  });
14693
14726
  }
@@ -15293,6 +15326,8 @@ async function probeRemoteMeshGitStatus(args) {
15293
15326
  if (reporterProviderVersions) git.reporterProviderVersions = reporterProviderVersions;
15294
15327
  const reporterDaemonBuildVersion = readStringValue(remoteResult?.reporterDaemonBuildVersion);
15295
15328
  if (reporterDaemonBuildVersion) git.reporterDaemonBuildVersion = reporterDaemonBuildVersion;
15329
+ const reporterMemberState = normalizeReportedMemberState(remoteResult?.reporterMemberState);
15330
+ if (reporterMemberState) git.reporterMemberState = reporterMemberState;
15296
15331
  return git;
15297
15332
  }
15298
15333
  function readMeshConnectionState(connection) {
@@ -29515,13 +29550,18 @@ async function handleGitCommand(command, args, services = defaultGitCommandServi
29515
29550
  })();
29516
29551
  const reporterVersions = (() => {
29517
29552
  try {
29518
- return services.getReporterProviderVersions?.() ?? {};
29553
+ return services.getReporterProviderVersions?.(workspace) ?? {};
29519
29554
  } catch {
29520
29555
  return {};
29521
29556
  }
29522
29557
  })();
29523
29558
  const reporterProviderVersions = reporterVersions.providerVersions && Object.keys(reporterVersions.providerVersions).length > 0 ? reporterVersions.providerVersions : void 0;
29524
29559
  const reporterDaemonBuildVersion = typeof reporterVersions.daemonBuildVersion === "string" && reporterVersions.daemonBuildVersion.trim() ? reporterVersions.daemonBuildVersion.trim() : void 0;
29560
+ const reporterMemberState = reporterProviderVersions || reporterDaemonBuildVersion ? {
29561
+ ...reporterProviderVersions ? { providerVersions: reporterProviderVersions } : {},
29562
+ ...reporterDaemonBuildVersion ? { daemonBuildVersion: reporterDaemonBuildVersion } : {},
29563
+ lastReportedAt: Date.now()
29564
+ } : void 0;
29525
29565
  return {
29526
29566
  success: true,
29527
29567
  status,
@@ -29529,7 +29569,8 @@ async function handleGitCommand(command, args, services = defaultGitCommandServi
29529
29569
  reporterArch: process.arch,
29530
29570
  ...reporterMachineNickname ? { reporterMachineNickname } : {},
29531
29571
  ...reporterProviderVersions ? { reporterProviderVersions } : {},
29532
- ...reporterDaemonBuildVersion ? { reporterDaemonBuildVersion } : {}
29572
+ ...reporterDaemonBuildVersion ? { reporterDaemonBuildVersion } : {},
29573
+ ...reporterMemberState ? { reporterMemberState } : {}
29533
29574
  };
29534
29575
  }
29535
29576
  case "git_diff_summary": {
@@ -70995,7 +71036,18 @@ async function initDaemonComponents(config) {
70995
71036
  gitCommandServices: createDefaultGitCommandServices({
70996
71037
  // T7: fold this daemon's cached provider versions + build version onto the
70997
71038
  // git_status envelope so the mesh coordinator self-heals each node's
70998
- // providerVersions. Non-blocking: reads a TTL cache, lazily refreshed.
71039
+ // providerVersions/build (the blue version chips) these are per-machine
71040
+ // RUNTIME facts (e.g. this node has claude-cli@2.1.168 while the
71041
+ // coordinator has @2.1.170), so they stay reported. Non-blocking: reads a
71042
+ // TTL cache, lazily refreshed. (setDefaultProviderLoader is registered
71043
+ // above so getCachedProviderVersions is not empty — see the 380556d3
71044
+ // version-chip lesson.)
71045
+ //
71046
+ // Slots are NOT reported: they are coordinator-owned config
71047
+ // (node.policy.slots for every node, resolved via
71048
+ // resolveNodeCapabilitySlots), not a per-machine runtime fact — the
71049
+ // reporter round-trip for slots was removed (REMOTE-NODE-SLOTS-
71050
+ // COORDINATOR-LOCAL fix).
70999
71051
  getReporterProviderVersions: () => {
71000
71052
  const providerVersions = getCachedProviderVersions(providerLoader);
71001
71053
  const daemonBuildVersion = getDaemonBuildInfo().version;