@adhdev/daemon-standalone 0.9.82-rc.331 → 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 +66 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/public/assets/index-BKSjQ-U-.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
|
@@ -30036,10 +30036,10 @@ var require_dist3 = __commonJS({
|
|
|
30036
30036
|
}
|
|
30037
30037
|
function getDaemonBuildInfo() {
|
|
30038
30038
|
if (cached2) return cached2;
|
|
30039
|
-
const commit = readInjected(true ? "
|
|
30040
|
-
const commitShort = readInjected(true ? "
|
|
30041
|
-
const version2 = readInjected(true ? "0.9.82-rc.
|
|
30042
|
-
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);
|
|
30043
30043
|
cached2 = builtAt ? { commit, commitShort, version: version2, builtAt } : { commit, commitShort, version: version2 };
|
|
30044
30044
|
return cached2;
|
|
30045
30045
|
}
|
|
@@ -40445,6 +40445,21 @@ Next step: ${nextStep}`;
|
|
|
40445
40445
|
targetSessionId: readNonEmptyString2(payload.targetSessionId) || readNonEmptyString2(payload.sessionId) || readNonEmptyString2(payload.instanceId),
|
|
40446
40446
|
providerType: readNonEmptyString2(payload.providerType),
|
|
40447
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 } : {},
|
|
40448
40463
|
finalSummary: readNonEmptyString2(payload.finalSummary) || readNonEmptyString2(payload.summary),
|
|
40449
40464
|
jobId: readNonEmptyString2(payload.jobId),
|
|
40450
40465
|
interactionId: readNonEmptyString2(payload.interactionId),
|
|
@@ -41347,7 +41362,8 @@ Next step: ${nextStep}`;
|
|
|
41347
41362
|
const meshId = readNonEmptyString2(settings.meshCoordinatorFor);
|
|
41348
41363
|
if (!meshId) continue;
|
|
41349
41364
|
const status = readNonEmptyString2(state.status).toLowerCase();
|
|
41350
|
-
|
|
41365
|
+
const modalParked = status === "waiting_choice" || status === "waiting_approval";
|
|
41366
|
+
out.push({ meshId, instance: inst, idle: status === "idle", modalParked });
|
|
41351
41367
|
}
|
|
41352
41368
|
return out;
|
|
41353
41369
|
}
|
|
@@ -41436,9 +41452,16 @@ Next step: ${nextStep}`;
|
|
|
41436
41452
|
}
|
|
41437
41453
|
for (const [meshId, meshCoordinators] of byMesh) {
|
|
41438
41454
|
const idleCoordinators = meshCoordinators.filter((c) => c.idle);
|
|
41439
|
-
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);
|
|
41440
41457
|
const targetCoordinators = idleCoordinators.length > 0 ? idleCoordinators : generatingCoordinators;
|
|
41441
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
|
+
}
|
|
41442
41465
|
if (store) {
|
|
41443
41466
|
try {
|
|
41444
41467
|
if (store.pendingEventCount(meshId) === 0) continue;
|
|
@@ -45753,6 +45776,10 @@ ${lastSnapshot}`;
|
|
|
45753
45776
|
if (!this.ptyProcess) throw new Error(`${this.cliName} is not running`);
|
|
45754
45777
|
const content = String(text || "");
|
|
45755
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
|
+
}
|
|
45756
45783
|
LOG2.info("CLI", `[${this.cliType}] force-sending prompt while status=${this.engine.currentStatus}`);
|
|
45757
45784
|
await this.writeToPty(content + this.sendKey);
|
|
45758
45785
|
this.onStatusChange?.();
|
|
@@ -64484,6 +64511,35 @@ ${formatManifestValidationIssues2(validation.issues)}`,
|
|
|
64484
64511
|
this.settings = rest;
|
|
64485
64512
|
this.adapter.updateRuntimeSettings?.(this.settings);
|
|
64486
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
|
+
}
|
|
64487
64543
|
onEvent(event, data) {
|
|
64488
64544
|
if (event === "send_message") {
|
|
64489
64545
|
const input = normalizeInputEnvelope(data);
|
|
@@ -64491,6 +64547,10 @@ ${formatManifestValidationIssues2(validation.issues)}`,
|
|
|
64491
64547
|
const promptText = buildCliStructuredInputPrompt(input);
|
|
64492
64548
|
if (promptText) {
|
|
64493
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
|
+
}
|
|
64494
64554
|
void this.adapter.sendMessage(promptText, force ? { force: true } : {}).catch((e) => {
|
|
64495
64555
|
LOG2.warn("CLI", `[${this.type}] send_message failed: ${e?.message || e}`);
|
|
64496
64556
|
});
|