





















11// Shared sessions.changed broadcaster for gateway RPC and chat-command mutations.
22import { resolveDefaultAgentId } from "../../agents/agent-scope.js";
3+import { buildGatewaySessionEventFields } from "../session-event-payload.js";
34import { loadGatewaySessionRow } from "../session-utils.js";
45import { hasTrackedActiveSessionRun } from "./session-active-runs.js";
56import type { GatewayRequestContext } from "./types.js";
@@ -33,7 +34,6 @@ export function emitSessionsChanged(
3334 : undefined,
3435)
3536 : null;
36-const omitUnscopedGlobalGoal = payload.sessionKey === "global" && !payload.agentId;
3737const defaultAgentId = resolveDefaultAgentId(context.getRuntimeConfig());
3838context.broadcastToConnIds(
3939"sessions.changed",
@@ -42,66 +42,21 @@ export function emitSessionsChanged(
4242ts: Date.now(),
4343 ...(sessionRow
4444 ? {
45-updatedAt: sessionRow.updatedAt ?? undefined,
46-sessionId: sessionRow.sessionId,
47-kind: sessionRow.kind,
48-channel: sessionRow.channel,
49-subject: sessionRow.subject,
50-groupChannel: sessionRow.groupChannel,
51-space: sessionRow.space,
52-chatType: sessionRow.chatType,
53-origin: sessionRow.origin,
54-spawnedBy: sessionRow.spawnedBy,
55-spawnedWorkspaceDir: sessionRow.spawnedWorkspaceDir,
56-spawnedCwd: sessionRow.spawnedCwd,
57-forkedFromParent: sessionRow.forkedFromParent,
58-spawnDepth: sessionRow.spawnDepth,
59-subagentRole: sessionRow.subagentRole,
60-subagentControlScope: sessionRow.subagentControlScope,
61-label: sessionRow.label,
62-displayName: sessionRow.displayName,
63-deliveryContext: sessionRow.deliveryContext,
64-parentSessionKey: sessionRow.parentSessionKey,
65-childSessions: sessionRow.childSessions,
66-thinkingLevel: sessionRow.thinkingLevel,
67-fastMode: sessionRow.fastMode,
45+ ...buildGatewaySessionEventFields({
46+ sessionRow,
47+agentId: payload.agentId,
48+hasActiveRun: hasTrackedActiveSessionRun({
49+ context,
50+requestedKey: payload.sessionKey ?? sessionRow.key,
51+canonicalKey: sessionRow.key,
52+agentId: sessionRow.key === "global" ? payload.agentId : undefined,
53+ defaultAgentId,
54+}),
55+}),
6856effectiveFastMode: sessionRow.effectiveFastMode,
6957effectiveFastModeSource: sessionRow.effectiveFastModeSource,
7058fastAutoOnSeconds: sessionRow.fastAutoOnSeconds,
71-verboseLevel: sessionRow.verboseLevel,
7259traceLevel: sessionRow.traceLevel,
73-reasoningLevel: sessionRow.reasoningLevel,
74-elevatedLevel: sessionRow.elevatedLevel,
75-sendPolicy: sessionRow.sendPolicy,
76-systemSent: sessionRow.systemSent,
77-abortedLastRun: sessionRow.abortedLastRun,
78-inputTokens: sessionRow.inputTokens,
79-outputTokens: sessionRow.outputTokens,
80-lastChannel: sessionRow.lastChannel,
81-lastTo: sessionRow.lastTo,
82-lastAccountId: sessionRow.lastAccountId,
83-lastThreadId: sessionRow.lastThreadId,
84-totalTokens: sessionRow.totalTokens,
85-totalTokensFresh: sessionRow.totalTokensFresh,
86- ...(omitUnscopedGlobalGoal ? {} : { goal: sessionRow.goal ?? null }),
87-contextTokens: sessionRow.contextTokens,
88-estimatedCostUsd: sessionRow.estimatedCostUsd,
89-responseUsage: sessionRow.responseUsage,
90-modelProvider: sessionRow.modelProvider,
91-model: sessionRow.model,
92-status: sessionRow.status,
93-hasActiveRun: hasTrackedActiveSessionRun({
94- context,
95-requestedKey: payload.sessionKey ?? sessionRow.key,
96-canonicalKey: sessionRow.key,
97-agentId: sessionRow.key === "global" ? payload.agentId : undefined,
98- defaultAgentId,
99-}),
100-startedAt: sessionRow.startedAt,
101-endedAt: sessionRow.endedAt,
102-runtimeMs: sessionRow.runtimeMs,
103-compactionCheckpointCount: sessionRow.compactionCheckpointCount,
104-latestCompactionCheckpoint: sessionRow.latestCompactionCheckpoint,
10560pluginExtensions: sessionRow.pluginExtensions,
10661}
10762 : {}),
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。