Skip to content

Commit f159399

Browse files
committed
Fix tool observation parenting
1 parent 4b16f8f commit f159399

3 files changed

Lines changed: 458 additions & 141 deletions

File tree

src/index.ts

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ type SessionNextEvent =
2323
properties: {
2424
sessionID: string;
2525
timestamp: number;
26+
assistantMessageID?: string;
2627
agent: string;
2728
model: NonNullable<ActiveGenerationStep["model"]>;
2829
snapshot?: string;
@@ -39,9 +40,23 @@ type SessionNextEvent =
3940
properties: {
4041
sessionID: string;
4142
timestamp: number;
43+
assistantMessageID?: string;
4244
error: { message: string };
4345
};
4446
}
47+
| {
48+
id: string;
49+
type: "session.next.tool.called";
50+
properties: {
51+
sessionID: string;
52+
timestamp: number;
53+
assistantMessageID?: string;
54+
callID: string;
55+
tool: string;
56+
input: Record<string, unknown>;
57+
provider: { executed: boolean; metadata?: unknown };
58+
};
59+
}
4560
| {
4661
id: string;
4762
type: "session.next.retried";
@@ -173,6 +188,7 @@ const eventHook = (event: OpencodeEvent, shutdown?: () => Promise<void>) =>
173188
if (event.type === "session.next.step.started") {
174189
langfuse.startActiveGenerationStep({
175190
sessionID: event.properties.sessionID,
191+
assistantMessageID: event.properties.assistantMessageID,
176192
agent: event.properties.agent,
177193
model: event.properties.model,
178194
started: event.properties.timestamp,
@@ -184,11 +200,22 @@ const eventHook = (event: OpencodeEvent, shutdown?: () => Promise<void>) =>
184200
langfuse.traceFailedGenerationStep({
185201
id: event.id,
186202
sessionID: event.properties.sessionID,
203+
assistantMessageID: event.properties.assistantMessageID,
187204
completed: event.properties.timestamp,
188205
error: event.properties.error,
189206
});
190207
}
191208

209+
if (
210+
event.type === "session.next.tool.called" &&
211+
event.properties.assistantMessageID
212+
) {
213+
langfuse.rememberToolCall({
214+
callID: event.properties.callID,
215+
messageID: event.properties.assistantMessageID,
216+
});
217+
}
218+
192219
if (event.type === "session.next.retried") {
193220
langfuse.traceEvent({
194221
id: event.id,
@@ -229,7 +256,22 @@ const eventHook = (event: OpencodeEvent, shutdown?: () => Promise<void>) =>
229256
if (event.type === "message.updated") {
230257
const message = event.properties.info;
231258

232-
if (message.role !== "assistant" || !message.time.completed) {
259+
if (message.role !== "assistant") {
260+
return;
261+
}
262+
263+
langfuse.startActiveGenerationStep({
264+
sessionID: message.sessionID,
265+
assistantMessageID: message.id,
266+
agent: message.mode,
267+
model: {
268+
id: message.modelID,
269+
providerID: message.providerID,
270+
},
271+
started: message.time.created,
272+
});
273+
274+
if (!message.time.completed) {
233275
return;
234276
}
235277

0 commit comments

Comments
 (0)