adhdev 0.9.82-rc.503 → 0.9.82-rc.504

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.
@@ -1301,10 +1301,10 @@ function readInjected(value) {
1301
1301
  }
1302
1302
  function getDaemonBuildInfo() {
1303
1303
  if (cached) return cached;
1304
- const commit = readInjected(true ? "85f5074b891b617a0568a36eb56691b8ce1633da" : void 0) ?? "unknown";
1305
- const commitShort = readInjected(true ? "85f5074b" : void 0) ?? (commit !== "unknown" ? commit.slice(0, 7) : "unknown");
1306
- const version2 = readInjected(true ? "0.9.82-rc.503" : void 0) ?? readInjected(typeof process !== "undefined" ? "0.9.82-rc.503" : void 0) ?? "unknown";
1307
- const builtAt = readInjected(true ? "2026-07-12T10:01:41.121Z" : void 0);
1304
+ const commit = readInjected(true ? "19364663ff03f2285de336864a84ede592970f39" : void 0) ?? "unknown";
1305
+ const commitShort = readInjected(true ? "19364663" : void 0) ?? (commit !== "unknown" ? commit.slice(0, 7) : "unknown");
1306
+ const version2 = readInjected(true ? "0.9.82-rc.504" : void 0) ?? readInjected(typeof process !== "undefined" ? "0.9.82-rc.504" : void 0) ?? "unknown";
1307
+ const builtAt = readInjected(true ? "2026-07-12T11:06:34.674Z" : void 0);
1308
1308
  cached = builtAt ? { commit, commitShort, version: version2, builtAt } : { commit, commitShort, version: version2 };
1309
1309
  return cached;
1310
1310
  }
