@adhdev/daemon-standalone 0.9.82-rc.330 → 0.9.82-rc.332
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.js +75 -9
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/public/assets/index-BKSjQ-U-.js +113 -0
- package/public/assets/index-C6jQV0gJ.js +113 -0
- package/public/index.html +1 -1
- package/vendor/mcp-server/index.js +10 -5
- package/vendor/mcp-server/index.js.map +1 -1
package/dist/index.js
CHANGED
|
@@ -29803,7 +29803,10 @@ var require_dist3 = __commonJS({
|
|
|
29803
29803
|
requireApprovalForDestructiveGit: true,
|
|
29804
29804
|
dirtyWorkspaceBehavior: "warn",
|
|
29805
29805
|
maxParallelTasks: 2,
|
|
29806
|
-
|
|
29806
|
+
// Coordinator-spawned worker sessions default to hidden so the dashboard is not
|
|
29807
|
+
// flooded with mesh noise tabs/notifications. Users can still surface or unmute
|
|
29808
|
+
// any specific session manually; that override is preserved per-device.
|
|
29809
|
+
spawnedSessionVisibility: "hidden",
|
|
29807
29810
|
delegatedWorkerAutoApprove: true,
|
|
29808
29811
|
sessionCleanupOnNodeRemove: "preserve",
|
|
29809
29812
|
autoFastForward: { enabled: true },
|
|
@@ -30033,10 +30036,10 @@ var require_dist3 = __commonJS({
|
|
|
30033
30036
|
}
|
|
30034
30037
|
function getDaemonBuildInfo() {
|
|
30035
30038
|
if (cached2) return cached2;
|
|
30036
|
-
const commit = readInjected(true ? "
|
|
30037
|
-
const commitShort = readInjected(true ? "
|
|
30038
|
-
const version2 = readInjected(true ? "0.9.82-rc.
|
|
30039
|
-
const builtAt = readInjected(true ? "2026-06-
|
|
30039
|
+
const commit = readInjected(true ? "2466d8b001000d509eb9058a0c51ec6f383741ed" : void 0) ?? "unknown";
|
|
30040
|
+
const commitShort = readInjected(true ? "2466d8b0" : void 0) ?? (commit !== "unknown" ? commit.slice(0, 7) : "unknown");
|
|
30041
|
+
const version2 = readInjected(true ? "0.9.82-rc.332" : void 0) ?? readInjected(typeof process !== "undefined" ? process.env?.ADHDEV_PKG_VERSION : void 0) ?? "unknown";
|
|
30042
|
+
const builtAt = readInjected(true ? "2026-06-20T01:56:22.624Z" : void 0);
|
|
30040
30043
|
cached2 = builtAt ? { commit, commitShort, version: version2, builtAt } : { commit, commitShort, version: version2 };
|
|
30041
30044
|
return cached2;
|
|
30042
30045
|
}
|
|
@@ -31672,7 +31675,7 @@ ${error48.message || ""}`;
|
|
|
31672
31675
|
policy.sessionCleanupOnNodeRemove = "preserve";
|
|
31673
31676
|
}
|
|
31674
31677
|
if (!SPAWNED_SESSION_VISIBILITY_MODES.has(String(policy.spawnedSessionVisibility))) {
|
|
31675
|
-
policy.spawnedSessionVisibility =
|
|
31678
|
+
policy.spawnedSessionVisibility = DEFAULT_MESH_POLICY.spawnedSessionVisibility;
|
|
31676
31679
|
}
|
|
31677
31680
|
const normalizedStrategy = normalizeMeshSchedulingStrategy(policy.schedulingStrategy);
|
|
31678
31681
|
if (normalizedStrategy === "first_eligible") {
|
|
@@ -40442,6 +40445,21 @@ Next step: ${nextStep}`;
|
|
|
40442
40445
|
targetSessionId: readNonEmptyString2(payload.targetSessionId) || readNonEmptyString2(payload.sessionId) || readNonEmptyString2(payload.instanceId),
|
|
40443
40446
|
providerType: readNonEmptyString2(payload.providerType),
|
|
40444
40447
|
providerSessionId: readNonEmptyString2(payload.providerSessionId),
|
|
40448
|
+
// Carry the session identity fields the worker provider event emits so the
|
|
40449
|
+
// coordinator's mirror (updateMeshOwnedSession) gets a real workspace/title/
|
|
40450
|
+
// settings. Without these the remote-relay hop reconstructs metadataEvent with
|
|
40451
|
+
// an empty workspace, and the dashboard flaps to the generic
|
|
40452
|
+
// "Terminal (Mesh Node)" title (and degrades the provider label) between live
|
|
40453
|
+
// events and the periodic get_status_metadata snapshot. The local in-process
|
|
40454
|
+
// forward path (onMeshCoordinatorEventForwarded) already preserves these; this
|
|
40455
|
+
// mirrors them for the remote-only relay path.
|
|
40456
|
+
workspace: readNonEmptyString2(payload.workspace) || readNonEmptyString2(payload.workspaceName),
|
|
40457
|
+
workspaceName: readNonEmptyString2(payload.workspaceName) || readNonEmptyString2(payload.workspace),
|
|
40458
|
+
sessionTitle: readNonEmptyString2(payload.sessionTitle),
|
|
40459
|
+
sessionStatus: readNonEmptyString2(payload.sessionStatus),
|
|
40460
|
+
sessionChatStatus: readNonEmptyString2(payload.sessionChatStatus),
|
|
40461
|
+
providerName: readNonEmptyString2(payload.providerName),
|
|
40462
|
+
...payload.sessionSettings && typeof payload.sessionSettings === "object" && !Array.isArray(payload.sessionSettings) ? { sessionSettings: payload.sessionSettings } : {},
|
|
40445
40463
|
finalSummary: readNonEmptyString2(payload.finalSummary) || readNonEmptyString2(payload.summary),
|
|
40446
40464
|
jobId: readNonEmptyString2(payload.jobId),
|
|
40447
40465
|
interactionId: readNonEmptyString2(payload.interactionId),
|
|
@@ -41344,7 +41362,8 @@ Next step: ${nextStep}`;
|
|
|
41344
41362
|
const meshId = readNonEmptyString2(settings.meshCoordinatorFor);
|
|
41345
41363
|
if (!meshId) continue;
|
|
41346
41364
|
const status = readNonEmptyString2(state.status).toLowerCase();
|
|
41347
|
-
|
|
41365
|
+
const modalParked = status === "waiting_choice" || status === "waiting_approval";
|
|
41366
|
+
out.push({ meshId, instance: inst, idle: status === "idle", modalParked });
|
|
41348
41367
|
}
|
|
41349
41368
|
return out;
|
|
41350
41369
|
}
|
|
@@ -41433,9 +41452,16 @@ Next step: ${nextStep}`;
|
|
|
41433
41452
|
}
|
|
41434
41453
|
for (const [meshId, meshCoordinators] of byMesh) {
|
|
41435
41454
|
const idleCoordinators = meshCoordinators.filter((c) => c.idle);
|
|
41436
|
-
const generatingCoordinators = meshCoordinators.filter((c) => !c.idle);
|
|
41455
|
+
const generatingCoordinators = meshCoordinators.filter((c) => !c.idle && !c.modalParked);
|
|
41456
|
+
const modalParkedCoordinators = meshCoordinators.filter((c) => !c.idle && c.modalParked);
|
|
41437
41457
|
const targetCoordinators = idleCoordinators.length > 0 ? idleCoordinators : generatingCoordinators;
|
|
41438
41458
|
const forceOnly = idleCoordinators.length === 0;
|
|
41459
|
+
if (targetCoordinators.length === 0) {
|
|
41460
|
+
if (modalParkedCoordinators.length > 0) {
|
|
41461
|
+
LOG2.info("MeshReconcile", `Reconcile skip \u2192 modal-parked: holding pending event(s) for mesh ${meshId} (${modalParkedCoordinators.length} coordinator(s) awaiting a modal answer; events left queued)`);
|
|
41462
|
+
}
|
|
41463
|
+
continue;
|
|
41464
|
+
}
|
|
41439
41465
|
if (store) {
|
|
41440
41466
|
try {
|
|
41441
41467
|
if (store.pendingEventCount(meshId) === 0) continue;
|
|
@@ -45750,6 +45776,10 @@ ${lastSnapshot}`;
|
|
|
45750
45776
|
if (!this.ptyProcess) throw new Error(`${this.cliName} is not running`);
|
|
45751
45777
|
const content = String(text || "");
|
|
45752
45778
|
if (!content.trim()) return;
|
|
45779
|
+
if (this.engine.currentStatus === "waiting_approval" || this.engine.hasActionableApproval()) {
|
|
45780
|
+
LOG2.info("CLI", `[${this.cliType}] force-send held \u2014 session parked on approval modal (status=${this.engine.currentStatus})`);
|
|
45781
|
+
return;
|
|
45782
|
+
}
|
|
45753
45783
|
LOG2.info("CLI", `[${this.cliType}] force-sending prompt while status=${this.engine.currentStatus}`);
|
|
45754
45784
|
await this.writeToPty(content + this.sendKey);
|
|
45755
45785
|
this.onStatusChange?.();
|
|
@@ -64481,6 +64511,35 @@ ${formatManifestValidationIssues2(validation.issues)}`,
|
|
|
64481
64511
|
this.settings = rest;
|
|
64482
64512
|
this.adapter.updateRuntimeSettings?.(this.settings);
|
|
64483
64513
|
}
|
|
64514
|
+
/**
|
|
64515
|
+
* The resolved modal-park status of this session, or null when it is not
|
|
64516
|
+
* parked on a modal awaiting a human answer. Mirrors the overlay logic in
|
|
64517
|
+
* getState(): an active AskUserQuestion interactive prompt resolves to
|
|
64518
|
+
* waiting_choice; otherwise the adapter's waiting_approval (tool consent)
|
|
64519
|
+
* counts — UNLESS auto-approve will dismiss it, in which case the session is
|
|
64520
|
+
* effectively generating and is NOT modal-parked. This is the single signal
|
|
64521
|
+
* the mesh force-inject guard consults, and the same status string the
|
|
64522
|
+
* reconcile loop reads off get_status_metadata. Lowercase literals only —
|
|
64523
|
+
* the SessionStatus enum is forked across modules and waiting_choice is
|
|
64524
|
+
* absent from some of them.
|
|
64525
|
+
*/
|
|
64526
|
+
resolveModalParkStatus() {
|
|
64527
|
+
if (this.activeInteractivePrompt) return "waiting_choice";
|
|
64528
|
+
let adapterStatus;
|
|
64529
|
+
try {
|
|
64530
|
+
adapterStatus = this.adapter.getStatus({ allowParse: false });
|
|
64531
|
+
} catch {
|
|
64532
|
+
return null;
|
|
64533
|
+
}
|
|
64534
|
+
if (adapterStatus.status === "waiting_approval" && !this.shouldAutoApprove()) {
|
|
64535
|
+
return "waiting_approval";
|
|
64536
|
+
}
|
|
64537
|
+
return null;
|
|
64538
|
+
}
|
|
64539
|
+
/** True when this session is parked on a modal awaiting a human answer. */
|
|
64540
|
+
isModalParked() {
|
|
64541
|
+
return this.resolveModalParkStatus() !== null;
|
|
64542
|
+
}
|
|
64484
64543
|
onEvent(event, data) {
|
|
64485
64544
|
if (event === "send_message") {
|
|
64486
64545
|
const input = normalizeInputEnvelope(data);
|
|
@@ -64488,6 +64547,10 @@ ${formatManifestValidationIssues2(validation.issues)}`,
|
|
|
64488
64547
|
const promptText = buildCliStructuredInputPrompt(input);
|
|
64489
64548
|
if (promptText) {
|
|
64490
64549
|
const force = data?.force === true;
|
|
64550
|
+
if (force && this.isModalParked()) {
|
|
64551
|
+
LOG2.info("CLI", `[${this.type}] force send_message held \u2014 coordinator parked on modal (${this.resolveModalParkStatus()})`);
|
|
64552
|
+
return;
|
|
64553
|
+
}
|
|
64491
64554
|
void this.adapter.sendMessage(promptText, force ? { force: true } : {}).catch((e) => {
|
|
64492
64555
|
LOG2.warn("CLI", `[${this.type}] send_message failed: ${e?.message || e}`);
|
|
64493
64556
|
});
|
|
@@ -80779,7 +80842,10 @@ ${ptyResult.output.slice(-2e3)}`);
|
|
|
80779
80842
|
title: session.title,
|
|
80780
80843
|
cdpConnected: session.cdpConnected,
|
|
80781
80844
|
summaryMetadata: session.summaryMetadata,
|
|
80782
|
-
settings: session.settings
|
|
80845
|
+
settings: session.settings,
|
|
80846
|
+
// Forward surfaceHidden so the server can gate push notifications for
|
|
80847
|
+
// coordinator-hidden sessions (the WS path is the only one the server sees).
|
|
80848
|
+
surfaceHidden: session.surfaceHidden
|
|
80783
80849
|
})),
|
|
80784
80850
|
p2p: payload.p2p,
|
|
80785
80851
|
timestamp: now
|