refactor(agent-loop): drop the steering/message session event
Steer, inject, and followup now land as durable user/message events on the session surface; the steering/message event type and its ConversationNode kind are removed from the client projection. Update tests, docs, generated catalogs, and agent notes to match, and align the steering e2e fixture and prompt inventory assertions with the durable user/message landing.
This commit is contained in:
@@ -15,7 +15,6 @@ export function extractSessionEventText(event: SessionEvent): string {
|
||||
case 'user/message':
|
||||
return contentText(event.data.content)
|
||||
case 'assistant/message':
|
||||
case 'steering/message':
|
||||
return contentText(event.data.message.content)
|
||||
case 'tool/call':
|
||||
return joinText([event.data.name, event.data.arguments])
|
||||
|
||||
@@ -62,17 +62,10 @@ describe('session-query semantic extraction', () => {
|
||||
{ type: 'user/message', seq: 2, time: 3, data: createUserMessage({
|
||||
content: messageContent, source: { kind: 'plugin', plugin: 'test' },
|
||||
}), surfaceOp: 'append' },
|
||||
{ type: 'steering/message', seq: 3, time: 4, data: {
|
||||
turn: 1,
|
||||
message: createUserMessage({
|
||||
content: messageContent,
|
||||
source: { kind: 'user' },
|
||||
}),
|
||||
}, surfaceOp: 'append' },
|
||||
{ type: 'tool/call', seq: 4, time: 5, data: { turn: 1, step: 1, callId, name: 'bash', arguments: '{"cmd":"pwd"}' } },
|
||||
{ type: 'tool/call', seq: 3, time: 5, data: { turn: 1, step: 1, callId, name: 'bash', arguments: '{"cmd":"pwd"}' } },
|
||||
{
|
||||
type: 'tool/result',
|
||||
seq: 5,
|
||||
seq: 4,
|
||||
time: 6,
|
||||
data: {
|
||||
turn: 1,
|
||||
@@ -88,7 +81,7 @@ describe('session-query semantic extraction', () => {
|
||||
},
|
||||
{
|
||||
type: 'tool/result',
|
||||
seq: 6,
|
||||
seq: 5,
|
||||
time: 7,
|
||||
data: {
|
||||
turn: 1,
|
||||
@@ -97,10 +90,10 @@ describe('session-query semantic extraction', () => {
|
||||
},
|
||||
surfaceOp: 'append',
|
||||
},
|
||||
{ type: 'todo/write', seq: 7, time: 8, data: { todos: [{ status: 'in_progress', content: 'ship search' }] } },
|
||||
{ type: 'todo/write', seq: 6, time: 8, data: { todos: [{ status: 'in_progress', content: 'ship search' }] } },
|
||||
]
|
||||
|
||||
for (const event of events.slice(0, 4)) {
|
||||
for (const event of events.slice(0, 3)) {
|
||||
expect(extractSessionEventText(event)).toBe('visible\nread\n{"path":"a"}\nnested')
|
||||
}
|
||||
expect(extractSessionEventText({
|
||||
@@ -118,10 +111,10 @@ describe('session-query semantic extraction', () => {
|
||||
},
|
||||
surfaceOp: 'append',
|
||||
})).toBe('')
|
||||
expect(extractSessionEventText(events[4]!)).toBe('bash\n{"cmd":"pwd"}')
|
||||
expect(extractSessionEventText(events[5]!)).toBe('failed\nOops\nE_OOPS')
|
||||
expect(extractSessionEventText(events[6]!)).toBe('')
|
||||
expect(extractSessionEventText(events[7]!)).toBe('in_progress\nship search')
|
||||
expect(extractSessionEventText(events[3]!)).toBe('bash\n{"cmd":"pwd"}')
|
||||
expect(extractSessionEventText(events[4]!)).toBe('failed\nOops\nE_OOPS')
|
||||
expect(extractSessionEventText(events[5]!)).toBe('')
|
||||
expect(extractSessionEventText(events[6]!)).toBe('in_progress\nship search')
|
||||
})
|
||||
|
||||
it('extracts meaningful turn outcomes and skips structural or unknown events', () => {
|
||||
|
||||
Reference in New Issue
Block a user