@uselemma/tracing 7.9.0 → 7.11.0
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.
- package/README.md +60 -5
- package/dist/client.d.ts +26 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +49 -8
- package/dist/client.js.map +1 -1
- package/dist/coding-agent.d.ts +85 -0
- package/dist/coding-agent.d.ts.map +1 -0
- package/dist/coding-agent.js +186 -0
- package/dist/coding-agent.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/dist/langchain.d.ts +7 -1
- package/dist/langchain.d.ts.map +1 -1
- package/dist/langchain.js +81 -13
- package/dist/langchain.js.map +1 -1
- package/dist/mastra.d.ts +8 -0
- package/dist/mastra.d.ts.map +1 -1
- package/dist/mastra.js +42 -1
- package/dist/mastra.js.map +1 -1
- package/dist/openai-agents.d.ts +6 -0
- package/dist/openai-agents.d.ts.map +1 -1
- package/dist/openai-agents.js +43 -1
- package/dist/openai-agents.js.map +1 -1
- package/dist/release.d.ts +7 -0
- package/dist/release.d.ts.map +1 -0
- package/dist/release.js +23 -0
- package/dist/release.js.map +1 -0
- package/dist/schedule.d.ts +3 -0
- package/dist/schedule.d.ts.map +1 -0
- package/dist/schedule.js +12 -0
- package/dist/schedule.js.map +1 -0
- package/dist/usage.d.ts +65 -0
- package/dist/usage.d.ts.map +1 -0
- package/dist/usage.js +272 -0
- package/dist/usage.js.map +1 -0
- package/dist/vercel-ai.d.ts +27 -1
- package/dist/vercel-ai.d.ts.map +1 -1
- package/dist/vercel-ai.js +53 -8
- package/dist/vercel-ai.js.map +1 -1
- package/examples/langchain.ts +1 -0
- package/examples/langgraph.ts +1 -0
- package/examples/mastra.ts +4 -1
- package/package.json +1 -1
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.startCodingAgentTurn = startCodingAgentTurn;
|
|
4
|
+
exports.recordCodingAgentToolStart = recordCodingAgentToolStart;
|
|
5
|
+
exports.recordCodingAgentToolResult = recordCodingAgentToolResult;
|
|
6
|
+
exports.completeCodingAgentTurn = completeCodingAgentTurn;
|
|
7
|
+
exports.codingAgentTurnTrace = codingAgentTurnTrace;
|
|
8
|
+
const node_crypto_1 = require("node:crypto");
|
|
9
|
+
const client_1 = require("./client");
|
|
10
|
+
const error_message_1 = require("./error-message");
|
|
11
|
+
function requireOpen(turn) {
|
|
12
|
+
if (turn.status === "completed") {
|
|
13
|
+
throw new Error(`Coding agent turn ${turn.sessionId}/${turn.turnId} already completed`);
|
|
14
|
+
}
|
|
15
|
+
return turn;
|
|
16
|
+
}
|
|
17
|
+
function harnessAttributes(turn) {
|
|
18
|
+
return {
|
|
19
|
+
"lemma.harness.id": turn.harness,
|
|
20
|
+
"lemma.harness.session_id": turn.sessionId,
|
|
21
|
+
"lemma.harness.turn_id": turn.turnId,
|
|
22
|
+
"lemma.sdk.integration": "coding-agent",
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function deterministicUuid(value) {
|
|
26
|
+
const hash = (0, node_crypto_1.createHash)("sha256").update(value).digest("hex");
|
|
27
|
+
const variant = (8 + (Number.parseInt(hash[16], 16) % 4)).toString(16);
|
|
28
|
+
return `${hash.slice(0, 8)}-${hash.slice(8, 12)}-5${hash.slice(13, 16)}-${variant}${hash.slice(17, 20)}-${hash.slice(20, 32)}`;
|
|
29
|
+
}
|
|
30
|
+
function turnIdentity(options) {
|
|
31
|
+
return `${options.harness}\0${options.sessionId}\0${options.turnId}`;
|
|
32
|
+
}
|
|
33
|
+
function startCodingAgentTurn(options) {
|
|
34
|
+
return {
|
|
35
|
+
version: 1,
|
|
36
|
+
status: "open",
|
|
37
|
+
harness: options.harness,
|
|
38
|
+
sessionId: options.sessionId,
|
|
39
|
+
turnId: options.turnId,
|
|
40
|
+
traceId: options.traceId ??
|
|
41
|
+
deterministicUuid(`lemma-coding-agent-trace\0${turnIdentity(options)}`),
|
|
42
|
+
generationId: options.generationId ??
|
|
43
|
+
deterministicUuid(`lemma-coding-agent-generation\0${turnIdentity(options)}`),
|
|
44
|
+
prompt: options.prompt,
|
|
45
|
+
startedAt: options.startedAt,
|
|
46
|
+
model: options.model,
|
|
47
|
+
provider: options.provider,
|
|
48
|
+
metadata: options.metadata,
|
|
49
|
+
tools: [],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function recordCodingAgentToolStart(turn, event) {
|
|
53
|
+
const open = requireOpen(turn);
|
|
54
|
+
const existingIndex = open.tools.findIndex((tool) => tool.toolUseId === event.toolUseId);
|
|
55
|
+
if (existingIndex >= 0) {
|
|
56
|
+
const existing = open.tools[existingIndex];
|
|
57
|
+
if (!existing.startTimeMissing)
|
|
58
|
+
return open;
|
|
59
|
+
const tools = [...open.tools];
|
|
60
|
+
tools[existingIndex] = {
|
|
61
|
+
...existing,
|
|
62
|
+
toolName: event.toolName,
|
|
63
|
+
input: event.input === undefined ? existing.input : event.input,
|
|
64
|
+
startedAt: event.startedAt,
|
|
65
|
+
startTimeMissing: undefined,
|
|
66
|
+
};
|
|
67
|
+
return { ...open, tools };
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
...open,
|
|
71
|
+
tools: [
|
|
72
|
+
...open.tools,
|
|
73
|
+
{
|
|
74
|
+
toolUseId: event.toolUseId,
|
|
75
|
+
toolName: event.toolName,
|
|
76
|
+
input: event.input,
|
|
77
|
+
startedAt: event.startedAt,
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function recordCodingAgentToolResult(turn, event) {
|
|
83
|
+
const open = requireOpen(turn);
|
|
84
|
+
const existingIndex = open.tools.findIndex((tool) => tool.toolUseId === event.toolUseId);
|
|
85
|
+
const completed = {
|
|
86
|
+
toolUseId: event.toolUseId,
|
|
87
|
+
toolName: event.toolName,
|
|
88
|
+
input: event.input === undefined && existingIndex >= 0
|
|
89
|
+
? open.tools[existingIndex].input
|
|
90
|
+
: event.input,
|
|
91
|
+
output: event.output,
|
|
92
|
+
error: (0, error_message_1.failureMessage)(event.error) ?? undefined,
|
|
93
|
+
startedAt: existingIndex >= 0 ? open.tools[existingIndex].startedAt : undefined,
|
|
94
|
+
endedAt: event.endedAt,
|
|
95
|
+
startTimeMissing: existingIndex >= 0 ? open.tools[existingIndex].startTimeMissing : true,
|
|
96
|
+
};
|
|
97
|
+
if (existingIndex < 0) {
|
|
98
|
+
return { ...open, tools: [...open.tools, completed] };
|
|
99
|
+
}
|
|
100
|
+
const tools = [...open.tools];
|
|
101
|
+
tools[existingIndex] = completed;
|
|
102
|
+
return { ...open, tools };
|
|
103
|
+
}
|
|
104
|
+
function completeCodingAgentTurn(turn, event) {
|
|
105
|
+
if (turn.status === "completed")
|
|
106
|
+
return turn;
|
|
107
|
+
if ((event.generationStartedAt === undefined) !==
|
|
108
|
+
(event.generationEndedAt === undefined)) {
|
|
109
|
+
throw new Error("Coding agent generation timing requires both startedAt and endedAt");
|
|
110
|
+
}
|
|
111
|
+
const tools = turn.tools.map((tool) => {
|
|
112
|
+
const error = (0, error_message_1.failureMessage)(tool.error) ?? undefined;
|
|
113
|
+
return tool.endedAt
|
|
114
|
+
? { ...tool, error }
|
|
115
|
+
: { ...tool, error, resultMissing: true };
|
|
116
|
+
});
|
|
117
|
+
return {
|
|
118
|
+
...turn,
|
|
119
|
+
tools,
|
|
120
|
+
status: "completed",
|
|
121
|
+
response: event.response,
|
|
122
|
+
endedAt: event.endedAt,
|
|
123
|
+
model: event.model ?? turn.model,
|
|
124
|
+
provider: event.provider ?? turn.provider,
|
|
125
|
+
generationStartedAt: event.generationStartedAt,
|
|
126
|
+
generationEndedAt: event.generationEndedAt,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
function codingAgentTurnTrace(turn) {
|
|
130
|
+
const attributes = harnessAttributes(turn);
|
|
131
|
+
const context = new client_1.TraceContext({
|
|
132
|
+
id: turn.traceId,
|
|
133
|
+
name: `${turn.harness} coding agent`,
|
|
134
|
+
input: turn.prompt,
|
|
135
|
+
output: turn.response,
|
|
136
|
+
threadId: turn.sessionId,
|
|
137
|
+
startedAt: turn.startedAt,
|
|
138
|
+
metadata: {
|
|
139
|
+
...(turn.metadata ?? {}),
|
|
140
|
+
...attributes,
|
|
141
|
+
},
|
|
142
|
+
});
|
|
143
|
+
for (const tool of turn.tools) {
|
|
144
|
+
const missingStart = tool.startTimeMissing === true || tool.startedAt === undefined;
|
|
145
|
+
const missingResult = tool.resultMissing === true || tool.endedAt === undefined;
|
|
146
|
+
const error = tool.error;
|
|
147
|
+
context.recordTool({
|
|
148
|
+
id: tool.toolUseId,
|
|
149
|
+
name: tool.toolName,
|
|
150
|
+
toolName: tool.toolName,
|
|
151
|
+
input: tool.input,
|
|
152
|
+
output: tool.output,
|
|
153
|
+
error,
|
|
154
|
+
status: error == null ? (missingResult ? undefined : "OK") : "ERROR",
|
|
155
|
+
startedAt: tool.startedAt ?? null,
|
|
156
|
+
endedAt: tool.endedAt ?? null,
|
|
157
|
+
attributes,
|
|
158
|
+
metadata: {
|
|
159
|
+
tool_use_id: tool.toolUseId,
|
|
160
|
+
...(missingStart ? { start_time_missing: true } : {}),
|
|
161
|
+
...(missingResult ? { result_missing: true } : {}),
|
|
162
|
+
},
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
const generationTimingMissing = turn.generationStartedAt === undefined;
|
|
166
|
+
context.recordGeneration({
|
|
167
|
+
id: turn.generationId,
|
|
168
|
+
name: `${turn.harness} response`,
|
|
169
|
+
input: turn.prompt,
|
|
170
|
+
output: turn.response,
|
|
171
|
+
model: turn.model,
|
|
172
|
+
llmProvider: turn.provider,
|
|
173
|
+
llmInputMessages: [{ role: "user", content: turn.prompt }],
|
|
174
|
+
llmOutputMessages: [{ role: "assistant", content: turn.response }],
|
|
175
|
+
startedAt: turn.generationStartedAt ?? null,
|
|
176
|
+
endedAt: turn.generationEndedAt ?? null,
|
|
177
|
+
attributes,
|
|
178
|
+
metadata: generationTimingMissing ? { timing_missing: true } : undefined,
|
|
179
|
+
});
|
|
180
|
+
return {
|
|
181
|
+
context,
|
|
182
|
+
startedAt: turn.startedAt,
|
|
183
|
+
endedAt: turn.endedAt,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=coding-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coding-agent.js","sourceRoot":"","sources":["../src/coding-agent.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
export { Lemma, NoopSpanHandle, SpanHandle, TraceContext, TraceHandle, type DetachedGenerationOptions, type DetachedSpanOptions, type DetachedToolOptions, type GenerationOptions, type JsonValue, type LemmaClientOptions, type SpanOptions, type ToolOptions, type TraceEndOptions, type TraceOptions, type DebugSmokeTestResult, } from "./client";
|
|
1
|
+
export { Lemma, NoopSpanHandle, SpanHandle, TraceContext, TraceHandle, type DetachedGenerationOptions, type DetachedSpanOptions, type DetachedToolOptions, type GenerationOptions, type JsonValue, type LemmaClientOptions, type SdkIntegration, type SpanOptions, type OperationUsageResult, type TokenUsage, type ToolOptions, type TraceEndOptions, type TraceOptions, type DebugSmokeTestResult, type WireTokenUsage, attachResultUsage, normalizeTokenUsage, toWireTokenUsage, } from "./client";
|
|
2
|
+
export { codingAgentTurnTrace, completeCodingAgentTurn, recordCodingAgentToolResult, recordCodingAgentToolStart, startCodingAgentTurn, type CodingAgentHarnessId, type CodingAgentToolCall, type CodingAgentToolResult, type CodingAgentToolStart, type CodingAgentTurn, type CodingAgentTurnTrace, type CompleteCodingAgentTurnOptions, type CompletedCodingAgentTurn, type OpenCodingAgentTurn, type StartCodingAgentTurnOptions, } from "./coding-agent";
|
|
3
|
+
export { normalizeRelease, RELEASE_MAX_LENGTH } from "./release";
|
|
2
4
|
export { disableDebugMode, enableDebugMode, isDebugModeEnabled, isDebugVerifyEnabled, lemmaDebug, } from "./debug-mode";
|
|
3
5
|
export { LangChainCallbackHandler, LemmaLangChainCallbackHandler, langChain, langGraph, type LangChainIntegrationOptions, type LemmaLangChainIntegrationOptions, type LemmaLangGraphIntegrationOptions, } from "./langchain";
|
|
4
6
|
export { LemmaMastraExporter, mastra, type LemmaMastraIntegrationOptions, type MastraErrorInfo, type MastraExportedSpan, type MastraIntegrationOptions, type MastraSpanType, type MastraTracingEvent, } from "./mastra";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,cAAc,EACd,UAAU,EACV,YAAY,EACZ,WAAW,EACX,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,cAAc,EACd,UAAU,EACV,YAAY,EACZ,WAAW,EACX,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,2BAA2B,EAC3B,0BAA0B,EAC1B,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,EACnC,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,GACjC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,SAAS,EACT,SAAS,EACT,KAAK,2BAA2B,EAChC,KAAK,gCAAgC,EACrC,KAAK,gCAAgC,GACtC,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,mBAAmB,EACnB,MAAM,EACN,KAAK,6BAA6B,EAClC,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,KAAK,kBAAkB,GACxB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,YAAY,EACZ,KAAK,8BAA8B,EACnC,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,4BAA4B,GAClC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,QAAQ,EACR,KAAK,+BAA+B,EACpC,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,GAClC,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.vercelAI = exports.openAIAgents = exports.mastra = exports.LemmaMastraExporter = exports.langGraph = exports.langChain = exports.LemmaLangChainCallbackHandler = exports.LangChainCallbackHandler = exports.lemmaDebug = exports.isDebugVerifyEnabled = exports.isDebugModeEnabled = exports.enableDebugMode = exports.disableDebugMode = exports.TraceHandle = exports.TraceContext = exports.SpanHandle = exports.NoopSpanHandle = exports.Lemma = void 0;
|
|
3
|
+
exports.vercelAI = exports.openAIAgents = exports.mastra = exports.LemmaMastraExporter = exports.langGraph = exports.langChain = exports.LemmaLangChainCallbackHandler = exports.LangChainCallbackHandler = exports.lemmaDebug = exports.isDebugVerifyEnabled = exports.isDebugModeEnabled = exports.enableDebugMode = exports.disableDebugMode = exports.RELEASE_MAX_LENGTH = exports.normalizeRelease = exports.startCodingAgentTurn = exports.recordCodingAgentToolStart = exports.recordCodingAgentToolResult = exports.completeCodingAgentTurn = exports.codingAgentTurnTrace = exports.toWireTokenUsage = exports.normalizeTokenUsage = exports.attachResultUsage = exports.TraceHandle = exports.TraceContext = exports.SpanHandle = exports.NoopSpanHandle = exports.Lemma = void 0;
|
|
4
4
|
var client_1 = require("./client");
|
|
5
5
|
Object.defineProperty(exports, "Lemma", { enumerable: true, get: function () { return client_1.Lemma; } });
|
|
6
6
|
Object.defineProperty(exports, "NoopSpanHandle", { enumerable: true, get: function () { return client_1.NoopSpanHandle; } });
|
|
7
7
|
Object.defineProperty(exports, "SpanHandle", { enumerable: true, get: function () { return client_1.SpanHandle; } });
|
|
8
8
|
Object.defineProperty(exports, "TraceContext", { enumerable: true, get: function () { return client_1.TraceContext; } });
|
|
9
9
|
Object.defineProperty(exports, "TraceHandle", { enumerable: true, get: function () { return client_1.TraceHandle; } });
|
|
10
|
+
Object.defineProperty(exports, "attachResultUsage", { enumerable: true, get: function () { return client_1.attachResultUsage; } });
|
|
11
|
+
Object.defineProperty(exports, "normalizeTokenUsage", { enumerable: true, get: function () { return client_1.normalizeTokenUsage; } });
|
|
12
|
+
Object.defineProperty(exports, "toWireTokenUsage", { enumerable: true, get: function () { return client_1.toWireTokenUsage; } });
|
|
13
|
+
var coding_agent_1 = require("./coding-agent");
|
|
14
|
+
Object.defineProperty(exports, "codingAgentTurnTrace", { enumerable: true, get: function () { return coding_agent_1.codingAgentTurnTrace; } });
|
|
15
|
+
Object.defineProperty(exports, "completeCodingAgentTurn", { enumerable: true, get: function () { return coding_agent_1.completeCodingAgentTurn; } });
|
|
16
|
+
Object.defineProperty(exports, "recordCodingAgentToolResult", { enumerable: true, get: function () { return coding_agent_1.recordCodingAgentToolResult; } });
|
|
17
|
+
Object.defineProperty(exports, "recordCodingAgentToolStart", { enumerable: true, get: function () { return coding_agent_1.recordCodingAgentToolStart; } });
|
|
18
|
+
Object.defineProperty(exports, "startCodingAgentTurn", { enumerable: true, get: function () { return coding_agent_1.startCodingAgentTurn; } });
|
|
19
|
+
var release_1 = require("./release");
|
|
20
|
+
Object.defineProperty(exports, "normalizeRelease", { enumerable: true, get: function () { return release_1.normalizeRelease; } });
|
|
21
|
+
Object.defineProperty(exports, "RELEASE_MAX_LENGTH", { enumerable: true, get: function () { return release_1.RELEASE_MAX_LENGTH; } });
|
|
10
22
|
var debug_mode_1 = require("./debug-mode");
|
|
11
23
|
Object.defineProperty(exports, "disableDebugMode", { enumerable: true, get: function () { return debug_mode_1.disableDebugMode; } });
|
|
12
24
|
Object.defineProperty(exports, "enableDebugMode", { enumerable: true, get: function () { return debug_mode_1.enableDebugMode; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAwBkB;AAvBhB,+FAAA,KAAK,OAAA;AACL,wGAAA,cAAc,OAAA;AACd,oGAAA,UAAU,OAAA;AACV,sGAAA,YAAY,OAAA;AACZ,qGAAA,WAAW,OAAA;AAgBX,2GAAA,iBAAiB,OAAA;AACjB,6GAAA,mBAAmB,OAAA;AACnB,0GAAA,gBAAgB,OAAA;AAElB,+CAgBwB;AAftB,oHAAA,oBAAoB,OAAA;AACpB,uHAAA,uBAAuB,OAAA;AACvB,2HAAA,2BAA2B,OAAA;AAC3B,0HAAA,0BAA0B,OAAA;AAC1B,oHAAA,oBAAoB,OAAA;AAYtB,qCAAiE;AAAxD,2GAAA,gBAAgB,OAAA;AAAE,6GAAA,kBAAkB,OAAA;AAC7C,2CAMsB;AALpB,8GAAA,gBAAgB,OAAA;AAChB,6GAAA,eAAe,OAAA;AACf,gHAAA,kBAAkB,OAAA;AAClB,kHAAA,oBAAoB,OAAA;AACpB,wGAAA,UAAU,OAAA;AAEZ,yCAQqB;AAPnB,qHAAA,wBAAwB,OAAA;AACxB,0HAAA,6BAA6B,OAAA;AAC7B,sGAAA,SAAS,OAAA;AACT,sGAAA,SAAS,OAAA;AAKX,mCASkB;AARhB,6GAAA,mBAAmB,OAAA;AACnB,gGAAA,MAAM,OAAA;AAQR,iDAOyB;AANvB,6GAAA,YAAY,OAAA;AAOd,yCAKqB;AAJnB,qGAAA,QAAQ,OAAA"}
|
package/dist/langchain.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export type LangChainIntegrationOptions = {
|
|
|
18
18
|
projectId?: LemmaClientOptions["projectId"];
|
|
19
19
|
baseUrl?: LemmaClientOptions["baseUrl"];
|
|
20
20
|
fetch?: LemmaClientOptions["fetch"];
|
|
21
|
+
release?: LemmaClientOptions["release"];
|
|
21
22
|
agentName?: string;
|
|
22
23
|
metadata?: Record<string, unknown>;
|
|
23
24
|
/** Key looked up on run metadata / tags for threadId. Default: `threadId`. */
|
|
@@ -55,6 +56,11 @@ export declare class LemmaLangChainCallbackHandler {
|
|
|
55
56
|
private forgetTraceRuns;
|
|
56
57
|
private finalizeTrace;
|
|
57
58
|
private maybeFinalizeOwner;
|
|
59
|
+
/**
|
|
60
|
+
* Copy token usage from an `invoke` / chain result onto generation spans
|
|
61
|
+
* whose callback event omitted it. Call after the operation returns.
|
|
62
|
+
*/
|
|
63
|
+
recordResult(result: unknown): number;
|
|
58
64
|
private traceName;
|
|
59
65
|
handleChainStart(serialized: Serialized, inputs: unknown, runId: RunId, parentRunId?: RunId, tags?: string[], metadata?: Record<string, unknown>, runType?: string, name?: string): void;
|
|
60
66
|
handleChainEnd(outputs: unknown, runId: RunId): Promise<void>;
|
|
@@ -71,7 +77,7 @@ export declare class LemmaLangChainCallbackHandler {
|
|
|
71
77
|
handleRetrieverStart(serialized: Serialized, query: string, runId: RunId, parentRunId?: RunId, tags?: string[], metadata?: Record<string, unknown>): void;
|
|
72
78
|
handleRetrieverEnd(documents: unknown[], runId: RunId): Promise<void>;
|
|
73
79
|
handleRetrieverError(error: unknown, runId: RunId): Promise<void>;
|
|
74
|
-
/**
|
|
80
|
+
/** Send completed traces and await ingest delivery. */
|
|
75
81
|
flush(): Promise<void>;
|
|
76
82
|
/** Finalize open traces and reset integration state. */
|
|
77
83
|
shutdown(): Promise<void>;
|
package/dist/langchain.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"langchain.d.ts","sourceRoot":"","sources":["../src/langchain.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,KAAK,kBAAkB,EAGxB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"langchain.d.ts","sourceRoot":"","sources":["../src/langchain.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,KAAK,kBAAkB,EAGxB,MAAM,UAAU,CAAC;AAUlB,KAAK,KAAK,GAAG,MAAM,CAAC;AAEpB,KAAK,UAAU,GAAG;IAChB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,WAAW,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACtC,SAAS,CAAC,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAkmBF,qBAAa,6BAA6B;IAO5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IANpC,IAAI,SAAW;IACf,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA+B;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;gBAEvB,OAAO,GAAE,2BAAgC;IAItE,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,gBAAgB;IAyCxB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,SAAS;IAKjB;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAgDzB,OAAO,CAAC,eAAe;YAMT,aAAa;IAqC3B,OAAO,CAAC,kBAAkB;IAgB1B;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;IASrC,OAAO,CAAC,SAAS;IAIjB,gBAAgB,CACd,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,KAAK,EACZ,WAAW,CAAC,EAAE,KAAK,EACnB,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,CAAC,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM;IAiET,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK;IA2B7C,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK;IA6BnD,cAAc,CACZ,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,MAAM,EAAE,EACjB,KAAK,EAAE,KAAK,EACZ,WAAW,CAAC,EAAE,KAAK,EACnB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA+CpC,oBAAoB,CAClB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,OAAO,EAAE,EAAE,EACrB,KAAK,EAAE,KAAK,EACZ,WAAW,CAAC,EAAE,KAAK,EACnB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAiDpC,OAAO,CAAC,gBAAgB;IAalB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK;YAqDpC,qBAAqB;IAa7B,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK;IA2BjD,eAAe,CACb,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,KAAK,EACZ,WAAW,CAAC,EAAE,KAAK,EACnB,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA0C9B,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK;IAkC3C,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK;IA2BlD,oBAAoB,CAClB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,EACZ,WAAW,CAAC,EAAE,KAAK,EACnB,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAwC9B,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK;IAqBrD,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK;IAuBvD,uDAAuD;IACjD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B,wDAAwD;IAClD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAKhC;AAED,eAAO,MAAM,wBAAwB,sCAAgC,CAAC;AAEtE,wBAAgB,SAAS,CAAC,OAAO,GAAE,2BAAgC,iCAElE;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,2BAAgC,iCAElE;AAED,MAAM,MAAM,gCAAgC,GAAG,2BAA2B,CAAC;AAC3E,MAAM,MAAM,gCAAgC,GAAG,2BAA2B,CAAC"}
|
package/dist/langchain.js
CHANGED
|
@@ -5,7 +5,12 @@ exports.langChain = langChain;
|
|
|
5
5
|
exports.langGraph = langGraph;
|
|
6
6
|
const client_1 = require("./client");
|
|
7
7
|
const error_message_1 = require("./error-message");
|
|
8
|
+
const schedule_1 = require("./schedule");
|
|
8
9
|
const tool_result_1 = require("./tool-result");
|
|
10
|
+
const usage_1 = require("./usage");
|
|
11
|
+
const INTEGRATION_ATTRS = {
|
|
12
|
+
"lemma.sdk.integration": "langchain",
|
|
13
|
+
};
|
|
9
14
|
const KNOWN_PROVIDERS = [
|
|
10
15
|
"openai",
|
|
11
16
|
"anthropic",
|
|
@@ -507,11 +512,53 @@ function durationMs(start, end) {
|
|
|
507
512
|
}
|
|
508
513
|
function langchainAttributes(runId, parentRunId, runType) {
|
|
509
514
|
return Object.fromEntries(Object.entries({
|
|
515
|
+
...INTEGRATION_ATTRS,
|
|
510
516
|
"langchain.run_id": runId,
|
|
511
517
|
"langchain.parent_run_id": parentRunId,
|
|
512
518
|
"langchain.run_type": runType,
|
|
513
519
|
}).filter(([, value]) => value !== undefined && value !== null));
|
|
514
520
|
}
|
|
521
|
+
/**
|
|
522
|
+
* Extract token usage from LLMResult.llmOutput and/or generation message
|
|
523
|
+
* usage_metadata. Prefers llmOutput.tokenUsage / token_usage, then the first
|
|
524
|
+
* message-level usage_metadata that normalizes.
|
|
525
|
+
*/
|
|
526
|
+
function llmTokenUsage(result) {
|
|
527
|
+
const llmOutput = result.llmOutput;
|
|
528
|
+
if (llmOutput && typeof llmOutput === "object") {
|
|
529
|
+
const fromOutput = (0, usage_1.normalizeTokenUsage)(llmOutput);
|
|
530
|
+
if (fromOutput)
|
|
531
|
+
return fromOutput;
|
|
532
|
+
}
|
|
533
|
+
const generations = result.generations;
|
|
534
|
+
if (!Array.isArray(generations))
|
|
535
|
+
return undefined;
|
|
536
|
+
for (const group of generations) {
|
|
537
|
+
if (!Array.isArray(group))
|
|
538
|
+
continue;
|
|
539
|
+
for (const item of group) {
|
|
540
|
+
if (!item || typeof item !== "object")
|
|
541
|
+
continue;
|
|
542
|
+
const record = item;
|
|
543
|
+
const message = record.message;
|
|
544
|
+
if (message && typeof message === "object") {
|
|
545
|
+
const msg = message;
|
|
546
|
+
const fromMessage = (0, usage_1.normalizeTokenUsage)(msg.usage_metadata) ??
|
|
547
|
+
(0, usage_1.normalizeTokenUsage)(msg.usageMetadata) ??
|
|
548
|
+
(0, usage_1.normalizeTokenUsage)(msg.response_metadata) ??
|
|
549
|
+
(0, usage_1.normalizeTokenUsage)(msg);
|
|
550
|
+
if (fromMessage)
|
|
551
|
+
return fromMessage;
|
|
552
|
+
}
|
|
553
|
+
const fromItem = (0, usage_1.normalizeTokenUsage)(record.usage_metadata) ??
|
|
554
|
+
(0, usage_1.normalizeTokenUsage)(record.generationInfo) ??
|
|
555
|
+
(0, usage_1.normalizeTokenUsage)(record);
|
|
556
|
+
if (fromItem)
|
|
557
|
+
return fromItem;
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
return undefined;
|
|
561
|
+
}
|
|
515
562
|
class LemmaLangChainCallbackHandler {
|
|
516
563
|
options;
|
|
517
564
|
name = "lemma";
|
|
@@ -529,6 +576,7 @@ class LemmaLangChainCallbackHandler {
|
|
|
529
576
|
projectId: this.options.projectId,
|
|
530
577
|
baseUrl: this.options.baseUrl,
|
|
531
578
|
fetch: this.options.fetch,
|
|
579
|
+
release: this.options.release,
|
|
532
580
|
});
|
|
533
581
|
return this.lemma;
|
|
534
582
|
}
|
|
@@ -712,13 +760,32 @@ class LemmaLangChainCallbackHandler {
|
|
|
712
760
|
if (!run.ownsTrace)
|
|
713
761
|
return;
|
|
714
762
|
const stored = this.traces.get(run.owningTraceId);
|
|
715
|
-
if (!stored)
|
|
763
|
+
if (!stored || stored.ended)
|
|
716
764
|
return;
|
|
717
765
|
this.noteBounds(stored, run.startedAt, endedAt);
|
|
718
|
-
|
|
766
|
+
// Delay the HTTP send so recordResult(invoke return) can stamp usage
|
|
767
|
+
// onto generations whose callback event omitted it.
|
|
768
|
+
const promise = new Promise((resolve, reject) => {
|
|
769
|
+
(0, schedule_1.scheduleMacrotask)(() => {
|
|
770
|
+
this.finalizeTrace(run.owningTraceId, stored).then(resolve, reject);
|
|
771
|
+
});
|
|
772
|
+
});
|
|
719
773
|
this.trackPending(promise);
|
|
720
774
|
return promise;
|
|
721
775
|
}
|
|
776
|
+
/**
|
|
777
|
+
* Copy token usage from an `invoke` / chain result onto generation spans
|
|
778
|
+
* whose callback event omitted it. Call after the operation returns.
|
|
779
|
+
*/
|
|
780
|
+
recordResult(result) {
|
|
781
|
+
let stamped = 0;
|
|
782
|
+
for (const stored of this.traces.values()) {
|
|
783
|
+
if (stored.ended)
|
|
784
|
+
continue;
|
|
785
|
+
stamped += stored.handle.applyGenerationUsage(result);
|
|
786
|
+
}
|
|
787
|
+
return stamped;
|
|
788
|
+
}
|
|
722
789
|
traceName(serialized, fallback) {
|
|
723
790
|
return this.options.agentName ?? serializedName(serialized, fallback);
|
|
724
791
|
}
|
|
@@ -900,6 +967,7 @@ class LemmaLangChainCallbackHandler {
|
|
|
900
967
|
endedAt,
|
|
901
968
|
durationMs: durationMs(run.startedAt, endedAt),
|
|
902
969
|
llmOutputMessages: softError ? undefined : outputMessages,
|
|
970
|
+
usage: llmTokenUsage(output),
|
|
903
971
|
});
|
|
904
972
|
const stored = this.storedTrace(run.owningTraceId);
|
|
905
973
|
if (stored) {
|
|
@@ -924,14 +992,14 @@ class LemmaLangChainCallbackHandler {
|
|
|
924
992
|
}
|
|
925
993
|
this.runs.delete(runId);
|
|
926
994
|
if (run.ownsTrace) {
|
|
927
|
-
|
|
995
|
+
void this.maybeFinalizeOwner(run, endedAt);
|
|
928
996
|
return;
|
|
929
997
|
}
|
|
930
998
|
// Final answer generation under a deferred owned LLM — close that root.
|
|
931
999
|
const deferred = this.deferredOwnerFor(run.owningTraceId);
|
|
932
1000
|
if (deferred) {
|
|
933
1001
|
this.runs.delete(deferred.rootRunId);
|
|
934
|
-
|
|
1002
|
+
void this.maybeFinalizeOwner(deferred, endedAt);
|
|
935
1003
|
}
|
|
936
1004
|
}
|
|
937
1005
|
async finalizeDeferredOwner(owningTraceId, endedAt, rootError) {
|
|
@@ -942,7 +1010,7 @@ class LemmaLangChainCallbackHandler {
|
|
|
942
1010
|
if (stored && rootError)
|
|
943
1011
|
this.noteRootError(stored, rootError);
|
|
944
1012
|
this.runs.delete(deferred.rootRunId);
|
|
945
|
-
|
|
1013
|
+
void this.maybeFinalizeOwner(deferred, endedAt);
|
|
946
1014
|
}
|
|
947
1015
|
async handleLLMError(error, runId) {
|
|
948
1016
|
const run = this.runs.get(runId);
|
|
@@ -964,10 +1032,10 @@ class LemmaLangChainCallbackHandler {
|
|
|
964
1032
|
}
|
|
965
1033
|
this.runs.delete(runId);
|
|
966
1034
|
if (run.ownsTrace) {
|
|
967
|
-
|
|
1035
|
+
void this.maybeFinalizeOwner(run, endedAt);
|
|
968
1036
|
return;
|
|
969
1037
|
}
|
|
970
|
-
|
|
1038
|
+
void this.finalizeDeferredOwner(run.owningTraceId, endedAt, message);
|
|
971
1039
|
}
|
|
972
1040
|
handleToolStart(serialized, input, runId, parentRunId, tags, metadata) {
|
|
973
1041
|
const startedAt = new Date();
|
|
@@ -1029,7 +1097,7 @@ class LemmaLangChainCallbackHandler {
|
|
|
1029
1097
|
}
|
|
1030
1098
|
}
|
|
1031
1099
|
this.runs.delete(runId);
|
|
1032
|
-
|
|
1100
|
+
void this.maybeFinalizeOwner(run, endedAt);
|
|
1033
1101
|
}
|
|
1034
1102
|
async handleToolError(error, runId) {
|
|
1035
1103
|
const run = this.runs.get(runId);
|
|
@@ -1051,10 +1119,10 @@ class LemmaLangChainCallbackHandler {
|
|
|
1051
1119
|
}
|
|
1052
1120
|
this.runs.delete(runId);
|
|
1053
1121
|
if (run.ownsTrace) {
|
|
1054
|
-
|
|
1122
|
+
void this.maybeFinalizeOwner(run, endedAt);
|
|
1055
1123
|
return;
|
|
1056
1124
|
}
|
|
1057
|
-
|
|
1125
|
+
void this.finalizeDeferredOwner(run.owningTraceId, endedAt, message);
|
|
1058
1126
|
}
|
|
1059
1127
|
handleRetrieverStart(serialized, query, runId, parentRunId, tags, metadata) {
|
|
1060
1128
|
const startedAt = new Date();
|
|
@@ -1099,7 +1167,7 @@ class LemmaLangChainCallbackHandler {
|
|
|
1099
1167
|
this.noteRootOutput(stored, documents);
|
|
1100
1168
|
}
|
|
1101
1169
|
this.runs.delete(runId);
|
|
1102
|
-
|
|
1170
|
+
void this.maybeFinalizeOwner(run, endedAt);
|
|
1103
1171
|
}
|
|
1104
1172
|
async handleRetrieverError(error, runId) {
|
|
1105
1173
|
const run = this.runs.get(runId);
|
|
@@ -1120,9 +1188,9 @@ class LemmaLangChainCallbackHandler {
|
|
|
1120
1188
|
this.noteRootError(stored, message);
|
|
1121
1189
|
}
|
|
1122
1190
|
this.runs.delete(runId);
|
|
1123
|
-
|
|
1191
|
+
void this.maybeFinalizeOwner(run, endedAt);
|
|
1124
1192
|
}
|
|
1125
|
-
/**
|
|
1193
|
+
/** Send completed traces and await ingest delivery. */
|
|
1126
1194
|
async flush() {
|
|
1127
1195
|
await Promise.all([
|
|
1128
1196
|
...Array.from(this.traces.entries(), ([id, stored]) => this.finalizeTrace(id, stored)),
|