@adhdev/daemon-core 0.9.82-rc.541 → 0.9.82-rc.543

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.
@@ -14,7 +14,7 @@ import { DaemonCliManager } from './cli-manager.js';
14
14
  import type { ProviderLoader } from '../providers/provider-loader.js';
15
15
  import type { ProviderInstanceManager } from '../providers/provider-instance-manager.js';
16
16
  import { SessionRegistry } from '../sessions/registry.js';
17
- import type { RepoMeshSessionCleanupMode } from '../repo-mesh-types.js';
17
+ import type { RepoMeshSessionCleanupMode, RepoMeshSpawnedSessionVisibility } from '../repo-mesh-types.js';
18
18
  import { MeshRefineBatchJobHandle, MeshRefineBatchTerminalJob, MeshRefineJobHandle, MeshRefineTerminalJob } from '../mesh/mesh-refine-gates.js';
19
19
  export * from '../mesh/mesh-node-identity.js';
20
20
  export * from '../mesh/mesh-refine-gates.js';
@@ -151,6 +151,20 @@ export declare class DaemonCommandRouter {
151
151
  private getCachedAggregateMeshStatus;
152
152
  private rememberAggregateMeshStatus;
153
153
  getCachedInlineMeshNodes(): any[];
154
+ /**
155
+ * Same flattened node list as getCachedInlineMeshNodes(), but each node is
156
+ * paired with the `spawnedSessionVisibility` from its OWNING mesh's policy.
157
+ * The flat node list loses the mesh→node association, yet the cloud daemon's
158
+ * synthetic mesh-session mirror needs the mesh-level visibility policy to
159
+ * decide whether a coordinator-spawned worker session should be hidden+muted
160
+ * on the dashboard (the cached inline-mesh session entry carries no settings
161
+ * of its own). Falls back to DEFAULT_MESH_POLICY.spawnedSessionVisibility when
162
+ * the mesh policy is absent, matching the worker-launch stamp.
163
+ */
164
+ getCachedInlineMeshNodesWithVisibility(): Array<{
165
+ node: any;
166
+ spawnedSessionVisibility: RepoMeshSpawnedSessionVisibility;
167
+ }>;
154
168
  resolveRemoteMeshSessionOwnerDaemonId(sessionId: string, ownerNodeIdHint?: string): string | undefined;
155
169
  getCachedInlineMesh(meshId: string, inlineMesh?: unknown): any | undefined;
156
170
  private warmInlineMeshCache;
package/dist/index.d.ts CHANGED
@@ -103,7 +103,7 @@ export type { CommandRouterDeps, CommandRouterResult } from './commands/router.j
103
103
  export { maybeRunDaemonUpgradeHelperFromEnv, spawnDetachedDaemonUpgradeHelper, resolveCurrentGlobalInstallSurface, buildPinnedGlobalInstallCommand, execNpmCommandSync, getNpmExecOptions, } from './commands/upgrade-helper.js';
104
104
  export type { DaemonUpgradeHelperPayload, CurrentGlobalInstallSurface, PinnedGlobalInstallCommand, NpmExecOptions, } from './commands/upgrade-helper.js';
105
105
  export { DaemonStatusReporter } from './status/reporter.js';
106
- export { buildSessionEntries, findCdpManager, hasCdpManager, isCdpConnected } from './status/builders.js';
106
+ export { buildSessionEntries, findCdpManager, hasCdpManager, isCdpConnected, isCoordinatorSpawnedHiddenWorker, resolveSurfaceHidden, resolveMuted, resolveSpawnedSessionHideMute } from './status/builders.js';
107
107
  export { buildStatusSnapshot, buildMachineInfo, buildAvailableProviders, getLastDisplayMessage } from './status/snapshot.js';
108
108
  export { getDaemonBuildInfo } from './build-info.js';
109
109
  export type { DaemonBuildInfo } from './build-info.js';
package/dist/index.js CHANGED
@@ -419,10 +419,10 @@ function readInjected(value) {
419
419
  }
420
420
  function getDaemonBuildInfo() {
421
421
  if (cached) return cached;
422
- const commit = readInjected(true ? "77f3fad0358bec7e4474ead5b2510e19a4cc2cc4" : void 0) ?? "unknown";
423
- const commitShort = readInjected(true ? "77f3fad0" : void 0) ?? (commit !== "unknown" ? commit.slice(0, 7) : "unknown");
424
- const version = readInjected(true ? "0.9.82-rc.541" : void 0) ?? readInjected(typeof process !== "undefined" ? process.env?.ADHDEV_PKG_VERSION : void 0) ?? "unknown";
425
- const builtAt = readInjected(true ? "2026-07-16T05:30:52.044Z" : void 0);
422
+ const commit = readInjected(true ? "ae5a5c1199ad4270aa45c5f938ad931e3bdc7a7d" : void 0) ?? "unknown";
423
+ const commitShort = readInjected(true ? "ae5a5c11" : void 0) ?? (commit !== "unknown" ? commit.slice(0, 7) : "unknown");
424
+ const version = readInjected(true ? "0.9.82-rc.543" : void 0) ?? readInjected(typeof process !== "undefined" ? process.env?.ADHDEV_PKG_VERSION : void 0) ?? "unknown";
425
+ const builtAt = readInjected(true ? "2026-07-16T07:10:31.955Z" : void 0);
426
426
  cached = builtAt ? { commit, commitShort, version, builtAt } : { commit, commitShort, version };
427
427
  return cached;
428
428
  }
@@ -19324,6 +19324,12 @@ function resolveMuted(settings) {
19324
19324
  if (settings.userMuted === false) return false;
19325
19325
  return isCoordinatorSpawnedHiddenWorker(settings);
19326
19326
  }
19327
+ function resolveSpawnedSessionHideMute(input) {
19328
+ return {
19329
+ surfaceHidden: resolveSurfaceHidden(input),
19330
+ muted: resolveMuted(input)
19331
+ };
19332
+ }
19327
19333
  function getActiveChatOptions(profile) {
19328
19334
  if (profile === "full") return {};
19329
19335
  return LIVE_STATUS_ACTIVE_CHAT_OPTIONS;
@@ -19529,8 +19535,12 @@ function buildCliSession(state, options) {
19529
19535
  settings: state.settings,
19530
19536
  ...coordinator && { coordinator },
19531
19537
  ...meshQueueStats && { meshQueueStats },
19532
- ...resolveSurfaceHidden(state.settings) && { surfaceHidden: true },
19533
- ...resolveMuted(state.settings) && { muted: true }
19538
+ // Emit these booleans explicitly (including false) so an un-hide/un-mute clears a
19539
+ // previously-true value downstream. Consumers merge with `?? existing` and copy only
19540
+ // `!== undefined` fields, so an absent field on false never overwrote a prior true —
19541
+ // the toggle-off direction silently stuck. See session-entry-merge.ts.
19542
+ surfaceHidden: resolveSurfaceHidden(state.settings),
19543
+ muted: resolveMuted(state.settings)
19534
19544
  };
19535
19545
  }
19536
19546
  function buildAcpSession(state, options) {
@@ -19571,8 +19581,10 @@ function buildAcpSession(state, options) {
19571
19581
  settings: state.settings,
19572
19582
  ...coordinator && { coordinator },
19573
19583
  ...meshQueueStats && { meshQueueStats },
19574
- ...resolveSurfaceHidden(state.settings) && { surfaceHidden: true },
19575
- ...resolveMuted(state.settings) && { muted: true }
19584
+ // Emit explicitly (including false) so un-hide/un-mute clears a prior true downstream —
19585
+ // see buildCliSession above and session-entry-merge.ts.
19586
+ surfaceHidden: resolveSurfaceHidden(state.settings),
19587
+ muted: resolveMuted(state.settings)
19576
19588
  };
19577
19589
  }
19578
19590
  function buildSessionEntries(allStates, cdpManagers, options = {}) {
@@ -24761,7 +24773,8 @@ function modalSupersededBySettledPrompt(modalSpec, settledSpec, settled, input)
24761
24773
  const settledPromptLineRe = compile2(settledSpec.regex, (settledSpec.flags ?? "m").includes("m") ? settledSpec.flags ?? "m" : `${settledSpec.flags ?? ""}m`);
24762
24774
  const isSettledLine = (line) => {
24763
24775
  settledPromptLineRe.lastIndex = 0;
24764
- return settledPromptLineRe.test(line);
24776
+ if (settledPromptLineRe.test(line)) return true;
24777
+ return settled.footers.some((f) => f.test(line));
24765
24778
  };
24766
24779
  return below.some((line) => line.trim() !== "" && !isModalCueLine(line) && !isSettledLine(line));
24767
24780
  }
@@ -29281,6 +29294,7 @@ __export(index_exports, {
29281
29294
  isAlwaysOnTraceCategory: () => isAlwaysOnTraceCategory,
29282
29295
  isBuiltinChatMessageKind: () => isBuiltinChatMessageKind,
29283
29296
  isCdpConnected: () => isCdpConnected,
29297
+ isCoordinatorSpawnedHiddenWorker: () => isCoordinatorSpawnedHiddenWorker,
29284
29298
  isExtensionInstalled: () => isExtensionInstalled,
29285
29299
  isGitCommandName: () => isGitCommandName,
29286
29300
  isIdeRunning: () => isIdeRunning,
@@ -29407,11 +29421,14 @@ __export(index_exports, {
29407
29421
  resolveMeshNodeAttribution: () => resolveMeshNodeAttribution,
29408
29422
  resolveMeshRefineValidationPlan: () => resolveMeshRefineValidationPlan,
29409
29423
  resolveMeshSurfacedSessionPreview: () => resolveMeshSurfacedSessionPreview,
29424
+ resolveMuted: () => resolveMuted,
29410
29425
  resolveNodeSchedulingPriority: () => resolveNodeSchedulingPriority,
29411
29426
  resolveNotBefore: () => resolveNotBefore,
29412
29427
  resolveProviderMaxParallel: () => resolveProviderMaxParallel,
29413
29428
  resolveSessionHostAppName: () => resolveSessionHostAppName,
29414
29429
  resolveSessionHostAppNameResolution: () => resolveSessionHostAppNameResolution,
29430
+ resolveSpawnedSessionHideMute: () => resolveSpawnedSessionHideMute,
29431
+ resolveSurfaceHidden: () => resolveSurfaceHidden,
29415
29432
  resolveWorktreePath: () => resolveWorktreePath,
29416
29433
  runAsyncBatch: () => runAsyncBatch,
29417
29434
  runGit: () => runGit,
@@ -64066,6 +64083,28 @@ var DaemonCommandRouter = class {
64066
64083
  }
64067
64084
  return nodes;
64068
64085
  }
64086
+ /**
64087
+ * Same flattened node list as getCachedInlineMeshNodes(), but each node is
64088
+ * paired with the `spawnedSessionVisibility` from its OWNING mesh's policy.
64089
+ * The flat node list loses the mesh→node association, yet the cloud daemon's
64090
+ * synthetic mesh-session mirror needs the mesh-level visibility policy to
64091
+ * decide whether a coordinator-spawned worker session should be hidden+muted
64092
+ * on the dashboard (the cached inline-mesh session entry carries no settings
64093
+ * of its own). Falls back to DEFAULT_MESH_POLICY.spawnedSessionVisibility when
64094
+ * the mesh policy is absent, matching the worker-launch stamp.
64095
+ */
64096
+ getCachedInlineMeshNodesWithVisibility() {
64097
+ const out = [];
64098
+ for (const mesh of this.inlineMeshCache.values()) {
64099
+ const spawnedSessionVisibility = mesh?.policy?.spawnedSessionVisibility === "visible" ? "visible" : "hidden";
64100
+ if (Array.isArray(mesh?.nodes)) {
64101
+ for (const node of mesh.nodes) {
64102
+ out.push({ node, spawnedSessionVisibility });
64103
+ }
64104
+ }
64105
+ }
64106
+ return out;
64107
+ }
64069
64108
  // ─── Remote mesh-session owner resolution ───────────────────────────
64070
64109
  // Implementation lives in ./router-mesh-session-owner.ts (behavior-preserving
64071
64110
  // code move). resolveRemoteMeshSessionOwnerDaemonId stays public (the [Z]
@@ -73087,6 +73126,7 @@ var V1_CONTRACT_VERSION = "1.0.0";
73087
73126
  isAlwaysOnTraceCategory,
73088
73127
  isBuiltinChatMessageKind,
73089
73128
  isCdpConnected,
73129
+ isCoordinatorSpawnedHiddenWorker,
73090
73130
  isExtensionInstalled,
73091
73131
  isGitCommandName,
73092
73132
  isIdeRunning,
@@ -73213,11 +73253,14 @@ var V1_CONTRACT_VERSION = "1.0.0";
73213
73253
  resolveMeshNodeAttribution,
73214
73254
  resolveMeshRefineValidationPlan,
73215
73255
  resolveMeshSurfacedSessionPreview,
73256
+ resolveMuted,
73216
73257
  resolveNodeSchedulingPriority,
73217
73258
  resolveNotBefore,
73218
73259
  resolveProviderMaxParallel,
73219
73260
  resolveSessionHostAppName,
73220
73261
  resolveSessionHostAppNameResolution,
73262
+ resolveSpawnedSessionHideMute,
73263
+ resolveSurfaceHidden,
73221
73264
  resolveWorktreePath,
73222
73265
  runAsyncBatch,
73223
73266
  runGit,