@adhdev/daemon-core 0.9.82-rc.56 → 0.9.82-rc.58
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 +73 -11
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +73 -11
- package/dist/index.mjs.map +1 -1
- package/dist/providers/cli-provider-instance.d.ts +1 -0
- package/package.json +1 -1
- package/src/cli-adapters/provider-cli-runtime.ts +3 -1
- package/src/commands/router.ts +8 -8
- package/src/mesh/mesh-events.ts +14 -0
- package/src/providers/cli-provider-instance.ts +66 -1
package/dist/index.mjs
CHANGED
|
@@ -2280,10 +2280,15 @@ function isMeshCoordinatorEvent(eventName) {
|
|
|
2280
2280
|
return typeof eventName === "string" && MESH_COORDINATOR_EVENTS.has(eventName);
|
|
2281
2281
|
}
|
|
2282
2282
|
function formatCompletionMetadata(event) {
|
|
2283
|
+
const completionDiagnostic = event.completionDiagnostic && typeof event.completionDiagnostic === "object" ? event.completionDiagnostic : null;
|
|
2284
|
+
const diagnosticReason = completionDiagnostic ? readNonEmptyString(completionDiagnostic.blockReason) || "present" : "";
|
|
2285
|
+
const finalAssistantPresent = typeof completionDiagnostic?.finalAssistantPresent === "boolean" ? String(completionDiagnostic.finalAssistantPresent) : "";
|
|
2283
2286
|
const parts = [
|
|
2284
2287
|
readNonEmptyString(event.targetSessionId) ? `session_id=${readNonEmptyString(event.targetSessionId)}` : "",
|
|
2285
2288
|
readNonEmptyString(event.providerType) ? `provider=${readNonEmptyString(event.providerType)}` : "",
|
|
2286
|
-
readNonEmptyString(event.providerSessionId) ? `provider_session_id=${readNonEmptyString(event.providerSessionId)}` : ""
|
|
2289
|
+
readNonEmptyString(event.providerSessionId) ? `provider_session_id=${readNonEmptyString(event.providerSessionId)}` : "",
|
|
2290
|
+
diagnosticReason ? `completion_diagnostic=${diagnosticReason}` : "",
|
|
2291
|
+
finalAssistantPresent ? `final_assistant=${finalAssistantPresent}` : ""
|
|
2287
2292
|
].filter(Boolean);
|
|
2288
2293
|
return parts.length > 0 ? ` (${parts.join("; ")})` : "";
|
|
2289
2294
|
}
|
|
@@ -2827,6 +2832,7 @@ function injectMeshSystemMessage(components, args) {
|
|
|
2827
2832
|
taskId: completedTaskForLedger?.id || void 0,
|
|
2828
2833
|
providerSessionId: readNonEmptyString(args.metadataEvent.providerSessionId) || void 0,
|
|
2829
2834
|
finalSummary: readNonEmptyString(args.metadataEvent.finalSummary) || void 0,
|
|
2835
|
+
completionDiagnostic: args.metadataEvent.completionDiagnostic && typeof args.metadataEvent.completionDiagnostic === "object" ? args.metadataEvent.completionDiagnostic : void 0,
|
|
2830
2836
|
evidence: completionEvidence
|
|
2831
2837
|
}
|
|
2832
2838
|
});
|
|
@@ -3912,7 +3918,9 @@ function resolveCliSpawnPlan(options) {
|
|
|
3912
3918
|
const configuredCommand = typeof runtimeSettings.executablePath === "string" && runtimeSettings.executablePath.trim() ? runtimeSettings.executablePath.trim() : spawnConfig.command;
|
|
3913
3919
|
const binaryPath = findBinary(configuredCommand);
|
|
3914
3920
|
const isWin = os10.platform() === "win32";
|
|
3915
|
-
const allArgs = [...spawnConfig.args, ...extraArgs]
|
|
3921
|
+
const allArgs = [...spawnConfig.args, ...extraArgs].map(
|
|
3922
|
+
(arg) => typeof arg === "string" ? arg.replace(/\{\{workingDir\}\}/g, workingDir) : arg
|
|
3923
|
+
);
|
|
3916
3924
|
let shellCmd;
|
|
3917
3925
|
let shellArgs;
|
|
3918
3926
|
const useShellUnix = !isWin && (!!spawnConfig.shell || !path15.isAbsolute(binaryPath) || isScriptBinary(binaryPath) || !looksLikeMachOOrElf(binaryPath));
|
|
@@ -18526,6 +18534,44 @@ var CliProviderInstance = class {
|
|
|
18526
18534
|
const content = lastVisible ? flattenContent(lastVisible.content).trim() : "";
|
|
18527
18535
|
return role === "assistant" && !!content;
|
|
18528
18536
|
}
|
|
18537
|
+
buildCompletedFinalizationDiagnostic(args) {
|
|
18538
|
+
let parsed = null;
|
|
18539
|
+
let parseError;
|
|
18540
|
+
try {
|
|
18541
|
+
parsed = this.adapter.getScriptParsedStatus();
|
|
18542
|
+
} catch (error) {
|
|
18543
|
+
parseError = error?.message || String(error);
|
|
18544
|
+
}
|
|
18545
|
+
const visibleMessages = (Array.isArray(parsed?.messages) ? parsed.messages : []).filter((message) => isUserFacingChatMessage(message));
|
|
18546
|
+
const lastVisible = visibleMessages[visibleMessages.length - 1];
|
|
18547
|
+
const lastVisibleRole = typeof lastVisible?.role === "string" ? lastVisible.role.trim().toLowerCase() : null;
|
|
18548
|
+
const lastVisibleKind = typeof lastVisible?.kind === "string" ? lastVisible.kind : null;
|
|
18549
|
+
const lastVisibleContentLength = lastVisible ? flattenContent(lastVisible.content).trim().length : 0;
|
|
18550
|
+
return {
|
|
18551
|
+
providerType: this.type,
|
|
18552
|
+
sessionId: this.instanceId,
|
|
18553
|
+
providerSessionId: this.providerSessionId || null,
|
|
18554
|
+
workspace: this.workingDir,
|
|
18555
|
+
blockReason: args.blockReason,
|
|
18556
|
+
emittedAfterFinalizationTimeout: args.emittedAfterFinalizationTimeout,
|
|
18557
|
+
waitedMs: args.waitedMs,
|
|
18558
|
+
maxWaitMs: COMPLETED_FINALIZATION_MAX_WAIT_MS,
|
|
18559
|
+
adapterStatus: typeof args.latestStatus?.status === "string" ? args.latestStatus.status : null,
|
|
18560
|
+
latestVisibleStatus: args.latestVisibleStatus,
|
|
18561
|
+
parsedStatus: typeof parsed?.status === "string" ? parsed.status : parseError ? "parse_error" : "unknown",
|
|
18562
|
+
parseError: parseError || void 0,
|
|
18563
|
+
finalAssistantPresent: this.completionHasFinalAssistantMessage(parsed?.messages),
|
|
18564
|
+
visibleMessageCount: visibleMessages.length,
|
|
18565
|
+
lastVisibleRole,
|
|
18566
|
+
lastVisibleKind,
|
|
18567
|
+
lastVisibleContentLength,
|
|
18568
|
+
pendingStartedAt: this.generatingStartedAt || null,
|
|
18569
|
+
pendingFirstObservedAt: args.pending.firstObservedAt,
|
|
18570
|
+
pendingTimestamp: args.pending.timestamp,
|
|
18571
|
+
pendingDurationSec: args.pending.duration,
|
|
18572
|
+
previousBlockReason: args.pending.loggedBlockReason || null
|
|
18573
|
+
};
|
|
18574
|
+
}
|
|
18529
18575
|
hasAdapterPendingResponse() {
|
|
18530
18576
|
const adapterAny = this.adapter;
|
|
18531
18577
|
if (adapterAny?.isWaitingForResponse === true) return true;
|
|
@@ -18598,7 +18644,23 @@ var CliProviderInstance = class {
|
|
|
18598
18644
|
this.scheduleCompletedDebounceFlush(COMPLETED_FINALIZATION_RETRY_MS);
|
|
18599
18645
|
return;
|
|
18600
18646
|
}
|
|
18601
|
-
|
|
18647
|
+
const completionDiagnostic = this.buildCompletedFinalizationDiagnostic({
|
|
18648
|
+
blockReason,
|
|
18649
|
+
latestStatus,
|
|
18650
|
+
latestVisibleStatus,
|
|
18651
|
+
waitedMs,
|
|
18652
|
+
pending,
|
|
18653
|
+
emittedAfterFinalizationTimeout: true
|
|
18654
|
+
});
|
|
18655
|
+
LOG.warn("CLI", `[${this.type}] emitting completed event after ${waitedMs}ms without finalized assistant turn (${blockReason})`);
|
|
18656
|
+
this.pushEvent({
|
|
18657
|
+
event: "agent:generating_completed",
|
|
18658
|
+
chatTitle: pending.chatTitle,
|
|
18659
|
+
duration: pending.duration,
|
|
18660
|
+
timestamp: pending.timestamp,
|
|
18661
|
+
finalSummary: extractFinalSummaryFromMessages(this.adapter?.getScriptParsedStatus()?.messages),
|
|
18662
|
+
completionDiagnostic
|
|
18663
|
+
});
|
|
18602
18664
|
this.completedDebouncePending = null;
|
|
18603
18665
|
this.completedDebounceTimer = null;
|
|
18604
18666
|
this.generatingStartedAt = 0;
|
|
@@ -24969,15 +25031,15 @@ function reconcileInlineMeshCache(cached, incoming) {
|
|
|
24969
25031
|
const cachedNodes = Array.isArray(cached.nodes) ? cached.nodes : [];
|
|
24970
25032
|
const incomingNodes = Array.isArray(incoming.nodes) ? incoming.nodes : [];
|
|
24971
25033
|
if (!cachedNodes.length || !incomingNodes.length) return { ...cached, ...incoming };
|
|
24972
|
-
const
|
|
24973
|
-
for (const node of
|
|
25034
|
+
const cachedById = /* @__PURE__ */ new Map();
|
|
25035
|
+
for (const node of cachedNodes) {
|
|
24974
25036
|
const nodeId = readInlineMeshNodeId(node);
|
|
24975
|
-
if (nodeId)
|
|
25037
|
+
if (nodeId) cachedById.set(nodeId, node);
|
|
24976
25038
|
}
|
|
24977
|
-
const nodes =
|
|
24978
|
-
const nodeId = readInlineMeshNodeId(
|
|
24979
|
-
const
|
|
24980
|
-
if (!
|
|
25039
|
+
const nodes = incomingNodes.map((incomingNode) => {
|
|
25040
|
+
const nodeId = readInlineMeshNodeId(incomingNode);
|
|
25041
|
+
const cachedNode = nodeId ? cachedById.get(nodeId) : void 0;
|
|
25042
|
+
if (!cachedNode) return incomingNode;
|
|
24981
25043
|
if (hasInlineMeshTransientNodeState(incomingNode)) {
|
|
24982
25044
|
return { ...cachedNode, ...incomingNode };
|
|
24983
25045
|
}
|
|
@@ -25132,7 +25194,7 @@ async function hydrateInlineMeshDirectTruth(args) {
|
|
|
25132
25194
|
if (!isSelfNode && daemonId) unavailableNodeIds.push(nodeId);
|
|
25133
25195
|
continue;
|
|
25134
25196
|
}
|
|
25135
|
-
if (
|
|
25197
|
+
if (fs10.existsSync(workspace)) {
|
|
25136
25198
|
try {
|
|
25137
25199
|
const localGit = await getGitRepoStatus(workspace, { timeoutMs: 1e4, refreshUpstream: true });
|
|
25138
25200
|
if (localGit?.isGitRepo) {
|