diff --git a/extensions/qa-lab/src/suite-runtime-agent-session.ts b/extensions/qa-lab/src/suite-runtime-agent-session.ts index a5bdf234b9a..65cc4ea94da 100644 --- a/extensions/qa-lab/src/suite-runtime-agent-session.ts +++ b/extensions/qa-lab/src/suite-runtime-agent-session.ts @@ -39,9 +39,12 @@ async function seedQaSessionTranscript( agentId?: string; sessionId: string; sessionKey?: string; - messages: Array<{ role: string; content: unknown; timestamp?: number | string }>; + messages?: Array<{ role: string; content: unknown; timestamp?: number | string }>; now?: number; originLabel?: string; + lastChannel?: string; + lastProvider?: string; + lastTo?: string; }, ) { const agentId = params.agentId?.trim() || "qa"; @@ -52,10 +55,11 @@ async function seedQaSessionTranscript( } const sessionFile = createSqliteSessionTranscriptLocator({ agentId, sessionId }); const sessionKey = params.sessionKey?.trim() || `agent:${agentId}:seed-${sessionId}`; + const messages = params.messages ?? []; let parentId: string | null = null; - const messageEvents = params.messages.map((message, index) => { + const messageEvents = messages.map((message, index) => { const id = `qa-seed-${index + 1}`; - const timestampMs = now - Math.max(1, params.messages.length - index) * 30_000; + const timestampMs = now - Math.max(1, messages.length - index) * 30_000; const event = { type: "message" as const, id, @@ -97,6 +101,9 @@ async function seedQaSessionTranscript( sessionId, updatedAt: now, sessionFile, + ...(params.lastChannel ? { lastChannel: params.lastChannel } : {}), + ...(params.lastProvider ? { lastProvider: params.lastProvider } : {}), + ...(params.lastTo ? { lastTo: params.lastTo } : {}), origin: { label: params.originLabel ?? "QA seeded SQLite transcript", }, diff --git a/qa/scenarios/memory/commitments-heartbeat-target-none.md b/qa/scenarios/memory/commitments-heartbeat-target-none.md index b8d49b1d65f..cf5c9838ec1 100644 --- a/qa/scenarios/memory/commitments-heartbeat-target-none.md +++ b/qa/scenarios/memory/commitments-heartbeat-target-none.md @@ -64,28 +64,31 @@ steps: - set: stateDir value: expr: "path.join(env.gateway.tempRoot, 'state')" - - set: sessionsPath - value: - expr: "path.join(stateDir, 'agents', 'qa', 'sessions', 'sessions.json')" - set: commitmentStorePath value: expr: "path.join(stateDir, 'commitments', 'commitments.json')" - set: dueNow value: expr: "Date.now()" - - call: fs.mkdir - args: - - expr: "path.dirname(sessionsPath)" - - recursive: true - call: fs.mkdir args: - expr: "path.dirname(commitmentStorePath)" - recursive: true - - call: fs.writeFile + - call: seedQaSessionTranscript + saveAs: seededSession args: - - ref: sessionsPath - - expr: "JSON.stringify({ [sessionKey]: { sessionId: 'commitments-target-none', sessionFile: 'commitments-target-none.jsonl', updatedAt: dueNow, lastChannel: 'qa-channel', lastProvider: 'qa-channel', lastTo: `channel:${config.conversationId}` } }, null, 2)" - - utf8 + - ref: env + - agentId: qa + sessionId: commitments-target-none + sessionKey: + ref: sessionKey + now: + ref: dueNow + originLabel: QA seeded commitments heartbeat target-none session + lastChannel: qa-channel + lastProvider: qa-channel + lastTo: + expr: "`channel:${config.conversationId}`" - call: fs.writeFile args: - ref: commitmentStorePath