@@ -143520,7 +143520,7 @@ var init_adhdev_daemon = __esm({
143520
143520
  init_daemon_pid();
143521
143521
  init_src();
143522
143522
  init_runtime_defaults();
143523
- pkgVersion = resolvePackageVersion({ injectedVersion: "0.9.82-rc.503" });
143523
+ pkgVersion = resolvePackageVersion({ injectedVersion: "0.9.82-rc.504" });
143524
143524
  AdhdevDaemon = class _AdhdevDaemon {
143525
143525
  localHttpServer = null;
143526
143526
  localWss = null;
package/dist/cli/index.js CHANGED
@@ -1301,10 +1301,10 @@ function readInjected(value) {
1301
1301
  }
1302
1302
  function getDaemonBuildInfo() {
1303
1303
  if (cached) return cached;
1304
- const commit = readInjected(true ? "85f5074b891b617a0568a36eb56691b8ce1633da" : void 0) ?? "unknown";
1305
- const commitShort = readInjected(true ? "85f5074b" : void 0) ?? (commit !== "unknown" ? commit.slice(0, 7) : "unknown");
1306
- const version2 = readInjected(true ? "0.9.82-rc.503" : void 0) ?? readInjected(typeof process !== "undefined" ? "0.9.82-rc.503" : void 0) ?? "unknown";
1307
- const builtAt = readInjected(true ? "2026-07-12T10:01:41.121Z" : void 0);
1304
+ const commit = readInjected(true ? "19364663ff03f2285de336864a84ede592970f39" : void 0) ?? "unknown";
1305
+ const commitShort = readInjected(true ? "19364663" : void 0) ?? (commit !== "unknown" ? commit.slice(0, 7) : "unknown");
1306
+ const version2 = readInjected(true ? "0.9.82-rc.504" : void 0) ?? readInjected(typeof process !== "undefined" ? "0.9.82-rc.504" : void 0) ?? "unknown";
1307
+ const builtAt = readInjected(true ? "2026-07-12T11:06:34.674Z" : void 0);
1308
1308
  cached = builtAt ? { commit, commitShort, version: version2, builtAt } : { commit, commitShort, version: version2 };
1309
1309
  return cached;
1310
1310
  }
@@ -143490,7 +143490,7 @@ var init_adhdev_daemon = __esm({
143490
143490
  init_daemon_pid();
143491
143491
  init_src();
143492
143492
  init_runtime_defaults();
143493
- pkgVersion = resolvePackageVersion({ injectedVersion: "0.9.82-rc.503" });
143493
+ pkgVersion = resolvePackageVersion({ injectedVersion: "0.9.82-rc.504" });
143494
143494
  AdhdevDaemon = class _AdhdevDaemon {
143495
143495
  localHttpServer = null;
143496
143496
  localWss = null;
package/dist/index.js CHANGED
@@ -781,10 +781,10 @@ function readInjected(value) {
781
781
  }
782
782
  function getDaemonBuildInfo() {
783
783
  if (cached) return cached;
784
- const commit = readInjected(true ? "85f5074b891b617a0568a36eb56691b8ce1633da" : void 0) ?? "unknown";
785
- const commitShort = readInjected(true ? "85f5074b" : void 0) ?? (commit !== "unknown" ? commit.slice(0, 7) : "unknown");
786
- const version2 = readInjected(true ? "0.9.82-rc.503" : void 0) ?? readInjected(typeof process !== "undefined" ? "0.9.82-rc.503" : void 0) ?? "unknown";
787
- const builtAt = readInjected(true ? "2026-07-12T10:01:41.121Z" : void 0);
784
+ const commit = readInjected(true ? "19364663ff03f2285de336864a84ede592970f39" : void 0) ?? "unknown";
785
+ const commitShort = readInjected(true ? "19364663" : void 0) ?? (commit !== "unknown" ? commit.slice(0, 7) : "unknown");
786
+ const version2 = readInjected(true ? "0.9.82-rc.504" : void 0) ?? readInjected(typeof process !== "undefined" ? "0.9.82-rc.504" : void 0) ?? "unknown";
787
+ const builtAt = readInjected(true ? "2026-07-12T11:06:34.674Z" : void 0);
788
788
  cached = builtAt ? { commit, commitShort, version: version2, builtAt } : { commit, commitShort, version: version2 };
789
789
  return cached;
790
790
  }
@@ -112354,7 +112354,7 @@ var init_adhdev_daemon = __esm({
112354
112354
  init_daemon_pid();
112355
112355
  init_src();
112356
112356
  init_runtime_defaults();
112357
- pkgVersion = resolvePackageVersion({ injectedVersion: "0.9.82-rc.503" });
112357
+ pkgVersion = resolvePackageVersion({ injectedVersion: "0.9.82-rc.504" });
112358
112358
  AdhdevDaemon = class _AdhdevDaemon {
112359
112359
  localHttpServer = null;
112360
112360
  localWss = null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adhdev",
3
- "version": "0.9.82-rc.503",
3
+ "version": "0.9.82-rc.504",
4
4
  "description": "ADHDev — Agent Dashboard Hub for Dev. The control hub for your AI coding agents (Claude Code, Codex, Hermes, …).",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -49,9 +49,9 @@
49
49
  "node": ">=18"
50
50
  },
51
51
  "dependencies": {
52
- "@adhdev/daemon-core": "0.9.82-rc.503",
52
+ "@adhdev/daemon-core": "0.9.82-rc.504",
53
53
  "@adhdev/ghostty-vt-node": "*",
54
- "@adhdev/mesh-shared": "0.9.82-rc.503",
54
+ "@adhdev/mesh-shared": "0.9.82-rc.504",
55
55
  "@modelcontextprotocol/sdk": "^1.0.0",
56
56
  "@xterm/addon-serialize": "^0.14.0",
57
57
  "@xterm/xterm": "^6.0.0",
@@ -4891,6 +4891,23 @@ function nodeHeadCommit(node) {
4891
4891
  const h = node?.git?.headCommit;
4892
4892
  return typeof h === "string" && h.trim() ? h.trim() : void 0;
4893
4893
  }
4894
+ function nodeSubmoduleKey(node) {
4895
+ const subs = node?.git?.submodules;
4896
+ if (!Array.isArray(subs) || subs.length === 0) return void 0;
4897
+ const parts = subs.map((s) => {
4898
+ const path = typeof s?.path === "string" ? s.path.trim() : "";
4899
+ const commit = typeof s?.commit === "string" ? s.commit.trim() : "";
4900
+ return path && commit ? `${path}@${commit}` : void 0;
4901
+ }).filter((p) => !!p).sort((a, b) => a.localeCompare(b));
4902
+ return parts.length > 0 ? parts.join(",") : void 0;
4903
+ }
4904
+ function candidateMatchesReferenceBase(candidateHead, candidateSubKey, referenceCommit, referenceSubKey) {
4905
+ if (candidateHead !== referenceCommit) return false;
4906
+ if (referenceSubKey !== void 0 && candidateSubKey !== void 0) {
4907
+ return candidateSubKey === referenceSubKey;
4908
+ }
4909
+ return true;
4910
+ }
4894
4911
  function nodeGitDrift(node) {
4895
4912
  const git = node?.git;
4896
4913
  const behind = git && typeof git.behind === "number" && Number.isFinite(git.behind) ? Math.max(0, git.behind) : 0;
@@ -4906,6 +4923,7 @@ function buildMagiFanoutPlan(slots, nodes, opts = {}) {
4906
4923
  const slotList = Array.isArray(slots) ? slots : [];
4907
4924
  const defaultN = opts.defaultN;
4908
4925
  const referenceCommit = typeof opts.referenceCommit === "string" && opts.referenceCommit.trim() ? opts.referenceCommit.trim() : void 0;
4926
+ const referenceSubmoduleKey = typeof opts.referenceSubmoduleKey === "string" && opts.referenceSubmoduleKey.trim() ? opts.referenceSubmoduleKey.trim() : void 0;
4909
4927
  const includeStale = opts.includeStale === true;
4910
4928
  const replicas = [];
4911
4929
  const unavailableSlots = [];
@@ -4948,7 +4966,8 @@ function buildMagiFanoutPlan(slots, nodes, opts = {}) {
4948
4966
  if (referenceCommit) {
4949
4967
  const freshCandidate = candidateNodes.find((n) => {
4950
4968
  const h = nodeHeadCommit(n);
4951
- return !h || h === referenceCommit;
4969
+ if (!h) return true;
4970
+ return candidateMatchesReferenceBase(h, nodeSubmoduleKey(n), referenceCommit, referenceSubmoduleKey);
4952
4971
  });
4953
4972
  if (freshCandidate) {
4954
4973
  headCommit = nodeHeadCommit(freshCandidate);
@@ -4983,7 +5002,11 @@ function buildMagiFanoutPlan(slots, nodes, opts = {}) {
4983
5002
  };
4984
5003
  if (gitStale && !includeStale) {
4985
5004
  resolution.excluded = true;
4986
- resolution.reason = referenceCommit ? `git-stale: node HEAD ${headCommit ?? "(unknown)"} differs from reference ${referenceCommit}` : `git-stale: node reports drift from its upstream (behind/ahead) and no coordinator reference commit is known`;
5005
+ if (referenceCommit) {
5006
+ resolution.reason = headCommit && headCommit === referenceCommit ? `git-stale: node HEAD ${headCommit} matches reference but submodule gitlink(s) differ from reference base` : `git-stale: node HEAD ${headCommit ?? "(unknown)"} differs from reference ${referenceCommit}`;
5007
+ } else {
5008
+ resolution.reason = `git-stale: node reports drift from its upstream (behind/ahead) and no coordinator reference commit is known`;
5009
+ }
4987
5010
  slotResolutions.push(resolution);
4988
5011
  return;
4989
5012
  }
@@ -5024,6 +5047,10 @@ function resolveMagiReferenceCommit(ctx) {
5024
5047
  const node = resolveCoordinatorNode(ctx);
5025
5048
  return nodeHeadCommit(node);
5026
5049
  }
5050
+ function resolveMagiReferenceSubmoduleKey(ctx) {
5051
+ const node = resolveCoordinatorNode(ctx);
5052
+ return nodeSubmoduleKey(node);
5053
+ }
5027
5054
  var MAGI_CLAIM_AUDIT_CONTRACT = `When done, respond with ONLY a single JSON object (no prose, no code fence) matching this exact schema:
5028
5055
  {
5029
5056
  "claims": [ { "claim": "string", "stance": "support | oppose | uncertain", "evidence": ["file:line or external source"], "confidence": 0.0 } ],
@@ -5230,6 +5257,7 @@ async function meshMagiReview(ctx, args) {
5230
5257
  const judgeWarning = useJudge ? "use_judge=true requested, but judge synthesis is not yet implemented \u2014 falling back to clustering synthesis." : null;
5231
5258
  await refreshMeshFromDaemon(ctx);
5232
5259
  const referenceCommit = resolveMagiReferenceCommit(ctx);
5260
+ const referenceSubmoduleKey = resolveMagiReferenceSubmoduleKey(ctx);
5233
5261
  const taskKind = normalizeMagiTaskKind(explicitTaskKind);
5234
5262
  const panelName = `(kind:${taskKind})`;
5235
5263
  const slots = (0, import_daemon_core4.getMagiKindPanel)(taskKind);
@@ -5256,7 +5284,7 @@ async function meshMagiReview(ctx, args) {
5256
5284
  }, null, 2);
5257
5285
  }
5258
5286
  const includeStale = (args.include_stale ?? args.includeStale) === true;
5259
- const plan = buildMagiFanoutPlan(planSlots, ctx.mesh.nodes, { n: args.n, referenceCommit, includeStale });
5287
+ const plan = buildMagiFanoutPlan(planSlots, ctx.mesh.nodes, { n: args.n, referenceCommit, referenceSubmoduleKey, includeStale });
5260
5288
  if (!plan.enoughTargets) {
5261
5289
  const droppedByStale = plan.staleSlots.length > 0;
5262
5290
  return JSON.stringify({