@adhdev/daemon-core 0.9.82-rc.513 → 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/config/mesh-config.d.ts +6 -1
- package/dist/detection/cli-detector.d.ts +7 -0
- package/dist/git/git-commands.d.ts +15 -1
- package/dist/index.js +109 -19
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +109 -19
- package/dist/index.mjs.map +1 -1
- package/dist/mesh/mesh-node-identity.d.ts +3 -0
- package/dist/mesh/mesh-node-slots.d.ts +29 -2
- package/dist/repo-mesh-types.d.ts +51 -0
- package/package.json +3 -3
- package/src/boot/daemon-lifecycle.ts +21 -5
- package/src/commands/high-family/mesh-status.ts +12 -0
- package/src/config/mesh-config.ts +12 -0
- package/src/detection/cli-detector.ts +21 -1
- package/src/git/git-commands.ts +36 -3
- package/src/mesh/mesh-node-identity.ts +79 -4
- package/src/mesh/mesh-node-slots.ts +56 -3
- package/src/repo-mesh-types.ts +52 -0
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 ? "
|
|
416
|
-
const commitShort = readInjected(true ? "
|
|
417
|
-
const version = readInjected(true ? "0.9.82-rc.
|
|
418
|
-
const builtAt = readInjected(true ? "2026-07-
|
|
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";
|
|
@@ -14179,11 +14204,15 @@ function buildProviderVersions(detected) {
|
|
|
14179
14204
|
}
|
|
14180
14205
|
return out;
|
|
14181
14206
|
}
|
|
14207
|
+
function setDefaultProviderLoader(providerLoader) {
|
|
14208
|
+
defaultProviderLoader = providerLoader;
|
|
14209
|
+
}
|
|
14182
14210
|
function refreshProviderVersionsSnapshot(providerLoader) {
|
|
14183
14211
|
if (providerVersionsRefreshInFlight) return providerVersionsRefreshInFlight;
|
|
14212
|
+
const loader = providerLoader ?? defaultProviderLoader;
|
|
14184
14213
|
providerVersionsRefreshInFlight = (async () => {
|
|
14185
14214
|
try {
|
|
14186
|
-
const detected = await detectCLIs(
|
|
14215
|
+
const detected = await detectCLIs(loader, { includeVersion: true });
|
|
14187
14216
|
cachedProviderVersions = buildProviderVersions(detected);
|
|
14188
14217
|
cachedProviderVersionsAt = Date.now();
|
|
14189
14218
|
} catch {
|
|
@@ -14200,7 +14229,7 @@ function getCachedProviderVersions(providerLoader) {
|
|
|
14200
14229
|
}
|
|
14201
14230
|
return { ...cachedProviderVersions };
|
|
14202
14231
|
}
|
|
14203
|
-
var PROVIDER_VERSIONS_TTL_MS, cachedProviderVersions, cachedProviderVersionsAt, providerVersionsRefreshInFlight;
|
|
14232
|
+
var PROVIDER_VERSIONS_TTL_MS, cachedProviderVersions, cachedProviderVersionsAt, providerVersionsRefreshInFlight, defaultProviderLoader;
|
|
14204
14233
|
var init_cli_detector = __esm({
|
|
14205
14234
|
"src/detection/cli-detector.ts"() {
|
|
14206
14235
|
"use strict";
|
|
@@ -14588,7 +14617,8 @@ function recordInlineMeshDirectGitTruth(node, git, source) {
|
|
|
14588
14617
|
reporterArch: null,
|
|
14589
14618
|
reporterMachineNickname: null,
|
|
14590
14619
|
reporterProviderVersions: null,
|
|
14591
|
-
reporterDaemonBuildVersion: null
|
|
14620
|
+
reporterDaemonBuildVersion: null,
|
|
14621
|
+
reportedMemberState: null
|
|
14592
14622
|
};
|
|
14593
14623
|
}
|
|
14594
14624
|
const checkedAt = readNumberValue(git.lastCheckedAt) ?? Date.now();
|
|
@@ -14616,16 +14646,47 @@ function recordInlineMeshDirectGitTruth(node, git, source) {
|
|
|
14616
14646
|
if (reporterArch) node.reportedArch = reporterArch;
|
|
14617
14647
|
const reporterMachineNickname = readStringValue(git.reporterMachineNickname) ?? null;
|
|
14618
14648
|
if (reporterMachineNickname) node.machineNickname = reporterMachineNickname;
|
|
14619
|
-
const
|
|
14649
|
+
const unified = normalizeReportedMemberState(git.reporterMemberState);
|
|
14650
|
+
const reporterProviderVersions = (unified?.providerVersions ? readProviderVersionsRecord(unified.providerVersions) : null) ?? readProviderVersionsRecord(git.reporterProviderVersions) ?? (isLocalSource ? readLocalReporterProviderVersions() : null);
|
|
14620
14651
|
if (reporterProviderVersions) node.reportedProviderVersions = reporterProviderVersions;
|
|
14621
|
-
const reporterDaemonBuildVersion = readStringValue(git.reporterDaemonBuildVersion) ?? (isLocalSource ? readLocalReporterDaemonBuildVersion() : null) ?? null;
|
|
14652
|
+
const reporterDaemonBuildVersion = readStringValue(unified?.daemonBuildVersion) ?? readStringValue(git.reporterDaemonBuildVersion) ?? (isLocalSource ? readLocalReporterDaemonBuildVersion() : null) ?? null;
|
|
14622
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
|
+
}
|
|
14623
14666
|
return {
|
|
14624
14667
|
reporterPlatform,
|
|
14625
14668
|
reporterArch,
|
|
14626
14669
|
reporterMachineNickname,
|
|
14627
14670
|
reporterProviderVersions,
|
|
14628
|
-
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 } : {}
|
|
14629
14690
|
};
|
|
14630
14691
|
}
|
|
14631
14692
|
function readProviderVersionsRecord(value) {
|
|
@@ -14678,7 +14739,8 @@ function persistNodeReporterPlatform(meshSource, mesh, nodeId, reporter) {
|
|
|
14678
14739
|
const reportedMachineNickname = reporter.reporterMachineNickname ?? void 0;
|
|
14679
14740
|
const reportedProviderVersions = reporter.reporterProviderVersions ?? void 0;
|
|
14680
14741
|
const reportedDaemonBuildVersion = reporter.reporterDaemonBuildVersion ?? void 0;
|
|
14681
|
-
|
|
14742
|
+
const reportedMemberState = reporter.reportedMemberState ?? void 0;
|
|
14743
|
+
if (!reportedPlatform && !reportedArch && !reportedMachineNickname && !reportedProviderVersions && !reportedDaemonBuildVersion && !reportedMemberState) {
|
|
14682
14744
|
return;
|
|
14683
14745
|
}
|
|
14684
14746
|
void Promise.resolve().then(() => (init_mesh_config(), mesh_config_exports)).then(({ updateNode: updateNode2 }) => updateNode2(meshId, nodeId, {
|
|
@@ -14686,7 +14748,8 @@ function persistNodeReporterPlatform(meshSource, mesh, nodeId, reporter) {
|
|
|
14686
14748
|
reportedArch,
|
|
14687
14749
|
reportedMachineNickname,
|
|
14688
14750
|
reportedProviderVersions,
|
|
14689
|
-
reportedDaemonBuildVersion
|
|
14751
|
+
reportedDaemonBuildVersion,
|
|
14752
|
+
reportedMemberState
|
|
14690
14753
|
})).catch(() => {
|
|
14691
14754
|
});
|
|
14692
14755
|
}
|
|
@@ -15292,6 +15355,8 @@ async function probeRemoteMeshGitStatus(args) {
|
|
|
15292
15355
|
if (reporterProviderVersions) git.reporterProviderVersions = reporterProviderVersions;
|
|
15293
15356
|
const reporterDaemonBuildVersion = readStringValue(remoteResult?.reporterDaemonBuildVersion);
|
|
15294
15357
|
if (reporterDaemonBuildVersion) git.reporterDaemonBuildVersion = reporterDaemonBuildVersion;
|
|
15358
|
+
const reporterMemberState = normalizeReportedMemberState(remoteResult?.reporterMemberState);
|
|
15359
|
+
if (reporterMemberState) git.reporterMemberState = reporterMemberState;
|
|
15295
15360
|
return git;
|
|
15296
15361
|
}
|
|
15297
15362
|
function readMeshConnectionState(connection) {
|
|
@@ -29086,13 +29151,20 @@ async function handleGitCommand(command, args, services = defaultGitCommandServi
|
|
|
29086
29151
|
})();
|
|
29087
29152
|
const reporterVersions = (() => {
|
|
29088
29153
|
try {
|
|
29089
|
-
return services.getReporterProviderVersions?.() ?? {};
|
|
29154
|
+
return services.getReporterProviderVersions?.(workspace) ?? {};
|
|
29090
29155
|
} catch {
|
|
29091
29156
|
return {};
|
|
29092
29157
|
}
|
|
29093
29158
|
})();
|
|
29094
29159
|
const reporterProviderVersions = reporterVersions.providerVersions && Object.keys(reporterVersions.providerVersions).length > 0 ? reporterVersions.providerVersions : void 0;
|
|
29095
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;
|
|
29096
29168
|
return {
|
|
29097
29169
|
success: true,
|
|
29098
29170
|
status,
|
|
@@ -29100,7 +29172,8 @@ async function handleGitCommand(command, args, services = defaultGitCommandServi
|
|
|
29100
29172
|
reporterArch: process.arch,
|
|
29101
29173
|
...reporterMachineNickname ? { reporterMachineNickname } : {},
|
|
29102
29174
|
...reporterProviderVersions ? { reporterProviderVersions } : {},
|
|
29103
|
-
...reporterDaemonBuildVersion ? { reporterDaemonBuildVersion } : {}
|
|
29175
|
+
...reporterDaemonBuildVersion ? { reporterDaemonBuildVersion } : {},
|
|
29176
|
+
...reporterMemberState ? { reporterMemberState } : {}
|
|
29104
29177
|
};
|
|
29105
29178
|
}
|
|
29106
29179
|
case "git_diff_summary": {
|
|
@@ -58259,6 +58332,12 @@ var meshStatusHandlers = {
|
|
|
58259
58332
|
}
|
|
58260
58333
|
applyInlineMeshBranchConvergence(mesh, node, status);
|
|
58261
58334
|
finalizeMeshNodeStatus({ status, node, daemonId, isSelfNode, directTruthUnavailable: directTruthUnavailableNodeIds.has(nodeId) });
|
|
58335
|
+
if (node.reportedProviderVersions && typeof node.reportedProviderVersions === "object") {
|
|
58336
|
+
status.providerVersions = node.reportedProviderVersions;
|
|
58337
|
+
}
|
|
58338
|
+
if (typeof node.reportedDaemonBuildVersion === "string" && node.reportedDaemonBuildVersion) {
|
|
58339
|
+
status.daemonBuildVersion = node.reportedDaemonBuildVersion;
|
|
58340
|
+
}
|
|
58262
58341
|
return status;
|
|
58263
58342
|
};
|
|
58264
58343
|
const meshNodeEntries = [...(mesh.nodes || []).entries()];
|
|
@@ -70432,6 +70511,7 @@ var SessionRegistry = class {
|
|
|
70432
70511
|
init_logger();
|
|
70433
70512
|
init_runtime_defaults();
|
|
70434
70513
|
init_config();
|
|
70514
|
+
init_mesh_node_slots();
|
|
70435
70515
|
init_mesh_events();
|
|
70436
70516
|
init_mesh_reconcile_loop();
|
|
70437
70517
|
init_coordinator_registry();
|
|
@@ -70481,6 +70561,7 @@ async function initDaemonComponents(config) {
|
|
|
70481
70561
|
});
|
|
70482
70562
|
providerLoader.loadAll();
|
|
70483
70563
|
providerLoader.registerToDetector();
|
|
70564
|
+
setDefaultProviderLoader(providerLoader);
|
|
70484
70565
|
const versionArchive = new VersionArchive();
|
|
70485
70566
|
providerLoader.setVersionArchive(versionArchive);
|
|
70486
70567
|
setTimeout(() => {
|
|
@@ -70572,15 +70653,24 @@ async function initDaemonComponents(config) {
|
|
|
70572
70653
|
instanceManager,
|
|
70573
70654
|
sessionRegistry,
|
|
70574
70655
|
gitCommandServices: createDefaultGitCommandServices({
|
|
70575
|
-
// T7: fold this daemon's cached provider versions + build
|
|
70576
|
-
//
|
|
70577
|
-
//
|
|
70578
|
-
|
|
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) => {
|
|
70579
70667
|
const providerVersions = getCachedProviderVersions(providerLoader);
|
|
70580
70668
|
const daemonBuildVersion = getDaemonBuildInfo().version;
|
|
70669
|
+
const slots = resolveLocalNodeSlotsForWorkspace(workspace);
|
|
70581
70670
|
return {
|
|
70582
70671
|
...Object.keys(providerVersions).length > 0 ? { providerVersions } : {},
|
|
70583
|
-
...daemonBuildVersion && daemonBuildVersion !== "unknown" ? { daemonBuildVersion } : {}
|
|
70672
|
+
...daemonBuildVersion && daemonBuildVersion !== "unknown" ? { daemonBuildVersion } : {},
|
|
70673
|
+
...slots.length > 0 ? { slots } : {}
|
|
70584
70674
|
};
|
|
70585
70675
|
}
|
|
70586
70676
|
}),
|