lightrace 0.1.13 → 0.1.14
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.
|
@@ -59,12 +59,19 @@ export declare class LightraceAgentHandler extends TracingMixin {
|
|
|
59
59
|
private prompt;
|
|
60
60
|
private agentRunId;
|
|
61
61
|
private toolRunIds;
|
|
62
|
-
private
|
|
62
|
+
private initTools;
|
|
63
|
+
private initModel;
|
|
64
|
+
private currentGenRunId;
|
|
65
|
+
private currentMessageId;
|
|
66
|
+
private currentOutputBlocks;
|
|
67
|
+
private currentUsage;
|
|
63
68
|
constructor(opts?: LightraceAgentHandlerOptions);
|
|
64
69
|
/** Process a single message from the agent SDK stream. */
|
|
65
70
|
handle(message: SDKMessageLike): void;
|
|
66
71
|
private onSystem;
|
|
67
72
|
private onAssistant;
|
|
73
|
+
private processContentBlocks;
|
|
74
|
+
private flushGeneration;
|
|
68
75
|
private onUser;
|
|
69
76
|
private onResult;
|
|
70
77
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-agent-sdk.d.ts","sourceRoot":"","sources":["../../src/integrations/claude-agent-sdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAGH,OAAO,EAAE,YAAY,EAAkB,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAIpF,wFAAwF;AACxF,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,4BAA6B,SAAQ,mBAAmB;IACvE,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC7D,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAID;;;;;;GAMG;AACH,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"claude-agent-sdk.d.ts","sourceRoot":"","sources":["../../src/integrations/claude-agent-sdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAGH,OAAO,EAAE,YAAY,EAAkB,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAIpF,wFAAwF;AACxF,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,4BAA6B,SAAQ,mBAAmB;IACvE,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC7D,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAID;;;;;;GAMG;AACH,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,SAAS,CAAuB;IAIxC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,mBAAmB,CAAiC;IAC5D,OAAO,CAAC,YAAY,CAAuC;gBAE/C,IAAI,CAAC,EAAE,4BAA4B;IAO/C,0DAA0D;IAC1D,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IA0BrC,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,WAAW;IAiDnB,OAAO,CAAC,oBAAoB;IAgD5B,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,MAAM;IAuCd,OAAO,CAAC,QAAQ;CAkCjB;AAID;;;;;GAKG;AACH,wBAAuB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,CA4BjG"}
|
|
@@ -46,7 +46,14 @@ export class LightraceAgentHandler extends TracingMixin {
|
|
|
46
46
|
prompt;
|
|
47
47
|
agentRunId = null;
|
|
48
48
|
toolRunIds = new Map(); // tool_use_id → runId
|
|
49
|
-
|
|
49
|
+
initTools = null;
|
|
50
|
+
initModel = null;
|
|
51
|
+
// Generation span accumulation — SDK yields multiple AssistantMessages
|
|
52
|
+
// per turn (thinking + tool_use) sharing the same message_id.
|
|
53
|
+
currentGenRunId = null;
|
|
54
|
+
currentMessageId = null;
|
|
55
|
+
currentOutputBlocks = [];
|
|
56
|
+
currentUsage = null;
|
|
50
57
|
constructor(opts) {
|
|
51
58
|
super(opts);
|
|
52
59
|
this.prompt = opts?.prompt;
|
|
@@ -70,84 +77,136 @@ export class LightraceAgentHandler extends TracingMixin {
|
|
|
70
77
|
break;
|
|
71
78
|
}
|
|
72
79
|
}
|
|
73
|
-
catch {
|
|
80
|
+
catch (err) {
|
|
74
81
|
// Tracing errors should never break the agent loop
|
|
82
|
+
if (typeof console !== "undefined") {
|
|
83
|
+
console.warn("[lightrace] Error handling message:", err);
|
|
84
|
+
}
|
|
75
85
|
}
|
|
76
86
|
}
|
|
77
87
|
// ── Message handlers ───────────────────────────────────────────────
|
|
78
88
|
onSystem(msg) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
//
|
|
89
|
+
if (msg.subtype === "init") {
|
|
90
|
+
// Tools/model are nested in a `data` dict
|
|
91
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
92
|
+
const data = msg.data;
|
|
93
|
+
const source = data ?? msg;
|
|
94
|
+
const tools = source.tools;
|
|
95
|
+
if (tools)
|
|
96
|
+
this.initTools = [...tools];
|
|
97
|
+
const model = source.model;
|
|
98
|
+
if (model)
|
|
99
|
+
this.initModel = model;
|
|
82
100
|
}
|
|
83
101
|
}
|
|
84
102
|
onAssistant(msg) {
|
|
85
103
|
// Start root agent span on first assistant message
|
|
86
104
|
if (this.agentRunId === null) {
|
|
87
105
|
this.agentRunId = generateId();
|
|
106
|
+
const input = { prompt: this.prompt };
|
|
107
|
+
if (this.initTools)
|
|
108
|
+
input.tools = this.initTools;
|
|
109
|
+
if (this.initModel)
|
|
110
|
+
input.model = this.initModel;
|
|
88
111
|
this.registerRun(this.agentRunId, undefined, {
|
|
89
112
|
type: "span",
|
|
90
113
|
name: this.traceName ?? "claude-agent",
|
|
91
114
|
startTime: new Date(),
|
|
92
|
-
input
|
|
115
|
+
input,
|
|
93
116
|
});
|
|
94
117
|
}
|
|
95
|
-
this.turnCount++;
|
|
96
118
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
97
119
|
const raw = msg;
|
|
98
120
|
const betaMessage = raw.message;
|
|
121
|
+
const messageId = raw.message_id ?? betaMessage?.id;
|
|
122
|
+
// SDK yields multiple AssistantMessages per turn sharing the same
|
|
123
|
+
// message_id (e.g. thinking block, then tool_use block). Accumulate
|
|
124
|
+
// content blocks into a single generation span.
|
|
125
|
+
if (messageId && messageId === this.currentMessageId && this.currentGenRunId !== null) {
|
|
126
|
+
this.processContentBlocks(raw);
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
// New turn — flush any pending generation from the previous turn.
|
|
130
|
+
this.flushGeneration();
|
|
99
131
|
const model = raw.model ?? betaMessage?.model;
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
this.
|
|
132
|
+
this.currentMessageId = messageId ?? null;
|
|
133
|
+
this.currentGenRunId = generateId();
|
|
134
|
+
this.currentOutputBlocks = [];
|
|
135
|
+
this.currentUsage = null;
|
|
136
|
+
this.registerRun(this.currentGenRunId, this.agentRunId ?? undefined, {
|
|
104
137
|
type: "generation",
|
|
105
138
|
name: model ?? "claude",
|
|
106
139
|
startTime: new Date(),
|
|
107
140
|
input: undefined,
|
|
108
141
|
model,
|
|
109
142
|
});
|
|
110
|
-
|
|
143
|
+
this.processContentBlocks(raw);
|
|
144
|
+
}
|
|
145
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
146
|
+
processContentBlocks(raw) {
|
|
147
|
+
const betaMessage = raw.message;
|
|
111
148
|
const content = betaMessage?.content ?? raw.content ?? [];
|
|
112
|
-
const
|
|
149
|
+
const usage = betaMessage?.usage ?? raw.usage;
|
|
113
150
|
for (const block of content) {
|
|
114
151
|
const b = block;
|
|
115
152
|
const blockType = b.type;
|
|
116
|
-
|
|
117
|
-
|
|
153
|
+
const hasText = "text" in b && !("id" in b);
|
|
154
|
+
const hasTool = "id" in b && "name" in b && "input" in b;
|
|
155
|
+
const hasThinking = "thinking" in b;
|
|
156
|
+
if (blockType === "text" || (!blockType && hasText)) {
|
|
157
|
+
this.currentOutputBlocks.push({ type: "text", text: b.text ?? "" });
|
|
118
158
|
}
|
|
119
|
-
else if (blockType === "tool_use") {
|
|
159
|
+
else if (blockType === "tool_use" || (!blockType && hasTool)) {
|
|
120
160
|
const toolId = b.id;
|
|
121
161
|
const toolName = b.name;
|
|
122
162
|
const toolInput = b.input;
|
|
123
|
-
|
|
163
|
+
this.currentOutputBlocks.push({
|
|
124
164
|
type: "tool_use",
|
|
125
165
|
id: toolId,
|
|
126
166
|
name: toolName,
|
|
127
|
-
input:
|
|
167
|
+
input: toolInput,
|
|
128
168
|
});
|
|
129
169
|
// Start a tool span (ended when matching user message arrives)
|
|
130
170
|
const toolRunId = generateId();
|
|
131
171
|
this.toolRunIds.set(toolId, toolRunId);
|
|
132
|
-
this.registerRun(toolRunId, this.agentRunId, {
|
|
172
|
+
this.registerRun(toolRunId, this.agentRunId ?? undefined, {
|
|
133
173
|
type: "tool",
|
|
134
174
|
name: toolName,
|
|
135
175
|
startTime: new Date(),
|
|
136
176
|
input: toolInput,
|
|
137
177
|
});
|
|
138
178
|
}
|
|
179
|
+
else if (blockType === "thinking" || (!blockType && hasThinking)) {
|
|
180
|
+
this.currentOutputBlocks.push({ type: "thinking", thinking: b.thinking ?? "" });
|
|
181
|
+
}
|
|
139
182
|
else {
|
|
140
|
-
|
|
183
|
+
this.currentOutputBlocks.push(jsonSerializable(b));
|
|
141
184
|
}
|
|
142
185
|
}
|
|
143
|
-
//
|
|
144
|
-
|
|
145
|
-
|
|
186
|
+
// Keep the latest usage (last AssistantMessage in this turn wins)
|
|
187
|
+
if (usage) {
|
|
188
|
+
this.currentUsage = normalizeUsage(usage);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
flushGeneration() {
|
|
192
|
+
if (this.currentGenRunId === null)
|
|
193
|
+
return;
|
|
194
|
+
const output = {
|
|
195
|
+
role: "assistant",
|
|
196
|
+
content: this.currentOutputBlocks,
|
|
197
|
+
};
|
|
198
|
+
this.endRun(this.currentGenRunId, output, "DEFAULT", null, this.currentUsage ?? undefined);
|
|
199
|
+
this.currentGenRunId = null;
|
|
200
|
+
this.currentMessageId = null;
|
|
201
|
+
this.currentOutputBlocks = [];
|
|
202
|
+
this.currentUsage = null;
|
|
146
203
|
}
|
|
147
204
|
onUser(msg) {
|
|
205
|
+
this.flushGeneration();
|
|
148
206
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
149
207
|
const raw = msg;
|
|
150
208
|
const userMessage = raw.message;
|
|
209
|
+
const fallbackOutput = raw.tool_use_result;
|
|
151
210
|
// User messages contain tool results as content blocks
|
|
152
211
|
const content = Array.isArray(userMessage?.content)
|
|
153
212
|
? userMessage.content
|
|
@@ -156,24 +215,29 @@ export class LightraceAgentHandler extends TracingMixin {
|
|
|
156
215
|
: [];
|
|
157
216
|
for (const block of content) {
|
|
158
217
|
const b = block;
|
|
159
|
-
if (b.type === "tool_result" && typeof b.tool_use_id === "string") {
|
|
218
|
+
if ((b.type === "tool_result" || "tool_use_id" in b) && typeof b.tool_use_id === "string") {
|
|
160
219
|
const toolUseId = b.tool_use_id;
|
|
161
220
|
const toolRunId = this.toolRunIds.get(toolUseId);
|
|
162
221
|
if (toolRunId) {
|
|
163
222
|
this.toolRunIds.delete(toolUseId);
|
|
164
223
|
const isError = Boolean(b.is_error);
|
|
165
|
-
|
|
224
|
+
let output = b.content ?? b.output;
|
|
225
|
+
// Use fallback from tool_use_result when block has no output
|
|
226
|
+
if (output === undefined && fallbackOutput !== undefined) {
|
|
227
|
+
output = fallbackOutput;
|
|
228
|
+
}
|
|
166
229
|
if (isError) {
|
|
167
|
-
this.endRun(toolRunId,
|
|
230
|
+
this.endRun(toolRunId, output, "ERROR", String(output));
|
|
168
231
|
}
|
|
169
232
|
else {
|
|
170
|
-
this.endRun(toolRunId,
|
|
233
|
+
this.endRun(toolRunId, output);
|
|
171
234
|
}
|
|
172
235
|
}
|
|
173
236
|
}
|
|
174
237
|
}
|
|
175
238
|
}
|
|
176
239
|
onResult(msg) {
|
|
240
|
+
this.flushGeneration();
|
|
177
241
|
// End any remaining tool spans
|
|
178
242
|
for (const [, toolRunId] of this.toolRunIds) {
|
|
179
243
|
this.endRun(toolRunId, null);
|
|
@@ -194,6 +258,8 @@ export class LightraceAgentHandler extends TracingMixin {
|
|
|
194
258
|
output.duration_ms = raw.duration_ms;
|
|
195
259
|
if (raw.subtype !== undefined)
|
|
196
260
|
output.subtype = raw.subtype;
|
|
261
|
+
if (raw.model_usage !== undefined)
|
|
262
|
+
output.model_usage = jsonSerializable(raw.model_usage);
|
|
197
263
|
const usage = raw.usage ? normalizeUsage(raw.usage) : null;
|
|
198
264
|
const isError = Boolean(raw.is_error);
|
|
199
265
|
if (isError) {
|
|
@@ -204,7 +270,6 @@ export class LightraceAgentHandler extends TracingMixin {
|
|
|
204
270
|
this.endRun(this.agentRunId, output, "DEFAULT", null, usage ?? undefined);
|
|
205
271
|
}
|
|
206
272
|
this.agentRunId = null;
|
|
207
|
-
this.turnCount = 0;
|
|
208
273
|
}
|
|
209
274
|
}
|
|
210
275
|
// ── Wrapper ────────────────────────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-agent-sdk.js","sourceRoot":"","sources":["../../src/integrations/claude-agent-sdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,cAAc,EAA4B,MAAM,YAAY,CAAC;AAsBpF,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,OAAO,qBAAsB,SAAQ,YAAY;IAC7C,MAAM,CAAqB;IAC3B,UAAU,GAAkB,IAAI,CAAC;IACjC,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,sBAAsB;IAC9D,SAAS,
|
|
1
|
+
{"version":3,"file":"claude-agent-sdk.js","sourceRoot":"","sources":["../../src/integrations/claude-agent-sdk.ts"],"names":[],"mappings":"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"}
|